Dynamically Static Initiative

3 Comments

I’ve never been a tremendous fan of the “roll initiative at the start of combat and then just cycle that order until combat is over” school of initiative that has existed in a lot of games, but most notably D&D from 3e on. In my experience, it makes everything feel very static, and can lead to problems with players getting distracted while they just wait for a turn. In the past, I’ve worked on other solutions to the problem, with my most common being group initiative (based on this Ars Ludi post).

A friend recently linked me to this joke monster:

from http://imgur.com/r/dndnext/H4BrSMH

from here

The Percolating Haste mechanic struck me immediately as a potential solution to the boringness of cyclic initiative; you can just apply it to everyone, to get a much more dynamic combat where high initiative bonus matters past the first round of combat. I’d implement it in the following way:

D&D (All varieties post 3e)

Roll initiative for the first round of combat normally. Each time you end your turn, if subtracting 20 from your initiative total would not reduce your score below 0, subtract 20 and go again on that initiative tick. If this would reduce you below 0, instead add your initiative bonus to your current initiative score upon ending your turn (unless you have an initiative penalty, in which case just stay where you are).

Haste-type effects might reduce the subtraction amount (making it easier to go twice in one turn).

Beyond the Wall

Determine initiative for the first round normally (in BtW, this is a fixed initiative total equal to level plus Dex bonus plus 0-2 from class choice). Each time you end your turn, if subtracting (Your Level + 10) from your initiative total would not reduce your score below 0, subtract (Your Level + 10) and go again on that initiative tick. If this would reduce you below 0, instead add your initiative total to your current initiative score upon ending your turn. (Very few BtW characters should have an initiative that’s negative, particularly past the first couple of levels even with a very low Dex.)

This method has the subtraction amount scale by level since your initiative bonus scales drastically by level; it should result in high-init characters getting similar amounts of extra actions as they level.

Benefits of the System

To my mind, this system has a couple of major benefits:

  • Due to different initiative bonuses, characters are likely to change order through the course of a fight. You can’t guarantee that you’ll get a turn in the same position every round; that skeleton that went after you this round—but has a higher initiative—might go before you next round. This in itself should make the fight a lot more dynamic-feeling.
  • High-initiative characters, over a long combat, will get to go more often (making up for the fact that the benefits of high initiative tend to become less and less after many rounds in a fixed initiative order, and also compensating for a high initiative but bad roll).

Of course, the system is a little fiddly for a GM to keep track of round to round. One solution is to ask players to track their current initiative score and just do a countdown initiative call, but another is to use the program I threw together to work as an initiative tracker.

Initiative Tracker App

Here is the app.

As usual, this is a simple Windows form app (someday I’m going to get around to learning to make web and mobile apps) that I solemnly promise is not going to do anything bad to your computer. Just put it in a directory and run it.

The Main tab is where most of the functions lie:

  • Once you’ve added characters, you can select them from the combo box and click Add to add them to the current initiative list.
  • Click New to add a new, default character to the current initiative list (and the combo box).
  • Click Remove to remove a character from the initiative list (it remains in the combo box to be added back later).
  • Select a character in the initiative list to see its stats in the text boxes underneath. You can change them and they’ll update on the fly (if you put something that’s not an integer in the non-name boxes, it will default to 0):
    • Name: The character name that will appear in the lists
    • Increase: The amount that will be added to the character’s initiative count after every turn that didn’t result in a second turn (i.e., initiative bonus)
    • Decrease: The amount that will be subtracted from the initiative total to determine if the character goes again
    • Current Init: The character’s current initiative total (overwrite this every combat if the players hand-roll their scores)
  • The Current Character label indicates which character is currently up once you’ve started combat (and stays the same even if you select another character for editing).
  • Click Next Character to move to the next character in the initiative order (and modify the scores of the last character to act). This replaces the Current Character label and selects the character in the list (so you can easily edit it if necessary). If no one has gone yet after starting a new encounter, this selects the first character in the initiative order.
  • Click New Encounter to reset the initiative count to the top of the order (and possibly reset current initiative scores based on Settings).

This doesn’t currently support delaying/holding actions. I’d suggest just moving on and remembering that the character has a floating ability to act; for a delay, you can hand overwrite the character’s current initiative).

The Settings tab allows you to change a few things:

  • Use the radio buttons to select what you want to have happen to everyone’s current initiative scores when you click New Encounter. By default, leaving them unchanged is selected. The first two options reset them to a generic value (either Increase or Increase + 10; the first option is for Beyond the Wall). The third option rolls a d20 and adds Increase (essentially a normal first-round initiative roll if you’re using Increase equal to init bonus).
  • Change the New Character defaults to whatever you want a new character to begin with when you click New on the Main tab.
  • Uncheck Modify Initiative on Advance to turn off all the fancy changing and use this as a normal cyclic initiative tracker.
  • Click Save All Characters to File to create “InitiativeTrackerCharacters.txt” in the same directory as your app executable. This writes all the characters currently in the combo box to the file, and the next time you open the app it will load them all back in from that file.

There isn’t currently an in-app way to delete characters. You can manually remove them by editing the text file.

Chuubo’s Quest Sorter App

Leave a comment

One of the key interactions in Chuubo’s is that each quest fits into multiple arcs, but at different stages of the arc. Something that works for step 2 of a Knight arc (exploring a problem) might also work for step 3 of a Mystic arc (putting together a doomed plan to move forward). When you get to a new step of your arc, you need to figure out which quests make sense for that step. You could use a static index to figure out these associations, but that’s less fancy than an application. The app also lets you open a .pdf directly to the page with the quest you select, and add your own quests.

Quest Sorter Windows App

As always, I solemnly promise that this is doing nothing but what’s described in this post to your PC.

What It Does

Select an arc from the combo box. Slide the tracker bar from 1-5 depending on what step of the arc you’re on. Click Search.

All quests that match that arc step appear in the list, indicating their name, XP value, book, and page number.

Select a quest and click Open PDF to jump to the indicated book and page number (this requires setting up the right file names).

Click Copy All to Clipboard to copy the list so you can paste it into another application.

Installing the App and Editing Resource Files

Extract everything in the .zip file to its own folder. Run the .exe file; it’s looking in its own folder for the .txt files. It’ll save you effort if the .exe is in the same folder as your .pdf files for the various game books (or one folder down).

There are two important .txt files that you should edit:

FileLocations.txt

This file is essential to making the Open PDF button work.

The first line (that begins with //) explains what each pipe-separated entry means: the name of the book (that is included with the quest), how many pages the pdf’s page count is off from the printed page number, and the path to the .pdf file (“..\” means go up one directory from the folder where the program was opened; you could also just paste in the absolute path to your file).

The second line is the path to your Acrobat Reader installation; most people on Windows probably have the same path as mine, but if it doesn’t open the file, check to make sure your copy of Reader is where this path says it is.

The third and subsequent lines match the books as listed in the Quests.txt file (and which appear on the app’s output). I renamed mine from their defaults, so you have to change these entries to match whatever your .pdf files are named. Additionally, if you add any quests from books I don’t have listed, you need to add them as a new line to this .txt file (and remember to leave a blank line at the end of the file).

Quests.txt

This file is a summary of every quest. The first line shows you what each field means, but to expand on that:

  • The first field is the quest name.
  • The second field is the XP value of the quest.
  • The third field is the book name (and must match a book name in FileLocations.txt if you want it to open the .pdf file).
  • The fourth field is the page number of that book the quest appears on.
  • The fifth-ninth fields are the arcs the quest matches for steps 1-5. If the quest matches multiple arcs at a step, they’re separated by a semicolon.

If you want to add new quests, just copy the format (and remember to leave a blank line at the end of the file). If you want to remove quests, just delete the whole line.

Magic Hoard App

Leave a comment

And here’s the version of the Magic Shop app that I promised last week for the newest edition:

Magic Hoard Windows App

Unlike last week’s app, this one is much simpler as items in the new edition are not ascribed actual prices. Instead, it’s mostly just a way to generate random results that include randomized special features.

What It Does

Select a treasure table.

Each table comes with a predefined chance for each special feature (e.g., at 25%, since there are four different special feature types, on average each item will generate one special feature, while at 100% it will always generate all four features). You can change the rate for a table by moving the slider (the rate is saved for the session, but not for when you close and reopen the app).

Click Add Item from Selected Table to randomly roll an item (plus possible special features). It’s added to the top of the list in the output box.

Click Sort List to sort all the items in the box alphabetically by item name.

Click Clear List to empty the list. Unless you click Clear List, switching between tables and special feature chances will not change anything about the already generated items in the list (e.g., you could generate three from table A and then one from table D, and all would be in the list).

Installing the App and Editing Modifiers

Extract everything in the .zip file to its own folder. Run the .exe file; it’s looking in its own folder for the .txt files.

As with the previous app, everything uses statistical weights to determine when it shows up. Read last week’s post for a description of how that works.

The files and their formats are:

  • AllItems: A list of every item (without special features), in the format [Treasure Table]|[Random Weight]|[Item Name]. If you add a new table name, you also have to add it to the TreasureTables file.
  • SpecialFeatures: A list of every possible special feature, in the format [Random Weight]|[Feature Table]|[Feature Name]|[Feature Description]. Unlike with AllItems, you can add a completely new table of features here and it will automatically added (e.g., you could add entries for a new Previous Owner table fully within the text file).
  • TreasureTables: This file purely saves the default special feature chances for each table, in the format [Treasure Table]|[Percentage Chance]. Percentage chance must be an integer between 0 and 100, and new tables added have to also have at least one entry in AllItems. This is where you change the default special feature values for good if you don’t like the defaults I picked out.

Known Limitations

In order to keep it as extensible as possible using just the text files, I didn’t include the “pick two properties” entry on the Property table, so it will never generate more than one Property special feature.

There’s a weird bug that I can’t quick track down such that sometimes, when you make a bunch of items with a high chance of special features, items with the same name will have exactly the same (or almost exactly the same) special features. I haven’t been able to generate it reliably, and if you get it, clearing the list, changing the percentage slider and generating a few items, then changing it back and clearing again seems to fix it for the session. Programming is hard, y’all.

Magic Shop App

Leave a comment

PCs with ready cash plus visits to a large city equals attempts to stock up on magic items. I’m always too lazy to actually roll up the available items in a town, instead relying on asking, “what are you looking for?” and giving it a percentile chance. It’s expedient, but it doesn’t really amuse the players the way an actual list of shopping options would.

So the Magic Shop app does all the complicated rolling to create a list of randomized magic items, hopefully making my (and your) players much happier with their shopping trips!

Magic Shop Windows App

As with the last one, it’s only for Windows, and I don’t have plans to try to get it onto mobile (since it’s much easier to use pre-game). Also like the last one, it’s an .exe file that I solemnly promise isn’t a virus.

What It Does

Set the shop’s Available Funds (defaults to 50k gp) and the maximum price of any particular item in the shop (defaults to 8k gp).

Remove any item types you don’t want to be for sale in a particular shop (e.g., if you just have an armorer’s shop, you could remove everything but Armor and Weapons).

Click Generate Items and the shop stock gets randomly populated.

Rather than risking getting stuck in a loop trying to spend the last little bit of money, the random engine stops checking once it gets to something it can’t afford with its remaining funds (and adds whatever’s left to the read-only Unspent Funds box). It’s pretty likely to leave a lot of funds left over if it rolls something very valuable, so you can click the box with the unspent funds in it to try for another cycle; the smaller the number gets, the less likely you are to add any new items.

Clicking Generate Items clears everything from the previous set and makes another one.

Installing the App and Editing Modifiers

Extract everything in the .zip file to its own folder. Run the .exe file; it’s looking in its own folder for the .txt files.

Pretty much everything in the program uses the concept of statistical weights: basically, all the items in a list have their “weight” converted to a chance of getting picked. If there are three items in a table, with weights of 50, 40, and 10, the first item gets picked on a roll of 1-50, the second 51-90, and the third 91-100 (and, indeed, I mostly generated the weights by reversing them out of the standard random tables). Unlike a standard random table, you can add new items to a list and you don’t have to adjust the rest of them; for example, if you added a fourth item with a weight of 20, the roll would change from 1-100 to 1-120 and everything else would be slightly less likely overall.

With that in mind, the files and what they have in them are:

  • AllItems.txt: The Main list of items, this contains everything that’s not a modular weapon or armor. The format is [Item Name]|[Item Type]|[Item Tier]|[Item Rarity]|[GP Value]|[Random Weight]. The types, tiers, and rarities have to be spelled exactly the same as those in the following documents (you can add/remove types, tiers, and rarities, but have to do so in both places). GP Value and Random Weight have to be positive integers. And that’s true of all the following documents (and, in general, if you alter or add a name in one document, you have to make sure it’s changed or added in the same way in any other document that uses that variable type).
  • ItemTypes.txt: This is just a list of types (armor, potion, ring, etc.) and a random weight. I averaged across all item tiers for these, so if you want to just generate treasure from a particular tier (e.g., minor items have much higher chance of potions and lower for weapons), you’ll have to edit the weights in this file.
  • ItemTiers.txt: This is just a list of tiers (minor, medium, and major) and a random weight. I picked arbitrary numbers, so this is the first place to edit if you want more items of a particular tier than you’re getting.
  • ItemRarities.txt: And, finally, this is just a list of rarities (common and uncommon, which correspond to lesser and greater). Again, I picked arbitrary numbers, so change these if you want to see more common or uncommon items.
  • ArmorAndWeaponChances.txt: This is the master table for generating magic weapons and armor, based on the tables in the Ultimate Equipment Guide (they basically specify an item of a particular enhancement with one or two special abilities of a particular equivalent, rather than the core rulebook’s super random method). The format is [Item Type]|[Item Tier]|[Item Rarity]|[Base Enhancement]|[Plus Table for Special Ability 1]|[Plus Table for Special Ability 2]|[Random Weight]. Note that in this file currently, the only types are armor and weapons, but this subtable will be called whenever the item name is “[Modular]” (see the examples in the AllItems file); so if you wanted to make, say, random Amulets of Mighty Fists with weapon-type effects, you could add a new set of tables here.
  • ArmorAndWeaponTypes.txt: This is a giant list of every possible weapon and armor. The format is [Item Name]|[Item Type]|[Item Subtype]|[GP Value]|[Random Weight]|[Complexity]. Complexity isn’t actually used by the program; it was mostly for sorting. Note that rather than create a very complicated method for assigning special materials to items, they’ve been pre-added here (e.g., Longsword includes variants for Adamantine, Mithral, etc.). If you’re getting materials you don’t want, or you want to add special material chances for the more obscure items (I didn’t make, say, special material versions for Battle Aspergillums), you need to change it here.
  • ArmorAndWeaponMods.txt: This is where the special abilities live. The format is [Special Ability Name]|[Item Type]|[Item Subtype]|[Plus Table]|[Bonus Equivalent]|[GP Value]|[Random Weight]. Note that, true to the books, items will either have a bonus equivalent or a GP value, never both.
  • ArmorAndWeaponPlusToCost.txt: Finally, this translates the final plus equivalent for weapons and armor into a GP value (e.g., a +2 weapon with +3 worth of special abilities would find the Weapon|5 entry in this table and add 50000 gp to all its other costs).

Known Limitations

I took a few shortcuts with this one:

  • As noted above, this generally assumes that minor items will be more common than medium, which will be more common than major, but that any can show up in a particular store if it has the money for it. Which is to say, results will be similar to but not exactly the suggested breakdowns for number of items of various tiers at different ranks of city.
  • Also as noted above, I included special materials in a brute-force way rather than figuring out a truly modular solution.
  • Finally, I punted on weapon special abilities that discriminate by damage type or other fine particulars (e.g., you can roll a disrupting spear or a vorpal mace, and the firearms-only special abilities are in there and will show up on bows even though I didn’t add any firearms to the list). It shouldn’t happen very often, so I figured having to reroll that one when it happened would be fine given the added complexity required to get it to work right.

If you use it, I’d love to know what you think and any errors you can find.

Combat Modifier Tracking App

Leave a comment

Part of my radio silence around here lately has been that I finally knuckled down and started taking evening programming classes. And I’ve gotten far enough to start making useful apps for gaming purposes.

I’ve been running a lot of Pathfinder over the past few years, and if you have too you might notice something that happens around the mid level and just gets worse and worse: the time overhead required in combat to add up the modifiers from a lot of small buffs and optional feats. This is particularly challenging for archers, power attackers, etc. It’s not uncommon for someone to have to figure out, say, the effects of Haste, Bless, Inspire Courage, Rapid Shot, Point Blank Shot, Deadly Aim, and Favored Enemy on each of his or her many attacks.

Some players just make jotted notes on blank paper. Some go the extra length to make flash cards. Both of those are better than trying to recalculate in your head each attack, but neither is particularly swift. A friend of mine was taking a programming class a few years ago and made himself a simple app to manage his attacks, and it proved extremely useful. It involved a lot of hard coding, though, so I’ve been badgering programmers at my table to make a more customizable version ever since. Now that I have just enough programming to be dangerous, it seemed like a fine time to go ahead and do it myself.

Combat Modifier Windows App

As noted in the link, this is currently only for Windows (Windows forms turn out to be remarkably easy to make). I’m hoping to get enough feedback on it from alpha testers to fix any problems before I start trying to figure out Visual Studios plugins to export to mobile (which would clearly be more useful). So if you’re willing to try it out and give feedback in the comments, I’d appreciate it very much. It is an .exe file, which I solemnly promise is not a virus, and its architecture seems simple enough that my copy of windows doesn’t even warn me about opening it (it’s only looking in its own directory, not trying to install anything).

What It Does

Enter your character’s base attack bonus and your persistent stats for armor class, attack bonus, and damage bonus (persistent in that they’re written on your character sheet and/or possibly include long-lasting buffs… basically, the totals that are easy for you to work out between combats and don’t expect to change much).

You can be on one of three tabs:

  • Single Attack takes an attack and damage bonus for a single weapon.
  • Two Weapons takes them for two weapons, and lets you set how good your two-weapon fighting feat is (basic, improved, or greater). This tab always assumes you’re making a full attack with both weapons, so if you need to make a single attack don’t forget to add back your +2. Using this tab includes all modifiers for two-weapon fighting (you don’t have to add a separate mod).
  • Flurry takes your unarmed attack and damage, your monk level, and your choice of a single attack or a flurry. Using this tab includes all modifiers for flurry of blows (you don’t have to add a separate mod).

You can add any modifier from the first combo box by selecting one and clicking Add. This adds it to the Frequent and Current Modifiers lists (subsequently, you can select it from the Frequent Mods combo box to find it more easily). You can select a mod you’ve added to Current and remove it by clicking the Remove button, or just click Clear All to empty the list of current modifiers (they’ll still be in the combo boxes).

The boxes at the bottom show you your iterative attack sequence, damage bonus, and AC as modified by the buffs (and the iterative sequence is automatically generated based on Base Attack and the rules for two-weapon fighting or flurry of blows).

Installing the App and Editing Modifiers

Extract the zip file into the directory of your choice. Run the .exe. It’s looking at CombatModifiers.txt in the same folder to get its list of combat modifiers.

If you want to add more combat modifiers or change their order, you can mess around in the text file (there’s also an option to add new mods from within the app). Be careful when doing so, as getting the syntax wrong can result in unpredictable errors (the app probably won’t crash, it’ll just have bad data for one or more modifiers):

  • The format for the file is: Modifier Name|Modifier Type|Attack Mod|Defense Mod|AC Mod
  • Modifier name is anything you want that makes it easy to remember what it is. It should be able to take any character other than a pipe, though quotation marks and backslashes may be risky given how C# handles strings.
  • Modifier type will be “Normal” for the vast majority of them. If you have something like Haste or Rapid Shot that grants an additional attack at your highest bonus, the type should be “BonusAttack”. If you have something like Power Attack or Combat Expertise that improves its bonus at every 4 points of Base Attack, the type should be “BaBScaling”. Let me know if you have any other ideas for types
  • Attack, Defense, and AC Mods should all be integers, with a – for negative and no + for positive. The app will probably sub in a 0 if it doesn’t understand what you want.
  • It should be safe to put spaces around the pipe separators if it makes it more readable.
  • You have to have a blank line at the end of the file (but only one), and can’t have any blank lines or comments/headings in the middle of the modifiers.

Known Limitations

I’m calling this known limitations rather than known issues, because issues implies that I hope to fix them. I’d seen apps available that did something similar, but usually as part of a much more vast set of options. I was trying to go for the minimum acceptable thing that did what I wanted, to make the UI and file format super easy to use (in addition to making the scope of the coding simpler). I quickly found out that 3.x is a huge and interlocking thing, where getting one rule working makes you want to get one more rule working to have the first rule be totally robust. For example:

  • The system doesn’t know anything about bonus type. It will happily let you add conflicting modifiers together (e.g., Bless and Heroism). You need to keep an eye on that yourself.
  • It doesn’t know your Strength or Dexterity, or how they affect anything. So you basically have to hand-tailor a modifier to your own scores if you want to include them. I worry about including Rage, since there are probably stat combinations where they’re not exactly correct (particularly for Greater Rage with a two-handed weapon). It’s probably often going to get strength-based damage modifiers wrong for off-hand attacks.
  • It doesn’t know how much of your AC is touch or flat-footed.
  • It doesn’t track size bonuses (or damage die type at all).
  • It doesn’t automatically sort any lists.
  • It doesn’t track how long buffs last.
  • It doesn’t know about caster levels or anything other than personal Base Attack that might make an effect scale, so you have to make separate normal modifiers for each variation of such things.
  • Two-Weapon Fighting doesn’t account for not using a light weapon in your off-hand (but you can probably fake that with an additional modifier).
  • Current Modifiers that scale don’t recalculate if you change your Base Attack after applying them (you have to remove them from current and add them again).
  • It’s mostly for Pathfinder right now (but probably works just as well for 3.5 if you ignore the flurry of blows tab and the modifiers that scale by BaB). You’d probably have to make your own modifier list, at a minimum, to use it for 4e or 5e.

Let me know if any of these limitations are a dealbreaker for you and why, and I’ll think about how to implement them. Also let me know any problems that I didn’t notice.

Finally, I’m not totally clear on whether this is at the point that it’s specific enough that I need to put the OGL disclaimer in the application anywhere. Does anyone with more experience making d20 stuff know?