West Marches: (Almost) three years later

Way back in the long before, before the world turned into a flaming dumpster fire, I was approached with the chance to do something I’d want to do for a long time: Start up a West Marches server. One thing that had been stopping me was the effort that goes into recruiting players and finding like-minded souls to help GM, but this one would be attached to a stream and existing community.

So… why not?

Two and a half years later we’re planning on winding it down when we hit the three year mark. The players will be hitting level 20 soon, so it feels like a natural time to close shop. I’ve done large scale games before, and one thing has been true with each one: Everything dies, but it’s on you to decide if it’s via entropy or explosions.

Now that we’re approaching the end, I thought I’d write about lessons learned, because boy, I learned a lot. The large games I’d run before had been mostly play-by-post (PBP) and been under the Amber system, which is a completely different animal. They’d also had a more stable player base (again, nature of the community)… and also didn’t happen during a freaking pandemic.

Leveling system

When we started, we gave out XP every month based on how much everyone had chatted. Seemed sensible: It encouraged people to talk to each other, and players who had been around longer would have more XP, which seemed a fair reward for joining earlier. When we added alts, we decided that players could choose how to allocate their XP between their three characters.

Over time, however, level spread became a huge issue. Games would either not make (not enough people with a character at that level available at that time) or people wouldn’t be able to play a character that month (GMs were already spread thin). Some of us found ourselves running double the usual number of games just so people had a chance to play that month. Some players wanted to rush to 20, but found they didn’t have enough fellow players hit the minimum for a game.

In the end, we switched to a banding system: Every character on the server got a set level of XP, leaving us with only three levels to plan for. This made planning so much easier. I could easily plan three encounters without having to worry about scaling. There were always enough PCs bumming around to make games happen.

To be honest, in the future, I probably wouldn’t worry about chat XP, but instead, set a steady rate for leveling (maybe a level every other month?). Or, maybe set milestones, so players can race towards the next level, or choose to screw around at their current level a bit.

Alts

We introduced alts because PF2 had so much stuff coming out (seriously, when we started, the only thing out was the Core Rulebook). Alts allowed people to try out these new classes and races. It also gave people a chance to shake things up, if they were bored of their current character.

There were upsides and downsides to alts, though. Some people loved having more characters, but some really only wanted one. It also meant more characters to remember and engage with, even as a player. I won’t say it was bad, but it’s also something I probably won’t bring into the next server I put together. Instead, I’d rather have a mechanic that allows players to explore different builds if they want, and let people retire characters more often.

Respecs

Respecs became very important on the server as more and more cool stuff came out. There was some initial discussion about how much we should allow, but I was wary of anything that forced the GMs to look over sheets. Admin work can be killer, and looking at sheets can be arduous. So, our only rule was that your history stayed the same, but everything else could change.

This is something I absolutely will be allowing in every server I run. Hell, I’ll probably allow it for every home game: If a big book comes out, feel free to change anything you want. We just have to figure out the meta for it (and the fey are always an excellent excuse).

Time Zones

I don’t know who decided that the earth should be round, but that was a terrible design decision.

I kid, but… it’s also kind of true? Having time zones that are far apart lead to resources being spread thin. It lead to clusters where it was hard to get cross-pollination of players. It lead to hurt feelings. And hey, maybe we were just a weird collection of variables where it didn’t work this time, but worked well for others. If so, awesome! But, in future servers… I’ll probably keep player slots to those who can work with a more limited number of time zones, rather than pushing for 24/7 gaming possibilities.

Establishing jobs and expectations early

Running a West Marches game is absolutely a team effort. Maybe some people make it work with just one leader/GM, but once you hit a critical mass of people, you need people to help you keep it going. At a minimum, you need more GMs (trust me, I was solo GMing the server for a bit, and it was rough). It also helps to have other rules experts who can help make tough calls, and people to help out with the admin work, like looking over sheets.

Balancing this can be tricky, because enthusiasm makes you feel like you can do literally anything. This was especially true during lockdown, because hell, what else were we doing with our lives?

But, even if you’re still not going anywhere [ waves in permanent remote worker ], enthusiasm will eventually wane and become a normal level of interest. If you don’t want to burn out, you have to be reasonable in what you commit to.

I do think we established some good division layer at the top, even if the roles were fuzzy. We each had our own areas of expertise, and big decisions came to a vote. Below that, though, things weren’t quite as clear. I absolutely didn’t want to put any pressure on GMs ever (I was grateful for every game they ran, since that took the pressure off). However, we probably could have put some guidelines out there, like expecting GMs to run a game a month, or something like that, or what time zones people would cover.

Scheduling

We went through a few phases of how we do scheduling, and I’m still convinced that the right solution depends on how many people you’re working with.

Hella old screen shot of polling

When the server was smaller, polling worked great. Toss up some times, have people react if they’re interested. When I started having to make several games out of one poll to get things to work out, we switched to a sign-up sheet. That worked great as well, though sometimes we had to prod to get things to fill up.

Which solution would I use in the future? Eh, hard to say? Calendars are hard. Humanity has been trying to figure them out for 5000 years and still there’s start-ups out there that want to “fix” your schedule.

Will I do it again?

I mean, if you missed the context clues of me saying “next time” over and over, of course I’ll do it again. I loved running a large server and having a chance to see all sorts of groups of people play together. While I also love a dedicated table, it is fun to watch how characters interact in different groups. It’s neat to watch them build relationships outside of their ‘core’ group. And, well, I don’t have enough hours in the day to game with all the people I’d want to game with. And, as a GM, it’s nice to have a simple encounter idea that I can toss out there and see what a round group does with it.

It won’t be attached to a show (while that was fun, it’d be nice to completely control the meta), and it likely will be a smaller crowd (though still big enough so that not everyone can sit at one table at one time). But I’ll absolutely throw my hat into the ring again. I’m just going to need a chance to replenish my energy reserves first.

Adventure Path maps, VTT, and minimizing heartburn

I love Paizo APs. Like, adore them. I think they’re one of the best parts of diving into the Paizo culture: Ready-made adventures with tons of maps, NPCs, creatures, and twists that still give players a huge amount of freedom to do what they want.

The maps, though. Oh lord.

The older APs weren’t built with VTT in mind, so the maps tend to be quirky: Great for print, bad for VTT. Damn near impossible to rip out of a PDF. A grid that doesn’t align to a grid. While the later PF1 APs improved a bit, the earlier ones can be a headache. However, the APs are absolutely worth running, so here’s how I reduce (not obliterate, I’m not a VTT miracle worker) the pain.

Spoiler warning

In order to make a post about old Paizo maps, I have to use old Paizo maps. I’m going to be using the maps from the Council of Thieves AP, since it has some fairly complex maps in it, and it’s what I have on hand. So, mild spoiler warnings for an AP that’s been out for over a decade.

Extract the maps

I’ve tried so many tools for extraction, and if you have one you like better, you do you. The one I tend to come back to, though, is TokenTool from RPG Tools. It’s made for tokens, but you can also use it to get maps out. I’ve tried a bunch of tools, but this is the only one that seems to get the images out without too much struggle.

Step 1: Clear your screen

For some reason, we start with a gear token and a lady doing yoga. Let’s get rid of them (or whatever you were working on previously).

What you see when you load TokenTool

On the right-hand menu, make sure you have “Overlay Options” expanded. Click “Send to back” and deselect “Clip Portrait.”

Correct overlay options…

Next, expand “Portrait Options” and click “Remove Portrait Image.” Bye, yoga lady.

Button for Portrait options

Step 2: Get the maps!

Now, we want to open the PDF you’ll be grabbing maps from. I’ll be honest: This part can be a wee bit clunky, so I recommend putting on a podcast and grabbing all of your maps in one go.

When you open a PDF in TokenTool (under File, or using Ctrl+O), the PDF will appear on in a new window, with two panes: The left-hand pane is the page of the PFD, and the right hand contains all of the images on that page. To get to a new page, scroll over the left-hand pane. No, there’s no jump option (that I could find), so some patience is a virtue here.

Book four opened in TokenTool

Once you get to the page with your map, click on the right map to insert it into the main TokenTool window. Now, this is important: When you export the image, the image will be cropped to what you see in the preview window. So make sure your whole map is showing by scrolling in or out!

A properly scrolled map!

Now, save. And maybe go get the rest of your maps while you’re there, since the PDF window is probably still open.

Upscale!

First, let’s be clear on what “upscaling” is. It’s not just “making the image bigger.” It’s doing so with some intelligence (specifically, Machine Learning). A great recent-ish example of this is the fan-mod for FF7 original, where someone upscaled the textures.

FF7 comparison, via Kotaku

There are many, many tools out there for upscaling. The one I’ll be using is from Icons8, mostly because I can pay $0.20 per image rather than paying a monthly fee. Given that most APs have only a handful of maps, it’s well worth the investment for me.

All you have to do is upload your map, and Icons8 will do the magic! I do recommend upscaling to 4x, since 2x is still a bit too small for most VTTs, if your players like to be zoomed way the heck in.

Left: Original. Right: Upscaled.

Some notes: It’s technology, not magic, so it’s not perfect. The end result for most maps tends to look like someone painted the map with oil paints, which I kind of dig. If it really, really bugs you that the chairs are wonky, at least you have a better image to work from.

That darn grid

Some people aren’t going to like this tip, so I’ll go ahead and put it first: Get the grid somewhat lined up… then turn it off.

For most VTTs, this doesn’t mess with measurements, but you will have to warn your players to stay ON THE GRID. For the vast majority of players, this isn’t a huge problem. Yes, there are all sorts of finicky tricks about how to get the grid to line up perfectly, but this post is about decreasing heartburn, not making new and interesting heartburn issues.

If most of the grid fits, but one or two rooms are off, cut them out, and place them on the map layer, one by one. Nudge them around until they line up well enough. If you’re using dynamic lighting of some kind, chances are your players will never notice the seams. If they do, give them a Hero Point or something to make up for shattering the illusion that they were really in a dungeon.

Note that I recommend doing this on the VTT itself. I’ve found it easier than stitching together the whole thing in Gimp and hoping I got it right, only to find out I was off by a few pixels.

Anyway, that’s my process for extracting old images and making them less eye-bleedy for VTTs. Hope it encourages some of you to check out some older APs!

Larg(ish) combats take two: Off-screen fights

In my Council of Thieves game, the PCs lead a group of lower level rebels. They’ve used them throughout the AP, sending them off on side missions, using them to make up for skill gaps, or bringing them along when the PCs have a large combat.

Recently, the group decided to use them as a distraction. The rebels would keep part of the guard engaged while the main group orchestrated a jailbreak. Due to the layout of the prison, the players wouldn’t be able to directly communicate with the rebels, meaning I would have to simulate what was going on above ground.

True, I could have hand-waved it, but I try to avoid that when it comes to plans like this. Also, the dev in me can’t resist a chance to whip up a script to make things interesting.

The simulation

At first, I thought about writing up something that would take into account hit points, AC, chances of hitting, damage, etc. I decided that was going to be too high effort, especially for a single combat.

Instead, I went with a ‘wound’ system (Note: not the alternative rules from Unchained). I figured a wound would represent a bit of fortitude or luck, like access to healing or a chunk of hit points. Losing a wound point would be akin to getting hit and not having a potion / healer on hand or getting hit especially hard. Running out of wounds would mean your luck had run out.

Combat would work like this:

  • For every two levels an NPC has, they would get one ‘wound’ level. This would be the max number of wounds they can take.
  • Every round, half a wound would be dealt to a random NPC on each side.
  • Once an NPC’s taken their max number of wounds, they are out of the combat and can’t receive more wounds.

For this combat, I decided that being out of wounds didn’t mean the NPC was dead: They’re just unable to fight anymore. Anyone who was at zero wounds would have some sort of injury that would require a heal check and time as well as some magical healing to overcome (like a bone fracture, a bruised rib, a deep wound, etc). While a bit harsh, I wanted to simulate what it was like to be in a combat where you can’t run when it seems dangerous: You have to stick around until you can’t possibly fight anymore.

I also decided that the rebels would scatter as soon as they were down by half. If they waited longer, they may not have enough hands to help the seriously wounded escape with them. In my simulations, this took somewhere between 25 and 30 rounds. I liked that range because it would make things interesting for the jailbreak team. If they took too much time, they might have a second wave of guards descending upon them. If they moved quickly, they might be able to completely take over the prison and guard house.

I decided that the guards wouldn’t retreat as quickly. After all, they’re right by their stronghold, and the ones in the street are working off the assumption that they have back-up coming any second now.

Because it was possible that the main party might come upstairs and clean house, I decided that I’d simplify combat for those left standing. Rather than worrying about hit points, I’d just worry about landing hits. One hit means dealing half a wound (or maybe a full wound if the damage was high enough). When it comes to mopping up, I don’t generally like to split hairs.

The script

In theory, I could have just a rolled a die every turn and kept track of wounds on paper. I wanted to be able to run the simulation a bunch of times, though. This is cumbersome if doing it with pen and die, but trivial when running code. Running the script a bunch of times helped me adjust the numbers so that the fight was interesting without being impossible.

In fact, the multiple simulations are why half a wound is dealt out rather than a full wound: It made the numbers work how I wanted. It also helped me brainstorm how I might interpret the end results.

This script requires Python 3. Also, you need two CSV files, which I included examples of in the repo. Each line is the NPC’s name, how many wound points they have, and how many wounds they start the combat with (generally zero).

[Script] – [CSV file 1] – [CSV file 2]

How’d it go?

When it came time for the combat, I warned the players that I had a script going that would be simulating the battle above, so they should keep that in mind. I felt it was fair to give them a heads up, since I’d been hand-waving much of the off-screen activity of the rebels.

When the combat started, I fired up the script, advancing it at the end of each round. The players mowed through the combat downstairs, and around round 17 ran upstairs and mopped up the guards the rebels had been fighting. By that point, there were two wounded rebels.

Because they knew time was of the essence, I felt like the players pulled out all the stops to end the combat quickly. At the start of the combat, they had no idea if my script was going to hurt people or outright kill them, which seemed fair. They’d never been in this sort of combat with the younger rebels before, so they couldn’t really predict the outcome.

Afterwards, I explained the mechanics of the script. I felt that the PCs could get a rundown from the rebels as to how it went, so a bit of meta-gaming was fine. They didn’t push back on the consequences, and accepted that the rebels that were wounded were going to be down for a day or two. Heck, one even pointed out that one should be out longer!

Future plans for the script

The script was written for a specific combat, so I knew the damage flying back and forth would be somewhat close. In the future, though, I may want to vary the damage output, making one group weaker or stronger.

I also may want the damage dealt to shift as the groups change. Because my simulations showed the groups always being about the same size, I didn’t worry about this, but I could see a future combat where this might vary quite a bit.

Finally, I may have make the script lethal, especially if my players decide to overthrow all of Cheliax…

Council of Thieves: Book Five (as book four)

Fair warning: This post is a long one, since I had to completely rewrite the book twice. Buckle up.

One of the most common suggestions to people who want to run CoT is that they run the books out of order. Since books one, two, and three focus on stopping the shadow beasts, it only makes sense to continue with that thread rather than take a break for a different adventure.

That said, Book Five took quite a bit of reworking before I felt like it was usable. Besides scaling down, some events had to be removed, and a lot of blanks had to be filled in.

Book Five is also like Book Three in that it’s totally possible to take on the end game right after the first session, skipping over the middle part of the AP. If you’re someone who does Just In Time Prep, you’ve been warned.

What I changed (Part One)

Oh, quite a bit. For pretty much the whole book, I figured out what the absolutely vital piece of information / action for each scene was and then re-wrote everything. I knew I had to hit certain beats, so I focused on those:

  • Finding out about House Drovange and the Council of Thieves from an insider
  • Getting some sort of introduction to the Mother of Flies
  • Rescuing the Mother of Flies so the party can learn about Walcourt
  • Taking on Walcourt so the party can kill Ilnerick and create / destroy the Aohl

Re-ordering AP events

Due to swapping books four and five, this meant that the fall of the mayor and Senior Drovange couldn’t have happened yet. Therefore, I had to remove any reference to riots or chaos and save those events until after Ilnerick is take care of. Oddly enough, this wasn’t that hard, since most of the book ignores the events in the Crown Sector.

The Kick-Off

The inciting incident involves dealing with a ‘trusted’ new NPC who the players have never met. My group leans towards paranoia, so the chances of them biting were slim. Instead, I pulled out what absolutely had to be introduced with that scene:

  • Confirmation that Ilnerick is in Westcrown
  • Some information about house Drovage (including their involvement with the Council of Thieves)
  • The involvement of the hags in whatever went down when Eccardian was born
  • The fact that there’s a splinter faction within the CoT

Rather than a new NPC, I used the interlude with the Children of Westcrown to deliver an alchemist to the heroes for questioning. Rugo is a bastard son of Senior Drovage, kept around because he’s utterly loyal, fairly useful, and good to have in case the house is left completely without heirs. With some threatening, he should reveal everything the players need to know in order to move on with the plot.

Mother of Flies

In the book, the players are ambushed while seeking out someone the contact knows, and a follower of the Mother of Flies steps in to help. Instead, I decided to condense things a bit, making the scene where the heroes interrogate Rugo the same scene as the ambush.

To make this work, I moved The Mother of Flies from the Hagwoods to the sewer, reworking her backstory. After her sisters were killed, she fled, but has made her way to the city, hoping to take revenge on the Drovenge family. Unfortunately, her lair was discovered and she’s currently under siege by the Council. At the moment, she’s holding them off, but every day they lose ground.

Some of her agents are still free, and have taken to roaming the sewers, killing reinforcements when they can and looking for a chance to break the siege from the other side.

So, I have two moving parts in the sewers now: Siege reinforcements and Mother allies. As soon as I’m done with the PCs interrogating Rugo, they’re stumbled upon by the reinforcements. As soon as that ruckus is underway, the Mother’s allies come to see what’s going on. After helping out with the combat, the allies can offer some information about the Mother of Flies:

  • She was chased out of the Hagwoods after her counterparts (Sister and Daughter) were killed
  • She came to town to enact her revenge
  • The CoT figured out she was around and have her under siege
  • Rugo was a part of the massacre and was a target for the Mother. The allies that are behind enemy lines are there because they were doing reconnaissance

The main ally is the from the book (Dog’s Tongue), and will give out enough information to hook the players into at least checking out the Mother of Flies.

If the players help end the siege (which is likely, since the siege is also going to make getting around in the sewers harder if they ignore it), they find out where Walcourt is, the history behind Drovage and the Mother of Flies agrees to hole up away from them and leave town once they enact her revenge for her. After that, the players are free to plan an assault on

And then things went to hell

A good plan never survives contact with the players, but I hadn’t expected them to completely wreck them before we even got to the first session.

I was in the middle of planning Book Five when the players finished Book Three. After clearing out Delvehaven, the players decided to resurrect one of the vampires. She was previously a vampire hunter, so likely to be good or neutral, and probably had information they needed. This obliterated the need for half of next book.

I was weirdly delighted with this turn of events. I was losing an interesting NPC (Ailyn, the Pathfinder Bard) soon, so this would give me someone new to introduce the story. Also, it felt a bit more elegant, since even with reworking, the siege felt awkward. Still, it required some scraping of my plans and figuring out if they even needed to deal with the titular Mother of Flies. After all, they’d have the plans for Walcourt and hints about Drovage being involved with the Council of Thieves. They’d be missing some backstory, but that could be inserted later.

What I changed (Part Two)

I decided to create four plots for this book:

  • Reviving Vahnwynne (and dealing with the fallout)
  • Potentially dealing with the Mother of Flies
  • Doing a favor for the temple of Calistria
  • Taking on Walcourt

Reviving a slayer

Reviving Vahnwynne comes with three complications: Finding someone to do the resurrection, acquiring a diamond worth 10k, and dealing with the fallout.

As I wrote before, the Temple of Calistria is the only game in town when it comes to doing a non-evil resurrection. The Temple won’t simply take payment for their services (in fact, they’ll refuse it). Instead, they’ll require a favor. They won’t force the players to carry it out before the resurrection, but when they come calling, they’ll most certainly have a window in which to get it done.

Acquiring a diamond is less of an issue, especially since one of the Children of Westcrown happens to be the daughter of a prominent jewelry merchant. The biggest problem there is finding the cash, since much of the previous spoils have gone into buying property or outfitting the rest of the rebels.

Finally, the fallout. I’ll write about this more in another post, but in short, Vahnwynne comes back with emotional scars. She was a CG person who was forced, via the nature of vampirism, to commit evil acts. Coming back, the memories of such events stay with her, haunting her days and nights. It also doesn’t help that she’s brought back by a group of strangers. If they want her help, the PCs will have to invest some time in getting to know her (and her issues) and helping her recover.

The Mother of Flies

With the resurrection of Vahnwynne, the Mother of Flies becomes unnecessary when it comes to pushing the plot forward. She has some interesting information about the backstory of the Drovage family, but that’s about it.

Rather than use her as an arbitrary stumbling block, I decided to make her optional. I also opted to place her in the sewers of Westcrown (as suggested in a Paizo forum thread) in order to tighten up the plot. She fled from the Hagwoods with a band of followers and has resettled in forgotten part of the sewers, plotting her revenge against Drovage. At the time of the AP, she’s been discovered and is currently under siege.

Vitti, the rebels’ druid, can clue the main PCs in on her existence. In my game, he’s been mapping the sewers, and would note that there’s some strange activity going on. The usual signs of life are disappearing and they’re running into more groups of humans. The players can opt to follow this thread if they want, with the reward being information and a possible alliance, either against Walcourt or for one of their more long-term goals. It also doesn’t hurt that a victory would mean taking out a good chunk of the Council of Thieves standing forces.

I also changed the hook, since the players rarely use the sewers to go anywhere. Instead, two of the CoW (Vitti and Larko, for my game), barely escape an encounter with a band of Council thugs. They tell the PCs what happened and leave it up to them what to do next: Investigate, delay, or ignore the threat.

The Siege

Moving the Mother of Flies underground meant I had to redo the siege. The book lays it out as a rather linear experience involving a lot of enemy fey, which doesn’t make a lot of sense, so I redid it to make it feel more like a group of people being penned in.

The center of the siege is the Mother’s hut, which she placed at a very specific point in order to draw on its power. There are three open areas around her hut, which were originally intended as space for their camp to grown. The Council’s thugs now occupy those spaces, however, blocking her and hers in.

The thugs, at this point, have tried a few pushes, but quickly found that the Mother’s crew can do some serious damage to them. Mother’s side, however, has found that they can’t make a move without the two other sides falling upon their back line. Even if they coordinate with Dog’s Tooth’s group, it still leaves them vulnerable. Both sides are at an impasse.

Each side has about 15 people in it, though several of those people are slaves (something the fey don’t recognize as different than any other enemy). Each group is comprised of one lower level magic caster, one lower level priest, a mix of fighters and rogues, a ranger, and a skald / bard / some other force multiplier. The highest level enemies will be whoever escaped from the fight in the sewers.

Calistria

I’ll be detailing this subplot in another post, but the short version is that the players are tasked with recovering the body of a murdered temple priestess and punishing those responsible in whatever manner seems fit. This will take the crew out of town to a manor, allowing for a nice change in scenery and a chance to use some of their more esoteric skills.

Walcourt

I wasn’t a huge fan of Walcourt as it was in the book. It looks like a fun romp… for any other game. The tone of my game had gotten a bit grim, so I decided to remove some of the goofier elements and play up the corruption of Ilnerick. Rather than being a standard hive, I fashioned it to mimic a Pathfinder lodge, specifically, Delvehaven. The motifs and decor will be familiar to the PCs, and some of the vampires will be former Pathfinders who were tempted too close to his lair.

I ended up using the wonderful Village to Pillage: Murder Mansion as my map. I left most of the levels furnished, only bothering to customize the basement. In game, Walcourt formerly belonged to a noble house that fell during the Chelish civil war. The manor and its lands have never been rehabilitated, in spite of the fact that it sits in the middle Crown Sector. The official reason for this is that the matter of ownership is unclear since many houses could possibly lay claim to the land and the house, but the leaders of Westcrown have made it clear that whoever claims the land must also pay the back taxes on it. Unofficially, Walcourt is kept empty so that the Council of Thieves has a secure location on the island.

Also, you have to keep your pet vampire somewhere, right?

How did it go?

The kick off

Session one was basically set-up for the entire book, What Lies in Dust style. The players got all the hooks during this session and were given no particular order in which to do them. Vahnwynne was raised, they found out about something going on in the sewers, the deal with the temple of Calistria was struck, and they learned the location of Walcourt.

The players immediately accepted that their newly risen party member was traumatized and set about ways to alleviate it. They dug deep into their various tricks to find spells, skills, concoctions, and treasure to figure out ways to help her, which is always nice to see as a GM.

Dropping all the hooks on them at once also seemed to work well, since it gave them freedom to prioritize. The book is very linear, so I’m glad I reworked the plot so that they’re not dependent on each other.

The sewers, the fey, and the siege

The players decided to go into the sewers first, reasoning that if the sewers were now off-limits, the CoW were going to have a harder time getting around.

I set up a crew of Council reinforcements for them to stumble upon. I made it a CR 13 encounter, figuring I’d let the players get into a dangerous situation and then have the red cap Dog’s Tooth step in. He could help turn the tide and get the players moving on the Mother of Flies plot.

One misstep I made: I underestimated my players. They actually did fairly well against the reinforcements, even if the encounter was running long. I had meant to get them to the fey hideout this session, but I ended up having to stop right after introducing Dog’s Tooth.

Meeting the fey

In the third session, the group met Dog’s Tooth and his camp, and it confirmed my suspicions: If the PCs started with common ground with the fey, they’d have no problem making a deal with them. They figured out that many of the fey in the camp were evil, but knowing from the start that they had a common enemy and that the fey intended to leave town after their revenge was had, they decided to play ball.

The PCs got some rough details from Dog’s Tooth about the siege, letting them know that the battlefield had three areas, and that each one held ten to fifteen mortals. This was where I ran into a small problem.

If you give your players some rebels…

…They’ll want to bring the rebels to the fight.

After hearing about the number of potential combatants, the players immediately started planning on bringing all of the Children of Westcrown with them. All of them. I choked at first, since that meant I’d have fourteen friendly NPCs to control.

I almost said no, but then I decided to think about it. After some discussion with my husband (who’s also one of my players), I worked up a solution that would, hopefully, keep combat moving and keep me from having to control an absurd amount of mobs.

The system ended up working quite well. The combat never got bogged down, and while it was still a long fight (around two hours), it never felt slow or drawn out.

The fallout

The players were happy that they were able to clear out a chunk of the Council and got to learn a bit more about the Drovage family. They were also interested in forging an alliance with the fey, though I decided to delay that a bit. The fey informed the players that they had to relocate, and that they would be in contact once that was done.

The players also decided to take a few prisoners from the siege so that they could find out where the other hideouts for the CoT were… which involved maps I totally did not have. Between sessions, I threw together a few possible encounters: A main gathering place for the CoT thugs, a tavern just outside of town (used as a secret entrance to the city), and a warehouse in the docks (mostly for smuggling goods into and out of the city).

Calistria

I had major worried about this side-quest, since there was a chance that the players could seriously foul it up. I decided to heed the advice of Matt Colville, though, and not worry about how the players would get themselves out of a jam.

In the end, the players did perfectly fine: They got out with everything they needed and even made few new allies along the way. It was also a nice break from a combat-heavy book.

The warrens

In the end, the only place that the players ended up hitting up was the Warrens. Once again, I grabbed one of the awesome Village to Pillage maps, tossed in a ton of NPCs, and let the players go nuts. They captured a few guild members, allowing me to toss some more information at them.

The most important discovery was a coded note with instructions to watch certain people. While the players were able to decode the text portions of it, the names of the actual people were left as a mystery. They did manage to get a few names out of the captured thieves, but they didn’t manage to grab the ones who would have been able to tell them that they, the PCs, were on that list.

This was fully intentional, as I wanted to make the players a tiny bit paranoid without sending them into a frenzy of self-defense. Sometimes, a GM needs to be a bit evil, okay?

Delvehaven

Finally, after getting their insider (resurrected Vahnwynne) better and raising some hell, the group descended upon Delvehaven.

Honestly, while this encounter looked super tough on paper, the group breezed through it. They used their insider knowledge, planned the heck out of what they were going to do, and brought all the higher level people with them. Illnerick never stood a chance.

If I could do it again…

Looking back, I’m not sure I’d change a thing. I liked how the book played out, I figured out how to run large-ish combats, and the players seemed to enjoy themselves.

One thing that did bug me: Downtime. With this book, I offered a ton of downtime, spreading out the major events over months. There was nothing especially pressing. Even the request from Calistria didn’t have a due date (as long as they didn’t put it off too long). This lead to the number of sessions doubling, which wasn’t a bad thing, per se, but caused the tension to ease up a bit too much.

I decided that was fine, though. After all, it just made removing all downtime in the next book more distressing…

Population Generator: A script for filling a fantasy town

Hey, I made an online version of this that doesn’t require installing Python! Go check it out!

One of my biggest issues with towns in TTRPGs is that they lack a certain amount of life… literally. I’ve played in huge metropolises and tiny hamlets, and outside of the goods and services available, they’ve felt the same. There’s that one merchant you talk to, that one tavern you know about, and a handful of NPCs that are fairly interchangeable.

As a GM, I’d love to have a town where everyone has a name and a personality. I don’t really have the time to put that together by hand, though. I’m also wary of dumping a huge amount of time into something that my players may simply ignore. I could just make it up as I go along, but I’m terrible about writing down improvised details while in the heat of the moment (this is how a certain shopkeeper in one game ended up with at least four different names).

Ideally, I’d want something to do the work for me, naming my NPCs, giving them personalities and businesses, naming said businesses, and then handing it off to me to use if needed.

Enter the town generator!

Generating random sets of things is something that code is perfect for, so I decided to put together a script that could do it for me. My goals for it:

  • Create a town of N size
  • Populate it with residents
  • Give those residents values to give them some character (age, traits, a wealth level, a job)
  • Give some of the residents a family
  • Pop residents and their family (if any) into a building of some sort
  • Name the taverns and shops
  • Print the whole shebang out to a CSV, so the user can open it in Excel / Google Sheets / whatever

I tinkered with it for a few days, putting in work during coffee breaks and when I had a fit of inspiration. I grabbed a few random data sources, like a list of traits from a researcher at MIT and a bunch of medieval names from an online database. I also spent a bit of a time refreshing random word generators to get some data for my building names.

The results

I ended up with a script that did just what I wanted: Creates and populates a town with residents and businesses! You can see the results of one of the towns I made here.

One of the things I’m enjoying the most are the emergent stories. I considered putting in certain requirements (like a town must always have at least one shop or at least one temple, or can’t be made of only children), but decided against it. For one, it started to feel like a bit of a rabbit hole (why not check the types of temples, or traits that don’t go together, or not having any middle class, or…). But it also created some interesting stories when outlier cases popped up.

For example, in one town I generated, there were a TON of temples. Out of some 300 buildings, 100 of them were a temple of some kind (the normal ratio would have been much lower). What’s going on in a town like this?! Maybe there’s a ton of factions. Maybe the residents follow some of the lesser known gods, or have their own totem spirits. Or heck, maybe they’re all charlatans! And what’s going to happen with that single noble lady who has five sons, all with traits that are at odds with each other…?

The traits also create some fun stories. Each resident is given three random traits. This can lead to a person having traits that are at odds (miserly and generous), or traits that seem at odds with their station (a field hand who’s fancy or a noble who’s rustic). Sometimes, you end up with a marriage where you wonder how in the world they make it work. These just make the people in the city feel a bit more unique and alive. Also, since I’m working with traits and not a block of text, it’s easier to take in during an active session and key off of.

Finally: The business names. I adore the business names. Some of my favorites so far:

  • The Actually Ass tavern
  • The Tripping Chicken
  • The Wishing Wyvern
  • The Half-Elf’s Half-Elf

And the not-safe-for-younger-players:

  • The Wet Wife tavern

Will I use it?

My current campaign takes place in a single city, and my players aren’t in the habit chatting with the locals, so not any time soon. That said, I may go ahead and  run it just in case.

My next planned campaign is a West Marches campaign on Roll20, however, so I’ll likely break it out then. It’s set in a small settlement, but there’s still going to be people bumming around.

What’s planned for it?

Some of the things I’d like to add:

  • Races. Right now, races aren’t a set thing. I’d like to add them in, though I’d like to only do this once I’ve found enough names to add that are actually easy to pronounce
  • A web interface. I’d love for this to not be limited to just people who can run Python.
  • A settings file, so people can tweak the percentages without changing the code.
  • More data!
  • A Python 3 version 😬

Where can I find it?

It’s part of my gamemaster-scripts repo, but if you’re just looking for the files for this script, you can find them here:

https://github.com/kcunning/gamemaster-scripts/tree/master/general/popgen

To run it, you’ll need Python 2.7 installed and the files on your computer, but that’s all. There are no external packages required. If you have an account on Github, feel free to send me a pull request!

Note: Lovely tavern sign created with http://apps.pathstoadventure.com/Tavern-Sign-Crafter/craft.asp