Preliminary verssion for fight

This commit is contained in:
2020-06-07 23:16:29 +02:00
parent 1f875bafc5
commit 9d2c0da852
12 changed files with 295 additions and 141 deletions

View File

@ -74,9 +74,11 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet.html',
//Items
'systems/foundryvtt-reve-de-dragon/templates/item-competence-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/item-arme-sheet.html',
'systems/foundryvtt-reve-de-dragon/templates/competence-categorie.html',
'systems/foundryvtt-reve-de-dragon/templates/competence-carac-defaut.html',
'systems/foundryvtt-reve-de-dragon/templates/competence-base.html',
'systems/foundryvtt-reve-de-dragon/templates/arme-competence.html',
// Dialogs
'systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html'
];
@ -214,12 +216,15 @@ export class RdDUtility {
data.carac.lancer.value = Math.floor( (parseInt(data.carac.tir.value) + parseInt(data.carac.force.value)) / 2);
data.sante.vie.max = Math.ceil( parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value) /2 );
data.sante.vie.value = data.sante.vie.max;
if ( data.sante.vie.value > data.sante.vie.max)
data.sante.vie.value = data.sante.vie.max;
let endurance = Math.max( parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value), parseInt(data.sante.vie.max) + parseInt(data.carac.volonte.value) );
data.sante.endurance.max = endurance;
data.sante.endurance.value = endurance;
if ( data.sante.endurance.value > endurance)
data.sante.endurance.value = endurance;
data.sante.fatigue.max = endurance*2;
data.sante.fatigue.value = 0;
if ( data.sante.fatigue.value > data.sante.fatigue.max )
data.sante.fatigue.value = data.sante.fatigue.max;
data.attributs.sconst.value = 5; // Max !
if ( data.carac.constitution.value < 9 )
@ -236,9 +241,9 @@ export class RdDUtility {
data.attributs.sust.value = 3;
//Compteurs
data.compteurs.reve.value = data.carac.reve.value;
//data.compteurs.reve.value = data.carac.reve.value;
data.compteurs.reve.max = data.carac.reve.value;
data.compteurs.chance.value = data.carac.chance.value;
//data.compteurs.chance.value = data.carac.chance.value;
data.compteurs.chance.max = data.carac.chance.value;
}
@ -289,16 +294,57 @@ export class RdDUtility {
let myroll = new Roll("d20");
myroll.roll();
let result = myroll.total;
if ( result <= 3 ) return "Jambe, genou, pied, jarret";
if ( result <= 7 ) return "Hanche, cuisse, fesse";
if ( result <= 9 ) return "Ventre, reins";
if ( result <= 12 ) return "Poitrine, dos";
if ( result <= 14 ) return "Avant-bras, main, coude";
if ( result <= 18 ) return "Epaule, bras, omoplate";
if ( result == 19) return "Tête autre";
if ( result == 20) return "Tête visage";
let txt = ""
if ( result <= 3 ) txt = "Jambe, genou, pied, jarret";
else if ( result <= 7 ) txt = "Hanche, cuisse, fesse";
else if ( result <= 9 ) txt = "Ventre, reins";
else if ( result <= 12 ) txt = "Poitrine, dos";
else if ( result <= 14 ) txt = "Avant-bras, main, coude";
else if ( result <= 18 ) txt = "Epaule, bras, omoplate";
else if ( result == 19) txt = "Tête autre";
else if ( result == 20) txt = "Tête visage";
return { result: result, label: txt };
}
/* -------------------------------------------- */
static computeBlessuresSante( degats )
{
console.log("Degats !!", degats);
let result = { "vie": 0,
"endurance": 0,
"legeres": 0,
"graves": 0,
"critiques": 0
};
if ( degats < 11 ) {
result.type = "contusion";
let myroll = new Roll("1d4");
myroll.roll();
result.endurance = - myroll.result;
} else if ( degats < 16 ) {
result.type = "blessure légère";
let myroll = new Roll("1d6");
myroll.roll();
result.endurance = - myroll.result;
result.legeres = 1
} else if (degats < 20 ) {
result.type = "blessure grave";
let myroll = new Roll("2d6");
myroll.roll();
result.endurance = - myroll.result;
result.vie = -2;
result.graves = 1;
} else {
result.type = "critique";
result.endurance = -100; // Force endurance to 0
result.vie = -4 - (degats - 20);
result.critiques = 1;
}
return result;
}
/* -------------------------------------------- */
static currentFatigueMalus( value, max)
{
@ -330,4 +376,16 @@ export class RdDUtility {
}
}
/* -------------------------------------------- */
static async chatListeners( html )
{
html.on("click", '#encaisser-button', event => {
event.preventDefault();
console.log("Encaisser button", event);
let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
defenderActor.encaisserDommages( attackerActor);
});
}
}