Files
mudserver/world/races/dragon.toml
AI Agent 005c4faf08 Flexible race system with slot-based equipment and dragon race
- Expand race TOML schema: 7 stats, body shape (size/weight/custom slots),
  natural armor and attacks with damage types, resistances, traits/disadvantages,
  regen multipliers, vision types, XP rate, guild compatibility
- Replace equipped_weapon/equipped_armor with slot-based HashMap<String, Object>
- Each race defines available equipment slots; default humanoid slots as fallback
- Combat uses natural weapons/armor from race when no gear equipped
- DB migration from old weapon/armor columns to equipped_json
- Add Dragon race: huge body, custom slots (forelegs/wings/tail), fire breath,
  natural armor 8, fire immune, slow XP rate for balance
- Update all existing races with expanded fields (traits, resistances, vision, regen)
- Objects gain optional slot field; kind=weapon/armor still works as fallback
- Update chargen to display race traits, size, natural attacks, vision
- Update stats display to show equipment and natural bonuses separately
- Update TESTING.md and AGENTS.md with race/slot system documentation

Made-with: Cursor
2026-03-14 15:37:20 -06:00

66 lines
1.4 KiB
TOML

name = "Dragon"
description = "Ancient and mighty, dragons are creatures of immense power and terrifying intellect. Their scaled bodies house furnace-hot hearts and minds sharp enough to match any scholar."
metarace = "draconic"
[stats]
strength = 4
dexterity = -2
constitution = 3
intelligence = 1
wisdom = 1
perception = 2
charisma = -1
[body]
size = "huge"
weight = 2000
slots = ["head", "neck", "torso", "forelegs", "hindlegs", "tail", "wings", "main_hand", "off_hand"]
[natural]
armor = 8
[natural.attacks]
[natural.attacks.bite]
damage = 12
type = "physical"
[natural.attacks.claw]
damage = 8
type = "physical"
[natural.attacks.tail_sweep]
damage = 6
type = "physical"
[natural.attacks.fire_breath]
damage = 15
type = "fire"
cooldown_ticks = 5
traits = ["flight", "fire_breath", "darkvision", "frightful_presence", "ancient_knowledge", "treasure_sense"]
disadvantages = ["conspicuous", "slow_leveling", "large_target", "cannot_enter_small_spaces"]
[resistances]
fire = 0.0
cold = 1.5
physical = 0.7
poison = 0.3
[regen]
hp = 1.5
mana = 1.2
endurance = 0.8
[guild_compatibility]
good = ["sorcerer", "elementalist"]
average = ["warrior", "berserker"]
poor = ["thief", "bard"]
restricted = ["monk"]
[misc]
lifespan = 5000
diet = "carnivore"
xp_rate = 0.7
natural_terrain = ["mountains", "caves", "volcanic"]
vision = ["normal", "darkvision", "infravision", "thermal"]