Skip to content

Latest commit

 

History

History
130 lines (93 loc) · 3.35 KB

File metadata and controls

130 lines (93 loc) · 3.35 KB

Ability System Restoration - COMPLETE ✅

Changes Applied to schema.prisma

1. ✅ RaceAbilities Model Added (lines 665-675)

model RaceAbilities {
  id        Int           @id @default(autoincrement())
  race      Race
  abilityId Int           @map("ability_id")
  category  SkillCategory @default(SECONDARY)
  bonus     Int           @default(0)
  raceData  Races         @relation(fields: [race], references: [race], onDelete: Cascade)
  ability   Ability       @relation(fields: [abilityId], references: [id], onDelete: Cascade)

  @@unique([race, abilityId])
}

Purpose: Racial ability bonuses

  • Elves get +15 to Archery, +10 to Stealth
  • Dwarves get +20 to Mining, +15 to Smithing
  • Category system: PRIMARY, SECONDARY, RESTRICTED, FORBIDDEN

2. ✅ ObjectAbilities Model Added (lines 142-153)

model ObjectAbilities {
  id           Int     @id @default(autoincrement())
  abilityId    Int     @map("ability_id")
  level        Int     @default(1)
  objectZoneId Int     @map("object_zone_id")
  objectId     Int     @map("object_id")
  charges      Int?
  objects      Objects @relation(fields: [objectZoneId, objectId], references: [zoneId, id], onDelete: Cascade)
  ability      Ability @relation(fields: [abilityId], references: [id], onDelete: Cascade)

  @@unique([objectZoneId, objectId, abilityId])
}

Purpose: Magical items that cast abilities

  • Scrolls: Cast spell once
  • Wands: Multiple charges
  • Potions: Single use consumables
  • Magical weapons: Infinite charges

3. ✅ Updated Ability Relationships (lines 49-50)

Added two new relationships to the Ability model:

raceAbilities      RaceAbilities[]
objectAbilities    ObjectAbilities[]

4. ✅ Updated Races Relationship (line 662)

Added relationship to Races model:

raceAbilities      RaceAbilities[]

5. ✅ Updated Objects Relationship (line 614)

Added relationship to Objects model:

objectAbilities    ObjectAbilities[]

Validation

✅ Schema formatted successfully with npx prisma format ✅ No syntax errors ✅ All relationships properly defined ✅ Composite keys respected (objectZoneId + objectId)

Next Steps

  1. Create migration:

    cd /home/strider/Code/mud/muditor/packages/db
    pnpm db:migrate
  2. Generate Prisma clients:

    pnpm db:generate
  3. Seed data (examples in ABILITY_RESTORATION.md)

Design Rationale Confirmed

Auras as Effects ✅

  • No separate Auras table needed
  • Effect model with JSON params handles persistent buffs/debuffs
  • Fireball = damage effect + burning DOT effect
  • Cleaner and more flexible for seed data

Proficiency-Only Progression ✅

  • Single proficiency field (0-100)
  • Direct increments on ability use
  • Capped by character level
  • Simple, clear feedback loop
  • No intermediate XP tracking needed

Summary

The spell/skill → ability refactoring is excellent:

✅ Unified system (one model, not two) ✅ Reusable effects via composition ✅ Clean targeting with enums instead of bitmasks ✅ Extensible (add new types without schema changes) ✅ RaceAbilities restored (racial bonuses) ✅ ObjectAbilities restored (magical items) ✅ Proficiency-based progression (use-based learning) ✅ Effect composition replaces Auras (more flexible)

All original functionality preserved or improved with cleaner design.