aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_estate_directory.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-10-06 12:57:23 -0400
committerhistoria <[not public]>2026-10-06 12:57:23 -0400
commit9666676766bf21364f4fc4d0d1d336e72f2a91b4 (patch)
tree0cade34091d7602790dc38cd44053f0b74bbadf2 /internal/game/cmd_estate_directory.go
parent4bc1daaf259e0c19c5fe4a12ec8bc7f6e5a735c1 (diff)
downloadthehouseoficarus-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.go22
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)
}