1943 lines
No EOL
118 KiB
XML
1943 lines
No EOL
118 KiB
XML
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://www.theinternetvagabond.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.theinternetvagabond.com/" rel="alternate" type="text/html" /><updated>2024-06-18T19:07:49-05:00</updated><id>https://www.theinternetvagabond.com/feed.xml</id><title type="html">The Internet Vagabond</title><author><name>Bill Niblock</name></author><entry><title type="html">Automatic Backups with RClone, systemd, and Backblaze</title><link href="https://www.theinternetvagabond.com/2023/05/07/rclone-backups.html" rel="alternate" type="text/html" title="Automatic Backups with RClone, systemd, and Backblaze" /><published>2023-05-07T00:00:00-05:00</published><updated>2023-05-07T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2023/05/07/rclone-backups</id><content type="html" xml:base="https://www.theinternetvagabond.com/2023/05/07/rclone-backups.html"><![CDATA[<h1 id="automatic-backups-with-rclone-systemd-and-backblaze">Automatic Backups with RClone, systemd, and Backblaze</h1>
|
||
|
||
<h2 id="quick-note">Quick Note</h2>
|
||
|
||
<p>Backups are not complicated. They may seem like it, but in reality the
|
||
complications arise from restoration. If you’re not doing anything fancy with
|
||
your data now, then don’t do anything fancy with your backups. Follow the 3-2-1
|
||
methodology: 3 copies of (important) data, in 2 different locations, 1 of which
|
||
is off-site. Many others have written about this in better detail than I ever
|
||
can; Jeff Geerling has a great article and several videos about it <a href="https://www.jeffgeerling.com/blog/2021/my-backup-plan">on his
|
||
site</a>. The time (and
|
||
often money) investment now can reduce worry, stress, and loss should the data
|
||
you care about ever become unusable.</p>
|
||
|
||
<p>(There are no affiliate links in this post, nor was I paid to recommend any
|
||
product or service.)</p>
|
||
|
||
<h1 id="my-needs">My Needs</h1>
|
||
|
||
<p>Backups are as important as the data you have. If all you’ve got is a directory
|
||
full of meme GIFs that you don’t mind losing, then backups may be a waste of
|
||
time and money. I have recently taken to buying as much of my music as possible
|
||
(especially through Bandcamp, and especially on Bandcamp Fridays!). While much
|
||
of the music I buy does exist on a remote server at a company somewhere, the
|
||
cost of having to re-download and re-organize all of it well outweighs the cost
|
||
of proper backups. Not to mention the music which I can’t get anywhere else
|
||
anymore. Nor to further mention the other data which I have. All of this is to
|
||
say: backups are worth it to me.</p>
|
||
|
||
<p>Recently I wanted to setup NFS on my home network. I was concerned about messing
|
||
something up, and erasing the directory I had intended to share, so I wanted to
|
||
backup the data. For a while I’ve been intending to setup backups (as everyone
|
||
probably does), but it was never a priority. This project helped to prioritze
|
||
it. I had read about <a href="https://rclone.org/">RClone</a>, a command-line utility for
|
||
interacting with an incredible number of cloud services. I messed around a bit
|
||
with it, found it to my liking, and started shopping around for a cloud storage
|
||
solution. Enter <a href="https://www.backblaze.com/">Backblaze</a>. The folks that publish
|
||
all those hard-drive stats? Turns out they also run a business where they
|
||
provide cloud storage. It’s inexpensive, reliable, and straight-forward. The
|
||
last step was to automate it with systemd timer units.</p>
|
||
|
||
<h2 id="backblaze-setup">Backblaze Setup</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://www.backblaze.com/">Backblaze Site</a></li>
|
||
<li><a href="https://www.backblaze.com/help.html">Backblaze Docs</a></li>
|
||
</ul>
|
||
|
||
<p>First step is to setup Backblaze. Create an account, verify email address, all
|
||
that jazz. I’d recommend enabling multi-factor authentication on the
|
||
<strong>Account</strong> -> <strong>My Settings</strong> page, under <strong>Security</strong>. Next, click on the
|
||
<strong>Account</strong> -> <strong>Application Keys</strong> page, and generate a new key. Fill in the
|
||
blanks (I gave my key full access to all buckets), copy the important bits, and
|
||
store them somewhere safe (like your password vault).</p>
|
||
|
||
<h2 id="rclone-setup">RClone Setup</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://rclone.org/">RClone Site</a></li>
|
||
<li><a href="https://rclone.org/b2/">RClone Backblaze B2 Page</a></li>
|
||
</ul>
|
||
|
||
<p>Download and install RClone. Next run <code class="language-plaintext highlighter-rouge">rclone config</code> and walk through the
|
||
prompts. I’m using Backblaze, so I select “Backblaze B2” as my storage backend.
|
||
Then I add the application key ID and application key secret (key) at the
|
||
relevant prompts. For all of this configuration, I named the remote “backblaze”,
|
||
though a shorter name can make commands easier. Regardless, verify the
|
||
configuration is setup properly by running <code class="language-plaintext highlighter-rouge">rclone lsd backblaze:</code>, which will
|
||
list buckets. Unless a bucket was already configured, nothing will show up, and
|
||
also there won’t be any errors.</p>
|
||
|
||
<h2 id="backup-configuration">Backup Configuration</h2>
|
||
|
||
<p>Now, figure out how you want to backup your data. I have a <a href="/2020/06/14/setting-up-btrfs.html">BTRFS RAID setup
|
||
with multiple sub-volumes</a>, each for a
|
||
different data type: one for Books, one for Music, and so on. Since creating a
|
||
bucket doesn’t cost anything, I decided to split my backups similarly. I created
|
||
the buckets I wanted, and did a “manual” RClone sync of the data.</p>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">rclone sync --fast-list --transfers 20 /path/to/Books
|
||
backblaze:bucket-for-Books-backups</code></p>
|
||
|
||
<p>The “–fast-list” and “–transfers” options are specified on the <a href="https://rclone.org/b2/">RClone
|
||
Backblaze B2 page</a>, along with some others that may be
|
||
of interest.</p>
|
||
|
||
<p>At this point, my data was “backed-up”, and I could muck about with it more
|
||
confidently. Also, at this point, configuring back-ups is done. Run those RClone
|
||
sync commands once a week, and all is set. I don’t want to remember to do
|
||
things, though.</p>
|
||
|
||
<h2 id="automating-the-process">Automating the Process</h2>
|
||
|
||
<p>The first thing to do is create a user-agnostic location for the configuration
|
||
file and some additional files. I chose <code class="language-plaintext highlighter-rouge">/etc/rclone</code>, and copied the RClone
|
||
configuration file generated previously to this directory as <code class="language-plaintext highlighter-rouge">backblaze.conf</code>.</p>
|
||
|
||
<p>Next, I created a filter file. RClone has extensive <a href="https://rclone.org/filtering/">filtering
|
||
options</a>. For my current needs, a single file
|
||
will suffice.</p>
|
||
|
||
<h3 id="defaultfilter">default.filter</h3>
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Exclude BTRFS snapshot directories
|
||
- .snapshots/**
|
||
# Exclude Syncthing configuration directories
|
||
- .stfolder/**
|
||
</code></pre></div></div>
|
||
|
||
<p>systemd timer units ( [<a href="https://wiki.archlinux.org/title/Systemd/Timers">Arch
|
||
Wiki</a>]
|
||
[<a href="https://man.archlinux.org/man/systemd.timer.5">Manual</a>] ) are triggers that
|
||
activate on a schedule. That schedule can be dynamic (relative to a
|
||
previous/other trigger), or static (at 6:15 every day). A timer unit triggers a
|
||
service unit, which does the work. For my backups, I decided to run a sync every
|
||
hour, at sometime between the 15 and 45 minute mark of that hour. To simplify
|
||
having multiple timer units that all do the same thing, I setup a template unit
|
||
(see the <strong>Note</strong> here: <a href="https://wiki.archlinux.org/title/Systemd#Using_units">Arch
|
||
Wiki</a>).</p>
|
||
|
||
<h3 id="rclone-backuptimer">rclone-backup@.timer</h3>
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Unit]
|
||
Description=RClone Backup Timer Template
|
||
|
||
[Timer]
|
||
# Run every hour, sometime between the 15 minute and 45 minute mark
|
||
OnCalendar=*-*-* *:15:00
|
||
AccuracySec=30min
|
||
RandomizedDelaySec=5min
|
||
|
||
# The %i is whatever value is after the "@" for the configured unit. For
|
||
# example, rclone-backup@Books.timer will run the rclone-backup@Books.service
|
||
Unit=rclone-backup@%i.service
|
||
|
||
[Install]
|
||
WantedBy=timers.target
|
||
</code></pre></div></div>
|
||
|
||
<p>Then I can <code class="language-plaintext highlighter-rouge">enable</code> and <code class="language-plaintext highlighter-rouge">start</code> a timer for each directory to backup. To
|
||
minimize configuration, I also setup the service file to be a template. This
|
||
requires a bit of inflexible coordination: the directory name must match to a
|
||
part of the bucket name.</p>
|
||
|
||
<h3 id="rclone-backupservice">rclone-backup@.service</h3>
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Unit]
|
||
Description=RClone Backup of %I
|
||
|
||
[Service]
|
||
Type=simple
|
||
ExecStart=/usr/bin/rclone sync -v --config "/etc/rclone/backblaze.conf" --fast-list --transfers 20 --filter-from "/etc/rclone/default.filter" /path/to/%i/ backblaze:bucket-for-%i-backups
|
||
</code></pre></div></div>
|
||
|
||
<p>The <code class="language-plaintext highlighter-rouge">--config</code> option allows us to specify the configuration in the <code class="language-plaintext highlighter-rouge">/etc</code>
|
||
directory. I include <code class="language-plaintext highlighter-rouge">-v</code> to have some additional output in the journal.
|
||
Again, <code class="language-plaintext highlighter-rouge">--fast-list</code> and <code class="language-plaintext highlighter-rouge">--transfers</code> are used to speed up the process and keep
|
||
costs lower. Then I <code class="language-plaintext highlighter-rouge">--filter-from</code> the “default.filter” file.</p>
|
||
|
||
<p>Place each of these files (<code class="language-plaintext highlighter-rouge">rclone-backup@.timer</code> and <code class="language-plaintext highlighter-rouge">rclone-backup@.service</code>)
|
||
into <code class="language-plaintext highlighter-rouge">/etc/systemd/system</code>. For each directory, enable and start the timer
|
||
unit; <code class="language-plaintext highlighter-rouge">systemctl enable rclone-backup@Example.timer</code> and <code class="language-plaintext highlighter-rouge">systemctl start
|
||
rclone-backup@Example.timer</code> will backup <code class="language-plaintext highlighter-rouge">/path/to/Example/</code> to the
|
||
<code class="language-plaintext highlighter-rouge">bucket-for-Example-backups</code> bucket.</p>
|
||
|
||
<h1 id="next-steps">Next Steps</h1>
|
||
|
||
<p>I would like to get some sort of metrics and dashboards setup to track backup
|
||
status and statistics. It could be very useful to be notified if a backup ever
|
||
fails.</p>
|
||
|
||
<p>Eventually, I’ll upload this to a repository somewhere for ease of access and
|
||
backup. When I do, I’ll update this post.</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Automatic Backups with RClone, systemd, and Backblaze]]></summary></entry><entry><title type="html">Funkwhale on Linode with Object Storage</title><link href="https://www.theinternetvagabond.com/2022/09/27/linode_funkwhale.html" rel="alternate" type="text/html" title="Funkwhale on Linode with Object Storage" /><published>2022-09-27T00:00:00-05:00</published><updated>2022-09-27T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2022/09/27/linode_funkwhale</id><content type="html" xml:base="https://www.theinternetvagabond.com/2022/09/27/linode_funkwhale.html"><![CDATA[<h1 id="funkwhale-on-linode-with-object-storage">Funkwhale on Linode with Object Storage</h1>
|
||
|
||
<h2 id="funkwhale-setup">Funkwhale Setup</h2>
|
||
|
||
<p><a href="https://funkwhale.audio/">Funkwhale</a> is a decentralized music service,
|
||
connecting to the <a href="https://en.wikipedia.org/wiki/Fediverse">fediverse</a> using the
|
||
ActivityPub protocol. It is a web-based application, allowing users to upload,
|
||
listen, and share music and podcasts. I think it’s a cool project, and I can
|
||
self-host it, so I did. For a while, Funkwhale offered an all-in-one Docker
|
||
container, but they shifted focus to a multi-container approach. I had delayed
|
||
my transition from all-in-one to multi-container, but finally this past weekend
|
||
I found myself with time and motivation to get it done. The installation of
|
||
Funkwhale using Docker is very straight forward. The community has developed a
|
||
series of templates that can be fetched, modified, and used to get started very
|
||
quickly and easily. Those instructions are
|
||
<a href="https://docs.funkwhale.audio/installation/docker.html#multi-container-installation">here</a>.
|
||
The only significant modification I made was using <code class="language-plaintext highlighter-rouge">/opt/funkwhale</code> as my
|
||
default data and media root. I keep all my Docker configuration in directories
|
||
in my home directory as well. Much of these changes can be established in the
|
||
<code class="language-plaintext highlighter-rouge">.env</code> file discussed in the installation instructions, but I also scrubbed the
|
||
template files created and used during installation to make sure the directories
|
||
were as I wanted them. I also proxy Funkwhale and many other services behind
|
||
nginx, and there were a few <a href="https://docs.funkwhale.audio/installation/index.html#nginx">additional
|
||
steps</a> I had to
|
||
take. With all that complete, I had transitioned successfully. I already had SSL
|
||
certificates, but if that’s also a requirement, they can easily be provisioned
|
||
using <a href="https://certbot.eff.org/">Certbot</a>.</p>
|
||
|
||
<h2 id="object-storage-setup">Object Storage Setup</h2>
|
||
|
||
<p>In my old setup, I leveraged Funkwhale’s ability to <a href="https://docs.funkwhale.audio/admin/importing-music.html">in-place import
|
||
music</a>. I transferred
|
||
about 70GB worth of music to my VPS (using Syncthing <3), filling the disk
|
||
almost entirely (<em>98%</em>). It was a temporary solution for a road trip, and I
|
||
knew I couldn’t keep it that way for long. Funkwhale has the ability to leverage
|
||
S3-compatible object storage, and Linode, the provider I already use for my VPS,
|
||
offers object storage. Any of the other major cloud providers will also do the
|
||
trick; I just went with what was easiest. On the Linode side, there’s not much
|
||
to it. I created a new bucket, labeled it accordingly, created an access key,
|
||
and that was it. The Funkwhale side proved to be a bit challenging, but not, it
|
||
turns out, due to configuration. Well, <em>technically</em> it was.</p>
|
||
|
||
<p>The relevant configuration options on the Funkwhale side, in the <code class="language-plaintext highlighter-rouge">.env</code> file:</p>
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>## External storages configuration
|
||
# Funkwhale can store uploaded files on Amazon S3 and S3-compatible storages (such as Minio)
|
||
# Uncomment and fill the variables below
|
||
|
||
AWS_ACCESS_KEY_ID=
|
||
AWS_SECRET_ACCESS_KEY=
|
||
AWS_STORAGE_BUCKET_NAME=
|
||
# An optional bucket subdirectory were you want to store the files. This is especially useful
|
||
# if you plan to use share the bucket with other services
|
||
# AWS_LOCATION=
|
||
|
||
# If you use a S3-compatible storage such as minio, set the following variable
|
||
# the full URL to the storage server. Example:
|
||
# AWS_S3_ENDPOINT_URL=https://minio.mydomain.com
|
||
AWS_S3_ENDPOINT_URL=
|
||
|
||
# If you want to serve media directly from your S3 bucket rather than through a proxy,
|
||
# set this to false
|
||
# PROXY_MEDIA=false
|
||
|
||
# If you are using Amazon S3 to serve media directly, you will need to specify your region
|
||
# name in order to access files. Example:
|
||
# AWS_S3_REGION_NAME=eu-west-2
|
||
# AWS_S3_REGION_NAME=
|
||
|
||
# If you are using Amazon S3, use this setting to configure how long generated URLs should stay
|
||
# valid. The default value is 3600 (60 minutes). The maximum accepted value is 604800 (7 days)
|
||
|
||
# AWS_QUERYSTRING_EXPIRE=
|
||
|
||
# If you are using an S3-compatible object storage provider, and need to provide a default
|
||
# ACL for object uploads that is different from the default applied by boto3, you may
|
||
# override it here. Example:
|
||
# AWS_DEFAULT_ACL=public-read
|
||
# Available options can be found here: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl
|
||
|
||
AWS_DEFAULT_ACL=
|
||
</code></pre></div></div>
|
||
|
||
<p>I’ve included the comments. The entire file is commented, and generally easy
|
||
enough to figure out. On the Linode side, when I generated the access key, it
|
||
provided me an <em>Access Key</em> and a <em>Secret Key</em>. I had already created a bucket,
|
||
and so I had the <em>Bucket Name</em>. The challenge for me was what the <em>Endpoint URL</em>
|
||
was, and if I needed to set a <em>Region Name</em> and <em>ACL</em>. Linode’s documentation on
|
||
their object storage offering is a bit anemic, and so I made use of their setup
|
||
instructions for <a href="https://www.linode.com/docs/products/storage/object-storage/guides/s3cmd/">using s3cmd with Linode object
|
||
storage</a>.
|
||
From this guide, I was able to both setup <code class="language-plaintext highlighter-rouge">s3cmd</code>, and also determine what the
|
||
<em>Endpoint URL</em> would be. I also set the <em>Region Name</em> and <em>ACL</em> to match what
|
||
the UI was showing, but I’m still not certain their necessary. Here’s the trick,
|
||
and the cause of a few hours-worth of confusion: restarting the Docker
|
||
containers wasn’t re-reading the <code class="language-plaintext highlighter-rouge">.env</code> file; I had to completely stop and
|
||
re-create them. It wasn’t until I ran <code class="language-plaintext highlighter-rouge">docker inspect funkwhale-docker_api_1</code>
|
||
and noticed the environment variables weren’t set that I figured this out. Could
|
||
be this is common knowledge for Docker-gurus; now I know. With the
|
||
configuration in place, and the containers recreated, I was able to upload files
|
||
through Funkwhale, and watch them be stored in my Linode bucket. My final
|
||
configuration options were as follows:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>AWS_ACCESS_KEY_ID=<stuff>
|
||
AWS_SECRET_ACCESS_KEY=<secret stuff>
|
||
AWS_STORAGE_BUCKET_NAME=funkwhale-music-bucket-name
|
||
AWS_S3_ENDPOINT_URL=https://us-southeast-1.linodeobjects.com
|
||
AWS_S3_REGION_NAME=us-southeast-1
|
||
AWS_DEFAULT_ACL=public-read
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="next-steps">Next Steps</h2>
|
||
|
||
<p>The downside of Funkwhale’s S3-compatible object storage integration lies in how
|
||
files are uploaded. One cannot simply <del>walk into</del> upload files to the bucket;
|
||
music must be uploaded through Funkwhale’s API (via web or other means), and
|
||
then Funkwhale stores it accordingly (like for local uploads). I have a lot of
|
||
music, and I can’t be asked to manually upload it all. That’s, like, 2 hours of
|
||
half-hearted work. No, instead, the obvious solution is to build a script that
|
||
can automatically upload any new music from my local music directory to
|
||
Funkwhale automatically. What I’m considering now is how I want to do that. I
|
||
could leverage systemd to watch my local music directory, and run the upload
|
||
script whenever new music is uploaded. Could even expand it to remove music
|
||
whenever I delete it locally, though that seems a bit odd. I could instead setup
|
||
a cron or systemd-timer to run at a set interval, and check for any new files
|
||
since the last run, and upload them. Regardless of the trigger, the upload
|
||
functionality should ideally avoid duplicates, run in a non-blocking fashion,
|
||
maybe batch upload files, and be low impact on my desktop. So that’s next.</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Funkwhale on Linode with Object Storage]]></summary></entry><entry><title type="html">Setting up Syncthing on the Steam Deck (Updated!)</title><link href="https://www.theinternetvagabond.com/2022/07/04/steam_deck_syncthing.html" rel="alternate" type="text/html" title="Setting up Syncthing on the Steam Deck (Updated!)" /><published>2022-07-04T00:00:00-05:00</published><updated>2022-07-04T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2022/07/04/steam_deck_syncthing</id><content type="html" xml:base="https://www.theinternetvagabond.com/2022/07/04/steam_deck_syncthing.html"><![CDATA[<h1 id="syncthing-on-the-steam-deck-updated">Syncthing on the Steam Deck (Updated!)</h1>
|
||
|
||
<h2 id="update">Update</h2>
|
||
|
||
<p>Turns out, when you update the SteamOS, it completely over-writes the operating
|
||
system. All of the setup I had originally written was great, if I never update,
|
||
which is unacceptable. Not all is lost; the quest simply gets harder. If I can’t
|
||
rely on system-wide services, then I rely on user services.</p>
|
||
|
||
<h3 id="the-wrong-way-system-wide-services">The Wrong Way: System-Wide Services</h3>
|
||
|
||
<p>My first attempt was to setup Syncthing as a system-wide service managed by
|
||
<code class="language-plaintext highlighter-rouge">systemd</code>, installed via <code class="language-plaintext highlighter-rouge">pacman</code>. There are several problems with this. First,
|
||
it requires disabling the read-only file-system. Next, <code class="language-plaintext highlighter-rouge">pacman</code> is not setup nor
|
||
reliable, since every SteamOS update will over-write any changes I make to any
|
||
of the read-only file-system, including the directories that <code class="language-plaintext highlighter-rouge">pacman</code> relies on.
|
||
Related, the update will also erase the Syncthing package. This means I either
|
||
never update (inadvisable, and unacceptable), or I setup Syncthing not in the
|
||
read-only file-system.</p>
|
||
|
||
<h3 id="the-right-way-user-services">The Right Way: User Services</h3>
|
||
|
||
<p>systemd allows for non-root-based services, called user services. The Arch Wiki
|
||
<a href="https://wiki.archlinux.org/title/Systemd/User">systemd/User</a> article describes
|
||
this functionality much more than I will. Here are the relevant details:</p>
|
||
|
||
<ul>
|
||
<li>User services can be enabled to start when a user logs in</li>
|
||
<li>Service files are stored in the user’s home directory (specifically
|
||
<code class="language-plaintext highlighter-rouge">~/.config/systemd/user</code>)</li>
|
||
<li>No root privileges are required. No modifying the read-only file-system</li>
|
||
</ul>
|
||
|
||
<h2 id="syncthing">Syncthing</h2>
|
||
|
||
<p>Syncthing is incredible. I’ve <a href="2020/07/19/syncthing-part-1.html">written about it
|
||
before</a>, but the setup here is a bit more
|
||
involved. The Steam Deck runs Arch Linux (and have I told you yet today that I
|
||
do too?), so the Arch Wiki <a href="https://wiki.archlinux.org/title/Syncthing">article on
|
||
Syncthing</a> gives some good insight.
|
||
When I initially started this process, I installed the SyncthingGTK application
|
||
from the Discover Store. This means it is a Flatpak application, and so doesn’t
|
||
require elevated user privileges. I also tried the Syncthingy application, which
|
||
explicitly calls out Steam Deck users. However, both require running the Flatpak
|
||
in the background (like some users do for Discord or Spotify). I don’t like
|
||
this, it feels off, and thus I sought a different approach.</p>
|
||
|
||
<h2 id="sshd-still-incredibly-useful">SSHD: Still Incredibly Useful</h2>
|
||
|
||
<p>I got real tired real quick of using the on-screen keyboard. After
|
||
complaining, a friend recommended I enable <code class="language-plaintext highlighter-rouge">sshd</code> and just remote in to the
|
||
device. Doing so was a breeze, and I recommend to others who don’t have a
|
||
physical keyboard they can plug into their device. Drop to desktop mode
|
||
(hold the power button for a few seconds, and select the option), and start a
|
||
terminal (default is Konsole). Before remotely accessing the device, or using
|
||
elevated privileges via <code class="language-plaintext highlighter-rouge">sudo</code>, I need to set a password for the default user,
|
||
<em>deck</em>. In the terminal, type <code class="language-plaintext highlighter-rouge">passwd</code> and set it (and then put it in your
|
||
password vault so you don’t forget. You <em>do</em> have a password vault, right?).
|
||
Start the service, <code class="language-plaintext highlighter-rouge">sudo systemctl start sshd</code>, and optionally enable it to have
|
||
<code class="language-plaintext highlighter-rouge">sshd</code> automatically started on each boot (<code class="language-plaintext highlighter-rouge">sudo systemctl enable sshd</code>). Get
|
||
the device IP with <code class="language-plaintext highlighter-rouge">ip addr list</code>, from my desktop run <code class="language-plaintext highlighter-rouge">ssh deck@ip-address</code>,
|
||
type in the password, and now I’m a grade-A Hackermans.</p>
|
||
|
||
<p>This setting is not reset on SteamOS updates, that I can tell. Once enabled,
|
||
this will always start at boot, and always be on until explicitly turned off. Be
|
||
mindful of that if you decide to wander away from your home network; maybe turn
|
||
it off in public if you don’t need it.</p>
|
||
|
||
<h2 id="setup">Setup</h2>
|
||
|
||
<p>There are 2 things required: a systemd service file, and the <code class="language-plaintext highlighter-rouge">syncthing</code>
|
||
binary. Syncthing is written in Go, and a compiled binary can be downloaded that
|
||
has no dependencies or installation requirements. It can be downloaded from
|
||
the <a href="https://github.com/syncthing/syncthing/releases/tag/v1.20.3">Syncthing
|
||
Releases</a> page for
|
||
many platforms and architectures. The Steam Deck is a Linux platform, using the
|
||
AMD64 architecture (or x86_64), so I grab that one. I’ll note here, since I have
|
||
SSH access, I do all the editing and downloading on my desktop, and then
|
||
transfer the files using <code class="language-plaintext highlighter-rouge">scp</code> to the Deck. All of these steps can be done on
|
||
the Deck itself, without SSH access. Once the proper tarball has been
|
||
downloaded, extract it, and within will be the <code class="language-plaintext highlighter-rouge">syncthing</code> binary, ready to
|
||
rock. I copy/move the binary to <code class="language-plaintext highlighter-rouge">~/.local/bin/syncthing</code> on the Deck. The exact
|
||
location is less important than ensuring the binary is within my home directory
|
||
on the Deck.</p>
|
||
|
||
<p>The systemd serivce file can also be taken from the extracted tarball, but
|
||
requires modification. In the tarball, it is
|
||
<code class="language-plaintext highlighter-rouge">etc/linux-systemd/user/syncthing.service</code>. Copy this file to
|
||
<code class="language-plaintext highlighter-rouge">~/.config/systemd/user</code> on the Deck, and edit the “ExecStart” line in the
|
||
“[Service]” section from</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
|
||
[Service]
|
||
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
|
||
...
|
||
</code></pre></div></div>
|
||
|
||
<p>to</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
|
||
[Service]
|
||
ExecStart=/home/deck/.local/bin/syncthing serve --no-browser --no-restart --logflags=0
|
||
...
|
||
</code></pre></div></div>
|
||
<p>(or wherever you decided to put the local <code class="language-plaintext highlighter-rouge">syncthing</code> binary)</p>
|
||
|
||
<p>With everything in place, I can now enable and start the Syncthing user service:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl --user enable syncthing.service
|
||
systemctl --user start syncthing.service
|
||
</code></pre></div></div>
|
||
|
||
<p>Since I don’t have a physical keyboard plugged in, I modify my SSH command
|
||
slightly to forward the Syncthing web-UI from the Deck to my local machine:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh -L 31337:deck-ip-goes-here:8384 deck@deck-ip-goes-here
|
||
</code></pre></div></div>
|
||
|
||
<p>Now, on my local machine I can open one tab to <code class="language-plaintext highlighter-rouge">localhost:8384</code>, to show
|
||
Syncthing on my local machine, and another tab to <code class="language-plaintext highlighter-rouge">localhost:31337</code> to show
|
||
Syncthing on my Deck. From here, I add my local machine as a device on my Deck,
|
||
and begin sharing folders.</p>
|
||
|
||
<h2 id="closing-thoughts">Closing Thoughts</h2>
|
||
|
||
<p>I’ve been using this setup for about a week now. I’ve synced almost 20GB of
|
||
files, including configurations and saves for Retroarch. It works after
|
||
restarts, OS and client upgrades, and waking the device from sleep. It sits
|
||
quietly in the background, without having to start up applications. The biggest
|
||
problem is that it doesn’t automatically update to the newest version of
|
||
Syncthing. It’s also a bit involved to setup. To that end, I’ve written a tool
|
||
to help with setup: <a href="https://codeberg.org/VagabondAzulien/steam-deck-syncthing">Steam Deck Syncthing
|
||
Setup</a>. I’m still
|
||
finishing it up, but I intend to make use of it to keep my version of Syncthing
|
||
up-to-date. If you use it, let me know!</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Syncthing on the Steam Deck (Updated!)]]></summary></entry><entry><title type="html">Oblivion on Linux, with Mods! Part 2 - Mods</title><link href="https://www.theinternetvagabond.com/2021/12/09/oblivion-linux-2.html" rel="alternate" type="text/html" title="Oblivion on Linux, with Mods! Part 2 - Mods" /><published>2021-12-09T00:00:00-06:00</published><updated>2021-12-09T00:00:00-06:00</updated><id>https://www.theinternetvagabond.com/2021/12/09/oblivion-linux-2</id><content type="html" xml:base="https://www.theinternetvagabond.com/2021/12/09/oblivion-linux-2.html"><![CDATA[<p>Every player’s mod list is different. Some will focus on visuals, making the
|
||
game as graphically impressive and pretty as possible. Others care primarily
|
||
about additional content. I tend towards the later, with a preference for
|
||
additional survival or realism mods. I recommend starting with the “Core Mods”
|
||
section in the <a href="https://www.nexusmods.com/oblivion/mods/49898">Oblivion Comprehensive Modding Guide by
|
||
Dispensation</a> which will cover
|
||
some essential performance and enhancement mods.</p>
|
||
|
||
<p>Below are some specific mods I would like to highlight, and which I enjoy.</p>
|
||
|
||
<h2 id="survival-related">Survival Related</h2>
|
||
|
||
<h3 id="basic-primary-needs--personal-hygiene">Basic Primary Needs & Personal Hygiene</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/37088">Nexus Link - Basic Primary Needs</a></li>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/42038_">Nexus Link - Basic Personal Hygiene</a></li>
|
||
</ul>
|
||
|
||
<p>These two mods cover most of the survival aspects of my mod pack. “Basic Primary
|
||
Needs” adds hunger, thirst, and fatigue, while “Basic Personal Hygiene” adds
|
||
cleanliness. Managing these will feel tedious to some, but I really like having
|
||
to eat and drink, and visiting a bath house after a long time adventuring.</p>
|
||
|
||
<p>Each mod can make use of <a href="https://www.nexusmods.com/oblivion/mods/34905">additional HUD Status
|
||
Bars</a>, which makes tracking the
|
||
new needs much easier.</p>
|
||
|
||
<h3 id="travelers-tent">Traveler’s Tent</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/49654">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>This mod adds a portable player home, and is supremely comfy. Because I avoid
|
||
fast-travel, I wanted some sort of camping mod. I originally used <a href="https://www.nexusmods.com/oblivion/mods/37197">Maskar’s
|
||
Camping Mod</a> before learning of
|
||
this mod. By comparison, the tent in Traveler’s Tent feels almost like cheating,
|
||
but sometimes it’s important to treat yourself.</p>
|
||
|
||
<h2 id="world-enhancement">World Enhancement</h2>
|
||
|
||
<p>These I would consider my graphical improvements. I’m generally not too
|
||
concerned with making the game look good, but I love making the game feel more
|
||
realistic. These mods make Cyrodiil feel more alive.</p>
|
||
|
||
<h3 id="better-cities">Better Cities</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/16513/">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>This is a massive collection of city overhaul and enhancement mods. I was
|
||
awe-struck when I walked around the Imperial City for the first time with this
|
||
mod enabled. Bravil felt like a dangerous, crowded harbor town. Leyawin looks
|
||
like an actual place people live. Though the improvements do come with FPS hits.
|
||
Doubly-so if enabling the Open Cities option, which moves cities into the
|
||
overworld space, instead of their own individual instances. It’s a balancing
|
||
act: the immersion of walking directly into a city sometimes isn’t worth
|
||
crashing to desktop when adventuring around cities.</p>
|
||
|
||
<h3 id="cobl">COBL</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/21104">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>“Common Oblivion” enriches the world of Oblivion by adding lots of little
|
||
things, and helping different mods “talk” to each other. I like to think of it
|
||
as filling in a lot of the details that feel missing from vanilla Oblivion.</p>
|
||
|
||
<h3 id="enhanced-economy">Enhanced Economy</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/25078">Nexus Link</a></li>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/47184">Lubrons Patch</a></li>
|
||
</ul>
|
||
|
||
<p>This mod and the corresponding patch make the economy of the world more dynamic.
|
||
What I really like are the merchant quests that are added. Several merchants in
|
||
each town will ask you to find an item in one of the nearby dungeons. It adds
|
||
flavor to the game in just the right way.</p>
|
||
|
||
<p>Lubron’s Patch for Enhanced Economy fixes some bugs and cleans up the code a
|
||
bit.</p>
|
||
|
||
<h3 id="lights-of-oblivion---road-lanterns">Lights of Oblivion - Road Lanterns</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/46131">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>A very simple mod that I feel really enhances my travel around Cyrodiil. I avoid
|
||
fast-traveling whenever possible, and walking lit roads at night feels comfy.
|
||
I’m partial to the Imperial model.</p>
|
||
|
||
<h3 id="natural-environments">Natural Environments</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/2536">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>Arguably the only graphical enhancement mod, Natural Environments provides
|
||
options for modifying the weather, water, and vegetation around Cyrodiil. The
|
||
weather and vegetation enhancements especially stand out. Overall the mods
|
||
don’t cause me much performance impact, if any.</p>
|
||
|
||
<h3 id="cyrodiil-travel-services">Cyrodiil Travel Services</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.afkmods.com/index.php?/files/file/263-cyrodiil-travel-services/">AFK Mods Link</a></li>
|
||
</ul>
|
||
|
||
<p>I really enjoyed that in Skyrim there was a dude with a wagon you could pay to
|
||
travel to the various cities. This mod adds similar functionality, and then
|
||
some. Useful when playing the game without fast-travel enabled.</p>
|
||
|
||
<h2 id="overhauls">Overhauls</h2>
|
||
|
||
<p>Arguably, these are the heavy hitters. These mods will alter the mechanics of
|
||
the game, often making things more challenging but also more rewarding.</p>
|
||
|
||
<h3 id="maskars-oblivion-overhaul">Maskar’s Oblivion Overhaul</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/42780">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>Maskar’s Overhaul is a massive endeavor. It “[improves] many aspects of the
|
||
game, while maintaining the overall feel of the game and ensuring compatibility
|
||
with most other mods.” I think it does so with great success! However, be
|
||
forewarned, that this overhaul makes the game more challenging.</p>
|
||
|
||
<p>There is too much to cover about Maskar’s in this post, but I highly recommend
|
||
it. It comes with a PDF instruction manual, which is 61 pages long.</p>
|
||
|
||
<h3 id="vanilla-combat-enhanced">Vanilla Combat Enhanced</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/45314">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>As the name implies, this overhaul adjusts but does not change the vanilla
|
||
combat experience. Whereas other mods add new moves or fatigue systems, this mod
|
||
updates the vanilla combat experience to be more challenging and fair. It works
|
||
with Maskar’s after a small modification, which will be covered in the next
|
||
part. This is one of the mods that I haven’t played with for too long, and
|
||
there are definitely some additional or alternative combat mods I’m considering.
|
||
Namely, <a href="https://www.nexusmods.com/oblivion/mods/49873">Dynamic Oblivion Combat</a>
|
||
and <a href="https://www.nexusmods.com/oblivion/mods/49939">Combat Additions</a>.</p>
|
||
|
||
<h3 id="supreme-magicka">Supreme Magicka</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/12466">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p>Rounding out the trio is a magic overhaul. Supreme Magicka approaches magic in
|
||
Oblivion in a similar way to Vanilla Combat Enhanced with combat: it seeks to
|
||
improve and expand, without replacing. To continue similarities, this mod is one
|
||
I haven’t sank my teeth into as much. The characters I’ve been playing most
|
||
recently haven’t achieved very powerful magical capabilities yet. An alternative
|
||
to this mod is <a href="https://www.nexusmods.com/oblivion/mods/49096">Av Latta
|
||
Magicka</a>.</p>
|
||
|
||
<h2 id="next-steps">Next Steps</h2>
|
||
|
||
<p>In the last part of this series, I want to walk through a complete install of
|
||
Oblivion from scratch.</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Every player’s mod list is different. Some will focus on visuals, making the game as graphically impressive and pretty as possible. Others care primarily about additional content. I tend towards the later, with a preference for additional survival or realism mods. I recommend starting with the “Core Mods” section in the Oblivion Comprehensive Modding Guide by Dispensation which will cover some essential performance and enhancement mods.]]></summary></entry><entry><title type="html">Oblivion on Linux, with Mods! Part 1 - Tools</title><link href="https://www.theinternetvagabond.com/2021/11/20/oblivion-linux.html" rel="alternate" type="text/html" title="Oblivion on Linux, with Mods! Part 1 - Tools" /><published>2021-11-20T00:00:00-06:00</published><updated>2021-11-20T00:00:00-06:00</updated><id>https://www.theinternetvagabond.com/2021/11/20/oblivion-linux</id><content type="html" xml:base="https://www.theinternetvagabond.com/2021/11/20/oblivion-linux.html"><![CDATA[<p>Oblivion holds a special place in my heart. I remember spending a summer in the
|
||
town I went to college in, and playing Oblivion almost every day while listening
|
||
to Dream Theater’s <em>Systematic Chaos</em>. Back then, I wasn’t aware of modding, so
|
||
it was literally just vanilla Oblivion for hours upon hours. I also used
|
||
Windows, so the game would run fine. Now, things have changed. The easier issue
|
||
to deal with is playing Oblivion on Linux. Thanks to Valve, Oblivion runs
|
||
excellent with Proton out of the box. The more challenging issue is mods, and
|
||
that’s what this write-up is all about!</p>
|
||
|
||
<h1 id="vanilla-oblivion">Vanilla Oblivion</h1>
|
||
|
||
<p>Starting from the beginning, Oblivion is available on many platforms, but my
|
||
experiences here will assume the Steam installation. The primary difference will
|
||
be with respect to how the tools used to mod Oblivion are run. I’ve got the
|
||
Game of the Year edition, which is Steam ID <code class="language-plaintext highlighter-rouge">22330</code>.</p>
|
||
|
||
<h1 id="modding-tools">Modding Tools</h1>
|
||
|
||
<p>Much of modding Oblivion is done with the help of additional tools. A mod
|
||
manager is used for installing and configuring the mods. There are several
|
||
options for Oblivion, and the one I’ve been suggested and use is called <code class="language-plaintext highlighter-rouge">Wrye
|
||
Bash</code>. Mod load order is also important, and the tool I’m using to help with
|
||
that is <code class="language-plaintext highlighter-rouge">LOOT</code>. Finally, <code class="language-plaintext highlighter-rouge">TES4Edit</code>, <code class="language-plaintext highlighter-rouge">TES4LODGen</code> and <code class="language-plaintext highlighter-rouge">BethINI</code> each helps with
|
||
performance and configuration.</p>
|
||
|
||
<p>I have the following directory structure setup for my mods:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>OblivionMods
|
||
|- Archives
|
||
|- Backups
|
||
|- Tools
|
||
|- WryeBash
|
||
</code></pre></div></div>
|
||
|
||
<p><em>Archives</em> is where I store the actual archives of the mods I use. <em>Backups</em> is
|
||
where I store any relevant backups for my Oblivion game, such as saves or
|
||
configuration files for the mods. <em>Tools</em> is where I put the executables for all
|
||
the tools I mentioned above. <em>WryeBash</em> is used to store the unarchived mods
|
||
(which it calls “projects”) and mod data that <code class="language-plaintext highlighter-rouge">Wrye Bash</code> uses.</p>
|
||
|
||
<p>Because each of these tools is run using Proton, I also have a set of aliases
|
||
configured. Similar aliases could be setup for using Wine instead. For each
|
||
alias, modify the paths accordingly for your setup. I should also note that I’m
|
||
running Oblivion using <a href="https://github.com/GloriousEggroll/proton-ge-custom">Glorious Eggroll’s
|
||
Proton</a>, version 6.16. I
|
||
haven’t experimented with different Proton versions to find the most performant
|
||
version, but if I do in the future, I’ll mention it.</p>
|
||
|
||
<h2 id="wrye-bash">Wrye Bash</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/wrye-bash/wrye-bash">Project Link</a></li>
|
||
<li><a href="https://wrye-bash.github.io/">Homepage</a></li>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/22368">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">Wrye Bash</code> is involved. I don’t know how to use it fully. There are a few
|
||
guides that helped me learn how to use it enough to get mods installed and
|
||
configured though. The first, and very relevant, is at <a href="https://www.shrine-of-kynareth.de/wrye-bash-on-linux">Shrine of
|
||
Kynareth</a>. I referenced
|
||
this guide, and the
|
||
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab">other</a>
|
||
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-2-load-order-bashed-patch-and-savegame-profiles">written</a>
|
||
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-3-ini-edits-tools-and-tricks">guides</a>
|
||
to learn how Wrye Bash works and what to setup. I also learned some tricks from
|
||
the <a href="https://www.nexusmods.com/oblivion/mods/49898">Oblivion Comprehensive Modding Guide by
|
||
Dispensation</a>.</p>
|
||
|
||
<h3 id="setup">Setup</h3>
|
||
|
||
<p>The easiest option is to use the stand-alone executable from the GitHub releases
|
||
page. Extract the archive, and then use Proton to run the executable in the
|
||
<em>Mopy</em> directory. This is the alias I use; replace paths accordingly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-wrye='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/Mopy/Wrye\ Bash.exe'
|
||
</code></pre></div></div>
|
||
|
||
<p>Additionally, I copy the <em>Mopy/bash_default.ini</em> file to <em>Mopy/bash.ini</em> and set
|
||
the <code class="language-plaintext highlighter-rouge">sOblivionMods</code> to “Z:\path\to\OblivionMods\WryeBash”, <code class="language-plaintext highlighter-rouge">sBashModData</code> to
|
||
“Z:\path\to\OblivionMods\WryeBash\Bash Mod Data”, <code class="language-plaintext highlighter-rouge">sInstallersData</code> to
|
||
“Z:\path\to\OblivionMods\WryeBash\Bash Installers”, and <code class="language-plaintext highlighter-rouge">sOblivionPath</code> to
|
||
“Z:\path\to\steam\steamapps\common\Oblivion”. In Wine, <code class="language-plaintext highlighter-rouge">Z:</code> references your
|
||
local file system. Theoretically, because Wine is awesome, you may be able to
|
||
use Linux file system paths in the configuration, but I went with this.</p>
|
||
|
||
<h3 id="usage">Usage</h3>
|
||
|
||
<p>The guides above provide a very thorough explanation of use. Of note: <code class="language-plaintext highlighter-rouge">Wrye
|
||
Bash</code> in Wine does not like drag-and-drop actions, so don’t do them. I don’t do
|
||
anything special with my usage of <code class="language-plaintext highlighter-rouge">Wrye Bash</code>: run the alias, install mods from
|
||
the Installers tab, enable or disable mods from the Mods tab. I generally don’t
|
||
do anything else.</p>
|
||
|
||
<h2 id="loot">LOOT</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/loot/loot">Project Link</a></li>
|
||
<li><a href="https://loot.github.io/">Homepage</a></li>
|
||
</ul>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">LOOT</code> sets the proper load order for mods. There is a native Linux client, but
|
||
I ran into <a href="https://github.com/loot/loot/issues/1615">this issue</a> and decided to
|
||
just use the Windows version. The GitHub releases page includes a 7z archive
|
||
with a stand-alone executable, and that’s what I used.</p>
|
||
|
||
<h3 id="setup-1">Setup</h3>
|
||
|
||
<p>Download the stand-alone executable, and extract it to <em>OblivionMods/Tools</em>.
|
||
This is the alias I use; replace paths accordingly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-loot='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/LOOT/LOOT.exe'
|
||
</code></pre></div></div>
|
||
|
||
<p>On first run, it should auto-detect the Oblivion installation and configure
|
||
everything accordingly. If it doesn’t, there are instructions on the Homepage
|
||
for configuration.</p>
|
||
|
||
<h3 id="usage-1">Usage</h3>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">LOOT</code> is pretty straight forward. It references a master list of mods to
|
||
determine the optimal load order for all installed mods. I ran into an issue
|
||
where <code class="language-plaintext highlighter-rouge">LOOT</code> couldn’t properly download the master list, and so as a work-around
|
||
I manually downloaded the master list, and then configured <code class="language-plaintext highlighter-rouge">LOOT</code> to use that
|
||
local file instead of the remote Git repository. Those instructions are covered
|
||
<a href="https://loot.github.io/docs/help/LOOT-FAQs.html#git-errors">in the FAQ</a>. If
|
||
everything works, and the list of mods is there, then you can run a sort, and
|
||
apply the changes. <code class="language-plaintext highlighter-rouge">LOOT</code> will inform you of any “dirty” mods, which you can use
|
||
the next tool the clear up. I ended up keeping <code class="language-plaintext highlighter-rouge">LOOT</code> open, while stepping
|
||
through the cleaning procedure for each mod, until everything looked happy.</p>
|
||
|
||
<h2 id="tes4edit">TES4Edit</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/TES5Edit/TES5Edit">Project Link</a></li>
|
||
<li><a href="https://tes5edit.github.io/">Homepage</a></li>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/11536">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">TES4Edit</code> is the Oblivion version of <code class="language-plaintext highlighter-rouge">xEdit</code>, which is an incredible tool. All
|
||
I use it for is to clean dirty mods. <code class="language-plaintext highlighter-rouge">LOOT</code> provides a link to the <a href="https://tes5edit.github.io/docs/7-mod-cleaning-and-error-checking.html#ThreeEasyStepstocleanMods">quick cleaning
|
||
guide</a>,
|
||
which gives us exactly the steps required.</p>
|
||
|
||
<h3 id="setup-2">Setup</h3>
|
||
|
||
<p>Download the latest build from GitHub, and extract it to <em>OblivionMods/Tools</em>.
|
||
This is the alias I use, which runs the “Quick Auto Clean” function; replace
|
||
paths accordingly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit-quick='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4EditQuickAutoClean.exe'
|
||
</code></pre></div></div>
|
||
|
||
<p>TES4Edit is also useful for other, non-quick-clean functionality, so I have this
|
||
alias for that:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4Edit.exe'
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="usage-2">Usage</h3>
|
||
|
||
<p>Run the quick-clean alias, select the problematic file, and click “OK”. Only one
|
||
file can be cleaned at a time.</p>
|
||
|
||
<h2 id="tes4lodgen">TES4LODGen</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/TES5Edit/xLODGen">Project Link</a></li>
|
||
<li><a href="https://tes5edit.github.io/docs/16-xLODGen.html">Homepage</a></li>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/15781?tab=description">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">TES4LODGen</code> will generate the relevant LOD files ahead of time. Apparently it
|
||
helps with performance in-game, but may result in slower initial load times when
|
||
starting the game.</p>
|
||
|
||
<h3 id="setup-3">Setup</h3>
|
||
|
||
<p>I downloaded the files from Nexus, and extracted the archive to
|
||
<em>OblivionMods/Tools/TES4LODGen</em>. Here’s the alias; replace paths accordingly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4lodgen='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4LODGen/TES4LODGen.exe'
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="usage-3">Usage</h3>
|
||
|
||
<p>Run the alias. The program should auto-find everything, do some magic, and will
|
||
eventually report that it has finished. At that point, you can close the
|
||
application.</p>
|
||
|
||
<h2 id="bethini">BethINI</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://www.nexusmods.com/oblivion/mods/46440">Nexus Link</a></li>
|
||
</ul>
|
||
|
||
<p><code class="language-plaintext highlighter-rouge">BethINI</code> helps manage the “oblivion.ini” file, providing sane options and a
|
||
wizard for configuration. While not required, it does help with optimizations.</p>
|
||
|
||
<h3 id="setup-4">Setup</h3>
|
||
|
||
<p>I downloaded the files from Nexus, and extracted the archive to
|
||
<em>OblivionMods/Tools/Bethini</em>. If you use AutoHotKey apparently you can use that
|
||
to run it, but that doesn’t make sense to me, so I went with the stand-alone
|
||
executable. Here’s the alias; replace paths accordingly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-bethini='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
|
||
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
|
||
/path/to/proton/proton run /path/to/OblivionMods/Tools/BethINI/BethINI.exe'
|
||
</code></pre></div></div>
|
||
|
||
<h3 id="usage-4">Usage</h3>
|
||
|
||
<p>Just like the rest, run the alias and answer the questions. <code class="language-plaintext highlighter-rouge">BethINI</code> will make
|
||
backups of the modified INI files before over-writing them.</p>
|
||
|
||
<h1 id="next-steps">Next Steps</h1>
|
||
|
||
<p>Once all the tools are assembled, and usable, the next step is mods! In my next
|
||
post, I’ll cover some of my favorite mods. The third part will then be a
|
||
complete walk-thru of my installation of my full mod list.</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Oblivion holds a special place in my heart. I remember spending a summer in the town I went to college in, and playing Oblivion almost every day while listening to Dream Theater’s Systematic Chaos. Back then, I wasn’t aware of modding, so it was literally just vanilla Oblivion for hours upon hours. I also used Windows, so the game would run fine. Now, things have changed. The easier issue to deal with is playing Oblivion on Linux. Thanks to Valve, Oblivion runs excellent with Proton out of the box. The more challenging issue is mods, and that’s what this write-up is all about!]]></summary></entry><entry><title type="html">Character Write-up: Dabbledop Humblebumple</title><link href="https://www.theinternetvagabond.com/2020/10/23/gnome-cleric-wizard.html" rel="alternate" type="text/html" title="Character Write-up: Dabbledop Humblebumple" /><published>2020-10-23T00:00:00-05:00</published><updated>2020-10-23T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2020/10/23/gnome-cleric-wizard</id><content type="html" xml:base="https://www.theinternetvagabond.com/2020/10/23/gnome-cleric-wizard.html"><![CDATA[<p>Gnomes are interesting. I can’t help but play them as small frantic stressballs.
|
||
Like hobbits from <em>Lord of the Rings</em>, dialed up to 11, minus the extra
|
||
breakfasts, and plus ceaseless banter. Gnomes are fun. This write up was for a
|
||
character for the same campaign as <a href="/2018/01/27/halvar.html">Halvar</a>, when he had
|
||
to step away for a bit.</p>
|
||
|
||
<h2 id="backstory">Backstory</h2>
|
||
|
||
<p>Nothing is more tiresome than midweek afternoon service. All the candles, and
|
||
the verses, and the never-ending procession. Odin’s great and all, but I don’t
|
||
think he cares about this. Of course, I mention that one time to the head priest
|
||
and it’s latrine duty for the week! I guess now it doesn’t matter. All these
|
||
acolyte duties were from many years ago. It was pure fate, the day my current
|
||
teacher Maell’ezharon wandered into our village. He needed certain gemstones,
|
||
which my family was renowned for, and which I was responsible for that day. I
|
||
just happened to bring exactly the number he needed with me to the church that
|
||
day. That’s a habit I have. The priests say I’m “blessed by foresight.”</p>
|
||
|
||
<p>Anyway, Maell’ezharon wanders in, and finds me, and I tell him I know he’s
|
||
looking for these gemstones, and he’s a bit surprised, but mentions that he
|
||
hadn’t had his serious anti-divination protections up, since he figured no one
|
||
would care. I told him I didn’t know what that meant. The priest chimed in that
|
||
I was blessed by foresight. Maell’ezharon said that was shit. I was blown away.
|
||
The priest huffed and wandered off, and I just stared at this elf who seemed
|
||
completely unphased by an ability the priests couldn’t stop fawning over me for.
|
||
So I push him a bit on it, and he says that divination is mighty common, and
|
||
that if I wanted to learn more he could teach me, and he’d be willing to give me
|
||
a discount on his services if I gave him a discount on the gems!</p>
|
||
|
||
<p>And man temples are booooring! So yeah, I just packed up some stuff and told the
|
||
priests I had to go because “foresight told me I had to!” and caught up with
|
||
Maell’ezharon and off we went! I brought some extra gems, and a few extra
|
||
sandwiches (which he seemed off-put by, which I account to his dainty elf ways,
|
||
which meant more for me!).</p>
|
||
|
||
<p>For the most part, it was kind of boring - but not as boring as the temple!
|
||
Nothing is as boring as that. Trust me. Just routine travel along “safe and
|
||
well-known roads” (says Maell’ezharon) to “respectable and trustworthy
|
||
merchants” (says Maell’ezharon) for “law-abiding and fair trade deals.” (says
|
||
Maell’ezharon). I was a bit surprised to find myself still saying a prayer here
|
||
and there but old habits die hard. The more we travelled, the more Maell’ezharon
|
||
would teach me. First he helped me refine my portent abilities, and got me a
|
||
spellbook, and let me copy some of his spells into it. Then, in each town we
|
||
went to, we would combine our powers to get the best deals possible. I would
|
||
call upon my divine powers to aid him, and he would wheel-and-deal his way
|
||
through trade deals and contracts. He insisted, time and again, that we do
|
||
things “legally and fair” (his words) which was fine by me.</p>
|
||
|
||
<p>Then, the event happened. And magic suddenly left, and Maell’ezharon… did not
|
||
take that well. I should say, this was probably 5 or so years into his
|
||
mentorship. He had taught me many things, and I was developing into “quite the
|
||
capable wizard, if I do say so myself” (Maell’ezharon said that). We had
|
||
travelled all over the place, and eventually Maell’ezharon decided he’d like to
|
||
“invest in real estate since it’s like free money” so he bought a tower and did
|
||
the whole typical wizard thing: magic plants, and a few animated objects as
|
||
guards, and what not. I helped with that too, which was really fun. Anyway when
|
||
the event happened, we were trading and suddenly I just felt this… emptiness.
|
||
Like, a part of my body was suddenly missing. I looked at Maell’ezharon and he
|
||
was pale as bone. He just stared at his hands, then looked at the merchant and
|
||
told him he had to go, and he just left. He didn’t even get his things, he just
|
||
stumbled out of the shop. I grabbed anything that was ours, and walked outside
|
||
and saw him just standing there, waving his arms and trying to say the words,
|
||
and his eyes were a bit crazy-like, and he was sweating. After about 20 minutes,
|
||
he just sat down and stared. It took me almost 4 hours to finally get him up and
|
||
to an inn. The next day we went back to the tower, and it was really quite a sad
|
||
sight. The plants had all died (and not because I forgot to water them I always
|
||
watered them I am responsible), the guards were piles of rubble. I helped him
|
||
in, to his room, to his favorite chair, where he just slumped down and stared
|
||
into the empty, cold fireplace. For a few weeks I tended to him, making sure he
|
||
at least ate. And I kept up the place, cleaning as best I could. But after a
|
||
while, I started worrying about my family, and so I hired a local farm boy to
|
||
take care of Maell’ezharon while I was gone (feed him twice a day, make sure he
|
||
uses the loo, and don’t let him hurt himself).</p>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Gnomes are interesting. I can’t help but play them as small frantic stressballs. Like hobbits from Lord of the Rings, dialed up to 11, minus the extra breakfasts, and plus ceaseless banter. Gnomes are fun. This write up was for a character for the same campaign as Halvar, when he had to step away for a bit.]]></summary></entry><entry><title type="html">Pathfinder Characters: Eldritch Knight</title><link href="https://www.theinternetvagabond.com/2020/09/27/pathfinder-eldritch-knight.html" rel="alternate" type="text/html" title="Pathfinder Characters: Eldritch Knight" /><published>2020-09-27T00:00:00-05:00</published><updated>2020-09-27T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2020/09/27/pathfinder-eldritch-knight</id><content type="html" xml:base="https://www.theinternetvagabond.com/2020/09/27/pathfinder-eldritch-knight.html"><![CDATA[<h1 id="building-my-eldritch-knight">Building My Eldritch Knight</h1>
|
||
|
||
<p>Pathfinder has been the tabletop game of choice for my longest-running group.
|
||
One of my favorite activities is creating characters. I love theory crafting,
|
||
pouring through source material, and setting limits. My favorite archetype of
|
||
characters are those that take the combat focus of a warrior and supplement it
|
||
with magic. The druid, which I <a href="/2020/09/06/pathfinder-druid.html">already touched
|
||
on</a>, is a class that
|
||
has this built in. This blending of magic and metal is often called a
|
||
<a href="https://en.wiktionary.org/wiki/gish">Gish</a>.</p>
|
||
|
||
<h2 id="concept">Concept</h2>
|
||
|
||
<p>All of my characters come from a concept. This concept is heavily mechanics
|
||
focused, and heavily opinionated: I want a “proper” eldricth knight. To me, a
|
||
proper eldritch knight doesn’t use any gimmicks or tricks to get into the
|
||
prestige class sooner, doesn’t rely too heavily on especially unique or strange
|
||
equipment, and sticks to a limited set of rule books.</p>
|
||
|
||
<h2 id="build">Build</h2>
|
||
|
||
<p>For this build, I’ll be limiting myself the these rule books:</p>
|
||
|
||
<ul>
|
||
<li>Core Rulebook</li>
|
||
<li>the Ultimate books (Combat, Magic, Intrigue, Wilderness, and Equipment)</li>
|
||
<li>the Advanced books (Player’s Guide, Race, and Class)</li>
|
||
</ul>
|
||
|
||
<p>Eldritch Knight needs a martial class, and an arcane class. While there are
|
||
plenty of options, I wanted to start with the most basic options:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Fighter 1 / Wizard (Enchantment) 5 / Eldritch Knight X
|
||
</code></pre></div></div>
|
||
|
||
<p>Wizards have the option of taking a school, and it makes a lot of sense for
|
||
a melee combatant to focus on buffing itself. Thus, I went for a Transmutation
|
||
school, and specifically for the Enchantment school. For opposed schools, I
|
||
opted for Evocation and Necromancy. I lose out on some nice spells, certainly,
|
||
but considering our focus, we wouldn’t be using many blasting spells. Not to
|
||
mention, our spell penetration will be relatively weak by comparison to more
|
||
spell-focused builds. Obviously, open to alternatives, but I would advise
|
||
against choosing Illusion, since it has some of the better non-transmutation
|
||
buffs in the game.</p>
|
||
|
||
<p>Wizards also have to choose an arcane bond, which is either a familiar or an
|
||
item. Familiars are incredibly useful, but for this build I really liked the
|
||
idea of having my arcane bond be my weapon. This can be <strong>very dangerous!</strong> If
|
||
your bonded item is taken from you, or destroyed, you will have a <em>very
|
||
difficult time</em> casting spells.</p>
|
||
|
||
<h2 id="traits">Traits</h2>
|
||
|
||
<p>In our Pathfinder group, we don’t <em>really</em> use traits, but I use traits.
|
||
Specifically, I always use 1 trait when it is applicable, because I believe
|
||
without this trait, any Gish build that relies on multiple classes is severely
|
||
penalized: Magical Knack. This trait will allow me to up my caster level for
|
||
Wizard by up to +2, up to my maximum hit dice. This doesn’t give me more spells
|
||
per day, but it does affect spell details such as duration, or saving throw DC,
|
||
that rely on caster level. Conveniently, for this build, we have exactly two
|
||
levels that do not give a bonus to wizard caster level: the 1 level of fighter
|
||
we take, and the first level of eldritch knight.</p>
|
||
|
||
<p>If two traits are allowed, solid choices are <code class="language-plaintext highlighter-rouge">Reactionary</code> for a bonus to
|
||
initiative; <code class="language-plaintext highlighter-rouge">Deft Dodger</code> for an improved reflex save; <code class="language-plaintext highlighter-rouge">Eyes and Ears of the
|
||
City</code> for a bonus on perception and to add it as a class skill; or <code class="language-plaintext highlighter-rouge">Armor
|
||
Expert</code> to reduce all armor check penalties by 1.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Magical Knack (Wizard)
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="race">Race</h2>
|
||
|
||
<p>Human. Elf as a very close second. The bonus for spell penetration, the bonus to
|
||
perception and spellcraft skills, and the ability score modifiers are all solid.
|
||
But, this build won’t need to worry about puncturing spell resistance, and
|
||
because we’re a melee combatant, we need all the constitution we can get. Human
|
||
provides a bonus +1 skill point per level, a bonus feat, and a floating +2
|
||
ability score increase, which we can use for our strength or intelligence.</p>
|
||
|
||
<h2 id="skills">Skills</h2>
|
||
|
||
<p>None of the three classes in this build provide a significant number of skills;
|
||
all three give 2 + INT per level. However, being a wizard, we <em>do</em> have a nice
|
||
intelligence score, and as a human we get an additional +1. At a minimum, we’ll
|
||
probably get 5 skill points per level. There are no skill requirements to get
|
||
into eldritch knight, so we can focus on the “important” skills:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Knowledge (Arcana)
|
||
Knowledge (Dungeoneering)
|
||
Knowledge (Nature)
|
||
Knowledge (Planes)
|
||
Knowledge (Religion)
|
||
Perception
|
||
Sense Motive
|
||
Spellcraft
|
||
Survival
|
||
</code></pre></div></div>
|
||
|
||
<p>I also like to drop a single point in <code class="language-plaintext highlighter-rouge">Climb</code>, <code class="language-plaintext highlighter-rouge">Swim</code>, <code class="language-plaintext highlighter-rouge">Ride</code>, and <code class="language-plaintext highlighter-rouge">Fly</code>, if I
|
||
can afford to. Getting the trained bonus, combined with our generally good
|
||
strength and dexterity, means we can accomplish the basics. As a wizard, we can
|
||
further supplement these with spells. Unfortunately, we do not get perception as
|
||
a class skill, and so using a trait for that would make sense.</p>
|
||
|
||
<h2 id="feats">Feats</h2>
|
||
|
||
<p>It is very easy to get lost in feats. Like most aspects of Pathfinder, there are
|
||
an excess of options. To narrow down my focus, I tried to consider what the
|
||
character’s options were: warrior focused on melee combat; wizard focused on
|
||
buffing and crowd control. Being in melee means I’ll be wearing armor, and that
|
||
brings the <code class="language-plaintext highlighter-rouge">Arcane Armor Training</code> feats into relevance. There’s also the
|
||
<code class="language-plaintext highlighter-rouge">Arcane Strike</code> feat, which is perfect for arcane gish builds. Initiative is the
|
||
king of combat, and as a wizard I’ll want to try going first as often as
|
||
possible. I also don’t have the most hit points, due to those 5 levels of
|
||
wizard. <code class="language-plaintext highlighter-rouge">Improved Initiative</code> and <code class="language-plaintext highlighter-rouge">Toughness</code> make sense. Considering the
|
||
possibility of being in combat when buffing, <code class="language-plaintext highlighter-rouge">Combat Casting</code> makes sense. I’ll
|
||
probably focus on a specific weapon, so <code class="language-plaintext highlighter-rouge">Weapon Focus</code> makes sense, and as a
|
||
fighter/eldritch knight, those levels will stack for feat requirements. That
|
||
means, <code class="language-plaintext highlighter-rouge">Weapon Specialization</code> is a possibility in the future.</p>
|
||
|
||
<p>While I’m sure there are some crazy feats in other books, all these feats come
|
||
from the Core Rulebook. That excites me for some reason. Thus far, the only
|
||
non-core rulebook thing we’ve done is traits, and for this build we can live
|
||
without those if absolutely necessary. Again, this limit isn’t necessary, but it
|
||
was something I wanted to adhere to for this build.</p>
|
||
|
||
<p>The number of feats laid out above is very quickly growing. Conveniently, I’m
|
||
entering the game with 3: one for level 1, a bonus for human, and a bonus for
|
||
fighter. That’s <code class="language-plaintext highlighter-rouge">Improved Initiative</code>, <code class="language-plaintext highlighter-rouge">Toughness</code>, and <code class="language-plaintext highlighter-rouge">Weapon Focus</code>. Any
|
||
two-handed weapon will do, though I’m partial to the good ol’ greatsword. Using
|
||
a sword-and-board will severely restrict my casting abilities, because both
|
||
hands will be full.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Improved Initiative (Level 1)
|
||
Toughness (Human bonus feat level 1)
|
||
Weapon Focus (Greatsword) (Fighter level 1 bonus combat feat)
|
||
Scribe Scroll (Wizard level 1 bonus feat)
|
||
Combat Casting (Level 3)
|
||
Arcane Strike (Level 5)
|
||
Craft Wonderous Items (Wizard level 5 bonus feat; debatable)
|
||
Arcane Armor Training (Eldritch Knight bonus combat feat)
|
||
Power Attack (Level 7)
|
||
</code></pre></div></div>
|
||
|
||
<p>The wizard gets a bonus feat at level 5, which is limited to an arcane crafting
|
||
feat, a metamagic feat, Spell Mastery, or an arcane discovery. I opted for
|
||
<code class="language-plaintext highlighter-rouge">Craft Wonderous Items</code> because I like the options it opens up. There are some
|
||
good metamagic options I considered though: <code class="language-plaintext highlighter-rouge">Extend Spell</code> makes sense for
|
||
buffing; <code class="language-plaintext highlighter-rouge">Still Spell</code> makes sense since we’re in armor; <code class="language-plaintext highlighter-rouge">Toppling Spell</code> can
|
||
give Magic Missile and other force damage spells some crowd-control. Since
|
||
evocation is one of my opposed schools, though, it wouldn’t work for me.</p>
|
||
|
||
<p>Wizards at first level also get <code class="language-plaintext highlighter-rouge">Scribe Scroll</code> as a bonus feat. Scrolls are
|
||
great for situational spells.</p>
|
||
|
||
<h2 id="gear">Gear</h2>
|
||
|
||
<p>There’s only one piece of gear that is unusual here, and it’s the armor. Kikko
|
||
armor is from Ultimate Equipment, and specifically is a type of eastern setting
|
||
armor. It provides a +5 armor bonus, allows for a dexterity bonus of +4, incurs
|
||
a -3 armor check penalty, and has 20% arcane spell failure. However, it is
|
||
primarily made of metal, and thus can be made from mithral. A mithral suit of
|
||
kikko armor provides +5 armor bonus, allows for a dexterity bonus of 6, incurs
|
||
no armor check penalty, and has a 10% arcane spell failure. Those numbers are
|
||
fantastic. No armor check penalty is great for the odd <code class="language-plaintext highlighter-rouge">Climb</code> or <code class="language-plaintext highlighter-rouge">Swim</code> check,
|
||
and for when I can <code class="language-plaintext highlighter-rouge">Fly</code>. The 10% arcane spell failure chance is lowered to 0%
|
||
by <code class="language-plaintext highlighter-rouge">Arcane Armor Training</code>, allowing me to safely cast in armor when I so
|
||
choose. If limited to the core rule book, the next best bet will be either a
|
||
breastplate, or hide armor.</p>
|
||
|
||
<p>As for the weapon, I went with a greatsword. You could go with a falchion, and
|
||
“crit-fish,” but I’d rather have the raw damage. Numbered enchantment bonuses
|
||
are good, but there is one specific enchantment I would highly suggest: called.
|
||
A called weapon can be teleported to the wielder’s hand as a swift action.
|
||
Considering our greatsword is our arcane focus, we’ll want that in our
|
||
possession at all times, and this greatly increases the chances of that. Keen
|
||
wouldn’t be too bad; increasing the critical threat range to 17-20. Spell
|
||
storing obviously makes a lot of sense, too.</p>
|
||
|
||
<p>I’m a spell caster, so I picked up a few <code class="language-plaintext highlighter-rouge">Pearls of Power</code>, a few wands (<code class="language-plaintext highlighter-rouge">Cure
|
||
Light Wounds</code>, <code class="language-plaintext highlighter-rouge">Protection from Evil</code>, and <code class="language-plaintext highlighter-rouge">Expeditious Retreat</code>), and a bunch
|
||
of potions of <code class="language-plaintext highlighter-rouge">Lead Blades</code>. The reason for the potions and not scrolls or a
|
||
wand is to avoid <code class="language-plaintext highlighter-rouge">Use Magic Device</code> checks.</p>
|
||
|
||
<p>I have a collection of mundane items, including things like a bedroll, rope,
|
||
sewing needles, chalk, and a handful of alchemical items, that I like to carry
|
||
in a <code class="language-plaintext highlighter-rouge">Handy Haversack</code>.</p>
|
||
|
||
<p>Beyond all this, I went with the remainder of the “Big 6”: a <code class="language-plaintext highlighter-rouge">Cloak of
|
||
Resistance</code>, a <code class="language-plaintext highlighter-rouge">Ring of Protection</code>, a <code class="language-plaintext highlighter-rouge">Headband of Intellect</code>, and a <code class="language-plaintext highlighter-rouge">Belt of
|
||
Strength</code>.</p>
|
||
|
||
<p>With any left over funds, investing in additional spells known, scrolls, copies
|
||
of your spellbook, and cheaper wonderous items is always nice.</p>
|
||
|
||
<h2 id="spells">Spells</h2>
|
||
|
||
<p>I’m a wizard (Harry), with the most versatile spell list in the game, and a book
|
||
(or books) that can get them all! Aside from the opposed school (but even then,
|
||
there are some worth getting, such as <code class="language-plaintext highlighter-rouge">False Life</code>), I went for every spell that
|
||
I even remotely thought I would use. On my sheet, that’s 62 spells across levels
|
||
1 to 3. I won’t mark them all here, but there are some which I wouldn’t want to
|
||
be without.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Level 1
|
||
- Comprehend Languages (also a great scroll)
|
||
- Enlarge Person
|
||
- Magic Missile (despite being opposed, a solid fall-back)
|
||
- Mount
|
||
- Protection from Alignment (generally, evil and chaos make the most sense)
|
||
- Shield
|
||
- Vanish
|
||
|
||
Level 2
|
||
- False Life
|
||
- Glitterdust
|
||
- Invisibility
|
||
- Mirror Image
|
||
- Resist Energy
|
||
- Rope Trick
|
||
|
||
Level 3
|
||
- Ablative Barrier
|
||
- Fly
|
||
- Haste
|
||
- Phantom Steed
|
||
- Sleet Storm
|
||
- Versatile Weapon
|
||
</code></pre></div></div>
|
||
|
||
<p>At character level 9, we get access to 4th level wizard spells. Some spells on
|
||
my wishlist include great crowd-control like <code class="language-plaintext highlighter-rouge">Acid Pit</code> and <code class="language-plaintext highlighter-rouge">Black Tentacles</code>;
|
||
self-buffs like <code class="language-plaintext highlighter-rouge">Stoneskin</code> and <code class="language-plaintext highlighter-rouge">Greater Invisibility</code>; and utility like
|
||
<code class="language-plaintext highlighter-rouge">Dimension Door</code>, <code class="language-plaintext highlighter-rouge">Stone Shape</code>, and even <code class="language-plaintext highlighter-rouge">Wall of Fire</code> or <code class="language-plaintext highlighter-rouge">Wall of Ice</code>,
|
||
despite them being from an opposed school.</p>
|
||
|
||
<p>Also, as a wizard I got <code class="language-plaintext highlighter-rouge">Scribe Scroll</code> at first level. Many spells in my
|
||
spellbook are almost only there so I can make scrolls of them. Examples include
|
||
<code class="language-plaintext highlighter-rouge">Identify</code>, the various ability enhancements (<code class="language-plaintext highlighter-rouge">Cats Grace</code>, etc..), and so on.</p>
|
||
|
||
<h2 id="gameplay">Gameplay</h2>
|
||
|
||
<p>I’ve actually played this build 3 times. The first time, as the human shown
|
||
here. The second time, as this build but with the zombie lord template added.
|
||
And a third time, but with the skeleton champion template added. Needless to
|
||
say, those templates make this build <em>incredibly powerful</em>. However, I made some
|
||
poor play decisions, thinking I was a bit more resistant that I actually was,
|
||
and so all of these characters died rather unfortunate and avoidable deaths.</p>
|
||
|
||
<p>What I’ve learned through all three characters is to be patient! This build is
|
||
very capable, with many options. It can wade into combat and deal some
|
||
significant damage, even before buffs. Out of combat, it has the flexibility
|
||
that a well-filled spell book can provide, and a good coverage of knowledge
|
||
skills.</p>
|
||
|
||
<p>When engaging in combat, I always try to make sure I have the following
|
||
self-buffs up, or ready to be up:</p>
|
||
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">Protection from Alignment</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">Shield</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">Resist Energy</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">Mirror Image</code></li>
|
||
<li><code class="language-plaintext highlighter-rouge">Ablative Barrier</code></li>
|
||
</ul>
|
||
|
||
<p>For damage, there’s a ranger spell called <code class="language-plaintext highlighter-rouge">Lead Blades</code> which is so good it
|
||
should almost be considered essential. <code class="language-plaintext highlighter-rouge">Versatile Weapon</code> can help with damage
|
||
resistance which is overcome with special materials.</p>
|
||
|
||
<p>As for party buffs, few options beat <code class="language-plaintext highlighter-rouge">Haste</code>.</p>
|
||
|
||
<p>For crowd-control, I’ll tend towards a <code class="language-plaintext highlighter-rouge">Glitterdust</code>, <code class="language-plaintext highlighter-rouge">Pyrotechnics</code>, or <code class="language-plaintext highlighter-rouge">Sleet
|
||
Storm</code>.</p>
|
||
|
||
<p>In combat, get buffed to a point you feel capable. This may take 2 or 3 rounds.
|
||
That’s OK! You’re the second line. Use your swift action for <code class="language-plaintext highlighter-rouge">Arcane Armor
|
||
Training</code>, buff yourself, move in. Do that again, maybe moving in for a flank.
|
||
Third round, swift action for <code class="language-plaintext highlighter-rouge">Arcane Strike</code>, and unload with a <code class="language-plaintext highlighter-rouge">Power Attack</code>
|
||
greatsword swing! If you’ve got <code class="language-plaintext highlighter-rouge">Lead Blades</code> up, that’s 3d6 + 6 (<code class="language-plaintext highlighter-rouge">Power
|
||
Attack</code>) + 2 (<code class="language-plaintext highlighter-rouge">Arcane Strike</code>) + 1.5x strength bonus. Not bad! Unfortunately,
|
||
Eldritch Knights lag behind for base-attack bonus, so at level 8 (which is the
|
||
level for all my builds) it’s only 1 attack a round. At level 9, you get two
|
||
attacks a round. You can also fall back on a composite longbow, which you can
|
||
also use <code class="language-plaintext highlighter-rouge">Arcane Strike</code> with for 1d8 + strength bonus + 2 (<code class="language-plaintext highlighter-rouge">Arcane Strike</code>),
|
||
which isn’t as impressive as that big sword, but can still contribute. And, if
|
||
weapons won’t due, you’re a wizard! Keep your prepared spells flexible. <code class="language-plaintext highlighter-rouge">Scribe
|
||
Scroll</code> allows you to have certain spells available at all times. <code class="language-plaintext highlighter-rouge">Craft
|
||
Wonderous Items</code> can allow you to create plenty of gizmos and gadgets that give
|
||
you once-per-day options. Crafting is powerful; use it!</p>
|
||
|
||
<p>I’ve always had fun with this build. I have, no joke, lost sleep just figuring
|
||
out cool spells to add to the spell book, worthwhile scrolls, and just imagining
|
||
scenarios. Despite the apparent short-comings, the Eldritch Knight can
|
||
definitely hold it’s own, though it does require a ramp-up time.</p>
|
||
|
||
<h1 id="sources">Sources</h1>
|
||
|
||
<ul>
|
||
<li><a href="https://www.d20pfsrd.com/">Pathfinder SRD</a></li>
|
||
<li><a href="https://docs.google.com/document/d/10x042PGSyqX4JqHbYFf7vDsK1NCnhBT2ck8i1eG6kpc/edit">The Muscle Wizard Guide</a></li>
|
||
</ul>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Building My Eldritch Knight]]></summary></entry><entry><title type="html">Pathfinder Characters: Let’s Make a Druid</title><link href="https://www.theinternetvagabond.com/2020/09/06/pathfinder-druid.html" rel="alternate" type="text/html" title="Pathfinder Characters: Let’s Make a Druid" /><published>2020-09-06T00:00:00-05:00</published><updated>2020-09-06T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2020/09/06/pathfinder-druid</id><content type="html" xml:base="https://www.theinternetvagabond.com/2020/09/06/pathfinder-druid.html"><![CDATA[<h1 id="lets-make-a-druid">Let’s Make a Druid</h1>
|
||
|
||
<p>Pathfinder has been the tabletop game of choice for my longest-running group.
|
||
One of my favorite activities is creating characters. I love theory crafting,
|
||
pouring through source material, and setting limits. While I’ve made many,
|
||
<em>many</em> characters, once class I haven’t touched is druid. The first character I
|
||
ever made, back in a D&D Second Edition, was a druid. I don’t remember much from
|
||
that character, except that I had a double-scimitar (think Darth Maul
|
||
lightsabre, but scimitars). Since that, I haven’t done much with druids, which I
|
||
think is a shame, because it’s a fascinating class that ticks many of the boxes
|
||
I look for in a character. I love characters with options, that require a bit of
|
||
mastery to play. Many characters I like the most are multi-classed, mixing
|
||
spellcasting with melee combat. Some classes, though, provide all this
|
||
out-of-the-box. From the core book, both cleric and druid satisfy my demands. I
|
||
hold, still, that cleric is the most powerful class. I had this belief in D&D
|
||
Third Edition, and I carry it forward into Pathfinder and D&D Fifth Edition.
|
||
That’s a topic for another post, though.</p>
|
||
|
||
<h2 id="concept">Concept</h2>
|
||
|
||
<p>All of my characters come from a concept. Sometimes the concept is really
|
||
straight forward: I want a “realistic” fighter. I want a “proper” Eldritch
|
||
Knight. Sometimes, the concept is more story based, as is the case with this
|
||
druid. I read a story about a moose in Alaska that ate some apples which had
|
||
fermented, and wandered into a town drunk. I thought, “that would make a fun
|
||
animal companion!”, and thus the idea for a druid. The full backstory for the
|
||
character will be around here somewhere. For now, I’ll spend the rest of this
|
||
post focusing on the build.</p>
|
||
|
||
<h2 id="build">Build</h2>
|
||
|
||
<p>Drunk moose. Drunk… spirit moose! OK, now we’re getting somewhere. As I
|
||
fleshed out the story, and spoke with a friend about druid, I liked the idea of
|
||
dipping one level in barbarian, then continuing with druid. That one level gets
|
||
me quite a bit: d12 hit dice (and max at first level!); +1 BAB; +10 movement
|
||
speed; and rage. The biggest downside is a delay in spellcasting, but I think
|
||
it’s a fair trade-off. Considering the build is equally focused on spellcasting
|
||
and melee combat, the rage will provide an additional resource where spells and
|
||
standard attacks may not be sufficient. Obviously, druid will be our favored
|
||
class.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Barbarian 1, Druid X
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="skills">Skills</h2>
|
||
|
||
<p>Druid’s aren’t reknown for being particularly skillful, but they get some great
|
||
class skills. Of note, we get Handle Animal, Heal, Knowledge(Nature),
|
||
Perception, and Survival. At 4+INT skill points, we can reliably grab most of
|
||
these. Throw a point of two into Fly, Climb, and Swim, and between having a
|
||
great strength, and wild shape, we can deal with whatever obstacles those skills
|
||
require.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Handle Animal
|
||
Heal
|
||
Knowledge (Nature)
|
||
Perception
|
||
Survival
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="race">Race</h2>
|
||
|
||
<p>Pathfinder has no shortage of races to choose from. For most of my builds, I try
|
||
to stick to the “basics” provided in the Core Rulebook, but I also allow myself
|
||
the Advanced Race Guide races. For this build, though, mostly due to the
|
||
backstory/concept, I went human. We’ll opt for a bonus HP each level in druid,
|
||
for our favored class bonus.</p>
|
||
|
||
<h2 id="feats">Feats</h2>
|
||
|
||
<p>Human gets a bonus first level feat, then all characters get a first level feat.
|
||
I tend to make characters for whatever level our campaign is at, and for now
|
||
that’s 8th level. That gives me five feats total. At fifth level, I’m taking
|
||
Natural Spell. Since I’m a melee bruiser, I’m interested in Power Attack, Vital
|
||
Strike, Toughness, and Powerful Shape, but I can’t get the last one just yet.
|
||
Druids are fantastic summoners, and it’s very tempting to pick up Augmented
|
||
Summons. For this build, though, it’s a two feat investment for a strategy I
|
||
won’t be using much. For first level, I went with Toughness and Power Attack. As
|
||
a first level barbarian, those two feats give me a lot of staying power. As a
|
||
druid, my BAB won’t progress as strongly, but in wild shape it can give me a lot
|
||
of damage. Combined with vital strike, certain shapes will give me a single,
|
||
“two-handed” attack for a significant amount of damage at a good attack bonus.</p>
|
||
|
||
<p>Thematically, I’ve opted for the feat Spirit’s Gift. It fits my drunken spirit
|
||
moose concept perfectly.</p>
|
||
|
||
<p>That leaves level 7. The aforementioned vital strike could be a great option.
|
||
There’s also furious focus: for a single, two-handed power attack, remove the
|
||
power attack penalty. Since we’ll be taking advantage of our animal companion,
|
||
there’s also the option for teamwork feats. Animal companions get feats, too,
|
||
and there are a few in particular that would work very well: Shake It Off would
|
||
give us both +1 on all saves; Improved Spell Sharing would let me share buffs
|
||
better; and then there are the charges. These interested me. I need to step back
|
||
briefly to consider the animal companion, so we’ll leave our feats in an
|
||
undecided state for now.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Bonus: Toughness
|
||
Lvl 1: Power Attack
|
||
Lvl 3: Spirit's Gift
|
||
Lvl 5: Natural Spell
|
||
Lvl 7: ???
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="animal-companion">Animal Companion</h2>
|
||
|
||
<p>By now it should be clear this is not really a min-max guide. There are plenty
|
||
of guides that exist already for that sort of build; I’ll link a few I’ve
|
||
referenced below. In those guides, animal companion choses are pretty clear:
|
||
take a wolf/dire wolf if you want to be a trip artist; take a big cat for
|
||
superior damage; take one of any number of dinosaurs for superior options. No
|
||
where is a moose mentioned, because they’re not “optimal.” That’s fine. I don’t
|
||
want optimal, I want drunken spirit moose.</p>
|
||
|
||
<p>Moosen start off pretty bland. They don’t get any special attacks, they’re
|
||
medium size, an average AC, an average attack, and relatively low damage. At
|
||
level 7, they get significantly better: large size; better AC; better damage,
|
||
and powerful charge. For this build, I’ll focus on charging. Both I and the
|
||
moose will charge hard into whatever enemy we want to focus first. With some of
|
||
the team work feats alluded to above, we can emphasize significant bonuses and
|
||
improvements to charging.</p>
|
||
|
||
<p>If I wanted to change this to a more optimal build, I’d probably go for an axe
|
||
beak. It could be the in-universe thematic equivalent of a moose. Qwark.</p>
|
||
|
||
<h2 id="feats-completed-this-time">Feats, Completed This Time</h2>
|
||
|
||
<p>In addition to my feats, I get feats for my animal companion. At character level
|
||
8, I’m a 7th level druid, which means my animal companion gets 3 feats, with a
|
||
4th coming next level. The charge feats I’m considering would be 3 feats
|
||
minimum: 2 teamwork feats, and then Coordinated Charge. The requirements for
|
||
Coordinated Charge are 2 teamwork feats, and a BAB +10. My animal companion, of
|
||
any flavor, won’t have that until level 17! That’s a bit of a downer, but there
|
||
are some other interesting ones that lead up to it nicely. Distracting Charge
|
||
would give either my moose or me a +2 to hit against the target of a charge.
|
||
Intercept Charge could provide significant defensive benefits, though neither my
|
||
moose nor I are particularly defensive oriented. Shake It Off would give Moose
|
||
and Me +1 on all saves while we’re adjacent. And Improved Spell Sharing helps
|
||
with buffing. The one thing about ISS though is the requirements are a bit…
|
||
odd. It <em>seems</em> to be intended for use by a class that can share their teamwork
|
||
feats, but I think a discussion with a DM can resolve the issue.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Druid:
|
||
- Bonus: Toughness
|
||
- Lvl 1: Power Attack
|
||
- Lvl 3: Spirit's Gift
|
||
- Lvl 5: Natural Spell
|
||
- Lvl 7: Improved Spell Sharing
|
||
|
||
Moose:
|
||
- Lvl 1: Toughness
|
||
- Lvl 2: Weapon Focus (Gore)
|
||
- Lvl 5: Improved Spell Sharing
|
||
</code></pre></div></div>
|
||
|
||
<p>Looking forward slightly, next level we each get another feat.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Druid:
|
||
- Lvl 9: Powerful Shape
|
||
|
||
Moose:
|
||
- Lvl 8: Improved Natural Attack (Gore)
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="gear">Gear</h2>
|
||
|
||
<p>Since we’re wild-shaping, we don’t need to worry <em>too</em> much about armor and
|
||
weapon. We can get the benefits of a shield, so we’ll want a decent one of
|
||
those. Ring of Protection (+1) is a standard, and I’ll also opt for a Cloak of
|
||
Resistance (+2). We’re a bit MAD (multi-attribute dependent), wanting high
|
||
strength and wisdom primarily, with good dexterity and constitution still. I’ll
|
||
take a Headband of Inspired Wisdom (+2), and a Belt of Physical Prowess
|
||
(Strength and Constitution +2). In exchange for a weapon, I’ll pick up an Amulet
|
||
of Mighty Fists (+1). Finally, because wild shape is so important, we’ll pick up
|
||
Druid Vestments, which give us an extra wild shape use per day.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Headband of Inspired Wisdom, +2
|
||
Amulet of Mighty Fists, +1
|
||
Cloak of Resistance, +2
|
||
Druid Vestments
|
||
Belt of Physical Prowess (STR/CON), +2
|
||
Ring of Protection, +1
|
||
Heavy Wooden Shield, +1
|
||
Scimitar
|
||
</code></pre></div></div>
|
||
|
||
<p>I have a mundane item pack I generally pick up as well, which includes things
|
||
like a mirror, fishing hooks, and the like. Normally it’s all in a Handy
|
||
Haversack, but since I’m shapshifting so often, for the druid that’ll shift to a
|
||
Polymorphic Pouch.</p>
|
||
|
||
<p>Also, a Ring of Eloquence is a solid buy, to allow for discussion which
|
||
shapeshifted.</p>
|
||
|
||
<h2 id="spells">Spells</h2>
|
||
|
||
<p>Druids have a <em>lot</em> of spell options. We’re a melee fighter, so many of our
|
||
spells will focus on buffing, debuffing, and control. We can also include some
|
||
out-of-combat utility. There are too many options to list, and again, guides
|
||
already exist that go through every spell and analyze them. Here are the spells
|
||
that I’ll consider regularly:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Level 1:
|
||
- Entangle [Control]
|
||
- Faerie Fire [Control][Debuff]
|
||
- Frostbite [Buff][Damage][Debuff]
|
||
- Goodberry [Utility]
|
||
- Longstrider [Buff]
|
||
- Magic Fang [Buff]
|
||
- Mudball [Damage][Debuff]
|
||
- Thorn Javelin [Damage][Debuff]
|
||
- Thunderstomp [Control][Debuff]
|
||
|
||
Level 2:
|
||
- Barkskin [Buff]
|
||
- Lockjaw [Buff][Control]
|
||
- Natural Rhythm [Buff][Damage]
|
||
- Resist Energy [Buff]
|
||
- Sickening Entanglement [Control][Debuff]
|
||
- Stone Call [Damage][Debuff]
|
||
- Vine Strike [Control][Damage][Debuff]
|
||
- Whip of Spiders [Damage][Debuff]
|
||
- Wilderness Soldiers [Control][Damage]
|
||
|
||
Level 3:
|
||
- Call Lightning [Damage]
|
||
- Earth Tremor [Damage][Control][Debuff]
|
||
- Fey Form I [Utility]
|
||
- Fungal Infestation [Debuff]
|
||
- Greater Magic Fang [Buff][Damage]
|
||
- Greater Thunderstomp [Control][Debuff]
|
||
- Spike Growth [Control][Damage][Debuff]
|
||
- Thorny Entanglement [Control][Damage]
|
||
- Vermin Shape I [Utility]
|
||
|
||
Level 4:
|
||
- Aspect of the Stag [Buff][Damage]
|
||
- Cape of Wasps [Buff][Damage][Debuff]
|
||
- Echolocation [Buff]
|
||
- Freedom of Movement [Buff]
|
||
- Grove of Respite [Utility]
|
||
- Slowing Mud [Control][Debuff]
|
||
- Spike Stones [Control][Damage][Debuff]
|
||
- Strong Jaw [Buff][Damage]
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="gameplay">Gameplay</h2>
|
||
|
||
<p>I’ve never played this build! I’m sure it could use some modifications. The
|
||
emphasis on choosing a moose over other animal companions could be a serious
|
||
hinderance. I think the general play would go like this: buff self, sharing the
|
||
buffs with my animal companion; enter melee combat, preferably by charging at a
|
||
target with my animal companion; throw around control and debuff spells as
|
||
necessary.</p>
|
||
|
||
<p>This is very much a first draft, but I think it could be a fun one!</p>
|
||
|
||
<h1 id="sources">Sources</h1>
|
||
|
||
<ul>
|
||
<li><a href="https://www.d20pfsrd.com/">Pathfinder SRD</a></li>
|
||
<li><a href="https://docs.google.com/document/d/1PXamF43boZgYtCUlyJAMojfrPaAdYyjPOaGOo1vfqdM/edit#heading=h.nxj7sifd7tvs">Prometheus Guide to the Druid</a></li>
|
||
<li><a href="https://docs.google.com/Doc?docid=0AcNyxDTKvAmqZGRtZzhzdjZfNDZnNHpzcmdodA&hl=en">Treantmonk’s Guide to Druids</a></li>
|
||
</ul>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Let’s Make a Druid]]></summary></entry><entry><title type="html">Brief Exploration of Syncthing</title><link href="https://www.theinternetvagabond.com/2020/07/19/syncthing-part-1.html" rel="alternate" type="text/html" title="Brief Exploration of Syncthing" /><published>2020-07-19T00:00:00-05:00</published><updated>2020-07-19T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2020/07/19/syncthing-part-1</id><content type="html" xml:base="https://www.theinternetvagabond.com/2020/07/19/syncthing-part-1.html"><![CDATA[<h1 id="a-brief-exploration-of-syncthing">A Brief Exploration of Syncthing</h1>
|
||
|
||
<p>Syncthing is an incredible tool. Many days past I stumbled upon it as an
|
||
alternative to Dropbox. It’s different from Dropbox, or similar services,
|
||
though, in a number of ways. For one, Syncthing is a peer-to-peer
|
||
synchronization program, whereas Dropbox is a centralized file storage and
|
||
synchronization service. When you setup and use Syncthing, the files only ever
|
||
live on whichever peers you setup. This is different from Dropbox, or similar
|
||
services, where files live on their servers. There’s more to it, and for all the
|
||
details, the <a href="https://syncthing.net/">Syncthing</a> website provides plentiful
|
||
information.</p>
|
||
|
||
<p>In this post, I want to discuss how to setup Syncthing, and some use-cases for
|
||
it. In future posts, I want to explore setting up custom relay servers, and
|
||
perhaps some more use-cases as well.</p>
|
||
|
||
<h2 id="setup">Setup</h2>
|
||
|
||
<p>Install the appropriate package for your operating system. Syncthing is
|
||
available on just about every OS out there. Syncthing already has <a href="https://docs.syncthing.net/intro/getting-started.html">thorough
|
||
installation
|
||
documentation</a>, so I
|
||
won’t re-write what’s already available. I will discuss how I setup my Syncthing
|
||
instead.</p>
|
||
|
||
<p>On my desktop, running Arch Linux, I installed the necessary package:</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo pacman -S syncthing
|
||
</code></pre></div></div>
|
||
|
||
<p>When I was running Gnome, I also installed <code class="language-plaintext highlighter-rouge">syncthing-gtk</code> to provide a tray
|
||
icon. After my switch to KDE Plasma, the Syncthing application displays a tray
|
||
icon by default, and so I removed the now unnecessary package. When I had a
|
||
Windows partition, I also installed <code class="language-plaintext highlighter-rouge">SyncTrazor</code> for a tray icon.</p>
|
||
|
||
<p>The second device of choice is my Android phone, where I installed the Syncthing
|
||
app (helpfully available on F-Droid too!).</p>
|
||
|
||
<p>With packages installed on both devices, I then followed the guide. All things
|
||
considered, it was a very easy process.</p>
|
||
|
||
<h2 id="use-case-music">Use-Case: Music</h2>
|
||
|
||
<p>One of the most immediate uses I had for Syncthing was music. I finally decided
|
||
to drop all streaming services, and start buying my music. As a result, I
|
||
suddenly had a growing music library available on my desktop. This was the
|
||
primary reason I decided to try Syncthing: to get music files from my desktop
|
||
onto my phone. After setup, syncing was a breeze. The new problem became space:
|
||
I have quite a bit of music now, and I don’t necessarily want all of it on my
|
||
phone. Conveniently, Syncthing allows for creating a <code class="language-plaintext highlighter-rouge">.stignore</code> file, which
|
||
tells Syncthing which files to exclude from synchronizing. The
|
||
<a href="https://docs.syncthing.net/users/ignoring.html">documentation</a> provides a great
|
||
breakdown of available options. One challenge is that the <code class="language-plaintext highlighter-rouge">.stignore</code> file is
|
||
<strong>not</strong> synchronized. To get around this, I setup my ignore file to include a
|
||
second file, which <em>does</em> get synchronized. That file lists every directory and
|
||
subdirectory in my music folder, and then ends with <code class="language-plaintext highlighter-rouge">**/*</code>. For any directory or
|
||
subdirectory (generally artist and album, respectively) that I want to sync, I
|
||
place a <code class="language-plaintext highlighter-rouge">!</code> before it. The eventual plan is to automatically update the file
|
||
whenever new music is added to the directory. When I get around to that, I’ll
|
||
almost certainly post about it.</p>
|
||
|
||
<h2 id="use-case-notes--to-do">Use-Case: Notes / To-Do</h2>
|
||
|
||
<p>Not long after music, I started looking around for a good to-do / note-taking
|
||
app for my phone. I wanted an application that was simple, without bells and
|
||
whistles. I tried a few before settling on
|
||
<a href="https://gsantner.net/project/markor.html">Markor</a>. This app is wonderful.
|
||
Everything I want, with almost nothing I don’t. It’s open-source, actively
|
||
developed, available on F-Droid; it works on local files, and <em>that’s it</em>. I
|
||
started using it to track my gym workouts, make grocery lists, or track
|
||
suggestions for media. As long as I was on wi-fi, those files were waiting for
|
||
me on my desktop. Very convenient, simple, and effective.</p>
|
||
|
||
<h2 id="use-case-pictures">Use-Case: Pictures</h2>
|
||
|
||
<p>Another straight-forward use case: synchronizing pictures. As I continue to
|
||
“de-Google” my life, I needed a replacement for Google Photos. I have a Flickr,
|
||
but I’m not certain that I’ll hang onto it. For now, I just need a simple way to
|
||
synchronize pictures between my phone and my desktop, and Syncthing provides
|
||
that.</p>
|
||
|
||
<h1 id="100-days">100 Days</h1>
|
||
<p>I’m writing this post as part of
|
||
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
|
||
writing habits. Perhaps you could do the same.</p>
|
||
|
||
<h1 id="sources">Sources</h1>
|
||
|
||
<ul>
|
||
<li><a href="https://syncthing.net/">Syncthing</a></li>
|
||
<li><a href="https://github.com/canton7/SyncTrayzor">SyncTrayzor</a></li>
|
||
<li><a href="https://gsantner.net/project/markor.html">Markor</a></li>
|
||
</ul>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[A Brief Exploration of Syncthing]]></summary></entry><entry><title type="html">Pathfinder One-Shot: The Crater of Igrevor</title><link href="https://www.theinternetvagabond.com/2020/07/10/crater-of-igrevor.html" rel="alternate" type="text/html" title="Pathfinder One-Shot: The Crater of Igrevor" /><published>2020-07-10T00:00:00-05:00</published><updated>2020-07-10T00:00:00-05:00</updated><id>https://www.theinternetvagabond.com/2020/07/10/crater-of-igrevor</id><content type="html" xml:base="https://www.theinternetvagabond.com/2020/07/10/crater-of-igrevor.html"><![CDATA[<h1 id="preamble-to-the-pathfinder">Preamble to the Pathfinder</h1>
|
||
|
||
<p>For many years now, I’ve been playing in several Pathfinder games. I very much
|
||
enjoy the system, if only because I love options in roleplaying games. During
|
||
the COVID-19 pandemic and lockdown, in addition to my weekly game, a second
|
||
group started a weekly game. This one, unlike the campaign I’ve been playing in
|
||
for the last 6 years (we’re level 9), sees the characters level up after
|
||
each adventure, and is meant more as a quick and fun string of one-shots. After
|
||
a few weeks of Lizzie starting and running the “campaign,” I volunteered to run.
|
||
This post covers my one-shot <code class="language-plaintext highlighter-rouge">The crater of Igrevor</code>.</p>
|
||
|
||
<h2 id="background">Background</h2>
|
||
|
||
<p>Before hopping in, a little background. The party at this point had gone on
|
||
several adventures and made a name for themselves in a relatively small town.
|
||
They decided to settle down, and because the details of this town weren’t known
|
||
at the time, all the players collaborated to establish the Town of Ulriksted. I
|
||
took some liberties with the what we established, and decided that a powerful
|
||
wizard has also moved to the town, seeing it as an opportunity for trade, but
|
||
also a good place for a fancy tower. Wizards love their towers. Thus, Igrevor
|
||
was born.</p>
|
||
|
||
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Igrevor Thel'lessell
|
||
|
||
Lawful Neutral Elf
|
||
|
||
Cleric of Abadar: 3 // Wizard (Conjurer: Teleportation): 3 // Mystic Theurge: 10
|
||
</code></pre></div></div>
|
||
|
||
<p>As a follower of Abadar, Igrevor is very interested in trade and travel, both on
|
||
the material and other planes. His arcane studies also focus on extraplanar
|
||
travel and research. And because I’ve always been interested in the <code class="language-plaintext highlighter-rouge">Mystic
|
||
Theurge</code> class, I decided this was a perfect opportunity to make use of it. As a
|
||
trader, I focused his build on several magical crafting feats: wonderous items,
|
||
magical arms and armor, and constructs.</p>
|
||
|
||
<p>Igrevor’s tower sits to the north of town, along the river which flows through
|
||
Ulriksted. He offers his arcane services to the town, as well as crafting and
|
||
selling his magical wares to adventurers when they travel through. Unfortunately
|
||
for him, a powerful <a href="https://www.d20pfsrd.com/bestiary/monster-listings/monstrous-humanoids/hag/hag-night">Night
|
||
Hag</a>
|
||
has taken an interest in him, and has been haunting his dreams for a while now.
|
||
Being a powerful wizard, he’s been able to defend himself and his tower
|
||
accordingly, but the Hag has decided to get some assistance. You see, Igrevor
|
||
has established a powerful teleportation and planar travel system within his
|
||
tower, albeit a well protected one. The Hag, studying this herself, conspired to
|
||
exploit this with the help of a several extraplanar allies: Several
|
||
<a href="https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/xill">Xill</a>
|
||
raiding parties, to which she provided
|
||
<a href="https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/nightmare/">Nightmare</a>
|
||
mounts; and two <a href="https://www.d20pfsrd.com/bestiary/monster-listings/dragons/dragon/-primal-umbral/umbral-dragon-juvenile">Umbral
|
||
Dragon</a>
|
||
brothers.</p>
|
||
|
||
<h1 id="the-crater-of-igrevor">The Crater of Igrevor</h1>
|
||
|
||
<blockquote>
|
||
<p><em>While enjoying a pint and a quiet night at Tuckleberry’s tavern, The Leaf and
|
||
Lyre, the party is rudely interrupted by the sound of a massive explosion,
|
||
north of town. As they race outside, they see a swirling vortex of colors
|
||
stretching high into the sky, roughly where Igrevor’s tower is. Screams shortly
|
||
follow, and as the party pulls their attention closer, they see looming shapes
|
||
approaching the town.</em></p>
|
||
</blockquote>
|
||
|
||
<p><strong>Encounter: Xill Raiding Party</strong></p>
|
||
|
||
<blockquote>
|
||
<p><em>Four-armed, flame-red insect-like humanoid creatures, riding upon steeds of
|
||
smoke and fire</em></p>
|
||
</blockquote>
|
||
|
||
<p>The first encounter is relatively easy for the party, considering at this point
|
||
they’re level 9. There are 4 Xill, each riding a Nightmare. Each has a special
|
||
elemental key, tied to each of the four elemental planes: earth, air, water, and
|
||
fire. The last Xill looted also has a note, written in Infernal: “These keys
|
||
will keep the portals open, and the tower inaccessible. Once you have your new
|
||
hosts, return to the Ethereal plane. DO NOT LOSE THEM!” Whoops.</p>
|
||
|
||
<blockquote>
|
||
<p><em>As you move further, the party can clearly see the vortex of colors that now
|
||
envelop Igrevor’s tower. A chaotic flow of earth, wind, water and fire create an
|
||
impenetrable globe around what remains of the upper half of the tower, which
|
||
hangs unsupported in the sky. Beneath it, a crater is all that remains of the
|
||
bottom of the tower. As the party draws closer, you can make out 4 shimmering
|
||
portals, at each of the cardinal directions. From each, a distinct color and
|
||
element can be seen: north, a verdant green and stony landscape identifies a
|
||
portal to the plane of earth; south, a clear portal surrounded by gusts of
|
||
strong winds indicate the portal to the plane of air; to the west, a fiery
|
||
hellscape indicates the portal to the plane of fire; and to the east, a flood of
|
||
water flowing from the portal to the plane of water. Where the 4 regions meet,
|
||
the elements clash and swirl about, surging upward, creating the sphere around
|
||
the tower. As the party takes in the scene, they suddenly receive a Sending from
|
||
Igrevor: <strong>In dire need of assistance. Tower under attack. Must close portals.
|
||
Please hurry! WILL REWARD! Use teleportation circle in foyer; top of tower</strong></em></p>
|
||
</blockquote>
|
||
|
||
<p>At this point, I also introduce a small mechanic related to the portals: Each
|
||
elemental portal gives the PCs a boon:</p>
|
||
|
||
<ul>
|
||
<li>Plane of Earth: DR 1/- for each elemental planar portal open</li>
|
||
<li>Plane of Fire: Aura, 5ft: 1 fire damage for each elemental planar portal open</li>
|
||
<li>Plane of Water: Fast Healing 1 for each elemental planar portal open</li>
|
||
<li>Plane of Air: Bonus 1ft. Movement speed for each elemental planar portal open</li>
|
||
</ul>
|
||
|
||
<p>Each of these boons is removed as soon an the associated portal is closed.</p>
|
||
|
||
<p><strong>Puzzle: The Elemental Portals</strong></p>
|
||
|
||
<p>To reach the tower, the party much figure out a way to close the portals.
|
||
Initially, each portal claims a quarter of the ground around the portal. Closing
|
||
a portal causes the adjacent portals to claim the ground, increasing their power
|
||
and decreasing the power of the opposite portal. If coordinated, it should be
|
||
possible for the party to close all portals simultaneously.</p>
|
||
|
||
<blockquote>
|
||
<p>Earth Portal</p>
|
||
|
||
<ul>
|
||
<li>Trying to close the earth portal causes vines to sprout. If fire is still
|
||
open, the fire aura burns away the vines before they can entangle.</li>
|
||
<li>Closing the earth portal causes the fire and water portals to increase in
|
||
power, and the air portal to decrease in power (modified DC)</li>
|
||
<li>Entangle, DC 15: Thorny vines restrict movement and deal damage. Each round,
|
||
any creature trying to move through the area must make a reflex save or become
|
||
entangled, reducing movement speed to 10 feet and dealing 1d6 acid damage.
|
||
<ul>
|
||
<li>If the Fire or Water portal has been closed, the DC increases by 2, to a
|
||
maximum of 19 if both portals are closed.</li>
|
||
<li>If the Air portal has been closed, the DC decreases by 2</li>
|
||
<li>If a creature enters the area with the fire aura, the entangle checks
|
||
automatically succeed: The aura from the plane of wire withers the vines as
|
||
they try to wrap around you.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p>Fire Portal</p>
|
||
<ul>
|
||
<li>Trying to close the fire portal causes intense heat waves. If water is still
|
||
open, the aura cools the temperature</li>
|
||
<li>Closing the fire portal causes earth and air to increase in power, and the
|
||
water portal to decrease in power (modified DC)</li>
|
||
<li>Heat Waves, DC 15: Intense heat radiating from the portal causes damage and
|
||
fatigue. Each round, any creature trying to move through the area must make a
|
||
fortitude save or become fatigued and take 1d6 fire damage.
|
||
<ul>
|
||
<li>If the Earth or Wind portal has been closed, the DC increases by 2, to a
|
||
maximum of 19 if both portals are closed</li>
|
||
<li>If the water portal has been closed, the DC decreases by 2</li>
|
||
<li>If a creature enters the area with the water aura, the fatigue checks
|
||
automatically succeed: The aura for the plane of water cools the area,
|
||
keeping the heat at bay.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p>Water Portal</p>
|
||
<ul>
|
||
<li>Trying to close the water portal causes buffeting waves and sheets of rain to
|
||
disorient and hamper the player. If the air portal is still open, the aura
|
||
keeps visions clear.</li>
|
||
<li>Closing the water portal causes the earth and air portals to increase in
|
||
power, and the fire portal to decrease in power (modified DC)</li>
|
||
<li>Stormy Weather, DC 15: Torrential rain and slick ground causes difficult
|
||
terrain and disorientation. Each round, any creature trying to move through
|
||
the area must make a reflex save or fall prone, and a will save or become
|
||
disoriented, moving in a random direction (Roll 1d4: 1, move in intended
|
||
direction; 2, move to the left; 3, move to the right; 4, move backwards)
|
||
<ul>
|
||
<li>If the Earth or Wind portal has been closed, the DC increases by 2, to a
|
||
maximum of 19 if both portals are closed</li>
|
||
<li>If the earth portal has been closed, the DC decreases by 2</li>
|
||
<li>If a creature enters the area with the air aura, there is no risk of
|
||
disorientation. If a creature enters the area with the earth aura, there is
|
||
no risk of falling.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p>Air Portal</p>
|
||
<ul>
|
||
<li>Trying to close the air portal causes strong winds and electrical shocks. If
|
||
the earth portal is still open, it helps to resist the winds.</li>
|
||
<li>Closing the air portal causes the fire and water portals to increase in power,
|
||
and the earth portal to decrease in power (modified DC)</li>
|
||
<li>Tornado, DC 15: Strong winds buffet and shock. Each round, any creature trying
|
||
to move through the area must make a fortitude save or be blown 10 ft away
|
||
from the portal, and take 1d6 electricity damage.
|
||
<ul>
|
||
<li>If the water or fire portal has been closed, the DC increases by 2, to a
|
||
maximum of 19 if both portals are closed</li>
|
||
<li>If the earth portal has been closed, the DC decreases by 2</li>
|
||
<li>If a creature enters the area with the earth aura, the push checks
|
||
automatically succeed: The earth aura grounds you, giving you resistance to
|
||
the forceful winds</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><em>As the last portal closes, the last remnants of the elemental sphere around the
|
||
tower dissipate. The tower floats silently above the group, with ruins frozen in
|
||
the air hanging beneath it. The closest pieces, which could be used to climb
|
||
into the tower proper, are 20 feet in the air.</em></p>
|
||
</blockquote>
|
||
|
||
<p>With the four elemental portals closed, the tower is now accessible. The party
|
||
must somehow ascend 20 feet into the air to get to the lowest ruins, and then a
|
||
Climb (DC 10) check to get to the rest of the tower, 10 feet further up. This,
|
||
like a few other obstacles, was a way to force the party to use resources. The
|
||
sorcerer of the group knows fly, and so this was a way to get him to use a
|
||
spell. The way I tend to run many of my games is to try and force my players to
|
||
think about their resources, and manage them accordingly. To be fair, I try to
|
||
give alternatives. For example, the party could use rope to climb up. I think in
|
||
this case, they used either <code class="language-plaintext highlighter-rouge">Mage Hand</code> or a familiar to loop rope around some
|
||
rubble, then the fighter climbed up and attached a better rope, and they were
|
||
able to ascend without expending many resources at all.</p>
|
||
|
||
<blockquote>
|
||
<p><em>Once inside, there is a corkscrew stairwell along the walls of the tower,
|
||
ascending roughly another 20 feet. At the top, light and shadows play on the
|
||
wall near where the stairs enter a new floor.</em></p>
|
||
</blockquote>
|
||
|
||
<p>If the party is perceptive or stealthy enough, they can notice several figures
|
||
waiting on the next floor, as well as get the drop on them!</p>
|
||
|
||
<p><strong>Encounter: Xill and Night Hag</strong></p>
|
||
|
||
<blockquote>
|
||
<p><em>A tall, gaunt figure with long limbs stands with two more Xill. Her skin
|
||
stretches tightly across her bones, and a grin stretches across her nightmarish
|
||
visage. Claws and fangs betray her intent.</em></p>
|
||
</blockquote>
|
||
|
||
<p>Here, again, I tried to force a change of tactics. The room the party fights in
|
||
is only 20 by 20. The usual <code class="language-plaintext highlighter-rouge">Fireball</code> approach would be dangerous. The party
|
||
was clever and perceptive, though, and the sorcerer was able to approach the
|
||
room invisibly, and place a <code class="language-plaintext highlighter-rouge">Fireball</code> in a way so as to kill the Xill. The Hag
|
||
is immune to fire, conveniently, and so the party had to deal with her some
|
||
other way. Also, she can cast <code class="language-plaintext highlighter-rouge">Invisibility</code> at will, which helper her get the
|
||
drop on the party. The sorcerer <code class="language-plaintext highlighter-rouge">Fireball</code>’s the room, ducking down the
|
||
stairwell to avoid the blast. While no one can see her, she goes invisible. The
|
||
party doesn’t see any threats, enters the room, and she pounces. Hag’s are great
|
||
opponents. They have a great kit for DMs to play with; great defenses, including
|
||
damage reduction, a solid set of immunities, and spell resistance 24! The lore
|
||
of hags, as extraplanar scavengers and traders, is also fascinating. I’d like to
|
||
use one in a future campaign, especially an evil campaign, and have this be a
|
||
companion NPC or something.</p>
|
||
|
||
<p>With this encounter completed, the party stands in the aforementioned foyer, and
|
||
on the ground they see an arcane circle: the teleportation circle.</p>
|
||
|
||
<blockquote>
|
||
<p><em>The corpse of the night hag fades into shadow, as it disappears from the
|
||
material plane. With the room now secured, you see arcane symbols inscribed in
|
||
the center of the room. This must be the teleportation circle Igrevor mentioned
|
||
in his sending. As you step into the circle, you find yourself transported to a
|
||
large, cylindrical room. An inner wall breaks at four equidistant places,
|
||
revealing an outer wall, and a shimmering pool of light in a small alcove.</em></p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><em>Exploring the space, the inner room has the teleportation circle, and many
|
||
arcane symbols drawn into the stone and the walls.</em> A Knowledge(Arcana) or
|
||
Spellcraft, DC 15, reveals the symbols to be protections related to
|
||
teleportation, plane shifting, and the like. <em>Checking the outer ring, you find
|
||
the four aforementioned pools, as well as a wall of force blocking a hallway.</em></p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><em>Oh a whim, you glance up, and see two spheres circling the room. One is pure
|
||
white, and the other black. They maintain a perfect distance from each other.</em> A
|
||
Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
|
||
and negative energy, respectively. <em>You now notice, as the spheres pass by the
|
||
alcoves, the pools briefly shift towards the color of the sphere, and the wall
|
||
of force slightly…</em></p>
|
||
</blockquote>
|
||
|
||
<p>Or, at least, that was the original intention. As so often happens, I wasn’t
|
||
quite satisfied with this part of the original adventure, and modified this it
|
||
slightly. Originally, the party was going to fight a “Planar Scion.” Initially,
|
||
the party would find two humanoid energy beings, one made of positive energy and
|
||
one made of negative energy. The beings would be indestructible, and the party
|
||
would have to merge them to create a single being, which was now vulnerable.
|
||
But, I couldn’t figure out a good way to convey this information, while making
|
||
the combat engaging, in the time I had, so I scrapped it for a puzzle instead.</p>
|
||
|
||
<p><strong>Puzzle: Spheres and Pools</strong></p>
|
||
|
||
<blockquote>
|
||
<p><em>As you navigate the room, you find the hallway leading from this room, and an
|
||
opaque barrier blocking the way forward.</em></p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><em>Oh a whim, you glance up, and see four spheres circling the room. Two are pure
|
||
white, and the others black. They maintain a perfect distance from each other.</em> A
|
||
Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
|
||
and negative energy, respectively. <em>You now notice, as the spheres pass by the
|
||
alcoves, the pools briefly shift towards the color of the sphere, and the
|
||
barrier slightly dissipates</em></p>
|
||
</blockquote>
|
||
|
||
<p>The only way through this barrier is to stop the rotating spheres. As alluded to
|
||
in the descriptive text, the pools and the spheres are related. As the spheres
|
||
pass over the pools, they shift the pools from clear towards the color of the
|
||
sphere, and I added that the spheres appear to slow down very slightly. The
|
||
party had to use positive and negative energy sources to shift the pools to the
|
||
appropriate attunement, which stopped the spheres, and opened the barrier.</p>
|
||
|
||
<p><strong>Final Encounter: Umbral Dragon</strong></p>
|
||
|
||
<blockquote>
|
||
<p><em>As the spheres stop, above the pools, they descend into the pools, and
|
||
dissolve the barrier blocking the way out of the room. Moving through the
|
||
hallway, you come to a large meeting hall. An oak table, which could almost
|
||
seat the entire town of Ulriksted, sits in the middle of the hall, with chairs
|
||
and tables strewn about. Making your way into hall, you see Igrevor to your
|
||
right, as he finishes casting a spell and striking down one of two juvenile
|
||
dragons standing opposite him. He turns to you, and speaks, “The Lords of
|
||
Ulriksted! And just in time! I am sorry, friends, I cannot assist you further;
|
||
one of these beasts took most of my arsenal to defeat. I beg your assistance!”
|
||
As he finishes, you see a sphere arise around him, and him kneel to catch his
|
||
breath.</em></p>
|
||
</blockquote>
|
||
|
||
<p>The boss battle! The juvenile Umbral Dragon! I toned down the beast a bit, but I
|
||
definitely shouldn’t have. It was a good fight, and the barbarian did not hold
|
||
back. As the party defeated them, Igrevor thanked them, and their reward was any
|
||
single magical item that he can make. In addition, because I’m prone to giving
|
||
my PCs overpowered items, I allowed each of them to have an item made from the
|
||
scales of the dragon, which gives them the immunities of the dragon. This turned
|
||
out to be a <em>very</em> powerful option: immune to cold, death effects, negative
|
||
energy, paralysis, sleep.</p>
|
||
|
||
<h1 id="aftermath">Aftermath</h1>
|
||
|
||
<p>I had a lot of fun with this one. The party made their way with through with
|
||
consistent progress, and the boss battle was challenging but not overwhelming. I
|
||
think, if run again, I wouldn’t tone down the boss. I ended up running a
|
||
follow-up adventure, which is currently untitled, but which became a two parter,
|
||
and the driving motivation for my upcoming third adventure. I look forward to
|
||
sharing those as well! Feel free to make use of this adventure in your own
|
||
games!</p>
|
||
|
||
<h1 id="maptools">MapTools</h1>
|
||
|
||
<p>But wait, there’s more! This adventure was my first foray into MapTools, a free
|
||
and open-source virtual table top system. It allows you to create detailed
|
||
maps, add tokens, set sight lines, and much more. You can host a server locally
|
||
that your players can connect to, and they can move things around themselves.
|
||
Or, if you’re a bit lazier like me, you can share your screen on your voice call
|
||
of choice, and just move the tokens for players instead. I had a lot of fun
|
||
crafting Igrevor’s Tower in MapTools, and then sharing that with my players
|
||
during the session. It really made the game more enjoyable, and more immersive
|
||
than just a standard voice-and-video call.</p>
|
||
|
||
<p>The community for the MapTool suite has built a lot of tokens, tile sets, and
|
||
additional assets to really explore and build <em>exactly</em> what you want. I
|
||
certainly made good use of CSP’s Dungeon Geomorphs (available for free directly
|
||
within MapTools, and made by <a href="https://www.crookedstaff.co.uk/">Kristian
|
||
Richards</a>), <a href="https://immortalnights.com/tokensite/">Devin
|
||
Night’s</a> tokens (some of which are
|
||
available for free, but are well worth the price) and Torstan’s Markers and
|
||
Objects (also available directly within MapTools). I’m not sure if the campaign
|
||
will load without those enabled, but for anyone interested, you can find a link
|
||
to the campaign maps for this adventure <a href="https://www.theinternetvagabond.com/src/campaigns/crater_of_igrevor.cmpgn">here (click to download)</a>.</p>
|
||
|
||
<h1 id="100-days">100 Days</h1>
|
||
<p>I’m writing this post as part of
|
||
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
|
||
writing habits. Perhaps you could do the same.</p>
|
||
|
||
<h1 id="sources">Sources</h1>
|
||
|
||
<ul>
|
||
<li><a href="https://www.rptools.net/toolbox/maptool/">MapTools</a></li>
|
||
</ul>]]></content><author><name>Bill Niblock</name></author><summary type="html"><![CDATA[Preamble to the Pathfinder]]></summary></entry></feed> |