From 615295ca3e386357541aaf4bccfd8b9cb2fce22d Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 3 Apr 2026 21:25:05 +0100 Subject: [PATCH] Improve falling, remove stride advance while falling --- src/Dodge/Creature/State/WalkCycle.hs | 2 +- src/Dodge/Creature/Update.hs | 2 +- src/Dodge/Update.hs | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index 142ec7f90..a18f8ba65 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -36,7 +36,7 @@ updateCarriage' cid cr w = \case %~ if cr ^. crPos . _z < 17 then min 0.05 . (+0.001) else max (-0.05) . subtract 0.001 Boosting {} -> w Falling {} -> - let v = 0.9 *^ (cr ^. crOldPos - oop & _z -~ 0.5) + let v = 0.95 *^ (cr ^. crOldPos - oop & _z -~ 0.5) ep = cr ^. crPos + v in if ep ^. _z < 0 && not (any (pointInPoly (ep ^. _xy)) (w ^. cWorld . chasms)) then w & tocr . crPos .~ (ep & _z .~ 0) diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index f091ba18e..4c90655f1 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -39,7 +39,7 @@ import ShapePicture.Data -- allow for knockbacks etc to be determined as well as intended movements updateCreature :: Creature -> World -> World updateCreature cr - | cr ^. crPos . _z < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr + | cr ^. crPos . _z < negate 300 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr | CrIsCorpse _ <- cr ^. crHP = updateCarriage (_crID cr) . chasmTestCorpse cr | null (cr ^? crHP . _HP) = id | otherwise = updateLivingCreature cr diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 792356fb2..1a3f3f7de 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -372,7 +372,9 @@ updateCreatureStrides :: World -> World updateCreatureStrides = cWorld . lWorld . creatures . each %~ updateCreatureStride updateCreatureStride :: Creature -> Creature -updateCreatureStride cr = cr & crType . strideAmount +~ d +updateCreatureStride cr + | Walking <- cr ^. crStance . carriage = cr & crType . strideAmount +~ d + | otherwise = cr where s = 2 * fromMaybe 1 (crMvType cr ^? mvSpeed) -- d = min s . norm $ cr ^. crPos - cr ^. crOldPos