aboutsummaryrefslogtreecommitdiff
path: root/internal/game/look_room.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/look_room.go')
-rw-r--r--internal/game/look_room.go56
1 files changed, 32 insertions, 24 deletions
diff --git a/internal/game/look_room.go b/internal/game/look_room.go
index f35d564..887bb1d 100644
--- a/internal/game/look_room.go
+++ b/internal/game/look_room.go
@@ -83,24 +83,30 @@ func (g *Game) showRoomExits(sess *net.Session, p *player.Player, room *world.Ro
}
var lines []exitLine
maxDirLen := 0
- for _, dir := range world.ExitOrder {
- exitDef, ok := room.Exits[dir]
- if !ok {
- continue
- }
- coloredDir := g.colorize(sess, "exit_direction", string(dir))
- targetRoom, err := g.World.LoadRoom(exitDef.Room)
- targetName := g.colorize(sess, "room_number", fmt.Sprintf("#%d", exitDef.Room))
- if err == nil {
- targetName = g.colorize(sess, "exit_name", targetRoom.Name)
- }
- if exitDef.Condition != nil && !g.checkCondition(sess, exitDef.Condition) {
- targetName += " (blocked)"
- }
- lines = append(lines, exitLine{coloredDir, targetName})
- if visibleLen(coloredDir) > maxDirLen {
- maxDirLen = visibleLen(coloredDir)
- }
+ for _, dir := range world.ExitOrder {
+ exitDef, ok := room.Exits[dir]
+ if !ok {
+ continue
+ }
+ if exitDef.Hidden && !p.GodMode {
+ continue
+ }
+ coloredDir := g.colorize(sess, "exit_direction", string(dir))
+ targetRoom, err := g.World.LoadRoom(exitDef.Room)
+ targetName := g.colorize(sess, "room_number", fmt.Sprintf("#%d", exitDef.Room))
+ if err == nil {
+ targetName = g.colorize(sess, "exit_name", targetRoom.Name)
+ }
+ if exitDef.Condition != nil && !g.checkCondition(sess, exitDef.Condition) {
+ targetName += " (blocked)"
+ }
+ if exitDef.Hidden {
+ targetName += " (hidden)"
+ }
+ lines = append(lines, exitLine{coloredDir, targetName})
+ if visibleLen(coloredDir) > maxDirLen {
+ maxDirLen = visibleLen(coloredDir)
+ }
}
for _, l := range lines {
pad := maxDirLen + (len(l.dir) - visibleLen(l.dir))
@@ -110,13 +116,15 @@ func (g *Game) showRoomExits(sess *net.Session, p *player.Player, room *world.Ro
sess.Write("Exits: ")
first := true
for _, dir := range world.ExitOrder {
- if _, ok := room.Exits[dir]; ok {
- if !first {
- sess.Write(", ")
- }
- sess.Write(g.colorize(sess, "exit_direction", string(dir)))
- first = false
+ exitDef, ok := room.Exits[dir]
+ if !ok || (exitDef.Hidden && !p.GodMode) {
+ continue
+ }
+ if !first {
+ sess.Write(", ")
}
+ sess.Write(g.colorize(sess, "exit_direction", string(dir)))
+ first = false
}
sess.WriteLine("")
}