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.go31
1 files changed, 22 insertions, 9 deletions
diff --git a/internal/game/cmd_move.go b/internal/game/cmd_move.go
index 594ecd7..576bdd5 100644
--- a/internal/game/cmd_move.go
+++ b/internal/game/cmd_move.go
@@ -88,17 +88,30 @@ func (g *Game) doMove(sess *net.Session, dir string, isWalk bool) {
return
}
- // moveTicks already set p.MoveUsesEnergy based on this move; preserve it
- // across the wait by leaving it set (ClearMoveState resets it on arrival).
- p.MoveTicks = ticks
-
- if inCombat && p.OptionBool("run_countdown") {
- if p.MoveTicks > 1 {
- sess.WriteLine(fmt.Sprintf("Running in %d ticks...", p.MoveTicks))
- } else {
- sess.WriteLine("Running next tick!")
+ if inCombat {
+ firstEscape := p.EscapeDir == ""
+ p.EscapeDir = string(exitDir)
+ p.EscapeTarget = targetID
+ p.EscapeTrigger = p.MovePendingTrigger
+ p.EscapeIsWalk = isWalk
+ p.MovePendingTrigger = nil
+ p.MoveDirection = ""
+ p.MoveTarget = 0
+ if firstEscape {
+ mobName := ""
+ if cs := g.Combat.Get(p.Name); cs != nil {
+ if mob := g.MobStore.GetInstance(cs.MobID); mob != nil {
+ mobName = mobDisplayName(mob, false)
+ }
+ }
+ if mobName != "" {
+ sess.WriteLine(g.colorize(sess, "miss", fmt.Sprintf("You get ready to flee as soon as %s misses you...", mobName)))
+ }
}
+ return
}
+
+ p.MoveTicks = ticks
}
// matchExitTrigger returns the first on_traverse Trigger on exitDef whose