feat: Complete character system, animated login, WebSocket sync
Character System: - Inventory system with 5,482 equipment items - Feats tab with categories and details - Actions tab with 99 PF2e actions - Item detail modal with equipment info - Feat detail modal with descriptions - Edit character modal with image cropping Auth & UI: - Animated login screen with splash → form transition - Letter-by-letter "DIMENSION 47" animation - Starfield background with floating orbs - Logo tap glow effect - "Remember me" functionality (localStorage/sessionStorage) Real-time Sync: - WebSocket gateway for character updates - Live sync for HP, conditions, inventory, equipment status, money, level Database: - Added credits field to characters - Added custom fields for items - Added feat fields and relations - Included full database backup Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -184,6 +184,9 @@ model Character {
|
||||
// Experience
|
||||
experiencePoints Int @default(0)
|
||||
|
||||
// Currency (Ironvale uses Credits instead of Gold/Silver/Copper)
|
||||
credits Int @default(0)
|
||||
|
||||
// Pathbuilder Import Data (JSON blob for original import)
|
||||
pathbuilderData Json?
|
||||
|
||||
@@ -266,6 +269,17 @@ model CharacterItem {
|
||||
containerId String? // For containers
|
||||
notes String?
|
||||
|
||||
// Player-editable: Alias/Nickname for the item
|
||||
alias String?
|
||||
|
||||
// GM-editable: Custom overrides for item properties
|
||||
customName String? // Override display name
|
||||
customDamage String? // Override damage dice (e.g. "2d6")
|
||||
customDamageType String? // Override damage type (e.g. "fire")
|
||||
customTraits String[] // Override/add traits
|
||||
customRange String? // Override range
|
||||
customHands String? // Override hands requirement
|
||||
|
||||
character Character @relation(fields: [characterId], references: [id], onDelete: Cascade)
|
||||
equipment Equipment? @relation(fields: [equipmentId], references: [id])
|
||||
}
|
||||
@@ -466,16 +480,43 @@ model NoteShare {
|
||||
// ==========================================
|
||||
|
||||
model Feat {
|
||||
id String @id @default(uuid())
|
||||
name String @unique
|
||||
traits String[]
|
||||
summary String?
|
||||
actions String?
|
||||
url String?
|
||||
level Int?
|
||||
sourceBook String?
|
||||
id String @id @default(uuid())
|
||||
name String @unique
|
||||
traits String[]
|
||||
summary String?
|
||||
description String? // Full feat description/benefit text
|
||||
actions String? // "1", "2", "3", "free", "reaction", null for passive
|
||||
url String?
|
||||
level Int? // Minimum level requirement
|
||||
sourceBook String?
|
||||
|
||||
// Feat classification
|
||||
featType String? // "General", "Skill", "Class", "Ancestry", "Archetype", "Heritage"
|
||||
rarity String? // "Common", "Uncommon", "Rare", "Unique"
|
||||
|
||||
// Prerequisites
|
||||
prerequisites String? // Text description of prerequisites
|
||||
|
||||
// For class/archetype feats
|
||||
className String? // "Fighter", "Wizard", etc.
|
||||
archetypeName String? // "Sentinel", "Medic", etc.
|
||||
|
||||
// For ancestry feats
|
||||
ancestryName String? // "Human", "Elf", etc.
|
||||
|
||||
// For skill feats
|
||||
skillName String? // "Acrobatics", "Athletics", etc.
|
||||
|
||||
// Cached German translation
|
||||
nameGerman String?
|
||||
summaryGerman String?
|
||||
|
||||
characterFeats CharacterFeat[]
|
||||
|
||||
@@index([featType])
|
||||
@@index([className])
|
||||
@@index([ancestryName])
|
||||
@@index([level])
|
||||
}
|
||||
|
||||
model Equipment {
|
||||
|
||||
Reference in New Issue
Block a user