Add the most basic form of a difficulty delta region behaviour

This commit is contained in:
Oliver-Akins 2025-03-02 21:19:12 -07:00
parent a71a22bf19
commit 690eff8e46
4 changed files with 54 additions and 0 deletions

View file

@ -11,6 +11,9 @@
"shield": "Shield", "shield": "Shield",
"skill": "Skill", "skill": "Skill",
"weapon": "Weapon" "weapon": "Weapon"
},
"RegionBehavior": {
"difficultyDelta": "Condition Delta"
} }
}, },
"RipCrypt": { "RipCrypt": {
@ -154,6 +157,16 @@
}, },
"tooltips": { "tooltips": {
"shield-bonus": "Shield Bonus: {value}" "shield-bonus": "Shield Bonus: {value}"
},
"region": {
"difficultyDelta": {
"FIELDS": {
"delta": {
"label": "Delta",
"hint": "How much should actors in this area have their difficulty changed from the global value."
}
}
}
} }
} }
} }

View file

@ -0,0 +1,36 @@
import { Logger } from "../../utils/Logger.mjs";
const { fields } = foundry.data;
const { RegionBehaviorType } = foundry.data.regionBehaviors;
export class DifficultyDeltaBehaviorData extends RegionBehaviorType {
static LOCALIZATION_PREFIXES = [`RipCrypt.region.difficultyDelta`];
static defineSchema() {
return {
delta: new fields.NumberField({
required: true,
initial: 1,
}),
};
};
static events = {
[CONST.REGION_EVENTS.TOKEN_ENTER]: this.#onTokenEnter,
[CONST.REGION_EVENTS.TOKEN_EXIT]: this.#onTokenExit,
};
static async #onTokenEnter(event) {
Logger.debug(`token enter`, event, this);
const actor = event.data.token.actor;
if (!actor) { return };
actor.setFlag(`ripcrypt`, `dcDelta`, this.delta);
};
static async #onTokenExit(event) {
Logger.debug(`token exit`, event, this);
const actor = event.data.token.actor;
if (!actor) { return };
actor.unsetFlag(`ripcrypt`, `dcDelta`);
};
};

View file

@ -33,6 +33,7 @@ import { registerDevSettings } from "../settings/devSettings.mjs";
import { registerMetaSettings } from "../settings/metaSettings.mjs"; import { registerMetaSettings } from "../settings/metaSettings.mjs";
import { registerUserSettings } from "../settings/userSettings.mjs"; import { registerUserSettings } from "../settings/userSettings.mjs";
import { registerWorldSettings } from "../settings/worldSettings.mjs"; import { registerWorldSettings } from "../settings/worldSettings.mjs";
import { DifficultyDeltaBehaviorData } from "../data/region-behaviors/DifficultyDelta.mjs";
Hooks.once(`init`, () => { Hooks.once(`init`, () => {
Logger.log(`Initializing`); Logger.log(`Initializing`);
@ -56,6 +57,7 @@ Hooks.once(`init`, () => {
CONFIG.Item.dataModels.shield = ShieldData; CONFIG.Item.dataModels.shield = ShieldData;
CONFIG.Item.dataModels.skill = SkillData; CONFIG.Item.dataModels.skill = SkillData;
CONFIG.Item.dataModels.weapon = WeaponData; CONFIG.Item.dataModels.weapon = WeaponData;
CONFIG.RegionBehavior.dataModels.difficultyDelta = DifficultyDeltaBehaviorData;
// #endregion // #endregion
// #region Class Changes // #region Class Changes

View file

@ -51,6 +51,9 @@
"shield": {}, "shield": {},
"skill": {}, "skill": {},
"weapon": {} "weapon": {}
},
"RegionBehavior": {
"difficultyDelta": {}
} }
} }
} }