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

View File

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

View File

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

View File

@ -1,3 +1,4 @@
import { Misc } from "./misc.js";
export class RdDHotbar {
@ -67,15 +68,14 @@ export class RdDHotbar {
let actor;
if (speaker.token) actor = game.actors.tokens[speaker.token];
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
switch (item.type) {
case "arme":
return actor.rollArme(item.data.competence, itemName);
return actor.rollArme(item);
case "competence":
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,
(event) => {
let armeIndex = event.currentTarget.attributes['data-arme-id'].value;
let arme = armesList[armeIndex];
actor.rollArme(arme.data.competence, arme.name);
actor.rollArme(armesList[armeIndex]);
});
}