Add the most basic form of a difficulty delta region behaviour
This commit is contained in:
parent
a71a22bf19
commit
690eff8e46
4 changed files with 54 additions and 0 deletions
|
|
@ -11,6 +11,9 @@
|
|||
"shield": "Shield",
|
||||
"skill": "Skill",
|
||||
"weapon": "Weapon"
|
||||
},
|
||||
"RegionBehavior": {
|
||||
"difficultyDelta": "Condition Delta"
|
||||
}
|
||||
},
|
||||
"RipCrypt": {
|
||||
|
|
@ -154,6 +157,16 @@
|
|||
},
|
||||
"tooltips": {
|
||||
"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."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
36
module/data/region-behaviors/DifficultyDelta.mjs
Normal file
36
module/data/region-behaviors/DifficultyDelta.mjs
Normal 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`);
|
||||
};
|
||||
};
|
||||
|
|
@ -33,6 +33,7 @@ import { registerDevSettings } from "../settings/devSettings.mjs";
|
|||
import { registerMetaSettings } from "../settings/metaSettings.mjs";
|
||||
import { registerUserSettings } from "../settings/userSettings.mjs";
|
||||
import { registerWorldSettings } from "../settings/worldSettings.mjs";
|
||||
import { DifficultyDeltaBehaviorData } from "../data/region-behaviors/DifficultyDelta.mjs";
|
||||
|
||||
Hooks.once(`init`, () => {
|
||||
Logger.log(`Initializing`);
|
||||
|
|
@ -56,6 +57,7 @@ Hooks.once(`init`, () => {
|
|||
CONFIG.Item.dataModels.shield = ShieldData;
|
||||
CONFIG.Item.dataModels.skill = SkillData;
|
||||
CONFIG.Item.dataModels.weapon = WeaponData;
|
||||
CONFIG.RegionBehavior.dataModels.difficultyDelta = DifficultyDeltaBehaviorData;
|
||||
// #endregion
|
||||
|
||||
// #region Class Changes
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@
|
|||
"shield": {},
|
||||
"skill": {},
|
||||
"weapon": {}
|
||||
},
|
||||
"RegionBehavior": {
|
||||
"difficultyDelta": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue