server/prisma/schema/zone.prisma

98 lines
2.9 KiB
Plaintext

model Tile {
id String @id @default(uuid())
name String
tags Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Object {
id String @id @default(uuid())
name String
tags Json?
originX Decimal @default(0)
originY Decimal @default(0)
isAnimated Boolean @default(false)
frameSpeed Int @default(0)
frameWidth Int @default(0)
frameHeight Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ZoneObject ZoneObject[]
}
model Item {
id String @id @default(uuid())
name String
description String?
stackable Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
characters CharacterItem[]
}
model Zone {
id Int @id @default(autoincrement())
name String
width Int @default(10)
height Int @default(10)
tiles Json?
pvp Boolean @default(false)
effects ZoneEffect[]
zoneEventTiles ZoneEventTile[]
zoneEventTileTeleports ZoneEventTileTeleport[]
zoneObjects ZoneObject[]
characters Character[]
chats Chat[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model ZoneEffect {
id String @id @default(uuid())
zoneId Int
zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade)
effect String
strength Int
}
model ZoneObject {
id String @id @default(uuid())
zoneId Int
zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade)
objectId String
object Object @relation(fields: [objectId], references: [id], onDelete: Cascade)
depth Int @default(0)
isRotated Boolean @default(false)
positionX Int @default(0)
positionY Int @default(0)
}
enum ZoneEventTileType {
BLOCK
TELEPORT
NPC
ITEM
}
model ZoneEventTile {
id String @id @default(uuid())
zoneId Int
zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade)
type ZoneEventTileType
positionX Int
positionY Int
teleport ZoneEventTileTeleport?
}
model ZoneEventTileTeleport {
id String @id @default(uuid())
zoneEventTileId String @unique
zoneEventTile ZoneEventTile @relation(fields: [zoneEventTileId], references: [id], onDelete: Cascade)
toZoneId Int
toZone Zone @relation(fields: [toZoneId], references: [id], onDelete: Cascade)
toRotation Int
toPositionX Int
toPositionY Int
}