attitudes

This commit is contained in:
François-Xavier Guillois
2023-08-25 15:35:43 +02:00
parent 641d2a892a
commit c57c355066
5 changed files with 225 additions and 10 deletions
+71
View File
@@ -421,4 +421,75 @@ export class VermineCombat extends Combat {
}
super._onDelete()*/
}
}
export class VermineCombatTracker extends CombatTracker {
get template() {
return "systems/vermine2047/templates/combat-tracker.hbs";
}
async getData(options) {
const context = await super.getData(options);
if (!context.hasCombat) {
return context;
}
for (let [i, combatant] of context.combat.turns.entries()) {
context.turns[i].hasActed = combatant.getFlag("world", "hasActed");
context.turns[i].isPlayer = combatant.actor.type == "player";
context.turns[i].isNpc = combatant.actor.type == "npc";
}
return context;
}
/* -------------------------------------------- */
get template() {
return "systems/gods-system/templates/combat/tracker.hbs";
}
async getData(options) {
const context = await super.getData(options);
if (!context.hasCombat) {
return context;
}
for (let [i, combatant] of context.combat.turns.entries()) {
context.turns[i].attitude = combatant.getFlag("world", "attitude");
context.turns[i].isPlayer = combatant.actor.type == "character";
context.turns[i].isNpc = combatant.actor.type == "npc";
context.turns[i].isCreature = combatant.actor.type == "creature";
}
return context;
}
activateListeners(html) {
super.activateListeners(html);
html.find(".status").click(this._setStatut.bind(this));
}
/**
* @description Use to put an attitude to an actor
* @param {*} event
*/
async _setStatut(event) {
event.preventDefault();
event.stopPropagation();
const btn = event.currentTarget;
const li = btn.closest(".combatant");
const combat = this.viewed;
const combatant = combat.combatants.get(li.dataset.combatantId);
if ($(btn).hasClass('offensive'))
await combatant.setFlag("world", "attitude", "offensive");
else if ($(btn).hasClass('active'))
await combatant.setFlag("world", "attitude", "active");
else if ($(btn).hasClass('passive'))
await combatant.setFlag("world", "attitude", "passive");
else
await combatant.setFlag("world", "attitude", null);
}
}
+14 -8
View File
@@ -46,12 +46,18 @@ export const registerHandlebarsHelpers = function () {
return game.i18n.localize(arrayLabel +"."+objectLabel+".name");
});
// return skill level information
Handlebars.registerHelper('skillLevel', function (property, level, options) {
if (level < 1 || level > 5)
return "";
let levelData = CONFIG.VERMINE.SkillLevels[level];
return (levelData !== undefined) ? levelData[property] : "";
});
// return skill level information
Handlebars.registerHelper('skillLevel', function (property, level, options) {
if (level < 1 || level > 5)
return "";
let levelData = CONFIG.VERMINE.SkillLevels[level];
return (levelData !== undefined) ? levelData[property] : "";
});
Handlebars.registerHelper('getCombatTrackerColor', function (isPlayer, isNpc) {
if (isPlayer) return "player";
if (isNpc) return "npc";
});
}
+3 -2
View File
@@ -13,7 +13,7 @@ import { VermineItem } from "./documents/item.mjs";
import { VermineItemSheet } from "./sheets/item-sheet.mjs";
import { VermineRoll } from "./system/roll.mjs";
import { VermineCombat } from "./system/fight.mjs";
import { VermineCombat, VermineCombatTracker } from "./system/fight.mjs";
// Import helper/utility classes and constants.
import { preloadHandlebarsTemplates, registerHandlebarsHelpers } from "./system/handlebars-manager.mjs";
@@ -42,13 +42,14 @@ Hooks.once('init', async function() {
* @type {String}
*/
CONFIG.Combat.initiative = {
formula: "1d10 + @abilities.dex.mod",
formula: "(@abilities.reflexes.value + @skills.alertness.value)d10cs>=7",
decimals: 2
};
// Define custom Document classes
CONFIG.Actor.documentClass = VermineActor;
CONFIG.Item.documentClass = VermineItem;
CONFIG.ui.combat = VermineCombatTracker;
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);