Corrections sur encaissement

This commit is contained in:
LeRatierBretonnien 2023-09-16 09:40:08 +02:00
parent f1a3f2df36
commit ade88fb54b
5 changed files with 35 additions and 33 deletions

View File

@ -61,7 +61,7 @@ export class BoLActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
getInitiativeMalus() { getInitiativeMalus() {
if ( this.type === 'encounter' && (this.chartype == "adversary" || this.chartype == "tough")) { if (this.type === 'encounter' && (this.chartype == "adversary" || this.chartype == "tough")) {
return this.system.aptitudes.init.value return this.system.aptitudes.init.value
} }
return 0 return 0
@ -103,12 +103,12 @@ export class BoLActor extends Actor {
let newVitality = 10 + this.system.attributes.vigor.value + this.system.resources.hp.bonus let newVitality = 10 + this.system.attributes.vigor.value + this.system.resources.hp.bonus
if (this.system.resources.hp.max != newVitality) { if (this.system.resources.hp.max != newVitality) {
let actor = this let actor = this
setTimeout( function() { actor.update({ 'system.resources.hp.max': newVitality }) }, 800 ) setTimeout(function () { actor.update({ 'system.resources.hp.max': newVitality }) }, 800)
} }
let newPower = 10 + this.system.attributes.mind.value + this.system.resources.power.bonus let newPower = 10 + this.system.attributes.mind.value + this.system.resources.power.bonus
if (this.system.resources.power.max != newPower) { if (this.system.resources.power.max != newPower) {
let actor = this let actor = this
setTimeout( function() { actor.update({ 'system.resources.power.max': newPower }) }, 800 ) setTimeout(function () { actor.update({ 'system.resources.power.max': newPower }) }, 800)
} }
} }
} }
@ -130,16 +130,16 @@ export class BoLActor extends Actor {
get details() { get details() {
return this.system.details return this.system.details
} }
addEffectModifiers( myList, dataPath) { addEffectModifiers(myList, dataPath) {
for (let attr of myList) { for (let attr of myList) {
attr.numModifier = 0 attr.numModifier = 0
attr.diceModifier = "" attr.diceModifier = ""
let effects = this.items.filter( i => i.type === "feature" && i.system.subtype === "boleffect" && i.system.properties.identifier == dataPath+attr.key) let effects = this.items.filter(i => i.type === "feature" && i.system.subtype === "boleffect" && i.system.properties.identifier == dataPath + attr.key)
for (let effect of effects) { for (let effect of effects) {
if ( Number(effect.system.properties.modifier)) { if (Number(effect.system.properties.modifier)) {
attr.numModifier += Number(effect.system.properties.modifier) attr.numModifier += Number(effect.system.properties.modifier)
} else { } else {
attr.diceModifier += "+"+effect.system.properties.modifier attr.diceModifier += "+" + effect.system.properties.modifier
} }
} }
} }
@ -523,7 +523,7 @@ export class BoLActor extends Actor {
} }
if (rollData.horoscopeType == "major") { if (rollData.horoscopeType == "major") {
let actorHoroscope = this let actorHoroscope = this
if(rollData.targetId) { if (rollData.targetId) {
let token = game.scenes.current.tokens.get(rollData.targetId) let token = game.scenes.current.tokens.get(rollData.targetId)
actorHoroscope = token.actor actorHoroscope = token.actor
} }
@ -607,16 +607,18 @@ export class BoLActor extends Actor {
/*-------------------------------------------- */ /*-------------------------------------------- */
heroReroll() { heroReroll() {
if (this.type == 'character') { if (this.type == 'character' || this.system.villainy == 'adversary') {
return this.system.resources.hero.value > 0; return this.system.resources.hero.value > 0;
} else {
if (this.system.villainy == 'adversary') {
return this.system.resources.hero.value > 0;
}
} }
return false return false
} }
/*-------------------------------------------- */
getHeroPoints() {
if (this.type == 'character' || this.system.villainy == 'adversary') {
return this.system.resources.hero.value
}
return 0
}
/*-------------------------------------------- */ /*-------------------------------------------- */
getResourcesFromType() { getResourcesFromType() {
let resources = {}; let resources = {};
@ -842,7 +844,7 @@ export class BoLActor extends Actor {
let msg = await ChatMessage.create({ let msg = await ChatMessage.create({
alias: this.name, alias: this.name,
whisper: BoLUtility.getWhisperRecipientsAndGMs(this.name), whisper: BoLUtility.getWhisperRecipientsAndGMs(this.name),
content: game.i18n.format( "BOL.chat.inforecup", {name: this.name, recupHP: recupHP} ) content: game.i18n.format("BOL.chat.inforecup", { name: this.name, recupHP: recupHP })
}) })
} }
@ -860,12 +862,12 @@ export class BoLActor extends Actor {
} }
/*-------------------------------------------- */ /*-------------------------------------------- */
checkNumeric(myObject) { checkNumeric(myObject) {
if ( myObject) { if (myObject) {
for (let key in myObject) { for (let key in myObject) {
if ( myObject[key].value === null ) { if (myObject[key].value === null) {
myObject[key].value = 0 myObject[key].value = 0
} }
if ( myObject[key].value === NaN ) { if (myObject[key].value === NaN) {
myObject[key].value = 0 myObject[key].value = 0
} }
} }
@ -893,7 +895,7 @@ export class BoLActor extends Actor {
fvttInit = 5 fvttInit = 5
if (!rollData) { if (!rollData) {
if (isCombat) { if (isCombat) {
if (game.user.isGM ) { if (game.user.isGM) {
if (this.hasPlayerOwner) { if (this.hasPlayerOwner) {
game.socket.emit("system.bol", { name: "msg_request_init_roll", data: { actorId: this.id, combatData } }) game.socket.emit("system.bol", { name: "msg_request_init_roll", data: { actorId: this.id, combatData } })
} else { } else {

View File

@ -491,6 +491,7 @@ export class BoLRoll {
if (defender) { // If target is selected if (defender) { // If target is selected
rollData.defence = defender.defenseValue rollData.defence = defender.defenseValue
rollData.armorMalus = defender.armorMalusValue rollData.armorMalus = defender.armorMalusValue
rollData.defenderHeroPoints = defender.getHeroPoints()
rollData.shieldBlock = 'none' rollData.shieldBlock = 'none'
let shields = defender.shields let shields = defender.shields
//console.log("Defender stats", defender) //console.log("Defender stats", defender)
@ -578,7 +579,7 @@ export class BoLRoll {
const isMalus = (rollData.bmDice < 0) const isMalus = (rollData.bmDice < 0)
let rollbase = rollData.attrValue + rollData.aptValue let rollbase = rollData.attrValue + rollData.aptValue
if (rollData.weapon && rollData.weapon.system.properties.onlymodifier) { if (rollData.weapon?.system.properties.onlymodifier) {
rollbase = 0 rollbase = 0
} }
let diceData = BoLUtility.getDiceData() let diceData = BoLUtility.getDiceData()

View File

@ -611,6 +611,7 @@ export class BoLUtility {
attackId: rollData.id, attackId: rollData.id,
attacker: rollData.attacker, attacker: rollData.attacker,
defender: defender, defender: defender,
defenderHeroPoints:defender.getHeroPoints(),
defenderWeapons: defenderWeapons, defenderWeapons: defenderWeapons,
damageTotal: rollData.damageTotal, damageTotal: rollData.damageTotal,
damagesIgnoresArmor: rollData.damagesIgnoresArmor, damagesIgnoresArmor: rollData.damagesIgnoresArmor,

View File

@ -14,7 +14,7 @@
], ],
"url": "https://www.uberwald.me/gitea/public/bol", "url": "https://www.uberwald.me/gitea/public/bol",
"license": "LICENSE.txt", "license": "LICENSE.txt",
"version": "11.0.13", "version": "11.0.14",
"compatibility": { "compatibility": {
"minimum": "10", "minimum": "10",
"verified": "11" "verified": "11"
@ -202,7 +202,7 @@
], ],
"socket": true, "socket": true,
"manifest": "https://www.uberwald.me/gitea/public/bol/raw/v10/system.json", "manifest": "https://www.uberwald.me/gitea/public/bol/raw/v10/system.json",
"download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v11.0.13.zip", "download": "https://www.uberwald.me/gitea/public/bol/archive/bol-v11.0.14.zip",
"background": "systems/bol/ui/page_accueil.webp", "background": "systems/bol/ui/page_accueil.webp",
"gridDistance": 1.5, "gridDistance": 1.5,
"gridUnits": "m", "gridUnits": "m",

View File

@ -8,14 +8,12 @@
<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-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> <button class="damage-handling" data-defense-mode="damage-without-armor" data-attack--id="{{attackId}}">{{localize "BOL.chat.withoutarmor"}}</button>
{{#if isHeroAdversary}} {{#if (gt defenderHeroPoints 0)}}
{{#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> <button class="damage-handling" data-defense-mode="hero-reduce-damage" data-attack-id="{{attackId}}">{{localize "BOL.chat.shakeoff"}}</button>
{{#each defenderWeapons as |weapon idx|}} {{#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> <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}}
{{/if}}
{{/if}} {{/if}}
<button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize "BOL.chat.nodamage"}}</button> <button class="damage-handling" data-defense-mode="damage-not-applied" data-attack-id="{{attackId}}">{{localize "BOL.chat.nodamage"}}</button>