From 22a1162e14bc4ba2b1635ab2312b6b0316600e8a Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 5 Apr 2026 10:16:20 +0100 Subject: [PATCH] Work on chase crit corpse --- src/Dodge/Corpse/Make.hs | 20 ++++++++++++++++++++ src/Dodge/Creature/ChaseCrit.hs | 2 +- src/Dodge/Creature/Mass.hs | 2 +- src/Dodge/Creature/State/WalkCycle.hs | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Dodge/Corpse/Make.hs b/src/Dodge/Corpse/Make.hs index 815159769..9d5d1bbef 100644 --- a/src/Dodge/Corpse/Make.hs +++ b/src/Dodge/Corpse/Make.hs @@ -1,5 +1,7 @@ module Dodge.Corpse.Make (makeCorpse) where +import qualified Quaternion as Q +import Linear import Control.Lens import Dodge.Creature.Picture import Dodge.Creature.Radius @@ -13,6 +15,7 @@ import ShapePicture makeCorpse :: Creature -> SPic makeCorpse cr = case cr ^. crType of HoverCrit{} -> noPic $ drawHoverCrit cr + ChaseCrit{} -> noPic $ chaseCorpse cr _ -> noPic . scaleSH (V3 crsize crsize crsize) @@ -25,3 +28,20 @@ makeCorpse cr = case cr ^. crType of cskin = crShape $ _crType cr -- this should be fixed crsize = 0.1 * crRad (cr ^. crType) rotmdir = rotateSH (_crMvDir cr - _crDir cr) + +chaseCorpse :: Creature -> Shape +chaseCorpse cr = mconcat + [colorSH (_skinUpper cskin) . upperPrismPolyHalfMI 0 $ polyCirc 3 12 + & each %~ vNormal + & each . _y *~ 0.6 + , colorSH (_skinUpper cskin) . overPosSH (Q.apply neckq) $ + (upperPrismPolyHalfMI 3 $ (+ V2 8 0) . vNormal <$> trapTBH 2 5 8) + , colorSH (_skinHead cskin) + (overPosSH (Q.apply headq) (upperBox Medium Important 2 [V2 0 (-4), V2 9 0, V2 0 4])) + , rotmdir $ colorSH (_skinLower cskin) $ deadFeet cr + ] + where + neckq = (V3 6 0 0, Q.qid) + cskin = crShape $ _crType cr -- this should be fixed + rotmdir = rotateSH (_crMvDir cr - _crDir cr) + headq = neckq `Q.comp` (V3 16 0 0, Q.qid ) diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index c7b625dd6..ecf45d709 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -36,7 +36,7 @@ hoverCrit :: Creature hoverCrit = defaultCreature & crName .~ "hoverCrit" - & crHP .~ HP 500 + & crHP .~ HP 150 & crType .~ HoverCrit 0 & crFaction .~ ColorFaction blue & crStance . carriage .~ Flying 15 0.975 diff --git a/src/Dodge/Creature/Mass.hs b/src/Dodge/Creature/Mass.hs index 930730372..10a7eaffe 100644 --- a/src/Dodge/Creature/Mass.hs +++ b/src/Dodge/Creature/Mass.hs @@ -5,7 +5,7 @@ import Dodge.Data.Creature.Misc crMass :: CreatureType -> Float crMass = \case Avatar {} -> 10 - ChaseCrit {} -> 10 + ChaseCrit {} -> 12 HoverCrit {} -> 5 SwarmCrit -> 2 AutoCrit -> 10 diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index fcfef85a7..b0ab6acd0 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -46,7 +46,7 @@ updateCarriage' cid cr w = \case & cWorld . lWorld . creatures . ix cid . crStance . carriage .~ OnGround else w & cWorld . lWorld . creatures . ix cid . crPos .~ ep OnGround {} -> w - & tocr . crPos +~ 0.8 *^ (cr ^. crOldPos - oop) + & tocr . crPos . _xy +~ 0.8 *^ (cr ^. crOldPos . _xy - oop ^. _xy) where tocr = cWorld . lWorld . creatures . ix cid oop = cr ^. crOldOldPos