diff --git a/src/Dodge/DrWdWd.hs b/src/Dodge/DrWdWd.hs index 6807caf0d..76ca0de4f 100644 --- a/src/Dodge/DrWdWd.hs +++ b/src/Dodge/DrWdWd.hs @@ -1,5 +1,9 @@ -module Dodge.DrWdWd (doDrWdWd) where +module Dodge.DrWdWd (doDrWdWd,doDrWdWd') where +import ListHelp +import Dodge.Zoning.Pathing +import Dodge.Zoning.Base +import Geometry.Data import Control.Lens import Data.Maybe import Dodge.Block.Debris @@ -8,6 +12,7 @@ import Dodge.ShiftPoint import Dodge.SoundLogic import Dodge.Wall.Move import Dodge.WorldBool +import qualified Data.Set as S doDrWdWd :: DrWdWd -> Door -> World -> World doDrWdWd dww = case dww of @@ -15,6 +20,12 @@ doDrWdWd dww = case dww of DrWdMakeDoorDebris -> makeDoorDebris DoorLerp -> doorLerp +doDrWdWd' :: Door -> World -> (S.Set Int2, World) +doDrWdWd' dr w = case dr ^. drMech of + DrWdId -> (mempty,w) + DrWdMakeDoorDebris -> (mempty, makeDoorDebris dr w) + DoorLerp -> doorLerp' dr w + doorLerp :: Door -> World -> World doorLerp dr w = fromMaybe w $ do x <- newlerp @@ -38,4 +49,29 @@ doorLerp dr w = fromMaybe w $ do | _drPushedBy dr == PushesItself = soundContinue (WallSound drid) (fst $ p2a x) slideDoorS (Just 1) | otherwise = id --- dpos = snd $ _drPos dr + +doorLerp' :: Door -> World -> (S.Set Int2,World) +doorLerp' dr w = fromMaybe (mempty,w) $ do + x <- newlerp + let ps = (dr ^. drFootPrint) & each . each %~ shiftPointBy (p2a x) + is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps + return $ (is, + f x + & playSound x + & cWorld . lWorld . doors . ix drid . drLerp .~ x) + where + f = ifoldl' (flip . moveWallID) w . wlposs + p2a = lerpP2A (dr ^. drZeroPos) (dr ^. drOnePos) + wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (p2a x) + clerp = dr ^. drLerp + newlerp + | toOpen && clerp < 1 = Just . min 1 $ clerp + speed + | 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 = + soundContinue (WallSound drid) (fst $ p2a x) slideDoorS (Just 1) + | otherwise = id diff --git a/src/Dodge/Path.hs b/src/Dodge/Path.hs index 85634bdbf..081dcea2c 100644 --- a/src/Dodge/Path.hs +++ b/src/Dodge/Path.hs @@ -40,6 +40,14 @@ import Linear getNodePos :: Int -> World -> Maybe Point2 getNodePos i w = w ^? cWorld . incNode . ix i +getEdgesCrossingPoly :: [Point2] -> World -> [(Int,Int)] +getEdgesCrossingPoly ps w = filter tcross $ zonesExtract (w ^. incEdgeZoning) + $ Set.toList $ foldMap (uncurry $ zoneOfSegSet peZoneSize) $ pairs + where + pairs = loopPairs ps + tcross (i,j) = any (isJust . uncurry (intersectSegSeg (f i) (f j))) pairs + f i = w ^?! cWorld . incNode . ix i + getEdgesCrossing :: Point2 -> Point2 -> World -> [(Int,Int)] getEdgesCrossing s e w = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZoning s e w where diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 2739c3bca..cfcf2c2a5 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -3,6 +3,7 @@ {- Rooms that contain two doors and a switch alternating both. -} module Dodge.Room.Airlock where +import Dodge.Room.Path import Control.Lens import Control.Monad import Data.Maybe @@ -164,12 +165,9 @@ airlockZ = do defaultRoom { _rmPolys = [rectNSWE 120 0 0 180] - , _rmLinks = muout [(V2 0 30, pi / 2)] ++ muin [(V2 180 30, 1.5 * pi)] - , _rmPath = mempty - , -- [(V2 0 40,V2 40 0) - -- ,(V2 40 0,V2 0 40) - -- ] - _rmPmnts = + , _rmLinks = lnks + , _rmPath = linksGridToPath' lnks $ loopPairs $ rectNSWE 100 40 40 140 + , _rmPmnts = [ pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ \btid -> airlockDoubleDoor @@ -191,6 +189,7 @@ airlockZ = do [rectNSWE 120 0 0 180] } where + lnks = muout [(V2 0 30, pi / 2)] ++ muin [(V2 180 30, 1.5 * pi)] col = dim $ dim $ bright red l1 = 61 l2 = 61 diff --git a/src/Dodge/Room/Path.hs b/src/Dodge/Room/Path.hs index 48a7e52ab..db9da27a4 100644 --- a/src/Dodge/Room/Path.hs +++ b/src/Dodge/Room/Path.hs @@ -4,6 +4,7 @@ module Dodge.Room.Path ( makeGrid, createPathGrid, gridPoints'', + linksGridToPath', ) where import Control.Lens @@ -33,11 +34,18 @@ createPathGrid rm = rm & rmPath .~ linksGridToPath (_rmLinks rm) filterGrid <*> L.premap sndV2 L.minimum <*> L.premap sndV2 L.maximum +-- assumes subpth is symmetric linksGridToPath :: [RoomLink] -> [(Point2, Point2)] -> S.Set (Point2, Point2) linksGridToPath lnks subpth = S.fromList subpth <> foldMap (linkClosest . (^. rlPos)) lnks where linkClosest p = doublePairSet (p, minimumBy (compare `on` dist p) $ map fst subpth) +linksGridToPath' :: Foldable f => [RoomLink] -> f (Point2, Point2) -> S.Set (Point2, Point2) +linksGridToPath' lnks subpth' = subpth <> foldMap (linkClosest . (^. rlPos)) lnks + where + subpth = foldMap doublePairSet subpth' + linkClosest p = doublePairSet (p, minimumBy (compare `on` dist p) $ S.map fst subpth) + testCrossWalls :: [(Point2, Point2)] -> (Point2, Point2) -> Bool testCrossWalls wls (a, b) = not $ any (isJust . uncurry (intersectSegSeg a b)) wls diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 4ace14a33..fd48768af 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -44,6 +44,11 @@ tutAnoTree = do [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor , return $ tToBTree "cor" $ return $ cleatOnward corridor +-- , return $ tToBTree "cor" $ return $ cleatOnward corridor +-- , return $ tToBTree "cor" $ return $ cleatOnward corridor +-- , return $ tToBTree "cor" $ return $ cleatOnward (twinSlowDoorRoom 80 200 40) +-- , return $ tToBTree "cor" $ return $ cleatOnward corridor +-- , return $ tToBTree "cor" $ return $ cleatOnward corridor , return $ tToBTree "cor" $ return $ cleatOnward corridor , tToBTree "asdf" . return . cleatOnward <$> airlockZ --, return . tToBTree "asdf" . return . cleatOnward $ airlockCrystal diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 790529fa0..f67c9566f 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -3,6 +3,11 @@ module Dodge.Update (updateUniverse) where +import Dodge.Zoning.Pathing +import Dodge.Debug.Picture +import Dodge.Zoning.Base +import Dodge.Path +import Data.Foldable import qualified Data.Set as S import Color import Control.Applicative @@ -247,7 +252,8 @@ functionalUpdate = . over uvWorld updateCreatureSoundPositions . colCrsWalls . over uvWorld simpleCrSprings - . over uvWorld (updateIMl' (_doors . _lWorld . _cWorld) updateDoor) +-- . over uvWorld (updateIMl' (_doors . _lWorld . _cWorld) updateDoor) + . over uvWorld updateDoors . over uvWorld doWorldEvents . over uvWorld updateDelayedEvents . over @@ -307,6 +313,27 @@ updateAimPos u = u & uvWorld . cWorld . lWorld . lAimPos .~ mouseWorldPos (u ^. uvWorld . input) (u ^. uvWorld . wCam) +updateEdgesWall :: S.Set (Int,Int) -> World -> World +updateEdgesWall = flip $ foldl' updateEdgeWallObs + +updateEdgeWallObs :: World -> (Int,Int) -> World +updateEdgeWallObs w (i,j) = fromMaybe w $ do + s <- getNodePos i w + e <- getNodePos i w + let wls = snd <$> wlsHitUnsorted s e w + return $ w & cWorld . incGraph %~ updateEdge (f wls) (i,j) + where + f wls = at DoorObstacle ?~ () +-- | all _wlWalkable wls = (at BlockObstacle .~ Nothing) . (at DoorObstacle .~ Nothing) +-- | otherwise = at DoorObstacle ?~ () + +updateDoors :: World -> World +updateDoors w = let (is,w') = foldrM doDrWdWd' w (w ^. cWorld . lWorld . doors) + in updateEdgesWall (zonesExtract (w ^. incEdgeZoning & each . each %~ S.fromList) is) w' + & cWorld . lWorld . flares <>~ foldMap (drawZoneCol green peZoneSize) is +--updateDoors w = uncurry updateEdgesWall . +-- over _1 (zonesExtract (w ^. incEdgeZoning & each . each %~ S.fromList)) $ foldrM doDrWdWd' w (w ^. cWorld . lWorld . doors) + updateDoor :: Door -> World -> World updateDoor dr = doDrWdWd (_drMech dr) dr @@ -534,6 +561,14 @@ updateIMl fim fup w = alaf Endo foldMap (dbArg fup) (fim w) w updateIMl' :: (World -> IM.IntMap a) -> (a -> World -> World) -> World -> World updateIMl' fim fup w = alaf Endo foldMap fup (fim w) w +updateAccum :: (Foldable f, Monoid m) + => (World -> f a) + -> (a -> World -> (m, World)) + -> World + -> (m, World) +updateAccum fim fup w = foldrM fup w (fim w) + --alaf Endo foldMap fup (fim w) w + updateCreatureGroups :: World -> World updateCreatureGroups w = w & cWorld . lWorld . creatureGroups diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index ed8c0c3ad..515b08003 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -13,6 +13,7 @@ module Dodge.WorldEvent.ThingsHit ( wlsHitRadial, crHit, crWlPbHit, + wlsHitUnsorted, ) where import Linear @@ -131,11 +132,13 @@ thingsHitExceptCr (Just cid) sp ep = filter t . thingsHit sp ep t = (Just cid /=) . (^? _2 . _Left . crID) wlsHit :: Point2 -> Point2 -> World -> [(Point2, Wall)] -wlsHit sp ep +wlsHit sp ep = sortOn (dist sp . fst) . wlsHitUnsorted sp ep + +wlsHitUnsorted :: Point2 -> Point2 -> World -> [(Point2, Wall)] +wlsHitUnsorted sp ep | sp == ep = const mempty | otherwise = - sortOn (dist sp . fst) - . overlapSegWalls sp ep + overlapSegWalls sp ep . wlsNearSeg sp ep wlsHitRadial :: Point2 -> Float -> World -> [(Point2, Wall)] diff --git a/src/Dodge/Zoning/Base.hs b/src/Dodge/Zoning/Base.hs index 0edbf2178..de92e4aad 100644 --- a/src/Dodge/Zoning/Base.hs +++ b/src/Dodge/Zoning/Base.hs @@ -4,18 +4,20 @@ module Dodge.Zoning.Base , zoneOfPoint , zonesExtract , zoneOfSeg + , zoneOfSegSet , zoneOfRect , zoneMonoid , deZoneIX , zoneOfCirc , zonesAroundPoint , xIntercepts - , yIntercepts' + , yIntercepts , updateInt2Map ) where import Control.Lens import qualified Data.IntSet as IS +import qualified Data.Set as S --import Data.Maybe import Geometry import Geometry.Zone @@ -46,21 +48,26 @@ zoneOfPoint = fmap . divTo zoneOfSeg :: Float -> Point2 -> Point2 -> [Int2] {-# INLINE zoneOfSeg #-} -zoneOfSeg s sp ep = map (zoneOfPoint s) (sp : xIntercepts s sp ep ++ yIntercepts' s sp ep) +zoneOfSeg s sp ep = map (zoneOfPoint s) (sp : xIntercepts s sp ep ++ yIntercepts s sp ep) +--zoneOfSeg s sp ep = map (zoneOfPoint s) (sp : xIntercepts s sp ep ) + +zoneOfSegSet :: Float -> Point2 -> Point2 -> S.Set Int2 +{-# INLINE zoneOfSegSet #-} +zoneOfSegSet s sp = S.fromList . zoneOfSeg s sp -- | zoneExtract (V2 x y) == fromMaybe mempty . (^? ix x . ix y) zoneExtract :: Monoid m => Int2 -> IM.IntMap (IM.IntMap m) -> m {-# INLINE zoneExtract #-} zoneExtract (V2 x y) = foldOf (ix x . ix y) -zonesExtract :: Monoid m => IM.IntMap (IM.IntMap m) -> [Int2] -> m +zonesExtract :: (Foldable f,Monoid m) => IM.IntMap (IM.IntMap m) -> f Int2 -> m {-# INLINE zonesExtract #-} zonesExtract = foldMap . flip zoneExtract xIntercepts :: Float -> Point2 -> Point2 -> [Point2] {-# INLINE xIntercepts #-} xIntercepts s (V2 sx sy) (V2 ex ey) - | xdx == 0 = [] + | divTo s sx == divTo s ex = [] | otherwise = zipWith V2 [halfstep + sx', halfstep + sx' + xdx * s .. ex] ([sy', sy' + ydx * s .. ey] ++ repeat ey) where halfstep @@ -73,9 +80,9 @@ xIntercepts s (V2 sx sy) (V2 ex ey) | xdx < 0 = sx - modTo s sx | otherwise = s + sx - modTo s sx -yIntercepts' :: Float -> Point2 -> Point2 -> [Point2] -{-# INLINE yIntercepts' #-} -yIntercepts' s sp ep = map f $ xIntercepts s (f sp) (f ep) +yIntercepts :: Float -> Point2 -> Point2 -> [Point2] +{-# INLINE yIntercepts #-} +yIntercepts s sp ep = map f $ xIntercepts s (f sp) (f ep) where f (V2 x y) = V2 y x diff --git a/tags b/tags index b54231679..c6f43f185 100644 --- a/tags +++ b/tags @@ -131,7 +131,7 @@ BlSh src/Dodge/Data/Block.hs 42;" t BlShConst src/Dodge/Data/Block.hs 44;" C BlShMempty src/Dodge/Data/Block.hs 43;" C Block src/Dodge/Data/Block.hs 20;" t -BlockDebris src/Dodge/Data/Prop.hs 31;" C +BlockDebris src/Dodge/Data/Prop.hs 29;" C BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 30;" C BlockDraw src/Dodge/Data/Block.hs 35;" t BlockDrawBlSh src/Dodge/Data/Block.hs 37;" C @@ -315,9 +315,9 @@ DamageHitSound src/Dodge/Data/SoundOrigin.hs 40;" 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 -Debris src/Dodge/Data/Prop.hs 33;" t -DebrisChunk src/Dodge/Data/Prop.hs 33;" C -DebrisType src/Dodge/Data/Prop.hs 27;" t +Debris src/Dodge/Data/Prop.hs 31;" t +DebrisChunk src/Dodge/Data/Prop.hs 31;" C +DebrisType src/Dodge/Data/Prop.hs 24;" t DebugBool src/Dodge/Data/Config.hs 66;" t DebugItem src/Dodge/Data/Universe.hs 57;" t DebugLayer src/Picture/Data.hs 25;" C @@ -493,7 +493,7 @@ GenericFaction src/Dodge/Data/Creature/State.hs 13;" C GeoObjShads src/Dodge/Data/Config.hs 102;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C -Gib src/Dodge/Data/Prop.hs 28;" C +Gib src/Dodge/Data/Prop.hs 25;" C Glass src/Dodge/Data/Material.hs 9;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 33;" C Goal src/Dodge/Data/ActionPlan.hs 149;" t @@ -1007,26 +1007,24 @@ Projectile src/Dodge/Data/Projectile.hs 15;" t ProjectileParams src/Dodge/Data/Item/Use.hs 51;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 36;" C ProjectileType src/Dodge/Data/Projectile.hs 30;" t -Prop src/Dodge/Data/Prop.hs 16;" t -PropDoubleLampCover src/Dodge/Data/Prop.hs 48;" C -PropDraw src/Dodge/Data/Prop.hs 43;" t -PropDrawFlatTranslate src/Dodge/Data/Prop.hs 47;" C -PropDrawMovingShape src/Dodge/Data/Prop.hs 46;" C -PropDrawMovingShapeCol src/Dodge/Data/Prop.hs 45;" C -PropDrawSPic src/Dodge/Data/Prop.hs 44;" C -PropDrawToggle src/Dodge/Data/Prop.hs 51;" C -PropLampCover src/Dodge/Data/Prop.hs 50;" C -PropRotate src/Dodge/Data/Prop.hs 58;" C -PropSetToggleAnd src/Dodge/Data/Prop.hs 59;" C -PropUpdate src/Dodge/Data/Prop.hs 55;" t -PropUpdateAnd src/Dodge/Data/Prop.hs 57;" C -PropUpdateId src/Dodge/Data/Prop.hs 56;" C -PropUpdateIf src/Dodge/Data/Prop.hs 64;" C -PropUpdateLS src/Dodge/Data/Prop.hs 61;" C -PropUpdatePosition src/Dodge/Data/Prop.hs 62;" C -PropUpdateWhen src/Dodge/Data/Prop.hs 63;" C -PropUpdates src/Dodge/Data/Prop.hs 60;" C -PropVerticalLampCover src/Dodge/Data/Prop.hs 49;" C +Prop src/Dodge/Data/Prop.hs 15;" t +PropDoubleLampCover src/Dodge/Data/Prop.hs 46;" C +PropDraw src/Dodge/Data/Prop.hs 41;" t +PropDrawFlatTranslate src/Dodge/Data/Prop.hs 45;" C +PropDrawSPic src/Dodge/Data/Prop.hs 42;" C +PropDrawToggle src/Dodge/Data/Prop.hs 49;" C +PropLampCover src/Dodge/Data/Prop.hs 48;" C +PropRotate src/Dodge/Data/Prop.hs 57;" C +PropSetToggleAnd src/Dodge/Data/Prop.hs 58;" C +PropUpdate src/Dodge/Data/Prop.hs 54;" t +PropUpdateAnd src/Dodge/Data/Prop.hs 56;" C +PropUpdateId src/Dodge/Data/Prop.hs 55;" C +PropUpdateIf src/Dodge/Data/Prop.hs 63;" C +PropUpdateLS src/Dodge/Data/Prop.hs 60;" C +PropUpdatePosition src/Dodge/Data/Prop.hs 61;" C +PropUpdateWhen src/Dodge/Data/Prop.hs 62;" C +PropUpdates src/Dodge/Data/Prop.hs 59;" C +PropVerticalLampCover src/Dodge/Data/Prop.hs 47;" C ProxSensor src/Dodge/Data/Machine/Sensor.hs 25;" C ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 34;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 25;" t @@ -1185,7 +1183,7 @@ ShaderTexture src/Shader/Data.hs 94;" t ShadowFidelity src/Shape/Data.hs 19;" t ShadowRendering src/Dodge/Data/Config.hs 101;" t Shape src/Shape/Data.hs 48;" t -ShapeProp src/Dodge/Data/Prop.hs 17;" C +ShapeProp src/Dodge/Data/Prop.hs 15;" C ShapeType src/Shape/Data.hs 11;" t Shattering src/Dodge/Data/Damage.hs 20;" C Shell src/Dodge/Data/Projectile.hs 15;" C @@ -1532,7 +1530,7 @@ _avatarMaterial src/Dodge/Data/Creature/Misc.hs 61;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 60;" f _barrelShader src/Data/Preload/Render.hs 23;" f _barrelType src/Dodge/Data/Creature/Misc.hs 71;" f -_bdColor src/Dodge/Data/Prop.hs 31;" f +_bdColor src/Dodge/Data/Prop.hs 29;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f _bdMinX src/Dodge/Data/Bounds.hs 11;" f @@ -1705,11 +1703,11 @@ _cwgRoomClipping src/Dodge/Data/CWorld.hs 40;" f _cwgSeed src/Dodge/Data/CWorld.hs 41;" f _cwgWorldBounds src/Dodge/Data/CWorld.hs 38;" f _cylinderSize src/Shape/Data.hs 14;" f -_dbPos src/Dodge/Data/Prop.hs 34;" f -_dbRot src/Dodge/Data/Prop.hs 37;" f -_dbSpin src/Dodge/Data/Prop.hs 38;" f -_dbType src/Dodge/Data/Prop.hs 35;" f -_dbVel src/Dodge/Data/Prop.hs 36;" f +_dbPos src/Dodge/Data/Prop.hs 32;" f +_dbRot src/Dodge/Data/Prop.hs 35;" f +_dbSpin src/Dodge/Data/Prop.hs 36;" f +_dbType src/Dodge/Data/Prop.hs 33;" f +_dbVel src/Dodge/Data/Prop.hs 34;" f _debris src/Dodge/Data/LWorld.hs 99;" f _debugFunction src/Dodge/Data/Universe.hs 59;" f _debugMessage src/Dodge/Data/Universe.hs 58;" f @@ -1832,8 +1830,8 @@ _getSoundID src/Sound/Data.hs 30;" f _gfConstant src/Dodge/Data/GenFloat.hs 9;" f _gfMax src/Dodge/Data/GenFloat.hs 10;" f _gfMin src/Dodge/Data/GenFloat.hs 10;" f -_gibColor src/Dodge/Data/Prop.hs 29;" f -_gibSize src/Dodge/Data/Prop.hs 28;" f +_gibColor src/Dodge/Data/Prop.hs 27;" f +_gibSize src/Dodge/Data/Prop.hs 26;" f _gnHitEffect src/Dodge/Data/Projectile.hs 31;" f _grBound src/Dodge/GameRoom.hs 15;" f _grDir src/Dodge/GameRoom.hs 17;" f @@ -2097,13 +2095,13 @@ _playStatus src/Sound/Data.hs 15;" f _playingSounds src/Dodge/Data/World.hs 40;" f _posture src/Dodge/Data/Creature/Stance.hs 17;" f _prBounds src/Dodge/Tree/Shift.hs 29;" f -_prDraw src/Dodge/Data/Prop.hs 19;" f -_prID src/Dodge/Data/Prop.hs 21;" f -_prPos src/Dodge/Data/Prop.hs 18;" f +_prDraw src/Dodge/Data/Prop.hs 17;" f +_prID src/Dodge/Data/Prop.hs 19;" f +_prPos src/Dodge/Data/Prop.hs 16;" f _prRooms src/Dodge/Tree/Shift.hs 30;" f -_prRot src/Dodge/Data/Prop.hs 22;" f -_prToggle src/Dodge/Data/Prop.hs 23;" f -_prUpdate src/Dodge/Data/Prop.hs 20;" f +_prRot src/Dodge/Data/Prop.hs 20;" f +_prToggle src/Dodge/Data/Prop.hs 21;" f +_prUpdate src/Dodge/Data/Prop.hs 18;" f _preloadData src/Dodge/Data/Universe.hs 31;" f _pressedKeys src/Dodge/Data/Input.hs 37;" f _projectiles src/Dodge/Data/LWorld.hs 100;" f @@ -2529,20 +2527,20 @@ 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 419;" f +advanceScrollAmount src/Dodge/Update.hs 441;" 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 aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 181;" f -airlock src/Dodge/Room/Airlock.hs 23;" f -airlock0 src/Dodge/Room/Airlock.hs 71;" f -airlock90 src/Dodge/Room/Airlock.hs 205;" f -airlockCrystal src/Dodge/Room/Airlock.hs 250;" f -airlockDoor src/Dodge/Room/Airlock.hs 98;" f -airlockDoubleDoor src/Dodge/Room/Airlock.hs 101;" f -airlockSimple src/Dodge/Room/Airlock.hs 117;" f -airlockZ src/Dodge/Room/Airlock.hs 156;" f +airlock src/Dodge/Room/Airlock.hs 24;" f +airlock0 src/Dodge/Room/Airlock.hs 72;" f +airlock90 src/Dodge/Room/Airlock.hs 204;" f +airlockCrystal src/Dodge/Room/Airlock.hs 249;" f +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 alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f @@ -2740,7 +2738,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 17;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f -cChasm src/Dodge/Room/Tutorial.hs 121;" f +cChasm src/Dodge/Room/Tutorial.hs 126;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2775,20 +2773,20 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 188;" 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 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 768;" f +checkEndGame src/Dodge/Update.hs 798;" 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 318;" f +checkTermDist src/Dodge/Update.hs 340;" 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 @@ -2811,7 +2809,7 @@ 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 841;" f +clClSpringVel src/Dodge/Update.hs 871;" 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 @@ -2838,7 +2836,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 793;" f +cloudEffect src/Dodge/Update.hs 823;" 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 @@ -2917,7 +2915,7 @@ 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 870;" f +crCrSpring src/Dodge/Update.hs 900;" 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 @@ -2925,7 +2923,7 @@ 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 113;" f +crHit src/Dodge/WorldEvent/ThingsHit.hs 114;" 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 @@ -2948,7 +2946,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 867;" f +crSpring src/Dodge/Update.hs 897;" 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 @@ -2956,7 +2954,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 51;" f +crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 52;" 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 @@ -2966,7 +2964,7 @@ createGas src/Dodge/Gas.hs 10;" f createHeadLamp src/Dodge/Euse.hs 58;" f createItemYou src/Dodge/Inventory/Add.hs 61;" f createLightMap src/Render.hs 26;" f -createPathGrid src/Dodge/Room/Path.hs 20;" f +createPathGrid src/Dodge/Room/Path.hs 21;" f createProjectile src/Dodge/HeldUse.hs 1276;" f createProjectileR src/Dodge/HeldUse.hs 1225;" f createShell src/Dodge/Projectile/Create.hs 21;" f @@ -2985,9 +2983,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 61;" f -crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 148;" f -crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 72;" 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 crsItmsUnused src/Dodge/Room/Containing.hs 45;" f crsNearCirc src/Dodge/Zoning/Creature.hs 36;" f crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f @@ -3040,7 +3038,7 @@ darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f dbArg src/Dodge/Base.hs 165;" f dbArgChain src/Dodge/Base.hs 170;" f dbwMuzzles src/Dodge/HeldUse.hs 322;" f -deZoneIX src/Dodge/Zoning/Base.hs 89;" f +deZoneIX src/Dodge/Zoning/Base.hs 95;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f deadEndRoom src/Dodge/Room/Room.hs 246;" f deadFeet src/Dodge/Creature/Picture.hs 68;" f @@ -3062,7 +3060,7 @@ debugWritableValues src/Dodge/Debug.hs 84;" f decodeSensorType src/Dodge/Terminal.hs 72;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f -decontamRoom src/Dodge/Room/Airlock.hs 28;" f +decontamRoom src/Dodge/Room/Airlock.hs 29;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f decreaseAwareness src/Dodge/Creature/Perception.hs 118;" f @@ -3162,7 +3160,7 @@ 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 483;" f +displayTerminalLineString src/Dodge/Update.hs 505;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f @@ -3198,7 +3196,8 @@ doDebugTestF12 src/Dodge/Update/Input/DebugTest.hs 84;" f doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f -doDrWdWd src/Dodge/DrWdWd.hs 12;" f +doDrWdWd src/Dodge/DrWdWd.hs 17;" f +doDrWdWd' src/Dodge/DrWdWd.hs 23;" f doDrag src/Dodge/Update/Input/InGame.hs 127;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f @@ -3209,7 +3208,7 @@ doHeldUseEffect src/Dodge/HeldUse.hs 351;" f doInPlacements src/Dodge/Layout.hs 87;" f doIndividualPlacements src/Dodge/Layout.hs 101;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f -doItemTimeScroll src/Dodge/Update.hs 193;" f +doItemTimeScroll src/Dodge/Update.hs 196;" f doLoop src/Loop.hs 60;" f doMagnetBuBu src/Dodge/Bullet.hs 35;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -3230,18 +3229,19 @@ doTestDrawing src/Dodge/Render.hs 41;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 128;" f -doTimeScroll src/Dodge/Update.hs 198;" f +doTimeScroll src/Dodge/Update.hs 201;" f doTmWdWd src/Dodge/WorldEffect.hs 89;" f doWallRotate src/Dodge/Update/Camera.hs 220;" f 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 428;" f +doWorldEvents src/Dodge/Update.hs 450;" 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 -doorLerp src/Dodge/DrWdWd.hs 18;" f +doorLerp src/Dodge/DrWdWd.hs 29;" f +doorLerp' src/Dodge/DrWdWd.hs 53;" f dotV src/Geometry/Vector.hs 76;" f dotV3 src/Geometry/Vector3D.hs 119;" f doubleCorridorBarrels src/Dodge/Room/Room.hs 276;" f @@ -3332,7 +3332,6 @@ drawMenuScreen src/Dodge/Render/MenuScreen.hs 14;" f drawMouseCursor src/Dodge/Render/Picture.hs 85;" f drawMouseOver src/Dodge/Render/HUD.hs 109;" f drawMousePosition src/Dodge/Debug/Picture.hs 373;" f -drawMovingShapeCol src/Dodge/Prop/Draw.hs 87;" f drawOptions src/Dodge/Render/MenuScreen.hs 22;" f drawPathBetween src/Dodge/Debug/Picture.hs 201;" f drawPathEdge src/Dodge/Debug/Picture.hs 266;" f @@ -3409,7 +3408,7 @@ 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 852;" f +dustSpringVel src/Dodge/Update.hs 882;" f ebColor src/Dodge/EnergyBall.hs 77;" f ebDamage src/Dodge/EnergyBall.hs 85;" f ebEffect src/Dodge/EnergyBall.hs 45;" f @@ -3526,7 +3525,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f -foldMTRS src/Dodge/Room/Tutorial.hs 66;" f +foldMTRS src/Dodge/Room/Tutorial.hs 71;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3551,7 +3550,7 @@ fromV3 src/Geometry/Data.hs 63;" f frontArmour src/Dodge/Item/Equipment.hs 38;" f fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 53;" f -functionalUpdate src/Dodge/Update.hs 241;" f +functionalUpdate src/Dodge/Update.hs 244;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f @@ -3587,11 +3586,12 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 337;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 324;" f -getDebugMouseOver src/Dodge/Update.hs 376;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 342;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 329;" f +getDebugMouseOver src/Dodge/Update.hs 398;" f getDistortions src/Dodge/Render.hs 435;" f -getEdgesCrossing src/Dodge/Path.hs 43;" f +getEdgesCrossing src/Dodge/Path.hs 51;" f +getEdgesCrossingPoly src/Dodge/Path.hs 43;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f @@ -3600,12 +3600,12 @@ 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 388;" f +getMenuMouseContext src/Dodge/Update.hs 410;" f getNodePos src/Dodge/Path.hs 40;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 320;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 325;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3834,7 +3834,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 399;" f +isOverTerminalScreen src/Dodge/Update.hs 421;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 32;" f @@ -3919,7 +3919,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f -lChasm src/Dodge/Room/Tutorial.hs 130;" f +lChasm src/Dodge/Room/Tutorial.hs 135;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 89;" f @@ -3979,7 +3979,8 @@ lineOutputTerminal src/Dodge/Room/Warning.hs 66;" f lineSplit src/Justify.hs 26;" f lineThick src/Picture/Base.hs 234;" f lineUp src/Dodge/Creature/Boid.hs 150;" f -linksGridToPath src/Dodge/Room/Path.hs 36;" f +linksGridToPath src/Dodge/Room/Path.hs 38;" f +linksGridToPath' src/Dodge/Room/Path.hs 43;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f listConfig src/Dodge/Menu.hs 239;" f listControls src/Dodge/Menu.hs 251;" f @@ -4079,13 +4080,13 @@ makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFragBullets src/Dodge/Bullet.hs 131;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeGrid src/Grid.hs 46;" f -makeIntInterval src/Dodge/Zoning/Base.hs 35;" f +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 73;" f -makePathBetweenPs src/Dodge/Path.hs 94;" f -makePathUsing src/Dodge/Path.hs 60;" f +makePathBetween src/Dodge/Path.hs 81;" f +makePathBetweenPs src/Dodge/Path.hs 102;" f +makePathUsing src/Dodge/Path.hs 68;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f @@ -4120,7 +4121,7 @@ maybeClearPaths src/Dodge/Block.hs 69;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 37;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f -maybeOpenConsole src/Dodge/Update.hs 126;" f +maybeOpenConsole src/Dodge/Update.hs 129;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f @@ -4170,7 +4171,7 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 151;" f -midChasm src/Dodge/Room/Tutorial.hs 151;" f +midChasm src/Dodge/Room/Tutorial.hs 156;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4234,7 +4235,7 @@ 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 784;" f +mvGust src/Dodge/Update.hs 814;" f mvLS src/Dodge/Placement/PlaceSpot.hs 275;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4284,13 +4285,13 @@ 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 123;" f +obstructPathsCrossing src/Dodge/Path.hs 131;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f onXY src/Geometry/Vector3D.hs 130;" f oneH src/Dodge/Creature/Test.hs 96;" f -openConsole src/Dodge/Update.hs 131;" f +openConsole src/Dodge/Update.hs 134;" f optionMenu src/Dodge/Menu.hs 112;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 52;" f optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 43;" f @@ -4330,9 +4331,9 @@ overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f -pairInPolys src/Dodge/Room/Path.hs 45;" f +pairInPolys src/Dodge/Room/Path.hs 53;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 68;" f -pairsToIncGraph src/Dodge/Path.hs 101;" f +pairsToIncGraph src/Dodge/Path.hs 109;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f @@ -4340,15 +4341,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 76;" f +pathEdgeObstructed src/Dodge/Path.hs 84;" 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 182;" f -pbFlicker src/Dodge/Update.hs 469;" f -pbsHit src/Dodge/WorldEvent/ThingsHit.hs 89;" f +pauseTime src/Dodge/Update.hs 185;" f +pbFlicker src/Dodge/Update.hs 491;" f +pbsHit src/Dodge/WorldEvent/ThingsHit.hs 90;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 210;" f @@ -4418,7 +4419,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 98;" f +pointTowardsImpulse src/Dodge/Path.hs 106;" 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 @@ -4463,8 +4464,8 @@ pokeWall src/Shader/Poke.hs 78;" f pokeWallsWindows src/Shader/Poke.hs 50;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f -polyChasm src/Dodge/Room/Tutorial.hs 172;" f -polyChasmC src/Dodge/Room/Tutorial.hs 181;" f +polyChasm src/Dodge/Room/Tutorial.hs 177;" f +polyChasmC src/Dodge/Room/Tutorial.hs 186;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4602,7 +4603,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 643;" f +randWallReflect src/Dodge/Update.hs 673;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 268;" f @@ -4652,7 +4653,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 237;" f +removeLights src/Dodge/Room/Tutorial.hs 242;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 58;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4798,8 +4799,8 @@ scrollAugInvSel src/Dodge/Inventory.hs 191;" f scrollAugNextInSection src/Dodge/Inventory.hs 204;" f scrollRBOption src/Dodge/Update/Scroll.hs 202;" f scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f -scrollTimeBack src/Dodge/Update.hs 208;" f -scrollTimeForward src/Dodge/Update.hs 225;" f +scrollTimeBack src/Dodge/Update.hs 211;" f +scrollTimeForward src/Dodge/Update.hs 228;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 570;" f seagullBarkTransformedS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 654;" f seagullChatter1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 666;" f @@ -4831,14 +4832,14 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 346;" f +sensorTut src/Dodge/Room/Tutorial.hs 351;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f setChannelPos src/Sound.hs 150;" f -setClickWorldPos src/Dodge/Update.hs 101;" f +setClickWorldPos src/Dodge/Update.hs 104;" f setClip src/Dodge/Debug.hs 159;" f setClusterID src/Dodge/Combine/Graph.hs 114;" f setDepth src/Picture/Base.hs 128;" f @@ -4853,12 +4854,12 @@ 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 502;" f +setOldPos src/Dodge/Update.hs 524;" f setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f -setRoomInt src/Dodge/Room/Tutorial.hs 73;" f +setRoomInt src/Dodge/Room/Tutorial.hs 78;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -4868,7 +4869,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f setToggle src/Dodge/Prop/Update.hs 44;" f -setTreeInts src/Dodge/Room/Tutorial.hs 80;" f +setTreeInts src/Dodge/Room/Tutorial.hs 85;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 440;" f @@ -4964,7 +4965,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 861;" f +simpleCrSprings src/Dodge/Update.hs 891;" f simpleTermMessage src/Dodge/Terminal.hs 164;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f @@ -4993,11 +4994,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 88;" f +smallSnailInt2 src/Dodge/Path.hs 96;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f -snailAround src/Dodge/Path.hs 85;" f -snapToGrid src/Dodge/Path.hs 146;" f +snailAround src/Dodge/Path.hs 93;" f +snapToGrid src/Dodge/Path.hs 154;" f sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5156,7 +5157,7 @@ terminalWheelEvent src/Dodge/Update/Scroll.hs 131;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 409;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f -testCrossWalls src/Dodge/Room/Path.hs 41;" f +testCrossWalls src/Dodge/Room/Path.hs 49;" f testEvent src/Dodge/Event/Test.hs 9;" f testInventory src/Dodge/Creature.hs 292;" f testStringInit src/Dodge/TestString.hs 33;" f @@ -5181,17 +5182,17 @@ 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 110;" f -thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 98;" f -thingsHit src/Dodge/WorldEvent/ThingsHit.hs 36;" f -thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 119;" f -thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 44;" 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 threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f throwItem src/Dodge/Creature/Action.hs 190;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 196;" f tilesToLine src/Shader/AuxAddition.hs 66;" f -timeFlowUpdate src/Dodge/Update.hs 169;" f +timeFlowUpdate src/Dodge/Update.hs 172;" f timeScroller src/Dodge/Item/Held/Utility.hs 42;" f timeStopper src/Dodge/Item/Held/Utility.hs 39;" f tinMag src/Dodge/Item/Ammo.hs 28;" f @@ -5206,7 +5207,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 486;" f +tmUpdate src/Dodge/Update.hs 508;" f toBinary src/Dodge/Inventory/SelectionList.hs 141;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5306,12 +5307,12 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 37;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 41;" f -tutDrop src/Dodge/Room/Tutorial.hs 85;" f -tutHub src/Dodge/Room/Tutorial.hs 244;" f -tutLight src/Dodge/Room/Tutorial.hs 209;" f -tutRezBox src/Dodge/Room/Tutorial.hs 357;" f +tutDrop src/Dodge/Room/Tutorial.hs 90;" f +tutHub src/Dodge/Room/Tutorial.hs 249;" f +tutLight src/Dodge/Room/Tutorial.hs 214;" f +tutRezBox src/Dodge/Room/Tutorial.hs 362;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 381;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 386;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 81;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f @@ -5342,7 +5343,8 @@ unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 137;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 119;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 196;" f -updateAimPos src/Dodge/Update.hs 305;" f +updateAccum src/Dodge/Update.hs 559;" f +updateAimPos src/Dodge/Update.hs 309;" f updateAllNodes src/TreeHelp.hs 86;" f updateArc src/Dodge/Tesla.hs 44;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 478;" f @@ -5352,47 +5354,50 @@ 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 565;" f +updateBullets src/Dodge/Update.hs 595;" f updateCamera src/Dodge/Update/Camera.hs 30;" f updateCloseObjects src/Dodge/Inventory.hs 115;" f -updateCloud src/Dodge/Update.hs 798;" f -updateClouds src/Dodge/Update.hs 669;" f +updateCloud src/Dodge/Update.hs 828;" f +updateClouds src/Dodge/Update.hs 699;" 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 537;" f -updateCreatureSoundPositions src/Dodge/Update.hs 516;" f -updateDebris src/Dodge/Update.hs 572;" f +updateCreatureGroups src/Dodge/Update.hs 567;" f +updateCreatureSoundPositions src/Dodge/Update.hs 538;" f +updateDebris src/Dodge/Update.hs 602;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f -updateDebugMessageOffset src/Dodge/Update.hs 95;" f -updateDelayedEvents src/Dodge/Update.hs 890;" f +updateDebugMessageOffset src/Dodge/Update.hs 98;" f +updateDelayedEvents src/Dodge/Update.hs 920;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 558;" f -updateDoor src/Dodge/Update.hs 310;" f +updateDistortions src/Dodge/Update.hs 588;" f +updateDoor src/Dodge/Update.hs 332;" f updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 74;" f updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f -updateDust src/Dodge/Update.hs 822;" f -updateDusts src/Dodge/Update.hs 672;" f -updateEdge src/Dodge/Path.hs 49;" f +updateDoors src/Dodge/Update.hs 328;" f +updateDust src/Dodge/Update.hs 852;" f +updateDusts src/Dodge/Update.hs 702;" f +updateEdge src/Dodge/Path.hs 57;" 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 660;" f +updateEnergyBalls src/Dodge/Update.hs 690;" 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 657;" f +updateFlames src/Dodge/Update.hs 687;" 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 781;" f -updateIMl src/Dodge/Update.hs 531;" f -updateIMl' src/Dodge/Update.hs 534;" f +updateGusts src/Dodge/Update.hs 811;" f +updateIMl src/Dodge/Update.hs 553;" f +updateIMl' src/Dodge/Update.hs 556;" f updateInGameCamera src/Dodge/Update/Camera.hs 79;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 428;" f -updateInt2Map src/Dodge/Zoning/Base.hs 92;" f +updateInt2Map src/Dodge/Zoning/Base.hs 98;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f updateItemTargeting src/Dodge/Creature/State.hs 260;" f updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 396;" f @@ -5402,33 +5407,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 435;" f +updateLasers src/Dodge/Update.hs 457;" 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 313;" f +updateMagnets src/Dodge/Update.hs 335;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f -updateMouseContext src/Dodge/Update.hs 326;" f -updateMouseContextGame src/Dodge/Update.hs 331;" f +updateMouseContext src/Dodge/Update.hs 348;" f +updateMouseContextGame src/Dodge/Update.hs 353;" 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 549;" f -updateObjMapMaybe src/Dodge/Update.hs 542;" f -updatePastWorlds src/Dodge/Update.hs 424;" f +updateObjCatMaybes src/Dodge/Update.hs 579;" f +updateObjMapMaybe src/Dodge/Update.hs 572;" f +updatePastWorlds src/Dodge/Update.hs 446;" 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 449;" f -updatePulseLaser src/Dodge/Update.hs 612;" f -updatePulseLasers src/Dodge/Update.hs 444;" f +updatePulseBall src/Dodge/Update.hs 471;" f +updatePulseLaser src/Dodge/Update.hs 642;" f +updatePulseLasers src/Dodge/Update.hs 466;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 561;" f +updateRadarBlips src/Dodge/Update.hs 591;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 663;" f +updateRadarSweeps src/Dodge/Update.hs 693;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 112;" f updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f @@ -5438,29 +5443,29 @@ 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 654;" f +updateShockwaves src/Dodge/Update.hs 684;" 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 666;" f -updateTeslaArc src/Dodge/Update.hs 582;" f -updateTeslaArcs src/Dodge/Update.hs 579;" f +updateSparks src/Dodge/Update.hs 696;" f +updateTeslaArc src/Dodge/Update.hs 612;" f +updateTeslaArcs src/Dodge/Update.hs 609;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 651;" f +updateTractorBeams src/Dodge/Update.hs 681;" f updateTurret src/Dodge/Machine/Update.hs 49;" f -updateUniverse src/Dodge/Update.hs 74;" f -updateUniverseFirst src/Dodge/Update.hs 85;" f -updateUniverseLast src/Dodge/Update.hs 136;" f -updateUniverseMid src/Dodge/Update.hs 156;" f +updateUniverse src/Dodge/Update.hs 77;" f +updateUniverseFirst src/Dodge/Update.hs 88;" f +updateUniverseLast src/Dodge/Update.hs 139;" f +updateUniverseMid src/Dodge/Update.hs 159;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 45;" f 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 414;" f -updateWorldEventFlag src/Dodge/Update.hs 120;" f -updateWorldEventFlags src/Dodge/Update.hs 108;" f +updateWheelEvents src/Dodge/Update.hs 436;" f +updateWorldEventFlag src/Dodge/Update.hs 123;" f +updateWorldEventFlags src/Dodge/Update.hs 111;" f upperBody src/Dodge/Creature/Picture.hs 120;" f upperBox src/Shape.hs 156;" f upperBoxHalf src/Shape.hs 222;" f @@ -5529,7 +5534,7 @@ 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 79;" f +walkableNodeNear src/Dodge/Path.hs 87;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f @@ -5589,8 +5594,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 133;" f -wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 141;" 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 wlsNearCirc src/Dodge/Zoning/Wall.hs 49;" f wlsNearPoint src/Dodge/Zoning/Wall.hs 39;" f wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f @@ -5607,11 +5613,11 @@ writeConfig src/Dodge/Menu.hs 182;" f writeSaveSlot src/Dodge/Save.hs 36;" f xCylinder src/Shape.hs 137;" f xCylinderST src/Shape.hs 134;" f -xIntercepts src/Dodge/Zoning/Base.hs 60;" f +xIntercepts src/Dodge/Zoning/Base.hs 66;" f xV2 src/Geometry/Vector.hs 201;" f xyV3 src/Geometry/Vector.hs 213;" f xyzV4 src/Geometry/Vector.hs 209;" f -yIntercepts' src/Dodge/Zoning/Base.hs 76;" f +yIntercepts' src/Dodge/Zoning/Base.hs 82;" f yV2 src/Geometry/Vector.hs 205;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 13;" f @@ -5624,7 +5630,7 @@ yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 139;" f +zChasm src/Dodge/Room/Tutorial.hs 144;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f @@ -5633,29 +5639,30 @@ 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 476;" f +zoneClouds src/Dodge/Update.hs 498;" f zoneCreature src/Dodge/Zoning/Creature.hs 55;" f -zoneCreatures src/Dodge/Update.hs 512;" f +zoneCreatures src/Dodge/Update.hs 534;" f zoneDust src/Dodge/Zoning/Cloud.hs 48;" f -zoneDusts src/Dodge/Update.hs 480;" f -zoneExtract src/Dodge/Zoning/Base.hs 52;" f +zoneDusts src/Dodge/Update.hs 502;" f +zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f -zoneMonoid src/Dodge/Zoning/Base.hs 83;" f -zoneOfCirc src/Dodge/Zoning/Base.hs 24;" f +zoneMonoid src/Dodge/Zoning/Base.hs 89;" f +zoneOfCirc src/Dodge/Zoning/Base.hs 26;" f zoneOfCl src/Dodge/Zoning/Cloud.hs 24;" f zoneOfCr src/Dodge/Zoning/Creature.hs 45;" f zoneOfDs src/Dodge/Zoning/Cloud.hs 45;" f zoneOfIncPe src/Dodge/Zoning/Pathing.hs 52;" f zoneOfPn src/Dodge/Zoning/Pathing.hs 29;" f -zoneOfPoint src/Dodge/Zoning/Base.hs 44;" f -zoneOfRect src/Dodge/Zoning/Base.hs 28;" f -zoneOfSeg src/Dodge/Zoning/Base.hs 47;" f +zoneOfPoint src/Dodge/Zoning/Base.hs 46;" f +zoneOfRect src/Dodge/Zoning/Base.hs 30;" f +zoneOfSeg src/Dodge/Zoning/Base.hs 49;" f +zoneOfSegSet src/Dodge/Zoning/Base.hs 53;" f zoneOfSight src/Dodge/Zoning/World.hs 9;" f zoneOfWl src/Dodge/Zoning/Wall.hs 55;" f zonePn src/Dodge/Zoning/Pathing.hs 32;" f zoneWall src/Dodge/Zoning/Wall.hs 65;" f -zonesAroundPoint src/Dodge/Zoning/Base.hs 96;" f -zonesExtract src/Dodge/Zoning/Base.hs 56;" f +zonesAroundPoint src/Dodge/Zoning/Base.hs 102;" f +zonesExtract src/Dodge/Zoning/Base.hs 62;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 71;" f zoomInLongGun src/Dodge/Update/Scroll.hs 105;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 113;" f