Skip to content

Commit 75d3c78

Browse files
committed
update aggro/fixtures
1 parent 32f5696 commit 75d3c78

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

packages/db/prisma/schema.prisma

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,9 @@ model Mobs {
696696
classId Int? @map("class_id")
697697
race Race @default(HUMANOID)
698698
mobFlags MobFlag[]
699+
// Lua expression defining who this mob attacks on sight
700+
// Examples: "target.alignment <= -350", "target.race == 'HUMAN'", "true" (attacks all)
701+
aggroCondition String? @map("aggro_condition")
699702
effectFlags EffectFlag[]
700703
position Position @default(STANDING)
701704
defaultPosition Position @default(STANDING)
@@ -725,8 +728,7 @@ model Mobs {
725728
characterClass CharacterClass? @relation(fields: [classId], references: [id])
726729
zones Zones @relation(fields: [zoneId], references: [id], onDelete: Cascade)
727730
shops Shops[]
728-
triggers Triggers[] // Legacy direct FK (deprecated)
729-
mobTriggers MobTriggers[] // Proper many-to-many via junction table
731+
mobTriggers MobTriggers[] // Trigger attachments via junction table
730732
shopMobs ShopMobs[] // Mobs for sale at pet/mount shops
731733
// Quest system relations
732734
questsAsTrigger Quests[] @relation("questTriggerMob") // MOB trigger type quests
@@ -832,6 +834,13 @@ model Objects {
832834
concealment Int @default(0)
833835
values Json @default("{}")
834836
zoneId Int @map("zone_id")
837+
838+
// Permanent fixture: If set, this object always exists in this room (no reset needed)
839+
// Use for fountains, signs, furniture, etc. that never move or despawn
840+
fixtureRoomZoneId Int? @map("fixture_room_zone_id")
841+
fixtureRoomId Int? @map("fixture_room_id")
842+
fixtureRoom Room? @relation("roomFixtures", fields: [fixtureRoomZoneId, fixtureRoomId], references: [zoneId, id])
843+
835844
createdAt DateTime @default(now()) @map("created_at")
836845
updatedAt DateTime @updatedAt @map("updated_at")
837846
deletedAt DateTime? @map("deleted_at")
@@ -863,8 +872,7 @@ model Objects {
863872
objectResistances ObjectResistance[] // Resistance bonuses granted by this item
864873
zones Zones @relation(fields: [zoneId], references: [id], onDelete: Cascade)
865874
shopItems ShopItems[]
866-
triggers Triggers[] // Legacy direct FK (deprecated)
867-
objectTriggers ObjectTriggers[] // Proper many-to-many via junction table
875+
objectTriggers ObjectTriggers[] // Trigger attachments via junction table
868876
objectAbilities ObjectAbilities[] // Cast spells (quaff potion → cast spell)
869877
consumableEffects ConsumableEffect[] // Direct effects (eat food → apply effect)
870878
accountItems AccountItems[]
@@ -975,6 +983,7 @@ model RoomExit {
975983
roomZoneId Int @map("room_zone_id")
976984
roomId Int @map("room_id")
977985
flags ExitFlag[] @default([])
986+
defaultState ExitState @default(OPEN) @map("default_state") // State on zone reset
978987
979988
// FLAG REORGANIZATION FIELDS (NEW)
980989
// Replaces CLOSED/LOCKED runtime flags with default state (restored on zone reset)
@@ -1026,6 +1035,7 @@ model Room {
10261035
entrances RoomExit[] @relation("roomEntrances")
10271036
roomExtraDescriptions RoomExtraDescriptions[]
10281037
zones Zones @relation(fields: [zoneId], references: [id], onDelete: Cascade)
1038+
fixtures Objects[] @relation("roomFixtures") // Permanent objects in this room
10291039
// Quest system relations
10301040
questObjectives QuestObjectives[]
10311041
questTriggerRoom Quests[] @relation("questTriggerRoom")

0 commit comments

Comments
 (0)