Fix: animaux
- état général corrigé - ajout de blessure, mise à jour endurance, ... - calcul du malus d'état général - ajustement des jets selon points de vie perdus
This commit is contained in:
parent
af410c1823
commit
f0b7306885
@ -15,14 +15,14 @@ import { RdDBaseActorReveSheet } from "./actor/base-actor-reve-sheet.js";
|
|||||||
import { RdDItem } from "./item.js";
|
import { RdDItem } from "./item.js";
|
||||||
import { RdDItemBlessure } from "./item/blessure.js";
|
import { RdDItemBlessure } from "./item/blessure.js";
|
||||||
import { RdDEmpoignade } from "./rdd-empoignade.js";
|
import { RdDEmpoignade } from "./rdd-empoignade.js";
|
||||||
import { ChatUtility } from "./chat-utility.js";
|
import { RdDBaseActorSangSheet } from "./actor/base-actor-sang-sheet.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/**
|
/**
|
||||||
* Extend the basic ActorSheet with some very simple modifications
|
* Extend the basic ActorSheet with some very simple modifications
|
||||||
* @extends {ActorSheet}
|
* @extends {ActorSheet}
|
||||||
*/
|
*/
|
||||||
export class RdDActorSheet extends RdDBaseActorReveSheet {
|
export class RdDActorSheet extends RdDBaseActorSangSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
@ -162,16 +162,11 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
|
|||||||
this.actor.updateCompteurValue("experience", parseInt(event.target.value));
|
this.actor.updateCompteurValue("experience", parseInt(event.target.value));
|
||||||
});
|
});
|
||||||
|
|
||||||
this.html.find('.creer-tache').click(async event => {
|
this.html.find('.creer-tache').click(async event => this.createEmptyTache());
|
||||||
this.createEmptyTache();
|
this.html.find('.creer-une-oeuvre').click(async event => this.selectTypeOeuvreToCreate());
|
||||||
});
|
|
||||||
this.html.find('.creer-tache-blessure-legere').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 2));
|
this.html.find('.creer-tache-blessure-legere').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 2));
|
||||||
this.html.find('.creer-tache-blessure-grave').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 4));
|
this.html.find('.creer-tache-blessure-grave').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 4));
|
||||||
this.html.find('.creer-tache-blessure-critique').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 6));
|
this.html.find('.creer-tache-blessure-critique').click(async event => RdDItemBlessure.createTacheSoinBlessure(this.actor, 6));
|
||||||
this.html.find('.creer-blessure-legere').click(async event => RdDItemBlessure.createBlessure(this.actor, 2));
|
|
||||||
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
|
|
||||||
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
|
|
||||||
this.html.find('.creer-une-oeuvre').click(async event => this.selectTypeOeuvreToCreate());
|
|
||||||
|
|
||||||
this.html.find('.blessure-premierssoins-done').change(async event => {
|
this.html.find('.blessure-premierssoins-done').change(async event => {
|
||||||
const blessure = this.getBlessure(event);
|
const blessure = this.getBlessure(event);
|
||||||
@ -191,71 +186,33 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Equip Inventory Item
|
// Equip Inventory Item
|
||||||
this.html.find('.item-equip').click(async event => {
|
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
|
||||||
this.actor.equiperObjet(RdDSheetUtility.getItemId(event));
|
this.html.find('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
|
||||||
});
|
|
||||||
|
|
||||||
// Roll Carac
|
this.html.find('.chance-appel').click(async event => this.actor.rollAppelChance())
|
||||||
this.html.find('.chance-actuelle').click(async event => {
|
|
||||||
this.actor.rollCarac('chance-actuelle');
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.chance-appel').click(async event => {
|
this.html.find('[name="jet-astrologie"]').click(async event => this.actor.astrologieNombresAstraux())
|
||||||
this.actor.rollAppelChance();
|
this.html.find('.tache-label a').click(async event => this.actor.rollTache(RdDSheetUtility.getItemId(event)))
|
||||||
});
|
this.html.find('.meditation-label a').click(async event => this.actor.rollMeditation(RdDSheetUtility.getItemId(event)))
|
||||||
|
|
||||||
// Roll Skill
|
this.html.find('.chant-label a').click(async event => this.actor.rollChant(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('[name="jet-astrologie"]').click(async event => {
|
this.html.find('.danse-label a').click(async event => this.actor.rollDanse(RdDSheetUtility.getItemId(event)))
|
||||||
this.actor.astrologieNombresAstraux();
|
this.html.find('.musique-label a').click(async event => this.actor.rollMusique(RdDSheetUtility.getItemId(event)))
|
||||||
});
|
this.html.find('.oeuvre-label a').click(async event => this.actor.rollOeuvre(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('.tache-label a').click(async event => {
|
this.html.find('.jeu-label a').click(async event => this.actor.rollJeu(RdDSheetUtility.getItemId(event)))
|
||||||
this.actor.rollTache(RdDSheetUtility.getItemId(event));
|
this.html.find('.recettecuisine-label a').click(async event => this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event)))
|
||||||
});
|
|
||||||
this.html.find('.meditation-label a').click(async event => {
|
|
||||||
this.actor.rollMeditation(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.chant-label a').click(async event => {
|
|
||||||
this.actor.rollChant(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.danse-label a').click(async event => {
|
|
||||||
this.actor.rollDanse(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.musique-label a').click(async event => {
|
|
||||||
this.actor.rollMusique(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.oeuvre-label a').click(async event => {
|
|
||||||
this.actor.rollOeuvre(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.jeu-label a').click(async event => {
|
|
||||||
this.actor.rollJeu(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
this.html.find('.recettecuisine-label a').click(async event => {
|
|
||||||
this.actor.rollRecetteCuisine(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Boutons spéciaux MJs
|
if (game.user.isGM) {
|
||||||
this.html.find('.forcer-tmr-aleatoire').click(async event => {
|
// Boutons spéciaux MJs
|
||||||
this.actor.reinsertionAleatoire("Action MJ");
|
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
|
||||||
});
|
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
|
||||||
this.html.find('.afficher-tmr').click(async event => {
|
}
|
||||||
this.actor.changeTMRVisible();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Points de reve actuel
|
// Points de reve actuel
|
||||||
this.html.find('.ptreve-actuel a').click(async event => {
|
this.html.find('.ptreve-actuel a').click(async event => this.actor.rollCarac('reve-actuel', true))
|
||||||
this.actor.rollCarac('reve-actuel', true);
|
this.html.find('.empoignade-label a').click(async event => RdDEmpoignade.onAttaqueEmpoignadeFromItem(RdDSheetUtility.getItem(event, this.actor)))
|
||||||
});
|
this.html.find('.arme-label a').click(async event => this.actor.rollArme(duplicate(this._getEventArmeCombat(event))))
|
||||||
|
|
||||||
// Suite empoignade
|
|
||||||
this.html.find('.empoignade-label a').click(async event => {
|
|
||||||
let emp = RdDSheetUtility.getItem(event, this.actor)
|
|
||||||
RdDEmpoignade.onAttaqueEmpoignadeFromItem(emp)
|
|
||||||
});
|
|
||||||
// Roll Weapon1
|
|
||||||
this.html.find('.arme-label a').click(async event => {
|
|
||||||
let arme = this._getEventArmeCombat(event);
|
|
||||||
this.actor.rollArme(duplicate(arme));
|
|
||||||
});
|
|
||||||
// Initiative pour l'arme
|
// Initiative pour l'arme
|
||||||
this.html.find('.arme-initiative a').click(async event => {
|
this.html.find('.arme-initiative a').click(async event => {
|
||||||
let combatant = game.combat.combatants.find(c => c.actor.id == this.actor.id);
|
let combatant = game.combat.combatants.find(c => c.actor.id == this.actor.id);
|
||||||
@ -267,21 +224,16 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Display TMR
|
// Display TMR
|
||||||
this.html.find('.visu-tmr').click(async event => { this.actor.displayTMR("visu") })
|
|
||||||
this.html.find('.monte-tmr').click(async event => { this.actor.displayTMR("normal") })
|
|
||||||
this.html.find('.monte-tmr-rapide').click(async event => { this.actor.displayTMR("rapide") })
|
|
||||||
|
|
||||||
this.html.find('.repos').click(async event => { await this.actor.repos() })
|
this.html.find('.visu-tmr').click(async event => this.actor.displayTMR("visu"))
|
||||||
this.html.find('.carac-xp-augmenter').click(async event => {
|
this.html.find('.monte-tmr').click(async event => this.actor.displayTMR("normal"))
|
||||||
let caracName = event.currentTarget.name.replace("augmenter.", "");
|
this.html.find('.monte-tmr-rapide').click(async event => this.actor.displayTMR("rapide"))
|
||||||
this.actor.updateCaracXPAuto(caracName);
|
|
||||||
});
|
this.html.find('.repos').click(async event => await this.actor.repos())
|
||||||
this.html.find('.competence-xp-augmenter').click(async event => {
|
|
||||||
this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event));
|
this.html.find('.carac-xp-augmenter').click(async event => this.actor.updateCaracXPAuto(event.currentTarget.name.replace("augmenter.", "")))
|
||||||
});
|
this.html.find('.competence-xp-augmenter').click(async event => this.actor.updateCompetenceXPAuto(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('.competence-stress-augmenter').click(async event => {
|
this.html.find('.competence-stress-augmenter').click(async event => this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event)))
|
||||||
this.actor.updateCompetenceStress(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
|
|
||||||
if (this.options.vueDetaillee) {
|
if (this.options.vueDetaillee) {
|
||||||
// On carac change
|
// On carac change
|
||||||
@ -308,10 +260,9 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
|
|||||||
let compName = event.currentTarget.attributes.compname.value;
|
let compName = event.currentTarget.attributes.compname.value;
|
||||||
this.actor.updateCompetenceArchetype(compName, parseInt(event.target.value));
|
this.actor.updateCompetenceArchetype(compName, parseInt(event.target.value));
|
||||||
});
|
});
|
||||||
|
this.html.find('.nouvelle-incarnation').click(async event => this.actor.nouvelleIncarnation())
|
||||||
}
|
}
|
||||||
this.html.find('.nouvelle-incarnation').click(async event => {
|
|
||||||
this.actor.nouvelleIncarnation();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.show-hide-competences').click(async event => {
|
this.html.find('.show-hide-competences').click(async event => {
|
||||||
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
|
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
|
||||||
@ -319,69 +270,19 @@ export class RdDActorSheet extends RdDBaseActorReveSheet {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// On pts de reve change
|
// On pts de reve change
|
||||||
this.html.find('.pointsreve-value').change(async event => {
|
this.html.find('.pointsreve-value').change(async event => this.actor.update({ "system.reve.reve.value": event.currentTarget.value }))
|
||||||
let reveValue = event.currentTarget.value;
|
this.html.find('.seuil-reve-value').change(async event => this.actor.setPointsDeSeuil(event.currentTarget.value))
|
||||||
this.actor.update({ "system.reve.reve.value": reveValue });
|
|
||||||
});
|
|
||||||
|
|
||||||
// On seuil de reve change
|
this.html.find('.stress-test').click(async event => this.actor.transformerStress())
|
||||||
this.html.find('.seuil-reve-value').change(async event => {
|
this.html.find('.moral-malheureux').click(async event => this.actor.jetDeMoral('malheureuse'))
|
||||||
console.log("seuil-reve-value", event.currentTarget)
|
this.html.find('.moral-neutre').click(async event => this.actor.jetDeMoral('neutre'))
|
||||||
this.actor.setPointsDeSeuil(event.currentTarget.value);
|
this.html.find('.moral-heureux').click(async event => this.actor.jetDeMoral('heureuse'))
|
||||||
});
|
this.html.find('.ethylisme-test').click(async event => this.actor.jetEthylisme())
|
||||||
|
|
||||||
|
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
|
||||||
this.html.find('.stress-test').click(async event => {
|
this.html.find('.ptreve-actuel-moins').click(async event => this.actor.reveActuelIncDec(-1))
|
||||||
this.actor.transformerStress();
|
this.html.find('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
|
||||||
});
|
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
|
||||||
this.html.find('.moral-malheureux').click(async event => {
|
|
||||||
this.actor.jetDeMoral('malheureuse');
|
|
||||||
});
|
|
||||||
this.html.find('.moral-neutre').click(async event => {
|
|
||||||
this.actor.jetDeMoral('neutre');
|
|
||||||
});
|
|
||||||
this.html.find('.moral-heureux').click(async event => {
|
|
||||||
this.actor.jetDeMoral('heureuse');
|
|
||||||
});
|
|
||||||
this.html.find('.ethylisme-test').click(async event => {
|
|
||||||
this.actor.jetEthylisme();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.jet-vie').click(async event => {
|
|
||||||
this.actor.jetDeVie();
|
|
||||||
});
|
|
||||||
this.html.find('.jet-endurance').click(async event => {
|
|
||||||
await this.jetEndurance();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.vie-plus').click(async event => {
|
|
||||||
this.actor.santeIncDec("vie", 1);
|
|
||||||
});
|
|
||||||
this.html.find('.vie-moins').click(async event => {
|
|
||||||
this.actor.santeIncDec("vie", -1);
|
|
||||||
});
|
|
||||||
this.html.find('.ptreve-actuel-plus').click(async event => {
|
|
||||||
this.actor.reveActuelIncDec(1);
|
|
||||||
});
|
|
||||||
this.html.find('.ptreve-actuel-moins').click(async event => {
|
|
||||||
this.actor.reveActuelIncDec(-1);
|
|
||||||
});
|
|
||||||
this.html.find('.fatigue-plus').click(async event => {
|
|
||||||
this.actor.santeIncDec("fatigue", 1);
|
|
||||||
});
|
|
||||||
this.html.find('.fatigue-moins').click(async event => {
|
|
||||||
this.actor.santeIncDec("fatigue", -1);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async jetEndurance() {
|
|
||||||
const endurance = this.actor.getEnduranceActuelle()
|
|
||||||
const result = await this.actor.jetEndurance(endurance);
|
|
||||||
ChatMessage.create({
|
|
||||||
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
|
|
||||||
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
|
|
||||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.actor.name)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getBlessure(event) {
|
getBlessure(event) {
|
||||||
|
@ -1110,17 +1110,6 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
return `${this.name} a obtenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement.`;
|
return `${this.name} a obtenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
_computeEnduranceMax() {
|
|
||||||
const diffVie = this.system.sante.vie.max - this.system.sante.vie.value;
|
|
||||||
const maxEndVie = this.system.sante.endurance.max - (diffVie * 2);
|
|
||||||
const nbGraves = this.countBlessures(it => it.isGrave()) > 0
|
|
||||||
const nbCritiques = this.countBlessures(it => it.isCritique()) > 0
|
|
||||||
const maxEndGraves = Math.floor(this.system.sante.endurance.max / (2 * nbGraves));
|
|
||||||
const maxEndCritiques = nbCritiques > 0 ? 1 : this.system.sante.endurance.max;
|
|
||||||
return Math.max(0, Math.min(maxEndVie, maxEndGraves, maxEndCritiques));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async jetDeMoral(situation, messageReussi = undefined, messageManque = undefined) {
|
async jetDeMoral(situation, messageReussi = undefined, messageManque = undefined) {
|
||||||
const jetMoral = await this._jetDeMoral(situation);
|
const jetMoral = await this._jetDeMoral(situation);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Grammar } from "../grammar.js";
|
||||||
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
|
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
|
||||||
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
|
import { RdDBaseActorSheet } from "./base-actor-sheet.js";
|
||||||
|
|
||||||
@ -23,42 +24,18 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
|
|||||||
// Everything below here is only needed if the sheet is editable
|
// Everything below here is only needed if the sheet is editable
|
||||||
if (!this.options.editable) return;
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
this.html.find('.encaisser-direct').click(async event => {
|
this.html.find('.encaisser-direct').click(async event => this.actor.encaisser())
|
||||||
this.actor.encaisser();
|
this.html.find('.carac-label a').click(async event => this.actor.rollCarac(Grammar.toLowerCaseNoAccent(event.currentTarget.attributes.name.value)));
|
||||||
})
|
this.html.find('a.competence-label').click(async event => this.actor.rollCompetence(RdDSheetUtility.getItemId(event)));
|
||||||
this.html.find('.remise-a-neuf').click(async event => {
|
this.html.find('.endurance-plus').click(async event => this.actor.santeIncDec("endurance", 1));
|
||||||
if (game.user.isGM) {
|
this.html.find('.endurance-moins').click(async event => this.actor.santeIncDec("endurance", -1));
|
||||||
this.actor.remiseANeuf();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.carac-label a').click(async event => {
|
if (game.user.isGM) {
|
||||||
let caracName = event.currentTarget.attributes.name.value;
|
this.html.find('.remise-a-neuf').click(async event => this.actor.remiseANeuf())
|
||||||
this.actor.rollCarac(caracName.toLowerCase());
|
this.html.find('.delete-active-effect').click(async event => this.actor.removeEffect(this.html.find(event.currentTarget).parents(".active-effect").data('effect')));
|
||||||
});
|
this.html.find('.enlever-tous-effets').click(async event => await this.actor.removeEffects());
|
||||||
|
}
|
||||||
|
|
||||||
this.html.find('a.competence-label').click(async event => {
|
|
||||||
this.actor.rollCompetence(RdDSheetUtility.getItemId(event));
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.delete-active-effect').click(async event => {
|
|
||||||
if (game.user.isGM) {
|
|
||||||
let effect = this.html.find(event.currentTarget).parents(".active-effect").data('effect');
|
|
||||||
this.actor.removeEffect(effect);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.html.find('.enlever-tous-effets').click(async event => {
|
|
||||||
if (game.user.isGM) {
|
|
||||||
await this.actor.removeEffects();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.html.find('.endurance-plus').click(async event => {
|
|
||||||
this.actor.santeIncDec("endurance", 1);
|
|
||||||
});
|
|
||||||
this.html.find('.endurance-moins').click(async event => {
|
|
||||||
this.actor.santeIncDec("endurance", -1);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
41
module/actor/base-actor-sang-sheet.js
Normal file
41
module/actor/base-actor-sang-sheet.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import { ChatUtility } from "../chat-utility.js";
|
||||||
|
import { RdDItemBlessure } from "../item/blessure.js";
|
||||||
|
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
/**
|
||||||
|
* Extend the basic ActorSheet with some very simple modifications
|
||||||
|
* @extends {ActorSheet}
|
||||||
|
*/
|
||||||
|
export class RdDBaseActorSangSheet extends RdDBaseActorReveSheet {
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
/** @override */
|
||||||
|
activateListeners(html) {
|
||||||
|
super.activateListeners(html);
|
||||||
|
|
||||||
|
// Everything below here is only needed if the sheet is editable
|
||||||
|
if (!this.options.editable) return;
|
||||||
|
|
||||||
|
this.html.find('.creer-blessure-legere').click(async event => RdDItemBlessure.createBlessure(this.actor, 2));
|
||||||
|
this.html.find('.creer-blessure-grave').click(async event => RdDItemBlessure.createBlessure(this.actor, 4));
|
||||||
|
this.html.find('.creer-blessure-critique').click(async event => RdDItemBlessure.createBlessure(this.actor, 6));
|
||||||
|
|
||||||
|
this.html.find('.jet-vie').click(async event => this.actor.jetDeVie())
|
||||||
|
this.html.find('.jet-endurance').click(async event => await this.jetEndurance())
|
||||||
|
|
||||||
|
this.html.find('.vie-plus').click(async event => this.actor.santeIncDec("vie", 1))
|
||||||
|
this.html.find('.vie-moins').click(async event => this.actor.santeIncDec("vie", -1))
|
||||||
|
}
|
||||||
|
|
||||||
|
async jetEndurance() {
|
||||||
|
const endurance = this.actor.getEnduranceActuelle()
|
||||||
|
const result = await this.actor.jetEndurance(endurance);
|
||||||
|
ChatMessage.create({
|
||||||
|
content: `Jet d'Endurance : ${result.jetEndurance} / ${endurance}
|
||||||
|
<br>${this.actor.name} a ${result.sonne ? 'échoué' : 'réussi'} son Jet d'Endurance ${result.sonne ? 'et devient Sonné' : ''}`,
|
||||||
|
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.actor.name)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -20,25 +20,17 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
getProtectionNaturelle() { return Number(this.system.attributs?.protection?.value ?? 0) }
|
getProtectionNaturelle() { return Number(this.system.attributs?.protection?.value ?? 0) }
|
||||||
getSConst() { return 0 }
|
getSConst() { return 0 }
|
||||||
|
|
||||||
getEnduranceMax() {
|
getEnduranceMax() { return Math.max(1, Math.min(this.system.sante.endurance.max, MAX_ENDURANCE_FATIGUE)) }
|
||||||
return Math.max(1, Math.min(this.system.sante.endurance.max, MAX_ENDURANCE_FATIGUE));
|
|
||||||
}
|
|
||||||
|
|
||||||
getFatigueActuelle() {
|
getFatigueActuelle() {
|
||||||
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
||||||
return Math.max(0, Math.min(this.getFatigueMax(), this.system.sante.fatigue?.value));
|
return Math.max(0, Math.min(this.getFatigueMax(), this.system.sante.fatigue?.value ?? 0));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getFatigueRestante() {
|
getFatigueRestante() { return this.getFatigueMax() - this.getFatigueActuelle() }
|
||||||
return this.getFatigueMax() - this.getFatigueActuelle();
|
getFatigueMin() { return this.system.sante.endurance.max - this.system.sante.endurance.value }
|
||||||
}
|
|
||||||
|
|
||||||
getFatigueMin() {
|
|
||||||
return this.system.sante.endurance.max - this.system.sante.endurance.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
getFatigueMax() { return this.getEnduranceMax() * 2 }
|
getFatigueMax() { return this.getEnduranceMax() * 2 }
|
||||||
|
|
||||||
malusFatigue() {
|
malusFatigue() {
|
||||||
@ -56,19 +48,11 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
return Math.min(0, Math.floor(this.getEncombrementMax() - this.encTotal));
|
return Math.min(0, Math.floor(this.getEncombrementMax() - this.encTotal));
|
||||||
}
|
}
|
||||||
|
|
||||||
isDead() {
|
isDead() { return this.system.sante.vie.value < -this.getSConst() }
|
||||||
return this.system.sante.vie.value < -this.getSConst()
|
|
||||||
}
|
|
||||||
|
|
||||||
nbBlessuresLegeres() {
|
nbBlessuresLegeres() { return this.itemTypes[TYPES.blessure].filter(it => it.isLegere()).length }
|
||||||
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 }
|
||||||
nbBlessuresGraves() {
|
|
||||||
return this.itemTypes[TYPES.blessure].filter(it => it.isGrave()).length;
|
|
||||||
}
|
|
||||||
nbBlessuresCritiques() {
|
|
||||||
return this.itemTypes[TYPES.blessure].filter(it => it.isCritique()).length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
computeResumeBlessure() {
|
computeResumeBlessure() {
|
||||||
@ -97,7 +81,6 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
}
|
}
|
||||||
|
|
||||||
blessuresASoigner() { return [] }
|
blessuresASoigner() { return [] }
|
||||||
getEtatGeneral(options = { ethylisme: false }) { return 0 }
|
|
||||||
|
|
||||||
async computeArmure(attackerRoll) { return this.getProtectionNaturelle() }
|
async computeArmure(attackerRoll) { return this.getProtectionNaturelle() }
|
||||||
async remiseANeuf() { }
|
async remiseANeuf() { }
|
||||||
@ -173,6 +156,16 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
_computeEnduranceMax() {
|
||||||
|
const diffVie = this.system.sante.vie.max - this.system.sante.vie.value;
|
||||||
|
const maxEndVie = this.system.sante.endurance.max - (diffVie * 2);
|
||||||
|
const nbGraves = this.countBlessures(it => it.isGrave()) > 0
|
||||||
|
const nbCritiques = this.countBlessures(it => it.isCritique()) > 0
|
||||||
|
const maxEndGraves = Math.floor(this.system.sante.endurance.max / (2 * nbGraves));
|
||||||
|
const maxEndCritiques = nbCritiques > 0 ? 1 : this.system.sante.endurance.max;
|
||||||
|
return Math.max(0, Math.min(maxEndVie, maxEndGraves, maxEndCritiques));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async ajouterBlessure(encaissement, attacker = undefined) {
|
async ajouterBlessure(encaissement, attacker = undefined) {
|
||||||
@ -277,14 +270,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async computeEtatGeneral() {
|
async computeEtatGeneral() { this.system.compteurs.etat.value = this.malusVie() + this.malusFatigue() + this.malusEthylisme() }
|
||||||
this.system.compteurs.etat.value = this.malusVie() + this.malusFatigue() + this.malusEthylisme();
|
getEtatGeneral(options = { ethylisme: false }) { return this.system.compteurs.etat.value }
|
||||||
}
|
|
||||||
|
|
||||||
malusVie() {
|
|
||||||
return Math.min(this.system.sante.vie.value - this.system.sante.vie.max, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
malusVie() { return Math.min(this.system.sante.vie.value - this.system.sante.vie.max, 0) }
|
||||||
malusEthylisme() { return 0 }
|
malusEthylisme() { return 0 }
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
|
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
|
||||||
|
import { RdDBaseActorSangSheet } from "./base-actor-sang-sheet.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend the basic ActorSheet with some very simple modifications
|
* Extend the basic ActorSheet with some very simple modifications
|
||||||
* @extends {ActorSheet}
|
* @extends {ActorSheet}
|
||||||
*/
|
*/
|
||||||
export class RdDCreatureSheet extends RdDBaseActorReveSheet {
|
export class RdDCreatureSheet extends RdDBaseActorSangSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
return mergeObject(RdDBaseActorReveSheet.defaultOptions, {
|
return mergeObject(RdDBaseActorSangSheet.defaultOptions, {
|
||||||
template: "systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html",
|
template: "systems/foundryvtt-reve-de-dragon/templates/actor-creature-sheet.html",
|
||||||
width: 640, height: 720
|
width: 640, height: 720
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user