diff options
Diffstat (limited to 'internal/world/room_migrate.go')
| -rw-r--r-- | internal/world/room_migrate.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/internal/world/room_migrate.go b/internal/world/room_migrate.go index 6d79499..946417f 100644 --- a/internal/world/room_migrate.go +++ b/internal/world/room_migrate.go @@ -16,7 +16,22 @@ func (r *Room) RewriteRoomIDs(idMap map[int]int) bool { } changed := false for dir, exit := range r.Exits { + var exitChanged bool if remapInt(idMap, &exit.Room) { + exitChanged = true + } + for i := range exit.OnTraverse { + if exit.OnTraverse[i].Action != nil { + if remapInt(idMap, &exit.OnTraverse[i].Action.Teleport) { + exitChanged = true + } + if exit.OnTraverse[i].Action.SpawnMob != nil && + remapIntSlice(idMap, exit.OnTraverse[i].Action.SpawnMob.DespawnRooms) { + exitChanged = true + } + } + } + if exitChanged { r.Exits[dir] = exit changed = true } |
