diff options
Diffstat (limited to 'internal/game/cmd_move.go')
| -rw-r--r-- | internal/game/cmd_move.go | 15 |
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) |
