Give every NPC a race and class, resolved at spawn time

NPCs can now optionally specify race and class in their TOML. When
omitted, race is randomly selected from non-hidden races and class is
determined by the race's default_class or picked randomly from
compatible non-hidden classes. Race/class are re-rolled on each
respawn for NPCs without fixed values, so killing the barkeep may
bring back a different race next time.

New hidden content (excluded from character creation):
- Beast race: for animals (rats, etc.) with feral stats and no
  equipment slots
- Peasant class: weak default for humanoid NPCs
- Creature class: default for beasts/animals

Existing races gain default_class fields (humanoids → peasant,
beast → creature, dragon → random compatible). Look and examine
commands now display NPC race and class.

Made-with: Cursor
This commit is contained in:
AI Agent
2026-03-14 16:32:27 -06:00
parent 598360ac95
commit 7b6829b1e8
17 changed files with 240 additions and 38 deletions

40
world/races/beast.toml Normal file
View File

@@ -0,0 +1,40 @@
name = "Beast"
description = "A wild creature driven by instinct and survival."
metarace = "animal"
hidden = true
default_class = "class:creature"
[stats]
strength = 0
dexterity = 1
constitution = 1
intelligence = -4
wisdom = -2
perception = 2
charisma = -3
[body]
size = "small"
weight = 10
slots = []
[natural]
armor = 0
[natural.attacks.bite]
damage = 4
type = "physical"
traits = ["feral", "keen_senses"]
disadvantages = ["no_speech", "no_equipment"]
[regen]
hp = 1.2
mana = 0.0
endurance = 1.5
[misc]
lifespan = 15
diet = "omnivore"
xp_rate = 1.0
vision = ["normal", "low_light"]