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
This commit is contained in:
65
world/races/dragon.toml
Normal file
65
world/races/dragon.toml
Normal file
@@ -0,0 +1,65 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user