Log in

View Full Version : Savage World Threat Rating derived stat



LordDante123
January 1st, 2025, 16:31
Hello fellow roleplayers!

I'm going crazy trying to setup a simple derived stat that did register only twice and disappeared without knowing why.

So I won't be able to implement a threat rating derived stat for players and NPCs.

But I'm not sure if most of the formula can be done automatically so I would only need to add the missing stats.

I gues I should calculate it outside of the app and manually input it for each and every sheet.

Here is the threat rating I use to have a general idea for each and every character :
{Edge Rating}+{Attack Die}+2*{Attack Bonus}+2*{Parry}+{Average Damage Die}+{Damage Bonus}+{Toughness}-{Extra}

{Edge Rating} Need to be setup manually.
{Attack Die} The max die found for the Offensive trait : Fighting, Shooting, or any of the Trait that uses Powers.
{Attack Bonus} The bonus of the trait previously found.
{Parry} Just the Parry derived stat.
{Average Damage Die}The max damage found for the special abilities without the bonus and then made the average.
{Damage Bonus} The damage bonus of the special ability previously found.
{Toughness} Just the Toughness derived stat.
{Extra} Should be 6 by default.

Thank you all for your suggestions.

LordDante123

Mike Serfass
January 1st, 2025, 22:26
Did you follow this tutorial?
How to add new Derived Stat tutorial (https://www.fantasygrounds.com/forums/showthread.php?23291-How-to-add-new-Derived-Stat-tutorial)

If so, and it's not working, post your code here so we can give you feedback.

kronovan
January 2nd, 2025, 10:31
...Here is the threat rating I use to have a general idea for each and every character :
{Edge Rating}+{Attack Die}+2*{Attack Bonus}+2*{Parry}+{Average Damage Die}+{Damage Bonus}+{Toughness}-{Extra}

{Edge Rating} Need to be setup manually.
{Attack Die} The max die found for the Offensive trait : Fighting, Shooting, or any of the Trait that uses Powers.
{Attack Bonus} The bonus of the trait previously found.
{Parry} Just the Parry derived stat.
{Average Damage Die}The max damage found for the special abilities without the bonus and then made the average.
{Damage Bonus} The damage bonus of the special ability previously found.
{Toughness} Just the Toughness derived stat.
{Extra} Should be 6 by default...

Are you aware of the Combat Ratings in Savage Worlds Deluxe; page 123 of the hardcover? I ask, because you're adding quite a few more values and calculations than what it did. I found the SWD CR's to work reasonably well, with the exception that it didn't include Parry which I felt was necessary for melee-heavy (Classic Fantasy, Sword & Sorcery, Weird Wars Rome, etc) settings. So i added it for those. The SWD CR only considered points of toughness over 5, which worked because many Extras and Wild Cards have a d6 Vigor with a resulting 5 Toughness. It also only considered damage and didn't add the Fighting, Shooting or AB skill die type, which to me made sense as attack situations and rolls are very dynamic, and the TN is fixed at 4 for defense vs Throwing (SWADE Athletics-throwing) and shooting. It also divided the final CR value in half for Extras.

Nothing wrong with the way you're doing it, just wanted to point out the SWD CR because it's quite a bit simpler. If you're aware of it, disregard my comments.

LordDante123
January 2nd, 2025, 19:52
Did you follow this tutorial?
How to add new Derived Stat tutorial (https://www.fantasygrounds.com/forums/showthread.php?23291-How-to-add-new-Derived-Stat-tutorial)

If so, and it's not working, post your code here so we can give you feedback.

Yes, even tried to find more information and even tried to duplicate the Ressource Counter extension with few successes.


Are you aware of the Combat Ratings in Savage Worlds Deluxe; page 123 of the hardcover? I ask, because you're adding quite a few more values and calculations than what it did. I found the SWD CR's to work reasonably well, with the exception that it didn't include Parry which I felt was necessary for melee-heavy (Classic Fantasy, Sword & Sorcery, Weird Wars Rome, etc) settings. So i added it for those. The SWD CR only considered points of toughness over 5, which worked because many Extras and Wild Cards have a d6 Vigor with a resulting 5 Toughness. It also only considered damage and didn't add the Fighting, Shooting or AB skill die type, which to me made sense as attack situations and rolls are very dynamic, and the TN is fixed at 4 for defense vs Throwing (SWADE Athletics-throwing) and shooting. It also divided the final CR value in half for Extras.

Nothing wrong with the way you're doing it, just wanted to point out the SWD CR because it's quite a bit simpler. If you're aware of it, disregard my comments.

I wasn't aware of it since I started directly on SWADE and found on the net someone that made this formula which was nicely tuned.

But I would not mind to works with the CR instead, with or without the Parry but I'm also curious with the Parry.

In the end I just need a rating to help me fine-tune the balance of the game sessions.

Mike Serfass
January 2nd, 2025, 20:51
After rereading what you're after, it's not a simple derived stat. You'll need a full-out extension for this. The derived stat code can't search through abilities or discover all the skills used for powers. It looks at a trait and does simple things like addition and division.
Outside of writing an extension with formulas, you could add a blank field on character sheets that you manually input.

Jiminimonka
January 2nd, 2025, 21:45
What is this Threat stat anyway?

Mike Serfass
January 2nd, 2025, 23:43
A version of D&D's Challenge Rating for Savage Worlds.

kronovan
January 3rd, 2025, 00:59
...I wasn't aware of it since I started directly on SWADE and found on the net someone that made this formula which was nicely tuned.

But I would not mind to works with the CR instead, with or without the Parry but I'm also curious with the Parry.

In the end I just need a rating to help me fine-tune the balance of the game sessions.

OK cool. I'll post the text and bullet points for the SWD Combat Ratings. Here it be...

"
Start your estimate by getting a Combat Rating for each player character equal to half the maximum damage he does with his typical attack. So a fighter with a d6 Strength and a long sword (Str+d8 damage) has a Damage Rating of 7 (14/2). A wizard who typically uses the bolt power averages a standard bolt attack of 2d6, or 6 (12/2).
Add +1 for each Combat Edge or special ability, and another +1 for each point of Toughness over 5.
Do the same for any allies. If a character isn’t a Wild Card, his Combat Rating is halved.
Now add all the player characters’ Combat Ratings together to find the party’s Combat Rating.
Use the same system for the villains (counting combat special abilities as Combat Edges).

Now compare each side’s values. If the party’s Combat Rating is 50, for example, your opposition should be a little less for an easy encounter, about even for a moderate encounter, and a little more for a tough fight.
If the villains’ Combat Rating is two or more times the heroes’ total they’re likely going to learn how to retreat."

The damage forumla is I believe the same as what you're doing with your averaging. Note though that the SWD CR doesn't include dmg bonuses. Edges and Special Abilities are tricky. IIRC in most of my campaigns, I also included Power edges by just giving a +1 for each one a character had, the same way you would for combat edges. NPCs (Extras and Wild Cards) are trickier as they often have Special Abilities related to combat. But that was mostly OK if you added a +1 for each such special ability. I found doing it the way they suggest works OK for settings that mostly feature ranged combat. Whereas for melee-heay settings, I found adding in points of Parry above 2 (the default if no Fighting skill), to give a more meaningful/relevant CR. I included any Parry bonuses from gear or edges.

Anyhow...that's how SWD did it. No matter how you tinker the CR, it's always going to be an abstraction in the end.

[Edit]Mike and other folks here more savvy with extensions would know more about this...But I believe for total Edge and combat Special Abilties, you'd need to create a static stat on the character sheet and set it as a readable field. Then you'd manually enter the total combat edge (I'd personally include Power edges too) and total SAs. Then you would just read the field and include it as one of the values in the final CR calc.

If there was a way to enumerate total num of Combat Edges and SAs just from code that would be awesome. But from Mike's comments, it doesn't sound like that's possible.

Jiminimonka
January 3rd, 2025, 13:20
A version of D&D's Challenge Rating for Savage Worlds.

Isn't that kinda counter to SWADE? If the NPC is too tough you run or die.....

zarlor
January 3rd, 2025, 15:08
Isn't that kinda counter to SWADE? If the NPC is too tough you run or die.....

I'd kind of agree with that and I think it's the main reason why SWADE dumped what they had listed in SWD for doing that kind of thing. Beyond which the system is so easily scalable "in the moment", if an encounter seems too easy bring in some mook reinforcements and use strong tactics digging into when and where you use things like Wild Attacks and Gang Up, if it seems too tough tone down the tactics, make "morale" rolls for mooks and otherwise remind players of things like Wild Attacks and Gang Up bonuses if they are forgetting to use such things. I've found just those little tweaks to be more than enough to balance encounters in the moment, and I'm really not the most improvisational GM out there or anything.

Still some folks just feel a TON more comfortable with ratings like this so more power to you if you want them, I just personally wouldn't recommend it for SWADE.

Mike Serfass
January 3rd, 2025, 19:10
Bennies. Don't spend them on NPCs that are too tough for the party, and/or give the PCs more bennies.

Snake Eyes: For too-tough NPCs, make the crit fails painful (lose weapon, fall prone, become Distracted or Vulnerable), make crit fails for PCs advantageous to clever players (drop gun but it continues to fire and hits a mook, drop sword but it sticks in opponent's foot, power still manifests but hits different target or wrong power manifests in a way that helps the PCs).

Play off a PCs Hindrances. Bloodthristy gives the PC +2 damage this fight against hated enemies, Phobia give an adrenaline rush, Enemy gives +1 to hit.

These little things are easy to write into a scene, helps the players feel the importance of character creation decisions, and makes scene more memorable.

Sorry, that was a bit off topic. On topic:
The formula requires going through Edges and figuring out if there are bonuses and if they apply in this formula.
Determining which Skills are related to ABs (which varies by setting).
Determine other combat skills (e.g. Bombardier, Electronics).
Effects must be checked (some Edges keep effects rather than updating a score).
Then there are mods, cyberware, special abilities, racial abilities.

This is possible, but well beyond what the derived stat code can do. So it would have to be an extension.
A combination of static fields and the derived stat code as kronovan suggests might work, but it will be tricky.
It would be easier to add a static field the GM fills in.
If someone wants to tackle it, I'll give advice.

LordDante123
January 5th, 2025, 18:56
Thank you all for your replies, I will be using a static value.

I was able to do it by modifying the ressource counter extension found on the forge.

But it only worked when I modified the xml file when opening the ext file with 7z.

When I did all the decompressing, modifying, saving, compressing and changing to ext file, it never worked.

This will give me an idea of what to expect with a quick look.

But I also agree with you all!

Happy roleplaying!

Mike Serfass
January 6th, 2025, 20:17
Don't modify the existing extension. When you run an update, it may overwrite your version. The updater looks at file name and date. Instead, copy it and give it a new name. And copy a backup somewhere outside of the FGU folders.

It might not have worked because the compression it used wasn't the correct type.
Verify that 7z used zip, and check settings for things like high compression, or 7z compression algorithms. It should be the simple, normal compression rate and algorithm.

BTW, you can add more derived stats by adding more lines like this:

DerivedStatManager.registerDerivedStat("newname", "newname", "newname", "derivedstat_resource", {charsheet=true, ct_client=true})

Lonewolf
January 9th, 2025, 23:27
Thank you all for your replies, I will be using a static value.

I was able to do it by modifying the ressource counter extension found on the forge.

But it only worked when I modified the xml file when opening the ext file with 7z.

When I did all the decompressing, modifying, saving, compressing and changing to ext file, it never worked.

This will give me an idea of what to expect with a quick look.

But I also agree with you all!

Happy roleplaying!

I made the Resource Counter extension to save people the hassle of starting from scratch. The ext file is just a zip like other extensions. The file name is changed before compression so it easy to know what it supposed to do for FG. So, take the Resource Counter and unzip. Change every mention of "Resource". Then when you’re done. Select the folders to be zipped but change the file type to ext before zipping it back up. If you have changed the name correctly. You should have your own version that will not be overwritten.

Resource Counter does provide the base code for adding derived stats but note that it does not have any calculations in it. It just gives a box with zero points for all characters. It was necessary just to have a general box of resource points in Pathfinder because they kept adding special class resource tokens under different names. Having a generic box of resource points seemed to be a good place to start. You must go to the original thread to see how calculations are added.

How-to-add-new-Derived-Stat-tutorial (https://www.fantasygrounds.com/forums/showthread.php?23291-How-to-add-new-Derived-Stat-tutorial)

Although I don't think a derived stat box can do the more complex calculations you are trying to do here because two boxes will not interact, and you need a bigger extension. It will however plug into the effects system if that helps. So, say you add a derived stat called "Hidden". An Edge or Monster Ability should be able to add to it using [Hidden +1]. Perhaps that is a function that helps a bit. So with a bit of work you have something simple that adds up points. Beyond that you need a more complicated extention.

Doswelk
January 11th, 2025, 08:06
Hello, it seems we have a new SWADE GM here :)

I think you need to watch this... https://www.youtube.com/watch?v=iwDMQkjr-Qs

Having run Savage Worlds for the last 20 years I whole heartedly agree with this video!

That said if you want to do you own thing have fun and get used to writing extensions :D


Hello fellow roleplayers!

I'm going crazy trying to setup a simple derived stat that did register only twice and disappeared without knowing why.

So I won't be able to implement a threat rating derived stat for players and NPCs.

But I'm not sure if most of the formula can be done automatically so I would only need to add the missing stats.

I gues I should calculate it outside of the app and manually input it for each and every sheet.

Here is the threat rating I use to have a general idea for each and every character :
{Edge Rating}+{Attack Die}+2*{Attack Bonus}+2*{Parry}+{Average Damage Die}+{Damage Bonus}+{Toughness}-{Extra}

{Edge Rating} Need to be setup manually.
{Attack Die} The max die found for the Offensive trait : Fighting, Shooting, or any of the Trait that uses Powers.
{Attack Bonus} The bonus of the trait previously found.
{Parry} Just the Parry derived stat.
{Average Damage Die}The max damage found for the special abilities without the bonus and then made the average.
{Damage Bonus} The damage bonus of the special ability previously found.
{Toughness} Just the Toughness derived stat.
{Extra} Should be 6 by default.

Thank you all for your suggestions.

LordDante123