Utilisation nullish / chaining
Simplifie certaines expressions complexes avec operateur ternaire - Nullish coalescing operator (??) - Relationship with the optional chaining operator (?.) - Math.min / Math.max / Math.ceil
This commit is contained in:
parent
0ef119f59c
commit
e3439953f9
@ -700,13 +700,7 @@ export class RdDActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
detectSurEncombrement( ) {
|
detectSurEncombrement( ) {
|
||||||
let diffEnc = Number(this.encTotal) - Number(this.data.data.attributs.encombrement.value);
|
let diffEnc = Number(this.encTotal) - Number(this.data.data.attributs.encombrement.value);
|
||||||
if ( diffEnc > 0 ) { // Sur-encombrement
|
return Math.min(0, Math.ceil(diffEnc));
|
||||||
let malus = Math.round( diffEnc);
|
|
||||||
malus = (malus == 0) ? 1 : malus; // Always 1 at least
|
|
||||||
//console.log("Sur enc malus", malus);
|
|
||||||
return malus;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -770,7 +764,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getEtatGeneral() {
|
getEtatGeneral() {
|
||||||
return (this.data.data.compteurs && this.data.data.compteurs.etat) ? this.data.data.compteurs.etat.value : 0;
|
return this.data.data.compteurs?.etat?.value ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -784,11 +778,13 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
// Pour les autres
|
// Pour les autres
|
||||||
let state = - (data.sante.vie.max - data.sante.vie.value);
|
let state = - (data.sante.vie.max - data.sante.vie.value);
|
||||||
if (data.sante.fatigue) // Creatures n'ont pas de fatigue
|
if (data.sante.fatigue){
|
||||||
|
// Creatures n'ont pas de fatigue
|
||||||
state += RdDUtility.currentFatigueMalus(data.sante.fatigue.value, data.sante.endurance.max);
|
state += RdDUtility.currentFatigueMalus(data.sante.fatigue.value, data.sante.endurance.max);
|
||||||
if (data.compteurs && data.compteurs.ethylisme && data.compteurs.ethylisme.value < 0 ) { // Ajout de l'éthylisme
|
|
||||||
state += data.compteurs.ethylisme.value;
|
|
||||||
}
|
}
|
||||||
|
// Ajout de l'éthylisme
|
||||||
|
state += Math.min(0, (data.compteurs?.ethylisme?.value ??0));
|
||||||
|
|
||||||
data.compteurs.etat.value = state;
|
data.compteurs.etat.value = state;
|
||||||
if ( data.compteurs && data.compteurs.surenc) {
|
if ( data.compteurs && data.compteurs.surenc) {
|
||||||
data.compteurs.surenc.value = - this.detectSurEncombrement();
|
data.compteurs.surenc.value = - this.detectSurEncombrement();
|
||||||
|
@ -66,11 +66,11 @@ export class RdDBonus {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _dmgArme(rollData) {
|
static _dmgArme(rollData) {
|
||||||
return rollData.arme ? parseInt(rollData.arme.data.dommages) : 0;
|
return parseInt(rollData.arme?.data.dommages ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _peneration(rollData) {
|
static _peneration(rollData) {
|
||||||
return rollData.arme ? parseInt(rollData.arme.data.penetration) : 0;
|
return parseInt(rollData.arme?.data.penetration ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -18,12 +18,12 @@ export class RdDCombat {
|
|||||||
static createUsingTarget(attacker) {
|
static createUsingTarget(attacker) {
|
||||||
const target = RdDCombat.getTarget();
|
const target = RdDCombat.getTarget();
|
||||||
if (target == undefined) {
|
if (target == undefined) {
|
||||||
ui.notifications.warn((game.user.targets && game.user.targets.size > 1)
|
ui.notifications.warn( (game.user.targets?.size ??0) > 1
|
||||||
? "Vous devez choisir <strong>une seule</strong> cible à attaquer!"
|
? "Vous devez choisir <strong>une seule</strong> cible à attaquer!"
|
||||||
: "Vous devez choisir une cible à attaquer!");
|
: "Vous devez choisir une cible à attaquer!");
|
||||||
}
|
}
|
||||||
const defender = target ? target.actor : undefined;
|
const defender = target?.actor;
|
||||||
const defenderTokenId = target ? target.data._id : undefined;
|
const defenderTokenId = target?.data._id;
|
||||||
return this.create(attacker, defender, defenderTokenId, target)
|
return this.create(attacker, defender, defenderTokenId, target)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,8 +68,8 @@ export class RdDCombat {
|
|||||||
// envoyer le message au destinataire
|
// envoyer le message au destinataire
|
||||||
if (!game.user.isGM || recipient.hasPlayerOwner) {
|
if (!game.user.isGM || recipient.hasPlayerOwner) {
|
||||||
let data = {
|
let data = {
|
||||||
attackerId: sender ? sender.data._id : undefined,
|
attackerId: sender?.data._id,
|
||||||
defenderId: recipient ? recipient.data._id : undefined,
|
defenderId: recipient?.data._id,
|
||||||
defenderTokenId: defenderTokenId,
|
defenderTokenId: defenderTokenId,
|
||||||
rollData: duplicate(rollData),
|
rollData: duplicate(rollData),
|
||||||
rollMode: true
|
rollMode: true
|
||||||
@ -128,7 +128,7 @@ export class RdDCombat {
|
|||||||
case '#particuliere-attaque': return await this.choixParticuliere(rollData, event.currentTarget.attributes['data-mode'].value);
|
case '#particuliere-attaque': return await this.choixParticuliere(rollData, event.currentTarget.attributes['data-mode'].value);
|
||||||
case '#parer-button': {
|
case '#parer-button': {
|
||||||
const armeId = event.currentTarget.attributes['data-armeid'];
|
const armeId = event.currentTarget.attributes['data-armeid'];
|
||||||
return this.parade(rollData, armeId ? armeId.value : undefined);
|
return this.parade(rollData, armeId?.value);
|
||||||
}
|
}
|
||||||
case '#esquiver-button': return this.esquive(rollData);
|
case '#esquiver-button': return this.esquive(rollData);
|
||||||
case '#encaisser-button': return this.encaisser(rollData, event.currentTarget.attributes['data-defenderTokenId'].value);
|
case '#encaisser-button': return this.encaisser(rollData, event.currentTarget.attributes['data-defenderTokenId'].value);
|
||||||
@ -182,7 +182,7 @@ export class RdDCombat {
|
|||||||
options: { height: 540 }
|
options: { height: 540 }
|
||||||
}, {
|
}, {
|
||||||
name: 'jet-attaque',
|
name: 'jet-attaque',
|
||||||
label: 'Attaque: ' + (arme ? arme.name : competence.name),
|
label: 'Attaque: ' + (arme?.name ?? competence.name),
|
||||||
callbacks: [
|
callbacks: [
|
||||||
this.attacker.createCallbackExperience(),
|
this.attacker.createCallbackExperience(),
|
||||||
{ condition: r => (RdDCombat.isReussite(r) && !RdDCombat.isParticuliere(r)), action: r => this._onAttaqueNormale(r) },
|
{ condition: r => (RdDCombat.isReussite(r) && !RdDCombat.isParticuliere(r)), action: r => this._onAttaqueNormale(r) },
|
||||||
|
@ -122,7 +122,7 @@ export class RdDResolutionTable {
|
|||||||
list.push({ label: surprise.descr, value: surprise.attaque });
|
list.push({ label: surprise.descr, value: surprise.attaque });
|
||||||
}
|
}
|
||||||
if (rollData.diffLibre != undefined) {
|
if (rollData.diffLibre != undefined) {
|
||||||
const label = rollData.selectedSort ? rollData.selectedSort.name : 'Libre';
|
const label = rollData.selectedSort?.name ?? 'Libre';
|
||||||
list.push({ label: label, value: rollData.diffLibre });
|
list.push({ label: label, value: rollData.diffLibre });
|
||||||
}
|
}
|
||||||
if (rollData.diffConditions != undefined) {
|
if (rollData.diffConditions != undefined) {
|
||||||
@ -131,11 +131,11 @@ export class RdDResolutionTable {
|
|||||||
if (rollData.etat != undefined) {
|
if (rollData.etat != undefined) {
|
||||||
list.push({ label: 'Etat', value: rollData.etat });
|
list.push({ label: 'Etat', value: rollData.etat });
|
||||||
}
|
}
|
||||||
if (rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté') {
|
if (rollData.selectedCarac?.label == 'Volonté' && rollData.moral != undefined) {
|
||||||
list.push({ label: 'Moral', value: rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté' ? rollData.moral : undefined });
|
list.push({ label: 'Moral', value: rollData.moral });
|
||||||
}
|
}
|
||||||
if (RdDResolutionTable.isAjustementAstrologique(rollData)) {
|
if (RdDResolutionTable.isAjustementAstrologique(rollData)) {
|
||||||
list.push({ label: 'Astrologique', value: rollData.ajustementAstrologique || 0 });
|
list.push({ label: 'Astrologique', value: rollData.ajustementAstrologique ?? 0 });
|
||||||
}
|
}
|
||||||
if (rollData.rolled.bonus && rollData.selectedSort) {
|
if (rollData.rolled.bonus && rollData.selectedSort) {
|
||||||
list.push({ descr: `Bonus de case: ${rollData.rolled.bonus}%` });
|
list.push({ descr: `Bonus de case: ${rollData.rolled.bonus}%` });
|
||||||
|
@ -38,12 +38,12 @@ export class RdDRoll extends Dialog {
|
|||||||
moral: actor.isPersonnage() ? actor.data.data.compteurs.moral.value : 0,
|
moral: actor.isPersonnage() ? actor.data.data.compteurs.moral.value : 0,
|
||||||
carac: actor.data.data.carac,
|
carac: actor.data.data.carac,
|
||||||
finalLevel: 0,
|
finalLevel: 0,
|
||||||
diffConditions: rollData.arme ? RdDBonus.bonusAttaque(rollData.surpriseDefenseur) :0,
|
diffConditions: rollData.arme ? RdDBonus.bonusAttaque(rollData.surpriseDefenseur) : 0,
|
||||||
diffLibre: rollData.competence?.data.default_diffLibre ?? 0,
|
diffLibre: rollData.competence?.data.default_diffLibre ?? 0,
|
||||||
editLibre: true,
|
editLibre: true,
|
||||||
editConditions: true,
|
editConditions: true,
|
||||||
forceValue: actor.getForceValue(),
|
forceValue: actor.getForceValue(),
|
||||||
malusArmureValue: (actor.isPersonnage() && actor.data.data.attributs && actor.data.data.attributs.malusarmure) ? actor.data.data.attributs.malusarmure.value : 0,
|
malusArmureValue: actor.isPersonnage() ? actor.data.data.attributs?.malusarmure?.value ?? 0 : 0,
|
||||||
surencMalusFlag: actor.isPersonnage() ? (actor.data.data.compteurs.surenc.value < 0) : false,
|
surencMalusFlag: actor.isPersonnage() ? (actor.data.data.compteurs.surenc.value < 0) : false,
|
||||||
surencMalusValue: actor.isPersonnage() ? actor.data.data.compteurs.surenc.value : 0,
|
surencMalusValue: actor.isPersonnage() ? actor.data.data.compteurs.surenc.value : 0,
|
||||||
surencMalusApply: false,
|
surencMalusApply: false,
|
||||||
@ -111,10 +111,10 @@ export class RdDRoll extends Dialog {
|
|||||||
var dialog = this;
|
var dialog = this;
|
||||||
|
|
||||||
function updateRollResult(rollData) {
|
function updateRollResult(rollData) {
|
||||||
rollData.dmg = rollData.attackerRoll ? rollData.attackerRoll.dmg : RdDBonus.dmg(rollData, actor.getBonusDegat());
|
rollData.dmg = rollData.attackerRoll?.dmg ?? RdDBonus.dmg(rollData, actor.getBonusDegat());
|
||||||
rollData.finalLevel = dialog._computeFinalLevel(rollData);
|
rollData.finalLevel = dialog._computeFinalLevel(rollData);
|
||||||
rollData.caracValue = parseInt(rollData.selectedCarac.value);
|
rollData.caracValue = parseInt(rollData.selectedCarac.value);
|
||||||
rollData.coupsNonMortels = (rollData.attackerRoll ? rollData.attackerRoll.dmg.mortalite : rollData.dmg.mortalite) == 'non-mortel';
|
rollData.coupsNonMortels = (rollData.attackerRoll?.dmg.mortalite ?? rollData.dmg.mortalite) == 'non-mortel';
|
||||||
let dmgText = Misc.toSignedString(rollData.dmg.total);
|
let dmgText = Misc.toSignedString(rollData.dmg.total);
|
||||||
if (rollData.coupsNonMortels) {
|
if (rollData.coupsNonMortels) {
|
||||||
dmgText = '(' + dmgText + ')';
|
dmgText = '(' + dmgText + ')';
|
||||||
|
@ -673,10 +673,8 @@ export class RdDUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static currentFatigueMalus( value, max)
|
static currentFatigueMalus( value, max)
|
||||||
{
|
{
|
||||||
max = (max < 16) ? 16 : max;
|
max = Math.min(1, Math.max(max, 60));
|
||||||
max = (max > 30) ? 30 : max;
|
value = Math.min(max*2, Math.max(0, value));
|
||||||
value = (value > max*2) ? max*2 : value;
|
|
||||||
value = (value < 0) ? 0 : value;
|
|
||||||
|
|
||||||
let fatigueTab = fatigueMatrix[max];
|
let fatigueTab = fatigueMatrix[max];
|
||||||
let fatigueRem = value;
|
let fatigueRem = value;
|
||||||
|
Loading…
Reference in New Issue
Block a user