|
|
@ -60,13 +60,21 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|
|
|
return this.system.sante.vie.value < -this.getSConst()
|
|
|
|
return this.system.sante.vie.value < -this.getSConst()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nbBlessuresLegeres() {
|
|
|
|
|
|
|
|
return this.itemTypes[TYPES.blessure].filter(it => it.isLegere()).length;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
nbBlessuresGraves() {
|
|
|
|
|
|
|
|
return this.itemTypes[TYPES.blessure].filter(it => it.isGrave()).length;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
nbBlessuresCritiques() {
|
|
|
|
|
|
|
|
return this.itemTypes[TYPES.blessure].filter(it => it.isCritique()).length;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
computeResumeBlessure() {
|
|
|
|
computeResumeBlessure() {
|
|
|
|
const blessures = this.filterItems(it => it.system.gravite > 0, 'blessure')
|
|
|
|
const nbLegeres = this.nbBlessuresLegeres()
|
|
|
|
|
|
|
|
const nbGraves = this.nbBlessuresGraves()
|
|
|
|
const nbLegeres = blessures.filter(it => it.isLegere()).length;
|
|
|
|
const nbCritiques = this.nbBlessuresCritiques()
|
|
|
|
const nbGraves = blessures.filter(it => it.isGrave()).length;
|
|
|
|
|
|
|
|
const nbCritiques = blessures.filter(it => it.isCritique()).length;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (nbLegeres + nbGraves + nbCritiques == 0) {
|
|
|
|
if (nbLegeres + nbGraves + nbCritiques == 0) {
|
|
|
|
return "Aucune blessure";
|
|
|
|
return "Aucune blessure";
|
|
|
@ -206,26 +214,36 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
async jetVie() {
|
|
|
|
async jetDeVie() {
|
|
|
|
let roll = await RdDDice.roll("1d20");
|
|
|
|
if (this.isDead()) {
|
|
|
|
let msgText = "Jet de Vie : " + roll.total + " / " + this.system.sante.vie.value + "<br>";
|
|
|
|
ChatMessage.create({ content: `Jet de Vie: ${this.name} est déjà mort, ce n'est pas la peine d'en rajouter !!!!!`, whisper: ChatMessage.getWhisperRecipients(this.name) });
|
|
|
|
if (roll.total <= this.system.sante.vie.value) {
|
|
|
|
return
|
|
|
|
msgText += "Jet réussi, pas de perte de point de vie (prochain jet dans 1 round pour 1 critique, SC minutes pour une grave)";
|
|
|
|
|
|
|
|
if (roll.total == 1) {
|
|
|
|
|
|
|
|
msgText += "La durée entre 2 jets de vie est multipliée par 20 (20 rounds pour une critique, SCx20 minutes pour une grave)";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
msgText += "Jet échoué, vous perdez 1 point de vie";
|
|
|
|
|
|
|
|
await this.santeIncDec("vie", -1);
|
|
|
|
|
|
|
|
if (roll.total == 20) {
|
|
|
|
|
|
|
|
msgText += "Votre personnage est mort !!!!!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const message = {
|
|
|
|
const jetDeVie = await RdDDice.roll("1d20");
|
|
|
|
content: msgText,
|
|
|
|
|
|
|
|
whisper: ChatMessage.getWhisperRecipients(this.name)
|
|
|
|
const sConst = this.getSConst();
|
|
|
|
};
|
|
|
|
const vie = this.system.sante.vie.value;
|
|
|
|
ChatMessage.create(message);
|
|
|
|
const isCritique = this.nbBlessuresCritiques() > 0;
|
|
|
|
|
|
|
|
const isGrave = this.nbBlessuresGraves();
|
|
|
|
|
|
|
|
const isEchecTotal = jetDeVie.total == 20;
|
|
|
|
|
|
|
|
const isSuccess = jetDeVie.total == 1 || jetDeVie.total <= vie;
|
|
|
|
|
|
|
|
const perte = isSuccess ? 0 : 1 + (isEchecTotal ? vie + sConst : 0)
|
|
|
|
|
|
|
|
const prochainJet = (jetDeVie.total == 1 && vie > 0 ? 20 : 1) * (isCritique ? 1 : isGrave > 0 ? sConst : 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let msgText = `Jet de Vie: <strong>${jetDeVie.total} / ${vie}</strong>`
|
|
|
|
|
|
|
|
if (isSuccess) {
|
|
|
|
|
|
|
|
msgText += "<br>Réussi, pas de perte de point de vie."
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
msgText += `<br>Echoué, perte ${perte} point de vie`;
|
|
|
|
|
|
|
|
await this.santeIncDec("vie", -perte);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.isDead()) {
|
|
|
|
|
|
|
|
msgText += `<br><strong>${this.name} est mort !!!!</strong>`;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (prochainJet > 0) {
|
|
|
|
|
|
|
|
msgText += `<br>Prochain jet de vie dans ${prochainJet} ${isCritique ? 'round' : 'minute'}${prochainJet > 1 ? 's' : ''} ${isCritique ? '(état critique)' : '(état grave)'}`
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ChatMessage.create({ content: msgText, whisper: ChatMessage.getWhisperRecipients(this.name) });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* -------------------------------------------- */
|
|
|
@ -238,7 +256,6 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|
|
|
return { jetEndurance, sonne }
|
|
|
|
return { jetEndurance, sonne }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async finDeRoundBlessures() {
|
|
|
|
async finDeRoundBlessures() {
|
|
|
|
const nbGraves = this.filterItems(it => it.isGrave(), 'blessure').length;
|
|
|
|
const nbGraves = this.filterItems(it => it.isGrave(), 'blessure').length;
|
|
|
|
if (nbGraves > 0) {
|
|
|
|
if (nbGraves > 0) {
|
|
|
|