enum CharacterGender { MALE FEMALE } enum CharacterRace { HUMAN ELF DWARF ORC GOBLIN } model User { id Int @id @default(autoincrement()) username String @unique email String @unique password String online Boolean @default(false) characters Character[] passwordResetTokens PasswordResetToken[] } model PasswordResetToken { id Int @id @default(autoincrement()) userId Int user User @relation(fields: [userId], references: [id], onDelete: Cascade) token String @unique createdAt DateTime @default(now()) } model CharacterType { id Int @id @default(autoincrement()) name String gender CharacterGender race CharacterRace isSelectable Boolean @default(false) characters Character[] spriteId String? sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model CharacterHair { id Int @id @default(autoincrement()) name String gender CharacterGender @default(MALE) isSelectable Boolean @default(false) sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) spriteId String? characters Character[] } model Character { id Int @id @default(autoincrement()) userId Int user User @relation(fields: [userId], references: [id], onDelete: Cascade) name String @unique online Boolean @default(false) role String @default("player") chats Chat[] // Position zoneId Int @default(1) zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade) positionX Int @default(0) positionY Int @default(0) rotation Int @default(0) // Customization characterTypeId Int? characterType CharacterType? @relation(fields: [characterTypeId], references: [id], onDelete: Cascade) characterHairId Int? characterHair CharacterHair? @relation(fields: [characterHairId], references: [id], onDelete: Cascade) // Inventory items CharacterItem[] equipment CharacterEquipment[] // Stats alignment Int @default(50) hitpoints Int @default(100) mana Int @default(100) level Int @default(1) experience Int @default(0) strength Int @default(10) dexterity Int @default(10) intelligence Int @default(10) wisdom Int @default(10) } model CharacterItem { id Int @id @default(autoincrement()) characterId Int character Character @relation(fields: [characterId], references: [id], onDelete: Cascade) itemId String item Item @relation(fields: [itemId], references: [id], onDelete: Cascade) quantity Int CharacterEquipment CharacterEquipment[] } model CharacterEquipment { id Int @id @default(autoincrement()) slot CharacterEquipmentSlotType characterId Int character Character @relation(fields: [characterId], references: [id], onDelete: Cascade) characterItemId Int characterItem CharacterItem @relation(fields: [characterItemId], references: [id], onDelete: Cascade) } enum CharacterEquipmentSlotType { HEAD BODY ARMS LEGS NECK RING }