From b3568f03e4103dd46db2ccc680fbab0a6454d604 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 15 Sep 2026 13:56:10 -0400 Subject: fix: telnet buffer reuse, bank stack handling, transport casino gate, and admin cache invalidation --- internal/game/cmd_trigger_transport.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'internal/game/cmd_trigger_transport.go') diff --git a/internal/game/cmd_trigger_transport.go b/internal/game/cmd_trigger_transport.go index e2053b0..dbb0d16 100644 --- a/internal/game/cmd_trigger_transport.go +++ b/internal/game/cmd_trigger_transport.go @@ -13,6 +13,13 @@ func (g *Game) triggerTransport(sess *net.Session, p *player.Player, mod *ModDef return } + // Transport would strand the player at a remote room while still seated at + // a table or machine; require them to stop playing first. + if _, playing := g.Casino.Participation(p.Name); playing { + sess.WriteLine("You're playing a game. Type \"stop\" between rounds before transporting.") + return + } + if p.Action != nil { g.cancelAction(p) } @@ -22,6 +29,13 @@ func (g *Game) triggerTransport(sess *net.Session, p *player.Player, mod *ModDef } func (g *Game) executeTransportEffect(sess *net.Session, p *player.Player, mod *ModDef) { + // Safety net: sequenced modules reach the effect from advanceTriggerModule + // without re-entering triggerTransport. Never teleport a seated gambler. + if g.inCasinoGame(p.Name) { + sess.WriteLine("You're playing a game. Type \"stop\" between rounds before transporting.") + return + } + if g.Hub != nil { for _, other := range g.Hub.PlayersInRoom(p.RoomID) { if other != sess { -- cgit v1.2.3