Remise a neuf de personnage

class="gm-only" pour tout champ de la feuille de personnage
qui est réservée au GM (idée: notes du GM...)
This commit is contained in:
Vincent Vandemeulebrouck 2020-12-01 01:17:18 +01:00
parent dc36ff1acd
commit d06076c8f1
3 changed files with 54 additions and 16 deletions

View File

@ -100,7 +100,7 @@ export class RdDActorSheet extends ActorSheet {
// Gestion du lock/unlock des zones éditables (carac+compétences) // Gestion du lock/unlock des zones éditables (carac+compétences)
data.data.editCaracComp = this.options.editCaracComp; data.data.editCaracComp = this.options.editCaracComp;
data.data.lockUnlockText = (this.options.editCaracComp) ? "Bloquer" : "Debloquer"; data.data.lockUnlockText = (this.options.editCaracComp) ? "Bloquer" : "Débloquer";
// low is normal, this the base used to compute the grid. // low is normal, this the base used to compute the grid.
data.data.fatigue = { data.data.fatigue = {
@ -160,6 +160,12 @@ export class RdDActorSheet extends ActorSheet {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
if (game.user.isGM) {
$(".gm-only").show();
} else {
$(".gm-only").hide();
}
// 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;
@ -176,11 +182,16 @@ export class RdDActorSheet extends ActorSheet {
this.confirmerSuppression( li ); this.confirmerSuppression( li );
}); });
// Update Inventory Item html.find('#encaisser-direct').click(ev => {
html.find('.encaisser-direct').click(ev => {
this.displayDialogEncaisser() this.displayDialogEncaisser()
}); });
html.find('#remise-a-neuf').click(ev => {
if (game.user.isGM) {
this.actor.remiseANeuf();
}
});
// Blessure control // Blessure control
html.find('.blessure-control').click(ev => { html.find('.blessure-control').click(ev => {
const li = $(ev.currentTarget).parents(".item"); const li = $(ev.currentTarget).parents(".item");
@ -234,24 +245,24 @@ export class RdDActorSheet extends ActorSheet {
this.actor.rollArme( armeName, competenceName); this.actor.rollArme( armeName, competenceName);
}); });
// Display TMR, normal // Display TMR, normal
html.find('.visu-tmr a').click((event) => { html.find('#visu-tmr').click((event) => {
this.actor.displayTMR( "visu"); this.actor.displayTMR( "visu");
}); });
// Display TMR, normal // Display TMR, normal
html.find('.monte-tmr a').click((event) => { html.find('#monte-tmr').click((event) => {
this.actor.displayTMR( "normal" ); this.actor.displayTMR( "normal" );
}); });
// Display TMR, fast // Display TMR, fast
html.find('.monte-tmr-rapide a').click((event) => { html.find('#monte-tmr-rapide').click((event) => {
this.actor.displayTMR( "rapide" ); this.actor.displayTMR( "rapide" );
}); });
html.find('.dormir-une-heure').click((event) => { html.find('#dormir-une-heure').click((event) => {
this.actor.dormir(1); this.actor.dormir(1);
}); });
html.find('.dormir-chateau-dormant').click((event) => { html.find('#dormir-chateau-dormant').click((event) => {
this.actor.dormirChateauDormant(); this.actor.dormirChateauDormant();
}); });

View File

@ -391,10 +391,14 @@ export class RdDActor extends Actor {
} }
mergeObject(retrograde, { "active": true, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": blessure.localisation }); mergeObject(retrograde, { "active": true, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": blessure.localisation });
} }
mergeObject(blessure, { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" }); this._supprimerBlessure(blessure);
return true; return true;
} }
_supprimerBlessure(blessure) {
mergeObject(blessure, { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" });
}
async _recupererVie(message) { async _recupererVie(message) {
let blessures = [].concat(this.data.data.blessures.legeres.liste).concat(this.data.data.blessures.graves.liste).concat(this.data.data.blessures.critiques.liste); let blessures = [].concat(this.data.data.blessures.legeres.liste).concat(this.data.data.blessures.graves.liste).concat(this.data.data.blessures.critiques.liste);
let nbBlessures = blessures.filter(b => b.active); let nbBlessures = blessures.filter(b => b.active);
@ -430,6 +434,28 @@ export class RdDActor extends Actor {
return rolled; return rolled;
} }
async remiseANeuf() {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
content : "Remise à neuf de " + this.name
};
const blessures = duplicate(this.data.data.blessures);
for (let listeBlessures of [blessures.legeres.liste, blessures.graves.liste, blessures.critiques.liste]) {
for (let blessure of listeBlessures) {
this._supprimerBlessure(blessure);
}
}
await this.update( {"data.blessures": blessures } );
await this.santeIncDec("vie", this.data.data.sante.vie.max - this.data.data.sante.vie.value);
await this.santeIncDec("endurance", this.data.data.sante.endurance.max - this.data.data.sante.endurance.value);
let fatigue = duplicate(this.data.data.sante.fatigue)
fatigue.value = 0;
await this.update( {"data.sante.fatigue": fatigue } );
ChatMessage.create( message );
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async dormir(heures=1) { async dormir(heures=1) {
let message = { let message = {

View File

@ -58,12 +58,13 @@
</ul> </ul>
<div class="flex-group-center flex-actions-bar"> <div class="flex-group-center flex-actions-bar">
<div> <div>
<span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span> <span id="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="dormir-une-heure"><a title="Dormir une heure"><img class="button-img" src="icons/svg/sleep.svg" alt="Dormir une heure"/></a></span> <span id="remise-a-neuf" class="gm-only"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
<span class="dormir-chateau-dormant"><a title="Chateau Dormant"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg" alt="Chateau Dormant"/></a></span> <span id="dormir-une-heure"><a title="Dormir une heure"><img class="button-img" src="icons/svg/sleep.svg" alt="Dormir une heure"/></a></span>
<span class="monte-tmr"><a title="Montée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres M&eacute;dianes !"/></a></span> <span id="dormir-chateau-dormant"><a title="Chateau Dormant"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg" alt="Chateau Dormant"/></a></span>
<span class="monte-tmr-rapide"><a title="Montée accélérée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres M&eacute;dianes !"/></a></span> <span id="monte-tmr"><a title="Montée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres M&eacute;dianes !"/></a></span>
<span class="visu-tmr"><a title="Regarder les Terres M&eacute;dianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres M&eacute;dianes"/></a></span> <span id="monte-tmr-rapide"><a title="Montée accélérée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres M&eacute;dianes !"/></a></span>
<span id="visu-tmr"><a title="Regarder les Terres M&eacute;dianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres M&eacute;dianes"/></a></span>
</div> </div>
<div class="flexrow"> <div class="flexrow">
<span class="tooltip">Malus de fatigue : {{data.fatigue.malus}} <span class="tooltip">Malus de fatigue : {{data.fatigue.malus}}