From 32421916e09dc56d91707af10474644276712fc5 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Mon, 23 Dec 2019 17:55:28 -0500 Subject: Update the vision every time we step the game Recalculate the character's lines of sight every time we step the game, rather than just every time the character *moves*. I had originally thought this was a non-contiguous lines-of-sight bug - which there's a test disproving - but it actually turned out to be that actions like eating or attacking would step the game forward (thus moving gormlaks) without re-calculating the positions visible to the character. --- src/Xanthous/App.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/Xanthous/App.hs') diff --git a/src/Xanthous/App.hs b/src/Xanthous/App.hs index 2ffc11e8e6..2029be6f10 100644 --- a/src/Xanthous/App.hs +++ b/src/Xanthous/App.hs @@ -102,6 +102,8 @@ stepGameBy ticks = do pEntity' <- step ticks pEntity entities . ix eid .= pEntity' + modify updateCharacterVision + whenM (uses character isDead) . prompt_ @'Continue ["dead"] Uncancellable . const . lift . liftIO @@ -137,7 +139,6 @@ handleCommand (Move dir) = do characterPosition .= newPos stepGameBy =<< uses (character . speed) (|*| 1) describeEntitiesAt newPos - modify updateCharacterVision Just Combat -> attackAt newPos Just Stop -> pure () continue -- cgit 1.4.1