Add initiative rolls

This commit is contained in:
2026-03-06 09:09:10 +01:00
parent 16cf35aed6
commit badfea1166
7 changed files with 55 additions and 2 deletions
@@ -1,3 +1,5 @@
import { SYSTEM } from "../../config/system.mjs"
const { HandlebarsApplicationMixin } = foundry.applications.api
export default class AwEItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) {
@@ -72,6 +74,7 @@ export default class AwEItemSheet extends HandlebarsApplicationMixin(foundry.app
context.isEditMode = this.isEditMode
context.isPlayMode = this.isPlayMode
context.isEditable = this.isEditable
context.traitSuggestions = SYSTEM.TRAITS
return context
}
+20
View File
@@ -52,6 +52,25 @@ export const ASCII = `
|___/
`
/** Default trait list extracted from the core rulebook. Open-ended: custom traits are always allowed. */
export const TRAITS = [
// Action traits
"attack", "discovered", "flow", "hypothesis", "intensive", "kit", "linguistic",
"manipulate", "review", "traversal", "velocity",
// Damage types
"acid", "bludgeoning", "cold", "electricity", "fire", "force", "mental",
"piercing", "poison", "slashing", "sonic",
// Mathematician / math traits
"electromagnetic", "geometry", "gravity", "numerical", "paradox", "probability",
// Special/narrative traits
"animal", "archetype", "aura", "auditory", "awarded", "axiom",
"design", "extradimensional", "fabricate", "gremlin",
"interdisciplinary", "large", "mishap", "number",
"plant", "prototype", "singular", "small", "teleportation",
// Field/class traits
"biologist", "chemist", "engineer", "mathematician", "physicist",
]
// Re-export all for convenience
export const SYSTEM = {
SYSTEM_ID,
@@ -61,5 +80,6 @@ export const SYSTEM = {
ABILITY_COST,
ABILITY_TYPE,
OUTCOME_LABELS,
TRAITS,
ASCII
}
+1
View File
@@ -2,3 +2,4 @@ export { default as AwEActor } from "./actor.mjs"
export { default as AwEItem } from "./item.mjs"
export { default as AwERoll } from "./roll.mjs"
export { default as AwEChatMessage } from "./chat-message.mjs"
export { default as AwECombatant } from "./combatant.mjs"
+18
View File
@@ -0,0 +1,18 @@
export default class AwECombatant extends Combatant {
/**
* Initiative = 1d20 + highest attribute modifier.
* @override
*/
getInitiativeRoll(formula) {
const actor = this.actor
if (!actor) return super.getInitiativeRoll(formula)
const attrs = actor.system?.attributes ?? {}
const mods = ["agility", "awareness", "fitness", "influence"]
.map(k => attrs[k]?.mod ?? 0)
const highest = Math.max(...mods)
const rollFormula = highest >= 0 ? `1d20 + ${highest}` : `1d20 - ${Math.abs(highest)}`
return Roll.create(rollFormula)
}
}