traits+debut combat
This commit is contained in:
@@ -149,27 +149,37 @@ export class TraitSelector extends Application {
|
||||
async activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
this.validateTraits(html);
|
||||
html.find('input').click(ev => {
|
||||
html.find('input').change(ev => {
|
||||
this.onChangeInput(ev)
|
||||
})
|
||||
|
||||
}
|
||||
async validateTraits(html) {
|
||||
let checks = html.find("input.trait-selector");
|
||||
for (let ch of checks) {
|
||||
if (this.targetItem.system.traits[ch.dataset.trait]) {
|
||||
ch.checked = true
|
||||
let val = html.find("input.trait-value");
|
||||
for (let inp of [...checks, val]) {
|
||||
if (this.targetItem.system.traits[inp.dataset.trait]) {
|
||||
if (inp.type == "checkbox") {
|
||||
inp.checked = true
|
||||
}
|
||||
if (inp.type == "value") {
|
||||
inp.value = this.targetItem.system.traits[inp.dataset.trait].value
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async onChangeInput(ev) {
|
||||
let el = ev.currentTarget;
|
||||
if (el.classList.contains('trait-selector')) {
|
||||
let traitKey = el.dataset.trait; // Récupère la clé du trait à partir de l'attribut data-trait
|
||||
let traits = this.targetItem.system.traits || {}; // Récupère les traits actuels, ou un objet vide si aucun trait n'est défini
|
||||
|
||||
let traitKey = el.dataset.trait; // Récupère la clé du trait à partir de l'attribut data-trait
|
||||
let traitValue = parseInt(el.value) || null
|
||||
let traits = this.targetItem.system.traits || {}; // Récupère les traits actuels, ou un objet vide si aucun trait n'est défini
|
||||
|
||||
|
||||
console.log(traitKey, traitValue, traits)
|
||||
|
||||
if (el.classList.contains('trait-selector')) {
|
||||
if (!traits[traitKey]) {
|
||||
// Si la case est cochée, ajoute le trait
|
||||
await this.targetItem.update({ [`system.traits.${traitKey}`]: this.traits[traitKey] });
|
||||
@@ -178,8 +188,12 @@ export class TraitSelector extends Application {
|
||||
await this.targetItem.update({ [`system.traits.${traitKey}`]: null });
|
||||
}
|
||||
}
|
||||
else if (el.classList.contains('trait-value')) {
|
||||
if (traitValue) {
|
||||
console.log(el.value)
|
||||
// Logique pour les valeurs des traits si nécessaire
|
||||
el.closest("label").querySelector('.trait-selector').checked = true;
|
||||
} else {
|
||||
el.closest("label").querySelector('.trait-selector').checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -246,3 +246,9 @@ VERMINE.traits = {
|
||||
},
|
||||
// etc...etc...
|
||||
}
|
||||
VERMINE.damageTypes = [
|
||||
"choc",
|
||||
"lame",
|
||||
"feu",
|
||||
"balle"
|
||||
]
|
||||
|
||||
@@ -51,7 +51,9 @@ export default class RollDialog extends Dialog {
|
||||
}) {
|
||||
// Retrieve the actor data based on the actorId
|
||||
data.actor = await game.actors.get(data.actorId);
|
||||
console.log(data.actor)
|
||||
data.availableSpecialties = data.actor.items.filter(it => it.type == "specialty");
|
||||
console.log(data.availableSpecialties)
|
||||
data.availableItems = data.actor.items.filter(it => it.type == "item");
|
||||
data.config = CONFIG.VERMINE;
|
||||
// Define options for the dialog
|
||||
|
||||
+14
-15
@@ -326,7 +326,7 @@ export class VermineCombat extends Combat {
|
||||
}
|
||||
|
||||
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
||||
// console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, messageOptions);
|
||||
console.log(`${game.system.title} | Combat.rollInitiative()`, ids, formula, messageOptions);
|
||||
// Structure input data
|
||||
ids = typeof ids === "string" ? [ids] : ids;
|
||||
|
||||
@@ -428,20 +428,7 @@ export class VermineCombatTracker extends CombatTracker {
|
||||
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() {
|
||||
@@ -466,14 +453,26 @@ export class VermineCombatTracker extends CombatTracker {
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
html.find("[data-attitude]").click(this._setStatut.bind(this));
|
||||
html.find("[data-control='rollInitiative']").click(this.rollVermineInitiative.bind(this))
|
||||
}
|
||||
|
||||
async rollVermineInitiative(ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
const btn = ev.currentTarget;
|
||||
const li = btn.closest(".combatant");
|
||||
const combat = this.viewed;
|
||||
const combatant = combat.combatants.get(li.dataset.combatantId);
|
||||
|
||||
console.log(combatant)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Use to put an attitude to an actor
|
||||
* @param {*} event
|
||||
*/
|
||||
|
||||
async _setStatut(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
Reference in New Issue
Block a user