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:
@@ -114,8 +114,7 @@ fn cmd_players(db: &SqliteDb, args: &[String]) {
|
||||
println!(" Room: {}", p.room_id);
|
||||
println!(" Admin: {}", p.is_admin);
|
||||
println!(" Inventory: {}", p.inventory_json);
|
||||
if let Some(ref w) = p.equipped_weapon_json { println!(" Weapon: {w}"); }
|
||||
if let Some(ref a) = p.equipped_armor_json { println!(" Armor: {a}"); }
|
||||
println!(" Equipped: {}", p.equipped_json);
|
||||
let attitudes = db.load_attitudes(name);
|
||||
if !attitudes.is_empty() {
|
||||
println!(" Attitudes:");
|
||||
|
||||
Reference in New Issue
Block a user