diff options
| author | historia <[not public]> | 2026-10-06 12:57:23 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-10-06 12:57:23 -0400 |
| commit | 9666676766bf21364f4fc4d0d1d336e72f2a91b4 (patch) | |
| tree | 0cade34091d7602790dc38cd44053f0b74bbadf2 /internal/game/cmd_estate_directory.go | |
| parent | 4bc1daaf259e0c19c5fe4a12ec8bc7f6e5a735c1 (diff) | |
| download | thehouseoficarus-9666676766bf21364f4fc4d0d1d336e72f2a91b4.tar.gz | |
refactor: split casino.go, dedup helpers, remove audit docs
Diffstat (limited to 'internal/game/cmd_estate_directory.go')
| -rw-r--r-- | internal/game/cmd_estate_directory.go | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/internal/game/cmd_estate_directory.go b/internal/game/cmd_estate_directory.go index 83c5b80..f29f671 100644 --- a/internal/game/cmd_estate_directory.go +++ b/internal/game/cmd_estate_directory.go @@ -205,26 +205,22 @@ func (g *Game) teleportPlayer(sess *net.Session, p *player.Player, roomID int) { } } - // A teleport changes rooms just like a walk, so it must clear any safespot - // cover: isSafespotted/safespotBlocksMelee/safespotBlocksHazard compare no - // room, so leaving the state active grants melee and hazard immunity in the - // destination and keeps the player as a phantom occupant of the old cover. - if ss, ok := g.safespot.Get(p.Name); ok { - g.forceLeaveSafespot(sess, p, &ss, "") - } + // A teleport changes rooms just like a walk: clear the safespot cover and + // every in-flight move/action/combat/sequence so no stale state follows the + // player into the destination or drags them back later (see relocatePlayer). + g.relocatePlayer(sess, p, roomID) + g.saveCharacter(p) - p.RoomID = roomID - p.Stats.RecordRoomVisit(roomID) + g.World.SeedGroundItems(p.RoomID) + g.seedRoomMobs(p.RoomID) + g.seedRoomObjects(p.RoomID) if g.Hub != nil { g.Hub.LeaveRoom(sess) g.Hub.EnterRoom(sess, p.RoomID) } - g.World.SeedGroundItems(p.RoomID) - g.seedRoomMobs(p.RoomID) - g.seedRoomObjects(p.RoomID) - g.saveCharacter(p) g.doLook(sess) g.runEnterSteps(sess, p.RoomID) + g.checkAggro(sess) g.writePrompt(sess) } |
