Update rules

This commit is contained in:
2020-05-31 23:06:25 +02:00
parent 4b465920f0
commit 91c0a6c7a3
5 changed files with 84 additions and 27 deletions

View File

@ -102,12 +102,54 @@ export class RdDActor extends Actor {
data.compteurs.etat.value = state;
}
/* -------------------------------------------- */
testSiSonne( endurance )
{
let myroll = new Roll("d20");
myroll.roll();
let result = myroll.total;
if ( result <= endurance.value)
this.data.data.sante.sonne.value = false;
if ( result > endurance.value || result == 20) // 20 is always a failure
this.data.data.sante.sonne.value = true;
if (result == 1) {
this.data.data.sante.sonne.value = false;
this.data.data.carac.constitution.xp++; // 1 XP on 1 !
}
}
/* -------------------------------------------- */
santeIncDec(name, inc ) {
let data = this.data.data.sante[name];
let lastValue = data.value; // Useful for Endurance and Sonné
data.value = data.value + inc;
if ( data.value > data.max ) data.value = data.max;
if ( data.value < 0 ) data.value = 0;
if (name == "endurance") {
if ( inc < 0 ) // Each endurance lost -> fatigue lost
this.data.data.sante.fatigue = this.data.data.sante.fatigue + inc
let diffEndurance = data.max - data.value;
if ( this.data.data.sante.fatigue < diffEndurance) // If endurance lost, then the same amount of fatigue cannot be recovered
this.data.data.sante.fatigue = diffEndurance;
// If endurance is 0 -> -1 vie
if ( data.value == 0 ) {
this.data.data.sante.vie.value = this.data.data.sante.vie.value - 1;
}
let diffVie = this.data.data.sante.vie.max - this.data.data.sante.vie.value;
if ( data.value > data.max - (diffvie*2) ) {
data.value = data.max - (diffvie*2);
}
let blessures = this.data.data.blessures;
let maxEnd = Math.floor( data.max / blessures.graves.nombre);
if (data.value > maxEnd ) data.value = maxEnd;
if ( blessures.critiques.nombre > 0 && data.value > 1) data.value = 1;
if (lastValue - data.value > 1) this.testSiSonne(data); // Peut-être sonné si 2 points d'endurance perdus d'un coup
}
console.log(">>>> NEW VI", name, data.value);
this.computeEtatGeneral();
}

View File

@ -60,17 +60,11 @@ const fatigueMatrix = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, //
const fatigueMalus = [ 0, 0, 0, -1, -1, -1, -2, -3, -4, -5, -6, -7 ]; // Provides the malus for each segment of fatigue
const fatigueLineSize = [ 3, 6, 7, 8, 9, 10, 11, 12];
const fatigueLineMalus = [ 0, -1, -2, -3, -4, -5, -6, -7 ];
const fatigueTemplate = "<table>\
<th><tdid=1><td/><td/><td/><td/> <td/> <td/><td/><td/><td/><td/> <td/> <td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/> <td/> <td/><td/><td/><td/><td/> <td/> <td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
<th><td/><td/><td/><td/><td/></tr>\
</table>"
const fatigueMarche = { "aise": { "4":1, "6":2, "8":3, "10":4, "12":6 },
"malaise": { "4":2, "6":3, "8":4, "10":6 },
"difficile": { "4":3, "6":4, "8":6 },
"tresdifficile": { "4":4, "6":6 } }
export class RdDUtility {
/* -------------------------------------------- */
@ -289,6 +283,22 @@ export class RdDUtility {
return table;
}
/* -------------------------------------------- */
static getLocalisation( )
{
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";
}
/* -------------------------------------------- */
static currentFatigueMalus( value, max)
{