forked from public/foundryvtt-reve-de-dragon
Fix dommages
This commit is contained in:
113
module/actor.js
113
module/actor.js
@ -533,53 +533,54 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
manageBlessures( blessuresData )
|
||||
{
|
||||
if ( blessuresData.legeres > 0 || blessuresData.graves > 0 || blessuresData.critiques > 0 ) {
|
||||
let blessures = duplicate(this.data.data.blessures);
|
||||
while ( blessuresData.legeres > 0 ) {
|
||||
let nLegeres = 0;
|
||||
for (let k=0; k<blessures.legeres.liste.length; k++) {
|
||||
let bless = blessures.legeres.liste[k];
|
||||
if ( !bless.active ) {
|
||||
bless.active = true;
|
||||
bless.loc = blessuresData.locName;
|
||||
blessuresData.legeres--;
|
||||
} else {
|
||||
nLegeres++;
|
||||
}
|
||||
}
|
||||
if ( nLegeres == 5) break;
|
||||
}
|
||||
|
||||
if ( blessuresData.legeres > 0 )
|
||||
blessuresData.graves += 1;
|
||||
|
||||
|
||||
while ( blessuresData.graves > 0) {
|
||||
let nGraves = 0;
|
||||
for (let k=0; k<blessures.graves.liste.length; k++) {
|
||||
let bless = blessures.graves.liste[k];
|
||||
if ( !bless.active ) {
|
||||
bless.active = true;
|
||||
bless.loc = blessuresData.locName;
|
||||
blessuresData.graves--;
|
||||
} else {
|
||||
nGraves++;
|
||||
}
|
||||
}
|
||||
if ( nGraves == 2) break;
|
||||
}
|
||||
let workData = duplicate(blessuresData);
|
||||
|
||||
if ( blessuresData.graves > 0 )
|
||||
blessuresData.critiques = 1;
|
||||
|
||||
if ( blessuresData.critiques > 0 ) {
|
||||
blessuresData.endurance = this.data.data.sante.endurance.value; // Patch with real endurance current value (ie end -> 0 when critique)
|
||||
blessures.critiques.liste[0].active = true;
|
||||
blessures.critiques.liste[0].loc = blessuresData.locName;
|
||||
// Fast exit
|
||||
if ( blessuresData.legeres + blessuresData.graves + blessuresData.critiques == 0 ) return;
|
||||
|
||||
let blessures = duplicate(this.data.data.blessures);
|
||||
// Manage blessures
|
||||
if ( workData.legeres > 0 ) {
|
||||
for (let k=0; k<blessures.legeres.liste.length; k++) {
|
||||
let bless = blessures.legeres.liste[k];
|
||||
if ( !bless.active ){
|
||||
bless.active = true;
|
||||
bless.loc = workData.locName;
|
||||
workData.legeres--;
|
||||
}
|
||||
if (workData.legeres == 0) break;
|
||||
}
|
||||
|
||||
this.update( { "data.blessures": blessures } );
|
||||
}
|
||||
|
||||
if ( workData.legeres > 0 ) {
|
||||
workData.graves += 1;
|
||||
blessuresData.graves += 1;
|
||||
}
|
||||
|
||||
if ( workData.graves > 0) {
|
||||
for (let k=0; k<blessures.graves.liste.length; k++) {
|
||||
let bless = blessures.graves.liste[k];
|
||||
if ( !bless.active ) {
|
||||
bless.active = true;
|
||||
bless.loc = workData.locName;
|
||||
workData.graves--;
|
||||
}
|
||||
if ( workData.graves == 0) break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( workData.graves > 0 ) {
|
||||
workData.critiques = 1;
|
||||
blessuresData.critiques = 1;
|
||||
}
|
||||
|
||||
if ( workData.critiques > 0 ) {
|
||||
workData.endurance = this.data.data.sante.endurance.value; // Patch with real endurance current value (ie end -> 0 when critique)
|
||||
blessures.critiques.liste[0].active = true;
|
||||
blessures.critiques.liste[0].loc = workData.locName;
|
||||
}
|
||||
|
||||
this.update( { "data.blessures": blessures } );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -827,6 +828,7 @@ export class RdDActor extends Actor {
|
||||
result.locName = attackerRoll.loc.label; // Add the localisation namme
|
||||
this.manageBlessures( result ); // Will upate the result table
|
||||
ChatMessage.create( {title: "Blessures !", content: this.data.name + " a encaissé : " +
|
||||
"<br>Encaissement final : " + degatsReel +
|
||||
"<br>" + result.legeres + " légères, " + result.graves + " graves et " +
|
||||
result.critiques + " critique." +
|
||||
"<br>Et perdu : " +
|
||||
@ -835,6 +837,29 @@ export class RdDActor extends Actor {
|
||||
this.computeEtatGeneral();
|
||||
this.sheet.render(true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
encaisserDommagesHorsCombat( degats )
|
||||
{
|
||||
let degatsReel = degats - this.computeArmure("Corps", 0);
|
||||
console.log("Enciasser dommages", degatsReel);
|
||||
|
||||
let result = RdDUtility.computeBlessuresSante(degatsReel);
|
||||
this.santeIncDec("vie", result.vie);
|
||||
this.santeIncDec("endurance", result.endurance);
|
||||
|
||||
result.locName = "Corps"; // Add the localisation namme
|
||||
this.manageBlessures( result ); // Will upate the result table
|
||||
ChatMessage.create( {title: "Blessures !", content: this.data.name + " a encaissé : " +
|
||||
"<br>Encaissement final : " + degatsReel +
|
||||
"<br>" + result.legeres + " légères, " + result.graves + " graves et " +
|
||||
result.critiques + " critique." +
|
||||
"<br>Et perdu : " +
|
||||
"<br>" + result.endurance + " Endurance et " + result.vie + " Points de Vie" } );
|
||||
|
||||
this.computeEtatGeneral();
|
||||
this.sheet.render(true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
parerAttaque( attackerRoll, armeId )
|
||||
|
Reference in New Issue
Block a user