#38 - Gestion des armes 1/2mains

This commit is contained in:
2020-11-23 20:40:56 +01:00
parent 73441000a2
commit 1c2a60017d
7 changed files with 53 additions and 18 deletions

View File

@ -62,7 +62,8 @@ export class RdDActorSheet extends ActorSheet {
// Force empty arme, at least for Esquive
if (data.itemsByType.arme == undefined ) data.itemsByType.arme = [];
for (const arme of data.itemsByType.arme) {
let arme2mains = []; // tablea contenant la duplication des armes 1m/2m
for (const arme of data.itemsByType.arme) {
arme.data.niveau = 0; // Per default, TODO to be fixed
for ( const melee of data.competenceByCategory.melee ) {
if (melee.name == arme.data.competence )
@ -76,8 +77,19 @@ export class RdDActorSheet extends ActorSheet {
if (lancer.name == arme.data.competence )
arme.data.niveau = lancer.data.niveau
}
// Dupliquer les armes pouvant être à 1 main et 2 mains en patchant la compétence
if (arme.data.unemain && arme.data.deuxmains) {
let arme2main = duplicate(arme);
arme2main.data.competence = arme2main.data.competence.replace(" 1 main", " 2 mains"); // Replace !
for ( const melee of data.competenceByCategory.melee ) {
if (melee.name == arme2main.data.competence )
arme2main.data.niveau = melee.data.niveau
}
arme2mains.push(arme2main);
}
}
data.itemsByType.arme = data.itemsByType.arme.concat(arme2mains); // Merge all cases
// To avoid armour and so on...
data.data.combat = duplicate( RdDUtility.checkNull(data.itemsByType['arme']));
@ -237,7 +249,8 @@ export class RdDActorSheet extends ActorSheet {
// Roll Weapon1
html.find('.arme-label a').click((event) => {
let armeName = event.currentTarget.text;
this.actor.rollArme( armeName);
let competenceName = event.currentTarget.attributes['data-competence-name'].value;
this.actor.rollArme( armeName, competenceName);
});
// Display TMR, normal
html.find('.visu-tmr a').click((event) => {

View File

@ -1032,13 +1032,15 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
rollArme( armeName )
rollArme( armeName, competenceName=undefined )
{
let armeItem = this.data.items.find(item=>item.type==="arme" && (item.name === armeName));
if ( armeItem && armeItem.data.competence )
this.rollCompetence( armeItem.data.competence, armeItem );
else
this.rollCompetence( armeName ); //Bypass mode!
if (armeItem ) {
if ( competenceName == undefined) competenceName = armeItem.data.competence;
this.rollCompetence( competenceName, armeItem );
} else {
this.rollCompetence( armeName ); //Bypass mode!
}
}
/* -------------------------------------------- */
@ -1059,7 +1061,7 @@ export class RdDActor extends Actor {
if ( competence.type == 'competencecreature') { // Specific case for Creatures
if ( competence.data.iscombat ) {
armeItem = { name: name, data: { dommages: competence.data.dommages} };
armeItem = { name: name, data: { dommages: competence.data.dommages, dommagesReels: competence.data.dommages} };
}
competence.data.defaut_carac = "carac_creature"; // Fake default competence
competence.data.categorie = "creature"; // Fake default competence
@ -1068,6 +1070,16 @@ export class RdDActor extends Actor {
rollData.carac = { carac_creature: { label: name, value: competence.data.carac_value } };
} else { // Usual competence
rollData.competence = competence;
armeItem.data.dommagesReels = armeItem.data.dommages; // Per default
if ( !armeItem.data.unemain && !armeItem.data.deuxmains) // Force default
armeItem.data.unemain = true;
if (armeItem.data.unemain && armeItem.data.deuxmains) { // manage 1/2 main
//console.log("Weapon", armeItem.data.dommages);
if ( name.toLowerCase().includes("1 main") )
armeItem.data.dommagesReels = Number(armeItem.data.dommages.split("/")[0]);
else // 2 mains
armeItem.data.dommagesReels = Number(armeItem.data.dommages.split("/")[1]);
}
rollData.arme = armeItem;
rollData.carac = this.data.data.carac;
}