aboutsummaryrefslogtreecommitdiff
path: root/internal/world/mob_rekey_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-18 18:38:35 -0400
committerhistoria <[not public]>2026-09-18 18:38:35 -0400
commit1f118d79e319da4e765502e9ca5b661772de94f1 (patch)
treebca8a3fd1e538f1c302480511e6ba872c92e10b8 /internal/world/mob_rekey_test.go
parent5ad42a51df4dcc5ccc3aa6a6d902085ce2ee4239 (diff)
downloadthehouseoficarus-1f118d79e319da4e765502e9ca5b661772de94f1.tar.gz
refactor: casino table core; fix: stake/migration/validation gaps
Diffstat (limited to 'internal/world/mob_rekey_test.go')
-rw-r--r--internal/world/mob_rekey_test.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/world/mob_rekey_test.go b/internal/world/mob_rekey_test.go
new file mode 100644
index 0000000..3a0eb85
--- /dev/null
+++ b/internal/world/mob_rekey_test.go
@@ -0,0 +1,30 @@
+package world
+
+import "testing"
+
+// TestRekeyRoomsUpdatesMobDespawnRooms: DespawnRooms is a live room reference
+// (sys_triggers compares it against the owner's current room). A room rename
+// must remap it alongside RoomID/HomeRoomID/WanderRooms, or a transient mob
+// despawns while its owner never left the allowed room.
+func TestRekeyRoomsUpdatesMobDespawnRooms(t *testing.T) {
+ s := &MobStore{instances: map[string]*MobInstance{
+ "m1": {
+ InstanceID: "m1",
+ RoomID: 1,
+ HomeRoomID: 1,
+ WanderRooms: []int{1, 5},
+ DespawnRooms: []int{1, 5},
+ },
+ }}
+ s.RekeyRooms(map[int]int{1: 3, 5: 7})
+ inst := s.instances["m1"]
+ if inst.RoomID != 3 || inst.HomeRoomID != 3 {
+ t.Fatalf("room/home = %d/%d, want 3/3", inst.RoomID, inst.HomeRoomID)
+ }
+ if got := inst.WanderRooms; len(got) != 2 || got[0] != 3 || got[1] != 7 {
+ t.Fatalf("wander_rooms = %v, want [3 7]", got)
+ }
+ if got := inst.DespawnRooms; len(got) != 2 || got[0] != 3 || got[1] != 7 {
+ t.Fatalf("despawn_rooms = %v, want [3 7]", got)
+ }
+}