Simplify creature update

This commit is contained in:
2025-10-18 10:46:27 +01:00
parent f3fafc6bf2
commit ebc4b9d715
+7 -9
View File
@@ -43,12 +43,14 @@ updateCreature' cr =
chasmTest cr . case _crType cr of
Avatar{} ->
(cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse)
. crUpdate yourControl cr
. crUpdate cid . yourControl cr
LampCrit{} -> updateLampoid cr
BarrelCrit bt -> updateBarreloid bt cr
AvatarDead -> id
ChaseCrit {} -> crUpdate updateHumanoid cr
_ -> crUpdate updateHumanoid cr
ChaseCrit {} -> crUpdate cid . updateHumanoid cr
_ -> crUpdate cid . updateHumanoid cr
where
cid = cr ^. crID
{- | this seems to work, but I am not sure about the ordering:
previously, the movement was updated before the ai in order to correctly set the oldpos.
@@ -57,16 +59,12 @@ updateCreature' cr =
at what point invSideEffects is applied wrt to when the creature moves
may affect whether the shield moves correctly
-}
crUpdate :: (Creature -> World -> World) -> Creature -> World -> World
crUpdate f cr =
crUpdate :: Int -> World -> World
crUpdate cid =
checkDeath cid
. doDamage cid
. invItemEffs cid
. g
. updateWalkCycle cid
where
cid = cr ^. crID
g w' = maybe id f (w' ^? cWorld . lWorld . creatures . ix cid) w'
checkDeath :: Int -> World -> World
checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix cid) w