From c53e60b956dc6b10fd7da3f5bef87ab715d7a01c Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 26 Mar 2026 15:07:33 +0000 Subject: [PATCH] Improve pulse laser/ball hit detection --- src/Dodge/Creature/Update.hs | 3 - src/Dodge/Item/Grammar.hs | 2 +- src/Dodge/Item/Weapon/LaserPath.hs | 2 +- src/Dodge/LockAndKey.hs | 14 +- src/Dodge/Placement/Instance/Door.hs | 3 +- src/Dodge/Room/SensorDoor.hs | 4 +- src/Dodge/Room/Tutorial.hs | 4 +- src/Dodge/TestString.hs | 5 +- src/Dodge/Tree/Shift.hs | 1 + src/Dodge/Update.hs | 3 +- src/Dodge/WallCreatureCollisions.hs | 6 +- src/Dodge/WorldEvent/ThingsHit.hs | 15 ++ tags | 316 +++++++++++++-------------- 13 files changed, 193 insertions(+), 185 deletions(-) diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 674dcb64d..0ffaabe4f 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -150,7 +150,6 @@ chasmTestLiving cr w where tocr = cWorld . lWorld . creatures . ix (_crID cr) g = uncurry $ circOnSeg (cr ^. crPos . _xy) (crRad $ cr ^. crType) - --f = circInPolygon (cr ^. crPos . _xy) (crRad $ cr ^. crType) f = pointInPoly (cr ^. crPos . _xy) chasmTestCorpse :: Creature -> World -> World @@ -163,13 +162,11 @@ chasmTestCorpse cr w w & soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100) & tocr . crPos . _xy +~ normalizeV (vNormal (x - y)) - & chasmRotate cr (x - y) | any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5 | otherwise = w where tocr = cWorld . lWorld . creatures . ix (_crID cr) g = uncurry $ circOnSeg (cr ^. crPos . _xy) (crRad $ cr ^. crType) - --f = circInPolygon (cr ^. crPos . _xy) (crRad $ cr ^. crType) f = pointInPoly (cr ^. crPos . _xy) chasmRotate :: Creature -> Point2 -> World -> World diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index b3253cca2..f5d886921 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -54,7 +54,7 @@ itemBelowAttachables :: CItem -> [ItemSF] itemBelowAttachables (itm,sf) = case (itm ^. itType, sf) of (LASER, WeaponTargetingSF) -> getAmmoLinks itm (LASER, LaserWeaponSF) -> [PulseBallSF] <> getAmmoLinks itm - (LASER, PulseBallSF) -> [PulseBallSF] +-- (LASER, PulseBallSF) -> [PulseBallSF] --(HELD LASER, _) -> [PulseBallSF] (HELD LED, _) -> getAmmoLinks itm (ATTACH CAPACITOR, _) -> [AmmoMagSF 0 ElectricalAmmo] diff --git a/src/Dodge/Item/Weapon/LaserPath.hs b/src/Dodge/Item/Weapon/LaserPath.hs index c851a4598..3bfd82ad9 100644 --- a/src/Dodge/Item/Weapon/LaserPath.hs +++ b/src/Dodge/Item/Weapon/LaserPath.hs @@ -65,7 +65,7 @@ refract phasev x y wl p reflectPulseLaserAlong :: Float -> Point2 -> Point2 -> World -> ([(Point2, Object)], [Point2]) {-# INLINE reflectPulseLaserAlong #-} -reflectPulseLaserAlong phasev sp ep w = f $ filter (isunshad . snd) $ crWlPbHit sp ep w +reflectPulseLaserAlong phasev sp ep w = f $ filter (isunshad . snd) $ crWlPbHitZ 20 sp ep w where f = \case ((p, OWall wl) : _) diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index e3e928338..adb141b09 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -25,13 +25,13 @@ lockRoomMultiItems = lockRoomKeyItems :: [(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)] lockRoomKeyItems = --- [ (lasCenSensEdge, takeOne [LASER,HELD TESLACOIL, HELD FLATSHIELD]) --- , (sensorRoomRunPast LaserSensor, return LASER) --- [ (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3)) --- [ (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD]) --- [ (const glassLessonRunPast, takeOne [LASER]) - [ (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD]) --- , (keyCardRoomRunPast 0, return (HELD $ KEYCARD 0)) + [ (lasCenSensEdge, takeOne [LASER,HELD TESLACOIL, HELD FLATSHIELD]) + , (sensorRoomRunPast LaserSensor, return LASER) + , (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3)) + , (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD]) + , (const glassLessonRunPast, takeOne [LASER]) + , (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD]) + , (keyCardRoomRunPast 0, return (HELD $ KEYCARD 0)) ] keyCardRunPastRand :: RandomGen g => [(Int -> State g (MetaTree Room String), State g ItemType)] diff --git a/src/Dodge/Placement/Instance/Door.hs b/src/Dodge/Placement/Instance/Door.hs index b22eabb4a..a1739d5e1 100644 --- a/src/Dodge/Placement/Instance/Door.hs +++ b/src/Dodge/Placement/Instance/Door.hs @@ -15,8 +15,7 @@ import Geometry import Linear putDoubleDoor :: Wall -> Point2 -> Point2 -> Door -> Placement -putDoubleDoor wl a b dr = - putDoubleDoorThen wl 1 a b dr (const $ const Nothing) +putDoubleDoor wl a b dr = putDoubleDoorThen wl 1 a b dr (const $ const Nothing) putDoubleDoorThen :: Wall -> diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 07ae844e6..776533098 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -24,8 +24,6 @@ import Geometry import LensHelp import RandomHelp --- TODO fix case where the sensor created by sensInsideDoor blocks another door --- for roomRectAutoLinks-- make the locked door a center door? sensorRoom :: SensorType -> Int -> State LayoutVars (Tree Room) sensorRoom senseType n = do rm <- @@ -49,7 +47,7 @@ sensorRoom senseType n = do | isclose = rl & rlType . at BlockedLink ?~ () | otherwise = rl where - p' = p +.+ rotateV d (V2 0 (negate 100)) + p' = p + rotateV d (V2 0 (negate 100)) isclose = dist (_rlPos rl) p' < 30 nonCornerLinks :: RoomLink -> Bool diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 11c11eed4..c7bde3774 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -377,8 +377,8 @@ chasmSimpleMaze = tutLight :: State LayoutVars (MetaTree Room String) tutLight = do - x <- shuffleRoomPos =<< chasmSimpleMaze - y <- shuffleRoomPos =<< chasmSimpleMaze + x <- rmPos shuffle =<< chasmSimpleMaze + y <- rmPos shuffle =<< chasmSimpleMaze z <- chasmSimpleMaze return $ tToBTree "TutLight" $ diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 1bcea0b47..2789b8451 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -33,9 +33,8 @@ import Data.Monoid import RandomHelp testStringInit :: Universe -> [String] -testStringInit _ = mempty ---testStringInit u = [show $ u ^? uvWorld . input . mouseContext . mcoRotateDist] --- (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcType . _McDamSensor . sensAmount) +testStringInit u = + (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crHP . _HP) -- <> (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcMaterial) --testStringInit u = map show (u ^.. uvWorld . cWorld . lWorld . machines . traverse . mcDir) --testStringInit u = map show diff --git a/src/Dodge/Tree/Shift.hs b/src/Dodge/Tree/Shift.hs index 1244ef724..625794802 100644 --- a/src/Dodge/Tree/Shift.hs +++ b/src/Dodge/Tree/Shift.hs @@ -42,6 +42,7 @@ positionRoomsFromTree (Node (r, i) ts) = where r' = r & rmMID ?~ i +-- implement a heuristic for "better" room links? posRms :: PosRooms -> RoomInt -> diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 42dba246b..6973618b5 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -342,6 +342,7 @@ functionalUpdate = pushYouOutFromWalls :: World -> World pushYouOutFromWalls w = w & cWorld . lWorld . creatures . ix 0 %~ muzzleWallCheck w +-- rotate creature as well? behaviour on ledges? muzzleWallCheck :: World -> Creature -> Creature muzzleWallCheck w cr = fromMaybe cr $ do invid <- cr ^? crManipulation . manObject . imRootSelectedItem . unNInt @@ -540,7 +541,7 @@ updatePulseBall pb w thedam = Lasering 100 ep (pb ^. pzbVel) sp = pb ^. pzbPos ep = sp + pb ^. pzbVel - thit = thingHit sp ep w + thit = listToMaybe $ thingsHitZ 20 sp ep w pbFlicker :: PulseBall -> World -> World pbFlicker pt = diff --git a/src/Dodge/WallCreatureCollisions.hs b/src/Dodge/WallCreatureCollisions.hs index eb6f84168..96f26d8e8 100644 --- a/src/Dodge/WallCreatureCollisions.hs +++ b/src/Dodge/WallCreatureCollisions.hs @@ -23,7 +23,7 @@ colCrWall :: World -> Creature -> Creature colCrWall w c = cornpush . wallpush $ pushthrough c where cornpush = crPos . _xy %~ pushOutFromCorners r ls' - wallpush = pushCr' wls + wallpush = pushCr wls pushthrough = crPos . _xy %~ fst . flip (collidePoint p1) wls -- check push throughs r = crRad (c ^. crType) + wallBuffer p1 = c ^. crOldPos . _xy @@ -33,8 +33,8 @@ colCrWall w c = cornpush . wallpush $ pushthrough c wls = filter notff $ wlsNearCirc p2 r w notff x = x ^. wlMaterial /= ForceField -pushCr' :: [Wall] -> Creature -> Creature -pushCr' wls cr +pushCr :: [Wall] -> Creature -> Creature +pushCr wls cr | dist ep sp > r && dist ep ap > r = ecr & crDamage <>~ [Crushing 1000 0] diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index 30fe672ff..653cf708a 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -14,6 +14,7 @@ module Dodge.WorldEvent.ThingsHit ( wlHitPos, crHit, crWlPbHit, + crWlPbHitZ, wlsHitUnsorted, isWalkable, ) where @@ -66,6 +67,20 @@ crWlPbHit sp ep w = toobj (Left cr) = OCreature cr toobj (Right wl) = OWall wl +crWlPbHitZ :: Float -> Point2 -> Point2 -> World -> [(Point2, Object)] +crWlPbHitZ z sp ep w = + List.mergeOn + (dist sp . fst) + (map (fmap toobj) (thingsHitZ z sp ep w)) + pballs + where + -- slightly arbitrary + pballs + | z > 15 && z < 25 = map (fmap OPulseBall) (pbsHit sp ep w) + | otherwise = mempty + toobj (Left cr) = OCreature cr + toobj (Right wl) = OWall wl + crsHit :: Point2 -> Point2 -> World -> [(Point2, Creature)] crsHit sp ep w | sp == ep = mempty diff --git a/tags b/tags index c8e738616..45c1215d0 100644 --- a/tags +++ b/tags @@ -15,7 +15,7 @@ <$> src/Dodge/Data/ActionPlan.hs 156;" o <$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o -<$> src/Dodge/Data/Creature.hs 94;" o +<$> src/Dodge/Data/Creature.hs 93;" o <$> src/Dodge/Data/LWorld.hs 179;" o <$> src/Dodge/Data/Terminal.hs 69;" o ABSOLUTE src/Dodge/Data/Item/Combine.hs 39;" C @@ -236,7 +236,7 @@ ContextDT src/Dodge/Data/DoubleTree.hs 25;" t ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C ConvexPoly src/Geometry/ConvexPoly.hs 25;" t -CookDeath src/Dodge/Data/Creature.hs 71;" C +CookDeath src/Dodge/Data/Creature.hs 70;" C CookingDamage src/Dodge/Data/Damage/Type.hs 5;" C Corporation src/Dodge/Data/Scenario.hs 46;" C Cosmic src/Dodge/Data/Scenario.hs 74;" C @@ -249,16 +249,16 @@ CrGroup src/Dodge/Data/Creature/State.hs 23;" t CrGroupID src/Dodge/Data/Creature/State.hs 29;" C CrGroupParams src/Dodge/Data/CrGroupParams.hs 12;" t CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 20;" t -CrHP src/Dodge/Data/Creature.hs 65;" t +CrHP src/Dodge/Data/Creature.hs 64;" t CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C CrID src/Dodge/Data/CrWlID.hs 10;" C CrImp src/Dodge/Data/CreatureEffect.hs 9;" t CrInt src/Dodge/Data/Item/Location.hs 22;" t CrIsAiming src/Dodge/Data/CreatureEffect.hs 20;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 20;" C -CrIsCorpse src/Dodge/Data/Creature.hs 67;" C -CrIsGibs src/Dodge/Data/Creature.hs 68;" C -CrIsPitted src/Dodge/Data/Creature.hs 69;" C +CrIsCorpse src/Dodge/Data/Creature.hs 66;" C +CrIsGibs src/Dodge/Data/Creature.hs 67;" C +CrIsPitted src/Dodge/Data/Creature.hs 68;" C CrMouth src/Dodge/Data/SoundOrigin.hs 16;" C CrMvType src/Dodge/Data/Creature/Misc.hs 26;" t CrMvType src/Dodge/Data/Creature/Misc.hs 29;" C @@ -275,7 +275,7 @@ Cr_status src/Dodge/Data/Config.hs 84;" C CraftType src/Dodge/Data/Item/Combine.hs 49;" t CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C -Creature src/Dodge/Data/Creature.hs 37;" t +Creature src/Dodge/Data/Creature.hs 36;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 15;" C CreatureShape src/Dodge/Data/Creature/Misc.hs 74;" t CreatureType src/Dodge/Data/Creature/Misc.hs 58;" t @@ -304,7 +304,7 @@ DamageHitSound src/Dodge/Data/SoundOrigin.hs 41;" C DamageLaser src/Dodge/Data/Laser.hs 15;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 19;" t DamageType src/Dodge/Data/Damage/Type.hs 3;" t -DeathType src/Dodge/Data/Creature.hs 71;" t +DeathType src/Dodge/Data/Creature.hs 70;" t Debris src/Dodge/Data/Prop.hs 25;" t DebrisChunk src/Dodge/Data/Prop.hs 25;" C DebrisType src/Dodge/Data/Prop.hs 21;" t @@ -490,7 +490,7 @@ GeoObjShads src/Dodge/Data/Config.hs 117;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C -GibsDeath src/Dodge/Data/Creature.hs 71;" C +GibsDeath src/Dodge/Data/Creature.hs 70;" C Glass src/Dodge/Data/Material.hs 14;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 34;" C Goal src/Dodge/Data/ActionPlan.hs 149;" t @@ -515,7 +515,7 @@ HEATSENSOR src/Dodge/Data/Item/Combine.hs 81;" C HELD src/Dodge/Data/Item/Combine.hs 16;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 100;" C HOSE src/Dodge/Data/Item/Combine.hs 54;" C -HP src/Dodge/Data/Creature.hs 66;" C +HP src/Dodge/Data/Creature.hs 65;" C HUD src/Dodge/Data/HUD.hs 29;" t HalfRes src/Dodge/Data/Config.hs 113;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C @@ -582,7 +582,7 @@ Inspect_wall src/Dodge/Data/Config.hs 106;" C 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 73;" t +Intention src/Dodge/Data/Creature.hs 72;" t IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t @@ -746,7 +746,7 @@ MedBaySS src/Dodge/Data/Scenario.hs 100;" C Medium src/Shape/Data.hs 25;" C Melee src/Dodge/Data/ActionPlan.hs 40;" C MeleeStrike src/Dodge/Data/ActionPlan.hs 144;" C -Memory src/Dodge/Data/Creature.hs 80;" t +Memory src/Dodge/Data/Creature.hs 79;" t MenuOption src/Dodge/Data/Universe.hs 109;" t MenuOptionDisplay src/Dodge/Data/Universe.hs 104;" t MetaBranch src/Dodge/Data/MetaTree.hs 19;" t @@ -993,7 +993,7 @@ PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C Placement src/Dodge/Data/GenWorld.hs 114;" t PlacementSpot src/Dodge/Data/GenWorld.hs 98;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C -PlainDeath src/Dodge/Data/Creature.hs 71;" C +PlainDeath src/Dodge/Data/Creature.hs 70;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t PlasmaBallType src/Dodge/Data/PlasmaBall.hs 20;" t @@ -1009,7 +1009,7 @@ Point3Q src/Geometry/Data.hs 52;" t Point4 src/Geometry/Data.hs 41;" t Poison src/Dodge/Data/Damage.hs 26;" C PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C -PoisonDeath src/Dodge/Data/Creature.hs 71;" C +PoisonDeath src/Dodge/Data/Creature.hs 70;" C PoisonGas src/Dodge/Data/Cloud.hs 42;" C PolyEdge src/Dodge/Data/Room.hs 51;" C PolyShad src/Picture/Data.hs 31;" C @@ -1669,36 +1669,36 @@ _cpPoints src/Geometry/ConvexPoly.hs 26;" f _cpRad src/Geometry/ConvexPoly.hs 28;" f _cpVigilance src/Dodge/Data/Creature/Perception.hs 31;" f _cpVision src/Dodge/Data/Creature/Perception.hs 34;" f -_crActionPlan src/Dodge/Data/Creature.hs 53;" f -_crDamage src/Dodge/Data/Creature.hs 50;" f -_crDeathTimer src/Dodge/Data/Creature.hs 61;" f -_crDir src/Dodge/Data/Creature.hs 41;" f -_crEquipment src/Dodge/Data/Creature.hs 49;" f -_crFaction src/Dodge/Data/Creature.hs 57;" f -_crGroup src/Dodge/Data/Creature.hs 58;" f +_crActionPlan src/Dodge/Data/Creature.hs 52;" f +_crDamage src/Dodge/Data/Creature.hs 49;" f +_crDeathTimer src/Dodge/Data/Creature.hs 60;" f +_crDir src/Dodge/Data/Creature.hs 40;" f +_crEquipment src/Dodge/Data/Creature.hs 48;" f +_crFaction src/Dodge/Data/Creature.hs 56;" f +_crGroup src/Dodge/Data/Creature.hs 57;" f _crGroupCenter src/Dodge/Data/CrGroupParams.hs 15;" f _crGroupID src/Dodge/Data/Creature/State.hs 27;" f _crGroupIDs src/Dodge/Data/CrGroupParams.hs 14;" f _crGroupParamID src/Dodge/Data/CrGroupParams.hs 13;" f _crGroupUpdate src/Dodge/Data/CrGroupParams.hs 16;" f -_crHP src/Dodge/Data/Creature.hs 46;" f -_crID src/Dodge/Data/Creature.hs 45;" f -_crIntention src/Dodge/Data/Creature.hs 59;" f -_crInv src/Dodge/Data/Creature.hs 47;" f -_crManipulation src/Dodge/Data/Creature.hs 48;" f -_crMemory src/Dodge/Data/Creature.hs 55;" f -_crMvAim src/Dodge/Data/Creature.hs 43;" f -_crMvDir src/Dodge/Data/Creature.hs 42;" f -_crName src/Dodge/Data/Creature.hs 60;" f -_crOldPos src/Dodge/Data/Creature.hs 39;" f -_crPain src/Dodge/Data/Creature.hs 51;" f -_crPerception src/Dodge/Data/Creature.hs 54;" f -_crPos src/Dodge/Data/Creature.hs 38;" f -_crStance src/Dodge/Data/Creature.hs 52;" f -_crType src/Dodge/Data/Creature.hs 44;" f -_crVocalization src/Dodge/Data/Creature.hs 56;" f -_crWallTouch src/Dodge/Data/Creature.hs 62;" f -_crZVel src/Dodge/Data/Creature.hs 40;" f +_crHP src/Dodge/Data/Creature.hs 45;" f +_crID src/Dodge/Data/Creature.hs 44;" f +_crIntention src/Dodge/Data/Creature.hs 58;" f +_crInv src/Dodge/Data/Creature.hs 46;" f +_crManipulation src/Dodge/Data/Creature.hs 47;" f +_crMemory src/Dodge/Data/Creature.hs 54;" f +_crMvAim src/Dodge/Data/Creature.hs 42;" f +_crMvDir src/Dodge/Data/Creature.hs 41;" f +_crName src/Dodge/Data/Creature.hs 59;" f +_crOldPos src/Dodge/Data/Creature.hs 38;" f +_crPain src/Dodge/Data/Creature.hs 50;" f +_crPerception src/Dodge/Data/Creature.hs 53;" f +_crPos src/Dodge/Data/Creature.hs 37;" f +_crStance src/Dodge/Data/Creature.hs 51;" f +_crType src/Dodge/Data/Creature.hs 43;" f +_crVocalization src/Dodge/Data/Creature.hs 55;" f +_crWallTouch src/Dodge/Data/Creature.hs 61;" f +_crZVel src/Dodge/Data/Creature.hs 39;" f _crZoning src/Dodge/Data/World.hs 48;" f _creatureGroups src/Dodge/Data/LWorld.hs 96;" f _creatures src/Dodge/Data/LWorld.hs 95;" f @@ -2046,7 +2046,7 @@ _mtTree src/Dodge/Data/MetaTree.hs 13;" f _musicData src/Data/Preload.hs 13;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 33;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 28;" f -_mvToPoint src/Dodge/Data/Creature.hs 75;" f +_mvToPoint src/Dodge/Data/Creature.hs 74;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 32;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 31;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f @@ -2058,7 +2058,7 @@ _mzRandomOffset src/Dodge/Data/Muzzle.hs 17;" f _mzRot src/Dodge/Data/Muzzle.hs 11;" f _nodeMetaTree src/Dodge/Data/MetaTree.hs 17;" f _nodeTree src/Dodge/Data/MetaTree.hs 16;" f -_nodesSearched src/Dodge/Data/Creature.hs 82;" f +_nodesSearched src/Dodge/Data/Creature.hs 81;" f _nonInf src/Dodge/Data/CardinalPoint.hs 44;" f _numLinkEW src/Dodge/Data/Room.hs 34;" f _numLinkNS src/Dodge/Data/Room.hs 35;" f @@ -2317,7 +2317,7 @@ _soundStatus src/Sound/Data.hs 45;" f _soundTime src/Sound/Data.hs 44;" f _soundVolume src/Sound/Data.hs 49;" f _soundVolumeFraction src/Sound/Data.hs 50;" f -_soundsToInvestigate src/Dodge/Data/Creature.hs 81;" f +_soundsToInvestigate src/Dodge/Data/Creature.hs 80;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 110;" f @@ -2349,7 +2349,7 @@ _swarm src/Dodge/Data/Creature/State.hs 26;" f _taArcSteps src/Dodge/Data/TeslaArc.hs 17;" f _taColor src/Dodge/Data/TeslaArc.hs 18;" f _taTimer src/Dodge/Data/TeslaArc.hs 16;" f -_targetCr src/Dodge/Data/Creature.hs 74;" f +_targetCr src/Dodge/Data/Creature.hs 73;" f _targetID src/Dodge/Data/ActionPlan.hs 67;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 68;" f _tbPos src/Dodge/Data/TractorBeam.hs 12;" f @@ -2465,7 +2465,7 @@ _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f _vertices src/Polyhedra/Data.hs 22;" f _viDist src/Dodge/Data/Creature/Perception.hs 41;" f _viFOV src/Dodge/Data/Creature/Perception.hs 40;" f -_viewPoint src/Dodge/Data/Creature.hs 76;" f +_viewPoint src/Dodge/Data/Creature.hs 75;" f _volleyNumBarrels src/Dodge/Data/TriggerType.hs 13;" f _volleyRate src/Dodge/Data/TriggerType.hs 13;" f _volume_master src/Dodge/Data/Config.hs 49;" f @@ -2563,7 +2563,7 @@ addToTrunk src/TreeHelp.hs 157;" f addWarningTerminal src/Dodge/Room/Warning.hs 94;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 81;" f -advanceScrollAmount src/Dodge/Update.hs 479;" f +advanceScrollAmount src/Dodge/Update.hs 480;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimStanceInfo src/Dodge/Item/Info.hs 242;" f @@ -2804,23 +2804,23 @@ chaseCritInternal src/Dodge/Humanoid.hs 8;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmRotate src/Dodge/Creature/Update.hs 175;" f +chasmRotate src/Dodge/Creature/Update.hs 172;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 356;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 296;" f -chasmTestCorpse src/Dodge/Creature/Update.hs 156;" f +chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f chasmTestLiving src/Dodge/Creature/Update.hs 137;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 78;" f checkDeath' src/Dodge/Creature/Update.hs 81;" f -checkEndGame src/Dodge/Update.hs 855;" f +checkEndGame src/Dodge/Update.hs 856;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f checkInventorySelectionExists src/Dodge/DisplayInventory.hs 93;" f -checkTermDist src/Dodge/Update.hs 388;" f +checkTermDist src/Dodge/Update.hs 389;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f @@ -2873,8 +2873,8 @@ clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f -colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f -colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f +colCrWall src/Dodge/WallCreatureCollisions.hs 22;" f +colCrsWalls src/Dodge/WallCreatureCollisions.hs 14;" f collectDamageTypes src/Dodge/Damage.hs 53;" f collectInvItems src/Dodge/Inventory.hs 201;" f collide3 src/Dodge/Base/Collide.hs 127;" f @@ -2943,7 +2943,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 86;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCanSeeCr src/Dodge/Creature/Test.hs 53;" f -crCrSpring src/Dodge/Update.hs 967;" f +crCrSpring src/Dodge/Update.hs 968;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f @@ -2952,7 +2952,7 @@ crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f crHasTarget src/Dodge/Creature/Test.hs 66;" f crHasTargetLOS src/Dodge/Creature/Test.hs 69;" f crHeight src/Dodge/Base/Collide.hs 173;" f -crHit src/Dodge/WorldEvent/ThingsHit.hs 121;" f +crHit src/Dodge/WorldEvent/ThingsHit.hs 132;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crInAimStance src/Dodge/Creature/Test.hs 94;" f @@ -2970,12 +2970,11 @@ crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f crNearPoint src/Dodge/Creature/Test.hs 132;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f -crOnWall src/Dodge/WallCreatureCollisions.hs 90;" f crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f crSetRoots src/Dodge/Inventory/Location.hs 55;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 962;" f +crSpring src/Dodge/Update.hs 963;" f crStratConMatches src/Dodge/Creature/Test.hs 81;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f crUpdate src/Dodge/Creature/Update.hs 71;" f @@ -2983,7 +2982,8 @@ crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 16;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 26;" f -crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 59;" f +crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 60;" f +crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 70;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f craftInfo src/Dodge/Item/Info.hs 168;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 40;" f @@ -2997,7 +2997,7 @@ createProjectile src/Dodge/HeldUse.hs 1292;" f createProjectileR src/Dodge/HeldUse.hs 1241;" f createShell src/Dodge/Projectile/Create.hs 21;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 53;" f -createUnusedLinkPos src/Dodge/Tree/Shift.hs 129;" f +createUnusedLinkPos src/Dodge/Tree/Shift.hs 130;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f creatureShootLaser src/Dodge/HeldUse.hs 852;" f @@ -3012,9 +3012,9 @@ critsRoom src/Dodge/Room/Room.hs 419;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f crossProd src/Geometry/Vector3D.hs 41;" f -crsHit src/Dodge/WorldEvent/ThingsHit.hs 69;" f -crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 168;" f -crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 80;" f +crsHit src/Dodge/WorldEvent/ThingsHit.hs 80;" f +crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 179;" f +crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 91;" 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 @@ -3200,7 +3200,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 50;" f displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 176;" f -displayTerminalLineString src/Dodge/Update.hs 560;" f +displayTerminalLineString src/Dodge/Update.hs 561;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 151;" f @@ -3208,7 +3208,7 @@ distributeAmmoToYou src/Dodge/WorldEffect.hs 139;" f distributerRoom src/Dodge/Room/Room.hs 428;" f divTo src/Geometry/Zone.hs 8;" f divideCircle src/Geometry.hs 321;" f -divideDoorPane src/Dodge/Placement/Instance/Door.hs 48;" f +divideDoorPane src/Dodge/Placement/Instance/Door.hs 47;" f divideLine src/Geometry.hs 248;" f divideLineExact src/Geometry.hs 276;" f divideLineOddNumPoints src/Geometry.hs 261;" f @@ -3280,10 +3280,10 @@ doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 18;" f doWdP2f src/Dodge/WdP2f.hs 10;" f doWdWd src/Dodge/WorldEffect.hs 34;" f -doWorldEvents src/Dodge/Update.hs 488;" f +doWorldEvents src/Dodge/Update.hs 489;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 14;" f -doorBetween src/Dodge/Placement/Instance/Door.hs 35;" f +doorBetween src/Dodge/Placement/Instance/Door.hs 34;" f doorCor src/Dodge/Room/Room.hs 400;" f doorLerp src/Dodge/Door.hs 41;" f doorLerpWithTimer src/Dodge/Door.hs 72;" f @@ -3598,7 +3598,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 153;" f gameplayMenu src/Dodge/Menu.hs 152;" f gameplayMenuOptions src/Dodge/Menu.hs 155;" f -gasEffect src/Dodge/Update.hs 880;" f +gasEffect src/Dodge/Update.hs 881;" f gasType src/Dodge/HeldUse.hs 1131;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f @@ -3624,7 +3624,7 @@ getCommands src/Dodge/Terminal.hs 58;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 503;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 490;" f -getDebugMouseOver src/Dodge/Update.hs 449;" f +getDebugMouseOver src/Dodge/Update.hs 450;" f getDistortions src/Dodge/Render.hs 443;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1280;" f @@ -3635,7 +3635,7 @@ getLaserDamage src/Dodge/HeldUse.hs 718;" f getLaserPhaseV src/Dodge/HeldUse.hs 715;" f getLinksOfType src/Dodge/RoomLink.hs 40;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f -getMenuMouseContext src/Dodge/Update.hs 461;" f +getMenuMouseContext src/Dodge/Update.hs 462;" f getNodePos src/Dodge/Path.hs 34;" f getPJStabiliser src/Dodge/HeldUse.hs 1267;" f getPretty src/AesonHelp.hs 8;" f @@ -3859,7 +3859,7 @@ isAnimate src/Dodge/Creature/Test.hs 135;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 66;" f -isFlyable src/Dodge/WorldEvent/ThingsHit.hs 176;" f +isFlyable src/Dodge/WorldEvent/ThingsHit.hs 187;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 199;" f isInLnk src/Dodge/PlacementSpot.hs 163;" f isJust' src/MaybeHelp.hs 27;" f @@ -3872,7 +3872,7 @@ isNothing' src/MaybeHelp.hs 31;" f isOnSeg src/Geometry.hs 237;" f isOutLnk src/Dodge/PlacementSpot.hs 168;" f isOutLnkNum src/Dodge/PlacementSpot.hs 173;" f -isOverTerminalScreen src/Dodge/Update.hs 469;" f +isOverTerminalScreen src/Dodge/Update.hs 470;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 108;" f isRHS src/Geometry/LHS.hs 44;" f @@ -3881,7 +3881,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 183;" f +isWalkable src/Dodge/WorldEvent/ThingsHit.hs 194;" f isoMatrix src/MatrixHelper.hs 35;" f isotriBWH src/Geometry/Polygon.hs 30;" f itDim src/Dodge/Item/InvSize.hs 21;" f @@ -4259,11 +4259,11 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 692;" f muzzlePos src/Dodge/HeldUse.hs 779;" f muzzleRandPos src/Dodge/HeldUse.hs 788;" f -muzzleWallCheck src/Dodge/Update.hs 345;" f +muzzleWallCheck src/Dodge/Update.hs 346;" f mvButton src/Dodge/Placement/PlaceSpot.hs 182;" f mvCr src/Dodge/Placement/PlaceSpot.hs 185;" f mvFS src/Dodge/Placement/PlaceSpot.hs 188;" f -mvGust src/Dodge/Update.hs 871;" f +mvGust src/Dodge/Update.hs 872;" f mvLS src/Dodge/Placement/PlaceSpot.hs 235;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4291,10 +4291,10 @@ nextInSectionSS src/Dodge/SelectionSections.hs 34;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f -noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f +noclipCheck src/Dodge/WallCreatureCollisions.hs 17;" f nodesNear src/Dodge/Path.hs 75;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 258;" f -nonCornerLinks src/Dodge/Room/SensorDoor.hs 55;" f +nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f normalTo8 src/Shader/Poke.hs 466;" f normalizeAngle src/Geometry/Vector.hs 128;" f @@ -4377,8 +4377,8 @@ pauseMenu src/Dodge/Menu.hs 57;" f pauseMenuOptions src/Dodge/Menu.hs 64;" f pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 217;" f -pbFlicker src/Dodge/Update.hs 545;" f -pbsHit src/Dodge/WorldEvent/ThingsHit.hs 97;" f +pbFlicker src/Dodge/Update.hs 546;" f +pbsHit src/Dodge/WorldEvent/ThingsHit.hs 108;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 214;" f @@ -4494,7 +4494,7 @@ polygonCol src/Picture/Base.hs 70;" f polygonWire src/Picture/Base.hs 59;" f polysToPic src/Polyhedra.hs 122;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f -posRms src/Dodge/Tree/Shift.hs 45;" f +posRms src/Dodge/Tree/Shift.hs 46;" f posSelSecYint src/Dodge/SelectionSections.hs 161;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 36;" f postGenerationProcessing src/Dodge/LevelGen.hs 31;" f @@ -4515,11 +4515,11 @@ prependTwo src/Geometry.hs 177;" f prettyDT src/Dodge/DoubleTree.hs 127;" f prettyShort src/AesonHelp.hs 11;" f primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 645;" f -printColumnTitles src/Dodge/Tree/Shift.hs 154;" f -printColumns src/Dodge/Tree/Shift.hs 144;" f -printInfo src/Dodge/Tree/Shift.hs 157;" f -printInfoCheckNum src/Dodge/Tree/Shift.hs 166;" f -printPartialColumns src/Dodge/Tree/Shift.hs 147;" f +printColumnTitles src/Dodge/Tree/Shift.hs 155;" f +printColumns src/Dodge/Tree/Shift.hs 145;" f +printInfo src/Dodge/Tree/Shift.hs 158;" f +printInfoCheckNum src/Dodge/Tree/Shift.hs 167;" f +printPartialColumns src/Dodge/Tree/Shift.hs 148;" f printPoint src/Dodge/Debug/Picture.hs 35;" f printRotPoint src/Dodge/Debug/Picture.hs 38;" f prismBox src/Shape.hs 74;" f @@ -4542,23 +4542,21 @@ psposAddLabel src/Dodge/PlacementSpot.hs 71;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f pulseChecker src/Dodge/Item/Equipment.hs 84;" f -pushCr' src/Dodge/WallCreatureCollisions.hs 41;" f -pushCreatureOutFromWalls src/Dodge/WallCreatureCollisions.hs 61;" f +pushCr src/Dodge/WallCreatureCollisions.hs 36;" f pushL src/DoubleStack.hs 20;" f -pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 113;" f -pushOutFromWall src/Dodge/WallCreatureCollisions.hs 102;" f -pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 68;" f +pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 70;" f +pushOutFromWall src/Dodge/WallCreatureCollisions.hs 59;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f pushYouOutFromWalls src/Dodge/Update.hs 342;" f -putAutoDoor src/Dodge/Placement/Instance/Door.hs 65;" f +putAutoDoor src/Dodge/Placement/Instance/Door.hs 64;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 120;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 114;" f putConvexChasm src/Dodge/Data/GenWorld.hs 70;" f putDoor src/Dodge/Room/Airlock.hs 117;" f putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f -putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 21;" f +putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 20;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 60;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 187;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f @@ -4586,7 +4584,7 @@ rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToDeg src/Geometry/Vector.hs 123;" f -radiusSpring src/Dodge/Update.hs 951;" f +radiusSpring src/Dodge/Update.hs 952;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 58;" f @@ -4608,7 +4606,7 @@ randPeakedParam src/RandomHelp.hs 149;" f randProb src/RandomHelp.hs 87;" f randSpark src/Dodge/Spark.hs 70;" f randSparkExtraVel src/Dodge/Spark.hs 93;" f -randWallReflect src/Dodge/Update.hs 727;" f +randWallReflect src/Dodge/Update.hs 728;" f randomChallenges src/Dodge/Room/Start.hs 64;" f randomCompass src/Dodge/Layout.hs 60;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 247;" f @@ -4841,13 +4839,13 @@ selSecSelSize src/Dodge/SelectionSections.hs 157;" f selSecYint src/Dodge/SelectionSections.hs 166;" f selectedItemScroll src/Dodge/Update/Scroll.hs 49;" f semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 785;" f -sensAboveDoor src/Dodge/Room/SensorDoor.hs 70;" f -sensInsideDoor src/Dodge/Room/SensorDoor.hs 79;" f +sensAboveDoor src/Dodge/Room/SensorDoor.hs 68;" f +sensInsideDoor src/Dodge/Room/SensorDoor.hs 77;" f senseDamage src/Dodge/Machine/Update.hs 264;" f senseDamage' src/Dodge/Wall/Damage.hs 61;" f sensorReqToString src/Dodge/Machine/Update.hs 242;" f -sensorRoom src/Dodge/Room/SensorDoor.hs 29;" f -sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 61;" f +sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f +sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f sensorSPic src/Dodge/Machine/Draw.hs 99;" f sensorTut src/Dodge/Room/Tutorial.hs 512;" f sensorTypeDamages src/Dodge/Machine/Update.hs 288;" f @@ -4871,7 +4869,7 @@ setLinkType src/Dodge/RoomLink.hs 79;" f setLinkTypePD src/Dodge/RoomLink.hs 86;" f setMusicVolume src/Sound.hs 164;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f -setOldPos src/Dodge/Update.hs 579;" f +setOldPos src/Dodge/Update.hs 580;" f setOutLinks src/Dodge/RoomLink.hs 49;" f setOutLinksByType src/Dodge/RoomLink.hs 76;" f setOutLinksPD src/Dodge/RoomLink.hs 96;" f @@ -4962,10 +4960,10 @@ showEquipItem src/Dodge/Item/Display.hs 108;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 63;" f +showManObj src/Dodge/TestString.hs 58;" f showMuzzlePositions src/Dodge/Debug.hs 292;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 72;" f +showTimeFlow src/Dodge/TestString.hs 67;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -4974,7 +4972,7 @@ shufflePair src/RandomHelp.hs 166;" f shuffleRoomPos src/Dodge/Layout.hs 86;" f shuffleTail src/RandomHelp.hs 78;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 956;" f +simpleCrSprings src/Dodge/Update.hs 957;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 757;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 793;" f @@ -5070,7 +5068,7 @@ sqPlatformChasm src/Dodge/Room/Tutorial.hs 223;" f sqSpitChasm src/Dodge/Room/Tutorial.hs 238;" f square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f -squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 117;" f +squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 73;" f squashNormalizeV src/Geometry/Vector.hs 158;" f ssLookupDown src/Dodge/SelectionSections.hs 96;" f ssLookupGE' src/Dodge/SelectionSections.hs 150;" f @@ -5200,18 +5198,18 @@ tflat2 src/Picture/Data.hs 55;" f tflat3 src/Picture/Data.hs 59;" f tflat4 src/Picture/Data.hs 63;" f theCleanup appDodge/Main.hs 65;" f -theColumns src/Dodge/Tree/Shift.hs 151;" f +theColumns src/Dodge/Tree/Shift.hs 152;" f theUpdateStep appDodge/Main.hs 101;" f thickArc src/Picture/Base.hs 293;" f 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 118;" f -thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 106;" f -thingsHit src/Dodge/WorldEvent/ThingsHit.hs 44;" f -thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 127;" f -thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 52;" f +thingHit src/Dodge/WorldEvent/ThingsHit.hs 129;" f +thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 117;" f +thingsHit src/Dodge/WorldEvent/ThingsHit.hs 45;" f +thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 138;" f +thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 53;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 67;" f throb1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 801;" f throbC4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 761;" f @@ -5263,7 +5261,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f topInvW src/Dodge/ListDisplayParams.hs 54;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 59;" f +topTestPart src/Dodge/TestString.hs 54;" f torchShape src/Dodge/Item/Draw/SPic.hs 276;" f torqueAmount src/Dodge/HeldUse.hs 596;" f torqueCr src/Dodge/WorldEffect.hs 86;" f @@ -5371,7 +5369,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 -updateAimPos src/Dodge/Update.hs 375;" f +updateAimPos src/Dodge/Update.hs 376;" f updateAllNodes src/TreeHelp.hs 86;" f updateArc src/Dodge/Tesla.hs 43;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 454;" f @@ -5381,47 +5379,47 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f updateBounds src/Dodge/Update/Camera.hs 261;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 642;" f +updateBullets src/Dodge/Update.hs 643;" f updateCamera src/Dodge/Update/Camera.hs 32;" f updateCloseObjects src/Dodge/Inventory.hs 125;" f -updateCloud src/Dodge/Update.hs 884;" f -updateClouds src/Dodge/Update.hs 753;" f +updateCloud src/Dodge/Update.hs 885;" f +updateClouds src/Dodge/Update.hs 754;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f updateCreature src/Dodge/Creature/Update.hs 37;" f -updateCreatureGroups src/Dodge/Update.hs 614;" f -updateCreatureSoundPositions src/Dodge/Update.hs 593;" f -updateCreatureStride src/Dodge/Update.hs 369;" f -updateCreatureStrides src/Dodge/Update.hs 366;" f -updateDebris src/Dodge/Update.hs 656;" f +updateCreatureGroups src/Dodge/Update.hs 615;" f +updateCreatureSoundPositions src/Dodge/Update.hs 594;" f +updateCreatureStride src/Dodge/Update.hs 370;" f +updateCreatureStrides src/Dodge/Update.hs 367;" f +updateDebris src/Dodge/Update.hs 657;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 102;" f -updateDelayedEvents src/Dodge/Update.hs 987;" f +updateDelayedEvents src/Dodge/Update.hs 988;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 635;" f +updateDistortions src/Dodge/Update.hs 636;" f updateDoor src/Dodge/Door.hs 22;" f -updateDoors src/Dodge/Update.hs 380;" f -updateDust src/Dodge/Update.hs 931;" f -updateDusts src/Dodge/Update.hs 759;" f +updateDoors src/Dodge/Update.hs 381;" f +updateDust src/Dodge/Update.hs 932;" f +updateDusts src/Dodge/Update.hs 760;" f updateEdge src/Dodge/Path.hs 43;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 744;" f +updateEnergyBalls src/Dodge/Update.hs 745;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 481;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 741;" f +updateFlames src/Dodge/Update.hs 742;" f updateFloatingCamera src/Dodge/Update/Camera.hs 37;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 338;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 334;" f -updateGas src/Dodge/Update.hs 906;" f -updateGasses src/Dodge/Update.hs 756;" f -updateGusts src/Dodge/Update.hs 868;" f -updateIMl src/Dodge/Update.hs 608;" f -updateIMl' src/Dodge/Update.hs 611;" f +updateGas src/Dodge/Update.hs 907;" f +updateGasses src/Dodge/Update.hs 757;" f +updateGusts src/Dodge/Update.hs 869;" f +updateIMl src/Dodge/Update.hs 609;" f +updateIMl' src/Dodge/Update.hs 612;" f updateInGameCamera src/Dodge/Update/Camera.hs 85;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 404;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f @@ -5434,35 +5432,35 @@ updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 357;" f updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 380;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 11;" f -updateLasers src/Dodge/Update.hs 495;" f +updateLasers src/Dodge/Update.hs 496;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 174;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLivingCreature src/Dodge/Creature/Update.hs 47;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 417;" f updateMachine src/Dodge/Machine/Update.hs 24;" f -updateMagnets src/Dodge/Update.hs 383;" f +updateMagnets src/Dodge/Update.hs 384;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 205;" f -updateMouseContext src/Dodge/Update.hs 396;" f -updateMouseContextGame src/Dodge/Update.hs 401;" f +updateMouseContext src/Dodge/Update.hs 397;" f +updateMouseContextGame src/Dodge/Update.hs 402;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 98;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 88;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 168;" f -updateObjCatMaybes src/Dodge/Update.hs 626;" f -updateObjMapMaybe src/Dodge/Update.hs 619;" f -updatePastWorlds src/Dodge/Update.hs 484;" f -updatePlasmaBall src/Dodge/Update.hs 509;" f -updatePlasmaBalls src/Dodge/Update.hs 649;" f +updateObjCatMaybes src/Dodge/Update.hs 627;" f +updateObjMapMaybe src/Dodge/Update.hs 620;" f +updatePastWorlds src/Dodge/Update.hs 485;" f +updatePlasmaBall src/Dodge/Update.hs 510;" f +updatePlasmaBalls src/Dodge/Update.hs 650;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 182;" f -updatePulseBall src/Dodge/Update.hs 525;" f -updatePulseLaser src/Dodge/Update.hs 696;" f -updatePulseLasers src/Dodge/Update.hs 504;" f +updatePulse src/Dodge/Creature/Update.hs 179;" f +updatePulseBall src/Dodge/Update.hs 526;" f +updatePulseLaser src/Dodge/Update.hs 697;" f +updatePulseLasers src/Dodge/Update.hs 505;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 638;" f +updateRadarBlips src/Dodge/Update.hs 639;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 747;" f +updateRadarSweeps src/Dodge/Update.hs 748;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 185;" f @@ -5472,17 +5470,17 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 738;" f +updateShockwaves src/Dodge/Update.hs 739;" f updateSingleNodes src/TreeHelp.hs 98;" f updateSound src/Sound.hs 73;" f updateSounds src/Sound.hs 68;" f updateSpark src/Dodge/Spark.hs 20;" f -updateSparks src/Dodge/Update.hs 750;" f -updateTerminal src/Dodge/Update.hs 563;" f -updateTeslaArc src/Dodge/Update.hs 666;" f -updateTeslaArcs src/Dodge/Update.hs 663;" f +updateSparks src/Dodge/Update.hs 751;" f +updateTerminal src/Dodge/Update.hs 564;" f +updateTeslaArc src/Dodge/Update.hs 667;" f +updateTeslaArcs src/Dodge/Update.hs 664;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 735;" f +updateTractorBeams src/Dodge/Update.hs 736;" f updateTurret src/Dodge/Machine/Update.hs 56;" f updateUniverse src/Dodge/Update.hs 81;" f updateUniverseFirst src/Dodge/Update.hs 92;" f @@ -5493,7 +5491,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f -updateWheelEvents src/Dodge/Update.hs 474;" f +updateWheelEvents src/Dodge/Update.hs 475;" f updateWorldEventFlag src/Dodge/Update.hs 127;" f updateWorldEventFlags src/Dodge/Update.hs 115;" f upperBody src/Dodge/Creature/Picture.hs 118;" f @@ -5566,7 +5564,7 @@ volleyGunShape src/Dodge/Item/Draw/SPic.hs 354;" f walkNozzle src/Dodge/HeldUse.hs 819;" f walkableNodeNear src/Dodge/Path.hs 69;" f wallBlips src/Dodge/RadarSweep.hs 99;" f -wallBuffer src/Dodge/WallCreatureCollisions.hs 58;" f +wallBuffer src/Dodge/WallCreatureCollisions.hs 54;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallToSurface src/Dodge/Base/Collide.hs 180;" f wallsFromRooms src/Dodge/Layout.hs 141;" f @@ -5612,7 +5610,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 145;" f +wlHitPos src/Dodge/WorldEvent/ThingsHit.hs 156;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f wlIXsNearRect src/Dodge/Zoning/Wall.hs 29;" f @@ -5623,9 +5621,9 @@ wlOpaqueDraw src/Dodge/Render/Walls.hs 53;" f wlSeeThroughDraw src/Dodge/Render/Walls.hs 56;" f wlZoneSize src/Dodge/Zoning/Wall.hs 52;" f wlsFromIXs src/Dodge/Zoning/Wall.hs 35;" f -wlsHit src/Dodge/WorldEvent/ThingsHit.hs 141;" f -wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 153;" f -wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 148;" f +wlsHit src/Dodge/WorldEvent/ThingsHit.hs 152;" f +wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 164;" f +wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 159;" f wlsNearCirc src/Dodge/Zoning/Wall.hs 49;" f wlsNearPoint src/Dodge/Zoning/Wall.hs 39;" f wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f @@ -5667,13 +5665,13 @@ zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f zeroZ src/Geometry/Vector.hs 9;" f zipArcs src/Dodge/Tesla.hs 51;" f -zipCount src/Dodge/Tree/Shift.hs 141;" f +zipCount src/Dodge/Tree/Shift.hs 142;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f -zoneClouds src/Dodge/Update.hs 552;" f +zoneClouds src/Dodge/Update.hs 553;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f -zoneCreatures src/Dodge/Update.hs 589;" f +zoneCreatures src/Dodge/Update.hs 590;" f zoneDust src/Dodge/Zoning/Cloud.hs 57;" f -zoneDusts src/Dodge/Update.hs 557;" f +zoneDusts src/Dodge/Update.hs 558;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneGas src/Dodge/Zoning/Cloud.hs 36;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f