diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index e8e8c0863..d4a7e5689 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -69,7 +69,8 @@ slimeCrit :: Creature slimeCrit = defaultCreature & crName .~ "slimeCrit" & crHP .~ HP 1000 - & crType .~ SlimeCrit r 0 0 (V2 (slimeToRad r) 0) False 0 +-- & crType .~ SlimeCrit r 0 0 (V2 (slimeToRad r) 0) False 0 + & crType .~ SlimeCrit r 0 0 1 False 0 & crFaction .~ ColorFaction (light green) & crPerception . cpVision . viFOV .~ FloatFOV pi & crActionPlan .~ SlimeIntelligence diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index a66c9793f..895507f2a 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -59,15 +59,16 @@ drawCreature w m cr = translateSP (_crPos cr) . fallrot . rotateSP (_crDir cr) $ drawSlimeCrit :: Creature -> Shape drawSlimeCrit cr = colorSH green $ upperPrismPolyHalf Medium Typical (cr ^?! crType . slimeEngulfProgress + min 15 r) $ polyCirc 6 r - & each %~ scaleAlong d s - & each %~ scaleAlong (vNormal d) (1 / s) - & each %~ rotateV (-cr ^. crDir) - & each %~ (((r-cr^?!crType.slimeRadWobble)/r) *^) + & each . _x *~ p + & each . _y %~ (/p) +-- & each %~ scaleAlong d s +-- & each %~ scaleAlong (vNormal d) (1 / s) +-- & each %~ rotateV (-cr ^. crDir) where - r = cr ^?! crType . slimeSlime . to slimeToRad + r = slimeToRad $ cr ^?! crType . slimeSlime - cr ^?! crType . slimeSlimeChange p = cr ^?! crType . slimeCompression - d = normalize p - s = norm p / r +-- d = normalize p +-- s = norm p / r -- assumes d is a unit vector scaleAlong :: Point2 -> Float -> Point2 -> Point2 diff --git a/src/Dodge/Creature/Radius.hs b/src/Dodge/Creature/Radius.hs index cd78e651c..d456d3821 100644 --- a/src/Dodge/Creature/Radius.hs +++ b/src/Dodge/Creature/Radius.hs @@ -18,4 +18,4 @@ crRad = \case LampCrit {} -> 3 SlinkCrit {} -> 10 HiveCrit {} -> 20 - SlimeCrit {_slimeSlime = r,_slimeRadWobble = x} -> slimeToRad r - x + SlimeCrit {_slimeSlime = r,_slimeSlimeChange = x} -> slimeToRad (r - x) diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index 212dca266..f476aa4b7 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -58,7 +58,8 @@ updateCarriage' cid cr w = \case mp <- mcr ^? crPos d <- mcr ^? crType . slimeCompression r <- mcr ^? crType . slimeSlime . to slimeToRad - return $ w & tocr . crPos .~ mp + (p & _xy %~ compressionScale ((1/r) *^ d)) + --return $ w & tocr . crPos .~ mp + (p & _xy %~ compressionScale ((1/r) *^ d)) + return $ w & tocr . crPos .~ mp + (p & _x *~ d & _y %~ (/d)) where tocr = cWorld . lWorld . creatures . ix cid oop = cr ^. crOldOldPos diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 4c9462245..1671d6e9a 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -201,7 +201,8 @@ updateCalmBee cr cid w , Just r <- tcr ^? crType . slimeSlime . to slimeToRad , Just d <- tcr ^? crType . slimeCompression = w - & tocr . crStance . carriage .~ Mounted ti (cr ^. crPos - tcr ^. crPos & _xy %~ compressionScale (vNormal ((1/r) *^d))) +-- & tocr . crStance . carriage .~ Mounted ti (cr ^. crPos - tcr ^. crPos & _xy %~ compressionScale (vNormal ((1/r) *^d))) + & tocr . crStance . carriage .~ Mounted ti (cr ^. crPos - tcr ^. crPos & _x %~ (/d) & _y *~ d) & tocr . crActionPlan . apAction .~ NoAction | Just (tcr,_) <- gettarg = w & tocr . crActionPlan . apAction .~ PathTo (tcr ^. crPos . _xy) NoAction @@ -253,13 +254,8 @@ slimeCritUpdate cid w | r < 5 = w & cWorld . lWorld . creatures . ix cid . crHP .~ CrDestroyed Gibbed | Just hitp <- w ^? cWorld . lWorld . creatures . ix cid . crDamage . ix 0 . dmPos , Just hitv <- w ^? cWorld . lWorld . creatures . ix cid . crDamage . ix 0 . dmVector --- , Just (cr1,cr2) <- splitSlimeCrit hitp hitv cr --- = --- let cid' = IM.newKey $ w ^. cWorld . lWorld . creatures --- in w & cWorld . lWorld . creatures . ix cid .~ cr1 --- & cWorld . lWorld . creatures . at cid' ?~ (cr2 & crID .~ cid') , Just w' <- splitSlimeCrit' hitp hitv cid cr w = w' - | (cr ^?! crType . slimeIsCompressing) && r > norm p + | (cr ^?! crType . slimeIsCompressing) && 1 > p = let (w',g) = runState (setSlimeDir cid (cr & crDamage .~ []) w) (w ^. randGen) in w' & randGen .~ g | otherwise = updateCarriage cid $ w @@ -271,13 +267,14 @@ slimeCritUpdate cid w where tocr = cWorld . lWorld . creatures . ix cid cr = w ^?! cWorld . lWorld . creatures . ix cid - v = 0.1 *^ normalize p - mvslime = cr & crType . slimeCompression +~ f v +-- v = 0.1 *^ normalize p + v = 0.1 *^ unitVectorAtAngle (cr ^. crDir) + mvslime = cr & crType . slimeCompression +~ f (0.1/r) & crPos . _xy +~ v & crType . slimeIsCompressing %~ f' f | t = negate | otherwise = id - f' | norm p > 3*r/2 = const True + f' | p > 1.5 = const True | otherwise = id t = cr ^?! crType . slimeIsCompressing r = cr ^?! crType . slimeSlime . to slimeToRad @@ -291,24 +288,20 @@ setSlimeDir cid cr w = do then do x <- randInCirc 1 return $ fromMaybe w $ splitSlimeCrit' (x + cxy) (unitVectorAtAngle d) cid cr w --- let (cr1,cr2) = splitSlimeCrit (x + cxy) (unitVectorAtAngle d) cr ^?! _Just --- cid' = IM.newKey $ w ^. cWorld . lWorld . creatures --- return $ w & tocr .~ cr1 --- & tocr' cid' ?~ (cr2 & crID .~ cid') - else return $ w & tocr . crType . slimeCompression .~ r *^ unitVectorAtAngle d +-- else return $ w & tocr . crType . slimeCompression .~ r *^ unitVectorAtAngle d + else return $ w & tocr . crDir .~ d & tocr . crType . slimeIsCompressing .~ False where tocr = cWorld . lWorld . creatures . ix cid --- tocr' i = cWorld . lWorld . creatures . at i cxy = cr ^. crPos . _xy r = cr ^?! crType . slimeSlime . to slimeToRad doSlimeRadChange :: Creature -> Creature -doSlimeRadChange = crType . slimeRadWobble %~ f +doSlimeRadChange = crType . slimeSlimeChange %~ f where - f x | x > 1 = x - 1 - | x < -1 = x + 1 + f x | x > 100 = x - 100 + | x < -100 = x + 100 | otherwise = 0 splitSlimeCrit' :: Point2 -> Point2 -> Int -> Creature -> World -> Maybe World @@ -336,12 +329,14 @@ splitSlimeCrit p v cr = do return (cr' & crPos . _xy .~ mp + (r1 + 0.51) *^ mvdir -- & crType . slimeRad .~ r1 & crType . slimeSlime .~ round (r1 ^ (2 :: Int) * 100) - & crType . slimeCompression .~ rotateV (argV mvdir) (V2 r1 0) + & crType . slimeCompression .~ 1 -- rotateV (argV mvdir) (V2 r1 0) + & crType . slimeIsCompressing .~ False & crDir .~ argV mvdir ,cr' & crPos . _xy .~ mp - (r2 + 0.51) *^ mvdir -- & crType . slimeRad .~ r2 & crType . slimeSlime .~ round (r2^(2::Int) * 100) - & crType . slimeCompression .~ rotateV (argV (-mvdir)) (V2 r2 0) + & crType . slimeCompression .~ 1 -- rotateV (argV (-mvdir)) (V2 r2 0) + & crType . slimeIsCompressing .~ False & crDir .~ argV (-mvdir) & crType . slimeEngulfProgress .~ 0 ) @@ -349,7 +344,7 @@ splitSlimeCrit p v cr = do cxy = cr ^. crPos . _xy r = cr ^?! crType . slimeSlime . to slimeToRad cr' = cr & crDamage .~ [] - & crType . slimeRadWobble .~ 0 + & crType . slimeSlimeChange .~ 0 & crType . slimeSplitTimer .~ 10 & crType . slimeIsCompressing .~ False diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index f67f19a16..17aaf7e3c 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -79,9 +79,10 @@ data CreatureType } | SlimeCrit { _slimeSlime :: Int -- note multiplied by 100 - , _slimeRadWobble :: Float + , _slimeSlimeChange :: Int +-- , _slimeRadWobble :: Float , _slimeSplitTimer :: Int - , _slimeCompression :: Point2 + , _slimeCompression :: Float , _slimeIsCompressing :: Bool , _slimeEngulfProgress :: Float } diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 8d7aaeb87..9b59ef9fe 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -51,6 +51,7 @@ crslime :: Creature -> Int crslime cr = case cr ^. crType of SlimeCrit {_slimeSlime=r} | HP{} <- cr ^. crHP -> r -- r ^ (2::Int) HiveCrit {_hiveSlime=x} -> x + BeeCrit {} | CrDestroyed{} <- cr ^. crHP -> 0 BeeCrit {_beeSlime=x} -> 400 + x _ -> 0 diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index fb9152922..feea43166 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -1092,9 +1092,11 @@ feedSlime s c w = fromMaybe w $ do & slimeEatSound (s ^. crID) (s ^. crPos . _xy) where f cr = cr -- & crType . slimeRad .~ r - & crType . slimeSlime .~ round (r^(2::Int) * 100) - & crType . slimeRadWobble +~ r - r1 - & crType . slimeCompression %~ ((r/r1) *^) + -- & crType . slimeSlime .~ round (r^(2::Int) * 100) + & crType . slimeSlime +~ round (r2^(2::Int) * 100) + & crType . slimeSlimeChange +~ round (r2^(2::Int) * 100) + -- & crType . slimeRadWobble +~ r - r1 -- not sure if this is correct +-- & crType . slimeCompression %~ ((r/r1) *^) --r1 = s ^?! crType . slimeRad r1 = s ^?! crType . slimeSlime . to slimeToRad r2 = c ^. crType . to crRad @@ -1112,10 +1114,12 @@ fuseSlimes c1 c2 = (cWorld . lWorld . creatures . ix mini .~ c) maxi = max i1 i2 i1 = c1 ^. crID i2 = c2 ^. crID - c = c' & crType . slimeSlime .~ round (r^(2::Int) * 100) - & crType . slimeRadWobble +~ r - max r1 r2 - & crType . slimeCompression %~ ((r/max r1 r2) *^) + c = c' & crType . slimeSlime +~ eslime + & crType . slimeSlimeChange +~ eslime +-- & crType . slimeRadWobble +~ r - max r1 r2 +-- & crType . slimeCompression %~ ((r/max r1 r2) *^) & crID .~ mini + eslime = min (c1 ^?! crType . slimeSlime) (c2 ^?! crType . slimeSlime) -- r1 = c1 ^?! crType . slimeRad -- r2 = c2 ^?! crType . slimeRad r1 = c1 ^?! crType . slimeSlime . to slimeToRad diff --git a/tags b/tags index 1b02b2f35..4740a83a4 100644 --- a/tags +++ b/tags @@ -72,11 +72,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 103;" C +AutoCrit src/Dodge/Data/Creature/Misc.hs 104;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C -AvPosture src/Dodge/Data/Creature/Misc.hs 110;" C +AvPosture src/Dodge/Data/Creature/Misc.hs 111;" C Avatar src/Dodge/Data/Creature/Misc.hs 53;" C -AvatarPosture src/Dodge/Data/Creature/Misc.hs 110;" t +AvatarPosture src/Dodge/Data/Creature/Misc.hs 111;" 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 @@ -103,10 +103,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 104;" C +BarrelCrit src/Dodge/Data/Creature/Misc.hs 105;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 34;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 122;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 118;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 123;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 119;" C BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 42;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 49;" C @@ -120,7 +120,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 88;" C +BeeCrit src/Dodge/Data/Creature/Misc.hs 89;" C BeeMvType src/Dodge/Data/Creature/Misc.hs 39;" C BeePheremone src/Dodge/Data/Cloud.hs 47;" t BeltBulletAmmo src/Dodge/Data/AmmoType.hs 11;" C @@ -286,7 +286,7 @@ 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 112;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 113;" t CreatureType src/Dodge/Data/Creature/Misc.hs 52;" t Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 24;" C @@ -406,7 +406,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 124;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 125;" 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 @@ -538,7 +538,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 97;" C +HiveCrit src/Dodge/Data/Creature/Misc.hs 98;" C HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 43;" C HomeUsingTargeting src/Dodge/Data/Projectile.hs 44;" C Hospital src/Dodge/Data/Scenario.hs 69;" C @@ -562,7 +562,7 @@ 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 74;" C Huge src/Shape/Data.hs 24;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 113;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 114;" 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 @@ -651,7 +651,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 105;" C +LampCrit src/Dodge/Data/Creature/Misc.hs 106;" C Large src/Shape/Data.hs 25;" C LasBeamCombine src/Dodge/Data/Beam.hs 38;" C LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C @@ -837,7 +837,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 119;" C +NoCreatureShape src/Dodge/Data/Creature/Misc.hs 120;" 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 @@ -1007,7 +1007,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 123;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 124;" C PlainDeath src/Dodge/Data/Creature.hs 70;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 12;" t @@ -1299,7 +1299,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 102;" C +SwarmCrit src/Dodge/Data/Creature/Misc.hs 103;" 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 @@ -1576,7 +1576,7 @@ _avStrength src/Dodge/Data/Creature/Misc.hs 56;" f _avatarMaterial src/Dodge/Data/Creature/Misc.hs 55;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 54;" f _barrelShader src/Data/Preload/Render.hs 27;" f -_barrelType src/Dodge/Data/Creature/Misc.hs 104;" f +_barrelType src/Dodge/Data/Creature/Misc.hs 105;" 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 @@ -1584,12 +1584,12 @@ _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 -_beeAggro src/Dodge/Data/Creature/Misc.hs 92;" f -_beeHive src/Dodge/Data/Creature/Misc.hs 90;" f -_beeLifespan src/Dodge/Data/Creature/Misc.hs 95;" f +_beeAggro src/Dodge/Data/Creature/Misc.hs 93;" f +_beeHive src/Dodge/Data/Creature/Misc.hs 91;" f +_beeLifespan src/Dodge/Data/Creature/Misc.hs 96;" f _beePheremones src/Dodge/Data/LWorld.hs 99;" f -_beeRandomMovement src/Dodge/Data/Creature/Misc.hs 94;" f -_beeSlime src/Dodge/Data/Creature/Misc.hs 89;" f +_beeRandomMovement src/Dodge/Data/Creature/Misc.hs 95;" f +_beeSlime src/Dodge/Data/Creature/Misc.hs 90;" 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 @@ -1925,9 +1925,9 @@ _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 98;" f -_hiveGestation src/Dodge/Data/Creature/Misc.hs 99;" f -_hiveSlime src/Dodge/Data/Creature/Misc.hs 100;" f +_hiveChildren src/Dodge/Data/Creature/Misc.hs 99;" f +_hiveGestation src/Dodge/Data/Creature/Misc.hs 100;" f +_hiveSlime src/Dodge/Data/Creature/Misc.hs 101;" f _hotkeys src/Dodge/Data/LWorld.hs 146;" f _hud src/Dodge/Data/World.hs 47;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f @@ -1991,9 +1991,9 @@ _lInvLock src/Dodge/Data/LWorld.hs 149;" f _lTestInt src/Dodge/Data/LWorld.hs 145;" f _lTestString src/Dodge/Data/LWorld.hs 144;" f _lWorld src/Dodge/Data/CWorld.hs 24;" f -_lampColor src/Dodge/Data/Creature/Misc.hs 105;" f -_lampHeight src/Dodge/Data/Creature/Misc.hs 105;" f -_lampLSID src/Dodge/Data/Creature/Misc.hs 105;" f +_lampColor src/Dodge/Data/Creature/Misc.hs 106;" f +_lampHeight src/Dodge/Data/Creature/Misc.hs 106;" f +_lampLSID src/Dodge/Data/Creature/Misc.hs 106;" f _lasWepXSF src/Dodge/Data/ComposedItem.hs 42;" f _laserEmmiter src/Dodge/Data/Laser.hs 17;" f _laserTypeDamage src/Dodge/Data/Laser.hs 16;" f @@ -2085,7 +2085,7 @@ _mdUpdate src/Dodge/Data/Modification.hs 16;" f _mdUpdate src/Dodge/Data/Modification.hs 25;" f _meleeCooldown src/Dodge/Data/Creature/Misc.hs 63;" f _meleeCooldown src/Dodge/Data/Creature/Misc.hs 74;" f -_meleeCooldown src/Dodge/Data/Creature/Misc.hs 93;" f +_meleeCooldown src/Dodge/Data/Creature/Misc.hs 94;" f _meleeCooldownL src/Dodge/Data/Creature/Misc.hs 68;" f _meleeCooldownR src/Dodge/Data/Creature/Misc.hs 69;" f _meleeTarget src/Dodge/Data/ActionPlan.hs 147;" f @@ -2164,7 +2164,7 @@ _phTargetingID src/Dodge/Data/Projectile.hs 44;" 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 124;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 125;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 24;" f _pjDetonatorID src/Dodge/Data/Projectile.hs 26;" f _pjDir src/Dodge/Data/Projectile.hs 19;" f @@ -2379,18 +2379,18 @@ _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 114;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 116;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 115;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 115;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 117;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 116;" 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 84;" f -_slimeEngulfProgress src/Dodge/Data/Creature/Misc.hs 86;" f -_slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 85;" f -_slimeRadWobble src/Dodge/Data/Creature/Misc.hs 82;" f +_slimeCompression src/Dodge/Data/Creature/Misc.hs 85;" f +_slimeEngulfProgress src/Dodge/Data/Creature/Misc.hs 87;" f +_slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 86;" f _slimeSlime src/Dodge/Data/Creature/Misc.hs 81;" f -_slimeSplitTimer src/Dodge/Data/Creature/Misc.hs 83;" f +_slimeSlimeChange src/Dodge/Data/Creature/Misc.hs 82;" f +_slimeSplitTimer src/Dodge/Data/Creature/Misc.hs 84;" f _slinkHeadPos src/Dodge/Data/Creature/Misc.hs 78;" f _slinkSpine src/Dodge/Data/Creature/Misc.hs 77;" f _smoothScrollAmount src/Dodge/Data/Input.hs 41;" f @@ -2416,7 +2416,7 @@ _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 -_startStopMv src/Dodge/Data/Creature/Misc.hs 91;" f +_startStopMv src/Dodge/Data/Creature/Misc.hs 92;" f _strategyInt src/Dodge/Data/ActionPlan.hs 154;" f _strideAmount src/Dodge/Data/Creature/Misc.hs 61;" f _strideAmount src/Dodge/Data/Creature/Misc.hs 65;" f @@ -2724,7 +2724,7 @@ argV src/Geometry/Vector.hs 89;" f armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f armouredChasers src/Dodge/Room/Boss.hs 58;" f armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f -arms src/Dodge/Creature/Picture.hs 354;" f +arms src/Dodge/Creature/Picture.hs 355;" f arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f assignHotkey src/Dodge/AssignHotkey.hs 9;" f @@ -2767,7 +2767,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 890;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 231;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Creature/Picture.hs 405;" f +barrelShape src/Dodge/Creature/Picture.hs 406;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 411;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f baseCI src/Dodge/Item/Grammar.hs 167;" f @@ -2776,20 +2776,20 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 325;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 408;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 396;" f -baseShoulder src/Dodge/Creature/Picture.hs 392;" f +baseShoulder src/Dodge/Creature/Picture.hs 393;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 302;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 294;" f baseStickSpread src/Dodge/HeldUse.hs 346;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 138;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 31;" f -basicCrPict src/Dodge/Creature/Picture.hs 77;" f -basicCrShape src/Dodge/Creature/Picture.hs 83;" f +basicCrPict src/Dodge/Creature/Picture.hs 78;" f +basicCrShape src/Dodge/Creature/Picture.hs 84;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMuzFlare src/Dodge/HeldUse.hs 731;" f battery src/Dodge/Item/Ammo.hs 60;" f batteryPack src/Dodge/Item/Equipment.hs 38;" f -beeCrit src/Dodge/Creature/ChaseCrit.hs 89;" f +beeCrit src/Dodge/Creature/ChaseCrit.hs 90;" f beeLifespanCheck src/Dodge/Creature/Update.hs 119;" f beep3QuickS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 710;" f beltMag src/Dodge/Item/Ammo.hs 38;" f @@ -2901,19 +2901,19 @@ changeSwapWith src/Dodge/Inventory.hs 283;" f charToTuple src/Picture/Base.hs 312;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f -chaseCorpse src/Dodge/Creature/Picture.hs 303;" f +chaseCorpse src/Dodge/Creature/Picture.hs 304;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 35;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 193;" f -chaseUpperBody src/Dodge/Creature/Picture.hs 180;" f -chasmRotate src/Dodge/Creature/State/WalkCycle.hs 149;" f +chaseUpperBody src/Dodge/Creature/Picture.hs 181;" f +chasmRotate src/Dodge/Creature/State/WalkCycle.hs 150;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 417;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 348;" f -chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 126;" f +chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 127;" f chasmWallToSurface src/Dodge/Base/Collide.hs 133;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f -checkDeath src/Dodge/Creature/Update.hs 406;" f -checkDeath' src/Dodge/Creature/Update.hs 409;" f +checkDeath src/Dodge/Creature/Update.hs 407;" f +checkDeath' src/Dodge/Creature/Update.hs 410;" f checkEndGame src/Dodge/Update.hs 889;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2928,7 +2928,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 178;" f +chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 179;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 69;" f circHitWall src/Dodge/Base/Collide.hs 262;" f @@ -2937,8 +2937,8 @@ circOnAnyCr src/Dodge/Base/Collide.hs 307;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f circOnSomeWall src/Dodge/Base/Collide.hs 301;" f -circSegsInside src/Dodge/Creature/State/WalkCycle.hs 112;" f -circSegsInside' src/Dodge/Creature/State/WalkCycle.hs 101;" f +circSegsInside src/Dodge/Creature/State/WalkCycle.hs 113;" f +circSegsInside' src/Dodge/Creature/State/WalkCycle.hs 102;" f circle src/Picture/Base.hs 172;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f circleSolid src/Picture/Base.hs 156;" f @@ -3019,7 +3019,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 68;" f +compressionScale src/Dodge/Creature/State/WalkCycle.hs 69;" f compressor src/Dodge/Item/Ammo.hs 74;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 716;" f conEffects src/Dodge/Concurrent.hs 12;" f @@ -3040,7 +3040,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 159;" 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 455;" f +corpseOrGib src/Dodge/Creature/Update.hs 456;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -3048,11 +3048,11 @@ corridorWallN src/Dodge/Room/Corridor.hs 77;" f crAdd src/Dodge/Room/RezBox.hs 116;" f crAwayFromPost src/Dodge/Creature/Test.hs 82;" f crBlips src/Dodge/RadarSweep.hs 88;" f -crCamouflage src/Dodge/Creature/Picture.hs 80;" f +crCamouflage src/Dodge/Creature/Picture.hs 81;" f crCanSeeCr src/Dodge/Creature/Test.hs 49;" f crCrSpring src/Dodge/Update.hs 1010;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 68;" f -crDeathEffects src/Dodge/Creature/Update.hs 430;" f +crDeathEffects src/Dodge/Creature/Update.hs 431;" f 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 @@ -3082,7 +3082,7 @@ crMvType src/Dodge/Creature/MoveType.hs 7;" f crNearPoint src/Dodge/Creature/Test.hs 125;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 244;" f -crOnSeg' src/Dodge/Creature/State/WalkCycle.hs 145;" f +crOnSeg' src/Dodge/Creature/State/WalkCycle.hs 146;" f crPainEffect src/Dodge/Creature/State.hs 50;" f crPathing src/Dodge/Creature/Action.hs 128;" f crRad src/Dodge/Creature/Radius.hs 7;" f @@ -3093,7 +3093,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 998;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 399;" f +crUpdate src/Dodge/Creature/Update.hs 400;" 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 @@ -3104,12 +3104,12 @@ crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 71;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 81;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 123;" f -crabCorpse src/Dodge/Creature/Picture.hs 322;" f +crabCorpse src/Dodge/Creature/Picture.hs 323;" f crabCrit src/Dodge/Creature/ChaseCrit.hs 42;" f crabCritInternal src/Dodge/Humanoid.hs 25;" f -crabFeet src/Dodge/Creature/Picture.hs 232;" f +crabFeet src/Dodge/Creature/Picture.hs 233;" f crabRoom src/Dodge/Room/Tutorial.hs 471;" f -crabUpperBody src/Dodge/Creature/Picture.hs 156;" f +crabUpperBody src/Dodge/Creature/Picture.hs 157;" f craftInfo src/Dodge/Item/Info.hs 168;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 41;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f @@ -3137,7 +3137,7 @@ critsRoom src/Dodge/Room/Room.hs 425;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f crossProd src/Geometry/Vector3D.hs 42;" f -crs src/Dodge/TestString.hs 57;" f +crs src/Dodge/TestString.hs 58;" f crsHit src/Dodge/WorldEvent/ThingsHit.hs 95;" f crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 106;" f crsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 126;" f @@ -3211,10 +3211,10 @@ deZoneIX src/Dodge/Zoning/Base.hs 91;" f deZoneWall src/Dodge/Zoning/Wall.hs 69;" f deadEndPSType src/Dodge/Room/Room.hs 264;" f deadEndRoom src/Dodge/Room/Room.hs 267;" f -deadFeet src/Dodge/Creature/Picture.hs 350;" f -deadRot src/Dodge/Creature/Picture.hs 368;" f -deadScalp src/Dodge/Creature/Picture.hs 363;" f -deadUpperBody src/Dodge/Creature/Picture.hs 389;" f +deadFeet src/Dodge/Creature/Picture.hs 351;" f +deadRot src/Dodge/Creature/Picture.hs 369;" f +deadScalp src/Dodge/Creature/Picture.hs 364;" f +deadUpperBody src/Dodge/Creature/Picture.hs 390;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 778;" f debrisSPic src/Dodge/Prop/Draw.hs 17;" f debrisSize src/Dodge/Block/Debris.hs 131;" f @@ -3396,7 +3396,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 307;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 306;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -3429,14 +3429,14 @@ drawAllShadows src/Dodge/Shadows.hs 5;" f drawAnySelectionBox src/Dodge/Render/Picture.hs 132;" f drawArrowDown src/Dodge/Render/Picture.hs 225;" f drawBaseMachine src/Dodge/Machine/Draw.hs 70;" f -drawBeeCrit src/Dodge/Creature/Picture.hs 123;" f +drawBeeCrit src/Dodge/Creature/Picture.hs 124;" f drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlock src/Dodge/Render/ShapePicture.hs 81;" f drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f drawBullet src/Dodge/Render/ShapePicture.hs 156;" f drawButton src/Dodge/Button/Draw.hs 11;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChaseCrit src/Dodge/Creature/Picture.hs 147;" f +drawChaseCrit src/Dodge/Creature/Picture.hs 148;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f @@ -3447,7 +3447,7 @@ drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f drawCrInfo src/Dodge/Debug.hs 230;" f drawCrInfo' src/Dodge/Debug.hs 225;" f -drawCrabCrit src/Dodge/Creature/Picture.hs 139;" f +drawCrabCrit src/Dodge/Creature/Picture.hs 140;" f drawCreature src/Dodge/Creature/Picture.hs 37;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCreatureRad src/Dodge/Debug.hs 314;" f @@ -3467,7 +3467,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f drawEmptySet src/Dodge/Render/Picture.hs 153;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f -drawEquipment src/Dodge/Creature/Picture.hs 401;" f +drawEquipment src/Dodge/Creature/Picture.hs 402;" f drawExamineInventory src/Dodge/Render/HUD.hs 199;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f @@ -3477,8 +3477,8 @@ drawForceField src/Dodge/Wall/Draw.hs 15;" f drawGapPlus src/Dodge/Render/Picture.hs 284;" f drawGib src/Dodge/Prop/Draw.hs 31;" f drawHUD src/Dodge/Render/HUD.hs 53;" f -drawHive src/Dodge/Creature/Picture.hs 120;" f -drawHoverCrit src/Dodge/Creature/Picture.hs 110;" f +drawHive src/Dodge/Creature/Picture.hs 121;" f +drawHoverCrit src/Dodge/Creature/Picture.hs 111;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f drawInspectWall src/Dodge/Debug/Picture.hs 256;" f drawInspectWalls src/Dodge/Debug/Picture.hs 244;" f @@ -3532,7 +3532,7 @@ drawShadowsByImportance src/Dodge/Shadows.hs 8;" f drawShell src/Dodge/Projectile/Draw.hs 22;" f drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f drawSlimeCrit src/Dodge/Creature/Picture.hs 59;" f -drawSlinkCrit src/Dodge/Creature/Picture.hs 98;" f +drawSlinkCrit src/Dodge/Creature/Picture.hs 99;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f drawSubInventory src/Dodge/Render/HUD.hs 173;" f @@ -3560,7 +3560,7 @@ 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 493;" f +dropAll src/Dodge/Creature/Update.hs 494;" f dropInventoryPath src/Dodge/HeldUse.hs 1380;" f dropItem src/Dodge/Creature/Action.hs 180;" f dropper src/Dodge/Item/Scope.hs 82;" f @@ -3651,7 +3651,7 @@ facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f fdiv src/ShortShow.hs 41;" f feedSlime src/Dodge/Update.hs 1082;" f -feet src/Dodge/Creature/Picture.hs 218;" f +feet src/Dodge/Creature/Picture.hs 219;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f findBlips src/Dodge/RadarSweep.hs 63;" f @@ -3697,7 +3697,7 @@ 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 74;" f +flyInertia src/Dodge/Creature/State/WalkCycle.hs 75;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 836;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 886;" f foldMTRS src/Dodge/Room/Tutorial.hs 111;" f @@ -3728,7 +3728,7 @@ fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 44;" f functionalUpdate src/Dodge/Update.hs 278;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f -fuseSlimes src/Dodge/Update.hs 1103;" f +fuseSlimes src/Dodge/Update.hs 1105;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 48;" f @@ -3824,7 +3824,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 92;" f +groundCliffPush src/Dodge/Creature/State/WalkCycle.hs 93;" f groupSplitItemAmounts src/Dodge/Combine.hs 52;" f gruntS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 560;" f gut1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 914;" f @@ -3897,7 +3897,7 @@ highMesh src/Dodge/Room/Foreground.hs 25;" f hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 660;" f hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 812;" f -hiveCrit src/Dodge/Creature/ChaseCrit.hs 98;" f +hiveCrit src/Dodge/Creature/ChaseCrit.hs 99;" f hivePainEffect src/Dodge/Creature/State.hs 65;" f holdForm src/Dodge/Creature/Boid.hs 139;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f @@ -3906,8 +3906,8 @@ horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f 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 376;" f +hoverCrit src/Dodge/Creature/ChaseCrit.hs 81;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 377;" f hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 228;" f hoverDeathSounds src/Dodge/Creature/Vocalization.hs 62;" f hoverPainEffect src/Dodge/Creature/State.hs 57;" f @@ -4112,7 +4112,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f lamp src/Dodge/Creature/Lamp.hs 18;" f -lampCrSPic src/Dodge/Creature/Picture.hs 410;" f +lampCrSPic src/Dodge/Creature/Picture.hs 411;" f lasCenRunClose' src/Dodge/Room/LasTurret.hs 308;" f lasCenRunClose1 src/Dodge/Room/LasTurret.hs 397;" f lasCenRunClose2 src/Dodge/Room/LasTurret.hs 470;" f @@ -4239,7 +4239,7 @@ makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 124;" f makeColorTermPara src/Dodge/Terminal.hs 121;" f -makeCorpse src/Dodge/Creature/Picture.hs 284;" f +makeCorpse src/Dodge/Creature/Picture.hs 285;" f makeCrGibs src/Dodge/Prop/Gib.hs 19;" f makeDebris src/Dodge/Block/Debris.hs 75;" f makeDebrisDirected src/Dodge/Block/Debris.hs 101;" f @@ -4304,7 +4304,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 156;" f +maybeTakeStep src/Dodge/Creature/State/WalkCycle.hs 157;" 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 @@ -4463,7 +4463,7 @@ nodeNear src/Dodge/Path.hs 94;" f nodesNear src/Dodge/Path.hs 100;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 306;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f -normalGait src/Dodge/Creature/State/WalkCycle.hs 173;" f +normalGait src/Dodge/Creature/State/WalkCycle.hs 174;" f normalTo8 src/Shader/Poke.hs 475;" f normalizeAngle src/Geometry/Vector.hs 136;" f normalizeAnglePi src/Dodge/Base.hs 154;" f @@ -4488,7 +4488,7 @@ oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f onEquipWristShield src/Dodge/Euse.hs 89;" f onRemoveWristShield src/Dodge/Euse.hs 79;" f oneH src/Dodge/Creature/Test.hs 91;" f -oneSmooth src/Dodge/Creature/Picture.hs 215;" f +oneSmooth src/Dodge/Creature/Picture.hs 216;" f openConsole src/Dodge/Update.hs 140;" f optionMenu src/Dodge/Menu.hs 110;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f @@ -4609,7 +4609,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 489;" f +poisonSPic src/Dodge/Creature/Update.hs 490;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4717,7 +4717,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 77;" f +pushAgainst src/Dodge/Creature/State/WalkCycle.hs 78;" f pushCaverns src/Dodge/Room/LongDoor.hs 192;" f pushCr src/Dodge/WallCreatureCollisions.hs 43;" f pushL src/DoubleStack.hs 20;" f @@ -4857,7 +4857,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 168;" f +resetStride src/Dodge/Creature/State/WalkCycle.hs 169;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f resizeFBOTO' src/Framebuffer/Update.hs 197;" f @@ -4977,14 +4977,14 @@ sawtoothFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 852;" f scToTS src/Dodge/Event/Input.hs 34;" f scale src/Picture/Base.hs 141;" f scale3 src/Picture/Base.hs 137;" f -scaleAlong src/Dodge/Creature/Picture.hs 73;" f +scaleAlong src/Dodge/Creature/Picture.hs 74;" f scaleMat src/MatrixHelper.hs 71;" f scaleMatrix src/MatrixHelper.hs 68;" f scaleSH src/Shape.hs 271;" f -scalp src/Dodge/Creature/Picture.hs 377;" f +scalp src/Dodge/Creature/Picture.hs 378;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 486;" f +scorchSPic src/Dodge/Creature/Update.hs 487;" 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 @@ -5012,7 +5012,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 357;" f +segmentArea src/Dodge/Creature/Update.hs 358;" 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 @@ -5059,7 +5059,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 286;" f +setSlimeDir src/Dodge/Creature/Update.hs 289;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f @@ -5141,10 +5141,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 126;" f +showManObj src/Dodge/TestString.hs 127;" f showMuzzlePositions src/Dodge/Debug.hs 320;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 143;" f +showTimeFlow src/Dodge/TestString.hs 144;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5181,13 +5181,13 @@ 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 251;" f -slimeEatSound src/Dodge/Update.hs 1125;" f +slimeCritUpdate src/Dodge/Creature/Update.hs 252;" f +slimeEatSound src/Dodge/Update.hs 1129;" f slimeFood src/Dodge/Update.hs 1074;" f slimeSuck src/Dodge/Update.hs 1058;" f -slimeToRad src/Dodge/Data/Creature/Misc.hs 107;" f +slimeToRad src/Dodge/Data/Creature/Misc.hs 108;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 56;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 360;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 361;" 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 @@ -5247,15 +5247,15 @@ spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 47;" f spawnerRoom src/Dodge/Room/Room.hs 390;" f speedLegs src/Dodge/Item/Equipment.hs 74;" f -spiderJoint src/Dodge/Creature/Picture.hs 266;" f +spiderJoint src/Dodge/Creature/Picture.hs 267;" f splashMenu src/Dodge/Menu.hs 31;" f splashMenuOptions src/Dodge/Menu.hs 36;" f 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 324;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 314;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 323;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 313;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5293,7 +5293,7 @@ stackText src/Picture/Base.hs 180;" f stackedInventory src/Dodge/Creature.hs 318;" f startCr src/Dodge/Creature.hs 83;" f startCrafts src/Dodge/Room/Start.hs 94;" f -startDeathTimer src/Dodge/Creature/Update.hs 442;" f +startDeathTimer src/Dodge/Creature/Update.hs 443;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f @@ -5387,7 +5387,7 @@ testEvent src/Dodge/Event/Test.hs 11;" f testInventory src/Dodge/Creature.hs 299;" f testPic src/Dodge/Render/ShapePicture.hs 57;" f testSPic src/Dodge/Render/ShapePicture.hs 54;" f -testStringInit src/Dodge/TestString.hs 60;" f +testStringInit src/Dodge/TestString.hs 61;" f text src/Picture/Base.hs 185;" f textGrad src/Picture/Text.hs 5;" f textInputBlurb src/Dodge/Terminal.hs 43;" f @@ -5445,7 +5445,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 448;" f +toDeathCarriage src/Dodge/Creature/Update.hs 449;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5469,11 +5469,11 @@ 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 121;" f +topTestPart src/Dodge/TestString.hs 122;" f torchShape src/Dodge/Item/Draw/SPic.hs 278;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f -torso src/Dodge/Creature/Picture.hs 382;" f +torso src/Dodge/Creature/Picture.hs 383;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractorBeamAt src/Dodge/HeldUse.hs 851;" f @@ -5612,7 +5612,7 @@ updateCreatureStrides src/Dodge/Update.hs 376;" f updateDebris src/Dodge/Update.hs 685;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 104;" f -updateDelayedEvents src/Dodge/Update.hs 1132;" f +updateDelayedEvents src/Dodge/Update.hs 1136;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f updateDistortions src/Dodge/Update.hs 664;" f @@ -5671,7 +5671,7 @@ updatePlasmaBall src/Dodge/Update.hs 530;" f updatePlasmaBalls src/Dodge/Update.hs 678;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 501;" f +updatePulse src/Dodge/Creature/Update.hs 502;" f updatePulseBall src/Dodge/Update.hs 550;" f updatePulseLaser src/Dodge/Update.hs 725;" f updatePulseLasers src/Dodge/Update.hs 525;" f @@ -5713,7 +5713,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 495;" f updateWorldEventFlag src/Dodge/Update.hs 129;" f updateWorldEventFlags src/Dodge/Update.hs 117;" f -upperBody src/Dodge/Creature/Picture.hs 397;" f +upperBody src/Dodge/Creature/Picture.hs 398;" f upperBox src/Shape.hs 149;" f upperBoxHalf src/Shape.hs 224;" f upperBoxMT src/Shape.hs 140;" f @@ -5781,7 +5781,7 @@ visibleWalls src/Dodge/Base/Collide.hs 240;" f visionCheck src/Dodge/Creature/Perception.hs 158;" 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 86;" f +walkCliffPush src/Dodge/Creature/State/WalkCycle.hs 87;" f walkNozzle src/Dodge/HeldUse.hs 827;" f walkableNodeNear src/Dodge/Path.hs 90;" f wallBlips src/Dodge/RadarSweep.hs 99;" f