Fix spells

This commit is contained in:
2024-09-12 22:43:09 +02:00
parent 133f7aa428
commit 819548567b
99 changed files with 338 additions and 326 deletions

View File

@ -27,7 +27,7 @@ export class BoLActor extends Actor {
}
weapon.system.properties.attackModifiers = 1
weapon.system.properties.damage = "1d6M"
data.items = [ weapon ]
data.items = [weapon]
data.img = "systems/bol/ui/icons/icon-horde-token.webp"
data.prototypeToken = { texture: "systems/bol/ui/icons/icon-horde-token.webp" }
@ -79,10 +79,12 @@ export class BoLActor extends Actor {
// Configure prototype token settings
const prototypeToken = {};
if (this.type === "character") Object.assign(prototypeToken, {
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
});
this.updateSource({ prototypeToken });
if (this.type === "character") {
Object.assign(prototypeToken, {
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
});
this.updateSource({ prototypeToken });
}
}
/* -------------------------------------------- */
@ -948,16 +950,16 @@ export class BoLActor extends Actor {
this.checkNumeric(data.system.resources)
}
// Apply changes in Horde size to Token width/height
if (this.type == "horde" ) {
if (this.type == "horde") {
if (data?.system?.hordesize) { // If horde size is changed}
let newHP = data.system.hordesize * this.system.hordebasehp
if (newHP != this.system.resources.hp.value) {
data.system.resources = { hp: { value: newHP, max: newHP } } // Update HP
}
let tokenSize = this.getTokenSizeFromHordeSize(data?.system?.hordesize)
if (this.isToken && (tokenSize !== this.token.width)) {
if (this.isToken && (tokenSize !== this.token.width)) {
this.token.update({ width: tokenSize, height: tokenSize })
} else {
} else {
if (tokenSize && (tokenSize !== this.prototypeToken.width)) {
if (!foundry.utils.hasProperty(data, "prototypeToken.width")) {
data.prototypeToken ||= {};
@ -970,7 +972,7 @@ export class BoLActor extends Actor {
if (data?.system?.hordebasehp) {
let newHP = this.system.hordesize * data.system.hordebasehp
if (newHP != this.system.resources.hp.value) {
data.system.resources = { hp: { value : newHP, max: newHP} }
data.system.resources = { hp: { value: newHP, max: newHP } }
}
}
}
@ -1084,12 +1086,13 @@ export class BoLActor extends Actor {
}
/* -------------------------------------------- */
rollProtection(itemId) {
async rollProtection(itemId) {
let armor = foundry.utils.duplicate(this.items.get(itemId))
if (armor) {
let armorFormula = "max(" + armor.system.properties.soak.formula + ", 0)"
let rollArmor = new Roll(armorFormula)
rollArmor.roll({ async: false }).toMessage()
await rollArmor.roll()
rollArmor.toMessage()
}
}

View File

@ -568,6 +568,7 @@ export class BoLRoll {
icon: '<i class="fas fa-check"></i>',
label: game.i18n.localize("BOL.ui.submit"),
callback: (html) => {
console.log("Submit Roll!!!!");
if (rollData.mode == 'spell' && rollData.ppCurrent < rollData.ppCost) { // Check PP available
ui.notifications.warn("Pas assez de Points de Pouvoir !")
return

View File

@ -474,10 +474,14 @@ export class BoLUtility {
let armorFormula = defender.getArmorFormula()
rollData.rollArmor = new Roll(armorFormula)
await rollData.rollArmor.roll()
let msg = await rollData.rollArmor.toMessage({ flavor: "BOL.chat.armorRoll : " + armorFormula });
if ( game.dice3d) { // wait animation end when DsN is there
await game.dice3d.waitFor3DAnimationByMessageID(msg.id);
}
rollData.armorProtect = (rollData.rollArmor.total < 0) ? 0 : rollData.rollArmor.total
rollData.finalDamage = rollData.damageTotal - rollData.armorProtect
rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage
defender.sufferDamage(rollData.finalDamage)
await defender.sufferDamage(rollData.finalDamage)
console.log("Armor roll -> result ", rollData)
}
if (defenseMode == 'damage-without-armor') {
@ -493,13 +497,13 @@ export class BoLUtility {
await rollData.rollHero.roll()
rollData.finalDamage = rollData.damageTotal - rollData.rollHero.total - rollData.armorProtect
rollData.finalDamage = (rollData.finalDamage < 0) ? 0 : rollData.finalDamage
defender.sufferDamage(rollData.finalDamage)
await defender.sufferDamage(rollData.finalDamage)
defender.subHeroPoints(1)
}
if (defenseMode == 'hero-in-extremis') {
rollData.finalDamage = 0;
rollData.weaponHero = defender.weapons.find(item => item._id == weaponId);
defender.deleteEmbeddedDocuments("Item", [weaponId]);
await defender.deleteEmbeddedDocuments("Item", [weaponId]);
}
let defenderUser

View File

@ -10,6 +10,7 @@ System.debugMode = true;
export const BOL = {};
BOL.damageValues = {
"0": "0",
"1": "1",
"2": "2",
"3": "3",