From 06c7e89deed60c0f24e58b3bf40acd6e094094c3 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 2 Apr 2026 22:04:58 +0100 Subject: [PATCH] Work on flying creature inertia --- src/Dodge/Bullet.hs | 3 +- src/Dodge/Creature/Action.hs | 1 - src/Dodge/Creature/ChaseCrit.hs | 4 +- src/Dodge/Creature/Damage.hs | 5 +- src/Dodge/Creature/MoveType.hs | 3 +- src/Dodge/Creature/State.hs | 1 + src/Dodge/Creature/State/WalkCycle.hs | 14 +- src/Dodge/Creature/Update.hs | 2 +- src/Dodge/CreatureEffect.hs | 50 ++--- src/Dodge/Damage.hs | 1 + src/Dodge/Data/Creature/Misc.hs | 4 + src/Dodge/Data/Creature/Stance.hs | 2 +- src/Dodge/Data/CreatureEffect.hs | 2 +- src/Dodge/Data/Damage.hs | 1 + src/Dodge/Data/Machine.hs | 1 - src/Dodge/Material/Damage.hs | 9 +- src/Dodge/TestString.hs | 7 +- src/Dodge/Update.hs | 1 + tags | 265 +++++++++++++------------- 19 files changed, 205 insertions(+), 171 deletions(-) diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 14b205adf..44eb1ac4d 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -172,7 +172,8 @@ hitEffFromBul w bu = case _buEffect bu of getBulHitDams :: Bullet -> Point2 -> [Damage] getBulHitDams bu p = case _buPayload bu of - BulPlain x -> [Piercing x p v] + BulPlain x -> [Piercing x p v + ,Inertial 0 p v] _ -> [] where v = _buVel bu diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 9647f20a7..3bb3d540f 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -122,7 +122,6 @@ crPathing cr = case cr ^. crStance . carriage of performPathTo :: Creature -> World -> Point2 -> ActionUpdate performPathTo cr w p | dist cpos p <= crRad (cr ^. crType) = mempty --- | isWalkable cpos p w = gotowards p | fst (crPathing cr) cpos p w = gotowards p | otherwise = case uncurry pointTowardsImpulse' (crPathing cr) cpos p w of Just q -> gotowards q diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index 7a8952f57..1ac4d0b35 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -36,7 +36,7 @@ hoverCrit :: Creature hoverCrit = defaultCreature & crName .~ "hoverCrit" - & crHP .~ HP 100 + & crHP .~ HP 10000 & crType .~ HoverCrit 0 & crFaction .~ ColorFaction blue - & crStance . carriage .~ Flying 15 + & crStance . carriage .~ Flying 15 0.91 0 diff --git a/src/Dodge/Creature/Damage.hs b/src/Dodge/Creature/Damage.hs index e0555e7fc..68083110b 100644 --- a/src/Dodge/Creature/Damage.hs +++ b/src/Dodge/Creature/Damage.hs @@ -1,6 +1,7 @@ module Dodge.Creature.Damage (applyCreatureDamage) where ---import Linear +import Dodge.Creature.Mass +import Linear import Dodge.Material.Damage import Data.List --import Dodge.Creature.Mass @@ -15,6 +16,8 @@ applyCreatureDamage :: [Damage] -> Creature -> World -> World applyCreatureDamage dms cr w = foldl' (applyIndividualDamage cr) w dms applyIndividualDamage :: Creature -> World -> Damage -> World +applyIndividualDamage cr w (Inertial _ _ v) = w + & cWorld . lWorld . creatures . ix (_crID cr) . crPos . _xy +~ fmap (/ crMass (cr ^. crType)) v applyIndividualDamage cr w dm = let (i,w') = damMatSideEffect dm (crMaterial (_crType cr)) (Left cr) w in w' & damageHP cr i diff --git a/src/Dodge/Creature/MoveType.hs b/src/Dodge/Creature/MoveType.hs index 69d854860..1d7757ae2 100644 --- a/src/Dodge/Creature/MoveType.hs +++ b/src/Dodge/Creature/MoveType.hs @@ -2,12 +2,13 @@ module Dodge.Creature.MoveType (crMvType) where import Dodge.Data.FloatFunction import Dodge.Data.Creature +import Control.Lens crMvType :: Creature -> CrMvType crMvType cr = case _crType cr of Avatar {_avMoveSpeed = s} -> MvWalking s ChaseCrit {} -> defaultChaseMvType - HoverCrit {} -> defaultChaseMvType + HoverCrit {} -> defaultChaseMvType & mvSpeed .~ 0.3 SwarmCrit -> defaultChaseMvType AutoCrit -> defaultAimMvType BarrelCrit {} -> defaultAimMvType diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 41bf33a56..82dc03f10 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -48,6 +48,7 @@ doDamage cid w = fromMaybe w $ do -- TODO generalise shake to arbitrary damage amounts applyPastDamages :: Creature -> World -> World applyPastDamages cr w + | HoverCrit {} <- cr ^. crType = w | _crPain cr > 200 = dojitter 3 100 | _crPain cr > 20 = dojitter 2 10 | _crPain cr > 0 = dojitter 1 1 diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index 956f4c794..ef6552f43 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -1,6 +1,6 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.Creature.State.WalkCycle (updateWalkCycle) where +module Dodge.Creature.State.WalkCycle (updateCarriage) where import Dodge.Creature.HandPos import Linear @@ -9,8 +9,8 @@ import Dodge.Data.World import Dodge.SoundLogic import Sound.Data -updateWalkCycle :: Int -> World -> World -updateWalkCycle cid w +updateCarriage :: Int -> World -> World +updateCarriage cid w | Just cr <- w ^? cWorld . lWorld . creatures . ix cid , Walking x ff <- cr ^. crStance . carriage , x >= strideLength cr = @@ -21,7 +21,15 @@ updateWalkCycle cid w (chooseFootSound ff) Nothing & over (cWorld . lWorld . creatures . ix cid . crStance . carriage) resetStride + | Just cr <- w ^? cWorld . lWorld . creatures . ix cid + , Flying _ x oop <- cr ^. crStance . carriage = + w & cWorld . lWorld . creatures . ix cid . crPos . _xy +~ x *^ f (cr ^. crOldPos . _xy - oop) | otherwise = w + where + -- limits max speed gained through inertia +-- f = id + f v | norm v > 10 = 10 *^ signorm v + | otherwise = v resetStride :: Carriage -> Carriage resetStride = \case diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index d1084faab..f6d3f4834 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -76,7 +76,7 @@ crUpdate cid = checkDeath cid . doDamage cid . invItemEffs cid - . updateWalkCycle cid -- stride appears to be updated elsewhere as well + . updateCarriage cid -- stride appears to be updated elsewhere as well checkDeath :: Int -> World -> World checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix cid) w diff --git a/src/Dodge/CreatureEffect.hs b/src/Dodge/CreatureEffect.hs index 4c6d9d0c5..5762056ce 100644 --- a/src/Dodge/CreatureEffect.hs +++ b/src/Dodge/CreatureEffect.hs @@ -55,30 +55,30 @@ doCrWdAc cw = case cw of -- $ -- DoReplicate t $ -- foldr DoActionThen NoAction as - ChooseMovementSpreadGun -> chooseMovementSpreadGun +-- ChooseMovementSpreadGun -> chooseMovementSpreadGun ChooseMovementLtAuto -> chooseMovementLtAuto -chooseMovementSpreadGun :: Creature -> World -> Action -chooseMovementSpreadGun cr w - | dist cpos p < 30 && safeAngleVV (p -.- cpos) (unitVectorAtAngle (_crDir cr)) > pi = - DoImpulses [UseItem, MoveForward (-3)] - | d < 30 = DoImpulses [UseItem, TurnToward p 0.06] - | d < 60 = DoImpulses [UseItem, TurnToward p 0.06, MoveForward 3] - | d < 100 = DoImpulses [TurnToward p 0.06, MoveForward 3] - | d < 200 = DoImpulses [TurnToward p (0.06 + 0.002 * (d -100)), MoveForward 3] - | otherwise = - DoImpulses [TurnToward p 0.26, MoveForward 3] - where - d = dist cpos p - cpos = cr ^. crPos . _xy - --tcr = _creatures (_cWorld w) IM.! 0 - tcr = w ^?! cWorld . lWorld . creatures . ix 0 - p = tcr ^. crPos . _xy +--chooseMovementSpreadGun :: Creature -> World -> Action +--chooseMovementSpreadGun cr w +-- | dist cpos p < 30 && safeAngleVV (p -.- cpos) (unitVectorAtAngle (_crDir cr)) > pi = +-- DoImpulses [UseItem, MoveForward (-3)] +-- | d < 30 = DoImpulses [UseItem, TurnToward p 0.06] +-- | d < 60 = DoImpulses [UseItem, TurnToward p 0.06, MoveForward 3] +-- | d < 100 = DoImpulses [TurnToward p 0.06, MoveForward 3] +-- | d < 200 = DoImpulses [TurnToward p (0.06 + 0.002 * (d -100)), MoveForward 3] +-- | otherwise = +-- DoImpulses [TurnToward p 0.26, MoveForward 3] +-- where +-- d = dist cpos p +-- cpos = cr ^. crPos . _xy +-- --tcr = _creatures (_cWorld w) IM.! 0 +-- tcr = w ^?! cWorld . lWorld . creatures . ix 0 +-- p = tcr ^. crPos . _xy chooseMovementLtAuto :: Creature -> World -> Action chooseMovementLtAuto cr w - | dist cpos p > 200 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward 3] - | dist cpos p < 80 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward (-3)] +-- | dist cpos p > 200 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward 3] +-- | dist cpos p < 80 = DoImpulses [UseItem, TurnToward p 0.05, MoveForward (-3)] | errorAngleVV 22 (p' -.- cpos) (unitVectorAtAngle (_crDir cr)) < 0.4 = DoImpulses [UseItem, TurnToward p' 0.01, Move (V2 0 3)] | otherwise = @@ -90,9 +90,9 @@ chooseMovementLtAuto cr w v = vNormal $ p -.- cpos p' = p +.+ 0.5 *.* (v -.- 20 *.* normalizeV v) -fleeFrom :: Creature -> Maybe Creature -> Action -fleeFrom cr mtcr = case mtcr of - Just tcr -> DoImpulses - [MoveForward 3 - , TurnToward ((2 *.* (cr ^. crPos ._xy)) -.- (tcr ^. crPos . _xy)) (pi / 4)] - Nothing -> NoAction +--fleeFrom :: Creature -> Maybe Creature -> Action +--fleeFrom cr mtcr = case mtcr of +-- Just tcr -> DoImpulses +-- [MoveForward 3 +-- , TurnToward ((2 *.* (cr ^. crPos ._xy)) -.- (tcr ^. crPos . _xy)) (pi / 4)] +-- Nothing -> NoAction diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index 84f0d19eb..36105d842 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -49,6 +49,7 @@ dmType = \case Explosive{} -> PhysicalDamage Poison{} -> PoisonDamage Enterrement{} -> PhysicalDamage + Inertial {} -> PhysicalDamage collectDamageTypes :: [Damage] -> M.Map DamageType Int collectDamageTypes = foldl' (flip f) M.empty diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index d4ef069c5..93b3db4f3 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -29,6 +29,10 @@ data CrMvType , _mvTurnJit :: Float , _mvAimSpeed :: FloatFloat } +-- | CrAccMv +-- { _mvAcc :: Float +-- , _mvTopSpeed :: Float +-- } deriving (Eq, Ord, Show, Read) --Generic, Flat) data Pulse = PulseStatus diff --git a/src/Dodge/Data/Creature/Stance.hs b/src/Dodge/Data/Creature/Stance.hs index 44e378219..f8e9f888d 100644 --- a/src/Dodge/Data/Creature/Stance.hs +++ b/src/Dodge/Data/Creature/Stance.hs @@ -21,7 +21,7 @@ data Stance = Stance data Carriage = Walking {_strideAmount :: Float, _footForward :: FootForward} | Floating - | Flying {_flyHeight :: Float} + | Flying {_flyHeight :: Float, _flyInertia :: Float, _oldOldPos :: Point2} | Boosting Point2 | Falling {_fallFlail :: Float, _fallFoot :: FootForward} deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/CreatureEffect.hs b/src/Dodge/Data/CreatureEffect.hs index 4e697ccfd..05793a128 100644 --- a/src/Dodge/Data/CreatureEffect.hs +++ b/src/Dodge/Data/CreatureEffect.hs @@ -26,7 +26,7 @@ data CrAc = CrTurnAround data CrWdAc = CrWdBFSThenReturn Int - | ChooseMovementSpreadGun +-- | ChooseMovementSpreadGun | ChooseMovementLtAuto deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index f4fd78922..e63e1d053 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -25,6 +25,7 @@ data Damage | Explosive {_dmAmount :: Int, _dmCenter :: Point2} | Poison {_dmAmount :: Int} | Enterrement {_dmAmount :: Int} + | Inertial {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Damage diff --git a/src/Dodge/Data/Machine.hs b/src/Dodge/Data/Machine.hs index e43bb6669..7a0b7e4e4 100644 --- a/src/Dodge/Data/Machine.hs +++ b/src/Dodge/Data/Machine.hs @@ -12,7 +12,6 @@ module Dodge.Data.Machine ( module Dodge.Data.GenParams, ) where -import Color.Data import ShortShow import Dodge.Data.AmmoType import Control.Lens diff --git a/src/Dodge/Material/Damage.hs b/src/Dodge/Material/Damage.hs index 9ac37a67e..8cc28a07f 100644 --- a/src/Dodge/Material/Damage.hs +++ b/src/Dodge/Material/Damage.hs @@ -56,6 +56,7 @@ damageStone dm ecw w = case dm of Poison{} -> f 0 id Enterrement{} -> f 0 id Flashing{} -> f 0 id + Inertial{} -> f 0 id where f x g = (x, g w) dmam = dm ^. dmAmount @@ -105,7 +106,8 @@ damagePhotovoltaic dm ecw w = case dm of Electrical{} -> f 0 id Poison{} -> f 0 id Enterrement{} -> f 0 id - Flashing{} -> f 0 id + Flashing{} -> f (10*dmam) id + Inertial{} -> f 0 id where f x g = (x, g w) dmam = dm ^. dmAmount @@ -138,6 +140,7 @@ damageMetal dm ecw w = case dm of Poison{} -> f 0 id Enterrement{} -> f 0 id Flashing{} -> f 0 id + Inertial{} -> f 0 id where f x g = (x, g w) dmam = dm ^. dmAmount @@ -178,6 +181,7 @@ damageFlesh dm _ w = (dm ^. dmAmount,) $ w & case dm of Poison{} -> id Enterrement{} -> id Flashing{} -> id + Inertial{} -> id where randsound p xs = let (x, g) = runState (takeOne xs) $ _randGen w @@ -204,6 +208,7 @@ damageDirt dm _ w = Poison{} -> id Enterrement{} -> id Flashing{} -> id + Inertial{} -> id where randsound p xs = let (x, g) = runState (takeOne xs) $ _randGen w @@ -231,6 +236,7 @@ damageGlass dm ecw w = case dm of Poison{} -> f 0 id Enterrement{} -> f 0 id Flashing{} -> f 0 id + Inertial{} -> f 0 id where f x g = (x, g w) dmam = dm ^. dmAmount @@ -295,6 +301,7 @@ damageCrystal dm ecw w = case dm of Poison{} -> f id Enterrement{} -> f id Flashing{} -> f id + Inertial{} -> f id where f g = (0, g w) rdir p t = argV $ reflectIn v t diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 316fe3aec..e306c3524 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -35,7 +35,12 @@ import Data.Monoid import RandomHelp testStringInit :: Universe -> [String] -testStringInit u = u ^.. uvWorld . cWorld . lWorld . creatures . each . crActionPlan . apAction . to show +testStringInit u = [show p, show op, show oop, show (op - oop), show . norm $ op - oop] + where + f = fromMaybe 0 + p = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crPos . _xy + op = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crOldPos . _xy + oop = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crStance . carriage . oldOldPos -- fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . ix 0 . crWallTouch . each) -- (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crStance . carriage) -- (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crStance . carriage . strideAmount) diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index a64c40262..6814f334b 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -579,6 +579,7 @@ updateTerminal tm w = fromMaybe w $ do setOldPos :: Creature -> Creature setOldPos cr = cr & crOldPos .~ _crPos cr + & crStance . carriage . oldOldPos .~ cr ^. crOldPos . _xy --doRewind :: World -> World --doRewind w = case w ^. cwTime . maybeWorld of diff --git a/tags b/tags index 1178e47ee..a5fbe559c 100644 --- a/tags +++ b/tags @@ -73,11 +73,11 @@ AttachType src/Dodge/Data/Item/Combine.hs 91;" 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 53;" C +AutoCrit src/Dodge/Data/Creature/Misc.hs 57;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C -AvPosture src/Dodge/Data/Creature/Misc.hs 57;" C -Avatar src/Dodge/Data/Creature/Misc.hs 41;" C -AvatarPosture src/Dodge/Data/Creature/Misc.hs 57;" t +AvPosture src/Dodge/Data/Creature/Misc.hs 61;" C +Avatar src/Dodge/Data/Creature/Misc.hs 45;" C +AvatarPosture src/Dodge/Data/Creature/Misc.hs 61;" t Awareness src/Dodge/Data/Creature/Perception.hs 63;" t BANGCONE src/Dodge/Data/Item/Combine.hs 149;" C BANGROD src/Dodge/Data/Item/Combine.hs 158;" C @@ -103,10 +103,10 @@ BURSTRIFLE src/Dodge/Data/Item/Combine.hs 157;" C BackdropCurs src/Dodge/Data/SelectionList.hs 22;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C Bark src/Dodge/Data/ActionPlan.hs 39;" C -BarrelCrit src/Dodge/Data/Creature/Misc.hs 54;" C +BarrelCrit src/Dodge/Data/Creature/Misc.hs 58;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 33;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 69;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 65;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 73;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 69;" 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 @@ -203,12 +203,11 @@ CardinalPointBetween src/Dodge/Data/CardinalPoint.hs 20;" t Carriage src/Dodge/Data/Creature/Stance.hs 21;" t ChangePosture src/Dodge/Data/ActionPlan.hs 41;" C ChangeStrategy src/Dodge/Data/ActionPlan.hs 43;" C -ChaseCrit src/Dodge/Data/Creature/Misc.hs 50;" C +ChaseCrit src/Dodge/Data/Creature/Misc.hs 54;" 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 ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 30;" C -ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 29;" C Circ_collision_test src/Dodge/Data/Config.hs 99;" C Climate src/Dodge/Data/Scenario.hs 32;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 139;" C @@ -279,8 +278,8 @@ 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 59;" t -CreatureType src/Dodge/Data/Creature/Misc.hs 40;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 63;" t +CreatureType src/Dodge/Data/Creature/Misc.hs 44;" 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 @@ -398,7 +397,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 38;" 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 71;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 75;" 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 @@ -549,9 +548,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 51;" C +HoverCrit src/Dodge/Data/Creature/Misc.hs 55;" C Huge src/Shape/Data.hs 23;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 60;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 64;" C IMSI src/Dodge/Data/SelectionList.hs 40;" t IMSS src/Dodge/Data/SelectionList.hs 38;" t INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C @@ -576,6 +575,7 @@ InSimulation src/Dodge/Data/Scenario.hs 20;" C InVoid src/Dodge/Data/Item/Location.hs 39;" C Inanimate src/Dodge/Data/ActionPlan.hs 15;" C IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 11;" C +Inertial src/Dodge/Data/Damage.hs 28;" C InheritFloor src/Data/Tile.hs 12;" C Input src/Dodge/Data/Input.hs 33;" t InputMemory src/Dodge/Data/Input.hs 52;" t @@ -638,7 +638,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 55;" C +LampCrit src/Dodge/Data/Creature/Misc.hs 59;" C Large src/Shape/Data.hs 24;" C LasBeamCombine src/Dodge/Data/Beam.hs 38;" C LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C @@ -698,12 +698,12 @@ MOTOR src/Dodge/Data/Item/Combine.hs 63;" C MPO src/Dodge/Base/Collide.hs 97;" t MTRS src/Dodge/Data/MTRS.hs 6;" t MTree src/Dodge/Data/MetaTree.hs 12;" C -Machine src/Dodge/Data/Machine.hs 31;" t +Machine src/Dodge/Data/Machine.hs 30;" t MachineAltSound src/Dodge/Data/SoundOrigin.hs 23;" C MachineBackgroundSound src/Dodge/Data/SoundOrigin.hs 22;" C MachinePart src/Dodge/Data/Wall/Structure.hs 14;" C MachinePrimarySound src/Dodge/Data/SoundOrigin.hs 21;" C -MachineType src/Dodge/Data/Machine.hs 45;" t +MachineType src/Dodge/Data/Machine.hs 44;" t MagBelow src/Dodge/Data/Muzzle.hs 22;" C Magnet src/Dodge/Data/Magnet.hs 21;" t MagnetAlign src/Dodge/Data/Magnet.hs 15;" C @@ -728,13 +728,13 @@ MapperSF src/Dodge/Data/ComposedItem.hs 39;" C Material src/Dodge/Data/Material.hs 10;" t MaterialSound src/Dodge/Data/SoundOrigin.hs 35;" C Maybe' src/MaybeHelp.hs 11;" t -McDamSensor src/Dodge/Data/Machine.hs 47;" C -McDistributer src/Dodge/Data/Machine.hs 51;" C -McProxSensor src/Dodge/Data/Machine.hs 48;" C -McStorage src/Dodge/Data/Machine.hs 50;" C -McTerminal src/Dodge/Data/Machine.hs 46;" C -McTrigger src/Dodge/Data/Machine.hs 52;" C -McTurret src/Dodge/Data/Machine.hs 49;" C +McDamSensor src/Dodge/Data/Machine.hs 46;" C +McDistributer src/Dodge/Data/Machine.hs 50;" C +McProxSensor src/Dodge/Data/Machine.hs 47;" C +McStorage src/Dodge/Data/Machine.hs 49;" C +McTerminal src/Dodge/Data/Machine.hs 45;" C +McTrigger src/Dodge/Data/Machine.hs 51;" C +McTurret src/Dodge/Data/Machine.hs 48;" C MdFlickerUpdate src/Dodge/Data/WorldEffect.hs 53;" C MdSetLSCol src/Dodge/Data/WorldEffect.hs 52;" C MdTrigIf src/Dodge/Data/WorldEffect.hs 51;" C @@ -846,7 +846,7 @@ NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C Noclip src/Dodge/Data/Config.hs 83;" C NodeMTree src/Dodge/Data/MetaTree.hs 17;" C NodeTree src/Dodge/Data/MetaTree.hs 16;" C -NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 66;" C +NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 70;" C NonInf src/Dodge/Data/CardinalPoint.hs 44;" C NormalOptions src/Dodge/Data/Universe.hs 71;" C NormalSpark src/Dodge/Data/Spark.hs 19;" C @@ -987,7 +987,7 @@ Piercing src/Dodge/Data/Damage.hs 16;" C Piezoelectric src/Dodge/Data/Material.hs 23;" C Placement src/Dodge/Data/GenWorld.hs 113;" t PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t -PlainBarrel src/Dodge/Data/Creature/Misc.hs 70;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 74;" C PlainDeath src/Dodge/Data/Creature.hs 69;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t @@ -1025,12 +1025,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 34;" t +Pulse src/Dodge/Data/Creature/Misc.hs 38;" t PulseBall src/Dodge/Data/PulseLaser.hs 20;" t PulseBallSF src/Dodge/Data/ComposedItem.hs 45;" C PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t PulseLaserSF src/Dodge/Data/ComposedItem.hs 42;" C -PulseStatus src/Dodge/Data/Creature/Misc.hs 34;" C +PulseStatus src/Dodge/Data/Creature/Misc.hs 38;" C PumpSF src/Dodge/Data/ComposedItem.hs 48;" C PushSource src/Dodge/Data/Door.hs 23;" t PushedBy src/Dodge/Data/Door.hs 25;" C @@ -1271,7 +1271,7 @@ Survive src/Dodge/Data/Scenario.hs 5;" C Suspicious src/Dodge/Data/Creature/Perception.hs 64;" 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 52;" C +SwarmCrit src/Dodge/Data/Creature/Misc.hs 56;" C TAPE src/Dodge/Data/Item/Combine.hs 55;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C TCBase src/Dodge/Data/Terminal.hs 49;" C @@ -1374,7 +1374,7 @@ TurnTo src/Dodge/Data/ActionPlan.hs 35;" C TurnToPoint src/Dodge/Data/ActionPlan.hs 71;" C TurnToward src/Dodge/Data/ActionPlan.hs 32;" C TurnTowardCr src/Dodge/Data/CreatureEffect.hs 9;" C -Turret src/Dodge/Data/Machine.hs 65;" t +Turret src/Dodge/Data/Machine.hs 64;" t TurretInt src/Dodge/Data/Item/Location.hs 19;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C TwoHandFlat src/Dodge/Data/AimStance.hs 12;" C @@ -1537,15 +1537,15 @@ _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 45;" f -_avIntelligence src/Dodge/Data/Creature/Misc.hs 46;" f -_avMoveSpeed src/Dodge/Data/Creature/Misc.hs 47;" f -_avPosture src/Dodge/Data/Creature/Misc.hs 48;" f -_avStrength src/Dodge/Data/Creature/Misc.hs 44;" f -_avatarMaterial src/Dodge/Data/Creature/Misc.hs 43;" f -_avatarPulse src/Dodge/Data/Creature/Misc.hs 42;" f +_avDexterity src/Dodge/Data/Creature/Misc.hs 49;" f +_avIntelligence src/Dodge/Data/Creature/Misc.hs 50;" f +_avMoveSpeed src/Dodge/Data/Creature/Misc.hs 51;" f +_avPosture src/Dodge/Data/Creature/Misc.hs 52;" f +_avStrength src/Dodge/Data/Creature/Misc.hs 48;" f +_avatarMaterial src/Dodge/Data/Creature/Misc.hs 47;" f +_avatarPulse src/Dodge/Data/Creature/Misc.hs 46;" f _barrelShader src/Data/Preload/Render.hs 27;" f -_barrelType src/Dodge/Data/Creature/Misc.hs 54;" f +_barrelType src/Dodge/Data/Creature/Misc.hs 58;" 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 @@ -1729,13 +1729,16 @@ _dmAmount src/Dodge/Data/Damage.hs 16;" f _dmAmount src/Dodge/Data/Damage.hs 19;" f _dmAmount src/Dodge/Data/Damage.hs 22;" f _dmAmount src/Dodge/Data/Damage.hs 25;" f +_dmAmount src/Dodge/Data/Damage.hs 28;" f _dmCenter src/Dodge/Data/Damage.hs 25;" f _dmPos src/Dodge/Data/Damage.hs 16;" f _dmPos src/Dodge/Data/Damage.hs 20;" f _dmPos src/Dodge/Data/Damage.hs 23;" f +_dmPos src/Dodge/Data/Damage.hs 28;" f _dmVector src/Dodge/Data/Damage.hs 16;" f _dmVector src/Dodge/Data/Damage.hs 19;" f _dmVector src/Dodge/Data/Damage.hs 22;" f +_dmVector src/Dodge/Data/Damage.hs 28;" f _doActionIfAction src/Dodge/Data/ActionPlan.hs 89;" f _doActionIfCondition src/Dodge/Data/ActionPlan.hs 88;" f _doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 93;" f @@ -1816,6 +1819,7 @@ _floorItems src/Dodge/Data/LWorld.hs 131;" f _floorShader src/Data/Preload/Render.hs 46;" f _floorVBO src/Data/Preload/Render.hs 45;" f _flyHeight src/Dodge/Data/Creature/Stance.hs 24;" f +_flyInertia src/Dodge/Data/Creature/Stance.hs 24;" f _footForward src/Dodge/Data/Creature/Stance.hs 22;" f _foreShapes src/Dodge/Data/LWorld.hs 136;" f _fsDir src/Dodge/Data/ForegroundShape.hs 14;" f @@ -1932,9 +1936,9 @@ _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 55;" f -_lampHeight src/Dodge/Data/Creature/Misc.hs 55;" f -_lampLSID src/Dodge/Data/Creature/Misc.hs 55;" f +_lampColor src/Dodge/Data/Creature/Misc.hs 59;" f +_lampHeight src/Dodge/Data/Creature/Misc.hs 59;" f +_lampLSID src/Dodge/Data/Creature/Misc.hs 59;" f _lasWepXSF src/Dodge/Data/ComposedItem.hs 41;" f _laserEmmiter src/Dodge/Data/Laser.hs 16;" f _laserTypeDamage src/Dodge/Data/Laser.hs 15;" f @@ -1982,18 +1986,18 @@ _mapInvZoom src/Dodge/Data/HUD.hs 19;" f _matUBO src/Data/Preload/Render.hs 42;" f _mbAttach src/Dodge/Data/MetaTree.hs 19;" f _mbTree src/Dodge/Data/MetaTree.hs 19;" f -_mcDamage src/Dodge/Data/Machine.hs 40;" f -_mcDir src/Dodge/Data/Machine.hs 38;" f -_mcFootPrint src/Dodge/Data/Machine.hs 36;" f -_mcHP src/Dodge/Data/Machine.hs 39;" f -_mcID src/Dodge/Data/Machine.hs 32;" f -_mcMaterial src/Dodge/Data/Machine.hs 34;" f -_mcMounts src/Dodge/Data/Machine.hs 42;" f -_mcPos src/Dodge/Data/Machine.hs 37;" f -_mcSkin src/Dodge/Data/Machine.hs 35;" f -_mcTriggerID src/Dodge/Data/Machine.hs 52;" f -_mcType src/Dodge/Data/Machine.hs 41;" f -_mcdStorageMachine src/Dodge/Data/Machine.hs 51;" f +_mcDamage src/Dodge/Data/Machine.hs 39;" f +_mcDir src/Dodge/Data/Machine.hs 37;" f +_mcFootPrint src/Dodge/Data/Machine.hs 35;" f +_mcHP src/Dodge/Data/Machine.hs 38;" f +_mcID src/Dodge/Data/Machine.hs 31;" f +_mcMaterial src/Dodge/Data/Machine.hs 33;" f +_mcMounts src/Dodge/Data/Machine.hs 41;" f +_mcPos src/Dodge/Data/Machine.hs 36;" f +_mcSkin src/Dodge/Data/Machine.hs 34;" f +_mcTriggerID src/Dodge/Data/Machine.hs 51;" f +_mcType src/Dodge/Data/Machine.hs 40;" f +_mcdStorageMachine src/Dodge/Data/Machine.hs 50;" f _mcoCombCombine src/Dodge/Data/Input.hs 24;" f _mcoCombSelect src/Dodge/Data/Input.hs 23;" f _mcoDBBool src/Dodge/Data/Input.hs 30;" f @@ -2008,10 +2012,10 @@ _mcoSecSelStart src/Dodge/Data/Input.hs 20;" f _mcoSelEnd src/Dodge/Data/Input.hs 20;" f _mcoTermID src/Dodge/Data/Input.hs 27;" f _mcoTermStatus src/Dodge/Data/Input.hs 27;" f -_mcsAmount src/Dodge/Data/Machine.hs 50;" f -_mcsType src/Dodge/Data/Machine.hs 50;" f -_mctTurret src/Dodge/Data/Machine.hs 49;" f -_mctTurretStun src/Dodge/Data/Machine.hs 49;" f +_mcsAmount src/Dodge/Data/Machine.hs 49;" f +_mcsType src/Dodge/Data/Machine.hs 49;" f +_mctTurret src/Dodge/Data/Machine.hs 48;" f +_mctTurretStun src/Dodge/Data/Machine.hs 48;" f _mdBool src/Dodge/Data/Modification.hs 19;" f _mdExternalID src/Dodge/Data/Modification.hs 15;" f _mdExternalID1 src/Dodge/Data/Modification.hs 23;" f @@ -2022,7 +2026,7 @@ _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 50;" f +_meleeCooldown src/Dodge/Data/Creature/Misc.hs 54;" f _meleeTarget src/Dodge/Data/ActionPlan.hs 139;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f @@ -2069,6 +2073,7 @@ _nzPressure src/Dodge/Data/Muzzle.hs 49;" f _nzWalkSpeed src/Dodge/Data/Muzzle.hs 51;" f _offGridFromEdges src/Dodge/Data/Room.hs 86;" f _oldMagnets src/Dodge/Data/LWorld.hs 127;" f +_oldOldPos src/Dodge/Data/Creature/Stance.hs 24;" f _onGridFromEdges src/Dodge/Data/Room.hs 85;" f _opDraw src/Dodge/Data/Wall.hs 33;" f _opSel src/Dodge/Data/RightButtonOptions.hs 15;" f @@ -2089,7 +2094,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 71;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 75;" 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 @@ -2135,8 +2140,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 36;" f -_pulseRate src/Dodge/Data/Creature/Misc.hs 35;" f +_pulseProgress src/Dodge/Data/Creature/Misc.hs 40;" f +_pulseRate src/Dodge/Data/Creature/Misc.hs 39;" 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 @@ -2299,9 +2304,9 @@ _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 61;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 63;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 62;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 65;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 67;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 66;" 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 @@ -2401,10 +2406,10 @@ _trieMVal src/SimpleTrie.hs 11;" f _triggers src/Dodge/Data/LWorld.hs 130;" f _ttDeathEffect src/Dodge/Data/Terminal.hs 44;" f _ttTriggerID src/Dodge/Data/Terminal.hs 43;" f -_tuDir src/Dodge/Data/Machine.hs 69;" f -_tuFireTime src/Dodge/Data/Machine.hs 68;" f -_tuTurnSpeed src/Dodge/Data/Machine.hs 67;" f -_tuWeapon src/Dodge/Data/Machine.hs 66;" f +_tuDir src/Dodge/Data/Machine.hs 68;" f +_tuFireTime src/Dodge/Data/Machine.hs 67;" f +_tuTurnSpeed src/Dodge/Data/Machine.hs 66;" f +_tuWeapon src/Dodge/Data/Machine.hs 65;" f _turnToPoint src/Dodge/Data/ActionPlan.hs 71;" f _uInt src/Dodge/Data/Item/Use.hs 31;" f _uScope src/Dodge/Data/Item/Use.hs 34;" f @@ -2779,7 +2784,7 @@ calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f canSee src/Dodge/Base/Collide.hs 321;" f canSeeIndirect src/Dodge/Base/Collide.hs 328;" f -canSpring src/Dodge/Update.hs 970;" f +canSpring src/Dodge/Update.hs 971;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 67;" f card8Vec src/Dodge/Base/CardinalPoint.hs 24;" f @@ -2820,7 +2825,7 @@ checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 81;" f checkDeath' src/Dodge/Creature/Update.hs 84;" f -checkEndGame src/Dodge/Update.hs 856;" f +checkEndGame src/Dodge/Update.hs 857;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f @@ -2834,10 +2839,9 @@ chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f chestPQ src/Dodge/Creature/HandPos.hs 196;" f chooseCursorBorders src/Dodge/Render/List.hs 141;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f -chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 36;" f +chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 39;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f -chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 61;" f circHitWall src/Dodge/Base/Collide.hs 240;" f circInPolygon src/Geometry/Polygon.hs 110;" f circOnAnyCr src/Dodge/Base/Collide.hs 285;" f @@ -2882,7 +2886,7 @@ clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f -collectDamageTypes src/Dodge/Damage.hs 53;" f +collectDamageTypes src/Dodge/Damage.hs 54;" f collectInvItems src/Dodge/Inventory.hs 205;" f collide3 src/Dodge/Base/Collide.hs 129;" f collide3Chasm src/Dodge/Base/Collide.hs 113;" f @@ -2950,7 +2954,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 83;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 36;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f -crCrSpring src/Dodge/Update.hs 978;" f +crCrSpring src/Dodge/Update.hs 979;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f @@ -2975,7 +2979,7 @@ crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 46;" f crMvBy src/Dodge/Creature/Impulse/Movement.hs 22;" f crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f -crMvType src/Dodge/Creature/MoveType.hs 6;" 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 crPathing src/Dodge/Creature/Action.hs 117;" f @@ -2984,7 +2988,7 @@ crRightHandWall src/Dodge/Creature/HandPos.hs 84;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" f crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 965;" f +crSpring src/Dodge/Update.hs 966;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f crUpdate src/Dodge/Creature/Update.hs 74;" f @@ -3056,26 +3060,26 @@ cylinderPoly src/Shape.hs 83;" f cylinderRoundIndices src/Shader/Poke.hs 389;" f dShadCol src/Dodge/Render/List.hs 208;" f damMatSideEffect src/Dodge/Material/Damage.hs 20;" f -damThingHitWith src/Dodge/Damage.hs 72;" f +damThingHitWith src/Dodge/Damage.hs 73;" f damToExpBarrel src/Dodge/Barreloid.hs 53;" f damageBlock src/Dodge/Wall/Damage.hs 121;" f damageCodeCommand src/Dodge/Terminal.hs 67;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f -damageCrystal src/Dodge/Material/Damage.hs 280;" f +damageCrystal src/Dodge/Material/Damage.hs 286;" f damageDirection src/Dodge/Damage.hs 35;" f -damageDirt src/Dodge/Material/Damage.hs 188;" f -damageFlesh src/Dodge/Material/Damage.hs 155;" f -damageGlass src/Dodge/Material/Damage.hs 214;" f +damageDirt src/Dodge/Material/Damage.hs 192;" f +damageFlesh src/Dodge/Material/Damage.hs 158;" f +damageGlass src/Dodge/Material/Damage.hs 219;" f damageGlassBlock src/Dodge/Wall/Damage.hs 126;" f damageHP src/Dodge/Creature/Damage.hs 37;" f -damageInCircle src/Dodge/Damage.hs 61;" f -damageLightningRod src/Dodge/Material/Damage.hs 73;" f +damageInCircle src/Dodge/Damage.hs 62;" f +damageLightningRod src/Dodge/Material/Damage.hs 74;" f damageMachine src/Dodge/Wall/Damage.hs 47;" f -damageMetal src/Dodge/Material/Damage.hs 123;" f -damagePhotovoltaic src/Dodge/Material/Damage.hs 91;" f -damagePiezoelectric src/Dodge/Material/Damage.hs 87;" f -damagePyroelectric src/Dodge/Material/Damage.hs 78;" f +damageMetal src/Dodge/Material/Damage.hs 125;" f +damagePhotovoltaic src/Dodge/Material/Damage.hs 92;" f +damagePiezoelectric src/Dodge/Material/Damage.hs 88;" f +damagePyroelectric src/Dodge/Material/Damage.hs 79;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f damageStone src/Dodge/Material/Damage.hs 41;" f damageThingHit src/Dodge/Bullet.hs 180;" f @@ -3131,7 +3135,7 @@ defEquipment src/Dodge/Default.hs 24;" f defHeldItem src/Dodge/Default/Item.hs 9;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 310;" f -defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f +defaultAimMvType src/Dodge/Creature/MoveType.hs 17;" f defaultAimingCrit src/Dodge/Default/Creature.hs 108;" f defaultAudition src/Dodge/Default/Creature.hs 93;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f @@ -3142,7 +3146,7 @@ defaultButton src/Dodge/Default.hs 45;" f defaultCWCam src/Dodge/Default/World.hs 73;" f defaultCWGen src/Dodge/Default/World.hs 63;" f defaultCWorld src/Dodge/Default/World.hs 88;" f -defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f +defaultChaseMvType src/Dodge/Creature/MoveType.hs 26;" 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 @@ -3562,7 +3566,6 @@ flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 39;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 422;" f -fleeFrom src/Dodge/CreatureEffect.hs 93;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f flickerUpdate src/Dodge/Placement/Instance/LightSource/Flicker.hs 24;" f floatSize src/Shader/Parameters.hs 17;" f @@ -3614,7 +3617,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 165;" f gameplayMenu src/Dodge/Menu.hs 152;" f gameplayMenuOptions src/Dodge/Menu.hs 155;" f -gasEffect src/Dodge/Update.hs 881;" f +gasEffect src/Dodge/Update.hs 882;" f gasType src/Dodge/HeldUse.hs 1135;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f @@ -4160,7 +4163,7 @@ marimbaG5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 611;" f materialColor src/Dodge/Material/Color.hs 8;" f materialPenetrable src/Dodge/Bullet.hs 211;" f maxAmmo src/Dodge/Item/MaxAmmo.hs 6;" f -maxDamageType src/Dodge/Damage.hs 58;" f +maxDamageType src/Dodge/Damage.hs 59;" f maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f @@ -4293,7 +4296,7 @@ muzzleWallCheck src/Dodge/Update.hs 346;" f mvButton src/Dodge/Placement/PlaceSpot.hs 170;" f mvCr src/Dodge/Placement/PlaceSpot.hs 173;" f mvFS src/Dodge/Placement/PlaceSpot.hs 176;" f -mvGust src/Dodge/Update.hs 872;" f +mvGust src/Dodge/Update.hs 873;" f mvLS src/Dodge/Placement/PlaceSpot.hs 215;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4326,7 +4329,7 @@ nodeNear src/Dodge/Path.hs 94;" f nodesNear src/Dodge/Path.hs 100;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 265;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f -normalGait src/Dodge/Creature/State/WalkCycle.hs 31;" f +normalGait src/Dodge/Creature/State/WalkCycle.hs 34;" f normalTo8 src/Shader/Poke.hs 466;" f normalizeAngle src/Geometry/Vector.hs 130;" f normalizeAnglePi src/Dodge/Base.hs 154;" f @@ -4620,7 +4623,7 @@ rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToDeg src/Geometry/Vector.hs 125;" f -radiusSpring src/Dodge/Update.hs 954;" f +radiusSpring src/Dodge/Update.hs 955;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 58;" f @@ -4642,7 +4645,7 @@ randPeakedParam src/RandomHelp.hs 149;" f randProb src/RandomHelp.hs 87;" f randSpark src/Dodge/Spark.hs 70;" f randSparkExtraVel src/Dodge/Spark.hs 93;" f -randWallReflect src/Dodge/Update.hs 728;" f +randWallReflect src/Dodge/Update.hs 729;" f randomChallenges src/Dodge/Room/Start.hs 64;" f randomCompass src/Dodge/Layout.hs 61;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 248;" f @@ -4713,7 +4716,7 @@ replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 184;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 66;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f -resetStride src/Dodge/Creature/State/WalkCycle.hs 26;" f +resetStride src/Dodge/Creature/State/WalkCycle.hs 29;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f resizeFBOTO' src/Framebuffer/Update.hs 197;" f @@ -4996,10 +4999,10 @@ showEquipItem src/Dodge/Item/Display.hs 108;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 77;" f +showManObj src/Dodge/TestString.hs 79;" f showMuzzlePositions src/Dodge/Debug.hs 292;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 87;" f +showTimeFlow src/Dodge/TestString.hs 89;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5008,7 +5011,7 @@ shufflePair src/RandomHelp.hs 166;" f shuffleRoomPos src/Dodge/Layout.hs 98;" f shuffleTail src/RandomHelp.hs 78;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 959;" f +simpleCrSprings src/Dodge/Update.hs 960;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 757;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 793;" f @@ -5304,7 +5307,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f topInvW src/Dodge/ListDisplayParams.hs 54;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 73;" f +topTestPart src/Dodge/TestString.hs 75;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f @@ -5423,47 +5426,48 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" 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 643;" f +updateBullets src/Dodge/Update.hs 644;" f updateCamera src/Dodge/Update/Camera.hs 33;" f +updateCarriage src/Dodge/Creature/State/WalkCycle.hs 12;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f -updateCloud src/Dodge/Update.hs 885;" f -updateClouds src/Dodge/Update.hs 754;" f +updateCloud src/Dodge/Update.hs 886;" f +updateClouds src/Dodge/Update.hs 755;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f updateCreature src/Dodge/Creature/Update.hs 37;" f -updateCreatureGroups src/Dodge/Update.hs 615;" f -updateCreatureSoundPositions src/Dodge/Update.hs 594;" f +updateCreatureGroups src/Dodge/Update.hs 616;" f +updateCreatureSoundPositions src/Dodge/Update.hs 595;" f updateCreatureStride src/Dodge/Update.hs 374;" f updateCreatureStrides src/Dodge/Update.hs 371;" f -updateDebris src/Dodge/Update.hs 657;" f +updateDebris src/Dodge/Update.hs 658;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 102;" f -updateDelayedEvents src/Dodge/Update.hs 995;" f +updateDelayedEvents src/Dodge/Update.hs 996;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 636;" f +updateDistortions src/Dodge/Update.hs 637;" f updateDoor src/Dodge/Door.hs 22;" f updateDoors src/Dodge/Update.hs 386;" f -updateDust src/Dodge/Update.hs 933;" f -updateDusts src/Dodge/Update.hs 760;" f +updateDust src/Dodge/Update.hs 934;" f +updateDusts src/Dodge/Update.hs 761;" f updateEdge src/Dodge/Path.hs 45;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 745;" f +updateEnergyBalls src/Dodge/Update.hs 746;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 481;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 742;" f +updateFlames src/Dodge/Update.hs 743;" f updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 338;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 334;" f -updateGas src/Dodge/Update.hs 907;" f -updateGasses src/Dodge/Update.hs 757;" f -updateGusts src/Dodge/Update.hs 869;" f -updateIMl src/Dodge/Update.hs 609;" f -updateIMl' src/Dodge/Update.hs 612;" f +updateGas src/Dodge/Update.hs 908;" f +updateGasses src/Dodge/Update.hs 758;" f +updateGusts src/Dodge/Update.hs 870;" f +updateIMl src/Dodge/Update.hs 610;" f +updateIMl' src/Dodge/Update.hs 613;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 404;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f @@ -5489,22 +5493,22 @@ updateMouseContextGame src/Dodge/Update.hs 407;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 98;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 88;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 168;" f -updateObjCatMaybes src/Dodge/Update.hs 627;" f -updateObjMapMaybe src/Dodge/Update.hs 620;" f +updateObjCatMaybes src/Dodge/Update.hs 628;" f +updateObjMapMaybe src/Dodge/Update.hs 621;" f updatePastWorlds src/Dodge/Update.hs 484;" f updatePlasmaBall src/Dodge/Update.hs 509;" f -updatePlasmaBalls src/Dodge/Update.hs 650;" f +updatePlasmaBalls src/Dodge/Update.hs 651;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f updatePulse src/Dodge/Creature/Update.hs 189;" f updatePulseBall src/Dodge/Update.hs 529;" f -updatePulseLaser src/Dodge/Update.hs 697;" f +updatePulseLaser src/Dodge/Update.hs 698;" f updatePulseLasers src/Dodge/Update.hs 504;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 639;" f +updateRadarBlips src/Dodge/Update.hs 640;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 748;" f +updateRadarSweeps src/Dodge/Update.hs 749;" f updateRandNode src/TreeHelp.hs 111;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 188;" f @@ -5514,17 +5518,17 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 739;" f +updateShockwaves src/Dodge/Update.hs 740;" f updateSingleNodes src/TreeHelp.hs 100;" f updateSound src/Sound.hs 73;" f updateSounds src/Sound.hs 68;" f updateSpark src/Dodge/Spark.hs 20;" f -updateSparks src/Dodge/Update.hs 751;" f +updateSparks src/Dodge/Update.hs 752;" f updateTerminal src/Dodge/Update.hs 567;" f -updateTeslaArc src/Dodge/Update.hs 667;" f -updateTeslaArcs src/Dodge/Update.hs 664;" f +updateTeslaArc src/Dodge/Update.hs 668;" f +updateTeslaArcs src/Dodge/Update.hs 665;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 736;" f +updateTractorBeams src/Dodge/Update.hs 737;" f updateTurret src/Dodge/Machine/Update.hs 55;" f updateUniverse src/Dodge/Update.hs 81;" f updateUniverseFirst src/Dodge/Update.hs 92;" f @@ -5533,7 +5537,6 @@ updateUniverseMid src/Dodge/Update.hs 185;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 47;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f updateVocTimer src/Dodge/Humanoid.hs 45;" f -updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 12;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 474;" f @@ -5718,7 +5721,7 @@ zipCount src/Dodge/Tree/Shift.hs 142;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f zoneClouds src/Dodge/Update.hs 556;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f -zoneCreatures src/Dodge/Update.hs 590;" f +zoneCreatures src/Dodge/Update.hs 591;" f zoneDust src/Dodge/Zoning/Cloud.hs 57;" f zoneDusts src/Dodge/Update.hs 561;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f