diff options
author | Griffin Smith <root@gws.fyi> | 2019-12-23T22·55-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-12-23T22·55-0500 |
commit | 32421916e09dc56d91707af10474644276712fc5 (patch) | |
tree | d48ae5b6bf5239ddffe13f0fa3c2c34448839a78 /src/Xanthous/App.hs | |
parent | a58966d43f86d6fae92c1fc11e43650177fcecd1 (diff) |
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.
Diffstat (limited to 'src/Xanthous/App.hs')
-rw-r--r-- | src/Xanthous/App.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/Xanthous/App.hs b/src/Xanthous/App.hs index 2ffc11e8e6c7..2029be6f108f 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 |