Attack process path #3
@ -94,6 +94,10 @@
|
||||
"BOL.ui.misc" : "Divers",
|
||||
"BOL.ui.noWeaponName" : "Unknown Weapon",
|
||||
"BOL.ui.targetDefence": "Defence",
|
||||
"BOL.ui.applyShieldMalus": "Apply Small Shield Malus",
|
||||
"BOL.ui.shieldMalus": "Shield Malus",
|
||||
"BOL.ui.defenseScore": "Defense Score",
|
||||
"BOL.ui.defender": "Defender",
|
||||
|
||||
"BOL.featureCategory.origins": "Origines",
|
||||
"BOL.featureCategory.races": "Races",
|
||||
|
@ -96,6 +96,10 @@
|
||||
"BOL.ui.speed" : "Vitesse",
|
||||
"BOL.ui.noWeaponName" : "Arme Inconnue",
|
||||
"BOL.ui.targetDefence": "Défense",
|
||||
"BOL.ui.applyShieldMalus": "Appliquer le Malus de Petit Bouclier",
|
||||
"BOL.ui.shieldMalus": "Malus de Bouclier",
|
||||
"BOL.ui.defenseScore": "Score de Defense",
|
||||
"BOL.ui.defender": "Défenseur",
|
||||
|
||||
"BOL.featureCategory.origins": "Origines",
|
||||
"BOL.featureCategory.races": "Races",
|
||||
|
@ -69,7 +69,7 @@ export class BoLRoll {
|
||||
boons:actorData.features.boons,
|
||||
flaws:actorData.features.flaws
|
||||
};
|
||||
console.log(dialogData.careers);
|
||||
|
||||
const rollOptionContent = await renderTemplate(rollOptionTpl, dialogData);
|
||||
let d = new Dialog({
|
||||
title: label,
|
||||
@ -118,8 +118,17 @@ export class BoLRoll {
|
||||
careers: attackDef.attackerData.features.careers,
|
||||
boons: attackDef.attackerData.features.boons,
|
||||
flaws: attackDef.attackerData.features.flaws,
|
||||
defence: (attackDef.defender) ? attackDef.defender.defenseValue : 0,
|
||||
};
|
||||
if ( attackDef.defender) {
|
||||
dialogData.defence = attackDef.defender.defenseValue,
|
||||
dialogData.shieldBlock = 'none'
|
||||
let shields = attackDef.defender.shields
|
||||
for( let shield of shields) {
|
||||
dialogData.shieldBlock = (shield.data.properties.blocking.blockingAll) ? 'blockall' : 'blockone';
|
||||
dialogData.shieldAttackMalus = (shield.data.properties.blocking.malus)? shield.data.properties.blocking.malus : 1;
|
||||
dialogData.applyShieldMalus = false
|
||||
}
|
||||
}
|
||||
const rollOptionContent = await renderTemplate(rollOptionTpl, dialogData);
|
||||
let d = new Dialog({
|
||||
title: attackDef.label,
|
||||
@ -139,13 +148,20 @@ export class BoLRoll {
|
||||
const apt = html.find('#apt').val();
|
||||
const adv = html.find('#adv').val();
|
||||
const mod = html.find('#mod').val() || 0;
|
||||
|
||||
let shieldMalus = 0;
|
||||
const applyShieldMalus = html.find('#applyShieldMalus').val() || false;
|
||||
if (applyShieldMalus || dialogData.shieldBlock =='blockall') {
|
||||
shieldMalus = dialogData.shieldAttackMalus;
|
||||
}
|
||||
|
||||
let careers = html.find('#career').val();
|
||||
const career = (careers.length == 0) ? 0 : Math.max(...careers.map(i => parseInt(i)));
|
||||
const isMalus = adv < 0;
|
||||
const dicePool = (isMalus) ? 2 - parseInt(adv) : 2 + parseInt(adv);
|
||||
const attrValue = eval(`attackDef.attacker.data.data.attributes.${attr}.value`);
|
||||
const aptValue = eval(`attackDef.attacker.data.data.aptitudes.${apt}.value`);
|
||||
const modifiers = parseInt(attrValue) + parseInt(aptValue) + parseInt(mod) + parseInt(career) - dialogData.defence;
|
||||
const modifiers = parseInt(attrValue) + parseInt(aptValue) + parseInt(mod) + parseInt(career) - dialogData.defence - shieldMalus;
|
||||
const formula = (isMalus) ? dicePool + "d6kl2 + " + modifiers : dicePool + "d6kh2 + " + modifiers;
|
||||
attackDef.formula = formula;
|
||||
let r = new BoLAttackRoll(attackDef);
|
||||
|
@ -9,7 +9,7 @@
|
||||
"flags": {},
|
||||
"version": "0.8.9.0",
|
||||
"minimumCoreVersion": "0.8.6",
|
||||
"compatibleCoreVersion": "0.8.9",
|
||||
"compatibleCoreVersion": "9",
|
||||
"scripts": [],
|
||||
"esmodules": [
|
||||
"module/bol.js"
|
||||
|
@ -55,6 +55,26 @@
|
||||
</div>
|
||||
<div class="flex1 center cell">{{defence}}</div>
|
||||
</div>
|
||||
{{#if (eq shieldBlock 'blockall')}}
|
||||
<div class="flexrow" style="margin-bottom: 1px;">
|
||||
<div class="flex1 center bg-darkred">
|
||||
<label for="mod">{{localize 'BOL.ui.shieldMalus'}}</label>
|
||||
</div>
|
||||
<div class="flex1 center cell">{{shieldAttackMalus}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (eq shieldBlock 'blockone')}}
|
||||
<div class="flexrow" style="margin-bottom: 1px;">
|
||||
<div class="flex1 center bg-darkred">
|
||||
<label for="mod">{{localize 'BOL.ui.shieldMalus'}}</label>
|
||||
</div>
|
||||
<div class="flex1 center cell">
|
||||
<label class="checkbox">
|
||||
<input class="field-value" type="checkbox" id="applyShieldMalus" name="applyShieldMalus" {{checked applyShieldMalus}}> {{localize "BOL.ui.applyShieldMalus"}}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if careers.items}}
|
||||
<div class="flexrow" style="margin-bottom: 1px;">
|
||||
<div class="flex1 center bg-darkred">
|
||||
|
@ -1,11 +1,11 @@
|
||||
<form class="skill-roll-dialog">
|
||||
{{#if defender}}
|
||||
<div class="property flexrow">
|
||||
<label class="property-label">{{localize "Defender"}} : </label>
|
||||
<label class="property-label">{{localize "BOL.ui.defender"}} : </label>
|
||||
<label class="property-label">{{defender.name}}</label>
|
||||
</div>
|
||||
<div class="property flexrow">
|
||||
<label class="property-label">{{localize "Defense score"}}</label>
|
||||
<label class="property-label">{{localize "BOL.ui.defenseScore"}}</label>
|
||||
<label class="property-label">{{defender.data.aptitudes.def.value}}</label>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
Loading…
Reference in New Issue
Block a user