Thursday, September 28, 2023

Mirror of the Fire Demon

[from another forum]

We once talked... about adventure seeds and my preference for dynamically unstable situations as adventure hooks, instead of status quo. Here's a concrete example:

I'm prepping Mirror of the Fire Demon. It's a good adventure in many ways with lots of mechanically interesting stuff going on: interesting terrain, monsters that hear combat and come out to investigate, at least one really tough fight, and so on.

But the central hook of "there's a megalomaniac gathering a horde of monsters to take over the world, and the wind spirit will tell you how to stop him" leaves me cold.

In particular, I feel that it makes roleplay more difficult than it needs to be. If the adventure is going to be purely hack and slash, "there's an evil warlord with a magic mirror, go take it" would suffice. The existence of hooks can only be to support roleplaying elements such as character motivation or informing interactions with monsters and rival adventuring parties, or aiding suspension of disbelief, and yet the default hook makes me feel like it raises more questions than it answers such as "what exactly has the bad guy done so far with his tens of thousands of troops, and why aren't there more of them at his main headquarters?"

So in the course of prepping this adventure I plan to make the situation more dynamic.

Rather than "this bad guy is gathering an army but hasn't done anything yet and everyone wants to stop him," which is a mission to maintain the status quo, it will work better at my table if it's "this bad dude has been in power for a while, doing terrible things to his subjects, but now for reasons unknown (to you) he's missing! His generals are jockeying for position, it looks like maybe a succession war is brewing, his armies are hunkering down and unsure which internal faction they're going to support... and in the middle of all this, word gets out that his old spymaster has defected and is selling secrets about bad dude's sources of power. Agents of nearby nations are greedily eyeing each other on their way to rendezvous with said spymaster. That's where you come in..."

Now you've got a huge horde which is fearful and somewhat passive, rival agents/adventurers who are greedy, an oracle of sorts (the spymaster) hiding in a cave but with a clear motive to dispense information for a price, and a mystery for future adventuring: what happened to bad dude and is he coming back? BTW the answer is "he got careless in his troop movements and elven armies took the opportunity to ambush him and his company of soldiers, at a high price in blood, but unless someone breaks the mirror he's got Unkillable 3 and will come back angrier than ever."

That helps me roleplay everyone involved, because they've all got clear motivations for what they're doing and not doing. It also tells me to insert more civilians into the wasteland parts of the adventure, to showcase the bad things the bad dude and his armies have been doing, like putting orphans to work as forced labor growing food.

Wednesday, September 20, 2023

Why I finally switched from Visual Studio to VSCode + Ionide

I've tried out Ionide a few times over the years, but never permanently until now. There are three factors which individually wouldn't be enough to make me reprogram my reflexes for a new IDE:

1.) Font Ligatures. I've started to really appreciate the cognitive benefits of font ligatures, but there's a long-standing bug in Visual Studio that prevents the -> ligature from working. https://github.com/tonsky/FiraCode/issues/846 This was my proximate cause for giving VSCode another try, and VSCode handles it like a champ.

2.) Github Copilot in VS completes whenever you hit Tab, and you can't reconfigure it. Copilot is pretty decent at guessing correct code completions but it's not anywhere close to 100%, and having erroneous code unexpectedly insert itself in the middle of my coding was distracting. In VSCode I set it to complete on Alt-/ instead.

3.) F# Intellisense in VS broke for me about six months ago (https://github.com/dotnet/fsharp/issues/14901) and while it's sort of working again now, it's quite slow, on the order of five or six seconds between fixing a type error and having the red squiggles disappear in VS. In VSCode it's approximately instantaneous.

In theory if VS fixed all three of these issues I would switch back, but right now I'm pretty happy about having moved over. There's some learning curve but the end result feels more productive.

 --

I could not love thee dear, so much,
Loved I not honor more.

Saturday, September 16, 2023

[DFRPG] Making demons demonic

From https://awesomeliesblog.wordpress.com/2018/04/24/diabolical/ an interesting anecdote, which may be written specifically for that article or possibly from an RPG sourcebook:

In the wake of these defeats Agrippa was consumed by anger, shame and dread. He feared the armies of Talabheim and Middenheim would arrive at any moment to slaughter him and seize the throne at Nuln. His wits perturbed by panic, he sought out Calidus for advice, who presented to him the most desperate and dangerous of measures. To this Agrippa agreed. Calidus called forth the infernal spirit Achorax and the young emperor entered into a most dreadful bargain with the demon. On Geheimnisnacht the demon would destroy the two older emperors, and thereby Agrippa would be left with an unchallenged claim on the Imperial throne. Yet the demon's price was high: the moonlight of that night would also be the last seen by Agrippa's daughters, who would be condemned to an eternity of torment in the Abyss.

The fatal Geheimnisnacht arrived and Achorax claimed his payment. Yet the demon's work was not done in Nuln. Two days before the night of the Twin Moons, the Emperor Konrad had succumbed to a sudden and mysterious illness and the Middenheim throne had passed to his twelve-year-old son, Arnulf. Achorax held to his bargain and that night tore asunder the two older Emperors: Lothar and the hapless Agrippa.

– Dietmar von Humboldt, A History of Sigmar's People, XVIII.43

To me this shows an interesting way to make demons fearful: by making them know stuff. Just like Dresden Files Outsiders always act together, flawlessly cooperating, maybe a good distinction between Tanar'ri and Baatezu could be that Baatezu share knowledge, maybe even magically, so that if you summon one Baatezu to demand power, it knows that Emperor Conrad is dead as long as any other Baatezu knows. It knows where all the bodies are buried.

That could be an excellent reason to be wary of ever signing a contract with one.

This will probably influence how I run demons and Elder Things in DFRPG. 

Saturday, September 2, 2023

What is DFRPG? Summary

"OSR" is a word with many definitions, but DFRPG fits some of them, e.g. it doesn't really have a concept of "balanced encounter difficulty" beyond having the GM eyeball it, and it works very well with the "if you can describe it, you can attempt it" mentality of the OSR including stuff like "I invisibly sneak up and stab it in the eye!"

The biggest difference between DFRPG and GURPS IMO is that GURPS is a setting-agnostic toolkit with lots of rules for making hypothetical powers and abilities and assigning point costs to them, and DFRPG is a D&D-ish game made using GURPS and has a specific set of professions (i.e. classes) with specific powers available to each (e.g. bards can mind control intelligent creatures with music, if they buy that ability). Since I dislike GURPS chargen but like its gameplay rules DFRPG is a good choice for me, especially when it comes to tactical complexity like "what are some nasty things I can do to incautious players with two minotaurs in a maze, and how can I make that experience different from six goblins in a night raid?"

It has terrific balance between wizards and warriors (both are fun and OP, especially when working together, and BTW I'm including bards, clerics, and druids under "wizards" here) and between melee and ranged combat, and coming from 5E that is a breath of fresh air because my 5E players towards the end were mostly wizard X/cleric 1 with a light smattering of Sharpshooter Fighters. It's nice to see some actual melee warriors (Knights and Swashbucklers) having fun at my table now.

Friday, September 1, 2023

Converting D&D adventures to Dungeon Fantasy RPG (Powered By GURPS)

One of the joys of GURPS, in theory, is that you can run anything you can think of in it. One of the joys of running well-designed D&D modules, from AD&D's Against the Giants series to the best of OSR adventures today, is that they are different from stuff you write yourself. They can surprise you and teach you new things. There are some monsters that D&D and DFRPG share in common, like ogres, goblins, dragons, and mariliths/peshkalis, and there are products out there like Nordlond Bestiary which provide quite a lot of others, but what do you do about traps and treasure?

Here are my rules:

1.) For treasure values, divide gold piece amounts by 100 and silver amounts by 10, e.g. if the module says you find 200 gp and 35 silver, you find two gold pieces ($800) and three silver pieces ($60). For jewelry/trade goods/etc. apply this same rule directly to the value of the jewels/etc. using whatever currency the value is given in.

2.) For traps, if it's a known trap type from the DFRPG books like a deadfall or crossbow trap, use whatever is listed there. Otherwise, it's noticed with a Per check; Disarmed with a Traps check; unavoidable unless disarmed; and if it's triggered it is Saved/Evaded with a DX check (or Will check if magical, HT check if poisonous), and does the same damage as listed in the module. Since D&D and DFRPG use HP differently, traps with large damage amounts in D&D (e.g. 5d10 poison) are sometimes intended to be reliably lethal, but that's better represented in DFRPG by making them difficult to avoid. Every time you cut the damage dice in half, rounded up, add a -2 penalty to all detection/disarm/evasion rolls. For example, if an evil lich king's tomb has a poison gas damage trap that does 5d10 poison damage per round for 10 rounds if triggered, in DFRPG you can convert it to a 3d10 toxic damage per second gas trap that is detected by Per-2, disarmed by Traps-2, and does no damage this second if you succeed against HT-2. Or you can halve the damage twice more to get a 1d10 damage per second trap that's detected by Per-6, disarmed by Traps-6, and resisted by HT-6.

3.) In all cases, if these simple defaults feel off to you, tweak them! If you want to convert the gas trap from 1d10 damage to 2d6, detected at Per and disarmed at Traps-6 but with no HT check to avoid the damage, do so. These rules are just a starting point to save you hassle for things you don't have a strong opinion about.

Happy gaming to all!

-B.C.

 --

I could not love thee dear, so much,
Loved I not honor more.