diff --git a/src/Dodge/Base/Collide.hs b/src/Dodge/Base/Collide.hs index 63093080c..7e09f9808 100644 --- a/src/Dodge/Base/Collide.hs +++ b/src/Dodge/Base/Collide.hs @@ -264,7 +264,7 @@ circHitWall sp ep r w = xep = ep + x -- | note that this does not push the circle away from the wall at all -collideCircWalls :: Point2 -> Point2 -> Float -> [Wall] -> (Point2, Maybe Wall) +collideCircWalls :: Foldable t => Point2 -> Point2 -> Float -> t Wall -> (Point2, Maybe Wall) {-# INLINE collideCircWalls #-} collideCircWalls sp ep rad = foldl' findPoint (ep, Nothing) where @@ -275,14 +275,11 @@ collideCircWalls sp ep rad = foldl' findPoint (ep, Nothing) . _wlLine $ wl shiftbyrad (a, b) = - bimap - f - f - ( a +.+ rad *.* normalizeV (a -.- b) - , b +.+ rad *.* normalizeV (b -.- a) + ( f $ a + rad *^ normalizeV (a - b) + , f $ b + rad *^ normalizeV (b - a) ) where - f = (+.+) (rad *.* normalizeV (vNormal $ a -.- b)) + f = (+ rad *^ normalizeV (vNormal $ a - b)) overlapCircWallsClosest :: Point2 -> Float -> [Wall] -> Maybe (Point2, Wall) {-# INLINE overlapCircWallsClosest #-} diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 952015eaf..57f717234 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -39,14 +39,16 @@ import qualified Data.Set as S -- it is desirable to be able to determine when an action is finished, -- so that DoActionThen and the like are easy to define performActions :: Int -> World -> World -performActions cid w = - foldl' +performActions cid w = fromMaybe w $ do + a <- cr ^?crActionPlan.apAction + let (iss, mayas) = performAction cr w a + return $ foldl' (followImpulse cid) (w & cWorld . lWorld . creatures . ix cid . crActionPlan . apAction .~ mayas) iss where cr = w ^?! cWorld . lWorld . creatures . ix cid - (iss, mayas) = maybe ([],NoAction) (performAction cr w) (cr ^? crActionPlan . apAction) +-- (iss, mayas) = maybe ([],NoAction) (performAction cr w) (cr ^? crActionPlan . apAction) type ActionUpdate = ([Impulse], Action) @@ -55,6 +57,7 @@ type ActionUpdate = ([Impulse], Action) -} performAction :: Creature -> World -> Action -> ActionUpdate performAction cr w ac = case ac of + Eat {} -> ([],NoAction) AimAt tcid p -> performAimAt cr w tcid p WaitThen 0 newAc -> ([], newAc) WaitThen t newAc -> ([], WaitThen (t -1) newAc) @@ -65,7 +68,7 @@ performAction cr w ac = case ac of DoActionThen fsta afta -> case performAction cr w fsta of (imps, NoAction) -> (imps, afta) (imps, nxta) -> (imps, DoActionThen nxta afta) - DoActionWhile f act -> performAction cr w $ DoActionWhilePartial act f act +-- DoActionWhile f act -> performAction cr w $ DoActionWhilePartial act f act DoActionWhilePartial partAc f resetAc | doWdCrBl f w cr -> case performAction cr w partAc of (imps, NoAction) -> (imps, DoActionWhilePartial resetAc f resetAc) @@ -80,11 +83,6 @@ performAction cr w ac = case ac of DoActionWhileInterrupt repa f afta | doWdCrBl f w cr -> (fst $ performAction cr w repa, DoActionWhileInterrupt repa f afta) | otherwise -> performAction cr w afta --- DoActions [] -> ([], NoAction) --- DoActions acs -> --- let (imps, newAcs) = foldMap (performAction cr w) acs --- in (imps, newAcs) --- 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 @@ -92,8 +90,6 @@ performAction cr w ac = case ac of i <- cr ^? crIntention . targetCr . _Just tcr <- w ^? cWorld . lWorld . creatures . ix i return ([TurnTo (tcr ^. crPos . _xy +.+ rotateV (_crDir tcr) p)], NoAction) --- UseSelf f -> performAction cr w $ doCrAc f cr --- ArbitraryAction f -> performAction cr w (doCrWdAc f cr w) DoImpulsesAlongside sideImp mainAc -> performAction cr w mainAc & _1 <>~ sideImp DoReplicate t nxtac -> performAction cr w $ DoReplicatePartial nxtac t nxtac DoReplicatePartial _ 0 pac -> performAction cr w pac diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index 1fba238e1..82bdb978c 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -38,6 +38,8 @@ chaseCrit = & crName .~ "chaseCrit" & crHP .~ HP 150 & crFaction .~ ColorFaction green + & crActionPlan . apGoal .~ SearchForFood + & crActionPlan . apStrategy .~ Search crabCrit :: Creature crabCrit = defaultCreature diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 9bafc83db..5cdb8fd79 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -2,6 +2,11 @@ module Dodge.Creature.Update (updateCreature) where +import qualified Data.Semigroup as Semi +import Dodge.WorldEvent.ThingsHit +import Dodge.Humanoid +import Dodge.Creature.Perception +import Dodge.Creature.ReaderUpdate import Dodge.Creature.Slime import Dodge.Creature.Radius import Dodge.Creature.MoveType @@ -25,7 +30,6 @@ import Dodge.Creature.YourControl import Dodge.Damage import Dodge.Data.Damage.Type import Dodge.Data.World -import Dodge.Humanoid import Dodge.Inventory import Dodge.Lampoid import Dodge.Prop.Gib @@ -62,7 +66,7 @@ updateLivingCreature cr = case cr ^. crType of . yourControl LampCrit{} -> updateLampoid cr BarrelCrit bt -> updateBarreloid bt cr - ChaseCrit{} -> crUpdate cid . performActions cid . updateChaseCrit cid + ChaseCrit{} -> crUpdate cid . performActions cid . updateChaseCrit cid cr CrabCrit{} -> crUpdate cid . performActions cid . crabCritInternal cid AutoCrit{} -> crUpdate cid SwarmCrit{} -> crUpdate cid @@ -364,6 +368,72 @@ slinkCritUpdate cid w = . _2 *~ Q.axisAngle (V3 0 1 0) (pi / 1000) +updateChaseCrit :: Int -> Creature -> World -> World +updateChaseCrit cid cr + | SearchForFood <- cr ^?! crActionPlan . apGoal = updateFoodSearchChaseCrit cid cr + | Flee <- cr^?!crActionPlan.apGoal + , NoAction <- cr^?!crActionPlan.apAction = tocr.crActionPlan.apGoal.~SearchForFood + | Flee <- cr^?!crActionPlan.apGoal = id + | otherwise = updateCalmChaseCrit cid + where + tocr = cWorld.lWorld.creatures.ix cid + +updateFoodSearchChaseCrit :: Int -> Creature -> World -> World +updateFoodSearchChaseCrit cid cr w + | (tcr:_) <- sortOn f . IM.elems . IM.filter avoidcr $ crsNearCirc cxy 60 w + = let p = fleePoint cr cxy (20 *^ normalize (cxy - tcr^.crPos._xy)) w + in w &tocr.crActionPlan.apAction.~PathTo p NoAction + &tocr.crActionPlan.apGoal.~Flee + | CloseToMelee i<-cr^?!crActionPlan.apStrategy + ,Just tcr <-w^?cWorld.lWorld.creatures.ix i + ,distance cxy (tcr^.crPos._xy) < 11 = w + & tocr.crActionPlan.apAction.~NoAction + & tocr.crActionPlan.apStrategy.~Search + & cWorld.lWorld.creatures.at i.~Nothing + | CloseToMelee{}<-cr^?!crActionPlan.apStrategy + ,PathTo{}<-cr^?!crActionPlan.apAction= w + | xs@(_:_) <- IM.elems . IM.filter istarget $ crsNearCirc cxy 100 w + , (tcr,g) <- runState (takeOne xs) (w ^. randGen) = w&tocr.crActionPlan.apAction.~DoImpulses[MvForward] + &tocr.crActionPlan.apStrategy.~CloseToMelee (tcr^.crID) + &tocr.crActionPlan.apAction.~PathTo (tcr^.crPos._xy) NoAction + &randGen.~g + | otherwise = w + where + f c = fromMaybe 100 $ do + s <- cr^?crType.slimeSlime + return $ dist cxy (c^.crPos._xy) - sqrt(0.01*fromIntegral s) + tocr = cWorld . lWorld . creatures . ix cid + cxy = cr ^. crPos . _xy + avoidcr c | ct@SlimeCrit{} <- c^.crType = distance cxy (c^.crPos._xy)-crRad ct < 10 + | otherwise = False + istarget tcr + | BeeCrit{} <- tcr^.crType + , CrIsCorpse{} <- tcr^.crHP = True + | otherwise = False + +fleePoint :: Creature -> Point2 -> Point2 -> World -> Point2 +fleePoint c p v w = g . minimum $ f <$> [p+v, p+0.9*^vNormal v, p-0.9*^vNormal v] + where + f ep = let q = walkablePoint c p ep w + in Semi.Arg (-distance q p) q + g (Semi.Arg _ x) = x + + +updateCalmChaseCrit :: Int -> World -> World +updateCalmChaseCrit cid w = w + & 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 + + hoverCritHoverSound :: Creature -> World -> World hoverCritHoverSound cr w | d < 100 diff --git a/src/Dodge/Creature/Volition.hs b/src/Dodge/Creature/Volition.hs index 463335277..fb275db96 100644 --- a/src/Dodge/Creature/Volition.hs +++ b/src/Dodge/Creature/Volition.hs @@ -2,12 +2,12 @@ module Dodge.Creature.Volition ( holsterWeapon, drawWeapon, - shootTillEmpty, +-- shootTillEmpty, shootFirstMiss, ) where import Dodge.Data.Creature -import Dodge.Data.CreatureEffect +--import Dodge.Data.CreatureEffect import Dodge.SoundLogic.LoadSound import Geometry @@ -15,11 +15,11 @@ holsterWeapon, drawWeapon :: Action holsterWeapon = DoImpulses [ChangePosture AtEase, MakeSound whiteNoiseFadeOutS] drawWeapon = DoImpulses [ChangePosture Aiming, MakeSound whiteNoiseFadeInS] -shootTillEmpty :: Action ---shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem]) -shootTillEmpty = - (WdCrBlfromCrBl CrCanShoot `DoActionWhile` DoImpulses [UseItem]) - `DoActionThen` 20 `WaitThen` holsterWeapon +--shootTillEmpty :: Action +----shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem]) +--shootTillEmpty = +-- (WdCrBlfromCrBl CrCanShoot `DoActionWhile` DoImpulses [UseItem]) +-- `DoActionThen` 20 `WaitThen` holsterWeapon --advanceShoot :: Int -> Action --advanceShoot tcid = lostest `DoActionWhile` diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index 25c1625ee..0a7eda71b 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -62,7 +62,7 @@ infixr 9 `WaitThen` infixr 9 `DoActionThen` -infixr 9 `DoActionWhile` +--infixr 9 `DoActionWhile` infixr 9 `DoReplicate` @@ -74,6 +74,7 @@ data Action , _targetSeenAt :: Point2 } | PathTo { _pathToPoint :: Point2, _pathFailAction :: Action } + | Eat {_targetID :: Int, _acTimer :: Int} | EvadeAim | TurnToPoint { _turnToPoint :: Point2 } | ImpulsesList { _impulsesListList :: [[Impulse]], _acAction :: Action } @@ -82,10 +83,10 @@ data Action { _waitThenTimer :: Int , _waitThenAction :: Action } - | DoActionWhile - { _doActionWhileCondition :: WdCrBl - , _doActionWhileAction :: Action - } +-- | DoActionWhile +-- { _doActionWhileCondition :: WdCrBl +-- , _doActionWhileAction :: Action +-- } | DoActionWhilePartial { _doActionWhilePartial :: Action , _doActionWhileCondition :: WdCrBl @@ -146,7 +147,6 @@ data Strategy | Wander | CloseToMelee {_meleeTarget :: Int} | GetTo Point2 - | Flee | Search | SearchTimed {_searchTimer :: Int} | ReturnToHive @@ -157,6 +157,8 @@ data Strategy data Goal = LiveLongAndProsper + | SearchForFood + | Flee | Kill {_killTarget :: Int} | SentinelAt {_sentinelPos :: Point2, _sentinelDir :: Float} deriving (Eq, Ord, Show) --Generic, Flat) diff --git a/src/Dodge/Humanoid.hs b/src/Dodge/Humanoid.hs index 2e4b5807e..892c8f55a 100644 --- a/src/Dodge/Humanoid.hs +++ b/src/Dodge/Humanoid.hs @@ -1,27 +1,13 @@ module Dodge.Humanoid ( - updateChaseCrit, crabCritInternal, updateHoverCrit, + updateVocTimer, ) where import Dodge.Creature import Dodge.Data.World import LensHelp -updateChaseCrit :: Int -> World -> World -updateChaseCrit cid w = w - & 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 = w & tocr %~ setViewPos w diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 7fbbce2a2..85db99715 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -28,8 +28,13 @@ import Geometry.Data scrollSelectionSections :: Int -> IMSS a -> Maybe Selection -> Maybe Selection scrollSelectionSections yi sss msel | yi == 0 = msel - | yi > 0 = foldl' (&) msel $ replicate yi (ssScrollUsing ssLookupUp sss) - | otherwise = foldl' (&) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) + | yi > 0 = g $ foldl' (&) msel $ replicate yi (ssScrollUsing ssLookupUp sss) + | otherwise = g $ foldl' (&) msel $ replicate (negate yi) (ssScrollUsing ssLookupDown sss) + where + g msel' + | msel'^?_Just.slSec /= msel^?_Just.slSec + = msel'&_Just.slSet.~IS.empty + | otherwise = msel' nextInSectionSS :: IMSS a -> Maybe Selection -> Maybe Selection nextInSectionSS = ssScrollUsing ssLookupNextMax diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 13b15a85f..b05f528f7 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -58,7 +58,7 @@ crs :: Universe -> [Creature] crs u = u ^.. uvWorld . cWorld . lWorld . creatures . each testStringInit :: Universe -> [String] -testStringInit _ = mempty +testStringInit u = u ^. uvWorld . cWorld . lWorld . creatures . ix 5 . crActionPlan . to prettyShort --[show . getSum $ foldMap (Sum . crslime) (crs u)] -- u ^.. tocrs . each . crType . slimeSplitTimer . to show -- u ^.. tocrs . ix 1 . crPos . _xy . to show diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index afd124c26..e32aab1ba 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -20,6 +20,7 @@ module Dodge.WorldEvent.ThingsHit ( isWalkable, isFlyable, crOnSeg, + walkablePoint, ) where import ListHelp @@ -235,6 +236,10 @@ isFlyable p1 p2 = . foldMap (^. _2 . to getWallPathing) . wlsHitUnsorted p1 p2 +walkablePoint :: Creature -> Point2 -> Point2 -> World -> Point2 +{-#INLINE walkablePoint#-} +walkablePoint cr p1 p2 w = fst $ collideCircWalls p1 p2 (crRad (cr^.crType)) (wlsNearSeg p1 p2 w) + isWalkable :: Point2 -> Point2 -> World -> Bool {-# INLINE isWalkable #-} isWalkable p1 p2 w = isFlyable p1 p2 w && not (any f (w ^. cWorld . cliffs)) diff --git a/tags b/tags index ddee3db4f..3617c75f9 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 165;" o +<$> src/Dodge/Data/ActionPlan.hs 167;" o <$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o <$> src/Dodge/Data/Creature.hs 100;" o @@ -47,7 +47,7 @@ AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" 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 +Ambush src/Dodge/Data/ActionPlan.hs 138;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 34;" C AmmoExtractPosition src/Dodge/Data/Muzzle.hs 21;" t AmmoMagSF src/Dodge/Data/ComposedItem.hs 25;" C @@ -214,7 +214,7 @@ 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 +CloseToMelee src/Dodge/Data/ActionPlan.hs 148;" C Close_shape_culling src/Dodge/Data/Config.hs 93;" C Cloud src/Dodge/Data/Cloud.hs 13;" t CloudType src/Dodge/Data/Cloud.hs 21;" t @@ -338,17 +338,17 @@ DisplayTerminal src/Dodge/Data/HUD.hs 27;" C Display_debug src/Dodge/Data/Config.hs 79;" C Distortion src/Dodge/Data/Distortion.hs 11;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C -DoActionIf src/Dodge/Data/ActionPlan.hs 94;" C -DoActionIfElse src/Dodge/Data/ActionPlan.hs 98;" C -DoActionThen src/Dodge/Data/ActionPlan.hs 109;" C -DoActionWhile src/Dodge/Data/ActionPlan.hs 85;" C -DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 103;" C -DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 89;" C -DoImpulses src/Dodge/Data/ActionPlan.hs 80;" C -DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 128;" C +DoActionIf src/Dodge/Data/ActionPlan.hs 95;" C +DoActionIfElse src/Dodge/Data/ActionPlan.hs 99;" C +DoActionThen src/Dodge/Data/ActionPlan.hs 110;" C +DoActionWhile src/Dodge/Data/ActionPlan.hs 86;" C +DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 104;" C +DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 90;" C +DoImpulses src/Dodge/Data/ActionPlan.hs 81;" C +DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 129;" C DoNotMoveEquipment src/Dodge/Data/RightButtonOptions.hs 18;" C -DoReplicate src/Dodge/Data/ActionPlan.hs 113;" C -DoReplicatePartial src/Dodge/Data/ActionPlan.hs 117;" C +DoReplicate src/Dodge/Data/ActionPlan.hs 114;" C +DoReplicatePartial src/Dodge/Data/ActionPlan.hs 118;" C DockingBaySS src/Dodge/Data/Scenario.hs 92;" C Door src/Dodge/Data/Door.hs 29;" t DoorDoNothing src/Dodge/Data/Door.hs 45;" C @@ -374,6 +374,7 @@ EXPLOSIVES src/Dodge/Data/Item/Combine.hs 119;" C 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 +Eat src/Dodge/Data/ActionPlan.hs 77;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 49;" t EighthRes src/Dodge/Data/Config.hs 115;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C @@ -398,7 +399,7 @@ EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 17;" t EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 18;" C Escape src/Dodge/Data/Scenario.hs 10;" C Essential src/Shape/Data.hs 30;" C -EvadeAim src/Dodge/Data/ActionPlan.hs 77;" C +EvadeAim src/Dodge/Data/ActionPlan.hs 78;" C ExamineInventory src/Dodge/Data/HUD.hs 16;" C Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 39;" C @@ -437,7 +438,7 @@ FlameSound src/Dodge/Data/SoundOrigin.hs 29;" C FlameletBall src/Dodge/Data/EnergyBall/Type.hs 12;" C Flamer src/Dodge/Data/SoundOrigin.hs 27;" C Flaming src/Dodge/Data/Damage.hs 21;" C -Flank src/Dodge/Data/ActionPlan.hs 136;" C +Flank src/Dodge/Data/ActionPlan.hs 137;" C FlareType src/Dodge/Data/Muzzle.hs 28;" t FlashBall src/Dodge/Data/EnergyBall/Type.hs 15;" C Flashing src/Dodge/Data/Damage.hs 23;" C @@ -445,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 149;" C +Flee src/Dodge/Data/ActionPlan.hs 161;" C Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C FloatBO src/Shader/Data.hs 85;" t @@ -459,7 +460,7 @@ Floating src/Dodge/Data/Creature/Stance.hs 26;" C Floor src/Data/Tile.hs 11;" t FloorItem src/Dodge/Data/FloorItem.hs 11;" t Flying src/Dodge/Data/Creature/Stance.hs 27;" C -FollowImpulses src/Dodge/Data/ActionPlan.hs 141;" C +FollowImpulses src/Dodge/Data/ActionPlan.hs 142;" C FootForward src/Dodge/Data/Creature/Stance.hs 35;" t FootstepSound src/Dodge/Data/SoundOrigin.hs 31;" C ForceField src/Dodge/Data/Material.hs 19;" C @@ -495,7 +496,7 @@ 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 119;" C -GetTo src/Dodge/Data/ActionPlan.hs 148;" C +GetTo src/Dodge/Data/ActionPlan.hs 149;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C Gibbed src/Dodge/Data/Creature.hs 75;" C @@ -574,7 +575,7 @@ Important src/Shape/Data.hs 31;" C Impulse src/Dodge/Data/ActionPlan.hs 26;" t ImpulseNothing src/Dodge/Data/ActionPlan.hs 50;" C ImpulseUseTarget src/Dodge/Data/ActionPlan.hs 49;" C -ImpulsesList src/Dodge/Data/ActionPlan.hs 79;" C +ImpulsesList src/Dodge/Data/ActionPlan.hs 80;" C InDivineZone src/Dodge/Data/Scenario.hs 22;" C InDream src/Dodge/Data/Scenario.hs 19;" C InInv src/Dodge/Data/Item/Location.hs 29;" C @@ -605,7 +606,7 @@ InventoryHeadFilterSI src/Dodge/Data/SelectionList.hs 61;" C InventoryHeadSI src/Dodge/Data/SelectionList.hs 60;" C InventoryPathing src/Dodge/Data/Item/Combine.hs 39;" t InventorySound src/Dodge/Data/SoundOrigin.hs 11;" C -Investigate src/Dodge/Data/ActionPlan.hs 143;" C +Investigate src/Dodge/Data/ActionPlan.hs 144;" C InwardShockwave src/Dodge/Data/Shockwave.hs 13;" C IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C ItCrWdItemHeldEffect src/Dodge/Data/WorldEffect.hs 17;" C @@ -634,7 +635,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 160;" C +Kill src/Dodge/Data/ActionPlan.hs 162;" 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 @@ -663,7 +664,7 @@ LaundrySS src/Dodge/Data/Scenario.hs 115;" C LayVars src/Dodge/Data/MetaTree.hs 30;" C Layer src/Picture/Data.hs 20;" t LayoutVars src/Dodge/Data/MetaTree.hs 30;" t -LeadTarget src/Dodge/Data/ActionPlan.hs 122;" C +LeadTarget src/Dodge/Data/ActionPlan.hs 123;" C LeftForward src/Dodge/Data/Creature/Stance.hs 35;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 27;" C Lethargic src/Dodge/Data/Creature/Perception.hs 53;" C @@ -687,8 +688,8 @@ LoadingScreen src/Dodge/Data/Universe.hs 93;" C LocDT src/Dodge/Data/DoubleTree.hs 42;" C LocationDT src/Dodge/Data/DoubleTree.hs 42;" t LoneWolf src/Dodge/Data/Creature/State.hs 24;" C -LookAround src/Dodge/Data/ActionPlan.hs 145;" C -Lure src/Dodge/Data/ActionPlan.hs 138;" C +LookAround src/Dodge/Data/ActionPlan.hs 146;" C +Lure src/Dodge/Data/ActionPlan.hs 139;" C MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 147;" C MAGENTA src/Color/Data.hs 17;" C MAGNET src/Dodge/Data/Item/Combine.hs 69;" C @@ -829,7 +830,7 @@ NewInt src/NewInt.hs 16;" t NewIntMap src/NewInt.hs 22;" t NewIntSet src/NewInt.hs 19;" t NewSideEffect src/Dodge/Data/Universe.hs 63;" C -NoAction src/Dodge/Data/ActionPlan.hs 123;" C +NoAction src/Dodge/Data/ActionPlan.hs 124;" C NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 41;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -989,7 +990,7 @@ PathFromEdge src/Dodge/Data/Room.hs 81;" t PathShowType src/Dodge/Data/Universe.hs 52;" t PathTo src/Dodge/Data/ActionPlan.hs 76;" C Pathing src/Dodge/Data/Config.hs 90;" C -Patrol src/Dodge/Data/ActionPlan.hs 139;" C +Patrol src/Dodge/Data/ActionPlan.hs 140;" C PauseTimeMessage src/Dodge/Data/World.hs 88;" C PausedTimeFlow src/Dodge/Data/World.hs 84;" C Payload src/Dodge/Data/Payload.hs 9;" t @@ -1175,6 +1176,7 @@ 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 150;" C +SearchForFood src/Dodge/Data/ActionPlan.hs 160;" 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 @@ -1194,7 +1196,7 @@ 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 161;" C +SentinelAt src/Dodge/Data/ActionPlan.hs 163;" C SetBeeRandomMovement src/Dodge/Data/ActionPlan.hs 52;" C SetLSCol src/Dodge/Data/WorldEffect.hs 28;" C SetTrigger src/Dodge/Data/WorldEffect.hs 27;" C @@ -1213,7 +1215,7 @@ ShellSound src/Dodge/Data/SoundOrigin.hs 28;" C ShieldGroup src/Dodge/Data/Creature/State.hs 30;" C Shockwave src/Dodge/Data/Shockwave.hs 16;" t ShockwaveDirection src/Dodge/Data/Shockwave.hs 13;" t -ShootAt src/Dodge/Data/ActionPlan.hs 140;" C +ShootAt src/Dodge/Data/ActionPlan.hs 141;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t Show_bound_box src/Dodge/Data/Config.hs 94;" C @@ -1286,7 +1288,7 @@ StartStopMvType src/Dodge/Data/Creature/Misc.hs 30;" 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 +Strategy src/Dodge/Data/ActionPlan.hs 136;" t StrategyInt src/Dodge/Data/ActionPlan.hs 154;" C SubInventory src/Dodge/Data/HUD.hs 14;" t Superfluous src/Shape/Data.hs 34;" C @@ -1396,7 +1398,7 @@ TriggerType src/Dodge/Data/TriggerType.hs 7;" t TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C Turn src/Dodge/Data/ActionPlan.hs 31;" C TurnTo src/Dodge/Data/ActionPlan.hs 37;" C -TurnToPoint src/Dodge/Data/ActionPlan.hs 78;" C +TurnToPoint src/Dodge/Data/ActionPlan.hs 79;" C TurnToward src/Dodge/Data/ActionPlan.hs 34;" C TurnTowardCr src/Dodge/Data/CreatureEffect.hs 9;" C Turret src/Dodge/Data/Machine.hs 64;" t @@ -1474,7 +1476,7 @@ WHITE src/Color/Data.hs 24;" C WIRE src/Dodge/Data/Item/Combine.hs 87;" C WRISTARMOUR src/Dodge/Data/Item/Combine.hs 126;" C WRIST_ECG src/Dodge/Data/Item/Combine.hs 138;" C -WaitThen src/Dodge/Data/ActionPlan.hs 81;" C +WaitThen src/Dodge/Data/ActionPlan.hs 82;" C Walk src/Dodge/Data/ActionPlan.hs 28;" C Walking src/Dodge/Data/Creature/Stance.hs 24;" C Wall src/Dodge/Data/Wall.hs 17;" t @@ -1491,15 +1493,15 @@ WallSound src/Dodge/Data/SoundOrigin.hs 26;" C WallStructure src/Dodge/Data/Wall/Structure.hs 11;" t WallWire src/Dodge/Data/Room.hs 59;" C Walls_info src/Dodge/Data/Config.hs 89;" C -Wander src/Dodge/Data/ActionPlan.hs 146;" C +Wander src/Dodge/Data/ActionPlan.hs 147;" C War src/Dodge/Data/Scenario.hs 28;" C WarmTime src/Dodge/Data/Item/Params.hs 19;" C WarmUpCoolDown src/Dodge/Data/TriggerType.hs 14;" C WarmUpNoDelay src/Dodge/Data/TriggerType.hs 19;" C -WarningCry src/Dodge/Data/ActionPlan.hs 144;" C +WarningCry src/Dodge/Data/ActionPlan.hs 145;" C WasMouseGameRotating src/Dodge/Data/Input.hs 53;" C WasNotMouseGameRotating src/Dodge/Data/Input.hs 54;" C -WatchAndWait src/Dodge/Data/ActionPlan.hs 142;" C +WatchAndWait src/Dodge/Data/ActionPlan.hs 143;" C WdBl src/Dodge/Data/WorldEffect.hs 56;" t WdBlBtOn src/Dodge/Data/WorldEffect.hs 62;" C WdBlConst src/Dodge/Data/WorldEffect.hs 59;" C @@ -1538,7 +1540,7 @@ ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 93;" C ZombieFaction src/Dodge/Data/Creature/State.hs 14;" C \: src/Geometry/Polygon.hs 243;" o __Just' src/MaybeHelp.hs 11;" f -_acAction src/Dodge/Data/ActionPlan.hs 79;" f +_acAction src/Dodge/Data/ActionPlan.hs 80;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 19;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 25;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 30;" f @@ -1549,7 +1551,7 @@ _allocRemoveID src/Dodge/Data/RightButtonOptions.hs 31;" f _allocSwapID src/Dodge/Data/RightButtonOptions.hs 27;" f _alphaDivideShader src/Data/Preload/Render.hs 20;" f _alteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" f -_ambushTarget src/Dodge/Data/ActionPlan.hs 137;" f +_ambushTarget src/Dodge/Data/ActionPlan.hs 138;" f _ampBullet src/Dodge/Data/Item/Use.hs 50;" f _ampCreateGas src/Dodge/Data/Item/Use.hs 52;" f _ampPayload src/Dodge/Data/Item/Use.hs 51;" f @@ -1783,28 +1785,28 @@ _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 96;" f -_doActionIfCondition src/Dodge/Data/ActionPlan.hs 95;" f -_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 100;" f -_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 101;" f -_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 99;" f -_doActionThenFirst src/Dodge/Data/ActionPlan.hs 110;" f -_doActionThenSecond src/Dodge/Data/ActionPlan.hs 111;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 87;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 92;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 86;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 91;" f -_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 90;" f -_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 105;" f -_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 104;" f -_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 106;" f +_doActionIfAction src/Dodge/Data/ActionPlan.hs 97;" f +_doActionIfCondition src/Dodge/Data/ActionPlan.hs 96;" f +_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 101;" f +_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 102;" f +_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 100;" f +_doActionThenFirst src/Dodge/Data/ActionPlan.hs 111;" f +_doActionThenSecond src/Dodge/Data/ActionPlan.hs 112;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 88;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 93;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 87;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 92;" f +_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 91;" f +_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 106;" f +_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 105;" f +_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 107;" f _doCID src/Dodge/Data/Damage.hs 32;" f -_doImpulsesList src/Dodge/Data/ActionPlan.hs 80;" f +_doImpulsesList src/Dodge/Data/ActionPlan.hs 81;" f _doMID src/Dodge/Data/Damage.hs 35;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 115;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 120;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 114;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 119;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 116;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 121;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 115;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 120;" f _dodgeCooldown src/Dodge/Data/Creature/Misc.hs 66;" f _doors src/Dodge/Data/LWorld.hs 125;" f _drFootPrint src/Dodge/Data/Door.hs 37;" f @@ -1856,7 +1858,7 @@ _flPos src/Dodge/Data/Flame.hs 14;" f _flTimer src/Dodge/Data/Flame.hs 13;" f _flVel src/Dodge/Data/Flame.hs 15;" f _flames src/Dodge/Data/LWorld.hs 110;" f -_flankTarget src/Dodge/Data/ActionPlan.hs 136;" f +_flankTarget src/Dodge/Data/ActionPlan.hs 137;" f _flares src/Dodge/Data/LWorld.hs 113;" f _flatShieldWlMIX src/Dodge/Data/Item/Params.hs 14;" f _flboName src/Shader/Data.hs 86;" f @@ -1952,7 +1954,7 @@ _imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" f _immediateEffect src/Loop/Data.hs 9;" f _immediateUpdate src/Loop/Data.hs 12;" f _impulseUseTarget src/Dodge/Data/ActionPlan.hs 49;" f -_impulsesListList src/Dodge/Data/ActionPlan.hs 79;" f +_impulsesListList src/Dodge/Data/ActionPlan.hs 80;" f _incEdgeZoning src/Dodge/Data/World.hs 57;" f _incEdges src/Dodge/Data/CWorld.hs 31;" f _incGraph src/Dodge/Data/CWorld.hs 29;" f @@ -1980,7 +1982,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 160;" f +_killTarget src/Dodge/Data/ActionPlan.hs 162;" f _lAimPos src/Dodge/Data/LWorld.hs 148;" f _lClock src/Dodge/Data/LWorld.hs 143;" f _lFootPos src/Dodge/Data/Creature/Misc.hs 67;" f @@ -1999,7 +2001,7 @@ _ldpPos src/Dodge/Data/SelectionList.hs 15;" f _ldpScale src/Dodge/Data/SelectionList.hs 16;" f _ldpSize src/Dodge/Data/SelectionList.hs 18;" f _ldpVerticalGap src/Dodge/Data/SelectionList.hs 17;" f -_leadTargetBy src/Dodge/Data/ActionPlan.hs 122;" f +_leadTargetBy src/Dodge/Data/ActionPlan.hs 123;" f _lightSources src/Dodge/Data/LWorld.hs 138;" f _lightUBO src/Data/Preload/Render.hs 43;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f @@ -2031,7 +2033,7 @@ _lyGen src/Dodge/Data/MetaTree.hs 31;" f _machines src/Dodge/Data/LWorld.hs 126;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 129;" f -_mainAction src/Dodge/Data/ActionPlan.hs 130;" f +_mainAction src/Dodge/Data/ActionPlan.hs 131;" f _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" f _mapInvItmID src/Dodge/Data/HUD.hs 20;" f _mapInvOffset src/Dodge/Data/HUD.hs 18;" f @@ -2085,7 +2087,7 @@ _meleeCooldown src/Dodge/Data/Creature/Misc.hs 70;" f _meleeCooldown src/Dodge/Data/Creature/Misc.hs 91;" f _meleeCooldownL src/Dodge/Data/Creature/Misc.hs 64;" f _meleeCooldownR src/Dodge/Data/Creature/Misc.hs 65;" f -_meleeTarget src/Dodge/Data/ActionPlan.hs 147;" f +_meleeTarget src/Dodge/Data/ActionPlan.hs 148;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f _moEff src/Dodge/Data/Universe.hs 111;" f @@ -2146,7 +2148,7 @@ _opTexture src/Dodge/Data/Wall.hs 34;" f _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 18;" f _opticPos src/Dodge/Data/Item/Scope.hs 14;" f _opticZoom src/Dodge/Data/Item/Scope.hs 17;" f -_partialAction src/Dodge/Data/ActionPlan.hs 118;" f +_partialAction src/Dodge/Data/ActionPlan.hs 119;" f _pastWorlds src/Dodge/Data/World.hs 38;" f _pathFailAction src/Dodge/Data/ActionPlan.hs 76;" f _pathToPoint src/Dodge/Data/ActionPlan.hs 76;" f @@ -2346,8 +2348,8 @@ _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 161;" f -_sentinelPos src/Dodge/Data/ActionPlan.hs 161;" f +_sentinelDir src/Dodge/Data/ActionPlan.hs 163;" f +_sentinelPos src/Dodge/Data/ActionPlan.hs 163;" f _sfColor src/Shape/Data.hs 41;" f _sfShadowImportance src/Shape/Data.hs 42;" f _sfSize src/Shape/Data.hs 43;" f @@ -2370,7 +2372,7 @@ _siPayload src/Dodge/Data/SelectionList.hs 52;" f _siPictures src/Dodge/Data/SelectionList.hs 46;" f _siWidth src/Dodge/Data/SelectionList.hs 48;" f _sideEffect src/Loop/Data.hs 13;" f -_sideImpulses src/Dodge/Data/ActionPlan.hs 129;" f +_sideImpulses src/Dodge/Data/ActionPlan.hs 130;" f _silhouetteEBO src/Data/Preload/Render.hs 30;" f _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f @@ -2439,6 +2441,7 @@ _taOrigin src/Dodge/Data/TeslaArc.hs 20;" f _taTimer src/Dodge/Data/TeslaArc.hs 17;" f _targetCr src/Dodge/Data/Creature.hs 80;" f _targetID src/Dodge/Data/ActionPlan.hs 73;" f +_targetID src/Dodge/Data/ActionPlan.hs 77;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 74;" f _tbPos src/Dodge/Data/TractorBeam.hs 12;" f _tbStartPos src/Dodge/Data/TractorBeam.hs 13;" f @@ -2496,7 +2499,7 @@ _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 78;" f +_turnToPoint src/Dodge/Data/ActionPlan.hs 79;" f _uInt src/Dodge/Data/Item/Use.hs 31;" f _uScope src/Dodge/Data/Item/Use.hs 34;" f _uValue src/Dodge/Data/Item/Use.hs 33;" f @@ -2568,8 +2571,8 @@ _vxShadNum src/Picture/Data.hs 16;" f _wCam src/Dodge/Data/World.hs 59;" f _wSoundFilter src/Dodge/Data/World.hs 43;" f _wTime src/Dodge/Data/Item/Params.hs 20;" f -_waitThenAction src/Dodge/Data/ActionPlan.hs 83;" f -_waitThenTimer src/Dodge/Data/ActionPlan.hs 82;" f +_waitThenAction src/Dodge/Data/ActionPlan.hs 84;" f +_waitThenTimer src/Dodge/Data/ActionPlan.hs 83;" f _wallDamages src/Dodge/Data/LWorld.hs 124;" f _wallVBO src/Data/Preload/Render.hs 50;" f _walls src/Dodge/Data/LWorld.hs 123;" f @@ -2663,7 +2666,7 @@ airlockCrystal src/Dodge/Room/Airlock.hs 251;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 104;" f airlockSimple src/Dodge/Room/Airlock.hs 129;" f airlockZ src/Dodge/Room/Airlock.hs 166;" f -allVisibleWalls src/Dodge/Base/Collide.hs 249;" f +allVisibleWalls src/Dodge/Base/Collide.hs 242;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f alteRifleAmmoOrient src/Dodge/Item/Orientation.hs 51;" f @@ -2681,7 +2684,7 @@ angleVV src/Geometry/Vector.hs 58;" f angleVV3 src/Geometry/Vector3D.hs 123;" f angleVVTests test/Spec.hs 67;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f -anythingHitCirc src/Dodge/Base/Collide.hs 357;" f +anythingHitCirc src/Dodge/Base/Collide.hs 347;" f apply src/Quaternion.hs 78;" f applyCME src/Dodge/HeldUse.hs 397;" f applyClip src/Dodge/Debug.hs 191;" f @@ -2786,8 +2789,8 @@ basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMuzFlare src/Dodge/HeldUse.hs 731;" f battery src/Dodge/Item/Ammo.hs 60;" f batteryPack src/Dodge/Item/Equipment.hs 38;" f -beeCrit src/Dodge/Creature/ChaseCrit.hs 90;" f -beeLifespanCheck src/Dodge/Creature/Update.hs 116;" f +beeCrit src/Dodge/Creature/ChaseCrit.hs 92;" f +beeLifespanCheck src/Dodge/Creature/Update.hs 120;" f beep3QuickS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 710;" f beltMag src/Dodge/Item/Ammo.hs 38;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 131;" f @@ -2827,7 +2830,7 @@ bloodShort8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 578;" f blowTorch src/Dodge/Item/Held/SprayGuns.hs 43;" f blue src/Color.hs 43;" f blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f -bodiesHitRadial src/Dodge/WorldEvent/ThingsHit.hs 222;" f +bodiesHitRadial src/Dodge/WorldEvent/ThingsHit.hs 223;" f boolOption src/Dodge/Menu/OptionType.hs 12;" f bossKeyItems src/Dodge/LockAndKey.hs 13;" f bossRoom src/Dodge/Room/Boss.hs 55;" f @@ -2870,8 +2873,8 @@ cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f -canSee src/Dodge/Base/Collide.hs 343;" f -canSeeIndirect src/Dodge/Base/Collide.hs 350;" f +canSee src/Dodge/Base/Collide.hs 333;" f +canSeeIndirect src/Dodge/Base/Collide.hs 340;" f canSpring src/Dodge/Update.hs 1004;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 67;" f @@ -2909,8 +2912,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 393;" f -checkDeath' src/Dodge/Creature/Update.hs 396;" f +checkDeath src/Dodge/Creature/Update.hs 461;" f +checkDeath' src/Dodge/Creature/Update.hs 464;" f checkEndGame src/Dodge/Update.hs 890;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2928,12 +2931,12 @@ chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 178;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 69;" f -circHitWall src/Dodge/Base/Collide.hs 262;" f +circHitWall src/Dodge/Base/Collide.hs 255;" f circInPolygon src/Geometry/Polygon.hs 110;" f -circOnAnyCr src/Dodge/Base/Collide.hs 307;" f +circOnAnyCr src/Dodge/Base/Collide.hs 297;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f -circOnSomeWall src/Dodge/Base/Collide.hs 301;" f +circOnSomeWall src/Dodge/Base/Collide.hs 291;" f circSegsInside src/Dodge/Creature/State/WalkCycle.hs 112;" f circSegsInside' src/Dodge/Creature/State/WalkCycle.hs 101;" f circle src/Picture/Base.hs 172;" f @@ -2987,10 +2990,10 @@ collide3Floors src/Dodge/Base/Collide.hs 156;" f collide3Wall src/Dodge/Base/Collide.hs 170;" f collide3Walls src/Dodge/Base/Collide.hs 151;" f collide3WallsFloor src/Dodge/Base/Collide.hs 112;" f -collideCircWalls src/Dodge/Base/Collide.hs 274;" f +collideCircWalls src/Dodge/Base/Collide.hs 267;" f collidePoint src/Dodge/Base/Collide.hs 57;" f -collidePointTestFilter src/Dodge/Base/Collide.hs 212;" f -collidePointWallsFilter src/Dodge/Base/Collide.hs 226;" f +collidePointTestFilter src/Dodge/Base/Collide.hs 205;" f +collidePointWallsFilter src/Dodge/Base/Collide.hs 219;" f color src/Picture/Base.hs 100;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 239;" f @@ -3037,7 +3040,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 159;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 411;" f cornerList src/Preload/Render.hs 236;" f -corpseOrGib src/Dodge/Creature/Update.hs 440;" f +corpseOrGib src/Dodge/Creature/Update.hs 508;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -3048,15 +3051,15 @@ crBlips src/Dodge/RadarSweep.hs 88;" f crCanSeeCr src/Dodge/Creature/Test.hs 49;" f crCrSpring src/Dodge/Update.hs 1011;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 68;" f -crDeathEffects src/Dodge/Creature/Update.hs 415;" f +crDeathEffects src/Dodge/Creature/Update.hs 483;" 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 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 +crHeight src/Dodge/Base/Collide.hs 181;" f +crHit src/Dodge/WorldEvent/ThingsHit.hs 168;" 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 @@ -3077,7 +3080,7 @@ crMvForward' src/Dodge/Creature/Impulse/Movement.hs 67;" f crMvType src/Dodge/Creature/MoveType.hs 7;" f crNearPoint src/Dodge/Creature/Test.hs 125;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f -crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 244;" f +crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 249;" f crOnSeg' src/Dodge/Creature/State/WalkCycle.hs 145;" f crPainEffect src/Dodge/Creature/State.hs 50;" f crPathing src/Dodge/Creature/Action.hs 128;" f @@ -3089,20 +3092,20 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 999;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 386;" f +crUpdate src/Dodge/Creature/Update.hs 454;" 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 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 +crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 72;" f +crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 82;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 123;" f crabCorpse src/Dodge/Creature/Picture.hs 338;" f -crabCrit src/Dodge/Creature/ChaseCrit.hs 42;" f -crabCritInternal src/Dodge/Humanoid.hs 25;" f +crabCrit src/Dodge/Creature/ChaseCrit.hs 44;" f +crabCritInternal src/Dodge/Humanoid.hs 11;" f crabFeet src/Dodge/Creature/Picture.hs 240;" f crabRoom src/Dodge/Room/Tutorial.hs 471;" f crabUpperBody src/Dodge/Creature/Picture.hs 152;" f @@ -3134,9 +3137,9 @@ crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f crossProd src/Geometry/Vector3D.hs 42;" f crs src/Dodge/TestString.hs 57;" f -crsHit src/Dodge/WorldEvent/ThingsHit.hs 95;" f -crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 106;" f -crsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 126;" f +crsHit src/Dodge/WorldEvent/ThingsHit.hs 96;" f +crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 107;" f +crsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 127;" f crsItmsUnused src/Dodge/Room/Containing.hs 45;" f crsNearCirc src/Dodge/Zoning/Creature.hs 36;" f crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f @@ -3392,7 +3395,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 297;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 299;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -3556,7 +3559,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 478;" f +dropAll src/Dodge/Creature/Update.hs 546;" f dropInventoryPath src/Dodge/HeldUse.hs 1380;" f dropItem src/Dodge/Creature/Action.hs 180;" f dropper src/Dodge/Item/Scope.hs 82;" f @@ -3646,7 +3649,7 @@ faceEdges src/Polyhedra.hs 62;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f fdiv src/ShortShow.hs 41;" f -feedSlime src/Dodge/Update.hs 1082;" f +feedSlime src/Dodge/Update.hs 1079;" f feet src/Dodge/Creature/Picture.hs 226;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f @@ -3682,6 +3685,7 @@ 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 423;" f +fleePoint src/Dodge/Creature/Update.hs 414;" 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 @@ -3724,7 +3728,7 @@ fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 44;" f functionalUpdate src/Dodge/Update.hs 278;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f -fuseSlimes src/Dodge/Update.hs 1100;" f +fuseSlimes src/Dodge/Update.hs 1093;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 48;" f @@ -3854,10 +3858,10 @@ 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 135;" f -hasButtonLOS src/Dodge/Base/Collide.hs 326;" f +hasButtonLOS src/Dodge/Base/Collide.hs 316;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f -hasLOS src/Dodge/Base/Collide.hs 319;" f -hasLOSIndirect src/Dodge/Base/Collide.hs 335;" f +hasLOS src/Dodge/Base/Collide.hs 309;" f +hasLOSIndirect src/Dodge/Base/Collide.hs 325;" f hat src/Dodge/Item/Equipment.hs 65;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 68;" f @@ -3893,7 +3897,7 @@ highMesh src/Dodge/Room/Foreground.hs 25;" f hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 660;" f hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 812;" f -hiveCrit src/Dodge/Creature/ChaseCrit.hs 99;" f +hiveCrit src/Dodge/Creature/ChaseCrit.hs 101;" f hivePainEffect src/Dodge/Creature/State.hs 65;" f holdForm src/Dodge/Creature/Boid.hs 139;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f @@ -3902,8 +3906,8 @@ horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToChar src/Dodge/Inventory/SelectionList.hs 201;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 198;" f -hoverCrit src/Dodge/Creature/ChaseCrit.hs 81;" f -hoverCritHoverSound src/Dodge/Creature/Update.hs 369;" f +hoverCrit src/Dodge/Creature/ChaseCrit.hs 83;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 437;" 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 @@ -3947,9 +3951,9 @@ interpWith src/Dodge/Creature/Boid.hs 13;" f intersectCircLine src/Geometry/Intersect.hs 368;" f intersectCircLineAlong src/Geometry/Intersect.hs 359;" f intersectCircSeg src/Geometry/Intersect.hs 338;" f -intersectCircSegFirst src/Geometry/Intersect.hs 409;" f -intersectCircSegTest src/Geometry/Intersect.hs 401;" f -intersectCylSeg src/Geometry/Intersect.hs 377;" f +intersectCircSegFirst src/Geometry/Intersect.hs 410;" f +intersectCircSegTest src/Geometry/Intersect.hs 402;" f +intersectCylSeg src/Geometry/Intersect.hs 378;" f intersectLineLine src/Geometry/Intersect.hs 20;" f intersectLinePlaneAlong src/Geometry/Intersect.hs 29;" f intersectLinePoly src/Geometry/Intersect.hs 270;" f @@ -4007,7 +4011,7 @@ 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 -isFlyable src/Dodge/WorldEvent/ThingsHit.hs 231;" f +isFlyable src/Dodge/WorldEvent/ThingsHit.hs 232;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 232;" f isInLnk src/Dodge/PlacementSpot.hs 163;" f isJust' src/MaybeHelp.hs 27;" f @@ -4028,7 +4032,7 @@ isUnusedLnkType src/Dodge/PlacementSpot.hs 197;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 181;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f isVowel src/StringHelp.hs 8;" f -isWalkable src/Dodge/WorldEvent/ThingsHit.hs 238;" f +isWalkable src/Dodge/WorldEvent/ThingsHit.hs 243;" f isoMatrix src/MatrixHelper.hs 35;" f isotriBWH src/Geometry/Polygon.hs 30;" f itDim src/Dodge/Item/InvSize.hs 21;" f @@ -4517,11 +4521,11 @@ overPos src/Picture/Base.hs 298;" f overPosObj src/Shape.hs 279;" f overPosSH src/Shape.hs 263;" f overPosSP src/ShapePicture.hs 41;" f -overlapCircWalls src/Dodge/Base/Collide.hs 255;" f -overlapCircWallsClosest src/Dodge/Base/Collide.hs 294;" f +overlapCircWalls src/Dodge/Base/Collide.hs 248;" f +overlapCircWallsClosest src/Dodge/Base/Collide.hs 284;" 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 +overlapSegWalls src/Dodge/Base/Collide.hs 228;" 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 @@ -4545,7 +4549,7 @@ pauseMenuOptions src/Dodge/Menu.hs 64;" f pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 219;" f pbFlicker src/Dodge/Update.hs 570;" f -pbsHit src/Dodge/WorldEvent/ThingsHit.hs 143;" f +pbsHit src/Dodge/WorldEvent/ThingsHit.hs 144;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 217;" f @@ -4606,7 +4610,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 474;" f +poisonSPic src/Dodge/Creature/Update.hs 542;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4981,7 +4985,7 @@ scaleSH src/Shape.hs 271;" f scalp src/Dodge/Creature/Picture.hs 401;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 471;" f +scorchSPic src/Dodge/Creature/Update.hs 539;" 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 @@ -5009,7 +5013,7 @@ sectionsSizes src/Dodge/DisplayInventory.hs 205;" f seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f -segmentArea src/Dodge/Creature/Update.hs 353;" f +segmentArea src/Dodge/Creature/Update.hs 355;" 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 @@ -5056,7 +5060,7 @@ setSelWhileDragging src/Dodge/Update/Input/InGame.hs 360;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f -setSlimeDir src/Dodge/Creature/Update.hs 282;" f +setSlimeDir src/Dodge/Creature/Update.hs 283;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f @@ -5177,14 +5181,14 @@ slapClean7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 804;" f 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 -slimeEatSound src/Dodge/Update.hs 1116;" f -slimeFood src/Dodge/Update.hs 1074;" f +slimeCrit src/Dodge/Creature/ChaseCrit.hs 70;" f +slimeEatSound src/Dodge/Update.hs 1109;" f +slimeFood src/Dodge/Update.hs 1071;" f slimeOutline src/Dodge/Creature/Slime.hs 9;" f -slimeSuck src/Dodge/Update.hs 1058;" f +slimeSuck src/Dodge/Update.hs 1055;" f slimeToRad src/Dodge/Data/Creature/Misc.hs 105;" f -slinkCrit src/Dodge/Creature/ChaseCrit.hs 56;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 356;" f +slinkCrit src/Dodge/Creature/ChaseCrit.hs 58;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 358;" 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 @@ -5251,8 +5255,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 314;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 304;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 316;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 306;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5290,7 +5294,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 427;" f +startDeathTimer src/Dodge/Creature/Update.hs 495;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f @@ -5406,12 +5410,12 @@ thickCircle src/Picture/Base.hs 267;" f thickLine src/Picture/Base.hs 238;" f thickLineCol src/Picture/Base.hs 250;" f thinHighBar src/Dodge/Room/Foreground.hs 77;" f -thingHit src/Dodge/WorldEvent/ThingsHit.hs 164;" f -thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 152;" f -thingsHit src/Dodge/WorldEvent/ThingsHit.hs 48;" f -thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 173;" f -thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 56;" f -thingsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 64;" f +thingHit src/Dodge/WorldEvent/ThingsHit.hs 165;" f +thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 153;" f +thingsHit src/Dodge/WorldEvent/ThingsHit.hs 49;" f +thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 174;" f +thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 57;" f +thingsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 65;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 67;" f throb1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 862;" f throbC4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 820;" f @@ -5442,7 +5446,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 433;" f +toDeathCarriage src/Dodge/Creature/Update.hs 501;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5576,7 +5580,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 125;" f +updateAggroBee src/Dodge/Creature/Update.hs 129;" f updateAimPos src/Dodge/Update.hs 400;" f updateAllNodes src/TreeHelp.hs 88;" f updateArc src/Dodge/Tesla.hs 44;" f @@ -5584,24 +5588,25 @@ 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 103;" f +updateBeeCrit src/Dodge/Creature/Update.hs 115;" f +updateBeeFromPheremones src/Dodge/Creature/Update.hs 107;" f updateBeePheremone src/Dodge/Update.hs 786;" 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 672;" f -updateCalmBee src/Dodge/Creature/Update.hs 166;" f +updateCalmBee src/Dodge/Creature/Update.hs 170;" f +updateCalmChaseCrit src/Dodge/Creature/Update.hs 422;" 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 11;" f +updateChaseCrit src/Dodge/Creature/Update.hs 371;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f updateCloud src/Dodge/Update.hs 919;" f updateClouds src/Dodge/Update.hs 783;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f -updateCreature src/Dodge/Creature/Update.hs 46;" f +updateCreature src/Dodge/Creature/Update.hs 50;" f updateCreatureGroups src/Dodge/Update.hs 644;" f updateCreatureSoundPositions src/Dodge/Update.hs 623;" f updateCreatureStride src/Dodge/Update.hs 379;" f @@ -5609,7 +5614,7 @@ updateCreatureStrides src/Dodge/Update.hs 376;" f updateDebris src/Dodge/Update.hs 686;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 104;" f -updateDelayedEvents src/Dodge/Update.hs 1123;" f +updateDelayedEvents src/Dodge/Update.hs 1116;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f updateDistortions src/Dodge/Update.hs 665;" f @@ -5628,12 +5633,13 @@ updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 771;" f updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f +updateFoodSearchChaseCrit src/Dodge/Creature/Update.hs 381;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 372;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f updateGas src/Dodge/Update.hs 941;" f updateGusts src/Dodge/Update.hs 903;" f -updateHiveCrit src/Dodge/Creature/Update.hs 78;" f -updateHoverCrit src/Dodge/Humanoid.hs 39;" f +updateHiveCrit src/Dodge/Creature/Update.hs 82;" f +updateHoverCrit src/Dodge/Humanoid.hs 25;" f updateIMl src/Dodge/Update.hs 638;" f updateIMl' src/Dodge/Update.hs 641;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f @@ -5651,7 +5657,7 @@ updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 516;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLivingCreature src/Dodge/Creature/Update.hs 57;" f +updateLivingCreature src/Dodge/Creature/Update.hs 61;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 408;" f @@ -5668,7 +5674,7 @@ updatePlasmaBall src/Dodge/Update.hs 530;" f updatePlasmaBalls src/Dodge/Update.hs 679;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 481;" f +updatePulse src/Dodge/Creature/Update.hs 549;" f updatePulseBall src/Dodge/Update.hs 550;" f updatePulseLaser src/Dodge/Update.hs 726;" f updatePulseLasers src/Dodge/Update.hs 525;" f @@ -5688,7 +5694,7 @@ updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f updateShockwaves src/Dodge/Update.hs 768;" f updateSingleNodes src/TreeHelp.hs 100;" f -updateSlimeCrit src/Dodge/Creature/Update.hs 248;" f +updateSlimeCrit src/Dodge/Creature/Update.hs 252;" f updateSound src/Sound.hs 73;" f updateSounds src/Sound.hs 68;" f updateSpark src/Dodge/Spark.hs 20;" f @@ -5705,7 +5711,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 53;" f +updateVocTimer src/Dodge/Humanoid.hs 39;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 495;" f @@ -5775,17 +5781,18 @@ viewGameRoomBoundaries src/Dodge/Debug/Picture.hs 332;" f viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 253;" f violet src/Color.hs 48;" f -visibleWalls src/Dodge/Base/Collide.hs 240;" f +visibleWalls src/Dodge/Base/Collide.hs 233;" 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 walkNozzle src/Dodge/HeldUse.hs 827;" f walkableNodeNear src/Dodge/Path.hs 90;" f +walkablePoint src/Dodge/WorldEvent/ThingsHit.hs 239;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallMovement src/Dodge/WallCreatureCollisions.hs 70;" f -wallToSurface src/Dodge/Base/Collide.hs 204;" f +wallToSurface src/Dodge/Base/Collide.hs 197;" f wallsFromRooms src/Dodge/Layout.hs 158;" f wallsToDraw src/Dodge/Render/Walls.hs 18;" f warmupSound src/Dodge/HeldUse.hs 1405;" f @@ -5829,7 +5836,7 @@ windowXFloat src/Dodge/Data/Config.hs 72;" f windowYFloat src/Dodge/Data/Config.hs 74;" f withAlpha src/Color.hs 37;" f withByteString src/Shader/Compile.hs 157;" f -wlHitPos src/Dodge/WorldEvent/ThingsHit.hs 191;" f +wlHitPos src/Dodge/WorldEvent/ThingsHit.hs 192;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 31;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 21;" f wlIXsNearRect src/Dodge/Zoning/Wall.hs 28;" f @@ -5842,9 +5849,9 @@ wlWlCrush' src/Dodge/WallCreatureCollisions.hs 91;" f wlZoneSize src/Dodge/Zoning/Wall.hs 51;" f wlsCrush' src/Dodge/WallCreatureCollisions.hs 82;" f wlsFromIXs src/Dodge/Zoning/Wall.hs 34;" f -wlsHit src/Dodge/WorldEvent/ThingsHit.hs 187;" f -wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 199;" f -wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 194;" f +wlsHit src/Dodge/WorldEvent/ThingsHit.hs 188;" f +wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 200;" f +wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 195;" f wlsNearCirc src/Dodge/Zoning/Wall.hs 48;" f wlsNearPoint src/Dodge/Zoning/Wall.hs 38;" f wlsNearRect src/Dodge/Zoning/Wall.hs 45;" f