PDA

View Full Version : May help speed up combat



Singular Perpous
July 30th, 2023, 16:55
I think I've found a way to speed up the movement part of combat so I thought I'd share

Rather than counting squares or even using the pointers you can use the Reach part of the Combat Tracker to give a token an overview of their movement radius.
It normally looks something like this

58355

If you change the Reach value in the combat tracker you can use it as an improvised movement radius
so it would look something like this.

58356

It even works on any NPC

58357

as you can see, it gives you and your players a really good idea of up to how far you can move at a glance without the square counting and pointer drawing.
It obviously has its limitations but on the whole may just be worth looking at :D

edit... You can use this extension to make the process quicker by making effects ready to drop on anything in the Combat Tracker
https://forge.fantasygrounds.com/shop/items/455/view

Happy Gaming


Big thanks goes to Dominic M on discord who helped me on how to simulate this perfectly with the 'Underlay'. For those that don't know, the Underlay is the dark area that we've been changing above.
I learned that it represents a token reach.

SilentRuin
July 30th, 2023, 17:01
Reach is actually used in some calculations so beware. If they are not correct those things will not function properly.

Singular Perpous
July 30th, 2023, 17:13
I don't think I've ever come across anything that does, mind you, I've also not been looking :)

which ones? just so I know what to watch for.

SilentRuin
July 30th, 2023, 17:19
I don't think I've ever come across anything that does, mind you, I've also not been looking :)

which ones? just so I know what to watch for.

A quick search of rulesets/extensions in my directories and you get... Gist is don't mess with things that are set to define stuff used in calculations. In this case - reach is something to determine how far a melee range is for a given weapon/NPC/PC.

\5E\scripts\manager_power.lua (1 hit)
Line 675: if StringManager.isWord(aWords[nIndex+4], "reach") then
\CoreRPG\campaign\record_npc.xml (1 hit)
Line 87: <number_column_right name="reach">
\CoreRPG\campaign\record_vehicle.xml (1 hit)
Line 54: <number_column_right name="reach">
\CoreRPG\common\template_legacy.xml (2 hits)
Line 772: <anchored to="reach" position="lefthigh" offset="10,0"/>
Line 801: <number_ct name="reach">
\CoreRPG\ct\ct_host_entry_section.xml (1 hit)
Line 123: <number_ct_section_space_reach name="reach">
\CoreRPG\ct\template_ct_entry_section.xml (1 hit)
Line 205: <number_ct name="reach">
\CoreRPG\scripts\manager_actor_common.lua (1 hit)
Line 73: nReach = tonumber(DB.getValue(nodeActor, "reach", nDU)) or nReach;
\CoreRPG\scripts\manager_combat_record.lua (1 hit)
Line 261: DB.setValue(tCustom.nodeCT, "reach", "number", nReach);
\CoreRPG\scripts\manager_token.lua (2 hits)
Line 15: CombatManager.addCombatantFieldChangeHandler("reach", "onUpdate", TokenManager.updateSpaceReach);
Line 108: return math.ceil(DB.getValue(nodeCT, "reach", nDU) / nDU);
\2E\campaign\record_item.xml (1 hit)
Line 83: <hs name="reach" />
\2E\cta\cta_host.xml (2 hits)
Line 483: <number_ctaentry_tokenreach name="reach" />
Line 485: <anchored to="reach" />
\2E\cta\template_cta.xml (1 hit)
Line 943: <number_ct name="reach">
\2E\scripts\manager_combat_record_adnd.lua (1 hit)
Line 234: DB.setValue(tCustom.nodeCT, "reach", "number", nTokenReach);
\4E\scripts\manager_combat2.lua (2 hits)
Line 420: if nNewReach > DB.getValue(tCustom.nodeCT, "reach", 1) then
Line 421: DB.setValue(tCustom.nodeCT, "reach", "number", nNewReach);
\PFRPG2\ct\ct_host_entry.xml (1 hit)
Line 387: <number_ctentry_reach name="reach">
\SFRPG\campaign\record_comp_main.xml (1 hit)
Line 291: <basicnumber name="reach">
\SFRPG\campaign\record_npc.xml (2 hits)
Line 396: <number_columnh name="reach" />
Line 987: <number_column name="reach" />
\SFRPG\campaign\record_race.xml (1 hit)
Line 328: <number_columnh name="reach" />
\SFRPG\campaign\scripts\comp_main.lua (2 hits)
Line 88: nReach = DB.getValue(nodeChar, "reach", 0);
Line 103: WindowManager.callSafeControlUpdate(self, "reach",true);
\SFRPG\campaign\scripts\npc_main.lua (2 hits)
Line 47: if not WindowManager.callSafeControlUpdate(self, "reach", bReadOnly) then bShowOffenseHeader = false; end
Line 88: WindowManager.callSafeControlUpdate(self, "reach", bReadOnly);
\SFRPG\campaign\scripts\race_main.lua (1 hit)
Line 57: WindowManager.callSafeControlUpdate(self, "reach", bReadOnly);
\SFRPG\ct\ct_host_entry_section.xml (1 hit)
Line 13: <anchored to="reach" position="righthigh" offset="20,0" height="20">
\SFRPG\scripts\manager_char.lua (2 hits)
Line 1650: DB.setValue(nodeChar, "reach", "number", DB.getValue(nodeSource, "reach",0));
\SFRPG\scripts\manager_starship_token.lua (1 hit)
Line 12: StarshipCombatManager.addCombatantFieldChangeHandl er("reach", "onUpdate", TokenManager.updateSpaceReach);
\Combat Groups Extension\Data\extensions\Unpacked\CombatGroups\sc ripts\manager_combatgroups.lua (1 hit)
Line 925: local nReach = math.ceil(DB.getValue(nodeCT, "reach", nDU) / nDU) + nHalfSpace;
\Generic Actions Extension\Data\extensions\Unpacked\GenericActions\ scripts\manager_generic_actions.lua (2 hits)
Line 540: nReach = DB.getValue(nodeSourceCT, "reach", 5);
Line 2366: local nReach = DB.getValue(nodeFlankingCT, "reach", 5);
\Generic Actions Extension\Data\extensions\Unpacked\GenericActionsL ayer\scripts\manager_generic_actions_layer.lua (1 hit)
Line 821: local nReach = DB.getValue(SourceNodeCT, "reach", 5);
\Polymorphism Extension\Data\extensions\Unpacked\Polymorphism\sc ripts\manager_polymorphism.lua (3 hits)
Line 2284: DB.setValue(nodeNewCTEntry, "polymorphism_original_reach", "number", DB.getValue(nodeSourceCT, "reach", 5));
Line 3045: DB.setValue(nodeNewCTEntry, "reach", "number", DB.getValue(nodeSourceCT, "polymorphism_original_reach", 5));
Line 3329: DB.setValue(nodeNewCTEntry, "reach", "number", DB.getValue(nodeSourceCT, "polymorphism_original_reach", 5));

Singular Perpous
July 30th, 2023, 18:15
in terms of 5E I don't see anything on there that should impact the extensions that I use, and I don't play the other game systems mentioned outside of 5E or CoreRPG obviously ;)

From Moon Wizard on Discord

The size/ reach fields in the CT are specified by the ruleset, based on the default grid size for the ruleset as well as how the ruleset interprets creature size.
The size and reach are calculated and added to the CT when the creature is added to the CT.


I'm changing them after they've been added to the Combat Tracker so hopefully there wont be any problems
I'll keep an eye out for anything strange and report back to this post if anything doesn't calculate correctly.

LordEntrails
July 30th, 2023, 20:31
Nice idea. Thanks for sharing.
Most of the players in our group don't have a problem with movement distance, but I can see how this could help.
As for changing Reach, I don't know of any 5E functions that use it except for some community extensions, so I wouldn't see the harm in changing it like you suggest for most users.