From a51f7a53aa2c487ebf94ba0363038574ae8bb590 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 7 Jul 2026 00:22:32 -0400 Subject: feat: hidden exits (and related flags) work with commands that change room ids. exit code simplified and unified between impassable and blocked exits. --- internal/game/render_map.go | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'internal/game/render_map.go') diff --git a/internal/game/render_map.go b/internal/game/render_map.go index 5e57bc7..0177595 100644 --- a/internal/game/render_map.go +++ b/internal/game/render_map.go @@ -60,9 +60,6 @@ func buildGraph(g *Game, sess *net.Session, startRoomID int) *mapGraph { rg := world.BuildGrid(startRoomID, func(id int) (*world.Room, bool) { return loadRoom(g, id) }, nil, func(fromID int, dir world.ExitDir, targetID int) bool { - if sess == nil || sess.Player == nil { - return true - } room, ok := loadRoom(g, fromID) if !ok { return true @@ -71,10 +68,7 @@ func buildGraph(g *Game, sess *net.Session, startRoomID int) *mapGraph { if !ok || exit.Room != targetID { return true } - if exit.Hidden && !g.exitDiscovered(sess.Player, fromID, dir) { - return false - } - return true + return g.exitDisplayState(sess, fromID, dir, exit).Visible }, nil) return &mapGraph{posToRoom: rg.RoomAt, dist: rg.Dist} } @@ -619,23 +613,14 @@ func exitStateTo(g *Game, sess *net.Session, from int, dir world.ExitDir, neighb if !ok || exit.Room != neighbor { return exitAbsent } - p := sessPlayer(sess) - if exit.Hidden && !g.exitDiscovered(p, from, dir) { + ed := g.exitDisplayState(sess, from, dir, exit) + if !ed.Visible { return exitAbsent } - if exit.AlwaysBlocked { - if p != nil && p.GodMode { - return exitOpen - } + if ed.Blocked { return exitBlocked } - if exit.Condition == nil || sess == nil || sess.Player == nil { - return exitOpen - } - if sess.Player.GodMode || g.checkCondition(sess, exit.Condition) { - return exitOpen - } - return exitBlocked + return exitOpen } func sessPlayer(sess *net.Session) *player.Player { -- cgit v1.2.3