From 5d5d0a539b8e7fbd955c86a220da90c4d10b3b50 Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 4 May 2026 21:17:22 +0100 Subject: [PATCH] Add debug to copy to clipboard any clicked-on creature --- src/Dodge/Creature/Action.hs | 2 +- src/Dodge/Creature/ArmourChase.hs | 2 +- src/Dodge/Creature/Impulse.hs | 2 +- src/Dodge/Creature/ReaderUpdate.hs | 16 +- src/Dodge/Creature/Test.hs | 8 +- src/Dodge/Creature/Update.hs | 12 +- src/Dodge/Data/ActionPlan.hs | 11 +- src/Dodge/Data/Config.hs | 1 + src/Dodge/Debug.hs | 19 ++ src/Dodge/Default/Creature.hs | 2 +- src/Dodge/Humanoid.hs | 45 ++--- src/Dodge/TestString.hs | 7 +- tags | 292 ++++++++++++++--------------- 13 files changed, 212 insertions(+), 207 deletions(-) diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 16438e7e7..eb609f888 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -84,7 +84,7 @@ performAction cr w ac = case ac of -- DoActions acs -> -- let (imps, newAcs) = foldMap (performAction cr w) acs -- in (imps, newAcs) - StartSentinelPost -> ([AddGoal $ SentinelAt (cr ^. crPos . _xy) (_crDir cr)], NoAction) +-- StartSentinelPost -> ([AddGoal $ SentinelAt (cr ^. crPos . _xy) (_crDir cr)], NoAction) PathTo p a -> performPathTo a cr w p EvadeAim -> tryEvadeSideways cr w TurnToPoint p -> performTurnToA cr p diff --git a/src/Dodge/Creature/ArmourChase.hs b/src/Dodge/Creature/ArmourChase.hs index aa6d72889..526a5be86 100644 --- a/src/Dodge/Creature/ArmourChase.hs +++ b/src/Dodge/Creature/ArmourChase.hs @@ -24,7 +24,7 @@ flockArmourChaseCrit = ActionPlan { _apAction = NoAction , _apStrategy = FollowImpulses - , _apGoal = [Kill 0] + , _apGoal = Kill 0 } , _crGroup = ShieldGroup -- , _crMvType = defaultChaseMvType diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index 2f06c818e..0f20f2277 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -64,7 +64,7 @@ followImpulse cid w = \case MakeSound sid -> soundStart (CrSound (_crID cr)) (cr ^. crPos . _xy) sid Nothing w DropItem -> undefined ChangeStrategy strat -> crup $ crActionPlan . apStrategy .~ strat - AddGoal gl -> crup $ crActionPlan . apGoal .:~ gl +-- AddGoal gl -> crup $ crActionPlan . apGoal .:~ gl ImpulseUseTarget f -> fromMaybe w $ do i <- cr ^? crIntention . targetCr . _Just tcr <- w ^? cWorld . lWorld . creatures . ix i diff --git a/src/Dodge/Creature/ReaderUpdate.hs b/src/Dodge/Creature/ReaderUpdate.hs index dfd5e1362..72c9d9cc4 100644 --- a/src/Dodge/Creature/ReaderUpdate.hs +++ b/src/Dodge/Creature/ReaderUpdate.hs @@ -1,6 +1,5 @@ {-# LANGUAGE LambdaCase #-} module Dodge.Creature.ReaderUpdate ( - doStrategyActions, targetYouWhenCognizant, overrideMeleeCloseTarget, watchUpdateStrat, @@ -269,14 +268,6 @@ viewTarget w cr = case cr ^? crIntention . viewPoint . _Just of --replaceNullWith x [] = [x] --replaceNullWith _ xs = xs -doStrategyActions :: Creature -> Creature -doStrategyActions cr = case cr ^? crActionPlan . apStrategy of - Just (SetStrategyAction strat acs) -> - cr - & crActionPlan . apAction .~ acs - & crActionPlan . apStrategy .~ strat - _ -> cr - overrideInternal :: (Creature -> Bool) -> (Creature -> Creature) -> Creature -> Creature overrideInternal test update cr | test cr = update cr @@ -315,12 +306,7 @@ searchIfDamaged cr | _crPain cr > 0 && _apStrategy (_crActionPlan cr) == WatchAndWait = cr & crPerception . cpVigilance .~ Vigilant - & crActionPlan . apStrategy - .~ SetStrategyAction - LookAround - ( TurnToPoint (cr ^. crPos . _xy -.- unitVectorAtAngle (_crDir cr)) --- `DoActionThen` 40 `WaitThen` bfsThenReturn 500 - ) + & crActionPlan . apStrategy .~ LookAround | otherwise = cr --bfsThenReturn :: Int -> Action diff --git a/src/Dodge/Creature/Test.hs b/src/Dodge/Creature/Test.hs index 57fa47317..6266c343a 100644 --- a/src/Dodge/Creature/Test.hs +++ b/src/Dodge/Creature/Test.hs @@ -29,7 +29,6 @@ import Dodge.Creature.Radius import Dodge.Data.Equipment.Misc import Dodge.Data.AimStance import Control.Lens -import Data.List (find) import Data.Maybe import Dodge.Base.Collide import Dodge.Data.World @@ -81,12 +80,9 @@ crStratConMatches strat cr = strat == _apStrategy (_crActionPlan cr) -- this equality check might be slow... crAwayFromPost :: Creature -> Bool -crAwayFromPost cr = case find sentinelGoal . _apGoal $ _crActionPlan cr of - Just (SentinelAt p _) -> dist p (cr ^. crPos . _xy) > 15 +crAwayFromPost cr = case _apGoal $ _crActionPlan cr of + SentinelAt p _ -> dist p (cr ^. crPos . _xy) > 15 _ -> False - where - sentinelGoal (SentinelAt _ _) = True - sentinelGoal _ = False crInAimStance :: AimStance -> Creature -> Bool crInAimStance as cr = cr ^? crStance . posture == Just Aiming diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index d6ae0dcd6..aa1541f5e 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -161,8 +161,11 @@ updateCalmBee cr cid w , x >= 0.5 = w & tocr . crType . beeSlime -~ 0.5 | Just x <- cr ^? crType . beeSlime , x < 0.5 + , Just hcr <- gethive + , distance (cr ^. crPos . _xy) (hcr ^. crPos . _xy) < 30 , Just ReturnToHive <- cr ^? crActionPlan . apStrategy = w & tocr . crActionPlan . apStrategy .~ Search + & tocr . crActionPlan . apAction .~ NoAction | Just hcr <- gethive , Just _ <- cr ^? crStance . carriage . mountID , Just x <- cr ^? crType . beeSlime @@ -180,8 +183,10 @@ updateCalmBee cr cid w = w & tocr . crActionPlan . apAction .~ PathTo (hcr ^. crPos . _xy) NoAction & tocr . crActionPlan . apStrategy .~ ReturnToHive | Nothing <- cr ^? crActionPlan . apStrategy . harvestTarget - , Just tcr <- listToMaybe . sortOn (distance cxy . (^. crPos . _xy)) . IM.elems . IM.filter istarget $ crsNearCirc cxy 100 w = + , xs@(_:_) <- IM.elems . IM.filter istarget $ crsNearCirc cxy 100 w + , (tcr,g') <- runState (takeOne xs) (w ^. randGen) = w & tocr . crActionPlan . apStrategy .~ HarvestFrom (tcr ^. crID) + & randGen .~ g' | Just tid <- cr ^? crStance . carriage . mountID , Just SlimeCrit{} <- w ^? cWorld . lWorld . creatures . ix tid . crType = w & tocr . crType . beeSlime +~ sspeed @@ -195,7 +200,8 @@ updateCalmBee cr cid w & tocr . crActionPlan . apAction .~ NoAction | Just (tcr,_) <- gettarg = w & tocr . crActionPlan . apAction .~ PathTo (tcr ^. crPos . _xy) NoAction - | Just (SearchTimed 0) <- cr ^? crActionPlan . apStrategy = w & tocr . crActionPlan . apStrategy .~ Search + | Just (SearchTimed 0) <- cr ^? crActionPlan . apStrategy + = w & tocr . crActionPlan . apStrategy .~ ReturnToHive | Just PathTo{} <- cr ^? crActionPlan . apAction = w & tocr . crActionPlan . apStrategy . searchTimer %~ (max 0 . subtract 1) | otherwise = w @@ -203,7 +209,7 @@ updateCalmBee cr cid w & randGen .~ g & tocr . crActionPlan . apStrategy .~ SearchTimed 200 where - (p,g) = runState (randOnCirc 150) (w ^. randGen) + (p,g) = runState (randOnCirc 200) (w ^. randGen) cxy = cr ^. crPos . _xy mountshakeoff mid = fromMaybe True $ do mcr <- w ^? cWorld . lWorld . creatures . ix mid diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index 8c14b16fc..25c1625ee 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -17,8 +17,8 @@ data ActionPlan | ActionPlan { -- _apImpulse :: [Impulse] -- done per frame _apAction :: Action -- updated per frame, likely persist across frames - , _apStrategy :: Strategy -- current strategy - , _apGoal :: [Goal] -- particular ordered goals + , _apStrategy :: Strategy + , _apGoal :: Goal } --deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show) --Generic, Flat) @@ -45,7 +45,7 @@ data Impulse | ChangePosture Posture | MakeSound SoundID | ChangeStrategy Strategy - | AddGoal Goal +-- | AddGoal Goal | ImpulseUseTarget { _impulseUseTarget :: CrImp } | ImpulseNothing | UpdateRandGen @@ -121,7 +121,7 @@ data Action } | LeadTarget { _leadTargetBy :: Point2 } | NoAction - | StartSentinelPost +-- | StartSentinelPost -- | UseSelf { _useSelf :: CrAc } -- | ArbitraryAction {_arbitraryAction :: CrWdAc} -- | Repeatedly perform impulses alongside a main action until the main action terminates @@ -145,11 +145,8 @@ data Strategy | LookAround | Wander | CloseToMelee {_meleeTarget :: Int} - | SetStrategyAction Strategy Action | GetTo Point2 --- | Reload | Flee --- | MeleeStrike | Search | SearchTimed {_searchTimer :: Int} | ReturnToHive diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index 59371eed0..c2dc3ce31 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -109,6 +109,7 @@ data DebugBool | Show_mouse_click_pos | Muzzle_positions | Show_cr_hitboxes + | Clipboard_cr deriving (Eq, Ord, Bounded, Enum, Show) data ResFactor = DoubleRes | FullRes | HalfRes | QuarterRes | EighthRes | SixteenthRes diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index 21b147671..3739c681c 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -2,6 +2,8 @@ module Dodge.Debug (debugEvents, drawDebug) where +import Dodge.Base.Coordinate +import Dodge.Zoning.Creature import Dodge.Creature.Radius import Geometry.Data import Dodge.Render.Label @@ -25,6 +27,7 @@ import Picture.Base import qualified SDL import System.Hclip import Text.Read +import Data.List (sortOn) debugEvents :: Universe -> Universe debugEvents u = case dbools ^. at Display_debug of @@ -83,6 +86,14 @@ debugEvent' = \case Debug_put -> id Muzzle_positions -> id Show_cr_hitboxes -> id + Clipboard_cr -> clipboardCr + +clipboardCr :: Universe -> Universe +clipboardCr u = fromMaybe u $ do + guard (u ^. uvWorld . input . mouseButtons . at SDL.ButtonLeft == Just 0) + return $ u & uvIOEffects %~ (\m u' -> setClipboard s >> m u') + where + s = unlines . prettyShort $ closestCrToMouse $ u ^. uvWorld debugItem :: DebugBool -> Universe -> Maybe [DebugItem] debugItem = \case @@ -120,6 +131,7 @@ debugItem = \case Debug_put -> debugPutItems Muzzle_positions -> mempty Show_cr_hitboxes -> mempty + Clipboard_cr -> mempty debugGet :: Universe -> [String] debugGet u = foldMap getPretty $ u ^. uvWorld . cWorld . lWorld . shockwaves @@ -291,6 +303,13 @@ drawDebug u = \case Show_mouse_click_pos -> mempty Muzzle_positions -> showMuzzlePositions u Show_cr_hitboxes -> foldMap drawCreatureRad (u ^. uvWorld . cWorld . lWorld . creatures) + Clipboard_cr -> foldMap drawCreatureRad (closestCrToMouse $ u^.uvWorld) + +closestCrToMouse :: World -> Maybe Creature +closestCrToMouse w = listToMaybe . sortOn (distance mwp . (^. crPos . _xy)) + $ crsNearPoint mwp w + where + mwp = mouseWorldPos (w^.input) (w^.wCam) drawCreatureRad :: Creature -> Picture drawCreatureRad cr = setLayer DebugLayer diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index 346f4232e..bfacb2b30 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -43,7 +43,7 @@ defaultCreature = , _posture = AtEase } , _crVocalization = VocReady - , _crActionPlan = ActionPlan NoAction (SetStrategyAction WatchAndWait StartSentinelPost) [LiveLongAndProsper] + , _crActionPlan = ActionPlan NoAction WatchAndWait LiveLongAndProsper , _crPerception = defaultPerceptionState , _crMemory = defaultCreatureMemory , _crFaction = NoFaction diff --git a/src/Dodge/Humanoid.hs b/src/Dodge/Humanoid.hs index f7104413a..2e4b5807e 100644 --- a/src/Dodge/Humanoid.hs +++ b/src/Dodge/Humanoid.hs @@ -10,39 +10,34 @@ import LensHelp updateChaseCrit :: Int -> World -> World updateChaseCrit cid w = w - & (tocr %~ doStrategyActions) - & (tocr %~ overrideMeleeCloseTarget w) - & (tocr %~ setViewPos w) - & (tocr %~ setMvPosToTargetCr w) - & (tocr %~ chaseCritMv w) - & (tocr %~ perceptionUpdate [0] w) - & (tocr %~ targetYouWhenCognizant w) - & (tocr %~ searchIfDamaged) - & (tocr . crType . meleeCooldown %~ max 0 . subtract 1) - & (tocr . crVocalization %~ updateVocTimer) + & tocr %~ overrideMeleeCloseTarget w + & tocr %~ setViewPos w + & tocr %~ setMvPosToTargetCr w + & tocr %~ chaseCritMv w + & tocr %~ perceptionUpdate [0] w + & tocr %~ targetYouWhenCognizant w + & tocr %~ searchIfDamaged + & tocr . crType . meleeCooldown %~ max 0 . subtract 1 + & tocr . crVocalization %~ updateVocTimer where tocr = cWorld . lWorld . creatures . ix cid crabCritInternal :: Int -> World -> World -crabCritInternal cid w = - -- (crVocalization %~ updateVocTimer) - (tocr %~ (crType . meleeCooldownL %~ max 0 . subtract 1)) - . (tocr %~ (crType . meleeCooldownR %~ max 0 . subtract 1)) - . (tocr %~ (crType . dodgeCooldown %~ max 0 . subtract 1)) - . (tocr %~ searchIfDamaged) - . (tocr %~ targetYouWhenCognizant w) - . (tocr %~ perceptionUpdate [0] w) - . crabActionUpdate cid - . (tocr %~ setMvPosToTargetCr w) - . (tocr %~ setViewPos w) - -- . overrideMeleeCloseTarget w - $ (tocr %~ doStrategyActions) w +crabCritInternal cid w = w + & tocr %~ setViewPos w + & tocr %~ setMvPosToTargetCr w + & crabActionUpdate cid + & tocr %~ perceptionUpdate [0] w + & tocr %~ targetYouWhenCognizant w + & tocr %~ searchIfDamaged + & tocr . crType . dodgeCooldown %~ max 0 . subtract 1 + & tocr . crType . meleeCooldownR %~ max 0 . subtract 1 + & tocr . crType . meleeCooldownL %~ max 0 . subtract 1 where tocr = cWorld . lWorld . creatures . ix cid updateHoverCrit :: Int -> World -> World updateHoverCrit cid w = w - & tocr %~ doStrategyActions & tocr %~ overrideMeleeCloseTarget w & tocr %~ setViewPos w & tocr %~ setMvPosToTargetCr w @@ -50,7 +45,7 @@ updateHoverCrit cid w = w & tocr %~ perceptionUpdate [0] w & tocr %~ targetYouWhenCognizant w & tocr %~ searchIfDamaged - & tocr . crType . meleeCooldown %~ (max 0 . subtract 1) + & tocr . crType . meleeCooldown %~ max 0 . subtract 1 & tocr . crVocalization %~ updateVocTimer where tocr = cWorld . lWorld . creatures . ix cid diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 2053d892e..3c347c8e6 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -42,8 +42,13 @@ tocrs :: (IM.IntMap Creature -> Universe -> Const (Endo [String]) Universe tocrs = uvWorld . cWorld . lWorld . creatures +isBee :: Creature -> Bool +isBee cr = case cr ^. crType of + BeeCrit{} -> True + _ -> False + testStringInit :: Universe -> [String] -testStringInit _ = mempty -- u ^.. tocrs . each . crActionPlan . apStrategy . to show +testStringInit u = u ^.. tocrs . each . filtered isBee . crActionPlan . apStrategy . to show -- u ^.. tocrs . ix 1 . crPos . _xy . to show -- <> u ^.. tocrs . ix 1 . crType . slimeCompression . to show -- <> u ^.. tocrs . ix 1 . crType . slimeCompression . to norm . to show diff --git a/tags b/tags index ebfefc689..8763f6b13 100644 --- a/tags +++ b/tags @@ -12,7 +12,7 @@ .++~ src/LensHelp.hs 33;" o .+.+~ src/LensHelp.hs 23;" o .:~ src/LensHelp.hs 14;" o -<$> src/Dodge/Data/ActionPlan.hs 168;" o +<$> src/Dodge/Data/ActionPlan.hs 165;" o <$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o <$> src/Dodge/Data/Creature.hs 93;" o @@ -40,13 +40,12 @@ Action src/Dodge/Data/ActionPlan.hs 71;" t ActionPlan src/Dodge/Data/ActionPlan.hs 14;" t ActionPlan src/Dodge/Data/ActionPlan.hs 17;" C ActionUpdate src/Dodge/Creature/Action.hs 51;" t -AddGoal src/Dodge/Data/ActionPlan.hs 48;" C AimAt src/Dodge/Data/ActionPlan.hs 72;" C AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 38;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C -AllRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C +AllRoomClipBoundaries src/Dodge/Data/Config.hs 125;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" C Ambush src/Dodge/Data/ActionPlan.hs 137;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 34;" C @@ -214,6 +213,7 @@ ChasmObstacle src/Dodge/Data/PathGraph.hs 51;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C Circ_collision_test src/Dodge/Data/Config.hs 99;" C Climate src/Dodge/Data/Scenario.hs 32;" C +Clipboard_cr src/Dodge/Data/Config.hs 112;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 147;" C Close_shape_culling src/Dodge/Data/Config.hs 93;" C Cloud src/Dodge/Data/Cloud.hs 13;" t @@ -357,7 +357,7 @@ DoorLerp src/Dodge/Data/Door.hs 46;" C DoorLerpWithTimer src/Dodge/Data/Door.hs 47;" C DoorPart src/Dodge/Data/Wall/Structure.hs 13;" C DoorUpdate src/Dodge/Data/Door.hs 44;" t -DoubleRes src/Dodge/Data/Config.hs 114;" C +DoubleRes src/Dodge/Data/Config.hs 115;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 9;" t DrawForceField src/Dodge/Data/Wall.hs 37;" C DrawnWall src/Dodge/Data/Wall.hs 33;" C @@ -376,7 +376,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 45;" C East src/Dodge/Data/CardinalPoint.hs 8;" C East8 src/Dodge/Data/CardinalPoint.hs 30;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 49;" t -EighthRes src/Dodge/Data/Config.hs 114;" C +EighthRes src/Dodge/Data/Config.hs 115;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C ElectricSpark src/Dodge/Data/Spark.hs 19;" C @@ -446,7 +446,7 @@ FlatFaces src/Shape/Data.hs 12;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 14;" C FlechetteTrajectory src/Dodge/Data/Bullet.hs 44;" C FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 51;" C -Flee src/Dodge/Data/ActionPlan.hs 151;" C +Flee src/Dodge/Data/ActionPlan.hs 149;" C Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C FloatBO src/Shader/Data.hs 85;" t @@ -467,7 +467,7 @@ ForceField src/Dodge/Data/Material.hs 19;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 12;" t FromEdge src/Dodge/Data/Room.hs 53;" C -FullRes src/Dodge/Data/Config.hs 114;" C +FullRes src/Dodge/Data/Config.hs 115;" C FullShadowFidelity src/Shape/Data.hs 20;" C FullSize src/Dodge/Data/Item/Params.hs 26;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C @@ -496,8 +496,8 @@ GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C -GeoObjShads src/Dodge/Data/Config.hs 118;" C -GetTo src/Dodge/Data/ActionPlan.hs 149;" C +GeoObjShads src/Dodge/Data/Config.hs 119;" C +GetTo src/Dodge/Data/ActionPlan.hs 148;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C Gibbed src/Dodge/Data/Creature.hs 68;" C @@ -505,7 +505,7 @@ GibsDeath src/Dodge/Data/Creature.hs 70;" C Glass src/Dodge/Data/Material.hs 14;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 35;" C GlassDebris src/Dodge/Data/Prop.hs 25;" C -Goal src/Dodge/Data/ActionPlan.hs 161;" t +Goal src/Dodge/Data/ActionPlan.hs 158;" t GoesOnBack src/Dodge/Data/Equipment/Misc.hs 12;" C GoesOnChest src/Dodge/Data/Equipment/Misc.hs 11;" C GoesOnHead src/Dodge/Data/Equipment/Misc.hs 10;" C @@ -529,10 +529,10 @@ HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C HP src/Dodge/Data/Creature.hs 64;" C HUD src/Dodge/Data/HUD.hs 29;" t -HalfRes src/Dodge/Data/Config.hs 114;" C +HalfRes src/Dodge/Data/Config.hs 115;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 68;" C -HarvestFrom src/Dodge/Data/ActionPlan.hs 156;" C +HarvestFrom src/Dodge/Data/ActionPlan.hs 153;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C HeldItemType src/Dodge/Data/Item/Combine.hs 141;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 15;" C @@ -597,7 +597,7 @@ Institution src/Dodge/Data/Scenario.hs 42;" t Int2 src/Geometry/Data.hs 21;" t IntID src/Dodge/Data/Universe.hs 120;" t Intention src/Dodge/Data/Creature.hs 72;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 125;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 22;" C IntroScanType src/Dodge/Data/Item/Combine.hs 45;" t InvInt src/Dodge/Data/Item/Location.hs 16;" t @@ -637,7 +637,7 @@ JoystickSF src/Dodge/Data/ComposedItem.hs 27;" C Just' src/MaybeHelp.hs 11;" C JustStartedPlaying src/Sound/Data.hs 22;" C KEYCARD src/Dodge/Data/Item/Combine.hs 178;" C -Kill src/Dodge/Data/ActionPlan.hs 163;" C +Kill src/Dodge/Data/ActionPlan.hs 160;" C LASER src/Dodge/Data/Item/Combine.hs 35;" C LDP src/Dodge/Data/SelectionList.hs 14;" C LDParams src/Dodge/Data/SelectionList.hs 14;" t @@ -680,7 +680,7 @@ LimitedBreathableAtmosphere src/Dodge/Data/Scenario.hs 38;" C LimitedFood src/Dodge/Data/Scenario.hs 39;" C LimitedWater src/Dodge/Data/Scenario.hs 40;" C LinearShockwave src/Dodge/Data/LinearShockwave.hs 11;" t -LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 162;" C +LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 159;" C LivingComplex src/Dodge/Data/Scenario.hs 68;" C LoadReady src/Dodge/Data/Universe.hs 101;" C LoadWaiting src/Dodge/Data/Universe.hs 100;" C @@ -846,17 +846,17 @@ NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 121;" C +NoLighting src/Dodge/Data/Config.hs 122;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C NoMvType src/Dodge/Data/Creature/Misc.hs 26;" C -NoObjShads src/Dodge/Data/Config.hs 119;" C +NoObjShads src/Dodge/Data/Config.hs 120;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 125;" C NoSF src/Dodge/Data/ComposedItem.hs 30;" C NoSIDisplayMod src/Dodge/Data/SelectionList.hs 57;" C NoShadowFidelity src/Shape/Data.hs 21;" C -NoShadows src/Dodge/Data/Config.hs 120;" C +NoShadows src/Dodge/Data/Config.hs 121;" C NoSoundFilter src/Dodge/Data/WorldEffect.hs 23;" C NoSubInventory src/Dodge/Data/HUD.hs 15;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C @@ -1078,7 +1078,7 @@ PutWall src/Dodge/Data/GenWorld.hs 53;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 57;" C Pyroelectric src/Dodge/Data/Material.hs 22;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 114;" C +QuarterRes src/Dodge/Data/Config.hs 115;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C RAM src/Dodge/Data/Item/Combine.hs 75;" C RCommands src/Dodge/Terminal.hs 165;" C @@ -1120,13 +1120,13 @@ ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 29;" C RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 36;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 35;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 34;" C -ResFactor src/Dodge/Data/Config.hs 114;" t +ResFactor src/Dodge/Data/Config.hs 115;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 66;" C RetailFacility src/Dodge/Data/Scenario.hs 67;" C RetiredProjectile src/Dodge/Data/Projectile.hs 38;" C -ReturnToHive src/Dodge/Data/ActionPlan.hs 155;" C +ReturnToHive src/Dodge/Data/ActionPlan.hs 152;" C Revenge src/Dodge/Data/Scenario.hs 6;" C RewindLeftClick src/Dodge/Data/World.hs 80;" C RezBaySS src/Dodge/Data/Scenario.hs 105;" C @@ -1138,7 +1138,7 @@ RocketHoming src/Dodge/Data/Projectile.hs 41;" t RocketSmoke src/Dodge/Data/Projectile.hs 54;" t RocketSmoke src/Dodge/Data/Cloud.hs 23;" C Room src/Dodge/Data/GenWorld.hs 128;" t -RoomClipping src/Dodge/Data/Config.hs 124;" t +RoomClipping src/Dodge/Data/Config.hs 125;" t RoomInt src/Dodge/Tree/Shift.hs 27;" t RoomLink src/Dodge/Data/Room.hs 24;" t RoomLinkType src/Dodge/Data/Room.hs 47;" t @@ -1177,8 +1177,8 @@ SaveSlotNum src/Dodge/Data/SaveSlot.hs 10;" C Scope src/Dodge/Data/Item/Scope.hs 11;" t ScreenLayer src/Dodge/Data/Universe.hs 81;" t ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t -Search src/Dodge/Data/ActionPlan.hs 153;" C -SearchTimed src/Dodge/Data/ActionPlan.hs 154;" C +Search src/Dodge/Data/ActionPlan.hs 150;" C +SearchTimed src/Dodge/Data/ActionPlan.hs 151;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 25;" t SeeAbove src/Dodge/Data/Wall.hs 32;" C @@ -1197,17 +1197,16 @@ SelfTree src/Dodge/Data/MetaTree.hs 21;" t SemiAutoTrigger src/Dodge/Data/TriggerType.hs 9;" C SensorType src/Dodge/Data/Machine/Sensor.hs 12;" t SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 30;" C -SentinelAt src/Dodge/Data/ActionPlan.hs 164;" C +SentinelAt src/Dodge/Data/ActionPlan.hs 161;" C SetBeeRandomMovement src/Dodge/Data/ActionPlan.hs 52;" C SetLSCol src/Dodge/Data/WorldEffect.hs 28;" C -SetStrategyAction src/Dodge/Data/ActionPlan.hs 148;" C SetTrigger src/Dodge/Data/WorldEffect.hs 27;" C SetTriggerAndSetLSCol src/Dodge/Data/WorldEffect.hs 29;" C ShadNum src/Picture/Data.hs 30;" t Shader src/Shader/Data.hs 51;" t ShaderTexture src/Shader/Data.hs 102;" t ShadowFidelity src/Shape/Data.hs 20;" t -ShadowRendering src/Dodge/Data/Config.hs 117;" t +ShadowRendering src/Dodge/Data/Config.hs 118;" t Shape src/Shape/Data.hs 50;" t ShapeProp src/Dodge/Data/Prop.hs 14;" C ShapeType src/Shape/Data.hs 11;" t @@ -1241,7 +1240,7 @@ Shrunk src/Dodge/Data/Item/Params.hs 26;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 62;" t SimpleEdge src/Dodge/Data/PathGraph.hs 43;" t -SixteenthRes src/Dodge/Data/Config.hs 114;" C +SixteenthRes src/Dodge/Data/Config.hs 115;" C Size src/Shape/Data.hs 24;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -1286,13 +1285,12 @@ StabOrthReduce src/Dodge/Projectile/Create.hs 17;" C StabSpinIncrease src/Dodge/Projectile/Create.hs 18;" C Stance src/Dodge/Data/Creature/Stance.hs 17;" t StandaloneWall src/Dodge/Data/Wall/Structure.hs 12;" C -StartSentinelPost src/Dodge/Data/ActionPlan.hs 124;" C StartStopMvType src/Dodge/Data/Creature/Misc.hs 34;" C StayInArea src/Dodge/Data/Scenario.hs 13;" C Stone src/Dodge/Data/Material.hs 13;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C Strategy src/Dodge/Data/ActionPlan.hs 135;" t -StrategyInt src/Dodge/Data/ActionPlan.hs 157;" C +StrategyInt src/Dodge/Data/ActionPlan.hs 154;" C SubInventory src/Dodge/Data/HUD.hs 14;" t Superfluous src/Shape/Data.hs 34;" C Surface src/Shape/Data.hs 38;" t @@ -1922,7 +1920,7 @@ _guTime src/Dodge/Data/Gust.hs 15;" f _guVel src/Dodge/Data/Gust.hs 14;" f _gusts src/Dodge/Data/LWorld.hs 102;" f _gwWorld src/Dodge/Data/GenWorld.hs 25;" f -_harvestTarget src/Dodge/Data/ActionPlan.hs 156;" f +_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 @@ -1983,7 +1981,7 @@ _items src/Dodge/Data/LWorld.hs 97;" f _itsInt src/Dodge/Data/Item.hs 40;" f _itsMax src/Dodge/Data/Item.hs 41;" f _itsRangeInt src/Dodge/Data/Item.hs 41;" f -_killTarget src/Dodge/Data/ActionPlan.hs 163;" f +_killTarget src/Dodge/Data/ActionPlan.hs 160;" f _lAimPos src/Dodge/Data/LWorld.hs 148;" f _lClock src/Dodge/Data/LWorld.hs 143;" f _lFootPos src/Dodge/Data/Creature/Misc.hs 71;" f @@ -2343,14 +2341,14 @@ _scurPos src/Dodge/Data/SelectionList.hs 26;" f _scurSize src/Dodge/Data/SelectionList.hs 27;" f _seDist src/Dodge/Data/PathGraph.hs 44;" f _seObstacles src/Dodge/Data/PathGraph.hs 45;" f -_searchTimer src/Dodge/Data/ActionPlan.hs 154;" f +_searchTimer src/Dodge/Data/ActionPlan.hs 151;" f _seenLocations src/Dodge/Data/LWorld.hs 140;" f _selLocation src/Dodge/Data/LWorld.hs 141;" f _sensAmount src/Dodge/Data/Machine/Sensor.hs 20;" f _sensType src/Dodge/Data/Machine/Sensor.hs 21;" f _sensorCoding src/Dodge/Data/GenParams.hs 14;" f -_sentinelDir src/Dodge/Data/ActionPlan.hs 164;" f -_sentinelPos src/Dodge/Data/ActionPlan.hs 164;" f +_sentinelDir src/Dodge/Data/ActionPlan.hs 161;" f +_sentinelPos src/Dodge/Data/ActionPlan.hs 161;" f _sfColor src/Shape/Data.hs 41;" f _sfShadowImportance src/Shape/Data.hs 42;" f _sfSize src/Shape/Data.hs 43;" f @@ -2417,7 +2415,7 @@ _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 -_strategyInt src/Dodge/Data/ActionPlan.hs 157;" 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 _stuckCrID src/Dodge/Data/Projectile.hs 50;" f @@ -2687,7 +2685,7 @@ anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f anythingHitCirc src/Dodge/Base/Collide.hs 357;" f apply src/Quaternion.hs 78;" f applyCME src/Dodge/HeldUse.hs 397;" f -applyClip src/Dodge/Debug.hs 179;" f +applyClip src/Dodge/Debug.hs 184;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 15;" f applyEventIO src/Loop.hs 90;" f applyGravityPU src/Dodge/Projectile/Update.hs 41;" f @@ -2696,8 +2694,8 @@ applyInvLock src/Dodge/HeldUse.hs 455;" f applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPosition src/Sound.hs 113;" f applyRecoil src/Dodge/HeldUse.hs 486;" f -applyResFactor src/Dodge/Data/Config.hs 127;" f -applyResFactorF src/Dodge/Data/Config.hs 136;" f +applyResFactor src/Dodge/Data/Config.hs 128;" f +applyResFactorF src/Dodge/Data/Config.hs 137;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 584;" f applySoundCME src/Dodge/HeldUse.hs 476;" f @@ -2741,7 +2739,7 @@ attachList src/Dodge/Tree/Compose.hs 81;" f attachOnward src/Dodge/Tree/Compose.hs 96;" f attachOnward' src/Dodge/Tree/Compose.hs 99;" f attachTree src/Dodge/Tree/Compose.hs 39;" f -attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 77;" f +attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 76;" f attribSize src/Shader/Compile.hs 139;" f autoAmr src/Dodge/Item/Held/Rod.hs 39;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 794;" f @@ -2749,7 +2747,7 @@ autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 594;" f autoPistol src/Dodge/Item/Held/Stick.hs 21;" f autoRifle src/Dodge/Item/Held/Cane.hs 27;" f -awakeLevelPerception src/Dodge/Creature/Perception.hs 171;" f +awakeLevelPerception src/Dodge/Creature/Perception.hs 167;" f axisInt src/Geometry/Intersect.hs 247;" f azure src/Color.hs 49;" f bQuadToF src/Geometry/Bezier.hs 37;" f @@ -2780,7 +2778,7 @@ baseShoulder src/Dodge/Creature/Picture.hs 392;" 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 137;" 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 @@ -2902,7 +2900,7 @@ charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f chaseCorpse src/Dodge/Creature/Picture.hs 303;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 35;" f -chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 194;" 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 chasmSimpleMaze src/Dodge/Room/Tutorial.hs 414;" f @@ -2911,8 +2909,8 @@ chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 126;" 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 377;" f -checkDeath' src/Dodge/Creature/Update.hs 380;" f +checkDeath src/Dodge/Creature/Update.hs 386;" f +checkDeath' src/Dodge/Creature/Update.hs 389;" f checkEndGame src/Dodge/Update.hs 889;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2965,6 +2963,7 @@ closeItemDist src/Dodge/Inventory.hs 149;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 221;" f closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 260;" f closeObjectInfo src/Dodge/Render/HUD.hs 228;" f +closestCrToMouse src/Dodge/Debug.hs 301;" f closestPointOnLine src/Geometry/Intersect.hs 279;" f closestPointOnLineParam src/Geometry/Intersect.hs 295;" f closestPointOnSeg src/Geometry/Intersect.hs 310;" f @@ -3037,46 +3036,46 @@ 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 423;" f +corpseOrGib src/Dodge/Creature/Update.hs 432;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f corridorWallN src/Dodge/Room/Corridor.hs 77;" f crAdd src/Dodge/Room/RezBox.hs 116;" f -crAwayFromPost src/Dodge/Creature/Test.hs 83;" f +crAwayFromPost src/Dodge/Creature/Test.hs 82;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 80;" f -crCanSeeCr src/Dodge/Creature/Test.hs 50;" 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 401;" f +crDeathEffects src/Dodge/Creature/Update.hs 410;" 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 crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f -crHasTarget src/Dodge/Creature/Test.hs 63;" f -crHasTargetLOS src/Dodge/Creature/Test.hs 66;" f +crHasTarget src/Dodge/Creature/Test.hs 62;" f +crHasTargetLOS src/Dodge/Creature/Test.hs 65;" f crHeight src/Dodge/Base/Collide.hs 188;" f crHit src/Dodge/WorldEvent/ThingsHit.hs 167;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crImpulsesOnCognizant src/Dodge/Creature/Perception.hs 58;" f -crInAimStance src/Dodge/Creature/Test.hs 91;" f -crIsAiming src/Dodge/Creature/Test.hs 58;" f -crIsArmouredFrom src/Dodge/Creature/Test.hs 107;" f +crInAimStance src/Dodge/Creature/Test.hs 87;" f +crIsAiming src/Dodge/Creature/Test.hs 57;" f +crIsArmouredFrom src/Dodge/Creature/Test.hs 103;" f crLeftHandWall src/Dodge/Creature/HandPos.hs 94;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f crMoveImpulses src/Dodge/Creature/Action.hs 144;" f -crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 47;" f -crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 64;" f +crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 39;" f +crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 56;" f crMvBy src/Dodge/Creature/Impulse/Movement.hs 28;" f -crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 39;" f -crMvForward src/Dodge/Creature/Impulse/Movement.hs 96;" f -crMvForward' src/Dodge/Creature/Impulse/Movement.hs 75;" f +crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 36;" f +crMvForward src/Dodge/Creature/Impulse/Movement.hs 88;" f +crMvForward' src/Dodge/Creature/Impulse/Movement.hs 67;" f crMvType src/Dodge/Creature/MoveType.hs 7;" f -crNearPoint src/Dodge/Creature/Test.hs 129;" 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 @@ -3084,26 +3083,26 @@ crPainEffect src/Dodge/Creature/State.hs 50;" f crPathing src/Dodge/Creature/Action.hs 128;" f crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f -crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" f +crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 998;" f -crStratConMatches src/Dodge/Creature/Test.hs 78;" f +crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 370;" f +crUpdate src/Dodge/Creature/Update.hs 379;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f crVocalResetTime src/Dodge/Creature/Vocalization.hs 69;" f -crWalk src/Dodge/Creature/Impulse/Movement.hs 31;" f -crWalkAbsolute src/Dodge/Creature/Impulse/Movement.hs 55;" f +crWalk src/Dodge/Creature/Impulse/Movement.hs 32;" f +crWalkAbsolute src/Dodge/Creature/Impulse/Movement.hs 47;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 16;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 71;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 81;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f -crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 124;" f +crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 123;" f crabCorpse src/Dodge/Creature/Picture.hs 322;" f crabCrit src/Dodge/Creature/ChaseCrit.hs 42;" f -crabCritInternal src/Dodge/Humanoid.hs 29;" f +crabCritInternal src/Dodge/Humanoid.hs 25;" f crabFeet src/Dodge/Creature/Picture.hs 232;" f crabRoom src/Dodge/Room/Tutorial.hs 468;" f crabUpperBody src/Dodge/Creature/Picture.hs 156;" f @@ -3124,9 +3123,9 @@ createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f creatureShootLaser src/Dodge/HeldUse.hs 860;" f creatureShootPulseLaser src/Dodge/HeldUse.hs 891;" f -creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 99;" f -creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 120;" f -creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 109;" f +creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 91;" f +creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 112;" f +creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 101;" f critDeadEnd src/Dodge/Room/Room.hs 261;" f critInDeadEnd src/Dodge/Room/Room.hs 257;" f critsPillarRoom src/Dodge/Room/Room.hs 417;" f @@ -3213,20 +3212,20 @@ deadUpperBody src/Dodge/Creature/Picture.hs 389;" 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 -debugEvent src/Dodge/Debug.hs 44;" f -debugEvent' src/Dodge/Debug.hs 50;" f -debugEvents src/Dodge/Debug.hs 29;" f -debugGet src/Dodge/Debug.hs 124;" f -debugItem src/Dodge/Debug.hs 87;" f +debugEvent src/Dodge/Debug.hs 47;" f +debugEvent' src/Dodge/Debug.hs 53;" f +debugEvents src/Dodge/Debug.hs 32;" f +debugGet src/Dodge/Debug.hs 129;" f +debugItem src/Dodge/Debug.hs 91;" f debugMenu src/Dodge/Menu.hs 122;" f debugMenuOptions src/Dodge/Menu.hs 128;" f -debugMouseClickPos src/Dodge/Debug.hs 194;" f -debugOn src/Dodge/Data/Config.hs 178;" f -debugPutDraw src/Dodge/Debug.hs 145;" f -debugPutItems src/Dodge/Debug.hs 128;" f -debugPutN src/Dodge/Debug.hs 134;" f -debugShowPath src/Dodge/Debug.hs 154;" f -debugWritableValues src/Dodge/Debug.hs 167;" f +debugMouseClickPos src/Dodge/Debug.hs 199;" f +debugOn src/Dodge/Data/Config.hs 179;" f +debugPutDraw src/Dodge/Debug.hs 150;" f +debugPutItems src/Dodge/Debug.hs 133;" f +debugPutN src/Dodge/Debug.hs 139;" f +debugShowPath src/Dodge/Debug.hs 159;" f +debugWritableValues src/Dodge/Debug.hs 172;" f decodeSensorType src/Dodge/Terminal.hs 81;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 62;" f decomposeTree src/Dodge/Tree/Compose.hs 59;" f @@ -3258,7 +3257,7 @@ defaultCWGen src/Dodge/Default/World.hs 65;" f defaultCWorld src/Dodge/Default/World.hs 90;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 33;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f -defaultConfig src/Dodge/Data/Config.hs 153;" f +defaultConfig src/Dodge/Data/Config.hs 154;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 64;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f @@ -3354,8 +3353,8 @@ doCrImp src/Dodge/CreatureEffect.hs 13;" f doDamage src/Dodge/Creature/State.hs 44;" f doDeathToggle src/Dodge/WorldEffect.hs 99;" f doDeathTriggers src/Dodge/WorldEffect.hs 92;" f -doDebugGet src/Dodge/Debug.hs 148;" f -doDebugPut src/Dodge/Debug.hs 137;" f +doDebugGet src/Dodge/Debug.hs 153;" f +doDebugPut src/Dodge/Debug.hs 142;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f @@ -3391,8 +3390,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 280;" f -doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 272;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 289;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -3441,19 +3439,19 @@ drawCombineInventory src/Dodge/Render/HUD.hs 190;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 72;" f drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f -drawCrInfo src/Dodge/Debug.hs 218;" f -drawCrInfo' src/Dodge/Debug.hs 213;" f +drawCrInfo src/Dodge/Debug.hs 223;" f +drawCrInfo' src/Dodge/Debug.hs 218;" f drawCrabCrit src/Dodge/Creature/Picture.hs 139;" f drawCreature src/Dodge/Creature/Picture.hs 37;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f -drawCreatureRad src/Dodge/Debug.hs 295;" f +drawCreatureRad src/Dodge/Debug.hs 307;" f drawCross src/Dodge/Render/Label.hs 25;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 73;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" f drawDDATest src/Dodge/Debug/Picture.hs 304;" f drawDamSensor src/Dodge/Machine/Draw.hs 38;" f -drawDebug src/Dodge/Debug.hs 256;" f +drawDebug src/Dodge/Debug.hs 261;" f drawDrag src/Dodge/Render/Picture.hs 204;" f drawDragDrop src/Dodge/Render/Picture.hs 233;" f drawDragPickup src/Dodge/Render/Picture.hs 242;" f @@ -3556,7 +3554,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 461;" f +dropAll src/Dodge/Creature/Update.hs 470;" f dropInventoryPath src/Dodge/HeldUse.hs 1380;" f dropItem src/Dodge/Creature/Action.hs 180;" f dropper src/Dodge/Item/Scope.hs 82;" f @@ -3685,7 +3683,7 @@ flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 423;" 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 -flockACC src/Dodge/Creature/ReaderUpdate.hs 98;" f +flockACC src/Dodge/Creature/ReaderUpdate.hs 97;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f @@ -3853,7 +3851,7 @@ handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 19;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f -hasAutoDoorBody src/Dodge/Creature/Test.hs 139;" f +hasAutoDoorBody src/Dodge/Creature/Test.hs 135;" f hasButtonLOS src/Dodge/Base/Collide.hs 326;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f hasLOS src/Dodge/Base/Collide.hs 319;" f @@ -3903,9 +3901,8 @@ 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 347;" f -hoverCritInternal src/Dodge/Humanoid.hs 46;" f -hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 356;" 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 iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f @@ -4002,7 +3999,8 @@ invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 29;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f isAmmoIntLink src/Dodge/HeldUse.hs 738;" f -isAnimate src/Dodge/Creature/Test.hs 132;" f +isAnimate src/Dodge/Creature/Test.hs 128;" f +isBee src/Dodge/TestString.hs 45;" f isCognizant src/Dodge/Creature/Perception.hs 115;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 66;" f @@ -4165,7 +4163,7 @@ linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f listConfig src/Dodge/Menu.hs 232;" f listControls src/Dodge/Menu.hs 244;" f listCursor src/Dodge/Render/List.hs 120;" f -listGuard src/Dodge/Creature/ReaderUpdate.hs 296;" f +listGuard src/Dodge/Creature/ReaderUpdate.hs 287;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f @@ -4325,6 +4323,7 @@ megaBattery src/Dodge/Item/Ammo.hs 54;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f megaTinMag src/Dodge/Item/Ammo.hs 21;" f meleeHeadingMove src/Dodge/Creature/Boid.hs 295;" f +meleeMovement src/Dodge/Creature/Impulse.hs 100;" f memoBoxEdgeIndices src/Shader/Poke.hs 361;" f memoBoxSurfaces src/Shader/Poke.hs 295;" f memoCylinderIndices src/Shader/Poke.hs 332;" f @@ -4431,7 +4430,7 @@ mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f mvProp src/Dodge/Placement/PlaceSpot.hs 167;" f -mvTurnToward src/Dodge/Creature/Impulse/Movement.hs 133;" f +mvTurnToward src/Dodge/Creature/Impulse/Movement.hs 125;" f myIntersectLineLine src/Geometry/Intersect.hs 197;" f myIntersectSegSeg src/Geometry/Intersect.hs 175;" f nRays src/Geometry.hs 182;" f @@ -4443,9 +4442,9 @@ nearRect src/Dodge/Zoning/Common.hs 16;" f nearSeg src/Dodge/Zoning/Common.hs 12;" f nearZeroAngle src/Geometry/Vector.hs 146;" f nearestAngleRep src/Geometry.hs 148;" f -newExtraAwareness src/Dodge/Creature/Perception.hs 147;" f +newExtraAwareness src/Dodge/Creature/Perception.hs 143;" f newKey src/IntMapHelp.hs 61;" f -newSounds src/Dodge/Creature/Perception.hs 179;" f +newSounds src/Dodge/Creature/Perception.hs 175;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f nextArc src/Dodge/Tesla.hs 61;" f @@ -4482,7 +4481,7 @@ obstructPathsCrossing src/Dodge/Path.hs 153;" f 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 95;" f +oneH src/Dodge/Creature/Test.hs 91;" f oneSmooth src/Dodge/Creature/Picture.hs 215;" f openConsole src/Dodge/Update.hs 140;" f optionMenu src/Dodge/Menu.hs 110;" f @@ -4508,7 +4507,7 @@ outwardIntegers src/Dodge/Base.hs 181;" f overCol src/Picture/Base.hs 303;" f overColObj src/Shape.hs 275;" f overColSH src/Shape.hs 243;" f -overDebugEvent src/Dodge/Debug.hs 38;" f +overDebugEvent src/Dodge/Debug.hs 41;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkType src/Dodge/RoomLink.hs 106;" f overPos src/Picture/Base.hs 298;" f @@ -4520,8 +4519,8 @@ overlapCircWallsClosest src/Dodge/Base/Collide.hs 294;" f overlapSegCrs src/Dodge/Base/Collide.hs 64;" f overlapSegCrs' src/Dodge/Base/Collide.hs 72;" f overlapSegWalls src/Dodge/Base/Collide.hs 235;" f -overrideInternal src/Dodge/Creature/ReaderUpdate.hs 280;" f -overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 38;" f +overrideInternal src/Dodge/Creature/ReaderUpdate.hs 271;" f +overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 37;" f overwriteLabel src/Dodge/Tree/Compose.hs 32;" f p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f @@ -4604,7 +4603,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 457;" f +poisonSPic src/Dodge/Creature/Update.hs 466;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4832,7 +4831,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 754;" f reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 860;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 570;" f -rememberSounds src/Dodge/Creature/Perception.hs 186;" f +rememberSounds src/Dodge/Creature/Perception.hs 182;" f remoteDetonator src/Dodge/Item/Scope.hs 152;" f remoteScreen src/Dodge/Item/Scope.hs 146;" f removeAmmoFromMag src/Dodge/HeldUse.hs 941;" f @@ -4979,7 +4978,7 @@ scaleSH src/Shape.hs 271;" f scalp src/Dodge/Creature/Picture.hs 377;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 454;" f +scorchSPic src/Dodge/Creature/Update.hs 463;" 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 @@ -5000,14 +4999,14 @@ seagullCry2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f seagullCryS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 732;" f seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 808;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f -searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 313;" f +searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 304;" f secondColumnLDP src/Dodge/ListDisplayParams.hs 45;" f sectionsDesiredLines src/Dodge/DisplayInventory.hs 202;" f 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 328;" f +segmentArea src/Dodge/Creature/Update.hs 337;" 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 @@ -5028,10 +5027,10 @@ sensorSPic src/Dodge/Machine/Draw.hs 89;" f sensorTut src/Dodge/Room/Tutorial.hs 634;" f sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f -setBeeRandomMovement src/Dodge/Creature/Impulse.hs 103;" f +setBeeRandomMovement src/Dodge/Creature/Impulse.hs 110;" f setChannelPos src/Sound.hs 152;" f setClickWorldPos src/Dodge/Update.hs 110;" f -setClip src/Dodge/Debug.hs 242;" f +setClip src/Dodge/Debug.hs 247;" f setDepth src/Picture/Base.hs 120;" f setDirPS src/Dodge/PlacementSpot.hs 51;" f setFallback src/Dodge/PlacementSpot.hs 127;" f @@ -5043,7 +5042,7 @@ setLayer src/Picture/Base.hs 131;" f setLinkType src/Dodge/RoomLink.hs 79;" f setLinkTypePD src/Dodge/RoomLink.hs 86;" f setMusicVolume src/Sound.hs 164;" f -setMvPosToTargetCr src/Dodge/Creature/ReaderUpdate.hs 60;" f +setMvPosToTargetCr src/Dodge/Creature/ReaderUpdate.hs 59;" f setOldPos src/Dodge/Update.hs 601;" f setOutLinks src/Dodge/RoomLink.hs 49;" f setOutLinksByType src/Dodge/RoomLink.hs 76;" f @@ -5054,13 +5053,13 @@ 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 259;" f +setSlimeDir src/Dodge/Creature/Update.hs 268;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f setTreeInts src/Dodge/Room/Tutorial.hs 115;" f setViewDistance src/Dodge/Update/Camera.hs 240;" f -setViewPos src/Dodge/Creature/ReaderUpdate.hs 71;" f +setViewPos src/Dodge/Creature/ReaderUpdate.hs 70;" f setViewport src/Dodge/Render.hs 453;" f setVol src/Dodge/Config.hs 47;" f setWindowColor src/Dodge/Render/Walls.hs 32;" f @@ -5136,10 +5135,10 @@ showEquipItem src/Dodge/Item/Display.hs 109;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 87;" f -showManObj src/Dodge/TestString.hs 110;" f -showMuzzlePositions src/Dodge/Debug.hs 301;" f +showManObj src/Dodge/TestString.hs 115;" f +showMuzzlePositions src/Dodge/Debug.hs 313;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 127;" f +showTimeFlow src/Dodge/TestString.hs 132;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5176,12 +5175,12 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f slideWindow src/ListHelp.hs 81;" f slimeCrit src/Dodge/Creature/ChaseCrit.hs 68;" f -slimeCritUpdate src/Dodge/Creature/Update.hs 224;" f +slimeCritUpdate src/Dodge/Creature/Update.hs 233;" f slimeEatSound src/Dodge/Update.hs 1119;" f slimeFood src/Dodge/Update.hs 1074;" f slimeSuck src/Dodge/Update.hs 1058;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 56;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 331;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 340;" 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 @@ -5212,7 +5211,7 @@ someCrits src/Dodge/LockAndKey.hs 122;" f soundAngle src/Dodge/SoundLogic.hs 163;" f soundContinue src/Dodge/SoundLogic.hs 131;" f soundContinueVol src/Dodge/SoundLogic.hs 145;" f -soundIsClose src/Dodge/Creature/Perception.hs 192;" f +soundIsClose src/Dodge/Creature/Perception.hs 188;" f soundMenu src/Dodge/Menu.hs 158;" f soundMenuOptions src/Dodge/Menu.hs 161;" f soundMultiFrom src/Dodge/SoundLogic.hs 187;" f @@ -5248,8 +5247,8 @@ splashScreen src/Dodge/Initialisation.hs 10;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitLookupTrie src/SimpleTrie.hs 39;" f -splitSlimeCrit src/Dodge/Creature/Update.hs 297;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 287;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 306;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 296;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5287,7 +5286,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 410;" f +startDeathTimer src/Dodge/Creature/Update.hs 419;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f @@ -5312,7 +5311,7 @@ storageShape src/Dodge/Machine/Draw.hs 31;" f storeRoomID src/Dodge/Room/Modify.hs 23;" f strFromEquipment src/Dodge/Creature/Statistics.hs 59;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 73;" f -strengthFactor src/Dodge/Creature/Impulse/Movement.hs 69;" f +strengthFactor src/Dodge/Creature/Impulse/Movement.hs 61;" f strictify src/MaybeHelp.hs 35;" f strideLength src/Dodge/Creature/HandPos.hs 46;" f strideRot src/Dodge/Item/HeldOffset.hs 80;" f @@ -5323,7 +5322,7 @@ subInvX src/Dodge/ListDisplayParams.hs 53;" f subMap src/TreeHelp.hs 121;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f subtree src/TreeHelp.hs 72;" f -succB src/Dodge/Debug.hs 162;" f +succB src/Dodge/Debug.hs 167;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapInOutLinks src/Dodge/RoomLink.hs 99;" f swapIndices src/ListHelp.hs 50;" f @@ -5359,7 +5358,7 @@ targCorner src/Dodge/Targeting/Draw.hs 35;" f targetCursorPic src/Dodge/Targeting/Draw.hs 41;" f targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 14;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 8;" f -targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 302;" f +targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 293;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f targetingScope src/Dodge/Item/Scope.hs 38;" f tbComplete src/Dodge/Terminal.hs 217;" f @@ -5381,7 +5380,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 45;" f +testStringInit src/Dodge/TestString.hs 50;" f text src/Picture/Base.hs 185;" f textGrad src/Picture/Text.hs 5;" f textInputBlurb src/Dodge/Terminal.hs 43;" f @@ -5439,7 +5438,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 416;" f +toDeathCarriage src/Dodge/Creature/Update.hs 425;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5463,7 +5462,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 714;" f topInvW src/Dodge/ListDisplayParams.hs 56;" f topPrismEdgeIndices src/Shader/Poke.hs 344;" f topPrismIndices src/Shader/Poke.hs 419;" f -topTestPart src/Dodge/TestString.hs 105;" f +topTestPart src/Dodge/TestString.hs 110;" f torchShape src/Dodge/Item/Draw/SPic.hs 278;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f @@ -5523,7 +5522,7 @@ tryDropSelected src/Dodge/Update/Input/InGame.hs 159;" f tryEvadeSideways src/Dodge/Creature/Action.hs 105;" f tryGetChannel src/Sound.hs 99;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f -tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 43;" f +tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 42;" f tryPickupSelected src/Dodge/Update/Input/InGame.hs 177;" f tryPlay src/Sound.hs 85;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f @@ -5545,8 +5544,8 @@ tutorialMessage1 src/Dodge/Room/Tutorial.hs 670;" f tweenAngles src/Geometry/Vector.hs 198;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f -twists src/Dodge/Creature/Test.hs 101;" f -twoFlat src/Dodge/Creature/Test.hs 98;" f +twists src/Dodge/Creature/Test.hs 97;" f +twoFlat src/Dodge/Creature/Test.hs 94;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 89;" f twoHandOffY src/Dodge/Creature/HandPos.hs 130;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 137;" f @@ -5573,7 +5572,7 @@ unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 133;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 121;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 203;" f -updateAggroBee src/Dodge/Creature/Update.hs 116;" f +updateAggroBee src/Dodge/Creature/Update.hs 115;" f updateAimPos src/Dodge/Update.hs 400;" f updateAllNodes src/TreeHelp.hs 88;" f updateArc src/Dodge/Tesla.hs 44;" f @@ -5581,18 +5580,18 @@ updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f -updateBeeCrit src/Dodge/Creature/Update.hs 111;" f -updateBeeFromPheremones src/Dodge/Creature/Update.hs 104;" f +updateBeeCrit src/Dodge/Creature/Update.hs 110;" f +updateBeeFromPheremones src/Dodge/Creature/Update.hs 103;" f updateBeePheremone src/Dodge/Update.hs 785;" 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 671;" f -updateCalmBee src/Dodge/Creature/Update.hs 154;" f +updateCalmBee src/Dodge/Creature/Update.hs 156;" f updateCamera src/Dodge/Update/Camera.hs 33;" f updateCarriage src/Dodge/Creature/State/WalkCycle.hs 22;" f updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 27;" f -updateChaseCrit src/Dodge/Humanoid.hs 12;" f +updateChaseCrit src/Dodge/Humanoid.hs 11;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f updateCloud src/Dodge/Update.hs 918;" f updateClouds src/Dodge/Update.hs 782;" f @@ -5629,7 +5628,8 @@ updateFunctionKey src/Dodge/Update/Input/InGame.hs 372;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f updateGas src/Dodge/Update.hs 940;" f updateGusts src/Dodge/Update.hs 902;" f -updateHiveCrit src/Dodge/Creature/Update.hs 83;" f +updateHiveCrit src/Dodge/Creature/Update.hs 82;" f +updateHoverCrit src/Dodge/Humanoid.hs 39;" f updateIMl src/Dodge/Update.hs 637;" f updateIMl' src/Dodge/Update.hs 640;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f @@ -5664,7 +5664,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 469;" f +updatePulse src/Dodge/Creature/Update.hs 478;" f updatePulseBall src/Dodge/Update.hs 550;" f updatePulseLaser src/Dodge/Update.hs 725;" f updatePulseLasers src/Dodge/Update.hs 525;" f @@ -5700,7 +5700,7 @@ updateUniverseLast src/Dodge/Update.hs 145;" f updateUniverseMid src/Dodge/Update.hs 187;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 49;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f -updateVocTimer src/Dodge/Humanoid.hs 63;" f +updateVocTimer src/Dodge/Humanoid.hs 53;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 495;" f @@ -5768,10 +5768,10 @@ viewClipBounds src/Dodge/Debug/Picture.hs 350;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 202;" f viewGameRoomBoundaries src/Dodge/Debug/Picture.hs 332;" f viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f -viewTarget src/Dodge/Creature/ReaderUpdate.hs 254;" f +viewTarget src/Dodge/Creature/ReaderUpdate.hs 253;" f violet src/Color.hs 48;" f visibleWalls src/Dodge/Base/Collide.hs 240;" f -visionCheck src/Dodge/Creature/Perception.hs 162;" 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 @@ -5792,7 +5792,7 @@ wasdM src/Dodge/WASD.hs 9;" f wasdMovement src/Dodge/Creature/YourControl.hs 140;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 106;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f -watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 285;" f +watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 276;" f weaponBehindPillar src/Dodge/Room/Room.hs 200;" f weaponBetweenPillars src/Dodge/Room/Room.hs 216;" f weaponEmptyRoom src/Dodge/Room/Room.hs 161;" f