Iteam cleanup + less migration

This commit is contained in:
2026-03-07 19:18:03 +01:00
parent 97cd50ed12
commit c6f7a9e966
60 changed files with 1633 additions and 851 deletions

View File

@@ -10,79 +10,102 @@ export const ATTRIBUTES = {
}
export const LINEAGE_CHOICES = {
dwarf: { id: "dwarf", label: "OATHHAMMER.Lineage.Dwarf" },
human: { id: "human", label: "OATHHAMMER.Lineage.Human" },
elf: { id: "elf", label: "OATHHAMMER.Lineage.Elf" },
halfelf: { id: "halfelf", label: "OATHHAMMER.Lineage.HalfElf" },
halfling: { id: "halfling", label: "OATHHAMMER.Lineage.Halfling" }
dwarf: { id: "dwarf", label: "OATHHAMMER.Lineage.Dwarf" },
firbolg: { id: "firbolg", label: "OATHHAMMER.Lineage.Firbolg" },
halfling: { id: "halfling", label: "OATHHAMMER.Lineage.Halfling" },
"high-elf": { id: "high-elf", label: "OATHHAMMER.Lineage.HighElf" },
human: { id: "human", label: "OATHHAMMER.Lineage.Human" },
"wood-elf": { id: "wood-elf", label: "OATHHAMMER.Lineage.WoodElf" }
}
export const CLASS_CHOICES = {
fighter: { id: "fighter", label: "OATHHAMMER.Class.Fighter" },
ranger: { id: "ranger", label: "OATHHAMMER.Class.Ranger" },
wizard: { id: "wizard", label: "OATHHAMMER.Class.Wizard" },
cleric: { id: "cleric", label: "OATHHAMMER.Class.Cleric" },
rogue: { id: "rogue", label: "OATHHAMMER.Class.Rogue" },
paladin: { id: "paladin", label: "OATHHAMMER.Class.Paladin" }
berserker: { id: "berserker", label: "OATHHAMMER.Class.Berserker" },
champion: { id: "champion", label: "OATHHAMMER.Class.Champion" },
delver: { id: "delver", label: "OATHHAMMER.Class.Delver" },
knight: { id: "knight", label: "OATHHAMMER.Class.Knight" },
mage: { id: "mage", label: "OATHHAMMER.Class.Mage" },
priest: { id: "priest", label: "OATHHAMMER.Class.Priest" },
scout: { id: "scout", label: "OATHHAMMER.Class.Scout" },
soldier: { id: "soldier", label: "OATHHAMMER.Class.Soldier" },
spellblade: { id: "spellblade", label: "OATHHAMMER.Class.Spellblade" },
troubadour: { id: "troubadour", label: "OATHHAMMER.Class.Troubadour" }
}
export const OATH_TYPES = {
"oath-of-justice": { id: "oath-of-justice", label: "OATHHAMMER.Oath.Justice" },
"oath-of-courage": { id: "oath-of-courage", label: "OATHHAMMER.Oath.Courage" },
"oath-of-honor": { id: "oath-of-honor", label: "OATHHAMMER.Oath.Honor" },
"oath-of-mercy": { id: "oath-of-mercy", label: "OATHHAMMER.Oath.Mercy" },
"oath-of-truth": { id: "oath-of-truth", label: "OATHHAMMER.Oath.Truth" },
"oath-of-valor": { id: "oath-of-valor", label: "OATHHAMMER.Oath.Valor" },
"oath-of-protection": { id: "oath-of-protection", label: "OATHHAMMER.Oath.Protection" },
"oath-of-vengeance": { id: "oath-of-vengeance", label: "OATHHAMMER.Oath.Vengeance" },
"oath-of-sacrifice": { id: "oath-of-sacrifice", label: "OATHHAMMER.Oath.Sacrifice" },
"oath-of-faith": { id: "oath-of-faith", label: "OATHHAMMER.Oath.Faith" },
"oath-of-service": { id: "oath-of-service", label: "OATHHAMMER.Oath.Service" },
"oath-of-brotherhood": { id: "oath-of-brotherhood", label: "OATHHAMMER.Oath.Brotherhood" }
"oath-of-compassion": { id: "oath-of-compassion", label: "OATHHAMMER.OathType.Compassion" },
"oath-of-courage": { id: "oath-of-courage", label: "OATHHAMMER.OathType.Courage" },
"oath-of-diligence": { id: "oath-of-diligence", label: "OATHHAMMER.OathType.Diligence" },
"oath-of-faith": { id: "oath-of-faith", label: "OATHHAMMER.OathType.Faith" },
"oath-of-humility": { id: "oath-of-humility", label: "OATHHAMMER.OathType.Humility" },
"oath-of-justice": { id: "oath-of-justice", label: "OATHHAMMER.OathType.Justice" },
"oath-of-loyalty": { id: "oath-of-loyalty", label: "OATHHAMMER.OathType.Loyalty" },
"oath-of-peace": { id: "oath-of-peace", label: "OATHHAMMER.OathType.Peace" },
"oath-of-perseverance": { id: "oath-of-perseverance", label: "OATHHAMMER.OathType.Perseverance" },
"oath-of-purity": { id: "oath-of-purity", label: "OATHHAMMER.OathType.Purity" },
"oath-of-truth": { id: "oath-of-truth", label: "OATHHAMMER.OathType.Truth" },
"oath-of-wisdom": { id: "oath-of-wisdom", label: "OATHHAMMER.OathType.Wisdom" }
}
export const SORCEROUS_TRADITIONS = {
elemental: { id: "elemental", label: "OATHHAMMER.Tradition.Elemental" },
elemental: { id: "elemental", label: "OATHHAMMER.Tradition.Elemental" },
illusionist: { id: "illusionist", label: "OATHHAMMER.Tradition.Illusionist" },
imperial: { id: "imperial", label: "OATHHAMMER.Tradition.Imperial" },
infernal: { id: "infernal", label: "OATHHAMMER.Tradition.Infernal" },
runic: { id: "runic", label: "OATHHAMMER.Tradition.Runic" },
stygian: { id: "stygian", label: "OATHHAMMER.Tradition.Stygian" }
imperial: { id: "imperial", label: "OATHHAMMER.Tradition.Imperial" },
infernal: { id: "infernal", label: "OATHHAMMER.Tradition.Infernal" },
runic: { id: "runic", label: "OATHHAMMER.Tradition.Runic" },
stygian: { id: "stygian", label: "OATHHAMMER.Tradition.Stygian" }
}
export const WEAPON_TYPE_CHOICES = {
melee: "OATHHAMMER.WeaponType.Melee",
ranged: "OATHHAMMER.WeaponType.Ranged"
// Three divine traditions for miracles (p.130)
export const DIVINE_TRADITIONS = {
druidic: "OATHHAMMER.DivineTradition.Druidic",
profane: "OATHHAMMER.DivineTradition.Profane",
sanctified: "OATHHAMMER.DivineTradition.Sanctified"
}
export const DAMAGE_TYPE_CHOICES = {
slashing: "OATHHAMMER.DamageType.Slashing",
piercing: "OATHHAMMER.DamageType.Piercing",
bludgeoning: "OATHHAMMER.DamageType.Bludgeoning",
fire: "OATHHAMMER.DamageType.Fire",
cold: "OATHHAMMER.DamageType.Cold",
lightning: "OATHHAMMER.DamageType.Lightning",
acid: "OATHHAMMER.DamageType.Acid",
poison: "OATHHAMMER.DamageType.Poison",
necrotic: "OATHHAMMER.DamageType.Necrotic",
radiant: "OATHHAMMER.DamageType.Radiant"
// Elemental sub-types for Elemental tradition spells (p.103)
export const ELEMENTAL_CHOICES = {
air: "OATHHAMMER.Element.Air",
earth: "OATHHAMMER.Element.Earth",
fire: "OATHHAMMER.Element.Fire",
water: "OATHHAMMER.Element.Water",
varies: "OATHHAMMER.Element.Varies"
}
export const ATTRIBUTE_BONUS_CHOICES = {
might: "OATHHAMMER.Attribute.Might",
agility: "OATHHAMMER.Attribute.Agility",
none: "OATHHAMMER.Label.None"
// Rune types for Runic tradition spells (p.120)
export const RUNE_TYPE_CHOICES = {
armor: "OATHHAMMER.RuneType.Armor",
talisman: "OATHHAMMER.RuneType.Talisman",
warding: "OATHHAMMER.RuneType.Warding",
weapon: "OATHHAMMER.RuneType.Weapon"
}
export const RANGE_CHOICES = {
short: "OATHHAMMER.Range.Short",
medium: "OATHHAMMER.Range.Medium",
long: "OATHHAMMER.Range.Long"
// Weapon proficiency groups (from book pp.82-84)
export const WEAPON_PROFICIENCY_GROUPS = {
common: "OATHHAMMER.WeaponGroup.Common",
dueling: "OATHHAMMER.WeaponGroup.Dueling",
heavy: "OATHHAMMER.WeaponGroup.Heavy",
polearms: "OATHHAMMER.WeaponGroup.Polearms",
bows: "OATHHAMMER.WeaponGroup.Bows",
throwing: "OATHHAMMER.WeaponGroup.Throwing"
}
export const HANDS_CHOICES = {
"one-handed": "OATHHAMMER.Hands.OneHanded",
"two-handed": "OATHHAMMER.Hands.TwoHanded"
// Weapon traits (from book p.82)
export const WEAPON_TRAITS = {
block: "OATHHAMMER.WeaponTrait.Block",
brutal: "OATHHAMMER.WeaponTrait.Brutal",
clumsy: "OATHHAMMER.WeaponTrait.Clumsy",
couched: "OATHHAMMER.WeaponTrait.Couched",
deadly: "OATHHAMMER.WeaponTrait.Deadly",
fast: "OATHHAMMER.WeaponTrait.Fast",
flaming: "OATHHAMMER.WeaponTrait.Flaming",
nimble: "OATHHAMMER.WeaponTrait.Nimble",
parry: "OATHHAMMER.WeaponTrait.Parry",
reload: "OATHHAMMER.WeaponTrait.Reload",
repel: "OATHHAMMER.WeaponTrait.Repel",
stunning: "OATHHAMMER.WeaponTrait.Stunning",
sweep: "OATHHAMMER.WeaponTrait.Sweep",
"two-handed": "OATHHAMMER.WeaponTrait.TwoHanded",
versatile: "OATHHAMMER.WeaponTrait.Versatile"
}
export const CURRENCY_CHOICES = {
@@ -92,42 +115,52 @@ export const CURRENCY_CHOICES = {
}
export const ARMOR_TYPE_CHOICES = {
light: "OATHHAMMER.ArmorType.Light",
light: "OATHHAMMER.ArmorType.Light",
medium: "OATHHAMMER.ArmorType.Medium",
heavy: "OATHHAMMER.ArmorType.Heavy"
heavy: "OATHHAMMER.ArmorType.Heavy"
}
// Armor traits (p.88): Clanging = -1 Stealth; Reinforced = red dice for armor rolls
export const ARMOR_TRAITS = {
clanging: "OATHHAMMER.ArmorTrait.Clanging",
reinforced: "OATHHAMMER.ArmorTrait.Reinforced"
}
// Ammunition types (p.88): standard = arrow/bolt; bodkin = -1 armor; envenomed = poison; incendiary = flaming
export const AMMO_TYPE_CHOICES = {
arrow: "OATHHAMMER.AmmoType.Arrow",
bolt: "OATHHAMMER.AmmoType.Bolt",
stone: "OATHHAMMER.AmmoType.Stone",
javelin: "OATHHAMMER.AmmoType.Javelin",
"throwing-knife": "OATHHAMMER.AmmoType.ThrowingKnife"
standard: "OATHHAMMER.AmmoType.Standard",
bodkin: "OATHHAMMER.AmmoType.Bodkin",
envenomed: "OATHHAMMER.AmmoType.Envenomed",
incendiary: "OATHHAMMER.AmmoType.Incendiary"
}
// Equipment sub-categories matching the rulebook sections (pp.90-96)
export const EQUIPMENT_TYPE_CHOICES = {
potion: "OATHHAMMER.EquipmentType.Potion",
container: "OATHHAMMER.EquipmentType.Container",
tool: "OATHHAMMER.EquipmentType.Tool",
consumable: "OATHHAMMER.EquipmentType.Consumable",
misc: "OATHHAMMER.EquipmentType.Misc",
potion: "OATHHAMMER.EquipmentType.Potion",
container: "OATHHAMMER.EquipmentType.Container",
mount: "OATHHAMMER.EquipmentType.Mount",
"healing-supply": "OATHHAMMER.EquipmentType.HealingSupply",
food: "OATHHAMMER.EquipmentType.Food",
mount: "OATHHAMMER.EquipmentType.Mount",
vehicle: "OATHHAMMER.EquipmentType.Vehicle",
"war-machine": "OATHHAMMER.EquipmentType.WarMachine"
food: "OATHHAMMER.EquipmentType.Food",
"light-source": "OATHHAMMER.EquipmentType.LightSource",
misc: "OATHHAMMER.EquipmentType.Misc",
vehicle: "OATHHAMMER.EquipmentType.Vehicle",
animal: "OATHHAMMER.EquipmentType.Animal",
"war-machine": "OATHHAMMER.EquipmentType.WarMachine"
}
// Magic item sub-types for Focus/Talisman/Trinket (p.136)
// Weapon and Armor magic items use their respective item types with isMagic=true.
export const MAGIC_ITEM_TYPE_CHOICES = {
weapon: "OATHHAMMER.MagicItemType.Weapon",
armor: "OATHHAMMER.MagicItemType.Armor",
wondrous: "OATHHAMMER.MagicItemType.Wondrous",
potion: "OATHHAMMER.MagicItemType.Potion",
ring: "OATHHAMMER.MagicItemType.Ring",
staff: "OATHHAMMER.MagicItemType.Staff",
wand: "OATHHAMMER.MagicItemType.Wand",
scroll: "OATHHAMMER.MagicItemType.Scroll",
rod: "OATHHAMMER.MagicItemType.Rod"
focus: "OATHHAMMER.MagicItemType.Focus",
talisman: "OATHHAMMER.MagicItemType.Talisman",
trinket: "OATHHAMMER.MagicItemType.Trinket"
}
// Magic item quality (p.136): determines power and how they are found
export const MAGIC_QUALITY_CHOICES = {
lesser: "OATHHAMMER.MagicQuality.Lesser",
greater: "OATHHAMMER.MagicQuality.Greater",
legendary: "OATHHAMMER.MagicQuality.Legendary"
}
export const RARITY_CHOICES = {
@@ -138,24 +171,112 @@ export const RARITY_CHOICES = {
legendary: "OATHHAMMER.Rarity.Legendary"
}
// Two types of ability: class traits and lineage traits. No feats in Oath Hammer.
export const ABILITY_TYPE_CHOICES = {
"class-ability": "OATHHAMMER.AbilityType.ClassAbility",
"lineage-trait": "OATHHAMMER.AbilityType.LineageTrait",
feat: "OATHHAMMER.AbilityType.Feat"
"lineage-trait": "OATHHAMMER.AbilityType.LineageTrait"
}
export const CONDITION_TYPE_CHOICES = {
blinded: "OATHHAMMER.Condition.Blinded",
deafened: "OATHHAMMER.Condition.Deafened",
prone: "OATHHAMMER.Condition.Prone",
stunned: "OATHHAMMER.Condition.Stunned",
frightened: "OATHHAMMER.Condition.Frightened",
poisoned: "OATHHAMMER.Condition.Poisoned",
restrained: "OATHHAMMER.Condition.Restrained",
wounded: "OATHHAMMER.Condition.Wounded",
other: "OATHHAMMER.Condition.Other"
// When an ability's uses reset (none = passive/always on)
export const ABILITY_USAGE_PERIOD = {
none: "OATHHAMMER.UsagePeriod.None",
encounter: "OATHHAMMER.UsagePeriod.Encounter",
day: "OATHHAMMER.UsagePeriod.Day"
}
export const STATUS_EFFECTS = [
{
id: "blinded",
name: "OATHHAMMER.Condition.Blinded",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/blinded.svg",
description: "OATHHAMMER.Condition.BlindedDesc"
},
{
id: "confused",
name: "OATHHAMMER.Condition.Confused",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/confused.svg",
description: "OATHHAMMER.Condition.ConfusedDesc"
},
{
id: "dazed",
name: "OATHHAMMER.Condition.Dazed",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/dazed.svg",
description: "OATHHAMMER.Condition.DazedDesc"
},
{
id: "deafened",
name: "OATHHAMMER.Condition.Deafened",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/deafened.svg",
description: "OATHHAMMER.Condition.DeafenedDesc"
},
{
id: "demoralized",
name: "OATHHAMMER.Condition.Demoralized",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/demoralized.svg",
description: "OATHHAMMER.Condition.DemoralizedDesc"
},
{
id: "diseased",
name: "OATHHAMMER.Condition.Diseased",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/diseased.svg",
description: "OATHHAMMER.Condition.DiseasedDesc"
},
{
id: "enfeebled",
name: "OATHHAMMER.Condition.Enfeebled",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/enfeebled.svg",
description: "OATHHAMMER.Condition.EnfeebledDesc"
},
{
id: "fatigued",
name: "OATHHAMMER.Condition.Fatigued",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/fatigued.svg",
description: "OATHHAMMER.Condition.FatiguedDesc"
},
{
id: "frightened",
name: "OATHHAMMER.Condition.Frightened",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/frightened.svg",
description: "OATHHAMMER.Condition.FrightenedDesc"
},
{
id: "ignited",
name: "OATHHAMMER.Condition.Ignited",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/ignited.svg",
description: "OATHHAMMER.Condition.IgnitedDesc"
},
{
id: "inspired",
name: "OATHHAMMER.Condition.Inspired",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/inspired.svg",
description: "OATHHAMMER.Condition.InspiredDesc"
},
{
id: "invisible",
name: "OATHHAMMER.Condition.Invisible",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/invisible.svg",
description: "OATHHAMMER.Condition.InvisibleDesc"
},
{
id: "poisoned",
name: "OATHHAMMER.Condition.Poisoned",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/poisoned.svg",
description: "OATHHAMMER.Condition.PoisonedDesc"
},
{
id: "restrained",
name: "OATHHAMMER.Condition.Restrained",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/restrained.svg",
description: "OATHHAMMER.Condition.RestrainedDesc"
},
{
id: "stunned",
name: "OATHHAMMER.Condition.Stunned",
img: "systems/fvtt-oath-hammer/assets/icons/conditions/stunned.svg",
description: "OATHHAMMER.Condition.StunnedDesc"
}
]
export const ATTRIBUTE_RANK_CHOICES = { 1: "1", 2: "2", 3: "3", 4: "4" }
export const ASCII = `
@@ -176,19 +297,22 @@ export const SYSTEM = {
CLASS_CHOICES,
OATH_TYPES,
SORCEROUS_TRADITIONS,
WEAPON_TYPE_CHOICES,
DAMAGE_TYPE_CHOICES,
ATTRIBUTE_BONUS_CHOICES,
RANGE_CHOICES,
HANDS_CHOICES,
CURRENCY_CHOICES,
DIVINE_TRADITIONS,
ELEMENTAL_CHOICES,
RUNE_TYPE_CHOICES,
WEAPON_PROFICIENCY_GROUPS,
WEAPON_TRAITS,
ARMOR_TYPE_CHOICES,
ARMOR_TRAITS,
CURRENCY_CHOICES,
AMMO_TYPE_CHOICES,
EQUIPMENT_TYPE_CHOICES,
MAGIC_ITEM_TYPE_CHOICES,
MAGIC_QUALITY_CHOICES,
RARITY_CHOICES,
ABILITY_TYPE_CHOICES,
CONDITION_TYPE_CHOICES,
ABILITY_USAGE_PERIOD,
STATUS_EFFECTS,
ATTRIBUTE_RANK_CHOICES,
ASCII
}