2682 lines
86 KiB
JavaScript
2682 lines
86 KiB
JavaScript
/* eslint-disable prefer-destructuring */
|
|
/* eslint-disable max-len */
|
|
/* eslint-disable camelcase */
|
|
/* eslint-disable no-undef */
|
|
// DRUID
|
|
const druidRollSimple = [
|
|
'druidLionChair', 'druidLionBete', 'druidLionMachine', 'druidLionDame', 'druidLionMasque',
|
|
'druidWolfChair', 'druidWolfBete', 'druidWolfMachine', 'druidWolfDame', 'druidWolfMasque',
|
|
'druidCrowChair', 'druidCrowBete', 'druidCrowMachine', 'druidCrowDame', 'druidCrowMasque',
|
|
];
|
|
|
|
druidRollSimple.forEach((button) => {
|
|
on(`clicked:${button}Roll`, async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
const attributs = [
|
|
'jetModifDesComp',
|
|
];
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
const cRoll = [];
|
|
const bonus = [];
|
|
|
|
const mod = +attrs.jetModifDesComp;
|
|
|
|
const aspect = button;
|
|
const aNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aValue = totalADruid(attrsAspects, aspect);
|
|
|
|
if (button !== 'druidCrowChair' && button !== 'druidCrowBete' && button !== 'druidCrowMachine' && button !== 'druidCrowDame' && button !== 'druidCrowMasque') {
|
|
const aAE = +attrsAspects[`${aspect}AE`];
|
|
exec.push(`{{vAE=${aAE}}}`);
|
|
bonus.push(aAE);
|
|
} else { bonus.push(0); }
|
|
|
|
cRoll.push(aValue);
|
|
cRoll.push(mod);
|
|
|
|
exec.push(roll);
|
|
exec.push(`{{cBase=${aNom}}}`);
|
|
exec.push(`{{jet=[[ {{[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0}]]}}`);
|
|
exec.push(`{{Exploit=[[${cRoll.join('+')}]]}}`);
|
|
exec.push(`{{tBonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
startRoll(exec.join(' '), (results) => {
|
|
const tJet = results.results.jet.result;
|
|
const tBonus = results.results.tBonus.result;
|
|
const tExploit = results.results.Exploit.result;
|
|
|
|
const total = tJet + tBonus;
|
|
|
|
finishRoll(
|
|
results.rollId,
|
|
{
|
|
jet: total,
|
|
},
|
|
);
|
|
|
|
if (tJet !== 0 && tJet === tExploit) {
|
|
startRoll(`${roll}@{jetGM} &{template:simple} {{Nom=@{name}}} {{special1=${i18n_exploit}}}{{jet=[[ {[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0]]}}`, (exploit) => {
|
|
const tExploit2 = exploit.results.jet.result;
|
|
|
|
finishRoll(
|
|
exploit.rollId,
|
|
{
|
|
jet: tExploit2,
|
|
},
|
|
);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
on('clicked:druidLionArmeBase', async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
let attributs = [
|
|
'aspectDruidLionBase',
|
|
'jetModifDesComp',
|
|
'druidLionChairBase',
|
|
'druidLionChairEvol',
|
|
'druidLionBeteBase',
|
|
'druidLionBeteEvol',
|
|
'druidLionBeteAE',
|
|
];
|
|
|
|
const arme = [
|
|
'druidLionBaseNom',
|
|
'druidLionBaseDegats',
|
|
'druidLionBaseDegatsBonus',
|
|
'druidLionBaseViolence',
|
|
'druidLionBaseViolenceBonus',
|
|
'druidLionBasePortee',
|
|
];
|
|
|
|
const special = [
|
|
'coupBDDiversTotal',
|
|
'bDDiversD6',
|
|
'bDDiversFixe',
|
|
'coupBVDiversTotal',
|
|
'bVDiversD6',
|
|
'bVDiversFixe',
|
|
'devasterAnatheme',
|
|
'bourreauTenebres',
|
|
'equilibreBalance',
|
|
];
|
|
|
|
attributs = attributs.concat(arme, special);
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
const isConditionnelA = false;
|
|
const isConditionnelD = false;
|
|
const isConditionnelV = false;
|
|
|
|
let diceDegats = 0;
|
|
let degats = [];
|
|
const bonusDegats = [];
|
|
|
|
let diceViolence = 0;
|
|
let violence = [];
|
|
const bonusViolence = [];
|
|
|
|
const portee = attrs.druidLionBasePortee;
|
|
|
|
const mod = +attrs.jetModifDesComp;
|
|
|
|
const aspect = attrs.aspectDruidLionBase;
|
|
|
|
const aspectNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aspectValue = totalADruid(attrsAspects, aspect);
|
|
const AEValue = +attrsAspects[`${aspect}AE`];
|
|
|
|
const vChair = totalADruid(attrs, 'druidLionChair');
|
|
|
|
const bete = totalADruid(attrs, 'druidLionBete');
|
|
const AEBete = +attrs.druidLionBeteAE;
|
|
|
|
const devaste = +attrs.devasterAnatheme;
|
|
const bourreau = +attrs.bourreauTenebres;
|
|
const equilibre = +attrs.equilibreBalance;
|
|
|
|
const cRoll = [];
|
|
const AE = [];
|
|
let bonus = [];
|
|
|
|
AE.push(AEValue);
|
|
|
|
if (AE.length === 0) { exec.push('{{vAE=0}}'); } else { exec.push(`{{vAE=${AEValue}}}`); }
|
|
|
|
cRoll.push(aspectValue);
|
|
|
|
diceDegats = +attrs.druidLionBaseDegats;
|
|
bonusDegats.push(+attrs.druidLionBaseDegatsBonus);
|
|
|
|
diceViolence = +attrs.druidLionBaseViolence;
|
|
bonusViolence.push(+attrs.druidLionBaseViolenceBonus);
|
|
|
|
// GESTION DES BONUS DIVERS
|
|
const bChairD = Math.ceil(vChair / 2);
|
|
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vChair=${bChairD}}}`);
|
|
// FIN DE GESTION DES BONUS DIVERS
|
|
|
|
// GESTION DES ASPECTS EXCEPTIONNELS
|
|
if (AEBete > 0) {
|
|
let bonusBete = +AEBete;
|
|
|
|
if (AEBete > 5) { bonusBete += +bete; }
|
|
|
|
exec.push(`{{vBeteD=+${bonusBete}}}`);
|
|
bonusDegats.push(bonusBete);
|
|
}
|
|
// FIN DE GESTION DES ASPECTS EXCEPTIONNELS
|
|
|
|
// GESTION DES BONUS SPECIAUX
|
|
const sBonusDegats = attrs.coupBDDiversTotal;
|
|
const sBonusDegatsD6 = attrs.bDDiversD6;
|
|
const sBonusDegatsFixe = +attrs.bDDiversFixe;
|
|
|
|
const sBonusViolence = attrs.coupBVDiversTotal;
|
|
const sBonusViolenceD6 = attrs.bVDiversD6;
|
|
const sBonusViolenceFixe = +attrs.bVDiversFixe;
|
|
|
|
if (sBonusDegats !== '0') {
|
|
exec.push(`{{vMSpecialD=+${sBonusDegatsD6}D6+${sBonusDegatsFixe}}}`);
|
|
diceDegats += Number(sBonusDegatsD6);
|
|
bonusDegats.push(sBonusDegatsFixe);
|
|
}
|
|
|
|
if (sBonusViolence !== '0') {
|
|
exec.push(`{{vMSpecialV=+${sBonusViolenceD6}D6+${sBonusViolenceFixe}}}`);
|
|
diceViolence += Number(sBonusViolenceD6);
|
|
bonusViolence.push(sBonusViolenceFixe);
|
|
}
|
|
// FIN DE GESTION DES BONUS SPECIAUX
|
|
|
|
exec.push(`{{cBase=${aspectNom}}}`);
|
|
|
|
if (mod !== 0) {
|
|
cRoll.push(mod);
|
|
exec.push(`{{mod=${mod}}}`);
|
|
}
|
|
|
|
if (cRoll.length === 0) { cRoll.push(0); }
|
|
|
|
bonus = bonus.concat(AE);
|
|
|
|
const pairOrImpair = 'cs2cs4cs6cf1cf3cf5s';
|
|
|
|
const malusRoll = 0;
|
|
const total = Math.max(cRoll.reduce((accumulateur, valeurCourante) => accumulateur + valeurCourante, 0) - malusRoll, 0);
|
|
|
|
const jet = `{{jet=[[ ${total}d6${pairOrImpair}]]}}`;
|
|
const baseJet = '{{basejet=[[0]]}}';
|
|
|
|
exec.push(jet);
|
|
exec.push(baseJet);
|
|
exec.push(`{{Exploit=[[${cRoll.join('+')}]]}}`);
|
|
exec.push(`{{bonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
degats.push(`${diceDegats}D6`);
|
|
degats = degats.concat(bonusDegats);
|
|
|
|
violence.push(`${diceViolence}D6`);
|
|
violence = violence.concat(bonusViolence);
|
|
|
|
exec.push(`{{portee=${i18n_portee} ${portee}}}`);
|
|
exec.push(`{{degats=[[${degats.join('+')}]]}}`);
|
|
exec.push(`{{violence=[[${violence.join('+')}]]}}`);
|
|
|
|
if (devaste || bourreau || equilibre) {
|
|
const herauts = [];
|
|
|
|
if (devaste) { herauts.push(i18n_devasterAnatheme); }
|
|
if (bourreau) { herauts.push(i18n_bourreauTenebres); }
|
|
if (equilibre) { herauts.push(i18n_equilibrerBalance); }
|
|
|
|
exec.push(`{{herauts=${herauts.join(' / ')}}}`);
|
|
}
|
|
|
|
if (isConditionnelA === true) { exec.push('{{succesConditionnel=true}}'); }
|
|
|
|
if (isConditionnelD === true) { exec.push('{{degatsConditionnel=true}}'); }
|
|
|
|
if (isConditionnelV === true) { exec.push('{{violenceConditionnel=true}}'); }
|
|
|
|
const finalRoll = await startRoll(exec.join(' '));
|
|
|
|
const tJet = finalRoll.results.jet.result;
|
|
const rJet = finalRoll.results.jet.dice;
|
|
|
|
const tBonus = finalRoll.results.bonus.result;
|
|
const tExploit = finalRoll.results.Exploit.result;
|
|
|
|
const rDegats = finalRoll.results.degats.dice;
|
|
const rViolence = finalRoll.results.violence.dice;
|
|
|
|
const tDegats = finalRoll.results.degats.result;
|
|
const tViolence = finalRoll.results.violence.result;
|
|
|
|
const conditions = {
|
|
bourreau,
|
|
devaste,
|
|
equilibre,
|
|
};
|
|
|
|
const computed = updateRoll(finalRoll, rJet, tBonus, tDegats, rDegats, bonusDegats, tViolence, rViolence, bonusViolence, conditions);
|
|
|
|
finishRoll(finalRoll.rollId, computed);
|
|
|
|
if (tJet !== 0 && computed.basejet === tExploit) {
|
|
const exploitRoll = await startRoll(`${roll}@{jetGM} &{template:simple} {{Nom=@{name}}} {{special1=${i18n_exploit}}}{{jet=[[ {[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0]]}}`);
|
|
const rExploit = exploitRoll.results.jet.dice;
|
|
const exploitPairOrImpair = 0;
|
|
|
|
const jetExploit = rExploit.reduce((accumulateur, valeurCourante) => {
|
|
const vC = valeurCourante;
|
|
let nV = 0;
|
|
|
|
if (vC % 2 === exploitPairOrImpair) {
|
|
nV = 1;
|
|
}
|
|
|
|
return accumulateur + nV;
|
|
}, 0);
|
|
|
|
const exploitComputed = {
|
|
jet: jetExploit,
|
|
};
|
|
|
|
finishRoll(exploitRoll.rollId, exploitComputed);
|
|
}
|
|
});
|
|
|
|
on('clicked:repeating_armeDruidLion:combatdruidroll', async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
let attributs = [
|
|
'repeating_armeDruidLion_armeDruidLion',
|
|
'repeating_armeDruidLion_aspectDruidLion',
|
|
'jetModifDesComp',
|
|
'druidLionPEAct',
|
|
'druidLionChairBase',
|
|
'druidLionChairEvol',
|
|
'druidLionBeteBase',
|
|
'druidLionBeteEvol',
|
|
'druidLionBeteAE',
|
|
'druidLionMachineBase',
|
|
'druidLionMachineEvol',
|
|
'druidLionMachineAE',
|
|
'druidLionMasqueBase',
|
|
'druidLionMasqueEvol',
|
|
'druidLionMasqueAE',
|
|
];
|
|
|
|
const wpn = [
|
|
'repeating_armeDruidLion_druidLionBaseNom',
|
|
'repeating_armeDruidLion_degatDruidLion',
|
|
'repeating_armeDruidLion_degatBonusDruidLion',
|
|
'repeating_armeDruidLion_violenceDruidLion',
|
|
'repeating_armeDruidLion_violenceBonusDruidLion',
|
|
'repeating_armeDruidLion_porteeDruidLion',
|
|
];
|
|
|
|
const effets = [
|
|
'repeating_armeDruidLion_antiAnatheme',
|
|
'repeating_armeDruidLion_antiVehicule',
|
|
'repeating_armeDruidLion_artillerie',
|
|
'repeating_armeDruidLion_assassin',
|
|
'repeating_armeDruidLion_assassinValue',
|
|
'repeating_armeDruidLion_assistanceAttaque',
|
|
'repeating_armeDruidLion_barrage',
|
|
'repeating_armeDruidLion_barrageValue',
|
|
'repeating_armeDruidLion_bourreau',
|
|
'repeating_armeDruidLion_bourreauValue',
|
|
'repeating_armeDruidLion_cadence',
|
|
'repeating_armeDruidLion_cadenceValue',
|
|
'repeating_armeDruidLion_cadenceactif',
|
|
'repeating_armeDruidLion_chargeur',
|
|
'repeating_armeDruidLion_chargeurValue',
|
|
'repeating_armeDruidLion_choc',
|
|
'repeating_armeDruidLion_chocValue',
|
|
'repeating_armeDruidLion_conviction',
|
|
'repeating_armeDruidLion_defense',
|
|
'repeating_armeDruidLion_defenseValue',
|
|
'repeating_armeDruidLion_degatContinue',
|
|
'repeating_armeDruidLion_degatContinueValue',
|
|
'repeating_armeDruidLion_deuxMains',
|
|
'repeating_armeDruidLion_demoralisant',
|
|
'repeating_armeDruidLion_designation',
|
|
'repeating_armeDruidLion_destructeur',
|
|
'repeating_armeDruidLion_devastation',
|
|
'repeating_armeDruidLion_devastationValue',
|
|
'repeating_armeDruidLion_dispersion',
|
|
'repeating_armeDruidLion_dispersionValue',
|
|
'repeating_armeDruidLion_enChaine',
|
|
'repeating_armeDruidLion_esperance',
|
|
'repeating_armeDruidLion_excellence',
|
|
'repeating_armeDruidLion_fureur',
|
|
'repeating_armeDruidLion_guidage',
|
|
'repeating_armeDruidLion_guidageactif',
|
|
'repeating_armeDruidLion_ignoreArmure',
|
|
'repeating_armeDruidLion_ignoreCdF',
|
|
'repeating_armeDruidLion_akimbo',
|
|
'repeating_armeDruidLion_ambidextrie',
|
|
'repeating_armeDruidLion_leste',
|
|
'repeating_armeDruidLion_lourd',
|
|
'repeating_armeDruidLion_lumiere',
|
|
'repeating_armeDruidLion_lumiereValue',
|
|
'repeating_armeDruidLion_meurtrier',
|
|
'repeating_armeDruidLion_obliteration',
|
|
'repeating_armeDruidLion_orfevrerie',
|
|
'repeating_armeDruidLion_parasitage',
|
|
'repeating_armeDruidLion_parasitageValue',
|
|
'repeating_armeDruidLion_penetrant',
|
|
'repeating_armeDruidLion_penetrantValue',
|
|
'repeating_armeDruidLion_perceArmure',
|
|
'repeating_armeDruidLion_perceArmureValue',
|
|
'repeating_armeDruidLion_precision',
|
|
'repeating_armeDruidLion_reaction',
|
|
'repeating_armeDruidLion_reactionValue',
|
|
'repeating_armeDruidLion_regularite',
|
|
'repeating_armeDruidLion_silencieux',
|
|
'repeating_armeDruidLion_soumission',
|
|
'repeating_armeDruidLion_tenebricite',
|
|
'repeating_armeDruidLion_tirRafale',
|
|
'repeating_armeDruidLion_tirSecurite',
|
|
'repeating_armeDruidLion_ultraViolence',
|
|
];
|
|
|
|
const ameliorations = [
|
|
'repeating_armeDruidLion_chargeurGrappes',
|
|
'repeating_armeDruidLion_canonLong',
|
|
'repeating_armeDruidLion_canonRaccourci',
|
|
'repeating_armeDruidLion_chambreDouble',
|
|
'repeating_armeDruidLion_interfaceGuidage',
|
|
'repeating_armeDruidLion_jumelage',
|
|
'repeating_armeDruidLion_jumelageValue',
|
|
'repeating_armeDruidLion_jumelageType',
|
|
'repeating_armeDruidLion_lunetteIntelligente',
|
|
'repeating_armeDruidLion_munitionsHyperVelocite',
|
|
'repeating_armeDruidLion_munitionsDrone',
|
|
'repeating_armeDruidLion_chargeurExplosives',
|
|
'repeating_armeDruidLion_munitionsIEM',
|
|
'repeating_armeDruidLion_munitionsNonLetales',
|
|
'repeating_armeDruidLion_munitionsSubsoniques',
|
|
'repeating_armeDruidLion_pointeurLaser',
|
|
'repeating_armeDruidLion_protectionArme',
|
|
'repeating_armeDruidLion_revetementOmega',
|
|
'repeating_armeDruidLion_structureElement',
|
|
'repeating_armeDruidLion_systemeRefroidissement',
|
|
];
|
|
|
|
const special = [
|
|
'repeating_armeDruidLion_bDDiversTotal',
|
|
'repeating_armeDruidLion_bDDiversD6',
|
|
'repeating_armeDruidLion_bDDiversFixe',
|
|
'repeating_armeDruidLion_bVDiversTotal',
|
|
'repeating_armeDruidLion_bVDiversD6',
|
|
'repeating_armeDruidLion_bVDiversFixe',
|
|
'repeating_armeDruidLion_energie',
|
|
'repeating_armeDruidLion_energieValue',
|
|
'devasterAnatheme',
|
|
'bourreauTenebres',
|
|
'equilibreBalance',
|
|
];
|
|
|
|
attributs = attributs.concat(wpn, effets, ameliorations, special);
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
let isConditionnelA = false;
|
|
let isConditionnelD = false;
|
|
let isConditionnelV = false;
|
|
|
|
const arme = attrs.repeating_armeDruidLion_armeDruidLion;
|
|
|
|
let diceDegats = 0;
|
|
let degats = [];
|
|
const bonusDegats = [];
|
|
|
|
let diceViolence = 0;
|
|
let violence = [];
|
|
const bonusViolence = [];
|
|
|
|
const attaquesSurprises = [];
|
|
const attaquesSurprisesValue = [];
|
|
let attaquesSurprisesCondition = '';
|
|
|
|
let eASAssassin = '';
|
|
let eASAssassinValue = 0;
|
|
|
|
const energie = +attrs.druidLionPEAct;
|
|
const nEnergie = 'druidLionPEAct';
|
|
const portee = attrs.repeating_armeDruidLion_porteeDruidLion;
|
|
const autresEffets = [];
|
|
const autresAmeliorations = [];
|
|
const autresSpecial = [];
|
|
|
|
const mod = +attrs.jetModifDesComp;
|
|
|
|
const aspect = attrs.repeating_armeDruidLion_aspectDruidLion;
|
|
|
|
const aspectNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aspectValue = totalADruid(attrsAspects, aspect);
|
|
const AEValue = +attrsAspects[`${aspect}AE`];
|
|
|
|
const vChair = totalADruid(attrs, 'druidLionChair');
|
|
|
|
const vBete = totalADruid(attrs, 'druidLionBete');
|
|
const vAEBete = +attrs.druidLionBeteAE;
|
|
|
|
const vMachine = totalADruid(attrs, 'druidLionMachine');
|
|
const vAEMachine = +attrs.druidLionMachineAE;
|
|
|
|
const vMasque = totalADruid(attrs, 'druidLionMasque');
|
|
const vAEMasque = +attrs.druidLionMasqueAE;
|
|
|
|
const devaste = +attrs.devasterAnatheme;
|
|
const bourreau = +attrs.bourreauTenebres;
|
|
const equilibre = +attrs.equilibreBalance;
|
|
|
|
let isDestructeur = false;
|
|
let isFureur = false;
|
|
let isMeurtrier = false;
|
|
let isUltraviolence = false;
|
|
let isSurprise = false;
|
|
let isTenebricide = false;
|
|
let isCadence = false;
|
|
|
|
let isBourreau = false;
|
|
let isDevastation = false;
|
|
let isGuidage = false;
|
|
let isRegularite = false;
|
|
|
|
let eBourreauValue = 0;
|
|
let eDevastationValue = 0;
|
|
|
|
const cRoll = [];
|
|
const AE = [];
|
|
let bonus = [];
|
|
|
|
AE.push(AEValue);
|
|
|
|
exec.push(`{{special1B=${arme}}}`);
|
|
|
|
if (AE.length === 0) { exec.push('{{vAE=0}}'); } else { exec.push(`{{vAE=${AEValue}}}`); }
|
|
|
|
cRoll.push(aspectValue);
|
|
|
|
diceDegats = Number(attrs.repeating_armeDruidLion_degatDruidLion);
|
|
bonusDegats.push(+attrs.repeating_armeDruidLion_degatBonusDruidLion);
|
|
|
|
diceViolence = Number(attrs.repeating_armeDruidLion_violenceDruidLion);
|
|
bonusViolence.push(+attrs.repeating_armeDruidLion_violenceBonusDruidLion);
|
|
|
|
// GESTION DES BONUS DIVERS
|
|
let bChairD = Math.ceil(vChair / 2);
|
|
|
|
if (portee === '^{portee-contact}') {
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vChair=${bChairD}}}`);
|
|
}
|
|
// FIN DE GESTION DES BONUS DIVERS
|
|
|
|
// GESTION DES ASPECTS EXCEPTIONNELS
|
|
if (vAEBete > 0) {
|
|
let bonusBete = +vAEBete;
|
|
|
|
if (vAEBete > 5) { bonusBete += vBete; }
|
|
|
|
exec.push(`{{vBeteD=+${bonusBete}}}`);
|
|
bonusDegats.push(bonusBete);
|
|
}
|
|
// FIN DE GESTION DES ASPECTS EXCEPTIONNELS
|
|
|
|
// GESTION DES EFFETS
|
|
const eAntiAnatheme = attrs.repeating_armeDruidLion_antiAnatheme;
|
|
const eAntiVehicule = attrs.repeating_armeDruidLion_antiVehicule;
|
|
const eArtillerie = attrs.repeating_armeDruidLion_artillerie;
|
|
const eAssassin = attrs.repeating_armeDruidLion_repeating_armeDruidLion_assassin;
|
|
const eAssassinV = attrs.repeating_armeDruidLion_assassinValue;
|
|
const eAssistanceAttaque = attrs.repeating_armeDruidLion_assistanceAttaque;
|
|
const eBarrage = attrs.repeating_armeDruidLion_barrage;
|
|
const eBarrageV = attrs.repeating_armeDruidLion_barrageValue;
|
|
const eBourreau = attrs.repeating_armeDruidLion_bourreau;
|
|
const eBourreauV = attrs.repeating_armeDruidLion_bourreauValue;
|
|
const eCadence = attrs.repeating_armeDruidLion_cadence;
|
|
const eCadenceV = +attrs.repeating_armeDruidLion_cadenceValue;
|
|
const eCadenceActif = +attrs.repeating_armeDruidLion_cadenceactif;
|
|
const eChargeur = attrs.repeating_armeDruidLion_chargeur;
|
|
const eChargeurV = attrs.repeating_armeDruidLion_chargeurValue;
|
|
const eChoc = attrs.repeating_armeDruidLion_choc;
|
|
const eChocV = attrs.repeating_armeDruidLion_chocValue;
|
|
const eConviction = attrs.repeating_armeDruidLion_conviction;
|
|
const eDefense = attrs.repeating_armeDruidLion_defense;
|
|
const eDefenseV = attrs.repeating_armeDruidLion_defenseValue;
|
|
const eDegatsContinus = attrs.repeating_armeDruidLion_degatContinue;
|
|
const eDegatsContinusV = attrs.repeating_armeDruidLion_degatContinueValue;
|
|
const eDeuxMains = attrs.repeating_armeDruidLion_deuxMains;
|
|
const eDemoralisant = attrs.repeating_armeDruidLion_demoralisant;
|
|
const eDesignation = attrs.repeating_armeDruidLion_designation;
|
|
const eDestructeur = attrs.repeating_armeDruidLion_destructeur;
|
|
const eDestructeurV = 2;
|
|
const eDevastation = attrs.repeating_armeDruidLion_devastation;
|
|
const eDevastationV = attrs.repeating_armeDruidLion_devastationValue;
|
|
const eDispersion = attrs.repeating_armeDruidLion_dispersion;
|
|
const eDispersionV = attrs.repeating_armeDruidLion_dispersionValue;
|
|
const eEnChaine = attrs.repeating_armeDruidLion_enChaine;
|
|
const eEsperance = attrs.repeating_armeDruidLion_esperance;
|
|
const eExcellence = attrs.repeating_armeDruidLion_excellence;
|
|
const eFureur = attrs.repeating_armeDruidLion_fureur;
|
|
const eFureurV = 4;
|
|
const eGuidage = attrs.repeating_armeDruidLion_guidage;
|
|
const eGuidageActif = +attrs.repeating_armeDruidLion_guidageactif;
|
|
const eIgnoreArmure = attrs.repeating_armeDruidLion_ignoreArmure;
|
|
const eIgnoreCDF = attrs.repeating_armeDruidLion_ignoreCdF;
|
|
const eJAkimbo = attrs.repeating_armeDruidLion_akimbo;
|
|
const eJAmbidextrie = attrs.repeating_armeDruidLion_ambidextrie;
|
|
const eLeste = attrs.repeating_armeDruidLion_leste;
|
|
const eLourd = attrs.repeating_armeDruidLion_lourd;
|
|
const eLumiere = attrs.repeating_armeDruidLion_lumiere;
|
|
const eLumiereV = attrs.repeating_armeDruidLion_lumiereValue;
|
|
const eMeurtrier = attrs.repeating_armeDruidLion_meurtrier;
|
|
const eMeurtrierV = 2;
|
|
const eObliteration = attrs.repeating_armeDruidLion_obliteration;
|
|
const eOrfevrerie = attrs.repeating_armeDruidLion_orfevrerie;
|
|
const eParasitage = attrs.repeating_armeDruidLion_parasitage;
|
|
const eParasitageV = attrs.repeating_armeDruidLion_parasitageValue;
|
|
const ePenetrant = attrs.repeating_armeDruidLion_penetrant;
|
|
const ePenetrantV = attrs.repeating_armeDruidLion_penetrantValue;
|
|
const ePerceArmure = attrs.repeating_armeDruidLion_perceArmure;
|
|
const ePerceArmureV = attrs.repeating_armeDruidLion_perceArmureValue;
|
|
const ePrecision = attrs.repeating_armeDruidLion_precision;
|
|
const eReaction = attrs.repeating_armeDruidLion_reaction;
|
|
const eReactionV = attrs.repeating_armeDruidLion_reactionValue;
|
|
const eRegularite = attrs.repeating_armeDruidLion_regularite;
|
|
const eSilencieux = attrs.repeating_armeDruidLion_silencieux;
|
|
const eSoumission = attrs.repeating_armeDruidLion_soumission;
|
|
const eTenebricide = attrs.repeating_armeDruidLion_tenebricite;
|
|
const eTirRafale = attrs.repeating_armeDruidLion_tirRafale;
|
|
const eTirSecurite = attrs.repeating_armeDruidLion_tirSecurite;
|
|
const eUltraviolence = attrs.repeating_armeDruidLion_ultraViolence;
|
|
const eUltraviolenceV = 2;
|
|
|
|
if (eAntiAnatheme !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
exec.push(`{{antiAnatheme=${i18n_antiAnatheme}}}`);
|
|
exec.push(`{{antiAnathemeCondition=${i18n_antiAnathemeCondition}}}`);
|
|
}
|
|
|
|
if (eAssistanceAttaque !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{assistanceAttaque=${i18n_assistanceAttaque}}}`);
|
|
exec.push(`{{assistanceAttaqueCondition=${i18n_assistanceAttaqueCondition}}}`);
|
|
}
|
|
|
|
if (eArtillerie !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{artillerie=${i18n_artillerie}}}`);
|
|
exec.push(`{{artillerieCondition=${i18n_artillerieCondition}}}`);
|
|
}
|
|
|
|
if (eAssassin !== '0') {
|
|
isConditionnelD = true;
|
|
eASAssassin = i18n_assassin;
|
|
eASAssassinValue = eAssassinV;
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
|
|
if (eBourreau) {
|
|
isBourreau = true;
|
|
eBourreauValue = eBourreauV;
|
|
exec.push(`{{vBourreau=${i18n_bourreau} ${eBourreauV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eCadence && eCadenceActif === 0) {
|
|
autresEffets.push(`${i18n_cadence} ${eCadenceV}`);
|
|
} else if (eCadence && eCadenceActif === 1) {
|
|
isCadence = true;
|
|
exec.push(`{{vCadence=${eCadenceV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eChoc !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{choc=${i18n_choc} ${eChocV}}}`);
|
|
exec.push(`{{chocCondition=${i18n_chocCondition}}}`);
|
|
}
|
|
|
|
if (eConviction !== 0) {
|
|
autresEffets.push(i18n_conviction);
|
|
}
|
|
|
|
if (eDemoralisant !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{demoralisant=${i18n_demoralisant}}}`);
|
|
exec.push(`{{demoralisantCondition=${i18n_demoralisantCondition}}}`);
|
|
}
|
|
|
|
if (eDestructeur !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{destructeur=${i18n_destructeur}}}`);
|
|
exec.push(`{{destructeurValue=[[${eDestructeurV}D6]]}}`);
|
|
exec.push(`{{destructeurCondition=${i18n_destructeurCondition}}}`);
|
|
|
|
isDestructeur = true;
|
|
}
|
|
|
|
if (eDevastation) {
|
|
isDevastation = true;
|
|
eDevastationValue = eDevastationV;
|
|
exec.push(`{{vDevastation=${i18n_devastation} ${eDevastationV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eEnChaine !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{enChaine=${i18n_enChaine}}}`);
|
|
exec.push(`{{enChaineCondition=${i18n_enChaineCondition}}}`);
|
|
}
|
|
|
|
if (eEsperance !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
exec.push(`{{esperance=${i18n_esperance}}}`);
|
|
exec.push(`{{esperanceConditionD=${i18n_esperanceConditionD}}}`);
|
|
exec.push(`{{esperanceConditionV=${i18n_esperanceConditionV}}}`);
|
|
}
|
|
|
|
if (eExcellence) {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{excellence=${i18n_excellence}}} {{excellenceCondition=${i18n_excellenceCondition}}}`);
|
|
}
|
|
|
|
if (eFureur !== '0') {
|
|
isConditionnelV = true;
|
|
exec.push(`{{fureur=${i18n_fureur}}}`);
|
|
exec.push(`{{fureurValue=[[${eFureurV}D6]]}}`);
|
|
exec.push(`{{fureurCondition=${i18n_fureurCondition}}}`);
|
|
|
|
isFureur = true;
|
|
}
|
|
|
|
if (eGuidage !== '0' && eGuidageActif !== 0) {
|
|
isGuidage = true;
|
|
exec.push(`{{vGuidage=${i18n_guidageInclus}}}`);
|
|
} else if (eGuidage !== '0') {
|
|
autresEffets.push(i18n_guidage);
|
|
}
|
|
|
|
if (eLeste !== '0') {
|
|
if (portee !== '^{portee-contact}') { bChairD = vChair; }
|
|
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vLeste=${bChairD}}}`);
|
|
}
|
|
|
|
if (eMeurtrier !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{meurtrier=${i18n_meurtrier}}}`);
|
|
exec.push(`{{meurtrierValue=[[${eMeurtrierV}D6]]}}`);
|
|
exec.push(`{{meurtrierCondition=${i18n_meurtrierCondition}}}`);
|
|
|
|
isMeurtrier = true;
|
|
}
|
|
|
|
if (eObliteration !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{obliteration=${i18n_obliteration}}}`);
|
|
exec.push(`{{obliterationCondition=${i18n_obliterationCondition}}}`);
|
|
}
|
|
|
|
if (eOrfevrerie !== '0') {
|
|
const vOrfevrerie = Math.ceil((vMasque / 2) + vAEMasque);
|
|
|
|
bonusDegats.push(vOrfevrerie);
|
|
exec.push(`{{vOrfevrerie=${vOrfevrerie}}}`);
|
|
}
|
|
|
|
if (eParasitage !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{parasitage=${i18n_parasitage} ${eParasitageV}}}`);
|
|
exec.push(`{{parasitageCondition=${i18n_parasitageCondition}}}`);
|
|
}
|
|
|
|
if (ePrecision !== '0') {
|
|
isConditionnelD = true;
|
|
const vPrecision = Math.ceil((vMachine / 2) + vAEMachine);
|
|
|
|
bonusDegats.push(vPrecision);
|
|
exec.push(`{{vPrecision=${vPrecision}}}`);
|
|
}
|
|
|
|
if (eRegularite) {
|
|
isRegularite = true;
|
|
exec.push('{{vRegularite=[[0]]}}');
|
|
}
|
|
|
|
if (eSilencieux !== '0') {
|
|
const totalSilencieux = Math.ceil((vMasque / 2) + vAEMasque);
|
|
|
|
attaquesSurprises.push(i18n_silencieux);
|
|
attaquesSurprisesValue.push(totalSilencieux);
|
|
isConditionnelD = true;
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
|
|
if (eSoumission !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{soumission=${i18n_soumission}}}`);
|
|
exec.push(`{{soumissionCondition=${i18n_soumissionCondition}}}`);
|
|
}
|
|
|
|
if (eTenebricide !== '0') {
|
|
exec.push(`{{tenebricide=${i18n_tenebricide}}}`);
|
|
exec.push(`{{tenebricideConditionD=${i18n_tenebricideConditionD}}}`);
|
|
exec.push(`{{tenebricideConditionV=${i18n_tenebricideConditionV}}}`);
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
}
|
|
|
|
if (eTirRafale !== '0') {
|
|
exec.push(`{{tirRafale=${i18n_tirRafale}}}`);
|
|
exec.push(`{{tirRafaleCondition=${i18n_tirRafaleCondition}}}`);
|
|
isConditionnelD = true;
|
|
}
|
|
|
|
if (eUltraviolence !== '0') {
|
|
exec.push(`{{ultraviolence=${i18n_ultraviolence}}}`);
|
|
exec.push(`{{ultraviolenceValue=[[${eUltraviolenceV}D6]]}}`);
|
|
exec.push(`{{ultraviolenceCondition=${i18n_ultraviolenceCondition}}}`);
|
|
|
|
isConditionnelV = true;
|
|
isUltraviolence = true;
|
|
}
|
|
|
|
if (eAntiVehicule !== '0') { autresEffets.push(i18n_antiVehicule); }
|
|
|
|
if (eBarrage !== '0') { autresEffets.push(`${i18n_barrage} ${eBarrageV}`); }
|
|
|
|
if (eChargeur !== '0') { autresEffets.push(`${i18n_chargeur} ${eChargeurV}`); }
|
|
|
|
if (eDefense !== '0') { autresEffets.push(`${i18n_defense} ${eDefenseV}`); }
|
|
|
|
if (eDegatsContinus !== '0') { autresEffets.push(`${i18n_degatsContinus} ${eDegatsContinusV} ([[1d6]] ${i18n_tours})`); }
|
|
|
|
if (eDeuxMains !== '0') { autresEffets.push(i18n_deuxMains); }
|
|
|
|
if (eDesignation !== '0') { autresEffets.push(i18n_designation); }
|
|
|
|
if (eDispersion !== '0') { autresEffets.push(`${i18n_dispersion} ${eDispersionV}`); }
|
|
|
|
if (eIgnoreArmure !== '0') { autresEffets.push(i18n_ignoreArmure); }
|
|
|
|
if (eIgnoreCDF !== '0') { autresEffets.push(i18n_ignoreCDF); }
|
|
|
|
if (eJAkimbo !== '0') { autresEffets.push(i18n_jAkimbo); }
|
|
|
|
if (eJAmbidextrie !== '0') { autresEffets.push(i18n_jAmbidextrie); }
|
|
|
|
if (eLourd !== '0') { autresEffets.push(i18n_lourd); }
|
|
|
|
if (eLumiere !== '0') { autresEffets.push(`${i18n_lumiere} ${eLumiereV}`); }
|
|
|
|
if (ePenetrant !== '0') { autresEffets.push(`${i18n_penetrant} ${ePenetrantV}`); }
|
|
|
|
if (ePerceArmure !== '0') { autresEffets.push(`${i18n_perceArmure} ${ePerceArmureV}`); }
|
|
|
|
if (eReaction !== '0') { autresEffets.push(`${i18n_reaction} ${eReactionV}`); }
|
|
|
|
if (eTirSecurite !== '0') { autresEffets.push(i18n_tirSecurite); }
|
|
|
|
// FIN GESTION DES EFFETS
|
|
|
|
// GESTION DES AMELIORATIONS
|
|
const aChargeurGrappes = attrs.repeating_armeDruidLion_chargeurGrappes;
|
|
const aCanonLong = attrs.repeating_armeDruidLion_canonLong;
|
|
const aCanonRaccourci = attrs.repeating_armeDruidLion_canonRaccourci;
|
|
const aChambreDouble = attrs.repeating_armeDruidLion_chambreDouble;
|
|
const aInterfaceGuidage = attrs.repeating_armeDruidLion_interfaceGuidage;
|
|
const aJumelage = attrs.repeating_armeDruidLion_jumelage;
|
|
const aJumelageV = attrs.repeating_armeDruidLion_jumelageValue;
|
|
const aLunetteIntelligente = attrs.repeating_armeDruidLion_lunetteIntelligente;
|
|
const aMunitionsDrone = attrs.repeating_armeDruidLion_munitionsDrone;
|
|
const aMunitionsHyperVelocite = attrs.repeating_armeDruidLion_munitionsHyperVelocite;
|
|
const aChargeurExplosives = attrs.repeating_armeDruidLion_chargeurExplosives;
|
|
const aMunitionsIEM = attrs.repeating_armeDruidLion_munitionsIEM;
|
|
const aMunitionsNonLetales = attrs.repeating_armeDruidLion_munitionsNonLetales;
|
|
const aMunitionsSubsoniques = attrs.repeating_armeDruidLion_munitionsSubsoniques;
|
|
const aPointeurLaser = attrs.repeating_armeDruidLion_pointeurLaser;
|
|
const aProtectionArme = attrs.repeating_armeDruidLion_protectionArme;
|
|
const aRevetementOmega = attrs.repeating_armeDruidLion_revetementOmega;
|
|
const aStructureElement = attrs.repeating_armeDruidLion_structureElement;
|
|
const aSystemeRefroidissement = attrs.repeating_armeDruidLion_systemeRefroidissement;
|
|
|
|
if (aChargeurGrappes !== '0') {
|
|
exec.push('{{vMGrappeD=-1D6}}');
|
|
exec.push('{{vMGrappeV=+1D6}}');
|
|
diceDegats -= 1;
|
|
diceViolence += 1;
|
|
}
|
|
|
|
if (aCanonLong !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{canonLong=${i18n_canonLong}}}`);
|
|
exec.push(`{{canonLongCondition=${i18n_canonLongCondition}}}`);
|
|
}
|
|
|
|
if (aCanonRaccourci !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{canonRaccourci=${i18n_canonRaccourci}}}`);
|
|
exec.push(`{{canonRaccourciCondition=${i18n_canonRaccourciCondition}}}`);
|
|
}
|
|
|
|
if (aChambreDouble !== '0' && eCadenceActif === 1) {
|
|
if (eCadence !== '0' && eCadenceV >= 2) { autresAmeliorations.push(i18n_chambreDouble); } else {
|
|
isCadence = true;
|
|
exec.push(`{{vChambreDouble=2) ${i18n_inclus}}}`);
|
|
}
|
|
} else if (aChambreDouble !== '0' && eCadenceActif === 0) { autresAmeliorations.push(i18n_chambreDouble); }
|
|
|
|
if (aLunetteIntelligente !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{lunetteIntelligente=${i18n_lunetteIntelligente}}}`);
|
|
exec.push(`{{lunetteIntelligenteCondition=${i18n_lunetteIntelligenteCondition}}}`);
|
|
}
|
|
|
|
if (aMunitionsDrone !== '0') {
|
|
exec.push('{{vMDrone=+3}}');
|
|
bonus.push(3);
|
|
}
|
|
|
|
if (aMunitionsHyperVelocite !== '0') {
|
|
if (eAssistanceAttaque !== '0') { autresAmeliorations.push(i18n_munitionsHyperVelocite); } else if (eAssistanceAttaque === '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{assistanceAttaque=${i18n_munitionsHyperVelocite}}}`);
|
|
exec.push(`{{assistanceAttaqueCondition=${i18n_assistanceAttaqueCondition}}}`);
|
|
}
|
|
}
|
|
|
|
if (aChargeurExplosives !== '0') {
|
|
exec.push('{{vMExplosiveD=+1D6}}');
|
|
exec.push('{{vMExplosiveV=-1D6}}');
|
|
diceDegats += 1;
|
|
diceViolence -= 1;
|
|
}
|
|
|
|
if (aMunitionsIEM !== '0') {
|
|
exec.push('{{vMIEMD=-1D6}}');
|
|
exec.push('{{vMIEMV=-1D6}}');
|
|
diceDegats -= 1;
|
|
diceViolence -= 1;
|
|
autresAmeliorations.push(i18n_munitionsIEMParasitage);
|
|
}
|
|
|
|
if (aMunitionsSubsoniques !== '0') {
|
|
if (eSilencieux !== '0') { autresAmeliorations.push(i18n_munitionsSubsoniques); } else if (eSilencieux === '0') {
|
|
const totalSubsonique = vDiscretion + oDiscretion;
|
|
|
|
attaquesSurprises.push(i18n_munitionsSubsoniques);
|
|
attaquesSurprisesValue.push(totalSubsonique);
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
}
|
|
|
|
if (aPointeurLaser !== '0') {
|
|
exec.push('{{vMPLaser=+1}}');
|
|
bonus.push(1);
|
|
}
|
|
|
|
if (aSystemeRefroidissement !== '0') {
|
|
if (eTirRafale !== '0') { autresAmeliorations.push(`${i18n_systemeRefroidissement} (${i18n_barrage} 1)`); } else if (eTirRafale === '0') {
|
|
exec.push(`{{tirRafale=${i18n_systemeRefroidissement} + ${i18n_barrage} 1}}`);
|
|
exec.push(`{{tirRafaleCondition=${i18n_tirRafaleCondition}}}`);
|
|
}
|
|
}
|
|
|
|
if (aRevetementOmega !== '0') {
|
|
if (eASAssassinValue < 2) {
|
|
eASAssassin = i18n_revetementOmega;
|
|
eASAssassinValue = 2;
|
|
|
|
if (eASAssassinValue !== 0) { autresEffets.push(i18n_assassin); }
|
|
} else if (eASAssassinValue > 2) { autresAmeliorations.push(i18n_revetementOmega); }
|
|
}
|
|
|
|
if (aInterfaceGuidage !== '0') { autresAmeliorations.push(i18n_interfaceGuidage); }
|
|
|
|
if (aJumelage !== '0') { autresAmeliorations.push(`${i18n_jumelage} (${aJumelageV})`); }
|
|
|
|
if (aMunitionsNonLetales !== '0') { autresAmeliorations.push(i18n_munitionsNonLetales); }
|
|
|
|
if (aProtectionArme !== '0') { autresAmeliorations.push(i18n_protectionArme); }
|
|
|
|
if (aStructureElement !== '0') { autresAmeliorations.push(i18n_structureElementAlpha); }
|
|
|
|
// FIN GESTION DES AMELIORATIONS
|
|
|
|
// GESTION DES BONUS SPECIAUX
|
|
const sBonusDegats = attrs.repeating_armeDruidLion_bDDiversTotal;
|
|
const sBonusDegatsD6 = attrs.repeating_armeDruidLion_bDDiversD6;
|
|
const sBonusDegatsFixe = +attrs.repeating_armeDruidLion_bDDiversFixe;
|
|
|
|
const sBonusViolence = attrs.repeating_armeDruidLion_bVDiversTotal;
|
|
const sBonusViolenceD6 = attrs.repeating_armeDruidLion_bVDiversD6;
|
|
const sBonusViolenceFixe = +attrs.repeating_armeDruidLion_bVDiversFixe;
|
|
|
|
const sEnergie = +attrs.repeating_armeDruidLion_energie;
|
|
const sEnergieValue = attrs.repeating_armeDruidLion_energieValue;
|
|
|
|
let pasDEnergie = false;
|
|
let sEnergieText = '';
|
|
let newEnergie = 0;
|
|
|
|
if (sBonusDegats !== '0') {
|
|
exec.push(`{{vMSpecialD=+${sBonusDegatsD6}D6+${sBonusDegatsFixe}}}`);
|
|
|
|
diceDegats += Number(sBonusDegatsD6);
|
|
bonusDegats.push(sBonusDegatsFixe);
|
|
}
|
|
|
|
if (sBonusViolence !== '0') {
|
|
exec.push(`{{vMSpecialV=+${sBonusViolenceD6}D6+${sBonusViolenceFixe}}}`);
|
|
|
|
diceViolence += Number(sBonusViolenceD6);
|
|
bonusViolence.push(sBonusViolenceFixe);
|
|
}
|
|
|
|
let hasEnergieRetiree = false;
|
|
let vEnergieRetiree = 0;
|
|
|
|
if (eGuidage !== 0 && eGuidageActif !== 0) {
|
|
hasEnergieRetiree = true;
|
|
vEnergieRetiree += 5;
|
|
}
|
|
|
|
if (sEnergie !== 0) {
|
|
hasEnergieRetiree = true;
|
|
vEnergieRetiree += +sEnergieValue;
|
|
}
|
|
|
|
if (hasEnergieRetiree) {
|
|
newEnergie = Number(energie) - Number(vEnergieRetiree);
|
|
|
|
autresSpecial.push(`${i18n_energieRetiree} (${vEnergieRetiree})`);
|
|
|
|
if (newEnergie === 0) {
|
|
sEnergieText = i18n_plusEnergie;
|
|
} else if (newEnergie < 0) {
|
|
newEnergie = 0;
|
|
sEnergieText = i18n_pasEnergie;
|
|
pasDEnergie = true;
|
|
}
|
|
|
|
exec.push(`{{energieR=${newEnergie}}}`);
|
|
}
|
|
// FIN DE GESTION DES BONUS SPECIAUX
|
|
|
|
exec.push(`{{cBase=${aspectNom}}}`);
|
|
|
|
if (mod !== 0) {
|
|
cRoll.push(mod);
|
|
exec.push(`{{mod=${mod}}}`);
|
|
}
|
|
|
|
if (cRoll.length === 0) { cRoll.push(0); }
|
|
|
|
bonus = bonus.concat(AE);
|
|
|
|
const pairOrImpair = isGuidage === true ? 'cs1cs3cs5cf2cf4cf6s' : 'cs2cs4cs6cf1cf3cf5s';
|
|
|
|
const malusRoll = isCadence === true ? 3 : 0;
|
|
const total = Math.max(cRoll.reduce((accumulateur, valeurCourante) => accumulateur + valeurCourante, 0) - malusRoll, 0);
|
|
|
|
const jet = `{{jet=[[ ${total}d6${pairOrImpair}]]}}`;
|
|
const baseJet = '{{basejet=[[0]]}}';
|
|
|
|
exec.push(jet);
|
|
exec.push(baseJet);
|
|
exec.push(`{{Exploit=[[${total}]]}}`);
|
|
exec.push(`{{bonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
if (diceDegats < 0) { diceDegats = 0; }
|
|
|
|
degats.push(`${diceDegats}D6`);
|
|
degats = degats.concat(bonusDegats);
|
|
|
|
if (diceViolence < 0) { diceViolence = 0; }
|
|
|
|
violence.push(`${diceViolence}D6`);
|
|
violence = violence.concat(bonusViolence);
|
|
|
|
exec.push(`{{portee=${i18n_portee} ${portee}}}`);
|
|
exec.push(`{{degats=[[${degats.join('+')}]]}}`);
|
|
exec.push(`{{violence=[[${violence.join('+')}]]}}`);
|
|
|
|
if (eObliteration !== '0') {
|
|
let ASObliteration = [];
|
|
let ASValueObliteration = [];
|
|
|
|
diceDegatsObliteration = diceDegats * 6;
|
|
|
|
degatsFObliteration = _.reduce(bonusDegats, (n1, n2) => Number(n1) + Number(n2));
|
|
|
|
const vObliteration = diceDegatsObliteration + degatsFObliteration;
|
|
|
|
exec.push(`{{obliterationValue=${vObliteration}}}`);
|
|
|
|
if (eMeurtrier !== '0') { exec.push(`{{obliterationMeurtrierValue=${eMeurtrierV * 6}}}`); }
|
|
|
|
if (eDestructeur !== '0') { exec.push(`{{obliterationDestructeurValue=${eDestructeurV * 6}}}`); }
|
|
|
|
if (eASAssassinValue > 0) {
|
|
eAssassinTenebricideValue = eASAssassinValue * 6;
|
|
|
|
ASObliteration.unshift(eASAssassin);
|
|
ASValueObliteration.unshift(eAssassinTenebricideValue);
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
ASObliteration = ASObliteration.concat(attaquesSurprises);
|
|
ASValueObliteration = ASValueObliteration.concat(attaquesSurprisesValue);
|
|
}
|
|
|
|
exec.push(`{{obliterationAS=${ASObliteration.join('\n+')}}}`);
|
|
exec.push(`{{obliterationASValue=[[${ASValueObliteration.join('+')}]]}}`);
|
|
} else if (attaquesSurprises.length > 0) {
|
|
ASObliteration = ASObliteration.concat(attaquesSurprises);
|
|
ASValueObliteration = ASValueObliteration.concat(attaquesSurprisesValue);
|
|
|
|
exec.push(`{{obliterationAS=${ASTenebricide.join('\n+')}}}`);
|
|
exec.push(`{{obliterationASValue=${_.reduce(ASValueObliteration, (n1, n2) => n1 + n2, 0)}}}`);
|
|
}
|
|
}
|
|
|
|
if (eASAssassinValue > 0) {
|
|
attaquesSurprises.unshift(eASAssassin);
|
|
attaquesSurprisesValue.unshift(`${eASAssassinValue}D6`);
|
|
}
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
exec.push(`{{attaqueSurprise=${attaquesSurprises.join('\n+')}}}`);
|
|
exec.push(`{{attaqueSurpriseValue=[[${attaquesSurprisesValue.join('+')}]]}}`);
|
|
exec.push(attaquesSurprisesCondition);
|
|
|
|
isSurprise = true;
|
|
}
|
|
|
|
if (eTenebricide !== '0') {
|
|
isTenebricide = true;
|
|
|
|
exec.push('{{tenebricideValueD=[[0]]}}');
|
|
exec.push('{{tenebricideValueV=[[0]]}}');
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
exec.push(`{{tenebricideAS=${attaquesSurprises.join('\n+')}}}`);
|
|
exec.push('{{tenebricideASValue=[[0]]}}');
|
|
}
|
|
|
|
if (isMeurtrier) { firstExec.push('{{tMeurtrierValue=[[0]]}}'); }
|
|
if (isDestructeur) { firstExec.push('{{tDestructeurValue=[[0]]}}'); }
|
|
if (isFureur) { firstExec.push('{{tFureurValue=[[0]]}}'); }
|
|
if (isUltraviolence) { firstExec.push('{{tUltraviolenceValue=[[0]]}}'); }
|
|
}
|
|
|
|
if (devaste || bourreau || equilibre) {
|
|
const herauts = [];
|
|
|
|
if (devaste) { herauts.push(i18n_devasterAnatheme); }
|
|
if (bourreau) { herauts.push(i18n_bourreauTenebres); }
|
|
if (equilibre) { herauts.push(i18n_equilibrerBalance); }
|
|
|
|
exec.push(`{{herauts=${herauts.join(' / ')}}}`);
|
|
}
|
|
|
|
if (autresEffets.length > 0) { exec.push(`{{effets=${autresEffets.join(' / ')}}}`); }
|
|
|
|
if (autresAmeliorations.length > 0) { exec.push(`{{ameliorations=${autresAmeliorations.join(' / ')}}}`); }
|
|
|
|
if (autresSpecial.length > 0) { exec.push(`{{special=${autresSpecial.join(' / ')}}}`); }
|
|
|
|
if (isConditionnelA === true) { exec.push('{{succesConditionnel=true}}'); }
|
|
|
|
if (isConditionnelD === true) { exec.push('{{degatsConditionnel=true}}'); }
|
|
|
|
if (isConditionnelV === true) { exec.push('{{violenceConditionnel=true}}'); }
|
|
|
|
if (pasDEnergie === false) {
|
|
const finalRoll = await startRoll(exec.join(' '));
|
|
|
|
const tJet = finalRoll.results.jet.result;
|
|
const rJet = finalRoll.results.jet.dice;
|
|
|
|
const tBonus = finalRoll.results.bonus.result;
|
|
const tExploit = finalRoll.results.Exploit.result;
|
|
|
|
const rDegats = finalRoll.results.degats.dice;
|
|
const rViolence = finalRoll.results.violence.dice;
|
|
|
|
const tDegats = finalRoll.results.degats.result;
|
|
const tViolence = finalRoll.results.violence.result;
|
|
|
|
const conditions = {
|
|
bourreau,
|
|
devaste,
|
|
equilibre,
|
|
isTenebricide,
|
|
isSurprise,
|
|
isDestructeur,
|
|
isFureur,
|
|
isMeurtrier,
|
|
isUltraviolence,
|
|
isBourreau,
|
|
isDevastation,
|
|
isRegularite,
|
|
isGuidage,
|
|
};
|
|
|
|
const conditionsValues = {
|
|
eBourreauValue,
|
|
eDevastationValue,
|
|
};
|
|
|
|
const computed = updateRoll(finalRoll, rJet, tBonus, tDegats, rDegats, bonusDegats, tViolence, rViolence, bonusViolence, conditions, conditionsValues);
|
|
|
|
finishRoll(finalRoll.rollId, computed);
|
|
|
|
if (tJet !== 0 && computed.basejet === tExploit) {
|
|
const exploitRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${i18n_exploit}}}${jet}`);
|
|
const rExploit = exploitRoll.results.jet.dice;
|
|
const exploitPairOrImpair = isGuidage === true ? 1 : 0;
|
|
|
|
const jetExploit = rExploit.reduce((accumulateur, valeurCourante) => {
|
|
const vC = valeurCourante;
|
|
let nV = 0;
|
|
|
|
if (vC % 2 === exploitPairOrImpair) {
|
|
nV = 1;
|
|
}
|
|
|
|
return accumulateur + nV;
|
|
}, 0);
|
|
|
|
const exploitComputed = {
|
|
jet: jetExploit,
|
|
};
|
|
|
|
finishRoll(exploitRoll.rollId, exploitComputed);
|
|
}
|
|
|
|
if (hasEnergieRetiree) {
|
|
setAttrs({
|
|
[nEnergie]: newEnergie,
|
|
});
|
|
|
|
if (newEnergie === 0) {
|
|
const noEnergieRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${arme}}} {{text=${sEnergieText}}}`);
|
|
finishRoll(noEnergieRoll.rollId, {});
|
|
}
|
|
}
|
|
} else {
|
|
finalRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${arme}}} {{text=${sEnergieText}}}`);
|
|
finishRoll(finalRoll.rollId, {});
|
|
}
|
|
});
|
|
|
|
// MALDRUID
|
|
const MALDruidRollSimple = [
|
|
'MALDruidLionChair', 'MALDruidLionBete', 'MALDruidLionMachine', 'MALDruidLionDame', 'MALDruidLionMasque',
|
|
'MALDruidWolfChair', 'MALDruidWolfBete', 'MALDruidWolfMachine', 'MALDruidWolfDame', 'MALDruidWolfMasque',
|
|
'MALDruidCrowChair', 'MALDruidCrowBete', 'MALDruidCrowMachine', 'MALDruidCrowDame', 'MALDruidCrowMasque',
|
|
];
|
|
|
|
MALDruidRollSimple.forEach((button) => {
|
|
on(`clicked:${button}Roll`, async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
const attributs = [
|
|
'MALJetModifDesComp',
|
|
];
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
const cRoll = [];
|
|
const bonus = [];
|
|
|
|
const mod = +attrs.MALJetModifDesComp;
|
|
|
|
const aspect = button;
|
|
const aNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aValue = totalADruid(attrsAspects, aspect);
|
|
|
|
if (button !== 'MALDruidCrowChair' && button !== 'MALDruidCrowBete' && button !== 'MALDruidCrowMachine' && button !== 'MALDruidCrowDame' && button !== 'MALDruidCrowMasque') {
|
|
const aAE = attrsAspects[`${aspect}AE`];
|
|
exec.push(`{{vAE=${aAE}}}`);
|
|
bonus.push(aAE);
|
|
} else { bonus.push(0); }
|
|
|
|
cRoll.push(aValue);
|
|
cRoll.push(mod);
|
|
|
|
exec.push(roll);
|
|
exec.push(`{{cBase=${aNom}}}`);
|
|
exec.push(`{{jet=[[ {{[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0}]]}}`);
|
|
exec.push(`{{Exploit=[[${cRoll.join('+')}]]}}`);
|
|
exec.push(`{{tBonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
startRoll(exec.join(' '), (results) => {
|
|
const tJet = results.results.jet.result;
|
|
const tBonus = results.results.tBonus.result;
|
|
const tExploit = results.results.Exploit.result;
|
|
|
|
const total = tJet + tBonus;
|
|
|
|
finishRoll(
|
|
results.rollId,
|
|
{
|
|
jet: total,
|
|
},
|
|
);
|
|
|
|
if (tJet !== 0 && tJet === tExploit) {
|
|
startRoll(`${roll}@{jetGM} &{template:simple} {{Nom=@{name}}} {{special1=${i18n_exploit}}}{{jet=[[ {[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0]]}}`, (exploit) => {
|
|
const tExploit2 = exploit.results.jet.result;
|
|
|
|
finishRoll(
|
|
exploit.rollId,
|
|
{
|
|
jet: tExploit2,
|
|
},
|
|
);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
on('clicked:MALDruidLionArmeBase', async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
let attributs = [
|
|
'MALAspectDruidLionBase',
|
|
'MALJetModifDesComp',
|
|
'MALDruidLionChairBase',
|
|
'MALDruidLionChairEvol',
|
|
'MALDruidLionBeteBase',
|
|
'MALDruidLionBeteEvol',
|
|
'MALDruidLionBeteAE',
|
|
];
|
|
|
|
const arme = [
|
|
'MALDruidLionBaseNom',
|
|
'MALDruidLionBaseDegats',
|
|
'MALDruidLionBaseDegatsBonus',
|
|
'MALDruidLionBaseViolence',
|
|
'MALDruidLionBaseViolenceBonus',
|
|
'MALDruidLionBasePortee',
|
|
];
|
|
|
|
const special = [
|
|
'MALCoupBDDiversTotal',
|
|
'MALBDDiversD6',
|
|
'MALBDDiversFixe',
|
|
'MALCoupBVDiversTotal',
|
|
'MALBVDiversD6',
|
|
'MALBVDiversFixe',
|
|
'devasterAnatheme',
|
|
'bourreauTenebres',
|
|
'equilibreBalance',
|
|
];
|
|
|
|
attributs = attributs.concat(arme, special);
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
const isConditionnelA = false;
|
|
const isConditionnelD = false;
|
|
const isConditionnelV = false;
|
|
|
|
let diceDegats = 0;
|
|
let degats = [];
|
|
const bonusDegats = [];
|
|
|
|
let diceViolence = 0;
|
|
let violence = [];
|
|
const bonusViolence = [];
|
|
|
|
const portee = attrs.MALDruidLionBasePortee;
|
|
|
|
const mod = Number(attrs.MALJetModifDesComp);
|
|
|
|
const aspect = attrs.MALAspectDruidLionBase;
|
|
|
|
const aspectNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aspectValue = totalADruid(attrsAspects, aspect);
|
|
const AEValue = +attrsAspects[`${aspect}AE`] || 0;
|
|
|
|
const vChair = totalADruid(attrs, 'MALDruidLionChair');
|
|
|
|
const bete = totalADruid(attrs, 'MALDruidLionBete');
|
|
const AEBete = +attrs.MALDruidLionBeteAE;
|
|
|
|
const devaste = +attrs.devasterAnatheme;
|
|
const bourreau = +attrs.bourreauTenebres;
|
|
const equilibre = +attrs.equilibreBalance;
|
|
|
|
const cRoll = [];
|
|
const AE = [];
|
|
let bonus = [];
|
|
|
|
AE.push(AEValue);
|
|
|
|
exec.push(`{{vAE=${AEValue}}}`);
|
|
|
|
cRoll.push(aspectValue);
|
|
|
|
diceDegats = Number(attrs.MALDruidLionBaseDegats);
|
|
bonusDegats.push(+attrs.MALDruidLionBaseDegatsBonus);
|
|
|
|
diceViolence = Number(attrs.MALDruidLionBaseViolence);
|
|
bonusViolence.push(+attrs.MALDruidLionBaseViolenceBonus);
|
|
|
|
// GESTION DES BONUS DIVERS
|
|
const bChairD = Math.ceil(vChair / 2);
|
|
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vChair=${bChairD}}}`);
|
|
// FIN DE GESTION DES BONUS DIVERS
|
|
|
|
// GESTION DES ASPECTS EXCEPTIONNELS
|
|
if (AEBete > 0) {
|
|
let bonusBete = +AEBete;
|
|
|
|
if (AEBete > 5) { bonusBete += +bete; }
|
|
|
|
exec.push(`{{vBeteD=+${bonusBete}}}`);
|
|
bonusDegats.push(bonusBete);
|
|
}
|
|
// FIN DE GESTION DES ASPECTS EXCEPTIONNELS
|
|
|
|
// GESTION DES BONUS SPECIAUX
|
|
const sBonusDegats = attrs.MALCoupBDDiversTotal;
|
|
const sBonusDegatsD6 = attrs.MALBDDiversD6;
|
|
const sBonusDegatsFixe = +attrs.MALBDDiversFixe;
|
|
|
|
const sBonusViolence = attrs.MALCoupBVDiversTotal;
|
|
const sBonusViolenceD6 = attrs.MALBVDiversD6;
|
|
const sBonusViolenceFixe = +attrs.MALBVDiversFixe;
|
|
|
|
if (sBonusDegats !== '0') {
|
|
exec.push(`{{vMSpecialD=+${sBonusDegatsD6}D6+${sBonusDegatsFixe}}}`);
|
|
diceDegats += Number(sBonusDegatsD6);
|
|
bonusDegats.push(sBonusDegatsFixe);
|
|
}
|
|
|
|
if (sBonusViolence !== '0') {
|
|
exec.push(`{{vMSpecialV=+${sBonusViolenceD6}D6+${sBonusViolenceFixe}}}`);
|
|
diceViolence += Number(sBonusViolenceD6);
|
|
bonusViolence.push(sBonusViolenceFixe);
|
|
}
|
|
// FIN DE GESTION DES BONUS SPECIAUX
|
|
|
|
exec.push(`{{cBase=${aspectNom}}}`);
|
|
|
|
if (mod !== 0) {
|
|
cRoll.push(mod);
|
|
exec.push(`{{mod=${mod}}}`);
|
|
}
|
|
|
|
if (cRoll.length === 0) { cRoll.push(0); }
|
|
|
|
bonus = bonus.concat(AE);
|
|
|
|
const pairOrImpair = 'cs2cs4cs6cf1cf3cf5s';
|
|
|
|
const malusRoll = 0;
|
|
const total = Math.max(cRoll.reduce((accumulateur, valeurCourante) => accumulateur + valeurCourante, 0) - malusRoll, 0);
|
|
|
|
const jet = `{{jet=[[ ${total}d6${pairOrImpair}]]}}`;
|
|
const baseJet = '{{basejet=[[0]]}}';
|
|
|
|
exec.push(jet);
|
|
exec.push(baseJet);
|
|
exec.push(`{{Exploit=[[${cRoll.join('+')}]]}}`);
|
|
exec.push(`{{bonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
degats.push(`${diceDegats}D6`);
|
|
degats = degats.concat(bonusDegats);
|
|
|
|
violence.push(`${diceViolence}D6`);
|
|
violence = violence.concat(bonusViolence);
|
|
|
|
exec.push(`{{portee=${i18n_portee} ${portee}}}`);
|
|
exec.push(`{{degats=[[${degats.join('+')}]]}}`);
|
|
exec.push(`{{violence=[[${violence.join('+')}]]}}`);
|
|
|
|
if (devaste || bourreau || equilibre) {
|
|
const herauts = [];
|
|
|
|
if (devaste) { herauts.push(i18n_devasterAnatheme); }
|
|
if (bourreau) { herauts.push(i18n_bourreauTenebres); }
|
|
if (equilibre) { herauts.push(i18n_equilibrerBalance); }
|
|
|
|
exec.push(`{{herauts=${herauts.join(' / ')}}}`);
|
|
}
|
|
|
|
if (isConditionnelA === true) { exec.push('{{succesConditionnel=true}}'); }
|
|
|
|
if (isConditionnelD === true) { exec.push('{{degatsConditionnel=true}}'); }
|
|
|
|
if (isConditionnelV === true) { exec.push('{{violenceConditionnel=true}}'); }
|
|
|
|
const finalRoll = await startRoll(exec.join(' '));
|
|
|
|
const tJet = finalRoll.results.jet.result;
|
|
const rJet = finalRoll.results.jet.dice;
|
|
|
|
const tBonus = finalRoll.results.bonus.result;
|
|
const tExploit = finalRoll.results.Exploit.result;
|
|
|
|
const tDegats = finalRoll.results.degats.result;
|
|
const tViolence = finalRoll.results.violence.result;
|
|
|
|
const rDegats = finalRoll.results.degats.dice;
|
|
const rViolence = finalRoll.results.violence.dice;
|
|
|
|
const conditions = {
|
|
bourreau,
|
|
devaste,
|
|
equilibre,
|
|
};
|
|
|
|
const computed = updateRoll(finalRoll, rJet, tBonus, tDegats, rDegats, bonusDegats, tViolence, rViolence, bonusViolence, conditions);
|
|
|
|
finishRoll(finalRoll.rollId, computed);
|
|
|
|
if (tJet !== 0 && computed.basejet === tExploit) {
|
|
const exploitRoll = await startRoll(`$${roll}@{jetGM} &{template:simple} {{Nom=@{name}}} {{special1=${i18n_exploit}}}{{jet=[[ {[[{${cRoll.join('+')}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0]]}}`);
|
|
const rExploit = exploitRoll.results.jet.dice;
|
|
const exploitPairOrImpair = 0;
|
|
|
|
const jetExploit = rExploit.reduce((accumulateur, valeurCourante) => {
|
|
const vC = valeurCourante;
|
|
let nV = 0;
|
|
|
|
if (vC % 2 === exploitPairOrImpair) {
|
|
nV = 1;
|
|
}
|
|
|
|
return accumulateur + nV;
|
|
}, 0);
|
|
|
|
const exploitComputed = {
|
|
jet: jetExploit,
|
|
};
|
|
|
|
finishRoll(exploitRoll.rollId, exploitComputed);
|
|
}
|
|
});
|
|
|
|
on('clicked:repeating_armeMALDruidLion:combatdruidroll', async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
let attributs = [
|
|
'repeating_armeMALDruidLion_armeDruidLion',
|
|
'repeating_armeMALDruidLion_aspectDruidLion',
|
|
'MALJetModifDesComp',
|
|
'MALDruidLionPEAct',
|
|
'MALDruidLionChairBase',
|
|
'MALDruidLionChairEvol',
|
|
'MALDruidLionBeteBase',
|
|
'MALDruidLionBeteEvol',
|
|
'MALDruidLionBeteAE',
|
|
'MALDruidLionMachineBase',
|
|
'MALDruidLionMachineEvol',
|
|
'MALDruidLionMachineAE',
|
|
'MALDruidLionMasqueBase',
|
|
'MALDruidLionMasqueEvol',
|
|
'MALDruidLionMasqueAE',
|
|
];
|
|
|
|
const wpn = [
|
|
'repeating_armeMALDruidLion_druidLionBaseNom',
|
|
'repeating_armeMALDruidLion_degatDruidLion',
|
|
'repeating_armeMALDruidLion_degatBonusDruidLion',
|
|
'repeating_armeMALDruidLion_violenceDruidLion',
|
|
'repeating_armeMALDruidLion_violenceBonusDruidLion',
|
|
'repeating_armeMALDruidLion_porteeDruidLion',
|
|
];
|
|
|
|
const effets = [
|
|
'repeating_armeMALDruidLion_antiAnatheme',
|
|
'repeating_armeMALDruidLion_antiVehicule',
|
|
'repeating_armeMALDruidLion_artillerie',
|
|
'repeating_armeMALDruidLion_assassin',
|
|
'repeating_armeMALDruidLion_assassinValue',
|
|
'repeating_armeMALDruidLion_assistanceAttaque',
|
|
'repeating_armeMALDruidLion_barrage',
|
|
'repeating_armeMALDruidLion_barrageValue',
|
|
'repeating_armeMALDruidLion_bourreau',
|
|
'repeating_armeMALDruidLion_bourreauValue',
|
|
'repeating_armeMALDruidLion_cadence',
|
|
'repeating_armeMALDruidLion_cadenceValue',
|
|
'repeating_armeMALDruidLion_cadenceactif',
|
|
'repeating_armeMALDruidLion_chargeur',
|
|
'repeating_armeMALDruidLion_chargeurValue',
|
|
'repeating_armeMALDruidLion_choc',
|
|
'repeating_armeMALDruidLion_chocValue',
|
|
'repeating_armeMALDruidLion_conviction',
|
|
'repeating_armeMALDruidLion_defense',
|
|
'repeating_armeMALDruidLion_defenseValue',
|
|
'repeating_armeMALDruidLion_degatContinue',
|
|
'repeating_armeMALDruidLion_degatContinueValue',
|
|
'repeating_armeMALDruidLion_deuxMains',
|
|
'repeating_armeMALDruidLion_demoralisant',
|
|
'repeating_armeMALDruidLion_designation',
|
|
'repeating_armeMALDruidLion_destructeur',
|
|
'repeating_armeMALDruidLion_devastation',
|
|
'repeating_armeMALDruidLion_devastationValue',
|
|
'repeating_armeMALDruidLion_dispersion',
|
|
'repeating_armeMALDruidLion_dispersionValue',
|
|
'repeating_armeMALDruidLion_enChaine',
|
|
'repeating_armeMALDruidLion_esperance',
|
|
'repeating_armeMALDruidLion_excellence',
|
|
'repeating_armeMALDruidLion_fureur',
|
|
'repeating_armeMALDruidLion_guidage',
|
|
'repeating_armeMALDruidLion_guidageactif',
|
|
'repeating_armeMALDruidLion_ignoreArmure',
|
|
'repeating_armeMALDruidLion_ignoreCdF',
|
|
'repeating_armeMALDruidLion_akimbo',
|
|
'repeating_armeMALDruidLion_ambidextrie',
|
|
'repeating_armeMALDruidLion_leste',
|
|
'repeating_armeMALDruidLion_lourd',
|
|
'repeating_armeMALDruidLion_lumiere',
|
|
'repeating_armeMALDruidLion_lumiereValue',
|
|
'repeating_armeMALDruidLion_meurtrier',
|
|
'repeating_armeMALDruidLion_obliteration',
|
|
'repeating_armeMALDruidLion_orfevrerie',
|
|
'repeating_armeMALDruidLion_parasitage',
|
|
'repeating_armeMALDruidLion_parasitageValue',
|
|
'repeating_armeMALDruidLion_penetrant',
|
|
'repeating_armeMALDruidLion_penetrantValue',
|
|
'repeating_armeMALDruidLion_perceArmure',
|
|
'repeating_armeMALDruidLion_perceArmureValue',
|
|
'repeating_armeMALDruidLion_precision',
|
|
'repeating_armeMALDruidLion_reaction',
|
|
'repeating_armeMALDruidLion_reactionValue',
|
|
'repeating_armeMALDruidLion_regularite',
|
|
'repeating_armeMALDruidLion_silencieux',
|
|
'repeating_armeMALDruidLion_soumission',
|
|
'repeating_armeMALDruidLion_tenebricite',
|
|
'repeating_armeMALDruidLion_tirRafale',
|
|
'repeating_armeMALDruidLion_tirSecurite',
|
|
'repeating_armeMALDruidLion_ultraViolence',
|
|
];
|
|
|
|
const ameliorations = [
|
|
'repeating_armeMALDruidLion_chargeurGrappes',
|
|
'repeating_armeMALDruidLion_canonLong',
|
|
'repeating_armeMALDruidLion_canonRaccourci',
|
|
'repeating_armeMALDruidLion_chambreDouble',
|
|
'repeating_armeMALDruidLion_interfaceGuidage',
|
|
'repeating_armeMALDruidLion_jumelage',
|
|
'repeating_armeMALDruidLion_jumelageValue',
|
|
'repeating_armeMALDruidLion_jumelageType',
|
|
'repeating_armeMALDruidLion_lunetteIntelligente',
|
|
'repeating_armeMALDruidLion_munitionsHyperVelocite',
|
|
'repeating_armeMALDruidLion_munitionsDrone',
|
|
'repeating_armeMALDruidLion_chargeurExplosives',
|
|
'repeating_armeMALDruidLion_munitionsIEM',
|
|
'repeating_armeMALDruidLion_munitionsNonLetales',
|
|
'repeating_armeMALDruidLion_munitionsSubsoniques',
|
|
'repeating_armeMALDruidLion_pointeurLaser',
|
|
'repeating_armeMALDruidLion_protectionArme',
|
|
'repeating_armeMALDruidLion_revetementOmega',
|
|
'repeating_armeMALDruidLion_structureElement',
|
|
'repeating_armeMALDruidLion_systemeRefroidissement',
|
|
];
|
|
|
|
const special = [
|
|
'repeating_armeMALDruidLion_bDDiversTotal',
|
|
'repeating_armeMALDruidLion_bDDiversD6',
|
|
'repeating_armeMALDruidLion_bDDiversFixe',
|
|
'repeating_armeMALDruidLion_bVDiversTotal',
|
|
'repeating_armeMALDruidLion_bVDiversD6',
|
|
'repeating_armeMALDruidLion_bVDiversFixe',
|
|
'repeating_armeMALDruidLion_energie',
|
|
'repeating_armeMALDruidLion_energieValue',
|
|
'devasterAnatheme',
|
|
'bourreauTenebres',
|
|
'equilibreBalance',
|
|
];
|
|
|
|
attributs = attributs.concat(wpn, effets, ameliorations, special);
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
let isConditionnelA = false;
|
|
let isConditionnelD = false;
|
|
let isConditionnelV = false;
|
|
|
|
const arme = attrs.repeating_armeMALDruidLion_armeDruidLion;
|
|
|
|
let diceDegats = 0;
|
|
let degats = [];
|
|
const bonusDegats = [];
|
|
|
|
let diceViolence = 0;
|
|
let violence = [];
|
|
const bonusViolence = [];
|
|
|
|
const attaquesSurprises = [];
|
|
const attaquesSurprisesValue = [];
|
|
let attaquesSurprisesCondition = '';
|
|
|
|
let eASAssassin = '';
|
|
let eASAssassinValue = 0;
|
|
|
|
const energie = attrs.MALDruidLionPEAct;
|
|
const nEnergie = 'MALDruidLionPEAct';
|
|
const portee = attrs.repeating_armeMALDruidLion_porteeDruidLion;
|
|
const autresEffets = [];
|
|
const autresAmeliorations = [];
|
|
const autresSpecial = [];
|
|
|
|
const mod = +attrs.MALJetModifDesComp;
|
|
|
|
const aspect = attrs.repeating_armeMALDruidLion_aspectDruidLion;
|
|
|
|
const aspectNom = aspectCompanionsDruid[aspect];
|
|
|
|
const attrsAspects = await getAttrsAsync([
|
|
`${aspect}Base`,
|
|
`${aspect}Evol`,
|
|
`${aspect}AE`,
|
|
]);
|
|
|
|
const aspectValue = totalADruid(attrsAspects, aspect);
|
|
const AEValue = +attrsAspects[`${aspect}AE`] || 0;
|
|
|
|
const vChair = totalADruid(attrs, 'MALDruidLionChair');
|
|
|
|
const vBete = totalADruid(attrs, 'MALDruidLionBete');
|
|
const vAEBete = +attrs.MALDruidLionBeteAE;
|
|
|
|
const vMachine = totalADruid(attrs, 'MALDruidLionMachine');
|
|
const vAEMachine = +attrs.MALDruidLionMachineAE;
|
|
|
|
const vMasque = totalADruid(attrs, 'MALDruidLionMasque');
|
|
const vAEMasque = +attrs.MALDruidLionMasqueAE;
|
|
|
|
const devaste = +attrs.devasterAnatheme;
|
|
const bourreau = +attrs.bourreauTenebres;
|
|
const equilibre = +attrs.equilibreBalance;
|
|
|
|
const cRoll = [];
|
|
const AE = [];
|
|
let bonus = [];
|
|
|
|
let isDestructeur = false;
|
|
let isFureur = false;
|
|
let isMeurtrier = false;
|
|
let isUltraviolence = false;
|
|
let isTenebricide = false;
|
|
let isSurprise = false;
|
|
let isCadence = false;
|
|
|
|
let isBourreau = false;
|
|
let isDevastation = false;
|
|
let isGuidage = false;
|
|
let isRegularite = false;
|
|
|
|
let eBourreauValue = 0;
|
|
let eDevastationValue = 0;
|
|
|
|
AE.push(AEValue);
|
|
|
|
exec.push(`{{special1B=${arme}}}`);
|
|
|
|
exec.push(`{{vAE=${AEValue}}}`);
|
|
|
|
cRoll.push(aspectValue);
|
|
|
|
diceDegats = +attrs.repeating_armeMALDruidLion_degatDruidLion;
|
|
bonusDegats.push(+attrs.repeating_armeMALDruidLion_degatBonusDruidLion);
|
|
|
|
diceViolence = +attrs.repeating_armeMALDruidLion_violenceDruidLion;
|
|
bonusViolence.push(+attrs.repeating_armeMALDruidLion_violenceBonusDruidLion);
|
|
|
|
// GESTION DES BONUS DIVERS
|
|
let bChairD = Math.ceil(vChair / 2);
|
|
|
|
if (portee === '^{portee-contact}') {
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vChair=${bChairD}}}`);
|
|
}
|
|
// FIN DE GESTION DES BONUS DIVERS
|
|
|
|
// GESTION DES ASPECTS EXCEPTIONNELS
|
|
if (vAEBete > 0) {
|
|
let bonusBete = +vAEBete;
|
|
|
|
if (vAEBete > 5) { bonusBete += +vBete; }
|
|
|
|
exec.push(`{{vBeteD=+${bonusBete}}}`);
|
|
bonusDegats.push(bonusBete);
|
|
}
|
|
// FIN DE GESTION DES ASPECTS EXCEPTIONNELS
|
|
|
|
// GESTION DES EFFETS
|
|
const eAntiAnatheme = attrs.repeating_armeMALDruidLion_antiAnatheme;
|
|
const eAntiVehicule = attrs.repeating_armeMALDruidLion_antiVehicule;
|
|
const eArtillerie = attrs.repeating_armeMALDruidLion_artillerie;
|
|
const eAssassin = attrs.repeating_armeMALDruidLion_repeating_armeMALDruidLion_assassin;
|
|
const eAssassinV = attrs.repeating_armeMALDruidLion_assassinValue;
|
|
const eAssistanceAttaque = attrs.repeating_armeMALDruidLion_assistanceAttaque;
|
|
const eBarrage = attrs.repeating_armeMALDruidLion_barrage;
|
|
const eBarrageV = attrs.repeating_armeMALDruidLion_barrageValue;
|
|
const eBourreau = attrs.repeating_armeMALDruidLion_bourreau;
|
|
const eBourreauV = attrs.repeating_armeMALDruidLion_bourreauValue;
|
|
const eCadence = attrs.repeating_armeMALDruidLion_cadence;
|
|
const eCadenceV = attrs.repeating_armeMALDruidLion_cadenceValue;
|
|
const eCadenceActif = +attrs.repeating_armeMALDruidLion_cadenceactif;
|
|
const eChargeur = attrs.repeating_armeMALDruidLion_chargeur;
|
|
const eChargeurV = attrs.repeating_armeMALDruidLion_chargeurValue;
|
|
const eChoc = attrs.repeating_armeMALDruidLion_choc;
|
|
const eChocV = attrs.repeating_armeMALDruidLion_chocValue;
|
|
const eConviction = attrs.repeating_armeMALDruidLion_conviction;
|
|
const eDefense = attrs.repeating_armeMALDruidLion_defense;
|
|
const eDefenseV = attrs.repeating_armeMALDruidLion_defenseValue;
|
|
const eDegatsContinus = attrs.repeating_armeMALDruidLion_degatContinue;
|
|
const eDegatsContinusV = attrs.repeating_armeMALDruidLion_degatContinueValue;
|
|
const eDeuxMains = attrs.repeating_armeMALDruidLion_deuxMains;
|
|
const eDemoralisant = attrs.repeating_armeMALDruidLion_demoralisant;
|
|
const eDesignation = attrs.repeating_armeMALDruidLion_designation;
|
|
const eDestructeur = attrs.repeating_armeMALDruidLion_destructeur;
|
|
const eDestructeurV = 2;
|
|
const eDevastation = attrs.repeating_armeMALDruidLion_devastation;
|
|
const eDevastationV = attrs.repeating_armeMALDruidLion_devastationValue;
|
|
const eDispersion = attrs.repeating_armeMALDruidLion_dispersion;
|
|
const eDispersionV = attrs.repeating_armeMALDruidLion_dispersionValue;
|
|
const eEnChaine = attrs.repeating_armeMALDruidLion_enChaine;
|
|
const eEsperance = attrs.repeating_armeMALDruidLion_esperance;
|
|
const eExcellence = attrs.repeating_armeMALDruidLion_excellence;
|
|
const eFureur = attrs.repeating_armeMALDruidLion_fureur;
|
|
const eFureurV = 4;
|
|
const eGuidage = attrs.repeating_armeMALDruidLion_guidage;
|
|
const eGuidageActif = +attrs.repeating_armeMALDruidLion_guidageactif;
|
|
const eIgnoreArmure = attrs.repeating_armeMALDruidLion_ignoreArmure;
|
|
const eIgnoreCDF = attrs.repeating_armeMALDruidLion_ignoreCdF;
|
|
const eJAkimbo = attrs.repeating_armeMALDruidLion_akimbo;
|
|
const eJAmbidextrie = attrs.repeating_armeMALDruidLion_ambidextrie;
|
|
const eLeste = attrs.repeating_armeMALDruidLion_leste;
|
|
const eLourd = attrs.repeating_armeMALDruidLion_lourd;
|
|
const eLumiere = attrs.repeating_armeMALDruidLion_lumiere;
|
|
const eLumiereV = attrs.repeating_armeMALDruidLion_lumiereValue;
|
|
const eMeurtrier = attrs.repeating_armeMALDruidLion_meurtrier;
|
|
const eMeurtrierV = 2;
|
|
const eObliteration = attrs.repeating_armeMALDruidLion_obliteration;
|
|
const eOrfevrerie = attrs.repeating_armeMALDruidLion_orfevrerie;
|
|
const eParasitage = attrs.repeating_armeMALDruidLion_parasitage;
|
|
const eParasitageV = attrs.repeating_armeMALDruidLion_parasitageValue;
|
|
const ePenetrant = attrs.repeating_armeMALDruidLion_penetrant;
|
|
const ePenetrantV = attrs.repeating_armeMALDruidLion_penetrantValue;
|
|
const ePerceArmure = attrs.repeating_armeMALDruidLion_perceArmure;
|
|
const ePerceArmureV = attrs.repeating_armeMALDruidLion_perceArmureValue;
|
|
const ePrecision = attrs.repeating_armeMALDruidLion_precision;
|
|
const eReaction = attrs.repeating_armeMALDruidLion_reaction;
|
|
const eReactionV = attrs.repeating_armeMALDruidLion_reactionValue;
|
|
const eRegularite = attrs.repeating_armeMALDruidLion_regularite;
|
|
const eSilencieux = attrs.repeating_armeMALDruidLion_silencieux;
|
|
const eSoumission = attrs.repeating_armeMALDruidLion_soumission;
|
|
const eTenebricide = attrs.repeating_armeMALDruidLion_tenebricite;
|
|
const eTirRafale = attrs.repeating_armeMALDruidLion_tirRafale;
|
|
const eTirSecurite = attrs.repeating_armeMALDruidLion_tirSecurite;
|
|
const eUltraviolence = attrs.repeating_armeMALDruidLion_ultraViolence;
|
|
const eUltraviolenceV = 2;
|
|
|
|
if (eAntiAnatheme !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
exec.push(`{{antiAnatheme=${i18n_antiAnatheme}}}`);
|
|
exec.push(`{{antiAnathemeCondition=${i18n_antiAnathemeCondition}}}`);
|
|
}
|
|
|
|
if (eAssistanceAttaque !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{assistanceAttaque=${i18n_assistanceAttaque}}}`);
|
|
exec.push(`{{assistanceAttaqueCondition=${i18n_assistanceAttaqueCondition}}}`);
|
|
}
|
|
|
|
if (eArtillerie !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{artillerie=${i18n_artillerie}}}`);
|
|
exec.push(`{{artillerieCondition=${i18n_artillerieCondition}}}`);
|
|
}
|
|
|
|
if (eAssassin !== '0') {
|
|
eASAssassin = i18n_assassin;
|
|
eASAssassinValue = eAssassinV;
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
|
|
if (eBourreau) {
|
|
isBourreau = true;
|
|
eBourreauValue = eBourreauV;
|
|
exec.push(`{{vBourreau=${i18n_bourreau} ${eBourreauV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eCadence && eCadenceActif === 0) {
|
|
autresEffets.push(`${i18n_cadence} ${eCadenceV}`);
|
|
} else if (eCadence && eCadenceActif === 1) {
|
|
isCadence = true;
|
|
exec.push(`{{vCadence=${eCadenceV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eChoc !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{choc=${i18n_choc} ${eChocV}}}`);
|
|
exec.push(`{{chocCondition=${i18n_chocCondition}}}`);
|
|
}
|
|
|
|
if (eConviction !== 0) {
|
|
autresEffets.push(i18n_conviction);
|
|
}
|
|
|
|
if (eDemoralisant !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{demoralisant=${i18n_demoralisant}}}`);
|
|
exec.push(`{{demoralisantCondition=${i18n_demoralisantCondition}}}`);
|
|
}
|
|
|
|
if (eDestructeur !== '0') {
|
|
isConditionnelD = true;
|
|
isDestructeur = true;
|
|
exec.push(`{{destructeur=${i18n_destructeur}}}`);
|
|
exec.push(`{{destructeurValue=[[${eDestructeurV}D6]]}}`);
|
|
exec.push(`{{destructeurCondition=${i18n_destructeurCondition}}}`);
|
|
}
|
|
|
|
if (eDevastation) {
|
|
isDevastation = true;
|
|
eDevastationValue = eDevastationV;
|
|
exec.push(`{{vDevastation=${i18n_devastation} ${eDevastationV} ${i18n_inclus}}}`);
|
|
}
|
|
|
|
if (eEnChaine !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{enChaine=${i18n_enChaine}}}`);
|
|
exec.push(`{{enChaineCondition=${i18n_enChaineCondition}}}`);
|
|
}
|
|
|
|
if (eEsperance !== '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
exec.push(`{{esperance=${i18n_esperance}}}`);
|
|
exec.push(`{{esperanceConditionD=${i18n_esperanceConditionD}}}`);
|
|
exec.push(`{{esperanceConditionV=${i18n_esperanceConditionV}}}`);
|
|
}
|
|
|
|
if (eExcellence) {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{excellence=${i18n_excellence}}} {{excellenceCondition=${i18n_excellenceCondition}}}`);
|
|
}
|
|
|
|
if (eFureur !== '0') {
|
|
isConditionnelV = true;
|
|
isFureur = true;
|
|
exec.push(`{{fureur=${i18n_fureur}}}`);
|
|
exec.push(`{{fureurValue=[[${eFureurV}D6]]}}`);
|
|
exec.push(`{{fureurCondition=${i18n_fureurCondition}}}`);
|
|
}
|
|
|
|
if (eGuidage !== '0' && eGuidageActif !== 0) {
|
|
isGuidage = true;
|
|
exec.push(`{{vGuidage=${i18n_guidageInclus}}}`);
|
|
} else if (eGuidage !== '0') {
|
|
autresEffets.push(i18n_guidage);
|
|
}
|
|
|
|
if (eLeste !== '0') {
|
|
if (portee !== '^{portee-contact}') { bChairD = vChair; }
|
|
|
|
bonusDegats.push(bChairD);
|
|
exec.push(`{{vLeste=${bChairD}}}`);
|
|
}
|
|
|
|
if (eMeurtrier !== '0') {
|
|
isConditionnelD = true;
|
|
isMeurtrier = true;
|
|
exec.push(`{{meurtrier=${i18n_meurtrier}}}`);
|
|
exec.push(`{{meurtrierValue=[[${eMeurtrierV}D6]]}}`);
|
|
exec.push(`{{meurtrierCondition=${i18n_meurtrierCondition}}}`);
|
|
}
|
|
|
|
if (eObliteration !== '0') {
|
|
isConditionnelD = true;
|
|
exec.push(`{{obliteration=${i18n_obliteration}}}`);
|
|
exec.push(`{{obliterationCondition=${i18n_obliterationCondition}}}`);
|
|
}
|
|
|
|
if (eOrfevrerie !== '0') {
|
|
const vOrfevrerie = Math.ceil((vMasque / 2) + vAEMasque);
|
|
|
|
bonusDegats.push(vOrfevrerie);
|
|
exec.push(`{{vOrfevrerie=${vOrfevrerie}}}`);
|
|
}
|
|
|
|
if (eParasitage !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{parasitage=${i18n_parasitage} ${eParasitageV}}}`);
|
|
exec.push(`{{parasitageCondition=${i18n_parasitageCondition}}}`);
|
|
}
|
|
|
|
if (ePrecision !== '0') {
|
|
isConditionnelD = true;
|
|
const vPrecision = Math.ceil((vMachine / 2) + vAEMachine);
|
|
|
|
bonusDegats.push(vPrecision);
|
|
exec.push(`{{vPrecision=${vPrecision}}}`);
|
|
}
|
|
|
|
if (eRegularite) {
|
|
isRegularite = true;
|
|
exec.push('{{vRegularite=[[0]]}}');
|
|
}
|
|
|
|
if (eSilencieux !== '0') {
|
|
const totalSilencieux = Math.ceil((vMasque / 2) + vAEMasque);
|
|
|
|
attaquesSurprises.push(i18n_silencieux);
|
|
attaquesSurprisesValue.push(totalSilencieux);
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
|
|
if (eSoumission !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{soumission=${i18n_soumission}}}`);
|
|
exec.push(`{{soumissionCondition=${i18n_soumissionCondition}}}`);
|
|
}
|
|
|
|
if (eTenebricide !== '0') {
|
|
exec.push(`{{tenebricide=${i18n_tenebricide}}}`);
|
|
exec.push(`{{tenebricideConditionD=${i18n_tenebricideConditionD}}}`);
|
|
exec.push(`{{tenebricideConditionV=${i18n_tenebricideConditionV}}}`);
|
|
|
|
isTenebricide = true;
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
}
|
|
|
|
if (eTirRafale !== '0') {
|
|
exec.push(`{{tirRafale=${i18n_tirRafale}}}`);
|
|
exec.push(`{{tirRafaleCondition=${i18n_tirRafaleCondition}}}`);
|
|
|
|
isConditionnelD = true;
|
|
}
|
|
|
|
if (eUltraviolence !== '0') {
|
|
exec.push(`{{ultraviolence=${i18n_ultraviolence}}}`);
|
|
exec.push(`{{ultraviolenceValue=[[${eUltraviolenceV}D6]]}}`);
|
|
exec.push(`{{ultraviolenceCondition=${i18n_ultraviolenceCondition}}}`);
|
|
|
|
isConditionnelV = true;
|
|
isUltraviolence = true;
|
|
}
|
|
|
|
if (eAntiVehicule !== '0') { autresEffets.push(i18n_antiVehicule); }
|
|
|
|
if (eBarrage !== '0') { autresEffets.push(`${i18n_barrage} ${eBarrageV}`); }
|
|
|
|
if (eChargeur !== '0') { autresEffets.push(`${i18n_chargeur} ${eChargeurV}`); }
|
|
|
|
if (eDefense !== '0') { autresEffets.push(`${i18n_defense} ${eDefenseV}`); }
|
|
|
|
if (eDegatsContinus !== '0') { autresEffets.push(`${i18n_degatsContinus} ${eDegatsContinusV} ([[1d6]] ${i18n_tours})`); }
|
|
|
|
if (eDeuxMains !== '0') { autresEffets.push(i18n_deuxMains); }
|
|
|
|
if (eDesignation !== '0') { autresEffets.push(i18n_designation); }
|
|
|
|
if (eDispersion !== '0') { autresEffets.push(`${i18n_dispersion} ${eDispersionV}`); }
|
|
|
|
if (eIgnoreArmure !== '0') { autresEffets.push(i18n_ignoreArmure); }
|
|
|
|
if (eIgnoreCDF !== '0') { autresEffets.push(i18n_ignoreCDF); }
|
|
|
|
if (eJAkimbo !== '0') { autresEffets.push(i18n_jAkimbo); }
|
|
|
|
if (eJAmbidextrie !== '0') { autresEffets.push(i18n_jAmbidextrie); }
|
|
|
|
if (eLourd !== '0') { autresEffets.push(i18n_lourd); }
|
|
|
|
if (eLumiere !== '0') { autresEffets.push(`${i18n_lumiere} ${eLumiereV}`); }
|
|
|
|
if (ePenetrant !== '0') { autresEffets.push(`${i18n_penetrant} ${ePenetrantV}`); }
|
|
|
|
if (ePerceArmure !== '0') { autresEffets.push(`${i18n_perceArmure} ${ePerceArmureV}`); }
|
|
|
|
if (eReaction !== '0') { autresEffets.push(`${i18n_reaction} ${eReactionV}`); }
|
|
|
|
if (eTirSecurite !== '0') { autresEffets.push(i18n_tirSecurite); }
|
|
|
|
// FIN GESTION DES EFFETS
|
|
|
|
// GESTION DES AMELIORATIONS
|
|
const aChargeurGrappes = attrs.repeating_armeMALDruidLion_chargeurGrappes;
|
|
const aCanonLong = attrs.repeating_armeMALDruidLion_canonLong;
|
|
const aCanonRaccourci = attrs.repeating_armeMALDruidLion_canonRaccourci;
|
|
const aChambreDouble = attrs.repeating_armeMALDruidLion_chambreDouble;
|
|
const aInterfaceGuidage = attrs.repeating_armeMALDruidLion_interfaceGuidage;
|
|
const aJumelage = attrs.repeating_armeMALDruidLion_jumelage;
|
|
const aJumelageV = attrs.repeating_armeMALDruidLion_jumelageValue;
|
|
const aLunetteIntelligente = attrs.repeating_armeMALDruidLion_lunetteIntelligente;
|
|
const aMunitionsDrone = attrs.repeating_armeMALDruidLion_munitionsDrone;
|
|
const aMunitionsHyperVelocite = attrs.repeating_armeMALDruidLion_munitionsHyperVelocite;
|
|
const aChargeurExplosives = attrs.repeating_armeMALDruidLion_chargeurExplosives;
|
|
const aMunitionsIEM = attrs.repeating_armeMALDruidLion_munitionsIEM;
|
|
const aMunitionsNonLetales = attrs.repeating_armeMALDruidLion_munitionsNonLetales;
|
|
const aMunitionsSubsoniques = attrs.repeating_armeMALDruidLion_munitionsSubsoniques;
|
|
const aPointeurLaser = attrs.repeating_armeMALDruidLion_pointeurLaser;
|
|
const aProtectionArme = attrs.repeating_armeMALDruidLion_protectionArme;
|
|
const aRevetementOmega = attrs.repeating_armeMALDruidLion_revetementOmega;
|
|
const aStructureElement = attrs.repeating_armeMALDruidLion_structureElement;
|
|
const aSystemeRefroidissement = attrs.repeating_armeMALDruidLion_systemeRefroidissement;
|
|
|
|
if (aChargeurGrappes !== '0') {
|
|
exec.push('{{vMGrappeD=-1D6}}');
|
|
exec.push('{{vMGrappeV=+1D6}}');
|
|
diceDegats -= 1;
|
|
diceViolence += 1;
|
|
}
|
|
|
|
if (aCanonLong !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{canonLong=${i18n_canonLong}}}`);
|
|
exec.push(`{{canonLongCondition=${i18n_canonLongCondition}}}`);
|
|
}
|
|
|
|
if (aCanonRaccourci !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{canonRaccourci=${i18n_canonRaccourci}}}`);
|
|
exec.push(`{{canonRaccourciCondition=${i18n_canonRaccourciCondition}}}`);
|
|
}
|
|
|
|
if (aChambreDouble !== '0' && eCadenceActif === 1) {
|
|
if (eCadence !== '0' && eCadenceV >= 2) { autresAmeliorations.push(i18n_chambreDouble); } else {
|
|
isCadence = true;
|
|
exec.push(`{{vChambreDouble=2) ${i18n_inclus}}}`);
|
|
}
|
|
} else if (aChambreDouble !== '0' && eCadenceActif === 0) { autresAmeliorations.push(i18n_chambreDouble); }
|
|
|
|
if (aLunetteIntelligente !== '0') {
|
|
isConditionnelA = true;
|
|
exec.push(`{{lunetteIntelligente=${i18n_lunetteIntelligente}}}`);
|
|
exec.push(`{{lunetteIntelligenteCondition=${i18n_lunetteIntelligenteCondition}}}`);
|
|
}
|
|
|
|
if (aMunitionsDrone !== '0') {
|
|
exec.push('{{vMDrone=+3}}');
|
|
bonus.push(3);
|
|
}
|
|
|
|
if (aMunitionsHyperVelocite !== '0') {
|
|
if (eAssistanceAttaque !== '0') { autresAmeliorations.push(i18n_munitionsHyperVelocite); } else if (eAssistanceAttaque === '0') {
|
|
isConditionnelD = true;
|
|
isConditionnelV = true;
|
|
|
|
exec.push(`{{assistanceAttaque=${i18n_munitionsHyperVelocite}}}`);
|
|
exec.push(`{{assistanceAttaqueCondition=${i18n_assistanceAttaqueCondition}}}`);
|
|
}
|
|
}
|
|
|
|
if (aChargeurExplosives !== '0') {
|
|
exec.push('{{vMExplosiveD=+1D6}}');
|
|
exec.push('{{vMExplosiveV=-1D6}}');
|
|
diceDegats += 1;
|
|
diceViolence -= 1;
|
|
}
|
|
|
|
if (aMunitionsIEM !== '0') {
|
|
exec.push('{{vMIEMD=-1D6}}');
|
|
exec.push('{{vMIEMV=-1D6}}');
|
|
diceDegats -= 1;
|
|
diceViolence -= 1;
|
|
autresAmeliorations.push(i18n_munitionsIEMParasitage);
|
|
}
|
|
|
|
if (aMunitionsSubsoniques !== '0') {
|
|
if (eSilencieux !== '0') { autresAmeliorations.push(i18n_munitionsSubsoniques); } else if (eSilencieux === '0') {
|
|
const totalSubsonique = vDiscretion + oDiscretion;
|
|
|
|
attaquesSurprises.push(i18n_munitionsSubsoniques);
|
|
attaquesSurprisesValue.push(totalSubsonique);
|
|
|
|
if (attaquesSurprisesCondition === '') { attaquesSurprisesCondition = `{{attaqueSurpriseCondition=${i18n_attaqueSurpriseCondition}}}`; }
|
|
}
|
|
}
|
|
|
|
if (aPointeurLaser !== '0') {
|
|
exec.push('{{vMPLaser=+1}}');
|
|
bonus.push(1);
|
|
}
|
|
|
|
if (aSystemeRefroidissement !== '0') {
|
|
if (eTirRafale !== '0') { autresAmeliorations.push(`${i18n_systemeRefroidissement} (${i18n_barrage} 1)`); } else if (eTirRafale === '0') {
|
|
exec.push(`{{tirRafale=${i18n_systemeRefroidissement} + ${i18n_barrage} 1}}`);
|
|
exec.push(`{{tirRafaleCondition=${i18n_tirRafaleCondition}}}`);
|
|
}
|
|
}
|
|
|
|
if (aRevetementOmega !== '0') {
|
|
if (eASAssassinValue < 2) {
|
|
eASAssassin = i18n_revetementOmega;
|
|
eASAssassinValue = 2;
|
|
|
|
if (eASAssassinValue !== 0) { autresEffets.push(i18n_assassin); }
|
|
} else if (eASAssassinValue > 2) { autresAmeliorations.push(i18n_revetementOmega); }
|
|
}
|
|
|
|
if (aInterfaceGuidage !== '0') { autresAmeliorations.push(i18n_interfaceGuidage); }
|
|
|
|
if (aJumelage !== '0') { autresAmeliorations.push(`${i18n_jumelage} (${aJumelageV})`); }
|
|
|
|
if (aMunitionsNonLetales !== '0') { autresAmeliorations.push(i18n_munitionsNonLetales); }
|
|
|
|
if (aProtectionArme !== '0') { autresAmeliorations.push(i18n_protectionArme); }
|
|
|
|
if (aStructureElement !== '0') { autresAmeliorations.push(i18n_structureElementAlpha); }
|
|
|
|
// FIN GESTION DES AMELIORATIONS
|
|
|
|
// GESTION DES BONUS SPECIAUX
|
|
const sBonusDegats = attrs.repeating_armeMALDruidLion_bDDiversTotal;
|
|
const sBonusDegatsD6 = attrs.repeating_armeMALDruidLion_bDDiversD6;
|
|
const sBonusDegatsFixe = +attrs.repeating_armeMALDruidLion_bDDiversFixe;
|
|
|
|
const sBonusViolence = attrs.repeating_armeMALDruidLion_bVDiversTotal;
|
|
const sBonusViolenceD6 = attrs.repeating_armeMALDruidLion_bVDiversD6;
|
|
const sBonusViolenceFixe = +attrs.repeating_armeMALDruidLion_bVDiversFixe;
|
|
|
|
const sEnergie = attrs.repeating_armeMALDruidLion_energie;
|
|
const sEnergieValue = attrs.repeating_armeMALDruidLion_energieValue;
|
|
|
|
let pasDEnergie = false;
|
|
let sEnergieText = '';
|
|
let newEnergie = 0;
|
|
|
|
if (sBonusDegats !== '0') {
|
|
exec.push(`{{vMSpecialD=+${sBonusDegatsD6}D6+${sBonusDegatsFixe}}}`);
|
|
|
|
diceDegats += Number(sBonusDegatsD6);
|
|
bonusDegats.push(sBonusDegatsFixe);
|
|
}
|
|
|
|
if (sBonusViolence !== '0') {
|
|
exec.push(`{{vMSpecialV=+${sBonusViolenceD6}D6+${sBonusViolenceFixe}}}`);
|
|
|
|
diceViolence += Number(sBonusViolenceD6);
|
|
bonusViolence.push(sBonusViolenceFixe);
|
|
}
|
|
|
|
let hasEnergieRetiree = false;
|
|
let vEnergieRetiree = 0;
|
|
|
|
if (eGuidage !== 0 && eGuidageActif !== 0) {
|
|
hasEnergieRetiree = true;
|
|
vEnergieRetiree += 5;
|
|
}
|
|
|
|
if (sEnergie !== '0') {
|
|
hasEnergieRetiree = true;
|
|
vEnergieRetiree += +sEnergieValue;
|
|
}
|
|
|
|
if (hasEnergieRetiree) {
|
|
newEnergie = Number(energie) - Number(vEnergieRetiree);
|
|
|
|
autresSpecial.push(`${i18n_energieRetiree} (${vEnergieRetiree})`);
|
|
|
|
if (newEnergie === 0) {
|
|
sEnergieText = i18n_plusEnergie;
|
|
} else if (newEnergie < 0) {
|
|
newEnergie = 0;
|
|
sEnergieText = i18n_pasEnergie;
|
|
pasDEnergie = true;
|
|
}
|
|
|
|
exec.push(`{{energieR=${newEnergie}}}`);
|
|
}
|
|
// FIN DE GESTION DES BONUS SPECIAUX
|
|
|
|
exec.push(`{{cBase=${aspectNom}}}`);
|
|
|
|
if (mod !== 0) {
|
|
cRoll.push(mod);
|
|
exec.push(`{{mod=${mod}}}`);
|
|
}
|
|
|
|
if (cRoll.length === 0) { cRoll.push(0); }
|
|
|
|
bonus = bonus.concat(AE);
|
|
|
|
const pairOrImpair = isGuidage === true ? 'cs1cs3cs5cf2cf4cf6s' : 'cs2cs4cs6cf1cf3cf5s';
|
|
|
|
const malusRoll = isCadence === true ? 3 : 0;
|
|
const total = Math.max(cRoll.reduce((accumulateur, valeurCourante) => accumulateur + valeurCourante, 0) - malusRoll, 0);
|
|
|
|
const jet = `{{jet=[[ ${total}d6${pairOrImpair}]]}}`;
|
|
const baseJet = '{{basejet=[[0]]}}';
|
|
|
|
exec.push(jet);
|
|
exec.push(baseJet);
|
|
exec.push(`{{Exploit=[[${total}]]}}`);
|
|
exec.push(`{{bonus=[[${bonus.join('+')}]]}}`);
|
|
|
|
if (diceDegats < 0) { diceDegats = 0; }
|
|
|
|
degats.push(`${diceDegats}D6`);
|
|
degats = degats.concat(bonusDegats);
|
|
|
|
if (diceViolence < 0) { diceViolence = 0; }
|
|
|
|
violence.push(`${diceViolence}D6`);
|
|
violence = violence.concat(bonusViolence);
|
|
|
|
exec.push(`{{portee=${i18n_portee} ${portee}}}`);
|
|
exec.push(`{{degats=[[${degats.join('+')}]]}}`);
|
|
exec.push(`{{violence=[[${violence.join('+')}]]}}`);
|
|
|
|
if (eObliteration !== '0') {
|
|
let ASObliteration = [];
|
|
let ASValueObliteration = [];
|
|
|
|
diceDegatsObliteration = diceDegats * 6;
|
|
|
|
degatsFObliteration = _.reduce(bonusDegats, (n1, n2) => Number(n1) + Number(n2));
|
|
|
|
const vObliteration = diceDegatsObliteration + degatsFObliteration;
|
|
|
|
exec.push(`{{obliterationValue=${vObliteration}}}`);
|
|
|
|
if (eMeurtrier !== '0') { exec.push(`{{obliterationMeurtrierValue=${eMeurtrierV * 6}}}`); }
|
|
|
|
if (eDestructeur !== '0') { exec.push(`{{obliterationDestructeurValue=${eDestructeurV * 6}}}`); }
|
|
|
|
if (eASAssassinValue > 0) {
|
|
eAssassinTenebricideValue = eASAssassinValue * 6;
|
|
|
|
ASObliteration.unshift(eASAssassin);
|
|
ASValueObliteration.unshift(eAssassinTenebricideValue);
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
ASObliteration = ASObliteration.concat(attaquesSurprises);
|
|
ASValueObliteration = ASValueObliteration.concat(attaquesSurprisesValue);
|
|
}
|
|
|
|
exec.push(`{{obliterationAS=${ASObliteration.join('\n+')}}}`);
|
|
exec.push(`{{obliterationASValue=[[${ASValueObliteration.join('+')}]]}}`);
|
|
} else if (attaquesSurprises.length > 0) {
|
|
ASObliteration = ASObliteration.concat(attaquesSurprises);
|
|
ASValueObliteration = ASValueObliteration.concat(attaquesSurprisesValue);
|
|
|
|
exec.push(`{{obliterationAS=${ASTenebricide.join('\n+')}}}`);
|
|
exec.push(`{{obliterationASValue=${_.reduce(ASValueObliteration, (n1, n2) => n1 + n2, 0)}}}`);
|
|
}
|
|
}
|
|
|
|
if (eASAssassinValue > 0) {
|
|
attaquesSurprises.unshift(eASAssassin);
|
|
attaquesSurprisesValue.unshift(`${eASAssassinValue}D6`);
|
|
}
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
exec.push(`{{attaqueSurprise=${attaquesSurprises.join('\n+')}}}`);
|
|
exec.push(`{{attaqueSurpriseValue=[[${attaquesSurprisesValue.join('+')}]]}}`);
|
|
exec.push(attaquesSurprisesCondition);
|
|
isSurprise = true;
|
|
isConditionnelD = true;
|
|
}
|
|
|
|
if (eTenebricide !== '0') {
|
|
isTenebricide = true;
|
|
exec.push('{{tenebricideValueD=[[0]]}}');
|
|
exec.push('{{tenebricideValueV=[[0]]}}');
|
|
|
|
if (attaquesSurprises.length > 0) {
|
|
exec.push(`{{tenebricideAS=${attaquesSurprises.join('\n+')}}}`);
|
|
exec.push('{{tenebricideASValue=[[0]]}}');
|
|
}
|
|
}
|
|
|
|
if (autresEffets.length > 0) { exec.push(`{{effets=${autresEffets.join(' / ')}}}`); }
|
|
|
|
if (autresAmeliorations.length > 0) { exec.push(`{{ameliorations=${autresAmeliorations.join(' / ')}}}`); }
|
|
|
|
if (autresSpecial.length > 0) { exec.push(`{{special=${autresSpecial.join(' / ')}}}`); }
|
|
|
|
if (isConditionnelA === true) { exec.push('{{succesConditionnel=true}}'); }
|
|
|
|
if (isConditionnelD === true) { exec.push('{{degatsConditionnel=true}}'); }
|
|
|
|
if (isConditionnelV === true) { exec.push('{{violenceConditionnel=true}}'); }
|
|
|
|
if (pasDEnergie === false) {
|
|
const finalRoll = await startRoll(exec.join(' '));
|
|
|
|
const tJet = finalRoll.results.jet.result;
|
|
const rJet = finalRoll.results.jet.dice;
|
|
|
|
const tBonus = finalRoll.results.bonus.result;
|
|
const tExploit = finalRoll.results.Exploit.result;
|
|
|
|
const rDegats = finalRoll.results.degats.dice;
|
|
const rViolence = finalRoll.results.violence.dice;
|
|
|
|
const tDegats = finalRoll.results.degats.result;
|
|
const tViolence = finalRoll.results.violence.result;
|
|
|
|
const conditions = {
|
|
bourreau,
|
|
devaste,
|
|
equilibre,
|
|
isTenebricide,
|
|
isSurprise,
|
|
isDestructeur,
|
|
isFureur,
|
|
isMeurtrier,
|
|
isUltraviolence,
|
|
isBourreau,
|
|
isDevastation,
|
|
isRegularite,
|
|
isGuidage,
|
|
};
|
|
|
|
const conditionsValues = {
|
|
eBourreauValue,
|
|
eDevastationValue,
|
|
};
|
|
|
|
const computed = updateRoll(finalRoll, rJet, tBonus, tDegats, rDegats, bonusDegats, tViolence, rViolence, bonusViolence, conditions, conditionsValues);
|
|
|
|
finishRoll(finalRoll.rollId, computed);
|
|
|
|
if (tJet !== 0 && computed.basejet === tExploit) {
|
|
const exploitRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${i18n_exploit}}} {{jet=[[ {[[{${tJetDice}, 0}kh1]]d6cs2cs4cs6cf1cf3cf5s%2}=0]]}}`);
|
|
const rExploit = exploitRoll.results.jet.dice;
|
|
const exploitPairOrImpair = isGuidage === true ? 1 : 0;
|
|
|
|
const jetExploit = rExploit.reduce((accumulateur, valeurCourante) => {
|
|
const vC = valeurCourante;
|
|
let nV = 0;
|
|
|
|
if (vC % 2 === exploitPairOrImpair) {
|
|
nV = 1;
|
|
}
|
|
|
|
return accumulateur + nV;
|
|
}, 0);
|
|
|
|
const exploitComputed = {
|
|
jet: jetExploit,
|
|
};
|
|
|
|
finishRoll(exploitRoll.rollId, exploitComputed);
|
|
}
|
|
|
|
if (hasEnergieRetiree) {
|
|
setAttrs({
|
|
[nEnergie]: newEnergie,
|
|
});
|
|
|
|
if (newEnergie === 0) {
|
|
const noEnergieRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${arme}}} {{text=${sEnergieText}}}`);
|
|
finishRoll(noEnergieRoll.rollId, {});
|
|
}
|
|
}
|
|
} else {
|
|
finalRoll = await startRoll(`@{jetGM} &{template:simple} {{Nom=^{druid-companion-lion}}} {{special1=@{name}}} {{special1B=${arme}}} {{text=${sEnergieText}}}`);
|
|
finishRoll(finalRoll.rollId, {});
|
|
}
|
|
});
|
|
|
|
const druidRollInit = [
|
|
'druidLionInitiative', 'MALDruidLionInitiative', 'druidWolfInitiative', 'MALDruidWolfInitiative', 'druidCrowInitiative', 'MALDruidCrowInitiative',
|
|
];
|
|
|
|
druidRollInit.forEach((button) => {
|
|
on(`clicked:${button}Roll`, async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
const attributs = [
|
|
`${button}Base`,
|
|
`${button}Evol`,
|
|
'druidLionMasqueAE',
|
|
'MALDruidLionMasqueAE',
|
|
'druidWolfMasqueAE',
|
|
'MALDruidWolfMasqueAE',
|
|
];
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const exec = [];
|
|
const cRoll = [];
|
|
|
|
let total = totalADruid(attrs, button);
|
|
|
|
let masqueAE = 0;
|
|
|
|
if (button !== 'druidCrowInitiative' && button !== 'MALDruidCrowInitiative') {
|
|
if (button === 'druidLionInitiative') { masqueAE = attrs.druidLionMasqueAE; } else if (button === 'MALDruidLionInitiative') { masqueAE = +attrs.MALDruidLionMasqueAE; } else if (button === 'druidWolfInitiative') {
|
|
total = 2;
|
|
masqueAE = +attrs.druidWolfMasqueAE;
|
|
} else if (button === 'MALDruidWolfInitiative') {
|
|
total = 2;
|
|
masqueAE = +attrs.MALDruidWolfMasqueAE;
|
|
}
|
|
|
|
if (masqueAE > 5) { cRoll.push(30); } else {
|
|
cRoll.push('3D6');
|
|
cRoll.push(total);
|
|
}
|
|
} else {
|
|
cRoll.push(1);
|
|
}
|
|
|
|
exec.push(roll);
|
|
exec.push(`{{initiative=[[${cRoll.join('+')} &{tracker}]]}}`);
|
|
|
|
startRoll(exec.join(' '), (results) => {
|
|
finishRoll(
|
|
results.rollId,
|
|
{},
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
const druidRollFighter = [
|
|
'DWolfFighterRoll', 'MALDWolfFighterN1Roll',
|
|
];
|
|
|
|
druidRollFighter.forEach((button) => {
|
|
on(`clicked:${button}`, async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
const attributs = [
|
|
'devasterAnatheme',
|
|
'bourreauTenebres',
|
|
'equilibreBalance',
|
|
];
|
|
let nbreW = '';
|
|
|
|
if (button === 'DWolfFighterRoll') { nbreW = 'druidNombreCompagnon'; } else if (button === 'MALDWolfFighterN1Roll') { nbreW = 'MALDruidNombreCompagnon'; }
|
|
|
|
attributs.push(nbreW);
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
const nbre = attrs[nbreW];
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
const devaste = +attrs.devasterAnatheme;
|
|
const bourreau = +attrs.bourreauTenebres;
|
|
const equilibre = +attrs.equilibreBalance;
|
|
|
|
const degats = [];
|
|
const violence = [];
|
|
|
|
degats.push(`${nbre}D6`);
|
|
violence.push(`${nbre}D6`);
|
|
|
|
exec.push(`{{degats=[[${degats.join('+')}]]}}`);
|
|
exec.push(`{{violence=[[${violence.join('+')}]]}}`);
|
|
|
|
if (devaste || bourreau || equilibre) {
|
|
const herauts = [];
|
|
|
|
if (devaste) { herauts.push(i18n_devasterAnatheme); }
|
|
if (bourreau) { herauts.push(i18n_bourreauTenebres); }
|
|
if (equilibre) { herauts.push(i18n_equilibrerBalance); }
|
|
|
|
exec.push(`{{herauts=${herauts.join(' / ')}}}`);
|
|
}
|
|
|
|
// ROLL
|
|
|
|
const finalRoll = await startRoll(exec.join(' '));
|
|
|
|
const rDegats = finalRoll.results.degats.dice;
|
|
const rViolence = finalRoll.results.violence.dice;
|
|
|
|
const tDegats = finalRoll.results.degats.result;
|
|
const tViolence = finalRoll.results.violence.result;
|
|
|
|
const conditions = {
|
|
bourreau,
|
|
devaste,
|
|
equilibre,
|
|
};
|
|
|
|
const computed = updateRoll(finalRoll, [], 0, tDegats, rDegats, [], tViolence, rViolence, [], conditions);
|
|
|
|
finishRoll(finalRoll.rollId, computed);
|
|
});
|
|
});
|
|
|
|
const druidRollCrow = [
|
|
'druidCrowAttaque', 'MALDruidCrowAttaque',
|
|
];
|
|
|
|
druidRollCrow.forEach((button) => {
|
|
on(`clicked:${button}`, async (info) => {
|
|
const roll = info.htmlAttributes.value;
|
|
|
|
const attributs = [];
|
|
|
|
if (button === 'druidCrowAttaque') {
|
|
attributs.push('druidCrowTAttaque');
|
|
attributs.push('druidNiveauCrow');
|
|
} else if (button === 'MALDruidCrowAttaque') {
|
|
attributs.push('MALDruidCrowTAttaque');
|
|
}
|
|
|
|
const attrs = await getAttrsAsync(attributs);
|
|
|
|
let tour = 0;
|
|
let valeur = 0;
|
|
|
|
if (button === 'druidCrowAttaque') {
|
|
tour = attrs.druidCrowTAttaque;
|
|
valeur = `[[2*${attrs.druidNiveauCrow}]]`;
|
|
} else if (button === 'MALDruidCrowAttaque') {
|
|
tour = attrs.MALDruidCrowTAttaque;
|
|
valeur = 4;
|
|
}
|
|
|
|
const exec = [];
|
|
exec.push(roll);
|
|
|
|
const debordement = `${tour}*${valeur}`;
|
|
|
|
exec.push(`{{debordement=[[${debordement}]]}}`);
|
|
|
|
startRoll(exec.join(' '), (results) => {
|
|
finishRoll(
|
|
results.rollId,
|
|
{},
|
|
);
|
|
});
|
|
});
|
|
});
|