PDA

View Full Version : Player's Option crits, additional automation, and Hackmaster-style house rules



Sterno
July 4th, 2020, 18:07
UPDATE: This post got too long, as the extension grew considerably since the original post. You'll have to look through the thread as various features were added or check out the ReadMe on Github (linked below, but slightly out of date). Until I update the readme, you sadly need to read through this whole thread to see how things work, since I described new features as they were added. I hang out in the #dnd_classic_2e channel on the FG Discord if you have questions.

I've created an extension for the 2E ruleset that adds the critical hits from Player's Option: Combat & Tactics, adds some additional automation for basic 2E rules (such as to-hit modifiers for weapon type vs armor), and also adds some house rules that are similar to rules seen in Hackmaster. Almost everything in this mod is toggleable.

The code is all freely available at Github, and there is a readme file there which goes into much more detail than I can on these forum due to a character limit: https://github.com/drplote/FG-2e-PlayersOption
If you plan to use this extension, taking a look at that readme is well worth it (though it's slightly out of date and missing a few of the newer features).

A brief overview of what's currently implemented:

https://i.imgur.com/t1y5bXl.png

Again, as a reminder, you can pick and choose what you want to use from this extension by toggling any option to "off".

"Always On" features

Added a radial menu to the player's Action tab attack button, that allows for quickly added modifiers like rear attacks, called shots, cheater dice (always 1 or 20), etc.
Added a radial menu to the Delay button the player action tab that allows for specific delay of 1-10 segments.
Added "Act" and "Done" buttons to the top of the player Action tab that allows them to move their init to the next segment or signify that their turn is done.
Added a radial menu to the GM Combat Tracker NPC weapons that allow the same as above.
Added a radial menu to the GM Combat Tracker actor list (the part on the left) that allows you to change their initiative (set to 1 or 10, delay, etc) or add/remove common effects (stunned, prone, etc)
Added an "Items" section to the Encounter record so you can spawn specific items on a creature. Pairs well with the "Adjust NPC AC for Items and Abilities" option.


Player's Option Rules

Combat & Tactics Critical Hits - Implements the critical hits system from the 2E Combat & Tactics book, complete with damage type vs creature type, and severities based on weapon size and creature size.
Combat & Tactics Initiative - Implements the phased initiative system from the 2E Combat & Tactics book.


Additional Automation

Adjust NPC AC for items and abilities - NPC armor class will be affected by worn armor, rings, dexterity, etc. If you're going to put armor on an orc, make sure you set it's base AC to 10 first!
Allow Player Cheater Dice - toggles if they have a button to force a roll of 1 or 20
Alternate Condition Modifiers - Changes how some effects like prone/restrained stack
Generate Hit Locations - Just for flavor, shows where a hit occurred
Ring Bell on Round Start - Rings the bell when it's a player's turn
Set Unrolled NPC Init to 99 - Set to 99 at start of round until they manually roll
Set Unrolled PC Init to 99 - Set to 99 at start of round until they manually roll
Stricter Resistance Rules - Changes how resistance works with multiple damage types (like a morningstar's bludgeoning/piercing vs a skeleton, which would be resisted in the base ruleset but not with this option enabled). Need work though since neither this nor the base ruleset really has it fully right yet in all cases, in my opinion.
Weapon vs Armor to-hit modifiers - Automates the weapon type vs armor tables from 2E (or whatever you set as custom values) like, for, example, +2 to-hit with bludgeoning vs chainmail


Hackmaster House Rules

Armor Damage - Armor soaks damage per hit and slowly degrades
Enable Comeliness - Adds stat to PC sheet
Enable Honor - Adds honor which can affect dice rolls (+1 or -1 to all dice)
Hackmaster 10-segment initiative - Uses the HM init system where all action occurs on segments 1-10, with 11+ rolling over to the next round. (Implemented but still being tested and not on live yet)
Hackmaster critical hits - uses the crit charts from Hackmaster (including severity calculations and size differences)
Hackmaster fatigue rules - Not quite RAW, but pretty close, slowly gaining fatigue in combat which can affect str/dex
Hackmaster stat scaling - Use the Ability Score modifiers from Hackmaster rather than 2E (generally, they're higher)
Hit Point Kickers - Add bonus HP to every NPC when they spawn on the CT.
HM Called Shot Modifiers - Use the HM tables for called shot modifiers rather than the flat -4 of 2E
Monster Thac0 Based on HM Attack Matrix - Doesn't reproduce the attack matrix from hackmaster, but does set Thac0 according to those charts
Penetration Dice - Damage/heals explode upward if maximum is rolled
Reaction Adjustment Affects Init - Dex affects init
Threshold of Pain - Chance to be stunned if an actor takes 50% of max health in a round.
Use Fumble Tables - Spice things up on a natural 1
What can hurt magic armor (if using armor damage?) - Specifies how magic armor takes damage under the armor damage system



I will post major updates to the extension to this thread, but the latest code is always available at https://github.com/drplote/FG-2e-PlayersOption if you want to just grab it and zip it into an extension yourself. What I post to this thread is (hopefully) stable, but any given pull on Github might contain experimental code that's still in progress, as I've been too lazy to set up a Release branch (mainly because I don't think anyone actually looks there).

WARNING: This extension touches a lot of systems (combat, initiative, character sheet, combat tracker, etc) and overrides or in some cases reproduces a lot of the 2E ruleset code, so any time the 2E ruleset updates and has changes in those areas, there is a chance that this extension will break or cause undesired behavior until I get it updated. If you run into any bugs, before reporting them against the ruleset to Celestian, disable the extension first and see if it still occurs. Most of the extension file names end in "*_po.lua" so if you see a bug pop up in the console with a filename that ends like that, it's pretty safe to blame the extension. You can submit bug reports to me in this thread or find me in the #dnd_classic_2e channel on FG's Discord.

WARNING #2: I started out writing this while using FGC but switched to FGU around September 2020 and have no plans to go back. As far as I know, everything in this extension works in FGC, but I don't plan to maintain backwards compatibility if fixing some FGC-specific bug turns out to be particularly complex. Hopefully we won't run into anything like that, but just be aware that I don't test this extension in FGC at all anymore.

Frankison
July 4th, 2020, 18:54
Got this error when scoring a critical hit.
Script Error: [string "scripts/utility_po.lua"]:10: attempt to get length of local 'set' (a nil value)

Sterno
July 4th, 2020, 18:56
Darn it, I did a lot of testing but apparently something go through. Looks like in this case it's treating something like a set which isn't, in some particular case. Can you tell me what kind of attacker, defender, and weapon you had so I can try to reproduce?

Frankison
July 4th, 2020, 18:59
The attacker is a PC with a long sword attacking an orc with no additions to the NPC.

Frankison
July 4th, 2020, 19:03
I'm rolling from the Attack box within the combat tracker. NVM tried from the character sheet. same error.

Frankison
July 4th, 2020, 19:11
The Combat & Tactics Critical Hits also disables the ability to increase the critical threat range effect. CRIT:16 for high mastery for instance.
I included a screen shot, in the chat log there is a 19 rolled with the Nat 20, hit by 5 you can see the effect is showing on the attack but it did not trigger the crit.
I then turned it off and tried again, without the rule in play the crit activates fine.
37406

Sterno
July 4th, 2020, 19:15
https://i.imgur.com/hGeMqkQ.gif

Just tried the same and it's working for me. Do you have any other extensions installed? The attack action code in the 2E Ruleset isn't really built for injecting code without massive code replacement so I had to replace a huge chunk of it... other extensions that do the same might be conflicting. Otherwise I'll probably have to add some debug logging to catch what's going on. This failure is probably related to it trying to determine the damage type of the weapon, and for some reason getting bad data back. If we're both using stock PHB and MM data, though, I'm not sure what could be happening.

As far as the crit range thing, yeah. I'm not sure what the best way to handle that would be since the crit range with RAW is already 18+. I could implement something there but I'm not sure what the right answer would be. The best choice might be having the nat 20 options use the specified threat range, but the 18+ version from Combat & Tactics ignore it. I guess some other options would be to extend by the same amount... a threat range of 19-20 with the 18+ system would be be 17-20 (essentially 1 better). Or yet another option is to only use the improved threat range if it's <18 and 18+ is selected.

Edit: Huh. Nevermind. This error is occuring when you manually roll a 20 rather than forcing a 20 to be rolled (which is what I did in all my testing because otherwise it would take forever). I should be able to track this down and fix it in a few.

Frankison
July 4th, 2020, 19:24
when I force the roll like you just did it works. Try attacking normally without using the force roll feature till you roll a crit.
The only other extension I had was a Decal extension.
Just tested it without the extension, same error.

Sterno
July 4th, 2020, 20:34
Version 0.2: Fixed glaring oversight where crits weren't working when rolled/dragged rather than forced via control-click.

Thanks for the feedback, Frankison. I've replace the extension in the OP with a fixed version.
It does not address your issue with manually set crit ranges on weapons. I'm open to whatever suggestions you have about how that should work.

JohnD
July 4th, 2020, 23:54
Nice work!

Sterno
July 5th, 2020, 01:01
Version 0.3: Extension file updated in the OP.

Renamed the "Nat 20, hit by 5" and "Any nat 20" crit options to "As base, hit by 5" and "As base ruleset" to reflect that those two options now respect the threat ranges specified on a weapon. Did not implement this for the rules-as-written 18+ option, though, because that gets really weird.

Currently, except when set to "Off", this extension does not respect the bonus crit dice you can specify on a weapon in that same area that you can set the threshold.

Lastly, visually, you don't see the animation for the the extra crit dice you roll on a critical hit, but the dice do appear in the chat log. I hope to get the animated rolls working in the future.

Sterno
July 18th, 2020, 21:44
I've updated this to version 0.4 (updated attachment in the OP).


Fixed some bugs introduced during the previous bug fix with weapon type vs armor type to-hit modifiers not working.


Fixed a bug where the toggle for Penetration Dice being enabled was accidentally tied to the HP kicker option rather then the Penetration Dice option.


Added a toggleable option for Hackmaster-style armor damage. As armor accumulates damage, its effective AC level drops. Under these rules, armor also soaks 1 or more points of damage for each die rolled. Defaults for armor match Hackmaster rules, but can be configured via the item's properties. In the armor's properties, you specify how many points of damage it soaks per damage die by putting "DR: n" in there where n is the amount you want soaked. You can also specify how many HP each "level" of armor has via "HP:[n1,n2,n3,n4,etc]" where each number specifies how much damage the armor can take before it drops one effective AC level. So, for example, if you want Full Plate (AC1) to soak 2 points of damage per damage die for the player, and want to set up it's damage levels, you might put this in the "Properties" text field on the item: "DR: 2, HP:[36,24,12,10,8,6,4,2,1]". This would mean it can take 36 damage before dropping to AC 2, 24 more before dropping to AC 3, 12 more before dropping to AC 4, and so on.


Added a toggleable option Hackmaster-style shield hits and damage. Detects when a miss is only a miss because the target was using a shield and reports it. Then, when you roll damage, damage is first applied to the shield, with any leftover (if enough damage is done that the shield breaks) flowing over and applying to the character. Uses some default HP totals (for instance, 12 hp total for a medium shield), but works best if you create some shields that match what's in Hackmaster (for instance, in HM a medium shield gives +3 AC and degrades after 5, 4, and then 3 hp of damage). HP can be specified the same was as for armor above.


Modified the assumption about weapon size when it comes to Combat & Tactics critical hits with natural weapons. I'd been assuming creature size - 2 size categories. Found rules in Chapter 9 of the book that specified what various natural attacks' relative sizes should be and changed the code to match that.


Added a toggleable option for Hackmaster-style Threshold of Pain check. A character's Threshold of Pain is equal to half of their maximum hit points. If they take a single hit that equals that threshold or higher, they save vs death (with a wisdom adjustment), and if they fail, they're unconscious for a number of rounds equal to however much they failed by. This is all automated, though you'll probably need to manually remove the "unconscious" effect in cases where it doesn't make sense, like when fighting zombies. Future plan is to check for creatures immune to threshold of pain and add support for different threshold amounts. For instance, in Hackmaster their are traits and flaws that can change it from 1/2 to 1/3 or 2/3.


Added a toggleable option to switch to Hackmaster-style stat adjustments. Basically, it's using that ruleset's to-hit modifiers, damage modifiers, reaction adjustment, etc, instead of 2e's. Can toggle back and forth at any time and it updates appropriately.


Added a toggleable option to apply a character's reaction adjustment from dexterity to initiative. This seems a little fiddly at the time you toggle it... it's possible the character sheet needs to be open when the toggle is flipped for the init value to immediately update. I'll look into improving that.


Added an automated saving throw vs death when a critical hit occurs (if using the Combat & Tactics crit option). Still doesn't actually apply any effects of the crit though... it just saves you the trouble of rolling manually.

Frankison
August 12th, 2020, 04:36
Really love this extension, Great job Sterno.
Found this little guy, when players forget to target a creature and you attempt to drag the result to the target it throws this error.

Script Error: [string "scripts/manager_action_attack_po.lua"]:386: attempt to index local 'rSource' (a nil value)

Sterno
August 12th, 2020, 13:30
Thanks for the report, I'll get that fixed (I think I may have already a few weeks ago and just haven't updated this thread yet, but I'll double-check). I actually need to push an update soon because I have a few new options (HM-style fatigue, HM Thac0 charts for monsters, some changes so things like poison and psychic damage can't hurt armor and armor can't soak that kind of damage, additional penetration options so certain weapons like crossbows can penetrate on max die and max -1, and an option to ring the bell at the start of a combat round), plus a few bug fixes and some cleanup around the way crits and other messages are displayed in chat. Been holding off though because it's taken 3 weeks to get fatigue working correctly. I'd keep thinking I had it fixed and then my weekly game would roll around and it would work for me but not my players. Node-permission issues!

The biggest bug fix is that in the currently published extension the automation for weapon type vs armor type is replacing any other to-hit modifier rather than modifying it. So if you attack at d20+15 but your target's plate armor gives a -2, you end up attacking at d20-2 instead of d20+13. I wasn't noticing during testing because it's usually just players wearing armor, and most monsters have +0 to hit, so it wasn't coming up. I'll get the update pushed today or tomorrow, though anyone concerned can always just grab the latest from Github.

daggertx
August 12th, 2020, 17:14
Thanks Sterno

Sterno
August 15th, 2020, 03:14
Just uploaded version 0.5 in the OP. Does not fix the bug Frankison reported with dragging dice from the chat window, because that proves to be a difficult thing to solve (but I'll try to at least make it not blow up in the next version).

New things in this version:


Fixed a bug where the weapon type vs armor type roll mods were replacing the roll's modifier rather than adding to or subtracting from it. For instance, if you were at +4 on your attack but attacked something in armor that should have given you a -2 mod, it was changing your attack to -2, rather than +2 (i.e., +4 - 2). My bad!

Added a Use Fumbles Tables option, which occur on a natural 1. They're entirely text-based and don't apply any effects of stat changes, so you have to decide exactly what their effects might be and apply them manually. There are two options. One uses the Hackmaster 4E fumble tables, straight from the GMG. The other, named "Sterno Fumbles", is something based loosely off the Player's Option concept of Battlefield Events, but kind of applied to be fumbles rather than general events. I imagine I'm going to change that table a lot but it's what I'm currently trying in my game. You probably don't want to use that one, and should use the 2E ruleset's built-in ability to hook in your own fumble tables instead. The HM4 ones were complicated enough that I wanted to handle it with an extension though. If you have fumbles enabled, typing /fumble in the chat window will generate a fumble for you.

Added the spell mishap tables from Hackmaster. You roll on the table by typing /mishap in the chat window. This option is the first thing I've added that's always enabled, but that's because it's not automated... you either type /mishap or don't! No automated effects here, just text.

Changed the display of critical hit effects so they appear on their own line in the chat window.

Added a Monster Thac0 Based on HM Attack Matrix option so that monster Thac0 is based on their HD per the Hackmaster GMG. Could potentially see adding another option here for the 1E matrix, but haven't done it yet. Note that it doesn't actually use the matrix perfectly, it just uses it to determine a Thac0. The main difference is that in Hackmaster (and I think 1e did it too), there are 5 ACs that a modifier 20 can hit. I went for the more simplified 2E method of just assuming every +1 on your roll is the equivalent to hitting one better AC.

After a whole lot of pain, I got a Hackmaster Fatigue Rules option working. It's based heavily on Hackmaster fatigue but a little simplified. I do plan to add the Player's Option version of fatigue in the future. Fatigue behavior is discussed in more detail below.

If you're using the Armor Damage rules, armor no longer soaks or is damaged by poison or psychic damage. Still trying to decide if other damage types belong in that category, but settled on these two for now.

If you're using the Penetration Dice, d3s can now penetrate. You can also add the word "penetrating" to the damage type on a weapon, and it will penetrate on max die roll and on max die roll -1. This was to support the fact that crossbows in Hackmaster behave that way. Could make for some cool magic weapon properties too.

Added a Ring Bell on Round Start option that just dings everyone at the start of a combat round.


Fatigue Overview

This is pretty much the Hackmaster fatigue system except I changed how you gain/lose fatigue to make it a little more automation friendly.

First off, every character has a Fatigue Factor. It's typically half their Constitution score. Then, a multiplier is applied based on their encumbrance level. Normal = 1.0, Light = .75, Moderate = .5, Heavy = .25, and Severe = 0. Hackmaster also has a few skills and talents that can modify someone's Fatigue Factor. On the character sheet "Main" tab, if you go to the Combat section and hit the gear icon, you can enter a Fatigue Factor multiplier which further modifies that Fatigue Factor. Most characters are just going to stay at 1 though.

Okay, so you got your fatigue factor, and for most unencumbered characters, it's equal to half their Constitution. This is how many points of fatigue you can gain before you start having penalties. So how do you gain fatigue? This is how it differs from Hackmaster a little (and to be fair, Hackmaster is a little vague on it). If you make any melee attack during the round, you gain a point of fatigue. If you make a ranged attack or cast a spell, you neither gain nor lose a point of fatigue. If you do none of the above, you lose a point of fatigue (down to 0).

If gaining a point of fatigue raises your current fatigue above your Fatigue Factor, the character makes a Fatigue Check to see if they gain a -1 STR/-1 DEX fatigue penalty. This check is a d20 roll that you want to have under the average of your Constitution + Wisdom. Fail the check, gain the penalty. Make the check, no penalty. Gain another point of fatigue next round, make another check! Keep failing checks, and the penalties keep stacking up! Note that the Strength loss can affect your encumbrance score, which in turn can lower your fatigue factor!

If you lose a point of fatigue and your current fatigue is less than or equal to your Fatigue Factor, and you have at least one fatigue penalty effect on your character, you make a Constitution check to try to remove the penalty. Success means you drop one fatigue effect (i.e., one -1 STR/-1 DEX effect). Failure means it stays there. However, if you ever get down to 0 fatigue, it clears all remaining fatigue effects without needing to make a check. Note also that a "Short Rest" or "Long Rest" also clears fatigue from all characters.

It should go without saying this is all automated, by the way, because who the hell would take the time to do this all manually?

Monsters are a little different. Because stats aren't as relevant for monsters are most just have 10 across the board in the Monstrous Manual records, the fatigue effect for monsters is -1 ATK and -1 AC instead of -1 STR and -1 DEX. This is different than Hackmaster, which says every time a monster would need a fatigue check, do a morale check instead to have them run away. I say, do both! Also note that monsters make their fatigue checks a little differently, as per HM rules. Instead of trying to roll under the average of Con + Wis, they try to roll under their morale score. If there is no morale score (or it's some gibberish I can't parse), it defaults to average of Con + Wis just like players, which is usually going to mean 9 or 10, since that's what most monsters have in their stats by default.

Also note that Fatigue Factor for a monsters is a little different. Player's used half their Con, modified by encumbrance. This wouldn't work for most monsters. Hackmaster had a supplemental book, the Hacklopedia Monster Matrix, which had fatigue factors for every single monster. I might eventually input all those, but for now, they just use 6. That's a tiny bit better than the average player, and eyeballing the values in the Monster Matrix, not bad as an overall average value. Obviously, though, a dragon might have more fatigue than a goblin. I'd like to eventually get something in there for this, but for now, if you really want a monster to be big and tough and not worry about fatigue, just give it a high morale and it'll never fail it's fatigue checks.


I need more testing in my own game, but I'm also considering having spells and ranged attacks given half a point of fatigue instead of no fatigue. Undecided. And I would like to give a means for the DM to manually apply a level of fatigue to someone for things that I can't really automate, like them doing a full run during their turn, trying to lift a heavy grate, etc. The only real way to do that right now is tell them to just smack a melee attack button that you'll ignore (but which will trigger the round-end automation for fatigue).

Frankison
August 15th, 2020, 07:18
I haven't had a chance to take a look at this but I ran a game with the extension tonight and when trying to use the THAC0 Button from the main tab of the character sheet as an attack option an error is thrown. I apologize that I don't have a copy of the error but I'm also not 100% sure if its even related to the extension.

Sterno
August 16th, 2020, 01:45
Haven’t looked yet but there’s a really high chance that’s my extension. Didn’t even really know that button existed and never used it. My guess is it acts differently than weapon actions and is blowing up because it can’t find weapon info. I should be able to make it behave like there’s no extension when you click it though.

What kids of things do you use that button for?

Frankison
August 19th, 2020, 04:35
I use it for any attack that is not something carried by the player. Punching, Throwing a rock, hitting someone with a chair, snatching a dagger from the air with the juggling proficiency, etc...

DM Wyvern
August 22nd, 2020, 07:04
I've created an extension for the 2E ruleset that adds the critical hits from Player's Option: Combat & Tactics, adds some additional automation for basic 2E rules (such as to-hit modifiers for weapon type vs armor), and also adds some house rules that are similar to rules seen in Hackmaster. Everything in this mod is toggleable... you can pick and choose which options you wish to use.

UPDATE: This post got too long, so additional features that came in after the original post are listed later in this thread.

This is absolutely epic, thank you Sterno!

daggertx
September 3rd, 2020, 20:26
I apologize if this has been mentioned but I get the below error in FGU (started testing this since Celestian has has put out an update for it).


https://imgur.com/LEF4FFP

Sterno
September 27th, 2020, 10:48
I've updated the file linked in the OP with version 0.6. It contains the following changes:


Fixes some FGU issues that weren't present in FGC due to the way DB node names were parsed.
If using armor damage rules, NPCs now benefit from worn armor. This adds to whatever AC you give them, so if you had a human fighter NPC with an AC in his NPC record of 3, and you put some Plate Armor in his inventory and equip it, he'd going to end up at AC -4 or something like that. For it to work correctly, set his AC to 10 (or whatever it might be with a dex bonus) and make sure his Plate Armor is equipped. This change was necessary to get the armor damage rules and decreasing AC with damage to work for NPCs. If you don't actually stick any armor in the NPC's inventory and equip it, there won't be any change to how it used to work. Considering pulling this into a separate option, though, because I find it useful even without using armor damage rules.
Fixed a bug reported by Franky where the Thac0 button didn't work.
You can now hold ALT while rolling damage to force damage to go to a shield against a PC or NPC.
Fixed the /pen commands, which apparently weren't working (and also completely unnecessary if you're on FGU, since that supports penetration dice natively).
Fixed a FGU bug that was also present in the 2E ruleset due to a difference in how dice arrays work between FGU and FGC that led to problems with armor damage and damage absorption abilities in general. (May revert this change in next release... it's either about to be fixed in the 2E ruleset or already has been... I haven't had time to check).

seanny
October 2nd, 2020, 10:46
Thanks for making this available.
I have been playing with the Weapon vs Armour and also the Penetration dice features.
They add a great new level to the game,makes it interesting to look at the chat box for the various armour effects on the dice roll and also whether dice damage explodes,this makes the lowly dagger with d4 damage a lot of fun.
Really like it,was feeling a bit jaded with the regular gameplay and this extension caught my eye in the forum list and it is great to play around with.

Sterno
October 2nd, 2020, 16:16
Glad you're enjoying it, Seanny! I would caution you against using penetration dice without some sort of bonus hit point rules or some other way to mitigate the increased damage, though. While on average, penetration only adds half a point of damage per die (regardless of die type), you can get some really big spikes that are hard to deal with using standard 2E hit points. For example, there's a 1 in 64 chance your typical longsword damage might penetrate twice, meaning your damage would land in the 15-22 range before even adding in other bonuses.

Hackmaster handles that by giving everyone +20 hp. This makes combats go longer, but also gives both sides more time to retreat when things start to go badly (and, IMO, makes morale rules more important so that every combat doesn't turn into a long slog).

Sterno
October 10th, 2020, 20:16
Verison 0.7


The big update was adding the initiative system from Player's Option: Combat & Tactics. More details below.
Fixed a bug (caused by the armor damage part of my mod) where Warding items like Bracers of Defense weren't granting an AC bonus, and other items like Rings of Protection were stacking with magical armor bonuses to AC when they shouldn't.
Added another option to the "Hit Point Kickers" option to allow for size-based kickers. Instead of a flat +20 hp for everything, it starts at +0 for Tiny creatures and adds +10 for every size category they go up.


Combat & Tactics Initiative

https://i.imgur.com/IRDVOTe.gif

Enabling this option switches from standard 2E initiative to the intiative system presented in the Player's Option: Combat & Tactics book (starting on page 17). Overall, this makes initiative for certain actions happen more consistently at the same time every round, rewarding quick characters and weapons and penalizing slow ones. To summarize it a bit, each round is broken into 5 phases: very fast, fast, average, slow, and very slow. Each round, each side rolls a d10 for initiative. The lowest roll wins. Ties are rerolled. Rolling a 1 means all combatants on that side will act one phase quicker that round, and rolling a 10 means all combatants on that side will act one phase slower.

The phase a given character or creature acts on is determined by a number of factors. First off, each character has a base initiative that's based on their size, speed, and encumbrance. Tiny and Small creatures are very fast, man-sized creatures are fast, large creatures are average, huge creatures are slow, and gargantuan creatures are very slow. This is adjusted one phase quicker for creatures with a movement rate of 18" or greater, and slower by one phase for creatures with a movement rate of 6" or less. Being moderately enumbered make initiative one phase slower, while being heavily encumbered is two phases slower and severely encumbered is three phases slower. For most unecumbered PCs, they'll usually end up with a base initiative phase of "fast".

If a character is just moving or acting in a way that doesn't involve a spell or weapon, they use their base initiative. If they're casting a spell, their initiative is based on the casting speed of the spell. Spells with a casting time of 3 or less are fast, 4-6 are average, 7-9 are slow, and full round cast times are "very slow".

If instead the character is using a weapon, they'll end up taking whichever initiative phase is worse... their base initiative phase or their weapon's initiative phase. The Player's Option book has a list of all weapons and what their speed phases are, but in lieu of coding that all in and making users of this mod maintain a new property on all the weapons, I instead based it on the weapon's "weapon speed" that already existed in 2E, and based it off what's in the Player's Option book. It led me to these ranges for weapno speed: Weapon speed <= 0 is very fast, 1-4 is fast, 5-7 is average, 8-13 is slow, and 14+ is very slow. If you are using the "Reaction Adjustment Affects Init" option of this mod, the way it works it to add or subtract your reaction adjustment to the weapon speed before determing the phase. It has no affect on spells or base initiative.

Some spells or other effects can give you an initiative bonus in 2e. These effects would like like "INIT: 4" and the like in Fantasy Grounds. The Player's Option book gives no guidance on how to deal with these, so I decided that every 3 full points of initiative bonus or penalty would change your initiative by one phase. Thus, a "INIT: 4" effect would amke you one phase slower, while a "INIT: -9" effect would make you 3 phases faster.

Finally, remember that a given side rolling a 1 or 10 affects the final determined initiative for the characters on that side by subtracting or adding one phase. When the round becomes, combat will start with the winning side's "very fast" characters, then move on to the losing side's "very fast" characters. Then it'll drop a phase to the winning side's "fast" characters, then the losing side's "fast" characters, and so on. Do to the different ways your initiative can be bumped up or down a few phases, I did create some extra phases. "Very Fast+" is one phase faster than "very fast", and should only be able to occur if a character has a beneficial initiative effect or was already "very fast" and rolled a 1 for initiative. "Very Slow-" is any initiative phase slower than "very slow", and really has no lower limit (see "How htis works behind the scenes in Fantasy Grounds" for more info).

Dropping one initiative phase
When hitting the "Next Actor" button (the down arrow near the bottom of the combat tracker), the DM can hold down alt, shift, or control while clicking it to drop the current actor's initiative by one phase and then moving on to the next actor (or staying on the current actor, if that would still make them next). This is needed because in the Player's Option initiative system, there are a number of cases where your initiative might drop by one phase mid-round. For example, if a character is moving, they begin moving on their normal initiative, can move up to half their movement, and then can finish their movement on the following initiative phase. Likewise, if they're going to move and attack, they'd move on their normal initiative phase and attack one phase later. Multiple attacks are meant to occur on subsequent phases, so a character with three attacks might get his first attack on "fast", his second on "average", and final attack on "slow".

This can also be useful if a character states they're delaying their action. Just delay them a phase, move on, and when you get to them again ask if they want to go yet.

How this works behind the scenes in Fantasy Grounds
Because I don't want to rewrite the entirety of the Fantasy Grounds initiative code, this kinds of grafts itself on top of the normal 2E initiative system by treating certain initiative numeric values as certain phases. We also technically can go faster than very fast (called very fast+) or slower than very slow (called very slow-). It works as follows:

Initiative 0: Winning side's "very fast+" initiative
Initiative 1: Losing side's "very fast+" initiative
Initiative 2: Winning side's "very fast" initiative
Initiative 3: Losing side's "very fast" initiative
Initiative 4: Winning side's "fast" initiative
Initiative 5: Losing side's "fast" initiative
Initiative 6: Winning side's "average" initiative
Initiative 7: Losing side's "average" initiative
Initiative 8: Winning side's "slow" initiative
Initiative 9: Losing side's "slow" initiative
Initiative 10: Winning side's "very slow" initiative
Initiative 11: Losing side's "very slow" initiative
Initiative 12: Winning side's "very slow-" initiative
Initiative 13: Losing side's "very slow-" initiative
Initiative 14+: Basically bonus "very slow-" phases

Right now, when a character "rolls" their initiative for a weapon or spell like they normally would in Fantasy Grounds 2E ruleset, they will see a die roll and a message will appear in that chat box, but this is really always producing a fixed result... you'll note that the message is about a d0 being rolled with certain modifiers added. This is simply to make sure the result comes out to the correct number (as shown above) that puts them in the right initiative phase and side. A lot of rework would be needed for me to clean this up and make it prettier, and it's also a very risky area of the code to change, so this is probably as good as it's going to get. You can basically ignore the roll though and just look at where you land in the combat tracker.

Player Characters who have not yet rolled initiative (such as when a new round starts) default to their "very slow-" phase. If your bothers can't be bothered to roll, they can just go last!

Lastly, since under the hood this is laying on top of the base ruleset's initiative system, it's easy to toggle back off. Whether toggling it on or off, though, you probably want to start a new round right afterwards so all the default initiatives for NPCs roll correctly for whichever system you're selected.

https://i.imgur.com/dKfIXGT.gif

Sterno
October 11th, 2020, 13:30
Version .71

Fixed a bug reported by daggertx where new monsters added to the CT were showing their HP even if that option was disabled.

galfaroth2000
October 11th, 2020, 16:39
Nice work Sterno... when a new version is available, is it automatically updated in FG, or must be download again manually?

daggertx
October 11th, 2020, 16:59
Thank you for fixing the bug

Bonkon
October 11th, 2020, 17:23
Good Day Galfaroth2000 :)
These types of add on extensions will need to be manually updated in your system. :)

Sterno
October 12th, 2020, 05:14
Version .72

Fixed a bug with the new init system where Reaction Adjustment from Dexterity (if you were using that option) was applying in the wrong direction.


Version .73

Now players (before, it was DM only) can hold alt, shift, or control when hitting the "End Turn" button on the combat tracker to drop their initiative to the next phase. In the future I'll probably add an entirely separate button for it.

Sterno
October 28th, 2020, 22:26
Version .74

Fixed a bug where if you delayed initiative and it took you to the same initiative as others, depending on if the default "tie" sorting from the 2E ruleset put you at the top of that list, you could be skipped.

Added an "End Turn" button in the top combat section of the Actions tab on the character sheet. You still need to hold alt, shift, or control to make it delay a turn rather than end it. Entirely separate button coming soon for delay, probably. Button appears regardless of whether or not you're using the new initiative system, but like the combat tracker button, only allows for "delay" if the new initiative system is enabled.

https://i.imgur.com/213RD71.png


Version .75

Fixed an issue where the "generic" init buttons (not tied to a weapon or spell) were rolling incorrectly.

Fixed a display issue that said the NPCs would go one phase slower when the PCs rolled a 10 for init.

Added a bunch of console debug lines to show what's happening during initiative rolls to help with any future bugs.

Sterno
October 29th, 2020, 06:16
Version .8 update

Renamed the "End Turn" button added in the previous version to "Done".

Added a "Delay" button that drops you one initiative phase. Unlike the "Done" button next to it that I added, "Delay Turn" is only visible if you have the Player's Option Initiative rules enabled. You can still hold control, alt, or shift while hitting the End Turn button (either on the action tab or the combat tracker) to delay instead, too, if you prefer.

https://i.imgur.com/WEobVYY.png

Added fatigue tracker and armor/shield damage trackers to the main tab of the character sheet. Allows players to adjust this manually if the need arises. These controls are not shown if their respective options are not enabled.

https://i.imgur.com/3ltsTed.png

Sterno
October 31st, 2020, 05:11
Version .81

Fixed a bug where dragging an untargeted attack from the chat window to an actor would cause an exception. This should now work without breaking, but note that options like weapon type vs armor to-hit modifiers, critical hits, etc won't process when doing this because it loses information about what the attacking weapon was.

Sterno
November 28th, 2020, 03:58
With the latest 2E ruleset update which added a Delay button, the Delay/Done buttons that I added in version .80 seem to be broken now. I'll try to get those fixed soon and integrate with the ruleset changes. Holding control, shift, or alt while clicking "End Turn" on the combat tracker still works to delay turn.

There's also a known issue with player's rolling init in the PO init system, where it assumes they always won the group init roll and ignores a 1 or a 10. Note that if a DM rolls it for a PC it works, but if the PC rolls it themselves it doesn't. This is due to a bug where I'm trying to track state of that group init roll, except it's only on the server side and not the client side so it fails to look it up properly when anyone but the GM does it. It'll be fixed in the next version as well.

JohnD
November 28th, 2020, 05:01
Noticed a couple things in my game tonight relating to armor damage.

1. PC is wearing Samnite armor and the extension is treating it as no armor worn. Samnite is AC 5. Screenshot of the armor on the PC follows. Samnite armor is I believe in the Fighter's Handbook. I entered the 2 into the HP Lost field to keep track manually (re: screenshot).

2. All PCs wearing armor except the Samnite have the extra fields on their Main tab except for a newly created PC. This PC is wearing standard leather armor and the extra fields do not show up on his Main tab. When hit, the armor absorbs damage and when I examine the details of the armor, the damage field correctly shows me the points absorbed. Other characters wearing leather armor have the extra fields.

Any ideas?

41485

Edit: I exited and launched the campaign again. Now the issue in item 2 shows properly. Issue 1 is still unchanged.

Edit 2: To fix one do I have to add armor data points to the Samnite so the extension knows how much can be soaked before loosing AC?

Edit 3: OK so I added to the Samnite armor properties HP:[8, 6, 4, 2, 1] and it seems to work now.

Disregard this whole post unless you want to impart some wisdom. :)

Morquendel
December 1st, 2020, 12:42
Thank you :)

Nimroth
December 1st, 2020, 16:31
Thank you so much!

Sterno
December 8th, 2020, 21:35
Version .85

Just updated the extension.


Removed the delay button I'd added previously and hooked into the Delay buttons that are now part of the 2E ruleset. The behavior of those buttons will now change depending upon which initiative system you're using.
When increasing fatigue manually via the control on a character's main tab, treats the character as "unrested" for the round so they no longer gain a fatigue point back when that round ends.
Fixed an issue where the group init rolls for PCs wasn't working correctly, resulting in them having a potentially incorrect initiative whenever a player rather than the GM rolled their init. Basically, players were unaffected by 1s and 10s on the group init roll, and always treated as being on the winning side of group init before this fix, if the player themself rolled. Oops.
Changed my dumb fumble tables that I'm still not happy with.
Fixed a minor bug where fatigue state (whether or not a player should gain fatigue when the round ends) wasn't clearing after the encounter ended, resulting in sometimes incorrect results on the first round of the next combat.
Changed the Threshold of Pain effect to be "Stunned" rather than "Unconscious".
Added a DMGDX effect. It is similar to the DMGX effect, which multiplies the damage result by a number, except that DMGDX multiplies damage dice by a number. For instance, backstab for a 5th level thief in the existing ruleset might have the DMGX:3 effect, multiplying their rolled damage by 3. If they roll a 2 on a 1d6, their backstab damage would be 6. Using DMGDX:3 would instead roll 3d6 for damage. Using DMGDX, only the dice are multiplied (and then rolled separately), and modifiers such as strength, specialization, etc are not multiplied. There's no option in preferences that enables this effect... you can simply add that effect to things or not, as you wish.
Discovered that the Player's Option Combat & Tactics book was misprinted, and the piercing and slashing critical hit charts were mislabeled. I'd been wondering why piercing crits could sever limbs but slashing crits couldn't! Found errata on that and switched those up in the extension so they're correct now.
Removed the "done" button I'd previously added to the action tab of the player sheet which would end the character's turn. For some reason it wasn't working anymore after the 2E ruleset change and I was feeling too lazy to fix it since it was just a "nice to have" anyway.

galfaroth2000
December 9th, 2020, 13:12
Great work, thank you!!

Sterno
January 12th, 2021, 21:04
Today's 2E Ruleset update had some big combat tracker changes that caused the extension to break while loading. I've just uploaded version .91 to fix that, though I need to do some more testing to see if everything still works with the combat tracker changes. Preliminary testing seemed okay. Since it might be a day or two before I can do that, I figured I should get the big fix out right away though.

Version .91
In this update:


Added an option to add the "Comeliness" stat for characters. Only appears on PCs, not NPCS, because I'm lazy and figured for 99% of NPCs you won't care, and if you do, you can just add a note in their "special defenses" or something
Added an "Honor" stat that can be enabled and follows the rules for Great Honor, Normal Honor, and Dishonor that are used in Hackmaster. The short version of this is that if the honor score of a character is in the proper range for their level, they are considered to be in Great Honor and will get a +1 to every die rolled (as far as automation go, this applies to attribute checks, skill checks, saves, heals, attacks, and damage). Dishonor does the same thing, but with -1 per die rolled. To be clear, this is a +1 per die, not per roll. If you're rolling 1d4, that's a +1. If it's 2d4, that's +2. If you're using the penetration option and your 1d4 penetrates 3 times, that's going to end up being +4 damage.
Lastly, as mentioned before, fixed a reference the extension had to some combat tracker elements that don't exist after today's ruleset update. Still testing for other problems, though.

JohnD
January 13th, 2021, 00:00
Thank you!

Sterno
January 23rd, 2021, 04:08
Discovered an issue where due to the 2E ruleset combat tracker changes, attacks rolled from the combat tracker are no longer properly determining the damage type of the weapon. This means attacks rolled from the combat tracker are not triggering the "weapon type vs armor" automation, nor are they properly determining critical hit effects (since the damage type is needed to know which crit table to look at). Looking into how to fix it but unsure when that'll be.

Attacks rolled from the character sheet still work as they used to.

Sterno
January 23rd, 2021, 04:47
Version 0.93

Fixed an issue where damage type wasn't able to be determined after the recent ruleset CT changes. Found where to hook in and set it and attacks rolled from the combat tracker should correctly work with critical hits and weapon type vs armor automation again.


Sure would be nice if FG had some auto-update options for mods and extensions!

Sterno
January 25th, 2021, 21:24
Version 0.94



Fixed an issue where messages in that chat window about armor damage, as well as the messages showing weapon type vs armor to-hit modifiers would show the full name of armor even if it was not ID'd, which means players might see "Banded Mail +1" when they should have only been seeing "Banded Mail" because they hadn't identified the item yet.

Fixed an issue where an exception would be thrown if crits were severity > 13.

If using the Player's Option critical hit rules, checks and skips generation of a critical hit result (including the bonus damage) if the target has the "IMMUNE: critical" effect on them. Useful if you want to make undead or oozes/jellies/etc immune to critical hits.

Added a "CRITSIZE: n" effect that is used with the Player's Option critical hit rules. Any actor with this effect on his weapon is treated as "n" size categories larger when generating critical hit severity if they have this effect. For instance, if you were using a Longsword (Size M) but had a CRITSIZE: 2 effect on you, the longsword would be treated as Size H for determining crit effects, which means it would likely be rolling bigger dice to determine crit severity (as per the Player's Option crit rules).

Added a "CRITSEVERITY: n" effect that is used with the Player's Option critical hit rules. Any actor with this effect has "n" added to the severity of any critical hits he rolls. For instance, if you normally were rolling 2d4 to generate crit severity because your weapon was the same size as the target, but you had a "CRITSEVERITY: 2" effect, your final severity would be 2d4+2.

galfaroth2000
January 27th, 2021, 11:58
Thank you for all the effort you put on this mod... I am always surprised by the new improvements.

Korytryn Di Morningstar
January 29th, 2021, 23:45
I was looking for something to make critical rolls of 18+ then i find what i dream for complete combat and tactics which is my most favorite option rulebook. The only thing for me missing now to edit critical rolls of 16+ with the high mastery skill option. Is this impossible to add? I would like to have 16+ crits with high mastery, 18+ crits with the profecient and only natural 20 crits with non-proficient. Is it impossible to edit weapon skills? we already have dmg and hit there.

Also is it possible to edit hit locations (for called shots and higher ground attacks 1d6+4)

Thank you so much for your great work. You are awesome.

Sterno
January 30th, 2021, 05:16
Critiicals of 18+ are doable even without this extension, and making them 16+ are doable as well (with or without the extension). At this time there is no way to do force a hit specific hit location, although adding that is on my list of things to do. In the meantime, one thing I did for my game was add all of the Player's Option tables to be "Tables" in Fantasy Grounds that I can manually roll on, and I currently use those for called shots (and I put them in for spell crits, too). I'm already kind of on the line in terms of sharing the crits as an extension though and I think I'd be crossing over the line if I shared a mod that had all the crit table text input, so I don't think I can share that one.

As for how you can semi-permanently change a character's crit range. You'd have to do this character by character, which isn't ideal if you want every character and monster to crit on 16+. But this should work fine for high mastery. See below where I change a character's melee crit range to be 16-20 (but leave the ranged crit range at 20). Note that it affects all melee weapons though.

https://i.imgur.com/wewnVBg.gif

If you're looking for a more temporary crit bonus, like "on the next attack" or something, and they'd just click it any time they're about to make an attack with their weapon they have mastery in, you could add a power to the character which has a "CRIT: 16" effect, set to expire "On Next Action". So they'd go to their Powers tab, hit that, then roll their attack. Another alternative is to add a "CRIT: 16" effect to their weapon, which is automatically applied whenever they have it equipped and automatically removed when it's unequipped (though it will affect all attacks while that weapon is equipped, not just attacks from that weapon). None of the solutions are perfect and it's hard to say what would fit you best.

As far as the higher ground thing, I will add an effect, "HITSIZE" which modifies the size it treats you as for crits, the same way I just recently added "CRITSIZE" to affect the weapon size. I'll put that in the next update (and possibly the called shot thing too... I started on it last weekend but ran into a few problems and didn't finish).

Sterno
February 3rd, 2021, 19:03
Version 0.95


Made undead immune to fatigue checks.
Added a "CRITCHANCE: n" effect which works when on the attacker. Positive numbers increase your threat range while negative numbers shrink it. For example, if you normally crit on 20 but have CRITCHANCE:3, you'll crit on 17, 18, 19, or 20. Stacks with the already existing "CRIT: n" effect, so that if you had "CRIT: 18" and "CRITCHANCE: 2" you'd end up critting on a 16 or better. Works regardless of whatever other extension options you have enabled.
Added a "HITSIZE: n" effect which works when on the attacker. Treats your hits as "n" size categories large (or smaller, with a negative number) when determining how to roll which location you hit (as per Player's Option rules). Could be used to simulate attacks from higher ground, or certain magic weapons, or I don't know, really tall but still medium sized creatures. Someone asked for it, so now you have it. Doesn't do anything if you aren't using the Hit Location or Player's Option crits options.
Added called shot buttons to the Modifiers screen. If you're not using the hit locations or crit options of the extension, there isn't much point in using these, but if you do. it'll make sure crits hit what a called shot was aiming for. For more detail, see below.
Added a new "HM Called Shots" option that when enabled, changes the to-hit penalty of various called shots, expands critical threat range for called shots, and in some cases changes severity. For more details, see below.


Called Shots

These are new buttons on the Modifiers screen.

If you're not using the Hit Locations or Player's Option Crits features of this extension, there isn't much point in hitting these buttons. All it'll do is apply a -4 to your attack rolls.
If you are using the Hit Locations feature (but not crits), it'll also change the text in the chat window when you hit to say that you hit what you were targeting with your called shot, instead of a random location.
If you're also using the Player's Option Crits feature of this extension, it'll make sure that if you are doing a called shot and score a critical hit, that you roll on the appropriate critical hit table for the location you were targeting. Eye and Neck roll on the Head crit table, hand rolls on the arm crit table, and groin is on the abdomen crit table.



Lastly, because I personally run a house-ruled version of Hackmaster, I added a "HM Called Shots" option you can enable that changes the effects called shots have. Without this option enabled, they are all simply a -4 to-hit penalty, as per Player's Option rules. Called shots in Hackmaster aren't all one flat penalty though, and also expand your crit range, so with this option enabled, you get the following effects:



+----------+-----------------+----------------+------------------+
| Location | To-hit modifier | Severity Bonus | Crit Range Bonus |
+----------+-----------------+----------------+------------------+
| Abdomen | -4 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Arm | -3 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Eye | -10 | 2 | 1 |
+----------+-----------------+----------------+------------------+
| Groin | -4 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Hand | -6 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Head | -6 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Leg | -6 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Neck | -8 | 1 | 1 |
+----------+-----------------+----------------+------------------+
| Tail | -6 | 0 | 1 |
+----------+-----------------+----------------+------------------+
| Torso | -2 | 0 | 1 |
+----------+-----------------+----------------+------------------+



I may eventually change these to something I like better. Right now the to-hit modifiers are based of the Hackmaster rules, but head and legs being just as difficult to hit (especially since legs are otherwise 40% of hits using Player's Option rules) seems weird. But it's what I'm doing for now. If you have any experience modifying extensions, you can look to the DataCommonPO and edit the aCalledShotModifiers array to set these values however you wish.

Random Bonus Update: Noticed I added this a few versions ago but apparently didn't report it. If you're using the Monster Thac0 Based on HM Attack Matrix option, which ignores the Thac0 input on NPCs and calculates it from their HD instead, you can now add "USETHACO" anywhere in the "Special Attacks" section of their record and it will use the Thac0 instead. Handy for when your NPC is a 4th level wizard and you don't want it hitting like a 4 HD monster, and the like.

Sterno
February 17th, 2021, 04:57
Today's big update to the ruleset broke this extension and it looks like it'll probably be a few days before I can get everything fixed up. Lots of changes. Anyone using it should disable it in the meantime.

Sterno
February 18th, 2021, 04:14
Version 0.97


Fixed some (but possibly not all... more testing needed) bugs introduced by Tuesday's underlying 2E ruleset and CoreRPG ruleset code changes.
If you're using the honor rules option, NPCs can be put in Great Honor (+1 to each die rolled) or Dishonor (-1 to each die rolled) by putting "GREATHONOR" or "DISHONOR" in the special attacks section of their NPC record.
Added a "CRITRESIST: n" effect, which lowers the severity of a crit a character with this effect receives by n (if using the Player's Option crit rules). For example, if a crit severity of 8 was generated but the defender has CRITRESIST: 3, the final crit severity would be 5.
If you're using the Weapon Type vs Armor to-hit modifiers option, you can now set those modifiers directly for each armor type via their properties. Previously, it was doing it through hardcoded values by matching the armor name... for example, if the name was "leather armor", it would apply the 2E PHB leather armor modifiers. Use "Bludgeoning: n", "Slashing: n", and "Piercing: n". For instance, in 2E, field plate would normally give a -3 to-hit for slashing weapons and -1 to-hit for piercing weapons. You would represent this by putting "Slashing:-3;Piercing:-1" in the properties section on the armor record. Note that as soon as it detects a value for any of these, it will no longer try to use the default values that it used to be doing by doing name matching.
If you're using the "Armor Damage" option, adding "IMMUNE: <damagetype>" to an armor record's properties means that the armor can not be damaged by that type of damage. For instance, if you had some magic item called "Molten Plate Mail" or something that is supposed to be made out of glowing molten steel, you might add "IMMUNE: fire" to the properties to make that armor immune to damage from fire. Note that this is only talking about the armor itself being immune to damage... it does not confer it's immunity to the person wearing it. If you want that to happen, you should still use the "IMMUNE: fire" effect.
If you're using the "Armor Damage" option, you can add "Potency: n" to the armor record's properties. This value adds or subtracts to the armor's magic bonus when determining whether or not the armor can be determined by a weapon. This is mainly only useful if you want to make some armor that provides a +1 AC bonus but want it to only take damage from +3 or better weapons (instead of +1 or better, as it would normally act), or something like that.
If you're using the "Threshold of Pain" rules from Hackmaster, I fixed a misunderstanding I had about how they should work. Threshold of Pain should trigger if you take half your hit points or more in damage in a single round now. It used to only happen if you took it in a single hit. So if you have 30 hp and take a 15 hp hit, you'll make a Threshold of Pain check (just like always). If you instead take a 10 hp hit and then a 5 hp hit in the same round, you'll also end up making a check after the 5 hp hit. Subsequent hits after you've crossed the threshold during that round will prompt additional checks, so if you took one more hp of damage after that 10 and 5 hp hit, you'd have to make yet another check.



As a general note, there were some big changes to the underlying 2E and CoreRPG code in Tuesday's update. I've fixed the immediate issues (like not being able to attack) and things seem okay to me right now, but given the scope of the changes it wouldn't surprise me if some other issues surface with broader testing. Please post if you run into any problems.

Sterno
February 22nd, 2021, 12:53
Tried to run my game with this last night. Still has issues, some of which are definitely the extension and some could be the extension or the underlying ruleset. Will be working on it throughout the week but I don’t expect to have another update ready until at least Wednesday. Recommend unloading it for now.

Sterno
March 1st, 2021, 05:29
Another update, didn't add to the version. Just fixes a few outstanding bugs from the ruleset patches. Tested it in my Sunday night game and the only issues I ran into seem unrelated to the extension and were things I believe I saw Celestian say in Discord would be fixed in next Tuesday's patch.

osarusan
March 2nd, 2021, 09:28
house rules that are similar to rules seen in Hackmaster.

You wonderful, wonderful person!

I have been looking for something to let me play Hackmaster in FG for the longest time. I haven't really been happy with attempting to use MoreCore for that, and I always thought the 2e ruleset would be a better starting place. Your additions sound amazing. I'm curious - are you actually playing HM with these, or are they just a handful of rules that you liked and happened to nab for your ruleset? Because I would pay for a ruleset or 2e extension that makes Hackmaster fully functional in FG.

Sterno
March 2nd, 2021, 15:27
I used to run a live version of Hackmaster (4th edition) 15 years ago, had kids, and never really had time to game again until recently when I decided to try VTT. I started out last year creating a ruleset for Hackmaster (using Celestian's 2E ruleset as a base and modifying it). That ruleset was closer to true Hackmaster than this extension is, because it had the full initiative system and crit system of Hackmaster. However, the downside to that approach (ruleset vs extension) is that I didn't get the updates that Celestian made to the 2E ruleset unless I manually merged them in every time his ruleset updated. Plus, I started to want to try out some other things, like the Player's Option critical hits and initiative system. So I eventuallly decided to rewrite it as an extension with toggleable options and could find the exact set of "features" that I wanted in my home game. That old ruleset hasn't been updated and likely doesn't work anymore after the big CoreRPG changes a few weeks ago, so I recently removed the link to it from my signature.

Personally, despite it being a lot of work to add, after a few weeks my player's decided they preferred 2E initiative to Player's Option initiative, so I don't even use that option now. I use just about everything else in the extension, though. I plan to eventually (soon) add two things to the extension that my HM ruleset had... the Hackmaster initiative system (weapon speeds were basically 5 less, spells went off on their casting time +1d4 if they had material components, missile weapons firing on fixed initiatives, and a round ended at segment 10 with any initiatives higher than that rolling into the next round), as well as the Hackmaster crits. The reason the version of this extension hasn't hit "1.0" yet is because those are the two features I feel like I need to add to really capture the full Hackmaster experience. Unsure whether or not I'll end up using them personally though... Hackmaster crits are pretty lethal. I might end up going with a hybrid where I use the Hackmaster crits, but have the Player's Option style of "You need to hit by at least 5 to crit, and the target can save vs death to avoid the extra effects" to lower their lethality. Otherwise, 5% of hits in Hackmaster have a really good chance of just flat out killing you or disabling you, if you play with rules as written.

So to directly answer the question, yes, I'm currently running a Hackmaster game using this except I'm using 2E initiative and Player's Option crits instead of HM rules for those right now.

I have no plans to make a paid extension. I created this because I enjoy the game and feel like if I'm doing all this work, hopefully someone else can get use out of it. If there are some rules from Hackmaster that you think the extension doesn't cover that you'd like to see, let me know and I'll see about adding them.

Also, I personally have a module that contains all the Hackmaster spells, races, and classes that I use in my own game, but I don't think it's shareable due to copyright issues (and because I pulled a lot of the common ones from the for-sale 2E modules), and I also think there's no chance to publish it even if the copied 2E content were removed, because I'm pretty sure Kenzer & Company can't even sell Hackmaster 4e stuff anymore. So unfortunately, people trying to run a HM game either need to create that themselves or use the 2E stuff, which to be fair, is close enough for most things unless you're getting into some of the specialist wizard classes, or pixie fairies, etc. I might look into putting out a module that has some of the races (half-orc, half-ogre, pixie fairy) and classes (barbarian, assassin, monk, dark knight, specialist wizards, etc) if I can figure out a way to do it legally (which, at a minimum, means not copy and pasting the class text).

All that said, here's what I think are the big changes between Hackmaster and 2E, and which of those I've implemented so far:

1) More races/classes - done personally as discussed, not sure how to legally share these, but people can create them on their own
2) Penetration dice for healing/damage - implemented
3) Comeliness score - implemented
4) Honor affecting dice rolls - implemented
5) 10 segment initiative system - Not implemented in extension yet (but code for it has been written/tested in the old ruleset code), but will be added soon
6) Critical hit charts with severity rolls and location rolls - Not implemented in extension yet (but code for it has been written/tested in the old ru), but will be added soon
7) Fatigue - Implemented with minor changes
8) 20 point kickers - Implemented for NPCs. Players have to add it manually when they create their character. Also added a house-ruled "size based kicker" option because I hate Tiny creatures getting +20 hp. Stirges and rats and such with +20 hp is dumb.
9) Hackmaster stat modifiers (different charts for strength, dex, etc) - Implemented
10) Dexterity reaction adjustment affects init - implemented
11) Armor damage and damage soak, and shield hits/damage - implemented
12) To-hit modifiers vs different armor types - implemented
13) Using attack matrices vs Thac0 - not implemented and don't plan to, but did implement the correct to-hit chance for monsters based on HD if you translate it to Thac0. So works out almost the same except a "20" doesn't hit 6 ACs like it would in Hackmaster or 1E.
14) Threshold of Pain checks - implemented
15) Secret Bonus feature: Want to roll quirks and flaws? Type /qf (or, /getf*cked, and you can guess which missing letter to fill in there) in the chat console and it'll do it for you (PHB quirks and flaws only).
16) Double Secret Bonus Feature: type /mishap to generate a spell mishap result. Since that can generate a quirk or flaw, that's why #15 even got implemented. Despite having spent hours coding these charts in, I've literally never used them in-game because spell mishaps don't usually come up. But hey, it's there if you want them!


To me, those are the big changes I think between 2E and Hackmaster, and as you can see, most are already implemented or soon will be. If you feel like something is missing that really makes for the real Hackmaster experience, let me know and I'll see how hard it would be to add.

osarusan
March 5th, 2021, 14:20
Wow, that's incredible. I have tried and run into a brick wall multiple times trying to make something to make Hackmaster playable in FG, and you've gone and done it!

You mentioned HM4e, which I am unfortunately not very familiar with. I started playing Hackmaster 5e, and I don't know precisely what has changed. Does 4e use an initiative count up system the way 5e does? Because to me that is the "one killer feature" of Hackmaster 5e that sets it above other D&D variants.

I've got this nagging feeling in the back of my head that the count up system could be worked into FG's default initiative system without too much of a Herculean effort. By treating the "New Round" button as a +1 second button, I've been able to simulate the initiative count. The trick after that would be to automatically add each weapon's speed to the character's initiative count after each swing, pushing them further up in initiative.

I suppose that probably doesn't make sense if you're not familiar with 5e's rules. I know 5e builds off of HM4e/AD&D2e, but I've heard there are a few significant changes that take it further away from that grouping and into its own family.

In any case, I'm excited to take a look at your extension and at least see how much of it applies to 5e as well. Thanks for all of your hard work!

Sterno
March 5th, 2021, 17:57
Hackmaster 4 and Hackmaster 5 have pretty significant differences. Hackmaster 4 is a lot like 1E and 2E AD&D, while Hackmaster 5 is kind of its own thing. This extension won't feel at all like Hackmaster 5th edition.

I think creating a Hackmaster 5 ruleset would certainly be possible, but it would probably work best as its own ruleset built directly off CoreRPG rather than trying to extend 2E. In addition to the vastly different initiative system, the way combat & defense bonuses are calculated is totally different, and there is the whole concept of opposed attack/defense rolls and various sizes of defense dice depending on conditions. You've also got spell points instead of memorization for wizards, tracking of individual wounds, and all sorts of other minor differences.

I know Jolly Blackburn (one of the HM creators) has run games in Roll20 for Hackmaster 5th edition. It might be worth reaching out to him to see what he does if 5th edition is what you're looking to run. I suspect they use almost no automation and just do it all manually and on paper, using Roll20 just for maps, dice rolls, and communication, but I could be wrong.

Sterno
March 8th, 2021, 16:22
Version 0.98

A general note: I added some new options around armor damage, critical hits, and hit locations that in some cases are mutually exclusive with other options you could have on. For instance, Hackmaster critical hits can't be turned on at the same time as Player's Option critical hits. Toggling on option one will automatically toggle the other off. Similarly, if you're using the "Generate Hit Locations" option to add some flavor to generic hits, you can't use Player's Option hit locations if you're using the HM crits, or vice versa. The extension will do its best when you toggle one option to toggle related options appropriately for you.


Added a Hackmaster Critical Hits option to the "Hackmaster House Rules" section. This option is mutually exclusive from the "Combat & Tactics Critical Hits" option. Enables the critical hit rules (including severity level, hit location, etc) from Hackmaster. Can be set as "As base ruleset", in which case any nat 20 is a critical hit, or "As base ruleset, hit by 5" where you also need to have hit the target by 5. Extra damage caused by the hit is automated and added to the die roll, but like with the Player's Option crits, any other effects are not automated and are just output to the chat window for you to implement manually. Even though it isn't part of Hackmaster crits rules as written, I left in the code that rolls a save vs death on critical hits like Player's Option does in case any GMs (like myself) want to reduce extra effects of crits by giving player's a chance to save to avoid them.
The "Generate Hit Locations" option used to just be "Off" or "On". Now it is "Off", "Hackmaster", or "Player's Option" depending on which system you want to use for generating a hit location. If you're using a crit system, the hit location system must match. If you're not using a crit system at all but want hit locations, I recommend the Hackmaster hit locations, because you'll get a ton more variety.
Added a "What can hurt magic armor (if using armor damage?)" option. Previously in this extension, if you had armor damage enabled, magic armor could only be hurt by special damage types like fire/electricity/acid or by weapons that had an equivalent or greater magical bonus. I've added an option closer to the Hackmaster rules as written where magic armor takes 1 point of damage for any original damage die that penetrates, or, in the case of shields, for however much damage penetrates, regardless of the damage source (meaning, normal weapons can hurt magical armor under this new option). Options values are "Off" (where magic armor can't be damaged by weapons), "Equivalent magic" where it checks if the bonus of the weapon is greater than or equal to the bonus of the armor, "Penetration" where it occurs on penetration as described above, or "Both" if you want both to occur.
There's a "Hackmaster 10-segment Initiative" option you'll see there, but it doesn't do anything yet. I was just too lazy to hide it. It'll probably get implemented in my next update. Depending on how things shake out, it might come with some options to allow people using standard 2E initiative to deal with multiple attacks in the combat tracker.
Changed how I was handling some dice colors. Extra damage dice granted from a critical hit will show up as green in the chat log. Extra damage dice caused by penetration will show up as red.

Sterno
March 19th, 2021, 23:49
https://i.imgur.com/MZZzQeH.png

Version .99


Added an "Items" section in the Encounters box so that you can spawn NPCs with items already-equipped.
Added an "Adjust NPC AC for items and abilities?" option.
Fixed a bug where armor class for NPCs wasn't updating properly after taking damage if you were using the Armor Damage option. Not sure when that stopped working, but it's probably been broken a few months.


Encounter "Items" Section
The new "Items" section in encounters is useful if you want to spawn something with a magic item equipped but don't want to have to create a separate NPC just to do that. Also, if you're using the Armor Damage rules, it's really useful for spawning enemies with different armor sets worn. For instance, you could have your NPC record for an Orc set to "AC 10" (rather than the usual AC 5) and spawn them with Chain Mail to have AC 5, or spawn some with Plate for AC 3, or just represent some orcs sleeping armorless in bed by not spawning them with any armor. Note that if you aren't using armor damage rules, though, it's probably easier to just use that "AC" box in the encounter sheet instead. Still could be useful to spawn an orc who happens to be wearing a Ring of Fire Resistance or something though. This also means NPCs will be affected by the "Weapon Type vs Armor Type" option, if you're using it.

A note on performance... Celestian had concerns that adding a bunch of items to NPCs could slow things down. And it does, a bit, when spawning an encounter. I found it took about 50% more time for FGU to spawn everything in the combat tracker from the time you click the "Generate Encounter" button if each NPC had 3 items (say, a weapon, armor, and shield). I tested spawning 20 orcs with no items and it took 2.15 seconds. Spawning 20 orcs with 3 items each took 3.19 seconds. Spawning 20 orcs with 20 items each took 6.3 seconds. So there is some minor slowdown, though I think it won't be noticeable in most cases since I'm betting most encounters are < 20 monsters and most items have <= 3 items you care about. On the long end of things, 100 orcs with no items already took a whopping 17 seconds to spawn, and adding 3 items to each of those pumped it up to 27 seconds. So use your judgment when deciding how complex you want a large encounter to be. My testing didn't show any noticeable performance hit once everything had spawned, though.

Adjust NPC AC for items and abilities? option
This option will automatically be flipped to true if you're using the Armor Damage rules, but can be used even if you aren't using armor damage. What this option does is modify an NPCs AC based on what armor, shield, or other items they have equipped, plus it factors in things like Defensive Bonus due to high dexterity. Basically, with this option on, NPC armor class gets treated the same way PC armor class would. However, what this means is that if you turn it on and stick some Chain Mail on a Bugbear that you copied straight out of the Monster Manual, it's going to end up with an AC of zero or so because it'll take the base AC from the monster manual (which I think is like AC 5 or so) and further modify it downward for the armor.

So if you use this rule, for humanoid monsters who probably have the AC they have due to armor, you'll probably want to create your own NPC records for these that have an AC of 10 instead. Or if you don't want to modify the NPC record, you could set it as "10" in the encounter box I guess and it would use that as the base AC before applying armor. I already kind of have my own Monstrous Manual module that I've copied/modified entries from the "real" one into, mainly so I could assign cooler tokens to everything, so in my case I just updated a bunch of humanoid ACs to 10 so I never have to worry about it again. This option pairs well with the new "Items" line in encounters mentioned above to give you full control over how every monster is kitted out. This works with all the standard modifiers that work on players, such as rear attacks denying dexterity/shield, or loss of dexterity/shield for being unconscious, etc.

JohnD
March 20th, 2021, 14:41
Very nice addition.

Sterno
March 22nd, 2021, 16:57
Version .991


Fixed a bug where Weapon Type vs Armor Type penalties weren't being applied for magic weapons.

Sterno
March 26th, 2021, 15:25
Version .992


Small change to the fatigue system where being attacked in melee will cause fatigue to increment the same way attacking in melee will.
Added an option to mechanically treat some conditions (Restrained/Stunned/Unconscious/Prone/Paralyzed) differently.
Added "Act" and "Done" buttons to the top of the combat section on the player character sheet.
Added a radial menu to the Init button at the top of the player sheet combat section that allows for automatically setting initiative to the start of the round or the end of the round.
Added a radial menu to "Delay" to delay for a certain number of segments.
Added a radial menu to the player attack button on a weapon to quickly allow for some modifiers on the attack as it is rolled (rear attack, cover, charge, etc)
Added a radial menu to the GM Combat Tracker actions (the lines of weapon info) that allow for the same modifiers mentioned for players above.
Added a radial menu to the GM Combat Tracker actors to allow for setting initiative as mentioned above for players or for add/removing common effects such as Blinded, Invisible, Stunned, Prone, etc.
Added an option to allow players to roll "cheater dice" that auto roll a 1 or 20. If enabled, adds is to the radial menu for their attacks. This option is always present in the GM's radial menu on the CT. For players, it will make it clear in the chat window that the roll was manual, so they can't just do it in without you knowing.


Alternate Conditional Effects

In the base ruleset, a defender being Prone, Unconscious, Restrained, Stunned, or Paralyzed loses their dexterity bonus to AC and their shield bonus. Restrained/Stunned grant a +4 to-hit (but don't stack with each other), Prone/Unconscious grant a +4 to-hit vs melee (but don't stack with each other, but do stack with restrained/stunned), and Paralyzed grants no bonus. This doesn't make sense to me... paralyzed seems equivalent (or worse) to restrained/stunned, and I don't see how being restrained and unconscious makes you easier to hit than simply being unconscious. If you enable this option, the following changes occur.

Prone, Unconscious, Restrained, Stunned, and Paralyzed won't stack. Whichever is the most detrimental is what will apply.
Paralyzed grants the same +4 to-hit that Restrained and Stunned gain.
Prone still allows for shield use.


Here's a table comparing the base ruleset modifiers to this options' modifiers. Base ruleset is on the left, extension option is on the right. Remember that the base ruleset allows some of these modifiers to stack and the extension option doesn't.




Dex Bonus?
Shield Bonus?
To-hit Bonus
<- Base Ruleset | Extension Option ->
Dex Bonus?
Shield Bonus?
To-hit Bonus


Paralyzed
no
no
+0

no
no
+4


Restrained
no
no
+4

no
no
+4


Stunned
no
no
+4

no
no
+4


Prone
no
no
+4 melee
+ 0 ranged

no
yes
+4 melee
+0 ranged


Unconscious
no
no
+4 melee
+0 ranged

no
no
+4 melee
+0 ranged





New Combat Section Buttons (Act and Done)

The "Act" button is used for a player to change their initiative to one later than whatever the current initiative is. In my games I found characters are sometimes delaying waiting for some particular thing to happen, and now they can hit this button when it does and get popped up to the next segment in the turn order.

The "Done" button is simply a way for the player to end their turn from their character sheet instead of the CT.

New Radial Menus

New radial menus were added, described below. They are all triggered by right-clicking on the appropriate controls (attack buttons, init buttons, etc). See the animated gifs below.

Player Init Radial Menus


https://i.imgur.com/aevWMJE.gif

Player Attack Radial Menu

https://i.imgur.com/Ah7TJPK.gif

An example of a Charge attack in action.

https://i.imgur.com/dZ0g5Mk.gif

GM Combat Tracker Action Radial Menu

https://i.imgur.com/Qghn83b.gif

GM Combat Tracker Actor Radial Menu

https://i.imgur.com/NiX2cQN.gif

Note: Unlike a lot of other things I've added to this extension, there's no option in the settings to turn the radial menus on (other than the cheater dice for players), since they basically are just Quality of Life improvements on base ruleset functionality. However, some of the initiative options will be hidden if you're using Player's Option Initiative (since segment delay makes no sense in that system), or will behave differently if you have the still-in-progress 10-Segment Hackmaster Initiative option enabled (for example, doing a full delay will put you after everyone else in the init order using the base ruleset initiative, but will just add +10 segments in the HM initiative system)

daggertx
March 26th, 2021, 16:16
This is pretty awesome

readymeal
March 27th, 2021, 03:25
Who can stop him? The 5E fanboys will have to cough up even more $ to try to catch with the mighty 2E ruleset + Player's option mod... :p

galfaroth2000
March 29th, 2021, 16:31
Who can stop him? The 5E fanboys will have to cough up even more $ to try to catch with the mighty 2E ruleset + Player's option mod... :p

Yes... 2E and Player's option make FG the only option of VTT for me

prometheus13
March 30th, 2021, 14:52
Awesome!

Sterno
March 30th, 2021, 15:12
Known Bug: Charge doesn't work right now when player's use it (but it does work for GM). Has to do with me forgetting that only the host can directly add/remove effects to combat tracker entries.

Probably won't have it fixed until the next big update, which is the addition of the Hackmaster 10-segment initiative system and the ability to roll/queue multiple initiatives (which is now coded, but I need more testing before I release it and there was very little combat in my game last week).

daggertx
April 2nd, 2021, 03:41
Thanks Sterno

Sterno
April 12th, 2021, 15:31
I've been noticing in my last two games that when Fatigue is enabled, once in a while a player won't be able to attack because of an exception that is being thrown and logged in the console. Looks like a permission issue with changing a DB node.

I'm not sure why I'm suddenly seeing this when I haven't changed that code in months, and I think I've now get a fix for it, but I was lazy and didn't branch my code and also have a ton of initiative code changes that I'm not quite ready to push to everyone yet (they work great using the HM initiative system, but I haven't tested them in standard 2E yet), so it might be a week or so before I push the fix.

I'd be kind of be surprised if anyone but me was using the Fatigue option anyway. But if you are, be warned that if players start seeing a console error in scripts/manager_state_po.lua which says something like "setValue: Unable to create node", you'll probably need to disable Fatigue as a workaround until my next update.