aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_move.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/cmd_move.go')
-rw-r--r--internal/game/cmd_move.go15
1 files changed, 13 insertions, 2 deletions
diff --git a/internal/game/cmd_move.go b/internal/game/cmd_move.go
index 6063160..3b9eeee 100644
--- a/internal/game/cmd_move.go
+++ b/internal/game/cmd_move.go
@@ -31,8 +31,12 @@ func (g *Game) doMove(sess *net.Session, dir string, multiplier float64) {
return
}
- if exitDef.Hidden && !p.GodMode {
- sess.WriteLine("You can't go that way.")
+ if !p.GodMode && exitDef.AlwaysBlocked {
+ msg := exitDef.BlockedMessage
+ if msg == "" {
+ msg = fmt.Sprintf("The way %s is impassable.", exitDir)
+ }
+ sess.WriteLine(msg)
return
}
@@ -153,6 +157,13 @@ func (g *Game) completeMove(sess *net.Session, p *player.Player) {
}
oldRoom := p.RoomID
+ if oldRoom != targetID && exitDir != "" {
+ if room, err := g.World.LoadRoom(oldRoom); err == nil {
+ if ed, ok := room.Exits[g.World.ResolveExit(exitDir)]; ok && ed.Hidden && ed.Room == targetID {
+ g.markExitDiscovered(p, oldRoom, g.World.ResolveExit(exitDir))
+ }
+ }
+ }
p.RoomID = targetID
p.HazardTimer = 0
p.Stats.RecordRoomVisit(targetID)