Préparation ajout empoignade

actor.rollArme prend maintenant une arme (ou structure)
plutôt que des noms

l'empoignade sera une pseudo arme, comme le corps à corps

# Conflicts:
#	module/actor-sheet.js
This commit is contained in:
Vincent Vandemeulebrouck 2021-05-24 22:12:37 +02:00
parent ab9f6f0017
commit 9bc4b9a3ca
6 changed files with 24 additions and 18 deletions

View File

@ -344,8 +344,16 @@ export class RdDActorSheet extends ActorSheet {
// Roll Weapon1 // Roll Weapon1
html.find('.arme-label a').click(async event => { html.find('.arme-label a').click(async event => {
let armeName = event.currentTarget.text; let armeName = event.currentTarget.text;
let competenceName = event.currentTarget.attributes['data-competence-name'].value; let compName = event.currentTarget.attributes['data-competence-name'].value;
this.actor.rollArme(competenceName, armeName); let arme = this.actor.data.find(it =>
it.name == armeName &&
RdDItemArme.isArme(it) &&
((compName ?? it.data.competence) == it.data.competence)
);
if (!arme) {
arme = { name: armeName, data: { competence: compName } };
}
this.actor.rollArme(arme);
}); });
// Initiative pour l'arme // Initiative pour l'arme
html.find('.arme-initiative a').click(async event => { html.find('.arme-initiative a').click(async event => {
@ -441,6 +449,7 @@ export class RdDActorSheet extends ActorSheet {
this.render(true); this.render(true);
}); });
html.find('.lock-unlock-controls').click(async event => { html.find('.lock-unlock-controls').click(async event => {
console.log("CONTROLS", this.options.hideControls)
this.options.hideControls = !this.options.hideControls; this.options.hideControls = !this.options.hideControls;
this.render(true); this.render(true);
}); });
@ -560,7 +569,7 @@ export class RdDActorSheet extends ActorSheet {
async _onSplitItem(item, split) { async _onSplitItem(item, split) {
if (split >= 1 && split < Misc.data(item).data.quantite) { if (split >= 1 && split < Misc.data(item).data.quantite) {
await item.diminuerQuantite(split); await item.diminuerQuantite(split);
const itemData = duplicate( Misc.data(item)); const itemData = duplicate(Misc.data(item));
itemData.data.quantite = split; itemData.data.quantite = split;
await this.actor.createEmbeddedDocuments('Item', [itemData]) await this.actor.createEmbeddedDocuments('Item', [itemData])
} }

View File

@ -3117,11 +3117,9 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
rollArme(compName, armeName = undefined) { rollArme(arme) {
let arme = armeName ? this.data.items.find(it => Misc.data(it).name == armeName && RdDItemArme.isArme(it)) : undefined; let competence = Misc.data(this.getCompetence(arme.data.competence));
let competence = Misc.data(this.getCompetence(compName)); if (arme || (competence.type == 'competencecreature' && competence.data.iscombat)) {
if (arme || armeName || (competence.type == 'competencecreature' && competence.data.iscombat)) {
RdDCombat.createUsingTarget(this)?.attaque(competence, arme); RdDCombat.createUsingTarget(this)?.attaque(competence, arme);
} else { } else {
this.rollCompetence(competence.name); this.rollCompetence(competence.name);

View File

@ -189,6 +189,6 @@ export class RdDItemArme extends Item {
if (actorData) { if (actorData) {
mergeObject(mainsNues.data, actorData, { overwrite: false }); mergeObject(mainsNues.data, actorData, { overwrite: false });
} }
return mainsNues return mainsNues;
} }
} }

View File

@ -1,3 +1,4 @@
import { Misc } from "./misc.js";
export class RdDHotbar { export class RdDHotbar {
@ -67,15 +68,14 @@ export class RdDHotbar {
let actor; let actor;
if (speaker.token) actor = game.actors.tokens[speaker.token]; if (speaker.token) actor = game.actors.tokens[speaker.token];
if (!actor) actor = game.actors.get(speaker.actor); if (!actor) actor = game.actors.get(speaker.actor);
let item = actor ? actor.items.find(i => i.name === itemName && i.type == itemType) : null;
if (!item) return ui.notifications.warn(`Impossible de trouver l'objet de cette macro`);
item = item.data; let item = Misc.data(actor?.items.find(it => it.name === itemName && it.type == itemType));
if (!item) return ui.notifications.warn(`Impossible de trouver l'objet de cette macro`);
// Trigger the item roll // Trigger the item roll
switch (item.type) { switch (item.type) {
case "arme": case "arme":
return actor.rollArme(item.data.competence, itemName); return actor.rollArme(item);
case "competence": case "competence":
return actor.rollCompetence( itemName ); return actor.rollCompetence( itemName );
} }

View File

@ -53,8 +53,7 @@ export class RdDTokenHud {
await RdDTokenHud._configureSubMenu(controlIconTarget, 'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html', hudData, await RdDTokenHud._configureSubMenu(controlIconTarget, 'systems/foundryvtt-reve-de-dragon/templates/hud-actor-attaque.html', hudData,
(event) => { (event) => {
let armeIndex = event.currentTarget.attributes['data-arme-id'].value; let armeIndex = event.currentTarget.attributes['data-arme-id'].value;
let arme = armesList[armeIndex]; actor.rollArme(armesList[armeIndex]);
actor.rollArme(arme.data.competence, arme.name);
}); });
} }