All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

60 lines
3.2 KiB

import {movementTracking} from "./movementFunctions.js"
Hooks.once("init", () => {
//Wait until the game is initialized, then register the settings created previously.
game.settings.register("pf2e-dragruler", "offTurnMovement", {
name: game.i18n.localize("pf2e-dragruler.settings.offTurnMovement.name"),
hint: game.i18n.localize("pf2e-dragruler.settings.offTurnMovement.hint"),
scope: "world",
config: true,
type: Boolean,
default: false
})
});
Hooks.once("dragRuler.ready", (SpeedProvider) => {
class PF2eSpeedProvider extends SpeedProvider {
//Registers colours for up to four movement actions so colours can be customized for them, and sets defaults
get colors(){
return [
{id: "FirstAction", default: 0x3222C7},
{id: "SecondAction", default: 0xFFEC07},
{id: "ThirdAction", default: 0xC033E0},
{id: "FourthAction", default: 0x1BCAD8}
]
};
// Get the distance for each movement interval to give to drag ruler
getRanges(token){
var numactions = 3; //Use the actionCount function to determine how many actions that token gets each round.
var movement = movementTracking(token); //Use the movementTracking function to get how far each movement range should be.
const ranges = []; //create blank array to store the ranges in.
if (numactions > 0 && movement.A1 > 0){
//Set the ranges for each of our four actions to be given to the drag ruler.
ranges.push({range: movement.A1, color: "FirstAction"},{range: movement.A2, color: "SecondAction"}, { range: movement.A3, color: "ThirdAction"},{range: movement.A4, color: "FourthAction"});
//Remove ranges from the function until only the ranges equal to the number of legal actions remain.
for (var i = numactions, len=ranges.length; i<len; i++){
ranges.pop();
};
} else {ranges.push({range: 0, color: "FirstAction"})}; //Since ranges is empty if you've got no actions add a range for the first action of 0.
return ranges;
};
};
// When dragruler is ready to go give it all the PF2 specific stuff
dragRuler.registerModule("pf2e-dragruler", PF2eSpeedProvider) //register the speed provider so its selectable from the drag ruler configuration.
});
Hooks.on('updateCombat', () => {
if(game.user.isGM && game.settings.get("drag-ruler", "enableMovementHistory") && game.settings.get("pf2e-dragruler", "offTurnMovement")){
const combat = game.combats.active; //set the current combat
if(combat?.turns.length > 0){
const previousCombatant = combat.turns[(combat.turn - 1) < 0 ? (combat.turns.length - 1) : (combat.turn - 1)];
const nextCombatant = combat.turns[combat.turn]; //find the next combatant
if(nextCombatant?.flags?.dragRuler){
dragRuler.resetMovementHistory(combat, nextCombatant._id); //if movement history exists, clears it for the next combatant prior to acting. Gives a clean slate for the new turn, important for clearing out off turn movement.
};
if(previousCombatant?.flags?.dragRuler){
dragRuler.resetMovementHistory(combat, previousCombatant._id); //if movement history exists, clears it for the next combatant prior to acting. Gives a clean slate for the new turn, important for clearing out off turn movement.
};
};
};
});