aboutsummaryrefslogtreecommitdiff
path: root/internal/game/sys_escape_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/sys_escape_test.go')
-rw-r--r--internal/game/sys_escape_test.go29
1 files changed, 27 insertions, 2 deletions
diff --git a/internal/game/sys_escape_test.go b/internal/game/sys_escape_test.go
index 1fce4f4..61b50cd 100644
--- a/internal/game/sys_escape_test.go
+++ b/internal/game/sys_escape_test.go
@@ -89,7 +89,7 @@ func TestBeginEscapeMoveWithEnergy(t *testing.T) {
p.EscapeTarget = 10
p.EscapeIsWalk = false
- g.beginEscapeMove(p)
+ g.beginEscapeMove(escapeTestSession(p), p)
if p.EscapeDir != "" {
t.Error("beginEscapeMove should clear EscapeDir")
@@ -114,7 +114,7 @@ func TestBeginEscapeMoveWithoutEnergy(t *testing.T) {
p.EscapeTarget = 5
p.EscapeIsWalk = false
- g.beginEscapeMove(p)
+ g.beginEscapeMove(escapeTestSession(p), p)
if p.MoveTicks != 2 {
t.Errorf("expected MoveTicks=2 without energy, got %d", p.MoveTicks)
@@ -487,3 +487,28 @@ func TestEndCombatDoesNotFireEscapeIfMobAlive(t *testing.T) {
t.Error("MoveDirection should NOT be set when escape not fired")
}
}
+
+// TestBeginEscapeMoveGodModeCompletesInstantMove pins the regression where a
+// player who stashed a flee and then gained GodMode (or a Cape of Agility)
+// before the escape gate fired was left with MoveTicks==0 and never moved.
+func TestBeginEscapeMoveGodModeCompletesInstantMove(t *testing.T) {
+ h := newHarness(t)
+ h.seedAccount("godflee")
+ h.seedCharacter("godflee", "godflee")
+ sess, _ := h.connect("godflee")
+ p := sess.Player
+ p.RoomID = 1
+ p.GodMode = true
+ p.EscapeDir = "north"
+ p.EscapeTarget = 2
+
+ h.g.RunOnOwner(func() { h.g.beginEscapeMove(sess, p) })
+
+ if p.RoomID != 2 {
+ t.Fatalf("0-tick (god) escape move should complete immediately: room=%d want 2", p.RoomID)
+ }
+ if p.MoveTicks != 0 || p.MoveDirection != "" || p.EscapeDir != "" {
+ t.Fatalf("move state should be cleared after instant escape: MoveTicks=%d MoveDirection=%q EscapeDir=%q",
+ p.MoveTicks, p.MoveDirection, p.EscapeDir)
+ }
+}