export class RdDItemArme extends Item { /* -------------------------------------------- */ static getCategorieArme(arme) { if (arme.data.competence == undefined) { return 'competencecreature'; } let compname = arme.data.competence.toLowerCase(); if (compname.match("hache")) return "hache"; if (compname.match("hast")) return "hast"; if (compname.match("lance")) return "lance"; if (compname.match("bouclier")) return "bouclier"; if (compname.match("masse")) return "masse"; if (compname.match("fléau")) return "fleau"; if (compname.match("epée") || compname.match("épée")) { let armename = arme.name.toLowerCase(); if (armename.match("gnome")) return "epee_courte"; return "epee_longue"; } if (compname.match("dague")) { return "epee_courte"; } return ""; } /* -------------------------------------------- */ static needParadeSignificative(armeAttaque, armeParade) { let attCategory = RdDItemArme.getCategorieArme(armeAttaque); let defCategory = RdDItemArme.getCategorieArme(armeParade); if (defCategory == "bouclier" || attCategory == defCategory) { return false; } let armeParadeName = armeParade.name.toLowerCase(); let armeAttaqueName = armeAttaque.name.toLowerCase(); if (armeParadeName.match("dague") && armeAttaqueName.match(/((e|é)pée dragone|esparlongue|demi-dragonne)/)) { return false; } // Manage weapon categories when parrying (cf. page 115 ) return true; } /* -------------------------------------------- */ 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("/"); if (containsSlash) { // Sanity check arme = duplicate(arme); const tableauDegats = arme.data.dommages.split("/"); if (aUneMain) arme.data.dommagesReels = Number(tableauDegats[0]); else // 2 mains arme.data.dommagesReels = Number(tableauDegats[1]); } else { arme.data.dommagesReels = Number(arme.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)"); } } return arme; } static mainsNues() { const mainsNues = { name: "Mains nues", data: { unemain: true, deuxmains: false, dommages: 0, dommagesReels: 0, mortalite: 'non-mortel', competence: 'Corps à corps', sansArme:true } }; return mainsNues } }