Fix options de combat
This commit is contained in:
		| @@ -22,6 +22,17 @@ export class BoLActor extends Actor { | ||||
|     super.prepareData() | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   isHeroAdversary() { | ||||
|     if (this.type === 'character') { | ||||
|       return true | ||||
|     } | ||||
|     if (this.type === 'encounter' && this.chartype == "adversary") { | ||||
|       return true | ||||
|     } | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   getCharType() { | ||||
|     if (this.type === 'character') { | ||||
| @@ -32,10 +43,10 @@ export class BoLActor extends Actor { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   getVillainy() { | ||||
|     if (this.type === 'character') { | ||||
|       return false | ||||
|     if (this.type === 'encounter' && this.chartype == "adversary") { | ||||
|       return true | ||||
|     } | ||||
|     return true | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
| @@ -734,7 +745,7 @@ export class BoLActor extends Actor { | ||||
|         ChatMessage.create({ | ||||
|           alias: this.name, | ||||
|           whisper: BoLUtility.getWhisperRecipientsAndGMs(this.name), | ||||
|           content: await renderTemplate('systems/bol/templates/chat/chat-vitality-zero.hbs', { name: this.name, img: this.img, hp: this.system.resources.hp.value }) | ||||
|           content: await renderTemplate('systems/bol/templates/chat/chat-vitality-zero.hbs', { name: this.name, img: this.img, hp: this.system.resources.hp.value, isHeroAdversary: this.isHeroAdversary() }) | ||||
|         }) | ||||
|       } else { | ||||
|         if (prone) { | ||||
|   | ||||
| @@ -523,6 +523,7 @@ export class BoLRoll { | ||||
|     rollData.nbBoons = 0 | ||||
|     rollData.nbFlaws = 0 | ||||
|     rollData.nbDice = 0 | ||||
|     rollData.isHeroAdversary = actor.isHeroAdversary() | ||||
|     if (rollData.shieldBlock == 'blockall') { | ||||
|       rollData.shieldMalus = rollData.shieldAttackMalus; | ||||
|     } else { | ||||
|   | ||||
| @@ -191,29 +191,6 @@ export class BoLUtility { | ||||
|     CONFIG.statusEffects = duplicate(game.bol.config.statusEffects) | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static templateData(it) { | ||||
|     return BoLUtility.data(it)?.data ?? {} | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static data(it) { | ||||
|     if (it instanceof Actor || it instanceof Item || it instanceof Combatant) { | ||||
|       return it.data; | ||||
|     } | ||||
|     return it; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static storeRoll(roll) { | ||||
|     this.rollTab[roll.id] = roll | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static getRoll(rollId) { | ||||
|     return this.rollTab[roll.id] | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static createDirectOptionList(min, max) { | ||||
|     let options = {}; | ||||
| @@ -258,7 +235,7 @@ export class BoLUtility { | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static getUsers(filter) { | ||||
|     return game.users.filter(filter).map(user => user.data._id); | ||||
|     return game.users.filter(filter).map(user => user.id); | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static getWhisperRecipients(rollMode, name) { | ||||
| @@ -522,7 +499,7 @@ export class BoLUtility { | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   static isRangedWeapon(weapon) { | ||||
|     return weapon.data.type == 'ranged' || weapon.data.thrown; | ||||
|     return weapon.system.type == 'ranged' || weapon.system.thrown; | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
| @@ -604,15 +581,15 @@ export class BoLUtility { | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static computeSpellCost(spell, nbOptCond = 0) { | ||||
|     let pp = spell.data.properties.ppcost | ||||
|     let minpp = __circle2minpp[spell.data.properties.circle] | ||||
|     let pp = spell.system.properties.ppcost | ||||
|     let minpp = __circle2minpp[spell.system.properties.circle] | ||||
|     pp = (pp - nbOptCond < minpp) ? minpp : pp - nbOptCond | ||||
|     return pp | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static getDamageFormula(weaponData, fightOption) { | ||||
|     let upgradeDamage = (fightOption && fightOption.data.properties.fightoptiontype == "twoweaponsatt") | ||||
|     let upgradeDamage = (fightOption && fightOption.system.properties.fightoptiontype == "twoweaponsatt") | ||||
|     let damageString = weaponData.properties.damage | ||||
|     let modifier = weaponData.properties.damageModifiers ?? 0 | ||||
|     let multiplier = weaponData.properties.damageMultiplier ?? 1 | ||||
|   | ||||
| @@ -118,7 +118,7 @@ export const registerHandlebarsHelpers = function () { | ||||
|   }) | ||||
|   Handlebars.registerHelper('includesKey', function (items, type, key) { | ||||
|     // console.log(items); | ||||
|     return items.filter(i => i.type === type).map(i => i.data.key).includes(key); | ||||
|     return items.filter(i => i.type === type).map(i => i.system.key).includes(key); | ||||
|   }) | ||||
|   Handlebars.registerHelper('includes', function (array, val) { | ||||
|     return array.includes(val); | ||||
|   | ||||
| @@ -49,7 +49,7 @@ export default function registerHooks() { | ||||
|             let macro = game.macros.entities.find(m => (m.name === actor.name) && (m.command === command)); | ||||
|             if (!macro) { | ||||
|                 macro = await Macro.create({ | ||||
|                     name: actor.data.name, | ||||
|                     name: actor.name, | ||||
|                     type: "script", | ||||
|                     img: "icons/svg/dice-target.svg", | ||||
|                     command: command | ||||
| @@ -65,9 +65,9 @@ export default function registerHooks() { | ||||
|             let macro = game.macros.entities.find(m => (m.name === journal.name) && (m.command === command)); | ||||
|             if (!macro) { | ||||
|                 macro = await Macro.create({ | ||||
|                     name: journal.data.name, | ||||
|                     name: journal.name, | ||||
|                     type: "script", | ||||
|                     img: (journal.data.img) ? journal.data.img : "icons/svg/book.svg", | ||||
|                     img: (journal.img) ? journal.img : "icons/svg/book.svg", | ||||
|                     command: command | ||||
|                 }, {displaySheet: false}) | ||||
|                 game.user.assignHotbarMacro(macro, slot); | ||||
|   | ||||
| @@ -37,13 +37,13 @@ export class Macros { | ||||
|         }; | ||||
|  | ||||
|         if(rollType === "attribute") { | ||||
|             let attribute = eval(`actor.data.data.attributes.${key}`); | ||||
|             let attribute = eval(`actor.system.attributes.${key}`); | ||||
|             let rollLabel = (attribute.label) ? game.i18n.localize(attribute.label) : null; | ||||
|             let description = actor.name + " - " + game.i18n.localize('BOL.ui.attributeCheck') + " - " + game.i18n.localize(attribute.label) ; | ||||
|             BoLRoll.attributeRollDialog(actor, actorData, attribute, rollLabel, description, adv, mod); | ||||
|         } | ||||
|         else if(rollType === "aptitude") { | ||||
|             let aptitude = eval(`actor.data.data.aptitudes.${key}`); | ||||
|             let aptitude = eval(`actor.system.aptitudes.${key}`); | ||||
|             let rollLabel = (aptitude.label) ? game.i18n.localize(aptitude.label) : null; | ||||
|             let description = actor.name + " - " + game.i18n.localize('BOL.ui.aptitudeCheck') + " - " + game.i18n.localize(aptitude.label) ; | ||||
|             BoLRoll.aptitudeRollDialog(actor, actorData, aptitude, rollLabel, description, adv, mod); | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|   ], | ||||
|   "url": "https://www.uberwald.me/gitea/public/bol", | ||||
|   "license": "LICENSE.txt", | ||||
|   "version": "10.5.12", | ||||
|   "version": "10.5.13", | ||||
|   "compatibility": { | ||||
|     "minimum": "10", | ||||
|     "verified": "10" | ||||
| @@ -202,7 +202,7 @@ | ||||
|   ], | ||||
|   "socket": true, | ||||
|   "manifest": "https://www.uberwald.me/gitea/public/bol/raw/v10/system.json", | ||||
|   "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v10.5.12.zip", | ||||
|   "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v10.5.13.zip", | ||||
|   "background": "systems/bol/ui/page_accueil.webp", | ||||
|   "gridDistance": 1.5, | ||||
|   "gridUnits": "m", | ||||
|   | ||||
| @@ -5,18 +5,23 @@ | ||||
|  | ||||
| <div class="flexrow"> | ||||
|  | ||||
|   {{#if (eq hp 0)}} | ||||
|   {{localize "BOL.chat.vitalityzero" name=name hp=hp}} | ||||
|     <br>{{localize "BOL.chat.vitalityheroism"}} | ||||
|     <br>{{localize "BOL.chat.vitalityheroismhint"}} | ||||
|   {{else}} | ||||
|     {{localize "BOL.chat.vitalitydying" name=name hp=hp}} | ||||
|     <br>{{localize "BOL.chat.vitalitydyingheroism"}} | ||||
|   {{/if}} | ||||
|   {{#if isHeroAdversary}} | ||||
|     {{#if (eq hp 0)}} | ||||
|     {{localize "BOL.chat.vitalityzero" name=name hp=hp}} | ||||
|       <br>{{localize "BOL.chat.vitalityheroism"}} | ||||
|       <br>{{localize "BOL.chat.vitalityheroismhint"}} | ||||
|     {{else}} | ||||
|       {{localize "BOL.chat.vitalitydying" name=name hp=hp}} | ||||
|       <br>{{localize "BOL.chat.vitalitydyingheroism"}} | ||||
|     {{/if}} | ||||
|  | ||||
|   {{#if (lt hp -5)}} | ||||
|   <br><strong>{{localize "BOL.chat.isdead" name=name}}</strong> | ||||
|   <br>{{localize "BOL.chat.epitaph"}} | ||||
|     {{#if (lt hp -5)}} | ||||
|     <br><strong>{{localize "BOL.chat.isdead" name=name}}</strong> | ||||
|     <br>{{localize "BOL.chat.epitaph"}} | ||||
|     {{/if}}  | ||||
|   {{else}} | ||||
|     <br><strong>{{localize "BOL.chat.isdead" name=name}}</strong> | ||||
|     <br>{{localize "BOL.chat.epitaph"}} | ||||
|   {{/if}} | ||||
|  | ||||
| </div> | ||||
|   | ||||
| @@ -8,13 +8,15 @@ | ||||
| <button class="damage-handling" data-defense-mode="damage-with-armor" data-attack-id="{{attackId}}">{{localize "BOL.chat.witharmor"}}</button> | ||||
| <button class="damage-handling" data-defense-mode="damage-without-armor" data-attack--id="{{attackId}}">{{localize "BOL.chat.withoutarmor"}}</button> | ||||
|  | ||||
| {{#if defender.system.resources.hero.value}} | ||||
| <button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button> | ||||
| {{#if isHeroAdversary}} | ||||
|   {{#if (gt defender.system.resources.hero.value 0)}} | ||||
|     <button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button> | ||||
|  | ||||
| {{#each defenderWeapons as |weapon idx|}} | ||||
| <button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button> | ||||
| {{/each}} | ||||
|     {{#each defenderWeapons as |weapon idx|}} | ||||
|     <button class="damage-handling" data-defense-mode="hero-in-extremis" data-attack-id="{{@root.attackId}}" data-weapon-id="{{weapon._id}}">{{localize "BOL.chat.splinteredshield" name=weapon.name}}</button> | ||||
|     {{/each}} | ||||
|   {{/if}} | ||||
| {{/if}} | ||||
|  | ||||
| <button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize "BOL.chat.nodamage"}}</button> | ||||
|  | ||||
| {{/if}} | ||||
		Reference in New Issue
	
	Block a user