Add spells rolls and enhance CSS styling

This commit is contained in:
2026-01-12 10:45:20 +01:00
parent e75824cd20
commit 0bc6b43ffe
29 changed files with 2428 additions and 878 deletions
+18 -39
View File
@@ -1,4 +1,6 @@
import PrismRPGUtils from "../utils.mjs"
import PrismRPGRoll from "./roll.mjs"
export default class PrismRPGActor extends Actor {
static async create(data, options) {
@@ -42,31 +44,12 @@ export default class PrismRPGActor extends Actor {
}
/* *************************************************/
// This method is no longer needed in D&D 5e style system
// Weapon proficiency is handled through character class/race features
getBestWeaponClassSkill(skills, rollType, multiplier = 1.0) {
let maxValue = 0
let goodSkill = skills[0]
for (let s of skills) {
if (rollType === "weapon-attack") {
if (s.system.weaponBonus.attack > maxValue) {
maxValue = Number(s.system.weaponBonus.attack)
goodSkill = s
}
}
if (rollType === "weapon-defense") {
if (s.system.weaponBonus.defense > maxValue) {
maxValue = Number(s.system.weaponBonus.defense)
goodSkill = s
}
}
if (rollType.includes("weapon-damage")) {
if (s.system.weaponBonus.damage > maxValue) {
maxValue = Number(s.system.weaponBonus.damage)
goodSkill = s
}
}
}
goodSkill.weaponSkillModifier = maxValue * multiplier
return goodSkill
// In D&D 5e, we don't need weapon skills with bonuses
// Just return the first skill (or could be removed entirely)
return skills[0]
}
/* *************************************************/
@@ -150,6 +133,7 @@ export default class PrismRPGActor extends Actor {
break
case "spell-attack":
case "spell-power":
case "spell-cast":
case "miracle-attack":
case "miracle-power":
rollTarget = this.items.find((i) => (i.type === "miracle" || i.type === "spell") && i.id === rollKey)
@@ -164,8 +148,7 @@ export default class PrismRPGActor extends Actor {
break;
case "weapon-damage-small":
case "weapon-damage-medium":
case "weapon-attack":
case "weapon-defense": {
case "weapon-attack": {
let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey)
let skill
let skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
@@ -195,19 +178,15 @@ export default class PrismRPGActor extends Actor {
ui.notifications.warn(game.i18n.localize("PRISMRPG.Notifications.skillNotFound"))
return
}
rollTarget = skill
rollTarget.weapon = weapon
rollTarget.weaponSkillModifier = skill.weaponSkillModifier
rollTarget.rollKey = rollKey
rollTarget.combat = foundry.utils.duplicate(this.system.combat)
if (rollType === "weapon-damage-small" || rollType === "weapon-damage-medium") {
rollTarget.grantedDice = this.system.granted.damageDice
}
if (rollType === "weapon-attack") {
rollTarget.grantedDice = this.system.granted.attackDice
}
if (rollType === "weapon-defense") {
rollTarget.grantedDice = this.system.granted.defenseDice
// Create a plain object for rollTarget to ensure weapon data is preserved
rollTarget = {
...skill.toObject(),
weapon: weapon.toObject(),
rollKey: rollKey,
combat: foundry.utils.duplicate(this.system.combat),
strMod: PrismRPGRoll.getAbilityModifier(this.system.characteristics.str.value),
dexMod: PrismRPGRoll.getAbilityModifier(this.system.characteristics.dex.value)
}
}
break