Ajout acteur de type vehicule/maison

This commit is contained in:
2021-01-10 22:12:07 +01:00
parent 6493d00aab
commit e54de9f080
9 changed files with 285 additions and 203 deletions

View File

@ -53,7 +53,7 @@ export class RdDActor extends Actor {
return actor;
}
let compendiumName = "";
let compendiumName;
if (data.type == "personnage") {
compendiumName = "foundryvtt-reve-de-dragon.competences";
} else if (data.type == "creature") {
@ -61,7 +61,9 @@ export class RdDActor extends Actor {
} else if (data.type == "entite") {
compendiumName = "foundryvtt-reve-de-dragon.competences-entites";
}
data.items = RdDUtility.loadCompendium(compendiumName);
if ( compendiumName ) {
data.items = RdDUtility.loadCompendium(compendiumName);
}
// Ajout monnaie
if (data.type == "personnage") {
await RdDActor.ajouterMonnaie(data.items);
@ -90,6 +92,7 @@ export class RdDActor extends Actor {
// things organized.
if (actorData.type === 'personnage') this._prepareCharacterData(actorData);
if (actorData.type === 'creature') this.prepareCreatureData(actorData);
if (actorData.type === 'vehicule') this.prepareVehiculeData(actorData);
}
/* -------------------------------------------- */
@ -98,6 +101,11 @@ export class RdDActor extends Actor {
this.computeEtatGeneral();
}
/* -------------------------------------------- */
prepareVehiculeData( actorData ) {
this.computeEncombrementTotalEtMalusArmure();
}
/* -------------------------------------------- */
/**
* Prepare Character type specific data
@ -758,7 +766,6 @@ export class RdDActor extends Actor {
itemsList.push( {id: itemId, conteneurId: undefined }); // Init list
sourceActor.buildSubConteneurObjetList( itemId, itemsList ); // Get itemId list
let conteneurMap = {};
for (let item of itemsList) {
let copyItem = sourceActor.data.items.find( subItem => subItem._id == item.id );
@ -784,14 +791,20 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
detectSurEncombrement( ) {
let diffEnc = Number(this.encTotal) - Number(this.data.data.attributs.encombrement.value);
let maxEnc = 0;
if ( this.data.type == 'vehicule')
maxEnc = this.data.data.capacite_encombrement;
else
maxEnc = this.data.data.attributs.encombrement.value;
let diffEnc = Number(this.encTotal) - Number(maxEnc);
return Math.max(0, Math.ceil(diffEnc));
}
/* -------------------------------------------- */
async computeEncombrementTotalEtMalusArmure() {
let encTotal = 0;
let malusArmureData = (this.data.data.attributs.malusarmure) ? duplicate(this.data.data.attributs.malusarmure) : {};
let malusArmureData = (this.data.data.attributs && this.data.data.attributs.malusarmure) ? duplicate(this.data.data.attributs.malusarmure) : {};
let newMalusArmure = 0;
for (const item of this.data.items) {
if (item.type == 'armure' && item.data.equipe) { // Armure équipée, intégration du malus armure total
@ -811,10 +824,10 @@ export class RdDActor extends Actor {
}
// Mise à jour valeur totale et états
this.encTotal = encTotal;
//console.log("Enco total : ", this.encTotal);
console.log("Enco total : ", this.encTotal);
this.detectSurEncombrement();
// Mise à jour éventuelle du malus armure
if (this.data.data.attributs.malusarmure && newMalusArmure != malusArmureData.value) {
if (this.data.data.attributs && this.data.data.attributs.malusarmure && newMalusArmure != malusArmureData.value) {
malusArmureData.value = newMalusArmure;
await this.update({ "data.attributs.malusarmure": malusArmureData });
}
@ -875,7 +888,7 @@ export class RdDActor extends Actor {
data.compteurs.surenc.value = - this.detectSurEncombrement();
}
}
/* -------------------------------------------- */
async ajouterRefoulement(value = 1) {
let ret = "none";