From 819f0d37eab0c3df814910fe4d8759fb03f59514 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 23 Oct 2025 18:11:01 +0100 Subject: [PATCH] Start simplifying/removing Wall records --- src/Dodge/Base/Collide.hs | 14 - src/Dodge/Creature/Action.hs | 1 + src/Dodge/Data/Door.hs | 8 +- src/Dodge/Data/Wall.hs | 2 - src/Dodge/Data/WorldEffect.hs | 3 - src/Dodge/Default/Door.hs | 5 +- src/Dodge/Default/Wall.hs | 5 +- src/Dodge/DrWdWd.hs | 9 +- src/Dodge/Item/BackgroundEffect.hs | 3 +- src/Dodge/Item/Weapon/LaserPath.hs | 5 +- src/Dodge/Path.hs | 2 +- src/Dodge/Placement/Instance/Door.hs | 6 +- src/Dodge/Placement/PlaceSpot/TriggerDoor.hs | 10 +- src/Dodge/Room/LongDoor.hs | 2 +- src/Dodge/Room/Procedural.hs | 2 +- src/Dodge/Wall/ForceField.hs | 2 - src/Dodge/WorldEvent/ThingsHit.hs | 16 + tags | 378 +++++++++---------- 18 files changed, 230 insertions(+), 243 deletions(-) diff --git a/src/Dodge/Base/Collide.hs b/src/Dodge/Base/Collide.hs index 8c878956b..c88b8770b 100644 --- a/src/Dodge/Base/Collide.hs +++ b/src/Dodge/Base/Collide.hs @@ -30,7 +30,6 @@ module Dodge.Base.Collide ( hasButtonLOS, canSee, canSeeIndirect, - isWalkable, anythingHitCirc, collide3WallsFloor, collide3, @@ -41,7 +40,6 @@ import Control.Monad import qualified Data.IntSet as IS import Data.List (sortOn) import Data.Maybe -import Data.Monoid import Dodge.Base.Wall import Dodge.Creature.Radius import Dodge.Data.Object @@ -325,18 +323,6 @@ hasLOSIndirect p1 p2 = . collidePointTestFilter wlIsOpaque p1 p2 . wlsNearSeg p1 p2 -isFlyable :: Point2 -> Point2 -> World -> Bool -{-# INLINE isFlyable #-} -isFlyable p1 p2 = - not - . collidePointTestFilter (not . (^?! wlPathable)) p1 p2 - . wlsNearSeg p1 p2 - -isWalkable :: Point2 -> Point2 -> World -> Bool -{-# INLINE isWalkable #-} -isWalkable p1 p2 w = isFlyable p1 p2 w && not (getAny $ foldMap f (w ^. cWorld . chasms)) - where - f = foldMap (Any . isJust . uncurry (intersectSegSeg p1 p2)) . loopPairs canSee :: Int -> Int -> World -> Bool {-# INLINE canSee #-} diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 8e8ac5657..e9d4f4ca9 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -10,6 +10,7 @@ module Dodge.Creature.Action ( youDropItem, ) where +import Dodge.WorldEvent.ThingsHit import Control.Applicative import Control.Monad import Data.Foldable diff --git a/src/Dodge/Data/Door.hs b/src/Dodge/Data/Door.hs index 08ebba6be..3934844b2 100644 --- a/src/Dodge/Data/Door.hs +++ b/src/Dodge/Data/Door.hs @@ -29,19 +29,23 @@ data PushSource data Door = Door { _drID :: Int , _drTrigger :: WdBl - , _drMech :: DrWdWd + , _drUpdate :: DoorUpdate , _drZeroPos :: (Point2,Float) , _drOnePos :: (Point2,Float) , _drLerp :: Float , _drFootPrint :: IM.IntMap (Point2,Point2) , _drHP :: Int - , _drSpeed :: Float , _drPushedBy :: PushSource , _drPushes :: Maybe Int , _drMounts :: [MountedObject] } +data DoorUpdate = DoorDoNothing | DoorLerp {_drLerpSpeed :: Float} + + makeLenses ''Door +makeLenses ''DoorUpdate --deriveJSON defaultOptions ''DoorStatus +deriveJSON defaultOptions ''DoorUpdate deriveJSON defaultOptions ''PushSource deriveJSON defaultOptions ''Door diff --git a/src/Dodge/Data/Wall.hs b/src/Dodge/Data/Wall.hs index b866812af..677c1e51d 100644 --- a/src/Dodge/Data/Wall.hs +++ b/src/Dodge/Data/Wall.hs @@ -22,13 +22,11 @@ data Wall = Wall , _wlColor :: Color , _wlOpacity :: Opacity , _wlPathFlag :: S.Set WallFlag - , _wlPathable :: Bool , _wlPenetrable :: Bool , _wlBouncy :: Bool , _wlWalkable :: Bool , _wlTouchThrough :: Bool , _wlFireThrough :: Bool - , _wlReflect :: Bool , _wlUnshadowed :: Bool , _wlRotateTo :: Bool , _wlStructure :: WallStructure diff --git a/src/Dodge/Data/WorldEffect.hs b/src/Dodge/Data/WorldEffect.hs index 40542e501..4fb0a0d3d 100644 --- a/src/Dodge/Data/WorldEffect.hs +++ b/src/Dodge/Data/WorldEffect.hs @@ -60,12 +60,9 @@ data WdP2f = WdP2f0 | WdP2fDoorPosition Int -data DrWdWd = DrWdId | DoorLerp - deriveJSON defaultOptions ''ItCrWdWd deriveJSON defaultOptions ''WdWd deriveJSON defaultOptions ''WdP2 deriveJSON defaultOptions ''MdWdWd deriveJSON defaultOptions ''WdBl deriveJSON defaultOptions ''WdP2f -deriveJSON defaultOptions ''DrWdWd diff --git a/src/Dodge/Default/Door.hs b/src/Dodge/Default/Door.hs index 1304a0c9a..357971da2 100644 --- a/src/Dodge/Default/Door.hs +++ b/src/Dodge/Default/Door.hs @@ -16,14 +16,12 @@ defaultAutoWall :: Wall defaultAutoWall = defaultDoorWall & wlColor .~ dim yellow - & wlPathable .~ True & wlOpacity .~ Opaque 9 defaultSwitchWall :: Wall defaultSwitchWall = defaultDoorWall & wlColor .~ red - & wlPathable .~ False & wlOpacity .~ Opaque 0 defaultDoor :: Door @@ -33,7 +31,7 @@ defaultDoor = -- , _drWallIDs = mempty -- , _drStatus = DoorClosed , _drTrigger = WdBlConst False - , _drMech = DrWdId + , _drUpdate = DoorDoNothing -- , _drPos = (0, 0) -- , _drOpenPos = (0, 0) -- , _drClosePos = (0, 0) @@ -42,7 +40,6 @@ defaultDoor = , _drLerp = 0 , _drFootPrint = mempty , _drHP = 10000 - , _drSpeed = 1 , _drPushedBy = PushesItself , _drPushes = Nothing , _drMounts = mempty diff --git a/src/Dodge/Default/Wall.hs b/src/Dodge/Default/Wall.hs index 2198e0e51..38fa56bed 100644 --- a/src/Dodge/Default/Wall.hs +++ b/src/Dodge/Default/Wall.hs @@ -23,13 +23,10 @@ defaultWall = , _wlColor = greyN 0.6 , _wlPathFlag = S.fromList [WallBlockVisibility , WallNotAutoOpen, WallNotDestrucable] - , --, _wlOpacity = Opaque 11 - _wlOpacity = Opaque 11 - , _wlPathable = False + , _wlOpacity = Opaque 11 , _wlPenetrable = False , _wlFireThrough = False , _wlTouchThrough = False - , _wlReflect = False , _wlUnshadowed = True , _wlRotateTo = True , _wlStructure = StandaloneWall diff --git a/src/Dodge/DrWdWd.hs b/src/Dodge/DrWdWd.hs index fbd1ed897..42b97db43 100644 --- a/src/Dodge/DrWdWd.hs +++ b/src/Dodge/DrWdWd.hs @@ -20,11 +20,11 @@ import qualified Data.Set as S updateDoor :: Door -> World -> (S.Set Int2, World) updateDoor dr w | dr ^. drHP < 1 = destroyDoor dr w - | DoorLerp <- dr ^. drMech = doorLerp dr w + | DoorLerp x <- dr ^. drUpdate = doorLerp x dr w | otherwise = (mempty,w) -doorLerp :: Door -> World -> (S.Set Int2,World) -doorLerp dr w = fromMaybe (mempty,w) $ do +doorLerp :: Float -> Door -> World -> (S.Set Int2,World) +doorLerp speed dr w = fromMaybe (mempty,w) $ do x <- newlerp let ps = wlposs x is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps @@ -43,7 +43,6 @@ doorLerp dr w = fromMaybe (mempty,w) $ do | clerp > 0 && not toOpen = Just . max 0 $ clerp - speed | otherwise = Nothing toOpen = doWdBl (_drTrigger dr) w - speed = _drSpeed dr drid = _drID dr playSound x | _drPushedBy dr == PushesItself = @@ -81,5 +80,5 @@ stopPushing mdrid w = fromMaybe w $ do drid <- mdrid dr <- w ^? cWorld . lWorld . doors . ix drid return $ - w & cWorld . lWorld . doors . ix drid . drMech .~ DrWdId + w & cWorld . lWorld . doors . ix drid . drUpdate .~ DoorDoNothing & stopPushing (_drPushes dr) diff --git a/src/Dodge/Item/BackgroundEffect.hs b/src/Dodge/Item/BackgroundEffect.hs index 9e5bfd1a7..84445d5e3 100644 --- a/src/Dodge/Item/BackgroundEffect.hs +++ b/src/Dodge/Item/BackgroundEffect.hs @@ -80,10 +80,9 @@ shieldWall crid = defaultWall { _wlColor = yellow , _wlOpacity = SeeAbove - , _wlPathable = True , _wlWalkable = True , _wlFireThrough = False - , _wlReflect = True + , _wlMaterial = Metal , _wlRotateTo = False , _wlStructure = CreaturePart crid -- shieldWallDamage } diff --git a/src/Dodge/Item/Weapon/LaserPath.hs b/src/Dodge/Item/Weapon/LaserPath.hs index b86681bb9..d663c7082 100644 --- a/src/Dodge/Item/Weapon/LaserPath.hs +++ b/src/Dodge/Item/Weapon/LaserPath.hs @@ -4,6 +4,7 @@ module Dodge.Item.Weapon.LaserPath ( reflectPulseLaserAlong, ) where +import Control.Lens import Dodge.Data.Object import Data.Bifunctor import Data.Tuple @@ -22,7 +23,7 @@ reflectLaserAlong :: {-# INLINE reflectLaserAlong #-} reflectLaserAlong phasev sp ep w = case thingHitFilt (const True) _wlUnshadowed sp ep w of Just (p, Right wl) - | _wlReflect wl -> + | Metal <- wl ^. wlMaterial -> second (p :) $ reflectLaserAlong phasev @@ -72,7 +73,7 @@ reflectPulseLaserAlong phasev sp ep w = f $ filter (isunshad . snd) $ crWlPbHit where f = \case ((p, OWall wl) : _) - | _wlReflect wl -> + | Metal <- wl ^. wlMaterial -> second (p :) $ reflectPulseLaserAlong phasev diff --git a/src/Dodge/Path.hs b/src/Dodge/Path.hs index 92e478de9..7afe9565f 100644 --- a/src/Dodge/Path.hs +++ b/src/Dodge/Path.hs @@ -15,6 +15,7 @@ module Dodge.Path ( getEdgesCrossing, ) where +import Dodge.WorldEvent.ThingsHit import qualified Data.Set as S import qualified Algorithm.Search as AS import Control.Lens @@ -29,7 +30,6 @@ import Data.Set (Set) import qualified Data.Set as Set import qualified Data.Vector as V import qualified Data.Vector.Unboxed as UV -import Dodge.Base.Collide import Dodge.Data.World import Dodge.Zoning.Base import Dodge.Zoning.Common diff --git a/src/Dodge/Placement/Instance/Door.hs b/src/Dodge/Placement/Instance/Door.hs index 098d36457..f0112e5f8 100644 --- a/src/Dodge/Placement/Instance/Door.hs +++ b/src/Dodge/Placement/Instance/Door.hs @@ -56,7 +56,7 @@ doorBetween eo wl cond soff pa pb speed g = case divideLine 40 pa pb of adoor = defaultDoor & drTrigger .~ cond - & drSpeed .~ speed + & drUpdate . drLerpSpeed .~ speed divideDoorPane :: Maybe Int -> @@ -74,7 +74,7 @@ divideDoorPane mid wl cond soff speed ppairs g = case ppairs of where adoor (x, y) = PutSlideDr thedoor wl mempty soff x y thedoor = - defaultDoor & drSpeed .~ speed & drTrigger .~ cond + defaultDoor & drUpdate . drLerpSpeed .~ speed & drTrigger .~ cond & drPushedBy .~ maybe PushesItself PushedBy mid putAutoDoor :: Point2 -> Point2 -> Placement @@ -117,7 +117,7 @@ switchDoor btpos btrot dra drb col = pContID thedoor = defaultDoor & drTrigger .~ WdBlBtOn btid - & drSpeed .~ 2 + & drUpdate . drLerpSpeed .~ 2 drc = 0.5 *.* (dra +.+ drb) --cond btid w' = _btState (_buttons w' IM.! btid) == BtOn diff --git a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs index 4fadfcd6d..4c4555fa5 100644 --- a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs +++ b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs @@ -36,18 +36,14 @@ plDoor col eo cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld . cW IM.insert drid $ defaultDoor { _drID = drid --- , _drWallIDs = IS.fromList wlids , _drTrigger = cond - , _drMech = DoorLerp + , _drUpdate = DoorLerp 0.01 , _drZeroPos = p1 , _drOnePos = p2 , _drLerp = 0 , _drFootPrint = IM.fromList . zip wlids $ wlps' - , _drSpeed = 0.01 } --- nsteps = length pss - 1 wlids = take 4 [IM.newKey $ _walls (_lWorld (_cWorld $ _gwWorld gw)) ..] - --wlps' = uncurry (rectanglePairs 9) $ head pss wlps' = rectanglePairs 9 0 (V2 l 0) addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids $ wlps' & each . each %~ shiftPointBy p1 @@ -96,13 +92,11 @@ plSlideDoor dr wl eo shiftOffset a b gw = IM.insert drid $ dr { _drID = drid --- , _drWallIDs = IS.fromList wlids - , _drMech = DoorLerp + , _drUpdate = DoorLerp $ 1 / distance a (shiftLeft a) , _drZeroPos = (a, 0) , _drOnePos = (shiftLeft a, 0) , _drLerp = 0 , _drFootPrint = IM.fromList $ zip wlids $ rectanglePairs 9 0 (b-a) - , _drSpeed = 1 / distance a (shiftLeft a) } addDoorWalls w' = foldl' (addDoorWall eo drid wl) w' $ zip wlids pairs pairs = rectanglePairs 9 a b diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 316e71fc5..4f589007e 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -73,7 +73,7 @@ twinSlowDoorRoom w h x = ] thedoor btid = defaultDoor - & drSpeed .~ wlSpeed + & drUpdate . drLerpSpeed .~ wlSpeed -- & drTrigger .~ WdBlBtNotOff btid & drTrigger .~ WdBlBtOn btid col = dim $ dim $ bright red diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index 0f2f3a250..8e73282df 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -334,4 +334,4 @@ centerVaultRoom w h d = thedoor btid = defaultDoor & drTrigger .~ WdBlBtOn btid - & drSpeed .~ 2 + & drUpdate . drLerpSpeed .~ 2 diff --git a/src/Dodge/Wall/ForceField.hs b/src/Dodge/Wall/ForceField.hs index 02e33d9af..f2b38bf33 100644 --- a/src/Dodge/Wall/ForceField.hs +++ b/src/Dodge/Wall/ForceField.hs @@ -9,10 +9,8 @@ forceField = defaultWall { _wlColor = orange , _wlOpacity = DrawnWall DrawForceField - , _wlPathable = True , _wlWalkable = True , _wlFireThrough = False - , _wlReflect = True , _wlUnshadowed = True , _wlRotateTo = False , _wlStructure = StandaloneWall diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index 515b08003..3616ce9e5 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -14,8 +14,11 @@ module Dodge.WorldEvent.ThingsHit ( crHit, crWlPbHit, wlsHitUnsorted, + isWalkable, ) where +import Data.Monoid +import qualified Data.Set as S import Linear import Dodge.Data.Object import Dodge.Creature.Radius @@ -155,3 +158,16 @@ crsHitRadial p r = mapMaybe f . crsNearCirc p r let cp = cr ^. crPos . _xy guard $ dist p cp < r + crRad (_crType cr) return (cp + (1 + crRad (_crType cr)) *.* (cp - p), cr) + +isFlyable :: Point2 -> Point2 -> World -> Bool +{-# INLINE isFlyable #-} +isFlyable p1 p2 = + not . (WallNotAutoOpen `S.member`) + . foldMap (^. _2 . wlPathFlag) + . wlsHitUnsorted p1 p2 + +isWalkable :: Point2 -> Point2 -> World -> Bool +{-# INLINE isWalkable #-} +isWalkable p1 p2 w = isFlyable p1 p2 w && not (getAny $ foldMap f (w ^. cWorld . chasms)) + where + f = foldMap (Any . isJust . uncurry (intersectSegSeg p1 p2)) . loopPairs diff --git a/tags b/tags index 2024c4d80..f39c69c90 100644 --- a/tags +++ b/tags @@ -210,7 +210,7 @@ ChangeStrategy src/Dodge/Data/ActionPlan.hs 43;" C ChaseAI src/Dodge/Data/Creature/Misc.hs 38;" C ChaseCrit src/Dodge/Data/Creature/Misc.hs 68;" C ChaseCritters src/Dodge/Data/Creature/State.hs 16;" C -ChasmObstacle src/Dodge/Data/PathGraph.hs 50;" C +ChasmObstacle src/Dodge/Data/PathGraph.hs 51;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 29;" C ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 28;" C @@ -354,8 +354,8 @@ DoubleRes src/Dodge/Data/Config.hs 98;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t DrWdId src/Dodge/Data/WorldEffect.hs 63;" C DrWdWd src/Dodge/Data/WorldEffect.hs 63;" t -DrawForceField src/Dodge/Data/Wall.hs 47;" C -DrawnWall src/Dodge/Data/Wall.hs 43;" C +DrawForceField src/Dodge/Data/Wall.hs 46;" C +DrawnWall src/Dodge/Data/Wall.hs 42;" C DroneAmmo src/Dodge/Data/AmmoType.hs 10;" C DropItem src/Dodge/Data/ActionPlan.hs 38;" C DudPayload src/Dodge/Data/Payload.hs 11;" C @@ -370,7 +370,7 @@ EXPLOSIVES src/Dodge/Data/Item/Combine.hs 116;" C Ears src/Dodge/Data/Creature/Perception.hs 45;" C East src/Dodge/Data/CardinalPoint.hs 7;" C East8 src/Dodge/Data/CardinalPoint.hs 22;" C -EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t +EdgeObstacle src/Dodge/Data/PathGraph.hs 49;" t EighthRes src/Dodge/Data/Config.hs 98;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C @@ -698,7 +698,7 @@ MODBlockedString src/Dodge/Data/Universe.hs 94;" C MODString src/Dodge/Data/Universe.hs 93;" C MODStringOption src/Dodge/Data/Universe.hs 95;" C MOTOR src/Dodge/Data/Item/Combine.hs 63;" C -MPO src/Dodge/Base/Collide.hs 98;" t +MPO src/Dodge/Base/Collide.hs 99;" t MTRS src/Dodge/Data/MTRS.hs 6;" t MTree src/Dodge/Data/MetaTree.hs 11;" C Machine src/Dodge/Data/Machine.hs 28;" t @@ -915,8 +915,8 @@ OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnceSound src/Dodge/Data/SoundOrigin.hs 14;" C OneHand src/Dodge/Data/AimStance.hs 14;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C -Opacity src/Dodge/Data/Wall.hs 40;" t -Opaque src/Dodge/Data/Wall.hs 44;" C +Opacity src/Dodge/Data/Wall.hs 39;" t +Opaque src/Dodge/Data/Wall.hs 43;" C OpticScope src/Dodge/Data/Item/Scope.hs 12;" C OptionScreen src/Dodge/Data/Universe.hs 80;" C OptionScreenFlag src/Dodge/Data/Universe.hs 70;" t @@ -1154,8 +1154,8 @@ ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t Search src/Dodge/Data/ActionPlan.hs 145;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 23;" t -SeeAbove src/Dodge/Data/Wall.hs 42;" C -SeeThrough src/Dodge/Data/Wall.hs 41;" C +SeeAbove src/Dodge/Data/Wall.hs 41;" C +SeeThrough src/Dodge/Data/Wall.hs 40;" C Sel src/Dodge/Data/HUD.hs 39;" C SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C @@ -1209,7 +1209,7 @@ ShrinkGunStatus src/Dodge/Data/Item/Params.hs 26;" t Shrunk src/Dodge/Data/Item/Params.hs 26;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 62;" t -SimpleEdge src/Dodge/Data/PathGraph.hs 42;" t +SimpleEdge src/Dodge/Data/PathGraph.hs 43;" t SixteenthRes src/Dodge/Data/Config.hs 98;" C Size src/Shape/Data.hs 23;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C @@ -1439,11 +1439,11 @@ Walking src/Dodge/Data/Creature/Stance.hs 23;" C Wall src/Dodge/Data/Wall.hs 19;" t WallArcNode src/Dodge/Data/LWorld.hs 154;" C WallBlockVisibility src/Dodge/Data/Wall/Structure.hs 19;" C -WallDraw src/Dodge/Data/Wall.hs 47;" t +WallDraw src/Dodge/Data/Wall.hs 46;" t WallFlag src/Dodge/Data/Wall/Structure.hs 18;" t WallNotAutoOpen src/Dodge/Data/Wall/Structure.hs 20;" C WallNotDestrucable src/Dodge/Data/Wall/Structure.hs 21;" C -WallObstacle src/Dodge/Data/PathGraph.hs 49;" C +WallObstacle src/Dodge/Data/PathGraph.hs 50;" C WallP src/Dodge/LevelGen/StaticWalls.hs 23;" t WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t WallSound src/Dodge/Data/SoundOrigin.hs 24;" C @@ -2053,9 +2053,9 @@ _nzWalkSpeed src/Dodge/Data/Muzzle.hs 50;" f _offGridFromEdges src/Dodge/Data/Room.hs 82;" f _oldMagnets src/Dodge/Data/LWorld.hs 121;" f _onGridFromEdges src/Dodge/Data/Room.hs 81;" f -_opDraw src/Dodge/Data/Wall.hs 43;" f +_opDraw src/Dodge/Data/Wall.hs 42;" f _opSel src/Dodge/Data/RightButtonOptions.hs 15;" f -_opTexture src/Dodge/Data/Wall.hs 44;" f +_opTexture src/Dodge/Data/Wall.hs 43;" 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 @@ -2227,8 +2227,8 @@ _scrollTestInt src/Dodge/Data/Input.hs 48;" f _scurColor src/Dodge/Data/SelectionList.hs 26;" f _scurPos src/Dodge/Data/SelectionList.hs 24;" f _scurSize src/Dodge/Data/SelectionList.hs 25;" f -_seDist src/Dodge/Data/PathGraph.hs 43;" f -_seObstacles src/Dodge/Data/PathGraph.hs 44;" f +_seDist src/Dodge/Data/PathGraph.hs 44;" f +_seObstacles src/Dodge/Data/PathGraph.hs 45;" f _seenLocations src/Dodge/Data/LWorld.hs 133;" f _selLocation src/Dodge/Data/LWorld.hs 134;" f _sensAmount src/Dodge/Data/Machine/Sensor.hs 20;" f @@ -2453,24 +2453,23 @@ _windowPosY src/Dodge/Data/Config.hs 54;" f _windowShader src/Data/Preload/Render.hs 19;" f _windowX src/Dodge/Data/Config.hs 51;" f _windowY src/Dodge/Data/Config.hs 52;" f -_wlBouncy src/Dodge/Data/Wall.hs 27;" f +_wlBouncy src/Dodge/Data/Wall.hs 26;" f _wlColor src/Dodge/Data/Wall.hs 22;" f -_wlFireThrough src/Dodge/Data/Wall.hs 30;" f -_wlHeight src/Dodge/Data/Wall.hs 35;" f +_wlFireThrough src/Dodge/Data/Wall.hs 29;" f +_wlHeight src/Dodge/Data/Wall.hs 34;" f _wlID src/Dodge/Data/Wall.hs 21;" f _wlLine src/Dodge/Data/Wall.hs 20;" f -_wlMaterial src/Dodge/Data/Wall.hs 36;" f +_wlMaterial src/Dodge/Data/Wall.hs 35;" f _wlOpacity src/Dodge/Data/Wall.hs 23;" f _wlPathFlag src/Dodge/Data/Wall.hs 24;" f -_wlPathable src/Dodge/Data/Wall.hs 25;" f -_wlPenetrable src/Dodge/Data/Wall.hs 26;" f -_wlReflect src/Dodge/Data/Wall.hs 31;" f -_wlRotateTo src/Dodge/Data/Wall.hs 33;" f +_wlPenetrable src/Dodge/Data/Wall.hs 25;" f +_wlReflect src/Dodge/Data/Wall.hs 30;" f +_wlRotateTo src/Dodge/Data/Wall.hs 32;" f _wlStCreature src/Dodge/Data/Wall/Structure.hs 15;" f -_wlStructure src/Dodge/Data/Wall.hs 34;" f -_wlTouchThrough src/Dodge/Data/Wall.hs 29;" f -_wlUnshadowed src/Dodge/Data/Wall.hs 32;" f -_wlWalkable src/Dodge/Data/Wall.hs 28;" f +_wlStructure src/Dodge/Data/Wall.hs 33;" f +_wlTouchThrough src/Dodge/Data/Wall.hs 28;" f +_wlUnshadowed src/Dodge/Data/Wall.hs 31;" f +_wlWalkable src/Dodge/Data/Wall.hs 27;" f _wlZoning src/Dodge/Data/World.hs 49;" f _worldEventFlags src/Dodge/Data/World.hs 45;" f _worldEvents src/Dodge/Data/LWorld.hs 127;" f @@ -2496,7 +2495,7 @@ addCrGibs src/Dodge/Prop/Gib.hs 17;" f addDepth src/Picture/Base.hs 133;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" f -addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 54;" f +addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 55;" f addGib4 src/Dodge/Prop/Gib.hs 52;" f addGibAt src/Dodge/Prop/Gib.hs 63;" f addGibAtDir src/Dodge/Prop/Gib.hs 69;" f @@ -2511,7 +2510,7 @@ addGirderNS' src/Dodge/Room/Modify/Girder.hs 55;" f addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f -addPane src/Dodge/Placement/PlaceSpot.hs 185;" f +addPane src/Dodge/Placement/PlaceSpot.hs 186;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 134;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2525,7 +2524,7 @@ addToTrunk src/TreeHelp.hs 157;" f addWarningTerminal src/Dodge/Room/Warning.hs 61;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 81;" f -advanceScrollAmount src/Dodge/Update.hs 438;" f +advanceScrollAmount src/Dodge/Update.hs 436;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 60;" f aimDelaySweep src/Dodge/Render/Picture.hs 287;" f @@ -2539,7 +2538,7 @@ airlockDoor src/Dodge/Room/Airlock.hs 99;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 102;" f airlockSimple src/Dodge/Room/Airlock.hs 118;" f airlockZ src/Dodge/Room/Airlock.hs 157;" f -allVisibleWalls src/Dodge/Base/Collide.hs 225;" f +allVisibleWalls src/Dodge/Base/Collide.hs 226;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f ammoMagInfo src/Dodge/Item/Info.hs 49;" f @@ -2557,7 +2556,7 @@ angleBetween src/Geometry.hs 158;" f angleVV src/Geometry/Vector.hs 58;" f angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f -anythingHitCirc src/Dodge/Base/Collide.hs 355;" f +anythingHitCirc src/Dodge/Base/Collide.hs 344;" f applyCME src/Dodge/HeldUse.hs 369;" f applyClip src/Dodge/Debug.hs 96;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f @@ -2707,7 +2706,7 @@ blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f bossRoom src/Dodge/Room/Boss.hs 61;" f bounceDir src/Dodge/Bullet.hs 110;" f -bouncePoint src/Dodge/Base/Collide.hs 88;" f +bouncePoint src/Dodge/Base/Collide.hs 89;" f bounceSound src/Dodge/Projectile/Update.hs 73;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f @@ -2741,8 +2740,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 341;" f -canSeeIndirect src/Dodge/Base/Collide.hs 348;" f +canSee src/Dodge/Base/Collide.hs 330;" f +canSeeIndirect src/Dodge/Base/Collide.hs 337;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 69;" f cardEightVec src/Dodge/Base/CardinalPoint.hs 17;" f @@ -2773,18 +2772,18 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 193;" f chasmTest src/Dodge/Creature/Update.hs 132;" f -chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f +chasmWallToSurface src/Dodge/Base/Collide.hs 121;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 70;" f checkDeath' src/Dodge/Creature/Update.hs 73;" f -checkEndGame src/Dodge/Update.hs 787;" f +checkEndGame src/Dodge/Update.hs 785;" f checkErrorGL src/Shader/Compile.hs 255;" 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 337;" f +checkTermDist src/Dodge/Update.hs 335;" 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 @@ -2796,18 +2795,18 @@ chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 77;" f chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 60;" f -circHitWall src/Dodge/Base/Collide.hs 242;" f +circHitWall src/Dodge/Base/Collide.hs 243;" f circInPolygon src/Geometry/Polygon.hs 102;" f -circOnAnyCr src/Dodge/Base/Collide.hs 293;" f +circOnAnyCr src/Dodge/Base/Collide.hs 294;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f -circOnSomeWall src/Dodge/Base/Collide.hs 287;" f +circOnSomeWall src/Dodge/Base/Collide.hs 288;" f circle src/Picture/Base.hs 180;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f clAlt src/Dodge/Cloud.hs 5;" f -clClSpringVel src/Dodge/Update.hs 860;" f +clClSpringVel src/Dodge/Update.hs 858;" f clColor src/Shader/Poke/Cloud.hs 35;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 168;" f @@ -2834,7 +2833,7 @@ closeObjectInfo src/Dodge/Render/HUD.hs 226;" f closestPointOnLine src/Geometry/Intersect.hs 272;" f closestPointOnLineParam src/Geometry/Intersect.hs 288;" f closestPointOnSeg src/Geometry/Intersect.hs 303;" f -cloudEffect src/Dodge/Update.hs 812;" f +cloudEffect src/Dodge/Update.hs 810;" f cloudPoisonDamage src/Dodge/Update/Cloud.hs 11;" f clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f @@ -2847,18 +2846,18 @@ colCrWall src/Dodge/WallCreatureCollisions.hs 29;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f collectDamageTypes src/Dodge/Damage.hs 53;" f collectInvItems src/Dodge/Update/Input/InGame.hs 295;" f -collide3 src/Dodge/Base/Collide.hs 129;" f -collide3Chasm src/Dodge/Base/Collide.hs 113;" f -collide3Chasms src/Dodge/Base/Collide.hs 106;" f -collide3Creature src/Dodge/Base/Collide.hs 162;" f -collide3Floors src/Dodge/Base/Collide.hs 143;" f -collide3Wall src/Dodge/Base/Collide.hs 157;" f -collide3Walls src/Dodge/Base/Collide.hs 138;" f -collide3WallsFloor src/Dodge/Base/Collide.hs 100;" f -collideCircWalls src/Dodge/Base/Collide.hs 254;" f -collidePoint src/Dodge/Base/Collide.hs 54;" f -collidePointTestFilter src/Dodge/Base/Collide.hs 190;" f -collidePointWallsFilter src/Dodge/Base/Collide.hs 204;" f +collide3 src/Dodge/Base/Collide.hs 130;" f +collide3Chasm src/Dodge/Base/Collide.hs 114;" f +collide3Chasms src/Dodge/Base/Collide.hs 107;" f +collide3Creature src/Dodge/Base/Collide.hs 163;" f +collide3Floors src/Dodge/Base/Collide.hs 144;" f +collide3Wall src/Dodge/Base/Collide.hs 158;" f +collide3Walls src/Dodge/Base/Collide.hs 139;" f +collide3WallsFloor src/Dodge/Base/Collide.hs 101;" f +collideCircWalls src/Dodge/Base/Collide.hs 255;" f +collidePoint src/Dodge/Base/Collide.hs 55;" f +collidePointTestFilter src/Dodge/Base/Collide.hs 191;" f +collidePointWallsFilter src/Dodge/Base/Collide.hs 205;" f color src/Picture/Base.hs 108;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 237;" f @@ -2913,15 +2912,15 @@ crAwayFromPost src/Dodge/Creature/Test.hs 85;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCanSeeCr src/Dodge/Creature/Test.hs 52;" f -crCrSpring src/Dodge/Update.hs 889;" f +crCrSpring src/Dodge/Update.hs 887;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" 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 65;" f crHasTargetLOS src/Dodge/Creature/Test.hs 68;" f -crHeight src/Dodge/Base/Collide.hs 175;" f -crHit src/Dodge/WorldEvent/ThingsHit.hs 114;" f +crHeight src/Dodge/Base/Collide.hs 176;" f +crHit src/Dodge/WorldEvent/ThingsHit.hs 116;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crInAimStance src/Dodge/Creature/Test.hs 93;" f @@ -2944,7 +2943,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 74;" f crSetRoots src/Dodge/Inventory/Location.hs 55;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 886;" f +crSpring src/Dodge/Update.hs 884;" f crStratConMatches src/Dodge/Creature/Test.hs 80;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f crUpdate src/Dodge/Creature/Update.hs 63;" f @@ -2952,7 +2951,7 @@ crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f -crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 52;" f +crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 54;" f crZoneSize src/Dodge/Zoning/Creature.hs 42;" f craftInfo src/Dodge/Item/Info.hs 169;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 40;" f @@ -2981,9 +2980,9 @@ critsRoom src/Dodge/Room/Room.hs 398;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 27;" f crossProd src/Geometry/Vector3D.hs 41;" f -crsHit src/Dodge/WorldEvent/ThingsHit.hs 62;" f -crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 151;" f -crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 73;" f +crsHit src/Dodge/WorldEvent/ThingsHit.hs 64;" f +crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 153;" f +crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 75;" 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 @@ -3087,11 +3086,11 @@ defaultConfig src/Dodge/Data/Config.hs 128;" f defaultCraftItem src/Dodge/Default/Item.hs 25;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f -defaultCrystalWall src/Dodge/Default/Wall.hs 43;" f +defaultCrystalWall src/Dodge/Default/Wall.hs 45;" f defaultDirtBlock src/Dodge/Default/Block.hs 19;" f -defaultDirtWall src/Dodge/Default/Wall.hs 64;" f -defaultDoor src/Dodge/Default/Door.hs 29;" f -defaultDoorWall src/Dodge/Default/Wall.hs 39;" f +defaultDirtWall src/Dodge/Default/Wall.hs 66;" f +defaultDoor src/Dodge/Default/Door.hs 27;" f +defaultDoorWall src/Dodge/Default/Wall.hs 40;" f defaultDrawButton src/Dodge/Button/Draw.hs 29;" f defaultEquipment src/Dodge/Default.hs 24;" f defaultFlIt src/Dodge/Default.hs 27;" f @@ -3105,17 +3104,17 @@ defaultInvSize src/Dodge/Default/Creature.hs 72;" f defaultLWorld src/Dodge/Default/World.hs 100;" f defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f defaultMachine src/Dodge/Default.hs 30;" f -defaultMachineWall src/Dodge/Default/Wall.hs 51;" f +defaultMachineWall src/Dodge/Default/Wall.hs 53;" f defaultPerceptionState src/Dodge/Default/Creature.hs 75;" f defaultProp src/Dodge/Default/Prop.hs 6;" f defaultProximitySensor src/Dodge/Default.hs 54;" f defaultRoom src/Dodge/Default/Room.hs 9;" f -defaultSensorWall src/Dodge/Default/Wall.hs 61;" f -defaultSwitchWall src/Dodge/Default/Door.hs 22;" f +defaultSensorWall src/Dodge/Default/Wall.hs 63;" f +defaultSwitchWall src/Dodge/Default/Door.hs 21;" f defaultTerminal src/Dodge/Default/Terminal.hs 10;" f defaultVision src/Dodge/Default/Creature.hs 85;" f -defaultWall src/Dodge/Default/Wall.hs 17;" f -defaultWindow src/Dodge/Default/Wall.hs 81;" f +defaultWall src/Dodge/Default/Wall.hs 18;" f +defaultWindow src/Dodge/Default/Wall.hs 83;" f defaultWorld src/Dodge/Default/World.hs 31;" f degToRad src/Geometry/Vector.hs 118;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -3149,7 +3148,7 @@ difference src/Geometry.hs 127;" f digitalLine src/Geometry.hs 285;" f digitalRect src/Geometry.hs 302;" f dim src/Color.hs 112;" f -dirtColor src/Dodge/Default/Wall.hs 77;" f +dirtColor src/Dodge/Default/Wall.hs 79;" f dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f displayConfig src/Dodge/Menu.hs 230;" f @@ -3158,12 +3157,12 @@ displayFrameTicks src/Dodge/Render/Picture.hs 51;" f displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f -displayTerminalLineString src/Dodge/Update.hs 502;" f +displayTerminalLineString src/Dodge/Update.hs 500;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f divideCircle src/Geometry.hs 321;" f -divideDoorPane src/Dodge/Placement/Instance/Door.hs 59;" f +divideDoorPane src/Dodge/Placement/Instance/Door.hs 61;" f divideLine src/Geometry.hs 248;" f divideLineExact src/Geometry.hs 276;" f divideLineOddNumPoints src/Geometry.hs 261;" f @@ -3174,7 +3173,7 @@ doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBarrelSpin src/Dodge/Projectile/Update.hs 157;" f doBlBl src/Dodge/BlBl.hs 5;" f doBlSh src/Dodge/Block/Draw.hs 14;" f -doBounce src/Dodge/Base/Collide.hs 69;" f +doBounce src/Dodge/Base/Collide.hs 70;" f doButtonEvent src/Dodge/Button/Event.hs 9;" f doConLoop src/Loop.hs 137;" f doConLoop' src/Loop.hs 226;" f @@ -3233,10 +3232,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 28;" f -doWorldEvents src/Dodge/Update.hs 447;" f +doWorldEvents src/Dodge/Update.hs 445;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 14;" f -doorBetween src/Dodge/Placement/Instance/Door.hs 39;" f +doorBetween src/Dodge/Placement/Instance/Door.hs 41;" f doorLerp src/Dodge/DrWdWd.hs 26;" f dotV src/Geometry/Vector.hs 76;" f dotV3 src/Geometry/Vector3D.hs 119;" f @@ -3404,14 +3403,14 @@ dtToRootIntMap' src/Dodge/DoubleTree.hs 153;" f dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 72;" f dustColor src/Shader/Poke/Cloud.hs 71;" f -dustSpringVel src/Dodge/Update.hs 871;" f +dustSpringVel src/Dodge/Update.hs 869;" f ebColor src/Dodge/EnergyBall.hs 77;" f ebDamage src/Dodge/EnergyBall.hs 85;" f ebEffect src/Dodge/EnergyBall.hs 45;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f edgeFormatting src/Dodge/Combine/Graph.hs 129;" f -edgeToPic src/Dodge/Debug/Picture.hs 412;" f +edgeToPic src/Dodge/Debug/Picture.hs 411;" f effectOnEquip src/Dodge/Equipment.hs 32;" f effectOnRemove src/Dodge/Equipment.hs 19;" f eitType src/Dodge/Data/EquipType.hs 15;" f @@ -3584,9 +3583,9 @@ getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 342;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 329;" f -getDebugMouseOver src/Dodge/Update.hs 395;" f +getDebugMouseOver src/Dodge/Update.hs 393;" f getDistortions src/Dodge/Render.hs 435;" f -getEdgesCrossing src/Dodge/Path.hs 51;" f +getEdgesCrossing src/Dodge/Path.hs 52;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f @@ -3595,8 +3594,8 @@ getLaserDamage src/Dodge/HeldUse.hs 704;" f getLaserPhaseV src/Dodge/HeldUse.hs 701;" f getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f -getMenuMouseContext src/Dodge/Update.hs 407;" f -getNodePos src/Dodge/Path.hs 40;" f +getMenuMouseContext src/Dodge/Update.hs 405;" f +getNodePos src/Dodge/Path.hs 41;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f @@ -3671,10 +3670,10 @@ handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 19;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f -hasButtonLOS src/Dodge/Base/Collide.hs 312;" f +hasButtonLOS src/Dodge/Base/Collide.hs 313;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f -hasLOS src/Dodge/Base/Collide.hs 305;" f -hasLOSIndirect src/Dodge/Base/Collide.hs 321;" f +hasLOS src/Dodge/Base/Collide.hs 306;" f +hasLOSIndirect src/Dodge/Base/Collide.hs 322;" f hat src/Dodge/Item/Equipment.hs 76;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f @@ -3749,9 +3748,9 @@ insertNewKey src/IntMapHelp.hs 65;" f insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f insertOver src/ListHelp.hs 47;" f insertS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f -insertWall src/Dodge/Placement/PlaceSpot/Block.hs 120;" f +insertWall src/Dodge/Placement/PlaceSpot/Block.hs 121;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f -insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 115;" f +insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 116;" f insertWithNewKeys src/IntMapHelp.hs 71;" f intAnno src/Dodge/Floor.hs 111;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f @@ -3817,7 +3816,7 @@ isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 65;" f isElectrical src/Dodge/Machine/Update.hs 84;" f -isFlyable src/Dodge/Base/Collide.hs 328;" f +isFlyable src/Dodge/WorldEvent/ThingsHit.hs 161;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 197;" f isInLnk src/Dodge/PlacementSpot.hs 161;" f isJust' src/MaybeHelp.hs 27;" f @@ -3829,7 +3828,7 @@ isNHS src/Geometry/Intersect.hs 53;" f isNothing' src/MaybeHelp.hs 31;" f isOnSeg src/Geometry.hs 237;" f isOutLnk src/Dodge/PlacementSpot.hs 166;" f -isOverTerminalScreen src/Dodge/Update.hs 418;" f +isOverTerminalScreen src/Dodge/Update.hs 416;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 32;" f @@ -3838,7 +3837,7 @@ isUnusedLnkType src/Dodge/PlacementSpot.hs 190;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 174;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f isVowel src/StringHelp.hs 8;" f -isWalkable src/Dodge/Base/Collide.hs 335;" f +isWalkable src/Dodge/WorldEvent/ThingsHit.hs 168;" f isoMatrix src/MatrixHelper.hs 30;" f isotriBWH src/Geometry/Polygon.hs 22;" f itDim src/Dodge/Item/InvSize.hs 21;" f @@ -4079,9 +4078,9 @@ makeIntInterval src/Dodge/Zoning/Base.hs 37;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f makeMuzzleFlare src/Dodge/HeldUse.hs 656;" f makeParagraph src/Justify.hs 6;" f -makePathBetween src/Dodge/Path.hs 81;" f -makePathBetweenPs src/Dodge/Path.hs 102;" f -makePathUsing src/Dodge/Path.hs 68;" f +makePathBetween src/Dodge/Path.hs 82;" f +makePathBetweenPs src/Dodge/Path.hs 103;" f +makePathUsing src/Dodge/Path.hs 69;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f @@ -4226,16 +4225,16 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 678;" f muzzlePos src/Dodge/HeldUse.hs 769;" f muzzleRandPos src/Dodge/HeldUse.hs 778;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 193;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 196;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 203;" f -mvGust src/Dodge/Update.hs 803;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 275;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 194;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 197;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 204;" f +mvGust src/Dodge/Update.hs 801;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 276;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 190;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 191;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f myParams src/Dodge/Combine/Graph.hs 101;" f @@ -4279,7 +4278,7 @@ numShads src/Picture/Data.hs 40;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 184;" f obstacleColor src/Dodge/Debug/Picture.hs 269;" f -obstructPathsCrossing src/Dodge/Path.hs 131;" f +obstructPathsCrossing src/Dodge/Path.hs 132;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f @@ -4316,10 +4315,10 @@ overPos src/Picture/Base.hs 303;" f overPosObj src/Shape.hs 277;" f overPosSH src/Shape.hs 261;" f overPosSP src/ShapePicture.hs 41;" f -overlapCircWalls src/Dodge/Base/Collide.hs 231;" f -overlapCircWallsClosest src/Dodge/Base/Collide.hs 273;" f -overlapSegCrs src/Dodge/Base/Collide.hs 61;" f -overlapSegWalls src/Dodge/Base/Collide.hs 213;" f +overlapCircWalls src/Dodge/Base/Collide.hs 232;" f +overlapCircWallsClosest src/Dodge/Base/Collide.hs 274;" f +overlapSegCrs src/Dodge/Base/Collide.hs 62;" f +overlapSegWalls src/Dodge/Base/Collide.hs 214;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 179;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f @@ -4327,7 +4326,7 @@ p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pairInPolys src/Dodge/Room/Path.hs 53;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 68;" f -pairsToIncGraph src/Dodge/Path.hs 109;" f +pairsToIncGraph src/Dodge/Path.hs 110;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f @@ -4335,15 +4334,15 @@ parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f passthroughLockKeyLists src/Dodge/Floor.hs 120;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f -pathEdgeObstructed src/Dodge/Path.hs 84;" f +pathEdgeObstructed src/Dodge/Path.hs 85;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseGame src/Dodge/Update/Input/InGame.hs 525;" f pauseMenu src/Dodge/Menu.hs 59;" f pauseMenuOptions src/Dodge/Menu.hs 66;" f pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 185;" f -pbFlicker src/Dodge/Update.hs 488;" f -pbsHit src/Dodge/WorldEvent/ThingsHit.hs 90;" f +pbFlicker src/Dodge/Update.hs 486;" f +pbsHit src/Dodge/WorldEvent/ThingsHit.hs 92;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 210;" f @@ -4369,26 +4368,26 @@ pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f -plBlock src/Dodge/Placement/PlaceSpot/Block.hs 16;" f -plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 19;" f -plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 48;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 250;" f +plBlock src/Dodge/Placement/PlaceSpot/Block.hs 17;" f +plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 20;" f +plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 49;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 207;" f +plMachine' src/Dodge/Placement/PlaceSpot.hs 251;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f -plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 80;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 219;" f -placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 264;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 42;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 104;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 67;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 179;" f +plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 82;" f +plTurret src/Dodge/Placement/PlaceSpot.hs 220;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 162;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 265;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 43;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 34;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 105;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 68;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 180;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4413,7 +4412,7 @@ pointInOrOnPolygon src/Geometry/Polygon.hs 78;" f pointInPoly src/Geometry/Polygon.hs 86;" f pointIsInCone src/Geometry.hs 375;" f pointIsOnScreen src/Dodge/Base/Window.hs 59;" f -pointTowardsImpulse src/Dodge/Path.hs 106;" f +pointTowardsImpulse src/Dodge/Path.hs 107;" f pointerToItem src/Dodge/Item/Location.hs 39;" f pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f @@ -4540,14 +4539,14 @@ pushOutFromWall src/Dodge/WallCreatureCollisions.hs 99;" f pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 63;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f -putAutoDoor src/Dodge/Placement/Instance/Door.hs 78;" f +putAutoDoor src/Dodge/Placement/Instance/Door.hs 80;" f putBlockC src/Dodge/Placement/Instance/Wall.hs 159;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 166;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 145;" f putBlockRect' src/Dodge/Placement/Instance/Wall.hs 132;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 153;" f -putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f -putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 21;" f +putDoubleDoor src/Dodge/Placement/Instance/Door.hs 18;" f +putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 23;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 66;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 222;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 24;" f @@ -4597,7 +4596,7 @@ randPeakedParam src/RandomHelp.hs 130;" f randProb src/RandomHelp.hs 68;" f randSpark src/Dodge/Spark.hs 69;" f randSparkExtraVel src/Dodge/Spark.hs 92;" f -randWallReflect src/Dodge/Update.hs 662;" f +randWallReflect src/Dodge/Update.hs 660;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 268;" f @@ -4848,7 +4847,7 @@ setLinkType src/Dodge/RoomLink.hs 78;" f setLinkTypePD src/Dodge/RoomLink.hs 85;" f setMusicVolume src/Sound.hs 162;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f -setOldPos src/Dodge/Update.hs 521;" f +setOldPos src/Dodge/Update.hs 519;" f setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f @@ -4959,7 +4958,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 82;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 880;" f +simpleCrSprings src/Dodge/Update.hs 878;" f simpleTermMessage src/Dodge/Terminal.hs 164;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f @@ -4988,11 +4987,11 @@ smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f smallPillar src/Dodge/Room/Pillar.hs 37;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f -smallSnailInt2 src/Dodge/Path.hs 96;" f +smallSnailInt2 src/Dodge/Path.hs 97;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f -snailAround src/Dodge/Path.hs 93;" f -snapToGrid src/Dodge/Path.hs 154;" f +snailAround src/Dodge/Path.hs 94;" f +snapToGrid src/Dodge/Path.hs 155;" f sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5106,8 +5105,9 @@ swapInvItems src/Dodge/Inventory/Swap.hs 22;" f swapItemWith src/Dodge/Inventory.hs 164;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f -switchDoor src/Dodge/Placement/Instance/Door.hs 104;" f +switchDoor src/Dodge/Placement/Instance/Door.hs 106;" f switchWallCol src/Dodge/Default/Door.hs 12;" f +switchWallObs src/Dodge/Data/PathGraph.hs 54;" f t src/ShortShow.hs 48;" f tEast src/Dodge/Room/Corridor.hs 90;" f tToBTree src/Dodge/Tree/Compose.hs 92;" f @@ -5176,11 +5176,11 @@ thickCircle src/Picture/Base.hs 272;" f thickLine src/Picture/Base.hs 244;" f thickLineCol src/Picture/Base.hs 255;" f thinHighBar src/Dodge/Room/Foreground.hs 77;" f -thingHit src/Dodge/WorldEvent/ThingsHit.hs 111;" f -thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 99;" f -thingsHit src/Dodge/WorldEvent/ThingsHit.hs 37;" f -thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 120;" f -thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 45;" f +thingHit src/Dodge/WorldEvent/ThingsHit.hs 113;" f +thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 101;" f +thingsHit src/Dodge/WorldEvent/ThingsHit.hs 39;" f +thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 122;" f +thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 47;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f throwItem src/Dodge/Creature/Action.hs 190;" f tileTexCoords src/Tile.hs 11;" f @@ -5201,7 +5201,7 @@ titleOptionsMenu src/Dodge/Menu.hs 106;" f titleOptionsNoWrite src/Dodge/Menu.hs 109;" f tlDoEffect src/Dodge/Terminal.hs 102;" f tlSetStatus src/Dodge/Terminal.hs 99;" f -tmUpdate src/Dodge/Update.hs 505;" f +tmUpdate src/Dodge/Update.hs 503;" f toBinary src/Dodge/Inventory/SelectionList.hs 141;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5347,47 +5347,47 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f updateBounds src/Dodge/Update/Camera.hs 258;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 584;" f +updateBullets src/Dodge/Update.hs 582;" f updateCamera src/Dodge/Update/Camera.hs 30;" f updateCloseObjects src/Dodge/Inventory.hs 115;" f -updateCloud src/Dodge/Update.hs 817;" f -updateClouds src/Dodge/Update.hs 688;" f +updateCloud src/Dodge/Update.hs 815;" f +updateClouds src/Dodge/Update.hs 686;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f updateCreature src/Dodge/Creature/Update.hs 32;" f updateCreature' src/Dodge/Creature/Update.hs 41;" f -updateCreatureGroups src/Dodge/Update.hs 556;" f -updateCreatureSoundPositions src/Dodge/Update.hs 535;" f -updateDebris src/Dodge/Update.hs 591;" f +updateCreatureGroups src/Dodge/Update.hs 554;" f +updateCreatureSoundPositions src/Dodge/Update.hs 533;" f +updateDebris src/Dodge/Update.hs 589;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 98;" f -updateDelayedEvents src/Dodge/Update.hs 909;" f +updateDelayedEvents src/Dodge/Update.hs 907;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 577;" f +updateDistortions src/Dodge/Update.hs 575;" f updateDoor src/Dodge/DrWdWd.hs 20;" f -updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 72;" f -updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 69;" f -updateDoors src/Dodge/Update.hs 328;" f -updateDust src/Dodge/Update.hs 841;" f -updateDusts src/Dodge/Update.hs 691;" f -updateEdge src/Dodge/Path.hs 57;" f +updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 74;" f +updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f +updateDoors src/Dodge/Update.hs 326;" f +updateDust src/Dodge/Update.hs 839;" f +updateDusts src/Dodge/Update.hs 689;" f +updateEdge src/Dodge/Path.hs 58;" f updateEdgeWallObs src/Dodge/Update.hs 317;" f updateEdgesWall src/Dodge/Update.hs 314;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 679;" f +updateEnergyBalls src/Dodge/Update.hs 677;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 676;" f +updateFlames src/Dodge/Update.hs 674;" f updateFloatingCamera src/Dodge/Update/Camera.hs 35;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 363;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 359;" f -updateGusts src/Dodge/Update.hs 800;" f -updateIMl src/Dodge/Update.hs 550;" f -updateIMl' src/Dodge/Update.hs 553;" f +updateGusts src/Dodge/Update.hs 798;" f +updateIMl src/Dodge/Update.hs 548;" f +updateIMl' src/Dodge/Update.hs 551;" f updateInGameCamera src/Dodge/Update/Camera.hs 79;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 428;" f updateInt2Map src/Dodge/Zoning/Base.hs 98;" f @@ -5400,33 +5400,33 @@ updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 405;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 11;" f -updateLasers src/Dodge/Update.hs 454;" f +updateLasers src/Dodge/Update.hs 452;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 441;" f updateMachine src/Dodge/Machine/Update.hs 24;" f -updateMagnets src/Dodge/Update.hs 332;" f +updateMagnets src/Dodge/Update.hs 330;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f -updateMouseContext src/Dodge/Update.hs 345;" f -updateMouseContextGame src/Dodge/Update.hs 350;" f +updateMouseContext src/Dodge/Update.hs 343;" f +updateMouseContextGame src/Dodge/Update.hs 348;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 96;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 86;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 166;" f -updateObjCatMaybes src/Dodge/Update.hs 568;" f -updateObjMapMaybe src/Dodge/Update.hs 561;" f -updatePastWorlds src/Dodge/Update.hs 443;" f +updateObjCatMaybes src/Dodge/Update.hs 566;" f +updateObjMapMaybe src/Dodge/Update.hs 559;" f +updatePastWorlds src/Dodge/Update.hs 441;" f updatePreload src/Preload/Update.hs 20;" f updateProjectile src/Dodge/Projectile/Update.hs 25;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 146;" f -updatePulseBall src/Dodge/Update.hs 468;" f -updatePulseLaser src/Dodge/Update.hs 631;" f -updatePulseLasers src/Dodge/Update.hs 463;" f +updatePulseBall src/Dodge/Update.hs 466;" f +updatePulseLaser src/Dodge/Update.hs 629;" f +updatePulseLasers src/Dodge/Update.hs 461;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 580;" f +updateRadarBlips src/Dodge/Update.hs 578;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 682;" f +updateRadarSweeps src/Dodge/Update.hs 680;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 112;" f updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f @@ -5436,16 +5436,16 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 258;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 237;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 673;" f +updateShockwaves src/Dodge/Update.hs 671;" f updateSingleNodes src/TreeHelp.hs 98;" f updateSound src/Sound.hs 72;" f updateSounds src/Sound.hs 67;" f updateSpark src/Dodge/Spark.hs 19;" f -updateSparks src/Dodge/Update.hs 685;" f -updateTeslaArc src/Dodge/Update.hs 601;" f -updateTeslaArcs src/Dodge/Update.hs 598;" f +updateSparks src/Dodge/Update.hs 683;" f +updateTeslaArc src/Dodge/Update.hs 599;" f +updateTeslaArcs src/Dodge/Update.hs 596;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 670;" f +updateTractorBeams src/Dodge/Update.hs 668;" f updateTurret src/Dodge/Machine/Update.hs 49;" f updateUniverse src/Dodge/Update.hs 77;" f updateUniverseFirst src/Dodge/Update.hs 88;" f @@ -5456,7 +5456,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 23;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f updateWheelEvent src/Dodge/Update/Scroll.hs 25;" f -updateWheelEvents src/Dodge/Update.hs 433;" f +updateWheelEvents src/Dodge/Update.hs 431;" f updateWorldEventFlag src/Dodge/Update.hs 123;" f updateWorldEventFlags src/Dodge/Update.hs 111;" f upperBody src/Dodge/Creature/Picture.hs 120;" f @@ -5521,18 +5521,18 @@ viewClipBounds src/Dodge/Debug/Picture.hs 336;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f violet src/Color.hs 21;" f -visibleWalls src/Dodge/Base/Collide.hs 217;" f +visibleWalls src/Dodge/Base/Collide.hs 218;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f walkNozzle src/Dodge/HeldUse.hs 809;" f -walkableNodeNear src/Dodge/Path.hs 87;" f +walkableNodeNear src/Dodge/Path.hs 88;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f -wallToSurface src/Dodge/Base/Collide.hs 182;" f +wallToSurface src/Dodge/Base/Collide.hs 183;" f wallsFromRooms src/Dodge/Layout.hs 137;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f warmupSound src/Dodge/HeldUse.hs 1376;" f @@ -5587,9 +5587,9 @@ wlOpaqueDraw src/Dodge/Render/Walls.hs 45;" f wlSeeThroughDraw src/Dodge/Render/Walls.hs 48;" f wlZoneSize src/Dodge/Zoning/Wall.hs 52;" f wlsFromIXs src/Dodge/Zoning/Wall.hs 35;" f -wlsHit src/Dodge/WorldEvent/ThingsHit.hs 134;" f -wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 144;" f -wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 137;" f +wlsHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f +wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 146;" f +wlsHitUnsorted src/Dodge/WorldEvent/ThingsHit.hs 139;" 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 @@ -5632,11 +5632,11 @@ zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 136;" f zipCountDown src/Dodge/Room/Procedural.hs 121;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f -zoneClouds src/Dodge/Update.hs 495;" f +zoneClouds src/Dodge/Update.hs 493;" f zoneCreature src/Dodge/Zoning/Creature.hs 55;" f -zoneCreatures src/Dodge/Update.hs 531;" f +zoneCreatures src/Dodge/Update.hs 529;" f zoneDust src/Dodge/Zoning/Cloud.hs 48;" f -zoneDusts src/Dodge/Update.hs 499;" f +zoneDusts src/Dodge/Update.hs 497;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f zoneMonoid src/Dodge/Zoning/Base.hs 89;" f