diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 79286b09f..9ee453347 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -93,7 +93,6 @@ startCr = & crHP .~ HP 10000 & crInv .~ mempty & crFaction .~ PlayerFaction --- & crMvType .~ MvWalking yourDefaultSpeed & crType .~ Avatar (PulseStatus 55 0) Flesh 50 50 50 AvPosture LeftForward 0 -- | Items you start with. diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 78e9aaab4..702f61d5d 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -115,9 +115,12 @@ performAimAt cr w tcid p = ([TurnToward tpos aimSp], AimAt tcid tpos) cdir = _crDir cr cpos = cr ^. crPos . _xy canSee' = canSee (_crID cr) tcid w - aimSp = case crMvType cr ^? mvAimSpeed of + aimSp = case crMvType cr ^? mvTurnRad of Just f -> doFloatFloat f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos) Nothing -> error "creature without aiming type" +-- aimSp = case crMvType cr ^? mvAimSpeed of +-- Just f -> doFloatFloat f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos) +-- Nothing -> error "creature without aiming type" tpos | canSee' = w ^?! cWorld . lWorld . creatures . ix tcid . crPos . _xy | otherwise = p @@ -135,9 +138,15 @@ performPathTo a cr w p Just q -> gotowards q _ -> ([], a) where - gotowards q = ( [MvTurnToward q, MvForward, RandomTurn jit] , PathTo p a) + gotowards q = ( crMoveImpulses cr q , PathTo p a) cpos = cr ^. crPos . _xy - jit = _mvTurnJit $ crMvType cr + +crMoveImpulses :: Creature -> Point2 -> [Impulse] +crMoveImpulses cr p = case crMvType cr of + NoMvType -> [MvTurnToward p, MvForward] + MvWalking {} -> [MvTurnToward p, MvForward] + JitMvType {_mvTurnJit = x} -> [MvTurnToward p, MvForward, RandomTurn x] + StartStopMvType {} -> [MvTurnToward p, MvForward] performTurnToA :: Creature -> Point2 -> ActionUpdate performTurnToA cr p diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index 3f0633b33..910b3083f 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -91,7 +91,7 @@ beeCrit = defaultCreature & crName .~ "beeCrit" & crHP .~ HP 100 - & crType .~ BeeCrit 0 Nothing + & crType .~ BeeCrit 0 Nothing 0 & crFaction .~ ColorFaction yellow & crStance . carriage .~ Flying 15 @@ -100,6 +100,6 @@ hiveCrit = defaultCreature & crName .~ "hiveCrit" & crHP .~ HP 100000 - & crType .~ HiveCrit [] 0 + & crType .~ HiveCrit mempty 0 & crStance . carriage .~ Rooted & crFaction .~ ColorFaction yellow diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index 5e5103f4e..2e51394a4 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -3,6 +3,7 @@ module Dodge.Creature.Impulse (followImpulse) where +import Control.Applicative import Control.Monad.Trans.State.Lazy --import Control.Monad.State -- moving from mtl to transformers import Data.Maybe @@ -70,7 +71,7 @@ followImpulse cid w = \case i <- cr ^? crIntention . targetCr . _Just tcr <- w ^? cWorld . lWorld . creatures . ix i return $ followImpulse cid w (doCrImp f tcr) - MvForward -> crup $ crMvForward speed (w ^. cWorld . lWorld) + MvForward -> crup $ crMvForward' (w ^. cWorld . lWorld) MvTurnToward p -> crup $ creatureTurnToward p (turnRad $ safeAngleVV (p -.- cpos) (unitVectorAtAngle cdir)) @@ -79,8 +80,11 @@ followImpulse cid w = \case cr = w ^?! cWorld . lWorld . creatures . ix cid crup f = over clens f w mvType = crMvType cr - speed = _mvSpeed mvType - turnRad = doFloatFloat $ _mvTurnRad mvType +-- speed = _mvSpeed mvType + turnRad = fromMaybe (const 0.1) $ + mvType ^? mvTurnRad . to doFloatFloat + <|> mvType ^? mvTurnSpeed . to const +-- | Just x <- = doFloatFloat $ _mvTurnRad mvType cpos = cr ^. crPos . _xy cdir = _crDir cr posFromID cid' = w ^?! cWorld . lWorld . creatures . ix cid' . crPos . _xy diff --git a/src/Dodge/Creature/Impulse/Movement.hs b/src/Dodge/Creature/Impulse/Movement.hs index a8f7da1af..77745ba17 100644 --- a/src/Dodge/Creature/Impulse/Movement.hs +++ b/src/Dodge/Creature/Impulse/Movement.hs @@ -6,9 +6,11 @@ module Dodge.Creature.Impulse.Movement ( crWalk, crMvByNoStride, crMvForward, + crMvForward', creatureTurnTo, ) where +import Dodge.Creature.MoveType import Linear import Control.Lens import Dodge.Base @@ -19,13 +21,9 @@ import Geometry {- | Creature attempts to moves under its own steam. The idea is that this may or may not work, depending on the status of the creature. For now, though, this cannot fail. +p is the movement translation vector, will be made relative to creature direction -} -crMvBy :: - -- | Movement translation vector, will be made relative to creature direction - Point2 -> - LWorld -> - Creature -> - Creature +crMvBy :: Point2 -> LWorld -> Creature -> Creature crMvBy p lw cr = crMvAbsolute lw (rotateV (_crDir cr) p) cr crWalk :: @@ -72,6 +70,18 @@ strengthFactor i | i < 1 = 0 | otherwise = 0.02 * fromIntegral i +crMvForward' :: LWorld -> Creature -> Creature +crMvForward' lw cr = case crMvType cr of + JitMvType s _ _ -> crMvBy (V2 s 0) lw cr + StartStopMvType s _ n -> + let speed | cr ^?! crType . startStopMv > n = 0 + | otherwise = s + in crMvBy (V2 speed 0) lw cr + & crType . startStopMv %~ ((`mod` (n*2)) . (+1)) + NoMvType -> cr + MvWalking s -> crMvBy (V2 s 0) lw cr + + crMvForward :: Float -> LWorld -> Creature -> Creature crMvForward speed = crMvBy (V2 speed 0) diff --git a/src/Dodge/Creature/MoveType.hs b/src/Dodge/Creature/MoveType.hs index ea65a2868..73c20bbcd 100644 --- a/src/Dodge/Creature/MoveType.hs +++ b/src/Dodge/Creature/MoveType.hs @@ -17,24 +17,24 @@ crMvType cr = case _crType cr of BarrelCrit {} -> defaultAimMvType LampCrit {} -> defaultAimMvType SlimeCrit {} -> NoMvType - BeeCrit {} -> defaultChaseMvType & mvSpeed .~ 0.1 + BeeCrit {} -> StartStopMvType 0.2 0.1 25 HiveCrit{} -> NoMvType defaultAimMvType :: CrMvType defaultAimMvType = - CrMvType + JitMvType { _mvSpeed = 3 , _mvTurnRad = FloatConst 0.2 , _mvTurnJit = 0.05 - , _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01 +-- , _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01 } defaultChaseMvType :: CrMvType defaultChaseMvType = - CrMvType + JitMvType { _mvSpeed = 2 , _mvTurnRad = FloatAbsCheckGreaterLess (pi / 4) 0.2 0.05 --, _mvTurnJit = 0.3 , _mvTurnJit = 0.05 - , _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01 +-- , _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01 } diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 2b117e222..7e3f71795 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -3,6 +3,7 @@ module Dodge.Creature.Update (updateCreature) where --import Dodge.WorldEvent.ThingsHit +import Data.List (sortOn) import Dodge.Creature.Radius import Dodge.Zoning.Creature import Dodge.Creature.ChaseCrit @@ -37,6 +38,7 @@ import qualified Quaternion as Q import RandomHelp import Shape import ShapePicture.Data +import qualified Data.IntSet as IS -- Should separate out creature movement from other parts here -- allow for knockbacks etc to be determined as well as intended movements @@ -81,18 +83,19 @@ updateLivingCreature cr = case cr ^. crType of updateHiveCrit :: Creature -> Int -> World -> World updateHiveCrit cr cid w - | Just x <- cr ^? crType . hiveChildren . to length - , x < 10 + | Just x <- cr ^? crType . hiveChildren . to IS.size + , x < nbees , Just y <- cr ^? crType . hiveGestation , y == 0 = w - & tocr . crType . hiveChildren .:~ nid + & tocr . crType . hiveChildren %~ IS.insert nid & tocr . crType . hiveGestation .~ 50 & cWorld . lWorld . creatures . at nid ?~ ncr - | Just x <- cr ^? crType . hiveChildren . to length - , x < 10 = w + | Just x <- cr ^? crType . hiveChildren . to IS.size + , x < nbees = w & tocr . crType . hiveGestation %~ (max 0 . subtract 1) | otherwise = w where + nbees = 10 tocr = cWorld . lWorld . creatures . ix cid nid = IM.newKey $ w ^. cWorld . lWorld . creatures ncr = beeCrit & crPos .~ (cr ^. crPos + (0 & _xy +~ 25)) @@ -107,32 +110,37 @@ updateBeeCrit cr cid w , x >= 0.5 = w & tocr . crType . beeSlime -~ 0.5 | Just hcr <- gethive - , Just mid <- cr ^? crStance . carriage . mountID + , Just _ <- cr ^? crStance . carriage . mountID , Just x <- cr ^? crType . beeSlime - , x >= 15 || mountshakeoff mid + , x >= 15 = w & tocr . crActionPlan . apAction .~ PathTo (hcr ^. crPos . _xy) NoAction & tocr . crStance . carriage .~ Flying 0 + | Just mid <- cr ^? crStance . carriage . mountID + , mountshakeoff mid = w & tocr . crActionPlan . apStrategy .~ Search + & tocr . crStance . carriage .~ Flying 0 | Just hcr <- gethive , Just x <- cr ^? crType . beeSlime , x >= 15 = w & tocr . crActionPlan . apAction .~ PathTo (hcr ^. crPos . _xy) NoAction | Nothing <- cr ^? crActionPlan . apStrategy . harvestTarget - , Just tcr <- find isslime $ crsNearCirc (cr ^. crPos . _xy) 100 w = + , Just tcr <- listToMaybe . sortOn (distance cxy . (^. crPos . _xy)) . IM.elems . IM.filter istarget $ crsNearCirc (cr ^. crPos . _xy) 100 w = w & tocr . crActionPlan . apStrategy .~ HarvestFrom (tcr ^. crID) - | Just (tcr,ti) <- gettarg - , distance (cr ^. crPos . _xy) (tcr ^. crPos . _xy) < 0.5*crRad (tcr ^. crType) - , Just r <- tcr ^? crType . slimeRad - , Just d <- tcr ^? crType . slimeCompression - = w - & tocr . crStance . carriage .~ Mounted ti (cr ^. crPos - tcr ^. crPos & _xy %~ compressionScale (vNormal ((1/r) *^d))) | Just tid <- cr ^? crStance . carriage . mountID , Just SlimeCrit{} <- w ^? cWorld . lWorld . creatures . ix tid . crType = w & tocr . crType . beeSlime +~ sspeed & cWorld . lWorld . creatures . ix tid . crType . slimeRad %~ (sqrt . subtract sspeed . (^(2::Int))) + | Just (tcr,ti) <- gettarg + , distance (cr ^. crPos . _xy) (tcr ^. crPos . _xy) < 0.9*crRad (tcr ^. crType) + , Just r <- tcr ^? crType . slimeRad + , Just d <- tcr ^? crType . slimeCompression + = w + & tocr . crStance . carriage .~ Mounted ti (cr ^. crPos - tcr ^. crPos & _xy %~ compressionScale (vNormal ((1/r) *^d))) + & tocr . crActionPlan . apAction .~ NoAction | Just (tcr,_) <- gettarg = w & tocr . crActionPlan . apAction .~ PathTo (tcr ^. crPos . _xy) NoAction | otherwise = w & tocr . crActionPlan . apStrategy .~ Search where + cxy = cr ^. crPos . _xy mountshakeoff mid = fromMaybe True $ do mcr <- w ^? cWorld . lWorld . creatures . ix mid SlimeCrit {_slimeSplitTimer = x} <- mcr ^? crType @@ -148,9 +156,9 @@ updateBeeCrit cr cid w i <- cr ^? crType . beeHive . _Just w ^? cWorld . lWorld . creatures . ix i tocr = cWorld . lWorld . creatures . ix cid - isslime tcr = case tcr ^. crType of - SlimeCrit {} -> True - _ -> False + istarget tcr = fromMaybe False $ do + r <- tcr ^? crType . slimeRad + return $ r > 12 slimeCritUpdate :: Int -> World -> World slimeCritUpdate cid w @@ -323,11 +331,19 @@ checkDeath' cr w = case cr ^. crHP of & dropAll cr -- the order of these is possibly important & stopSoundFrom (CrWeaponSound (_crID cr) 0) & corpseOrGib cr + & crEffectsOnDeath cr & tocr . crStance . carriage %~ toDeathCarriage _ -> w where tocr = cWorld . lWorld . creatures . ix (_crID cr) +crEffectsOnDeath :: Creature -> World -> World +crEffectsOnDeath cr w = case cr ^. crType of + BeeCrit {_beeHive = mhid} -> fromMaybe w $ do + hid <- mhid + return $ w & cWorld . lWorld . creatures . ix hid . crType . hiveChildren %~ IS.delete (cr ^. crID) + _ -> w + startDeathTimer :: Creature -> Creature startDeathTimer cr = cr & crDeathTimer ?~ case cr ^. crType of HoverCrit{} -> 0 diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index 6c9503e58..314dbbd9f 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -15,6 +15,7 @@ import Dodge.Data.CamouflageStatus import Dodge.Data.FloatFunction import Dodge.Data.Material import Geometry.Data +import qualified Data.IntSet as IS data Vocalization = VocTimer {_vcTime :: Int ,_vcMaxTime :: Int } @@ -25,16 +26,16 @@ data CrMvType = NoMvType | MvWalking {_mvSpeed :: Float} -- note this may interact with a friction element -- so currently 26.04.03 the actual max speed when walking is twice this - | CrMvType + | JitMvType { _mvSpeed :: Float , _mvTurnRad :: FloatFloat , _mvTurnJit :: Float - , _mvAimSpeed :: FloatFloat } --- | CrAccMv --- { _mvAcc :: Float --- , _mvTopSpeed :: Float --- } + | StartStopMvType + { _mvSpeed :: Float + , _mvTurnSpeed :: Float + , _mvPulseTime :: Int + } deriving (Eq, Ord, Show, Read) --Generic, Flat) data Pulse = PulseStatus @@ -82,9 +83,10 @@ data CreatureType | BeeCrit { _beeSlime :: Float , _beeHive :: Maybe Int + , _startStopMv :: Int } | HiveCrit - { _hiveChildren :: [Int] + { _hiveChildren :: IS.IntSet , _hiveGestation :: Int } | SwarmCrit diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index 5cbd96dde..63e5935c7 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -49,8 +49,6 @@ defaultCreature = , _crFaction = NoFaction , _crIntention = defaultIntention , _crGroup = LoneWolf --- , _crMvType = defaultAimMvType --- , _crHammerPosition = HammerUp , _crName = "DEFAULTCRNAME" -- , _crStatistics = CreatureStatistics 50 50 50 , _crDeathTimer = Nothing diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 60f5eee7c..9bb952dd1 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -60,8 +60,8 @@ tutAnoTree = do --, tToBTree "" . return . cleatOnward <$> (xChasm 200 200 , tToBTree "" . return . cleatOnward <$> ((putSingleLight =<< roomRectAutoLights 300 300) <&> rmPmnts <>~ [sps0 (PutCrit slimeCrit) & plSpot . psPos .~ V2 150 100 --- , sps0 (PutCrit beeCrit) & plSpot . psPos .~ V2 250 100 , sps0 (PutCrit hiveCrit) & plSpot . psPos .~ V2 250 50 + , sps0 (PutCrit chaseCrit) & plSpot . psPos .~ V2 250 100 ] ) -- , tToBTree "" . return . cleatOnward <$> (cChasm diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 815999658..e345f9806 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -44,6 +44,8 @@ tocrs = uvWorld . cWorld . lWorld . creatures testStringInit :: Universe -> [String] testStringInit u = u ^.. tocrs . ix 2 . crType . hiveChildren . to show <> u ^.. tocrs . ix 3 . crStance . carriage . to show + <> u ^.. tocrs . ix 3 . crDir . to show + <> u ^.. tocrs . ix 3 . crActionPlan . apAction . to show -- u ^.. tocrs . ix 1 . crPos . _xy . to show -- <> u ^.. tocrs . ix 1 . crType . slimeCompression . to show -- <> u ^.. tocrs . ix 1 . crType . slimeCompression . to norm . to show diff --git a/tags b/tags index 15da48858..85ee06643 100644 --- a/tags +++ b/tags @@ -74,11 +74,11 @@ AttachType src/Dodge/Data/Item/Combine.hs 92;" t Attention src/Dodge/Data/Creature/Perception.hs 58;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" C Audition src/Dodge/Data/Creature/Perception.hs 45;" t -AutoCrit src/Dodge/Data/Creature/Misc.hs 91;" C +AutoCrit src/Dodge/Data/Creature/Misc.hs 93;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C -AvPosture src/Dodge/Data/Creature/Misc.hs 95;" C -Avatar src/Dodge/Data/Creature/Misc.hs 47;" C -AvatarPosture src/Dodge/Data/Creature/Misc.hs 95;" t +AvPosture src/Dodge/Data/Creature/Misc.hs 97;" C +Avatar src/Dodge/Data/Creature/Misc.hs 48;" C +AvatarPosture src/Dodge/Data/Creature/Misc.hs 97;" t Awareness src/Dodge/Data/Creature/Perception.hs 63;" t BANGCONE src/Dodge/Data/Item/Combine.hs 150;" C BANGROD src/Dodge/Data/Item/Combine.hs 159;" C @@ -104,10 +104,10 @@ BURSTRIFLE src/Dodge/Data/Item/Combine.hs 158;" C BackdropCurs src/Dodge/Data/SelectionList.hs 23;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C Bark src/Dodge/Data/ActionPlan.hs 41;" C -BarrelCrit src/Dodge/Data/Creature/Misc.hs 92;" C +BarrelCrit src/Dodge/Data/Creature/Misc.hs 94;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 34;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 107;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 103;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 109;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 105;" C BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 41;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" C @@ -121,7 +121,7 @@ BeamSimple src/Dodge/Data/Beam.hs 48;" C BeamSplitterSF src/Dodge/Data/ComposedItem.hs 50;" C BeamType src/Dodge/Data/Beam.hs 44;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C -BeeCrit src/Dodge/Data/Creature/Misc.hs 82;" C +BeeCrit src/Dodge/Data/Creature/Misc.hs 83;" C BeltBulletAmmo src/Dodge/Data/AmmoType.hs 11;" C BezierTrajectory src/Dodge/Data/Bullet.hs 42;" C BezierTrajectoryType src/Dodge/Data/Bullet.hs 49;" C @@ -206,7 +206,7 @@ CardinalPointBetween src/Dodge/Data/CardinalPoint.hs 20;" t Carriage src/Dodge/Data/Creature/Stance.hs 23;" t ChangePosture src/Dodge/Data/ActionPlan.hs 45;" C ChangeStrategy src/Dodge/Data/ActionPlan.hs 47;" C -ChaseCrit src/Dodge/Data/Creature/Misc.hs 57;" C +ChaseCrit src/Dodge/Data/Creature/Misc.hs 58;" C ChaseCritters src/Dodge/Data/Creature/State.hs 16;" C ChasmObstacle src/Dodge/Data/PathGraph.hs 51;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C @@ -266,8 +266,7 @@ CrIsAiming src/Dodge/Data/CreatureEffect.hs 20;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 20;" C CrIsCorpse src/Dodge/Data/Creature.hs 65;" C CrMouth src/Dodge/Data/SoundOrigin.hs 17;" C -CrMvType src/Dodge/Data/Creature/Misc.hs 24;" t -CrMvType src/Dodge/Data/Creature/Misc.hs 28;" C +CrMvType src/Dodge/Data/Creature/Misc.hs 25;" t CrOpenAutoDoor src/Dodge/Data/CreatureEffect.hs 21;" C CrSound src/Dodge/Data/SoundOrigin.hs 15;" C CrTurnAround src/Dodge/Data/CreatureEffect.hs 24;" C @@ -278,15 +277,15 @@ CrWeaponSound src/Dodge/Data/SoundOrigin.hs 19;" C CrWlID src/Dodge/Data/CrWlID.hs 10;" t Cr_awareness src/Dodge/Data/Config.hs 85;" C Cr_status src/Dodge/Data/Config.hs 84;" C -CrabCrit src/Dodge/Data/Creature/Misc.hs 61;" C +CrabCrit src/Dodge/Data/Creature/Misc.hs 62;" C CraftType src/Dodge/Data/Item/Combine.hs 50;" t Crawling src/Dodge/Data/Creature/Stance.hs 25;" C CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C Creature src/Dodge/Data/Creature.hs 35;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C -CreatureShape src/Dodge/Data/Creature/Misc.hs 97;" t -CreatureType src/Dodge/Data/Creature/Misc.hs 46;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 99;" t +CreatureType src/Dodge/Data/Creature/Misc.hs 47;" t Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C @@ -404,7 +403,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 39;" C ExplosionPayload src/Dodge/Data/Payload.hs 9;" C Explosive src/Dodge/Data/Damage.hs 25;" C ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C -ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 109;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 111;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 16;" C ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t Eyes src/Dodge/Data/Creature/Perception.hs 39;" C @@ -536,7 +535,7 @@ HeldItemType src/Dodge/Data/Item/Combine.hs 141;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 15;" C HiddenGoal src/Dodge/Data/Scenario.hs 14;" C HighlightSI src/Dodge/Data/SelectionList.hs 58;" C -HiveCrit src/Dodge/Data/Creature/Misc.hs 86;" C +HiveCrit src/Dodge/Data/Creature/Misc.hs 88;" C HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 41;" C HomeUsingTargeting src/Dodge/Data/Projectile.hs 42;" C Hospital src/Dodge/Data/Scenario.hs 69;" C @@ -558,9 +557,9 @@ HotkeyR src/Dodge/Data/Equipment/Misc.hs 34;" C HotkeyV src/Dodge/Data/Equipment/Misc.hs 38;" C HotkeyX src/Dodge/Data/Equipment/Misc.hs 36;" C HotkeyZ src/Dodge/Data/Equipment/Misc.hs 35;" C -HoverCrit src/Dodge/Data/Creature/Misc.hs 68;" C +HoverCrit src/Dodge/Data/Creature/Misc.hs 69;" C Huge src/Shape/Data.hs 24;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 98;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 100;" C IMSI src/Dodge/Data/SelectionList.hs 41;" t IMSS src/Dodge/Data/SelectionList.hs 39;" t INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C @@ -630,6 +629,7 @@ ItemUse src/Dodge/Data/Item/Use.hs 28;" t ItmInt src/Dodge/Data/Item/Location.hs 25;" t JOYSTICK src/Dodge/Data/Item/Combine.hs 96;" C JUMPLEGS src/Dodge/Data/Item/Combine.hs 133;" C +JitMvType src/Dodge/Data/Creature/Misc.hs 29;" C JoystickSF src/Dodge/Data/ComposedItem.hs 27;" C Just' src/MaybeHelp.hs 11;" C JustStartedPlaying src/Sound/Data.hs 22;" C @@ -648,7 +648,7 @@ LabLink src/Dodge/Data/Room.hs 50;" C LabSS src/Dodge/Data/Scenario.hs 97;" C LabelCluster src/Dodge/Data/RoomCluster.hs 13;" C Laboratory src/Dodge/Data/Scenario.hs 61;" C -LampCrit src/Dodge/Data/Creature/Misc.hs 93;" C +LampCrit src/Dodge/Data/Creature/Misc.hs 95;" C Large src/Shape/Data.hs 25;" C LasBeamCombine src/Dodge/Data/Beam.hs 38;" C LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C @@ -806,7 +806,7 @@ MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 56;" C Muzzle_positions src/Dodge/Data/Config.hs 110;" C MvForward src/Dodge/Data/ActionPlan.hs 36;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 35;" C -MvWalking src/Dodge/Data/Creature/Misc.hs 26;" C +MvWalking src/Dodge/Data/Creature/Misc.hs 27;" C NAILBOX src/Dodge/Data/Item/Combine.hs 79;" C NInt src/NewInt.hs 16;" C NIntMap src/NewInt.hs 22;" C @@ -831,7 +831,7 @@ NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 41;" C NoConcurrentEffect src/Loop/Data.hs 7;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 9;" C -NoCreatureShape src/Dodge/Data/Creature/Misc.hs 104;" C +NoCreatureShape src/Dodge/Data/Creature/Misc.hs 106;" C NoExtraMenuOption src/Dodge/Data/Universe.hs 79;" C NoFaction src/Dodge/Data/Creature/State.hs 18;" C NoFlare src/Dodge/Data/Muzzle.hs 29;" C @@ -842,7 +842,7 @@ NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C NoLighting src/Dodge/Data/Config.hs 120;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C -NoMvType src/Dodge/Data/Creature/Misc.hs 25;" C +NoMvType src/Dodge/Data/Creature/Misc.hs 26;" C NoObjShads src/Dodge/Data/Config.hs 118;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C @@ -1001,7 +1001,7 @@ Piezoelectric src/Dodge/Data/Material.hs 23;" C Pitted src/Dodge/Data/Creature.hs 68;" C Placement src/Dodge/Data/GenWorld.hs 113;" t PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t -PlainBarrel src/Dodge/Data/Creature/Misc.hs 108;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 110;" C PlainDeath src/Dodge/Data/Creature.hs 70;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t @@ -1039,12 +1039,12 @@ ProxSensor src/Dodge/Data/Machine/Sensor.hs 24;" C ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 33;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 24;" t ProximitySensorType src/Dodge/Data/Machine/Sensor.hs 29;" t -Pulse src/Dodge/Data/Creature/Misc.hs 40;" t +Pulse src/Dodge/Data/Creature/Misc.hs 41;" t PulseBall src/Dodge/Data/PulseLaser.hs 20;" t PulseBallSF src/Dodge/Data/ComposedItem.hs 46;" C PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t PulseLaserSF src/Dodge/Data/ComposedItem.hs 43;" C -PulseStatus src/Dodge/Data/Creature/Misc.hs 40;" C +PulseStatus src/Dodge/Data/Creature/Misc.hs 41;" C PumpSF src/Dodge/Data/ComposedItem.hs 49;" C PushSource src/Dodge/Data/Door.hs 23;" t PushedBy src/Dodge/Data/Door.hs 25;" C @@ -1234,9 +1234,9 @@ SixteenthRes src/Dodge/Data/Config.hs 113;" C Size src/Shape/Data.hs 24;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C -SlimeCrit src/Dodge/Data/Creature/Misc.hs 74;" C +SlimeCrit src/Dodge/Data/Creature/Misc.hs 75;" C SlimeIntelligence src/Dodge/Data/ActionPlan.hs 16;" C -SlinkCrit src/Dodge/Data/Creature/Misc.hs 69;" C +SlinkCrit src/Dodge/Data/Creature/Misc.hs 70;" C Small src/Shape/Data.hs 27;" C Smoke src/Dodge/Data/Cloud.hs 21;" C SmokeReducerSF src/Dodge/Data/ComposedItem.hs 29;" C @@ -1276,6 +1276,7 @@ StabSpinIncrease src/Dodge/Projectile/Create.hs 18;" C Stance src/Dodge/Data/Creature/Stance.hs 17;" t StandaloneWall src/Dodge/Data/Wall/Structure.hs 12;" C StartSentinelPost src/Dodge/Data/ActionPlan.hs 123;" C +StartStopMvType src/Dodge/Data/Creature/Misc.hs 34;" C StayInArea src/Dodge/Data/Scenario.hs 13;" C Stone src/Dodge/Data/Material.hs 13;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C @@ -1289,7 +1290,7 @@ Suspicious src/Dodge/Data/Creature/Perception.hs 64;" C Swallowed src/Dodge/Data/Creature.hs 68;" C SwapEquipment src/Dodge/Data/RightButtonOptions.hs 24;" C Swarm src/Dodge/Data/Creature/State.hs 25;" C -SwarmCrit src/Dodge/Data/Creature/Misc.hs 90;" C +SwarmCrit src/Dodge/Data/Creature/Misc.hs 92;" C TAPE src/Dodge/Data/Item/Combine.hs 56;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C TCBase src/Dodge/Data/Terminal.hs 49;" C @@ -1457,9 +1458,9 @@ Vigilance src/Dodge/Data/Creature/Perception.hs 50;" t Vigilant src/Dodge/Data/Creature/Perception.hs 54;" C Virus src/Dodge/Data/Scenario.hs 25;" C Vision src/Dodge/Data/Creature/Perception.hs 39;" t -VocReady src/Dodge/Data/Creature/Misc.hs 21;" C -VocTimer src/Dodge/Data/Creature/Misc.hs 20;" C -Vocalization src/Dodge/Data/Creature/Misc.hs 19;" t +VocReady src/Dodge/Data/Creature/Misc.hs 22;" C +VocTimer src/Dodge/Data/Creature/Misc.hs 21;" C +Vocalization src/Dodge/Data/Creature/Misc.hs 20;" t VolleyGunTrigger src/Dodge/Data/TriggerType.hs 13;" C VolleyUnfiredBarrels src/Dodge/Data/Item/Params.hs 17;" C WALLDETECTOR src/Dodge/Data/Item/Combine.hs 186;" C @@ -1560,14 +1561,14 @@ _asDir src/Dodge/Data/ArcStep.hs 14;" f _asObject src/Dodge/Data/ArcStep.hs 15;" f _asPos src/Dodge/Data/ArcStep.hs 13;" f _auDist src/Dodge/Data/Creature/Perception.hs 46;" f -_avDexterity src/Dodge/Data/Creature/Misc.hs 51;" f -_avIntelligence src/Dodge/Data/Creature/Misc.hs 52;" f -_avPosture src/Dodge/Data/Creature/Misc.hs 53;" f -_avStrength src/Dodge/Data/Creature/Misc.hs 50;" f -_avatarMaterial src/Dodge/Data/Creature/Misc.hs 49;" f -_avatarPulse src/Dodge/Data/Creature/Misc.hs 48;" f +_avDexterity src/Dodge/Data/Creature/Misc.hs 52;" f +_avIntelligence src/Dodge/Data/Creature/Misc.hs 53;" f +_avPosture src/Dodge/Data/Creature/Misc.hs 54;" f +_avStrength src/Dodge/Data/Creature/Misc.hs 51;" f +_avatarMaterial src/Dodge/Data/Creature/Misc.hs 50;" f +_avatarPulse src/Dodge/Data/Creature/Misc.hs 49;" f _barrelShader src/Data/Preload/Render.hs 27;" f -_barrelType src/Dodge/Data/Creature/Misc.hs 92;" f +_barrelType src/Dodge/Data/Creature/Misc.hs 94;" f _bdColor src/Dodge/Data/Prop.hs 23;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f @@ -1575,8 +1576,8 @@ _bdMinX src/Dodge/Data/Bounds.hs 11;" f _bdMinY src/Dodge/Data/Bounds.hs 13;" f _bdsTrigger src/Dodge/Data/Button.hs 26;" f _beamCombine src/Dodge/Data/Beam.hs 46;" f -_beeHive src/Dodge/Data/Creature/Misc.hs 84;" f -_beeSlime src/Dodge/Data/Creature/Misc.hs 83;" f +_beeHive src/Dodge/Data/Creature/Misc.hs 85;" f +_beeSlime src/Dodge/Data/Creature/Misc.hs 84;" f _blDir src/Dodge/Data/Block.hs 27;" f _blDraw src/Dodge/Data/Block.hs 29;" f _blFootprint src/Dodge/Data/Block.hs 25;" f @@ -1784,7 +1785,7 @@ _doReplicateAction src/Dodge/Data/ActionPlan.hs 114;" f _doReplicateAction src/Dodge/Data/ActionPlan.hs 119;" f _doReplicateTimes src/Dodge/Data/ActionPlan.hs 113;" f _doReplicateTimes src/Dodge/Data/ActionPlan.hs 118;" f -_dodgeCooldown src/Dodge/Data/Creature/Misc.hs 64;" f +_dodgeCooldown src/Dodge/Data/Creature/Misc.hs 65;" f _doors src/Dodge/Data/LWorld.hs 124;" f _drFootPrint src/Dodge/Data/Door.hs 37;" f _drHP src/Dodge/Data/Door.hs 38;" f @@ -1842,8 +1843,8 @@ _flboStride src/Shader/Data.hs 88;" f _floorItems src/Dodge/Data/LWorld.hs 131;" f _floorShader src/Data/Preload/Render.hs 46;" f _floorVBO src/Data/Preload/Render.hs 45;" f -_footForward src/Dodge/Data/Creature/Misc.hs 54;" f -_footForward src/Dodge/Data/Creature/Misc.hs 58;" f +_footForward src/Dodge/Data/Creature/Misc.hs 55;" f +_footForward src/Dodge/Data/Creature/Misc.hs 59;" f _foreShapes src/Dodge/Data/LWorld.hs 136;" f _fsDir src/Dodge/Data/ForegroundShape.hs 14;" f _fsPos src/Dodge/Data/ForegroundShape.hs 13;" f @@ -1898,8 +1899,8 @@ _harvestTarget src/Dodge/Data/ActionPlan.hs 153;" f _heldPos src/Dodge/Data/Input.hs 43;" f _heldWorldPos src/Dodge/Data/Input.hs 45;" f _highlightItems src/Dodge/Data/CWorld.hs 36;" f -_hiveChildren src/Dodge/Data/Creature/Misc.hs 87;" f -_hiveGestation src/Dodge/Data/Creature/Misc.hs 88;" f +_hiveChildren src/Dodge/Data/Creature/Misc.hs 89;" f +_hiveGestation src/Dodge/Data/Creature/Misc.hs 90;" f _hotkeys src/Dodge/Data/LWorld.hs 145;" f _hud src/Dodge/Data/World.hs 47;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f @@ -1958,14 +1959,14 @@ _itsRangeInt src/Dodge/Data/Item.hs 41;" f _killTarget src/Dodge/Data/ActionPlan.hs 159;" f _lAimPos src/Dodge/Data/LWorld.hs 147;" f _lClock src/Dodge/Data/LWorld.hs 142;" f -_lFootPos src/Dodge/Data/Creature/Misc.hs 65;" f +_lFootPos src/Dodge/Data/Creature/Misc.hs 66;" f _lInvLock src/Dodge/Data/LWorld.hs 148;" f _lTestInt src/Dodge/Data/LWorld.hs 144;" f _lTestString src/Dodge/Data/LWorld.hs 143;" f _lWorld src/Dodge/Data/CWorld.hs 24;" f -_lampColor src/Dodge/Data/Creature/Misc.hs 93;" f -_lampHeight src/Dodge/Data/Creature/Misc.hs 93;" f -_lampLSID src/Dodge/Data/Creature/Misc.hs 93;" f +_lampColor src/Dodge/Data/Creature/Misc.hs 95;" f +_lampHeight src/Dodge/Data/Creature/Misc.hs 95;" f +_lampLSID src/Dodge/Data/Creature/Misc.hs 95;" f _lasWepXSF src/Dodge/Data/ComposedItem.hs 42;" f _laserEmmiter src/Dodge/Data/Laser.hs 16;" f _laserTypeDamage src/Dodge/Data/Laser.hs 15;" f @@ -2054,10 +2055,10 @@ _mdPoint3 src/Dodge/Data/Modification.hs 18;" f _mdTimer src/Dodge/Data/Modification.hs 17;" f _mdUpdate src/Dodge/Data/Modification.hs 16;" f _mdUpdate src/Dodge/Data/Modification.hs 25;" f -_meleeCooldown src/Dodge/Data/Creature/Misc.hs 57;" f -_meleeCooldown src/Dodge/Data/Creature/Misc.hs 68;" f -_meleeCooldownL src/Dodge/Data/Creature/Misc.hs 62;" f -_meleeCooldownR src/Dodge/Data/Creature/Misc.hs 63;" f +_meleeCooldown src/Dodge/Data/Creature/Misc.hs 58;" f +_meleeCooldown src/Dodge/Data/Creature/Misc.hs 69;" f +_meleeCooldownL src/Dodge/Data/Creature/Misc.hs 63;" f +_meleeCooldownR src/Dodge/Data/Creature/Misc.hs 64;" f _meleeTarget src/Dodge/Data/ActionPlan.hs 146;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f @@ -2080,12 +2081,14 @@ _mtBranches src/Dodge/Data/MetaTree.hs 13;" f _mtLabel src/Dodge/Data/MetaTree.hs 13;" f _mtTree src/Dodge/Data/MetaTree.hs 13;" f _musicData src/Data/Preload.hs 13;" f -_mvAimSpeed src/Dodge/Data/Creature/Misc.hs 32;" f -_mvSpeed src/Dodge/Data/Creature/Misc.hs 26;" f -_mvSpeed src/Dodge/Data/Creature/Misc.hs 29;" f +_mvPulseTime src/Dodge/Data/Creature/Misc.hs 37;" f +_mvSpeed src/Dodge/Data/Creature/Misc.hs 27;" f +_mvSpeed src/Dodge/Data/Creature/Misc.hs 30;" f +_mvSpeed src/Dodge/Data/Creature/Misc.hs 35;" f _mvToPoint src/Dodge/Data/Creature.hs 74;" f -_mvTurnJit src/Dodge/Data/Creature/Misc.hs 31;" f -_mvTurnRad src/Dodge/Data/Creature/Misc.hs 30;" f +_mvTurnJit src/Dodge/Data/Creature/Misc.hs 32;" f +_mvTurnRad src/Dodge/Data/Creature/Misc.hs 31;" f +_mvTurnSpeed src/Dodge/Data/Creature/Misc.hs 36;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f _mzEffect src/Dodge/Data/Muzzle.hs 15;" f _mzFlareType src/Dodge/Data/Muzzle.hs 14;" f @@ -2128,7 +2131,7 @@ _phTargetingID src/Dodge/Data/Projectile.hs 42;" f _pickUpLevel src/Dodge/Layout/Generate.hs 15;" f _pickUps src/Dodge/Layout/Generate.hs 16;" f _pictureShaders src/Data/Preload/Render.hs 31;" f -_piercedPoints src/Dodge/Data/Creature/Misc.hs 109;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 111;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f _pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f _pjDir src/Dodge/Data/Projectile.hs 18;" f @@ -2174,8 +2177,8 @@ _psSelect src/Dodge/Data/GenWorld.hs 101;" f _pullWallShader src/Data/Preload/Render.hs 22;" f _pulseBalls src/Dodge/Data/LWorld.hs 119;" f _pulseLasers src/Dodge/Data/LWorld.hs 118;" f -_pulseProgress src/Dodge/Data/Creature/Misc.hs 42;" f -_pulseRate src/Dodge/Data/Creature/Misc.hs 41;" f +_pulseProgress src/Dodge/Data/Creature/Misc.hs 43;" f +_pulseRate src/Dodge/Data/Creature/Misc.hs 42;" f _putBlock src/Dodge/Data/GenWorld.hs 43;" f _putButton src/Dodge/Data/GenWorld.hs 39;" f _putChasmChasms src/Dodge/Data/GenWorld.hs 60;" f @@ -2207,7 +2210,7 @@ _pzbPos src/Dodge/Data/PulseLaser.hs 22;" f _pzbTimer src/Dodge/Data/PulseLaser.hs 23;" f _pzbVel src/Dodge/Data/PulseLaser.hs 21;" f _rCommands src/Dodge/Terminal.hs 165;" f -_rFootPos src/Dodge/Data/Creature/Misc.hs 66;" f +_rFootPos src/Dodge/Data/Creature/Misc.hs 67;" f _radarBlips src/Dodge/Data/LWorld.hs 111;" f _radarSweeps src/Dodge/Data/LWorld.hs 107;" f _randGen src/Dodge/Data/World.hs 40;" f @@ -2339,20 +2342,20 @@ _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f _skType src/Dodge/Data/Spark.hs 15;" f _skVel src/Dodge/Data/Spark.hs 12;" f -_skinHead src/Dodge/Data/Creature/Misc.hs 99;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 101;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 100;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 101;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 103;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 102;" f _slInt src/Dodge/Data/HUD.hs 39;" f _slSec src/Dodge/Data/HUD.hs 39;" f _slSet src/Dodge/Data/HUD.hs 39;" f -_slimeCompression src/Dodge/Data/Creature/Misc.hs 78;" f -_slimeEngulfProgress src/Dodge/Data/Creature/Misc.hs 80;" f -_slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 79;" f -_slimeRad src/Dodge/Data/Creature/Misc.hs 75;" f -_slimeRadWobble src/Dodge/Data/Creature/Misc.hs 76;" f -_slimeSplitTimer src/Dodge/Data/Creature/Misc.hs 77;" f -_slinkHeadPos src/Dodge/Data/Creature/Misc.hs 72;" f -_slinkSpine src/Dodge/Data/Creature/Misc.hs 71;" f +_slimeCompression src/Dodge/Data/Creature/Misc.hs 79;" f +_slimeEngulfProgress src/Dodge/Data/Creature/Misc.hs 81;" f +_slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 80;" f +_slimeRad src/Dodge/Data/Creature/Misc.hs 76;" f +_slimeRadWobble src/Dodge/Data/Creature/Misc.hs 77;" f +_slimeSplitTimer src/Dodge/Data/Creature/Misc.hs 78;" f +_slinkHeadPos src/Dodge/Data/Creature/Misc.hs 73;" f +_slinkSpine src/Dodge/Data/Creature/Misc.hs 72;" f _smoothScrollAmount src/Dodge/Data/Input.hs 41;" f _soundAngDist src/Sound/Data.hs 47;" f _soundChannel src/Sound/Data.hs 46;" f @@ -2376,8 +2379,9 @@ _ssShownItems src/Dodge/Data/SelectionList.hs 34;" f _ssShownLength src/Dodge/Data/SelectionList.hs 35;" f _ssboName src/Shader/Data.hs 97;" f _ssboPtr src/Shader/Data.hs 98;" f -_strideAmount src/Dodge/Data/Creature/Misc.hs 55;" f -_strideAmount src/Dodge/Data/Creature/Misc.hs 59;" f +_startStopMv src/Dodge/Data/Creature/Misc.hs 86;" f +_strideAmount src/Dodge/Data/Creature/Misc.hs 56;" f +_strideAmount src/Dodge/Data/Creature/Misc.hs 60;" f _stuckCrID src/Dodge/Data/Projectile.hs 48;" f _stuckCrOffset src/Dodge/Data/Projectile.hs 48;" f _stuckCrRot src/Dodge/Data/Projectile.hs 48;" f @@ -2509,8 +2513,8 @@ _vboName src/Shader/Data.hs 80;" f _vboPtr src/Shader/Data.hs 81;" f _vboShapes src/Data/Preload/Render.hs 44;" f _vboVertexBytes src/Shader/Data.hs 82;" f -_vcMaxTime src/Dodge/Data/Creature/Misc.hs 20;" f -_vcTime src/Dodge/Data/Creature/Misc.hs 20;" f +_vcMaxTime src/Dodge/Data/Creature/Misc.hs 21;" f +_vcTime src/Dodge/Data/Creature/Misc.hs 21;" f _vertices src/Polyhedra/Data.hs 22;" f _viDist src/Dodge/Data/Creature/Perception.hs 41;" f _viFOV src/Dodge/Data/Creature/Perception.hs 40;" f @@ -2864,15 +2868,15 @@ chaseCrit src/Dodge/Creature/ChaseCrit.hs 35;" f chaseCritInternal src/Dodge/Humanoid.hs 12;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 194;" f chaseUpperBody src/Dodge/Creature/Picture.hs 172;" f -chasmRotate src/Dodge/Creature/State/WalkCycle.hs 139;" f +chasmRotate src/Dodge/Creature/State/WalkCycle.hs 142;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 409;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 342;" f -chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 121;" f +chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 124;" f chasmWallToSurface src/Dodge/Base/Collide.hs 132;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f -checkDeath src/Dodge/Creature/Update.hs 301;" f -checkDeath' src/Dodge/Creature/Update.hs 304;" f +checkDeath src/Dodge/Creature/Update.hs 316;" f +checkDeath' src/Dodge/Creature/Update.hs 319;" f checkEndGame src/Dodge/Update.hs 881;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2887,7 +2891,7 @@ chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f chestPQ src/Dodge/Creature/HandPos.hs 180;" f chooseCursorBorders src/Dodge/Render/List.hs 141;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f -chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 168;" f +chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 171;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f circHitWall src/Dodge/Base/Collide.hs 260;" f @@ -2896,8 +2900,8 @@ circOnAnyCr src/Dodge/Base/Collide.hs 305;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f circOnSomeWall src/Dodge/Base/Collide.hs 299;" f -circSegsInside src/Dodge/Creature/State/WalkCycle.hs 107;" f -circSegsInside' src/Dodge/Creature/State/WalkCycle.hs 96;" f +circSegsInside src/Dodge/Creature/State/WalkCycle.hs 110;" f +circSegsInside' src/Dodge/Creature/State/WalkCycle.hs 99;" f circle src/Picture/Base.hs 172;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f circleSolid src/Picture/Base.hs 156;" f @@ -2976,7 +2980,7 @@ compass src/Dodge/Item/Held/BatteryGuns.hs 38;" f compileAndCheckShader src/Shader/Compile.hs 108;" f composeNode src/Dodge/Tree/Compose.hs 77;" f composeTree src/Dodge/Tree/Compose.hs 48;" f -compressionScale src/Dodge/Creature/State/WalkCycle.hs 65;" f +compressionScale src/Dodge/Creature/State/WalkCycle.hs 66;" f compressor src/Dodge/Item/Ammo.hs 74;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 716;" f conEffects src/Dodge/Concurrent.hs 12;" f @@ -2997,7 +3001,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 136;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 411;" f cornerList src/Preload/Render.hs 236;" f -corpseOrGib src/Dodge/Creature/Update.hs 336;" f +corpseOrGib src/Dodge/Creature/Update.hs 359;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -3013,6 +3017,7 @@ crDeathSounds src/Dodge/Creature/Vocalization.hs 40;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f +crEffectsOnDeath src/Dodge/Creature/Update.hs 340;" f crHasTarget src/Dodge/Creature/Test.hs 63;" f crHasTargetLOS src/Dodge/Creature/Test.hs 66;" f crHeight src/Dodge/Base/Collide.hs 187;" f @@ -3027,16 +3032,18 @@ crLeftHandWall src/Dodge/Creature/HandPos.hs 94;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f -crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 47;" f -crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 64;" f -crMvBy src/Dodge/Creature/Impulse/Movement.hs 23;" f -crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 39;" f -crMvForward src/Dodge/Creature/Impulse/Movement.hs 75;" f +crMoveImpulses src/Dodge/Creature/Action.hs 144;" f +crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 43;" f +crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 60;" f +crMvBy src/Dodge/Creature/Impulse/Movement.hs 24;" f +crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 35;" f +crMvForward src/Dodge/Creature/Impulse/Movement.hs 74;" f +crMvForward' src/Dodge/Creature/Impulse/Movement.hs 71;" f crMvType src/Dodge/Creature/MoveType.hs 7;" f crNearPoint src/Dodge/Creature/Test.hs 129;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 244;" f -crPathing src/Dodge/Creature/Action.hs 125;" f +crPathing src/Dodge/Creature/Action.hs 128;" f crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" f @@ -3045,12 +3052,12 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 990;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 294;" f +crUpdate src/Dodge/Creature/Update.hs 309;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f crVocalResetTime src/Dodge/Creature/Vocalization.hs 69;" f -crWalk src/Dodge/Creature/Impulse/Movement.hs 31;" f -crWalkAbsolute src/Dodge/Creature/Impulse/Movement.hs 55;" f +crWalk src/Dodge/Creature/Impulse/Movement.hs 27;" f +crWalkAbsolute src/Dodge/Creature/Impulse/Movement.hs 51;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 16;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 71;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 81;" f @@ -3079,9 +3086,9 @@ createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f creatureShootLaser src/Dodge/HeldUse.hs 859;" f creatureShootPulseLaser src/Dodge/HeldUse.hs 887;" f -creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 78;" f -creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 99;" f -creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 88;" f +creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 77;" f +creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 98;" f +creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 87;" f critDeadEnd src/Dodge/Room/Room.hs 261;" f critInDeadEnd src/Dodge/Room/Room.hs 257;" f critsPillarRoom src/Dodge/Room/Room.hs 417;" f @@ -3128,7 +3135,7 @@ damThingHitWith src/Dodge/Damage.hs 73;" f damToExpBarrel src/Dodge/Barreloid.hs 52;" f damageBlock src/Dodge/Wall/Damage.hs 121;" f damageCodeCommand src/Dodge/Terminal.hs 67;" f -damageCorpse src/Dodge/Creature/Update.hs 54;" f +damageCorpse src/Dodge/Creature/Update.hs 56;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f damageCrystal src/Dodge/Material/Damage.hs 286;" f @@ -3201,8 +3208,8 @@ defHeldItem src/Dodge/Default/Item.hs 9;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 311;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 23;" f -defaultAimingCrit src/Dodge/Default/Creature.hs 108;" f -defaultAudition src/Dodge/Default/Creature.hs 93;" f +defaultAimingCrit src/Dodge/Default/Creature.hs 106;" f +defaultAudition src/Dodge/Default/Creature.hs 91;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f defaultBlock src/Dodge/Default/Block.hs 5;" f defaultBounds src/Dodge/Data/Bounds.hs 18;" f @@ -3215,7 +3222,7 @@ defaultChaseMvType src/Dodge/Creature/MoveType.hs 32;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f defaultConfig src/Dodge/Data/Config.hs 152;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f -defaultCreatureMemory src/Dodge/Default/Creature.hs 66;" f +defaultCreatureMemory src/Dodge/Default/Creature.hs 64;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f defaultDeathSounds src/Dodge/Creature/Vocalization.hs 55;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f @@ -3226,19 +3233,19 @@ defaultDrawButton src/Dodge/Button/Draw.hs 44;" f defaultFlIt src/Dodge/Default.hs 27;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultHUD src/Dodge/Default/World.hs 174;" f -defaultInanimate src/Dodge/Default/Creature.hs 63;" f +defaultInanimate src/Dodge/Default/Creature.hs 61;" f defaultInput src/Dodge/Default/World.hs 13;" f -defaultIntention src/Dodge/Default/Creature.hs 99;" f -defaultInvSize src/Dodge/Default/Creature.hs 73;" f +defaultIntention src/Dodge/Default/Creature.hs 97;" f +defaultInvSize src/Dodge/Default/Creature.hs 71;" f defaultLDP src/Dodge/ListDisplayParams.hs 19;" f defaultLWorld src/Dodge/Default/World.hs 108;" f defaultMachine src/Dodge/Default.hs 30;" f defaultMachineWall src/Dodge/Default/Wall.hs 38;" f -defaultPerceptionState src/Dodge/Default/Creature.hs 76;" f +defaultPerceptionState src/Dodge/Default/Creature.hs 74;" f defaultProximitySensor src/Dodge/Default.hs 53;" f defaultRoom src/Dodge/Default/Room.hs 9;" f defaultTerminal src/Dodge/Default/Terminal.hs 8;" f -defaultVision src/Dodge/Default/Creature.hs 86;" f +defaultVision src/Dodge/Default/Creature.hs 84;" f defaultWall src/Dodge/Default/Wall.hs 15;" f defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWorld src/Dodge/Default/World.hs 34;" f @@ -3348,7 +3355,7 @@ doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f doSectionSize src/Dodge/DisplayInventory.hs 215;" f doSideEffects appDodge/Main.hs 118;" f -doSlimeRadChange src/Dodge/Creature/Update.hs 204;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 219;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 272;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f @@ -3512,9 +3519,9 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f -dropAll src/Dodge/Creature/Update.hs 374;" f +dropAll src/Dodge/Creature/Update.hs 397;" f dropInventoryPath src/Dodge/HeldUse.hs 1371;" f -dropItem src/Dodge/Creature/Action.hs 169;" f +dropItem src/Dodge/Creature/Action.hs 178;" f dropper src/Dodge/Item/Scope.hs 82;" f drumMag src/Dodge/Item/Ammo.hs 31;" f dsZoneSize src/Dodge/Zoning/Cloud.hs 51;" f @@ -3649,13 +3656,13 @@ floorItemPickupInfo src/Dodge/Render/HUD.hs 233;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 143;" f floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f -flyInertia src/Dodge/Creature/State/WalkCycle.hs 69;" f +flyInertia src/Dodge/Creature/State/WalkCycle.hs 72;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 836;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 886;" f foldMTRS src/Dodge/Room/Tutorial.hs 105;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 111;" f -followImpulse src/Dodge/Creature/Impulse.hs 24;" f +followImpulse src/Dodge/Creature/Impulse.hs 25;" f foot1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 882;" f foot2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 758;" f foot3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 896;" f @@ -3777,7 +3784,7 @@ gridInPolygon src/Grid.hs 10;" f gridPoints' src/Grid.hs 37;" f gridPointsOff src/Grid.hs 32;" f gridRoomPos src/Dodge/Room/Procedural.hs 91;" f -groundCliffPush src/Dodge/Creature/State/WalkCycle.hs 87;" f +groundCliffPush src/Dodge/Creature/State/WalkCycle.hs 90;" f groupSplitItemAmounts src/Dodge/Combine.hs 52;" f gruntS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 560;" f gut1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 914;" f @@ -3859,7 +3866,7 @@ hotkeyToChar src/Dodge/Inventory/SelectionList.hs 201;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 198;" f hoverCrit src/Dodge/Creature/ChaseCrit.hs 80;" f -hoverCritHoverSound src/Dodge/Creature/Update.hs 271;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 286;" f hoverCritInternal src/Dodge/Humanoid.hs 46;" f hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f hoverDeathSounds src/Dodge/Creature/Vocalization.hs 62;" f @@ -3944,7 +3951,7 @@ invSetSelection src/Dodge/Inventory.hs 288;" f invSetSelectionPos src/Dodge/Inventory.hs 296;" f invShiftPointBy src/Dodge/ShiftPoint.hs 17;" f invSize src/Dodge/Inventory/CheckSlots.hs 33;" f -inventoryX src/Dodge/Creature.hs 106;" f +inventoryX src/Dodge/Creature.hs 105;" f inverseSelNumPos src/Dodge/SelectionSections.hs 211;" f inverseSelSecYint src/Dodge/SelectionSections.hs 179;" f inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 192;" f @@ -4254,7 +4261,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 572;" f maybeOpenConsole src/Dodge/Update.hs 135;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 135;" f -maybeTakeStep src/Dodge/Creature/State/WalkCycle.hs 146;" f +maybeTakeStep src/Dodge/Creature/State/WalkCycle.hs 149;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f mcBackgroundSound src/Dodge/Machine/Update.hs 152;" f mcColor src/Dodge/Machine/Draw.hs 74;" f @@ -4410,7 +4417,7 @@ nodeNear src/Dodge/Path.hs 94;" f nodesNear src/Dodge/Path.hs 100;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 300;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f -normalGait src/Dodge/Creature/State/WalkCycle.hs 163;" f +normalGait src/Dodge/Creature/State/WalkCycle.hs 166;" f normalTo8 src/Shader/Poke.hs 475;" f normalizeAngle src/Geometry/Vector.hs 136;" f normalizeAnglePi src/Dodge/Base.hs 154;" f @@ -4504,8 +4511,8 @@ perceptionUpdate src/Dodge/Creature/Perception.hs 25;" f performAction src/Dodge/Creature/Action.hs 56;" f performActions src/Dodge/Creature/Action.hs 41;" f performAimAt src/Dodge/Creature/Action.hs 112;" f -performPathTo src/Dodge/Creature/Action.hs 130;" f -performTurnToA src/Dodge/Creature/Action.hs 142;" f +performPathTo src/Dodge/Creature/Action.hs 133;" f +performTurnToA src/Dodge/Creature/Action.hs 151;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f pickUpItem src/Dodge/Inventory/Add.hs 70;" f pickUpItemAt src/Dodge/Inventory/Add.hs 75;" f @@ -4556,7 +4563,7 @@ pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointsToPoly src/Geometry/ConvexPoly.hs 37;" f -poisonSPic src/Dodge/Creature/Update.hs 370;" f +poisonSPic src/Dodge/Creature/Update.hs 393;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4663,7 +4670,7 @@ psposAddLabel src/Dodge/PlacementSpot.hs 71;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f pulseChecker src/Dodge/Item/Equipment.hs 84;" f -pushAgainst src/Dodge/Creature/State/WalkCycle.hs 72;" f +pushAgainst src/Dodge/Creature/State/WalkCycle.hs 75;" f pushCaverns src/Dodge/Room/LongDoor.hs 192;" f pushCr src/Dodge/WallCreatureCollisions.hs 42;" f pushL src/DoubleStack.hs 20;" f @@ -4803,7 +4810,7 @@ renderShadows src/Render.hs 116;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 73;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f -resetStride src/Dodge/Creature/State/WalkCycle.hs 158;" f +resetStride src/Dodge/Creature/State/WalkCycle.hs 161;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f resizeFBOTO' src/Framebuffer/Update.hs 197;" f @@ -4930,7 +4937,7 @@ scaleSH src/Shape.hs 271;" f scalp src/Dodge/Creature/Picture.hs 369;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 367;" f +scorchSPic src/Dodge/Creature/Update.hs 390;" f screenBox src/Dodge/Base/Window.hs 54;" f screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f @@ -4958,7 +4965,7 @@ sectionsSizes src/Dodge/DisplayInventory.hs 205;" f seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f -segmentArea src/Dodge/Creature/Update.hs 252;" f +segmentArea src/Dodge/Creature/Update.hs 267;" f selNumPos src/Dodge/Render/HUD.hs 475;" f selNumPosCardinal src/Dodge/Render/HUD.hs 492;" f selSecDrawCursor src/Dodge/Render/List.hs 101;" f @@ -5004,7 +5011,7 @@ setSelWhileDragging src/Dodge/Update/Input/InGame.hs 360;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f -setSlimeDir src/Dodge/Creature/Update.hs 183;" f +setSlimeDir src/Dodge/Creature/Update.hs 198;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f @@ -5086,10 +5093,10 @@ showEquipItem src/Dodge/Item/Display.hs 109;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 87;" f -showManObj src/Dodge/TestString.hs 110;" f +showManObj src/Dodge/TestString.hs 112;" f showMuzzlePositions src/Dodge/Debug.hs 292;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 127;" f +showTimeFlow src/Dodge/TestString.hs 129;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5126,12 +5133,12 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f slideWindow src/ListHelp.hs 81;" f slimeCrit src/Dodge/Creature/ChaseCrit.hs 68;" f -slimeCritUpdate src/Dodge/Creature/Update.hs 148;" f +slimeCritUpdate src/Dodge/Creature/Update.hs 163;" f slimeEatSound src/Dodge/Update.hs 1107;" f slimeFood src/Dodge/Update.hs 1062;" f slimeSuck src/Dodge/Update.hs 1046;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 56;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 255;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 270;" f slowCrush90 src/Dodge/Room/LongDoor.hs 263;" f slowCrushRoom src/Dodge/Room/LongDoor.hs 148;" f slowDoorRoom src/Dodge/Room/LongDoor.hs 309;" f @@ -5198,8 +5205,8 @@ splashScreen src/Dodge/Initialisation.hs 10;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitLookupTrie src/SimpleTrie.hs 39;" f -splitSlimeCrit src/Dodge/Creature/Update.hs 221;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 211;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 236;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 226;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5234,13 +5241,13 @@ ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 95;" f stackPicturesAtOff src/Dodge/Render/List.hs 98;" f stackText src/Picture/Base.hs 180;" f -stackedInventory src/Dodge/Creature.hs 321;" f +stackedInventory src/Dodge/Creature.hs 320;" f startCr src/Dodge/Creature.hs 85;" f startCrafts src/Dodge/Room/Start.hs 94;" f -startDeathTimer src/Dodge/Creature/Update.hs 324;" f +startDeathTimer src/Dodge/Creature/Update.hs 347;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f -startInvList src/Dodge/Creature.hs 100;" f -startInventory src/Dodge/Creature.hs 103;" f +startInvList src/Dodge/Creature.hs 99;" f +startInventory src/Dodge/Creature.hs 102;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f startPara src/Dodge/StartNewGame.hs 29;" f startRoom src/Dodge/Room/Start.hs 53;" f @@ -5262,7 +5269,7 @@ storageShape src/Dodge/Machine/Draw.hs 31;" f storeRoomID src/Dodge/Room/Modify.hs 23;" f strFromEquipment src/Dodge/Creature/Statistics.hs 59;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 73;" f -strengthFactor src/Dodge/Creature/Impulse/Movement.hs 69;" f +strengthFactor src/Dodge/Creature/Impulse/Movement.hs 65;" f strictify src/MaybeHelp.hs 35;" f strideLength src/Dodge/Creature/HandPos.hs 46;" f strideRot src/Dodge/Item/HeldOffset.hs 80;" f @@ -5328,7 +5335,7 @@ teslaCoil src/Dodge/Item/Held/BatteryGuns.hs 12;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 414;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 18;" f testEvent src/Dodge/Event/Test.hs 11;" f -testInventory src/Dodge/Creature.hs 302;" f +testInventory src/Dodge/Creature.hs 301;" f testPic src/Dodge/Render/ShapePicture.hs 57;" f testSPic src/Dodge/Render/ShapePicture.hs 54;" f testStringInit src/Dodge/TestString.hs 44;" f @@ -5362,7 +5369,7 @@ thingsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 64;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 67;" f throb1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 862;" f throbC4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 820;" f -throwItem src/Dodge/Creature/Action.hs 205;" f +throwItem src/Dodge/Creature/Action.hs 214;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 221;" f tilesToLine src/Shader/AuxAddition.hs 66;" f @@ -5389,7 +5396,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 154;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 158;" f -toDeathCarriage src/Dodge/Creature/Update.hs 329;" f +toDeathCarriage src/Dodge/Creature/Update.hs 352;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5413,7 +5420,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 714;" f topInvW src/Dodge/ListDisplayParams.hs 56;" f topPrismEdgeIndices src/Shader/Poke.hs 344;" f topPrismIndices src/Shader/Poke.hs 419;" f -topTestPart src/Dodge/TestString.hs 105;" f +topTestPart src/Dodge/TestString.hs 107;" f torchShape src/Dodge/Item/Draw/SPic.hs 278;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f @@ -5530,20 +5537,20 @@ updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f -updateBeeCrit src/Dodge/Creature/Update.hs 102;" f +updateBeeCrit src/Dodge/Creature/Update.hs 105;" f updateBounds src/Dodge/Update/Camera.hs 262;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f updateBullets src/Dodge/Update.hs 668;" f updateCamera src/Dodge/Update/Camera.hs 33;" f -updateCarriage src/Dodge/Creature/State/WalkCycle.hs 19;" f -updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 24;" f +updateCarriage src/Dodge/Creature/State/WalkCycle.hs 20;" f +updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 25;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f updateCloud src/Dodge/Update.hs 910;" f updateClouds src/Dodge/Update.hs 779;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f -updateCreature src/Dodge/Creature/Update.hs 43;" f +updateCreature src/Dodge/Creature/Update.hs 45;" f updateCreatureGroups src/Dodge/Update.hs 640;" f updateCreatureSoundPositions src/Dodge/Update.hs 619;" f updateCreatureStride src/Dodge/Update.hs 376;" f @@ -5575,7 +5582,7 @@ updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f updateGas src/Dodge/Update.hs 932;" f updateGasses src/Dodge/Update.hs 782;" f updateGusts src/Dodge/Update.hs 894;" f -updateHiveCrit src/Dodge/Creature/Update.hs 82;" f +updateHiveCrit src/Dodge/Creature/Update.hs 84;" f updateIMl src/Dodge/Update.hs 634;" f updateIMl' src/Dodge/Update.hs 637;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f @@ -5593,7 +5600,7 @@ updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 513;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLivingCreature src/Dodge/Creature/Update.hs 57;" f +updateLivingCreature src/Dodge/Creature/Update.hs 59;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 405;" f @@ -5610,7 +5617,7 @@ updatePlasmaBall src/Dodge/Update.hs 527;" f updatePlasmaBalls src/Dodge/Update.hs 675;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 382;" f +updatePulse src/Dodge/Creature/Update.hs 405;" f updatePulseBall src/Dodge/Update.hs 547;" f updatePulseLaser src/Dodge/Update.hs 722;" f updatePulseLasers src/Dodge/Update.hs 522;" f @@ -5720,7 +5727,7 @@ visibleWalls src/Dodge/Base/Collide.hs 238;" f visionCheck src/Dodge/Creature/Perception.hs 162;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 356;" f -walkCliffPush src/Dodge/Creature/State/WalkCycle.hs 81;" f +walkCliffPush src/Dodge/Creature/State/WalkCycle.hs 84;" f walkNozzle src/Dodge/HeldUse.hs 826;" f walkableNodeNear src/Dodge/Path.hs 90;" f wallBlips src/Dodge/RadarSweep.hs 99;" f @@ -5814,10 +5821,10 @@ yIntercepts src/Dodge/Zoning/Base.hs 78;" f yV2 src/Geometry/Vector.hs 213;" f yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f -youDropItem src/Dodge/Creature/Action.hs 191;" f +youDropItem src/Dodge/Creature/Action.hs 200;" f yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f yourControl src/Dodge/Creature/YourControl.hs 26;" f -yourDefaultStrideLength src/Dodge/Default/Creature.hs 111;" f +yourDefaultStrideLength src/Dodge/Default/Creature.hs 109;" f yourInfo src/Dodge/Creature/Info.hs 10;" f yourInv src/Dodge/Base/You.hs 37;" f yourRootItem src/Dodge/Base/You.hs 26;" f