43 Init et attaque vie HUD ou fiche de perso

This commit is contained in:
2020-12-05 21:24:31 +01:00
parent 72b3a96354
commit be73c51b97
5 changed files with 95 additions and 41 deletions

View File

@ -163,6 +163,13 @@ export class RdDActor extends Actor {
}
}
/* -------------------------------------------- */
computeDeteriorationArme( rollData ) {
if ( rollData.arme && rollData.attackerRoll) { // C'est une parade
}
}
/* -------------------------------------------- */
async continueRoll(rollData, attacker = undefined) {
let rolled = rollData.rolled;
@ -198,6 +205,7 @@ export class RdDActor extends Actor {
// In case of fight, replace the message per dommages + localization. it indicates if result is OK or not
if (rollData.attackerRoll) { // Defense case !
if (rolled.isSign || (!rollData.needSignificative && rolled.isSuccess)) {
this.computeDeteriorationArme( rollData );
explications += "<br><strong>Attaque parée/esquivée !</strong>";
} else {
explications += "<br><strong>Esquive/Parade échouée, encaissement !</strong>";
@ -277,6 +285,7 @@ export class RdDActor extends Actor {
}
}
/* -------------------------------------------- */
static _calculMortaliteEncaissement(rollData, target) {
const mortalite = target.actor.isEntiteCauchemar() ? "cauchemar" : (rollData.mortalite ? rollData.mortalite : "mortel");
console.log("Mortalité : ", mortalite, target.actor.data.type);
@ -410,6 +419,7 @@ export class RdDActor extends Actor {
}
}
/* -------------------------------------------- */
_retrograderBlessure(type, blessure, blessuresMoindres)
{
if (type != "legere") {
@ -423,10 +433,12 @@ export class RdDActor extends Actor {
return true;
}
/* -------------------------------------------- */
_supprimerBlessure(blessure) {
mergeObject(blessure, { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" });
}
/* -------------------------------------------- */
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 nbBlessures = blessures.filter(b => b.active);
@ -452,7 +464,8 @@ export class RdDActor extends Actor {
}
}
}
/* -------------------------------------------- */
async _jetRecuperationConstitution(bonusSoins, message = undefined) {
let difficulte = Misc.toInt(bonusSoins) + Math.min(0, this.data.data.sante.vie.value - this.data.data.sante.vie.max);
let rolled = await RdDResolutionTable.roll(this.data.data.carac.constitution.value, difficulte);
@ -462,7 +475,7 @@ export class RdDActor extends Actor {
return rolled;
}
/* -------------------------------------------- */
async remiseANeuf() {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
@ -568,6 +581,8 @@ export class RdDActor extends Actor {
}
}
}
/* -------------------------------------------- */
async retourSeuilDeReve(message) {
const seuil = this.data.data.reve.seuil.value;
const reveActuel = this.getReveActuel();
@ -733,10 +748,6 @@ export class RdDActor extends Actor {
contenu.splice(index, 1);
index = contenu.indexOf(itemId);
}
//console.log("REMOVED: ", itemId, contenu );
//let newContenu = conteneur.data.data.contenu.filter( function(value, index, arr) { return value != itemId } );
//console.log("Suppression du conteneur2", conteneurId, itemId, newContenu);
//let update = {_id: conteneurId, "data.contenu": newContenu };
await this.updateEmbeddedEntity("OwnedItem", data2use);
}
}
@ -1330,6 +1341,7 @@ export class RdDActor extends Actor {
}
}
/* -------------------------------------------- */
getTarget() {
if (game.user.targets && game.user.targets.size == 1) {
for (let target of game.user.targets) {
@ -1363,13 +1375,13 @@ export class RdDActor extends Actor {
if ( update.data.deterioration >= 10) {
update.data.deterioration = 0;
if ( update.data.protection.toString().length == 1 )
update.data.protection = "d"+update.data.protection+"-0";
update.data.protection = "1d"+update.data.protection+"-0";
else {
let regex = /d\(d+)\-(\d+)/g;
let res = regex.exec( update.data.protection );
update.data.protection = "d"+res[1]+"-"+(parseInt(res[2])+1);
update.data.protection = "1d"+res[1]+"-"+(parseInt(res[2])+1);
}
/* TODO - POST chat message */
ChatMessage.create( {content: "Détérioration d'armure: " + update.data.protection } );
}
this.updateEmbeddedEntity("OwnedItem", update);
}
@ -1442,6 +1454,7 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
/* -- entites -- */
/* retourne true si on peut continuer, false si on ne peut pas continuer */
async targetEntiteNonAccordee(target, when='avant-encaissement')
@ -1453,6 +1466,7 @@ export class RdDActor extends Actor {
return false;
}
/* -------------------------------------------- */
async accorder(entite, when = 'avant-encaissement')
{
if (when != game.settings.get("foundryvtt-reve-de-dragon", "accorder-entite-cauchemar")
@ -1480,11 +1494,13 @@ export class RdDActor extends Actor {
return rolled.isSuccess;
}
/* -------------------------------------------- */
isEntiteCauchemar()
{
return this.data.type == 'entite';
}
/* -------------------------------------------- */
isEntiteCauchemarAccordee(attaquant)
{
if (!this.isEntiteCauchemar()) { return true; }
@ -1492,6 +1508,7 @@ export class RdDActor extends Actor {
return (resonnance.actors.find(it => it == attaquant._id));
}
/* -------------------------------------------- */
async setEntiteReveAccordee(attaquant)
{
if (!this.isEntiteCauchemar()) {