forked from noxious/server
120 lines
3.5 KiB
Plaintext
120 lines
3.5 KiB
Plaintext
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
|
|
}
|