Preparation access documentData
Ajout de méthode Misc.data pour accéder aux data des Actor/Item Dans le cas où on est sur un Actor/Item, retourne le document (noeud data) Dans les autres cas, retourne l'objet lkui même (donc, le document) Du coup, on devrait pouvoir facilement changer en 0.8.0
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
import { RdDItemCompetenceCreature } from "./item-competencecreature.js"
|
||||
import { Misc } from "./misc.js";
|
||||
import { RdDCombatManager } from "./rdd-combat.js";
|
||||
|
||||
const nomCategorieParade = {
|
||||
@ -17,16 +18,18 @@ const nomCategorieParade = {
|
||||
/* -------------------------------------------- */
|
||||
export class RdDItemArme extends Item {
|
||||
|
||||
static isArme(item) {
|
||||
return (item.type == 'competencecreature' && item.data.iscombat) || item.type == 'arme';
|
||||
static isArme(itemData) {
|
||||
itemData = Misc.data(itemData);
|
||||
return (itemData.type == 'competencecreature' && itemData.data.iscombat) || itemData.type == 'arme';
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getArmeData(item) {
|
||||
switch (item ? item.data.type : '') {
|
||||
case 'arme': return item.data;
|
||||
static getArmeData(armeData) {
|
||||
armeData = Misc.data(armeData);
|
||||
switch (armeData ? armeData.type : '') {
|
||||
case 'arme': return armeData;
|
||||
case 'competencecreature':
|
||||
return RdDItemCompetenceCreature.toArme(item.data);
|
||||
return RdDItemCompetenceCreature.toArme(armeData);
|
||||
}
|
||||
return RdDItemArme.mainsNues();
|
||||
}
|
||||
@ -61,21 +64,22 @@ export class RdDItemArme extends Item {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getCategorieParade(arme) {
|
||||
if (arme.data.categorie_parade) {
|
||||
return arme.data.categorie_parade;
|
||||
static getCategorieParade(armeData) {
|
||||
armeData = Misc.data(armeData);
|
||||
if (armeData.data.categorie_parade) {
|
||||
return armeData.data.categorie_parade;
|
||||
}
|
||||
// pour compatibilité avec des personnages existants
|
||||
if (arme.type == 'competencecreature' || arme.data.categorie == 'creature') {
|
||||
return arme.data.categorie_parade || (arme.data.isparade ? 'sans-armes' : '');
|
||||
if (armeData.type == 'competencecreature' || armeData.data.categorie == 'creature') {
|
||||
return armeData.data.categorie_parade || (armeData.data.isparade ? 'sans-armes' : '');
|
||||
}
|
||||
if (!arme.type.match(/arme|competencecreature/)) {
|
||||
if (!armeData.type.match(/arme|competencecreature/)) {
|
||||
return '';
|
||||
}
|
||||
if (arme.data.competence == undefined) {
|
||||
if (armeData.data.competence == undefined) {
|
||||
return 'competencecreature';
|
||||
}
|
||||
let compname = arme.data.competence.toLowerCase();
|
||||
let compname = armeData.data.competence.toLowerCase();
|
||||
if (compname.match(/^(dague de jet|javelot|fouet|arc|arbalête|fronde|hache de jet|fléau)$/)) return '';
|
||||
|
||||
if (compname.match('hache')) return 'haches';
|
||||
@ -84,9 +88,9 @@ export class RdDItemArme extends Item {
|
||||
if (compname.match('bouclier')) return 'boucliers';
|
||||
if (compname.match('masse')) return 'masses';
|
||||
if (compname.match('epée') || compname.match('épée')) {
|
||||
if (arme.name.toLowerCase().match(/(gnome)/))
|
||||
if (armeData.name.toLowerCase().match(/(gnome)/))
|
||||
return 'epees-courtes';
|
||||
if (arme.name.toLowerCase().match(/((e|é)pée dragone|esparlongue|demi-dragonne)/))
|
||||
if (armeData.name.toLowerCase().match(/((e|é)pée dragone|esparlongue|demi-dragonne)/))
|
||||
return 'epees-longues';
|
||||
return 'epees-lourdes';
|
||||
}
|
||||
@ -131,33 +135,35 @@ export class RdDItemArme extends Item {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static armeUneOuDeuxMains(arme, aUneMain) {
|
||||
if (arme) {
|
||||
arme.data.unemain = arme.data.unemain || !arme.data.deuxmains;
|
||||
const uneOuDeuxMains = arme.data.unemain && arme.data.deuxmains;
|
||||
const containsSlash = !Number.isInteger(arme.data.dommages) && arme.data.dommages.includes("/");
|
||||
static armeUneOuDeuxMains(armeData, aUneMain) {
|
||||
armeData = Misc.data(armeData);
|
||||
if (armeData) {
|
||||
armeData.data.unemain = armeData.data.unemain || !armeData.data.deuxmains;
|
||||
const uneOuDeuxMains = armeData.data.unemain && armeData.data.deuxmains;
|
||||
const containsSlash = !Number.isInteger(armeData.data.dommages) && armeData.data.dommages.includes("/");
|
||||
if (containsSlash) { // Sanity check
|
||||
arme = duplicate(arme);
|
||||
armeData = duplicate(armeData);
|
||||
|
||||
const tableauDegats = arme.data.dommages.split("/");
|
||||
const tableauDegats = armeData.data.dommages.split("/");
|
||||
if (aUneMain)
|
||||
arme.data.dommagesReels = Number(tableauDegats[0]);
|
||||
armeData.data.dommagesReels = Number(tableauDegats[0]);
|
||||
else // 2 mains
|
||||
arme.data.dommagesReels = Number(tableauDegats[1]);
|
||||
armeData.data.dommagesReels = Number(tableauDegats[1]);
|
||||
}
|
||||
else {
|
||||
arme.data.dommagesReels = Number(arme.data.dommages);
|
||||
armeData.data.dommagesReels = Number(armeData.data.dommages);
|
||||
}
|
||||
|
||||
if (uneOuDeuxMains != containsSlash) {
|
||||
ui.notifications.info("Les dommages de l'arme à 1/2 mains " + arme.name + " ne sont pas corrects (ie sous la forme X/Y)");
|
||||
ui.notifications.info("Les dommages de l'arme à 1/2 mains " + armeData.name + " ne sont pas corrects (ie sous la forme X/Y)");
|
||||
}
|
||||
}
|
||||
return arme;
|
||||
return armeData;
|
||||
}
|
||||
|
||||
static isArmeUtilisable(item) {
|
||||
return item.type == 'arme' && item.data.equipe && (item.data.resistance > 0 || item.data.portee_courte > 0);
|
||||
static isArmeUtilisable(itemData) {
|
||||
itemData = Misc.data(itemData);
|
||||
return itemData.type == 'arme' && itemData.data.equipe && (itemData.data.resistance > 0 || itemData.data.portee_courte > 0);
|
||||
}
|
||||
|
||||
static ajoutCorpsACorps(armes, competences, carac) {
|
||||
|
Reference in New Issue
Block a user