From aa82519e054e15bd95be5a62d97bd43275f50a2e Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 27 Oct 2025 00:03:57 +0000 Subject: [PATCH] Fix bugs in zones near segments --- appDodge/Main.hs | 1 + src/Dodge/Data/Config.hs | 2 + src/Dodge/Data/Universe.hs | 2 + src/Dodge/Debug.hs | 90 +++++++++++ src/Dodge/Debug/Picture.hs | 29 ++-- src/Dodge/Path.hs | 9 +- src/Dodge/TestString.hs | 5 +- src/Dodge/Zoning/Base.hs | 23 ++- src/Geometry/Zone.hs | 8 + tags | 322 +++++++++++++++++++------------------ 10 files changed, 319 insertions(+), 172 deletions(-) diff --git a/appDodge/Main.hs b/appDodge/Main.hs index 92ec2485d..b64124b82 100644 --- a/appDodge/Main.hs +++ b/appDodge/Main.hs @@ -99,6 +99,7 @@ firstWorldLoad theConfig = do , _uvDebugFloat2 = 0 , _uvDebugV2_1 = 0 , _uvDebugV2_2 = 1 + , _uvDebugPut = mempty , _uvDebugMessageOffset = 0 , _uvSoundQueue = mempty , _uvDebugPathShowType = PathBetweenDebugV2s diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index 1900356cd..477f8c159 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -66,6 +66,8 @@ windowYFloat = fromIntegral . _windowY data DebugBool = Show_ms_frame | Display_debug + | Debug_get + | Debug_put | Show_sound | Noclip | Cr_status diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index 549fdd52f..784f648bf 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -11,6 +11,7 @@ module Dodge.Data.Universe ( module Loop.Data, ) where +import qualified Data.IntMap.Strict as IM import Geometry.Data import Sound.Data import qualified Data.Map.Strict as M @@ -44,6 +45,7 @@ data Universe = Universe , _uvDebugFloat2 :: Float , _uvDebugV2_1 :: Point2 , _uvDebugV2_2 :: Point2 + , _uvDebugPut :: IM.IntMap String , _uvDebugPathShowType :: PathShowType , _uvDebugMessageOffset :: Int , _uvSoundQueue :: [SoundID] -- sounds without a position, to be played once diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index 2ed3d8277..e9096088d 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -2,6 +2,13 @@ module Dodge.Debug (debugEvents, drawDebug) where +import Geometry.Data +import Dodge.WorldBool +import Dodge.Zoning.Pathing +import Dodge.Door.DoorLerp +import Dodge.ShiftPoint +import Dodge.Path +import Dodge.Zoning.Base import Control.Lens import Control.Monad import qualified Data.IntMap.Strict as IM @@ -67,6 +74,87 @@ debugItem = \case Show_path_between -> Just . return . debugShowPath Show_writable_values -> debugWritableValues Show_mouse_click_pos -> debugMouseClickPos + Debug_get -> doDebugGet + Debug_put -> debugPutItems + +debugGet :: Universe -> [String] +debugGet u = [maybe "DebugGetFail" show $ debugGet1 u + , maybe "DebugGetFail" show $ debugGet2 u + , maybe "DebugGetFail" show $ debugGet3 u + ] + +--debugGet1 :: Show a => Universe -> Maybe a +debugGet1 u = do + dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2 + let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x) + ps = wlposs (dr ^. drLerp) + is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps + return $ S.toList is + +debugGet2 u = do + let w = u ^. uvWorld + dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2 + let clerp = dr ^. drLerp + speed = dr ^?! drUpdate . drLerpSpeed + toOpen = doWdBl (_drTrigger dr) w + newlerp + | toOpen && clerp < 1 = Just . min 1 $ clerp + speed + | clerp > 0 && not toOpen = Just . max 0 $ clerp - speed + | otherwise = Nothing + x <- newlerp + let wlposs y = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr y) + ps = wlposs x + is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps + return $ show is + + +debugGet3 u = do + dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2 + let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x) + ps = wlposs (dr ^. drLerp) + is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps + return $ show is + +debugPutItems :: Universe -> Maybe [DebugItem] +debugPutItems u = Just $ f <$> [0..debugPutN] + where + f i = DebugItem (g i) (doDebugPut i) -- (uvIOEffects %~ doDebugPut i) + g i = fromMaybe "Not assigned" $ u ^? uvDebugPut . ix i + +debugPutN :: Int +debugPutN = 5 + +doDebugPut :: Int -> Universe -> Universe +doDebugPut i u + | u ^. uvWorld . input . mouseButtons . at SDL.ButtonLeft == Just 0 = u + & uvIOEffects %~ \ f u' -> do + s <- getClipboard + f $ u & uvDebugPut . at i ?~ s + | otherwise = u + +debugPutDraw :: IM.IntMap String -> Universe -> Picture +debugPutDraw _ u = drawthedoor u <> drawthezones u + +drawthezones u = fold $ do + is <- readMaybe =<< u ^? uvDebugPut . ix 0 + let f :: [Int2] -> [Int2] + f = id + return $ foldMap (drawZoneCol yellow peZoneSize) $ f is + +drawthedoor u = fold $ do + dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2 + let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x) + ps = wlposs (dr ^. drLerp) + return $ setLayer DebugLayer $ color blue $ foldMap g ps + where + g (x,y) = line [x,y] + +doDebugGet :: Universe -> Maybe [DebugItem] +doDebugGet u = + Just $ f <$> debugGet u + where + f s = DebugItem s (setClip s) + debugShowPath :: Universe -> DebugItem debugShowPath u = @@ -172,6 +260,8 @@ setClip s u = fromMaybe u $ do drawDebug :: Universe -> DebugBool -> Picture drawDebug u = \case + Debug_put -> debugPutDraw (u ^. uvDebugPut) u + Debug_get -> mempty Collision_test -> drawCollisionTest $ _uvWorld u Circ_collision_test -> drawCircCollisionTest $ _uvWorld u Show_walls_near_point_cursor -> drawWallsNearCursor $ _uvWorld u diff --git a/src/Dodge/Debug/Picture.hs b/src/Dodge/Debug/Picture.hs index ab3b46dab..db7f0876b 100644 --- a/src/Dodge/Debug/Picture.hs +++ b/src/Dodge/Debug/Picture.hs @@ -1,7 +1,7 @@ {-# OPTIONS -Wno-incomplete-uni-patterns #-} module Dodge.Debug.Picture where -import Linear (_xy) +import Linear (_xy, (*^)) import Control.Lens import Data.Foldable --import qualified Data.Graph.Inductive as FGL @@ -147,11 +147,12 @@ drawWallsNearSegment w = concat $ do -- # OPTIONS -Wno-incomplete-uni-patterns #-} drawZoneCol :: Color -> Float -> V2 Int -> Picture -drawZoneCol col s (V2 x y) = setLayer DebugLayer . color col $ thickLine 2 (p : ps ++ [p]) +drawZoneCol col = drawZone (\ps -> color col $ thickLine 2 (ps ++ [head ps])) + +drawZone :: ([Point2] -> Picture) -> Float -> V2 Int -> Picture +drawZone f s (V2 x y) = setLayer DebugLayer $ f ps where - (p : ps) = - zipWith (+.+) (square 1) $ - map ((s *.*) . (each %~ fromIntegral)) [V2 x y, V2 (x + 1) y, V2 (x + 1) (y + 1), V2 x (y + 1)] + ps = rectNSWE s 0 0 s <&> (+ s *^ (V2 x y & each %~ fromIntegral)) --showEnabledDebugs :: Config -> Picture --{-# INLINE showEnabledDebugs #-} @@ -310,11 +311,21 @@ drawZoneCirc w = concat $ do drawDDATest :: World -> Picture drawDDATest w = foldMap (drawZoneCol orange 50) ps - <> setLayer DebugLayer (color yellow (line [cvf, mwp])) + <> foldMap (drawZone f 50) qs + <> foldMap (drawZone g 50) rs + <> foldMap (drawCrossCol yellow) xs +-- <> foldMap (drawCrossCol cyan) xs' + <> setLayer DebugLayer (color yellow (line [x, y])) where - cvf = w ^. wCam . camViewFrom - mwp = mouseWorldPos (w ^. input) (w ^. wCam) - ps = zoneOfSeg 50 cvf mwp + x = w ^. wCam . camViewFrom + y = mouseWorldPos (w ^. input) (w ^. wCam) + f [a,b,c,d] = color red $ thickLine 2 [a,c] + g [a,b,c,d] = color blue $ thickLine 2 [b,d] + ps = zoneOfSeg 50 x y + qs = map (zoneOfPoint 50) $ xIntercepts' 50 x y + rs = map (zoneOfPoint 50) $ yIntercepts' 50 x y + xs = xIntercepts' 50 x y +-- xs' = xIntercepts' 50 x y drawWallSearchRays :: World -> Picture drawWallSearchRays w = foldMap (f . fst) $ allVisibleWalls w diff --git a/src/Dodge/Path.hs b/src/Dodge/Path.hs index 241c3aea0..dd6f6113d 100644 --- a/src/Dodge/Path.hs +++ b/src/Dodge/Path.hs @@ -1,5 +1,6 @@ --{-# LANGUAGE TupleSections #-} module Dodge.Path ( + nodesNear, pointTowardsImpulse, makePathBetween, makePathBetweenPs, @@ -72,9 +73,11 @@ pathEdgeObstructed pe = any (`Set.member` pe) [WallObstacle WallNotAutoOpen, Cha walkableNodeNear :: World -> Point2 -> Maybe Int {-# INLINE walkableNodeNear #-} -walkableNodeNear w p = fmap fst . find (flip (isWalkable p) w . snd) $ nodesNear - where - nodesNear = zonesExtract (w ^. incNodeZoning) . snailAround $ zoneOfPoint pnZoneSize p +walkableNodeNear w p = fmap fst . find (flip (isWalkable p) w . snd) $ nodesNear w p +-- where +-- nodesNear = zonesExtract (w ^. incNodeZoning) . snailAround $ zoneOfPoint pnZoneSize p + +nodesNear w p = zonesExtract (w ^. incNodeZoning) . snailAround $ zoneOfPoint pnZoneSize p snailAround :: Int2 -> [Int2] snailAround x = (x +) <$> smallSnailInt2 diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 7436ff0de..4ac98d240 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -32,8 +32,9 @@ import Data.Foldable import Data.Monoid testStringInit :: Universe -> [String] -testStringInit u = [show $ foldMap (foldMap (Sum . length . (^. seObstacles))) - $ u ^. uvWorld . cWorld . incGraph] +testStringInit _ = [] +-- [show $ foldMap (foldMap (Sum . length . (^. seObstacles))) +-- $ u ^. uvWorld . cWorld . incGraph] -- foldMap prettyShort $ u ^? uvWorld . cWorld . lWorld . machines . ix 0 . mcType . _McProxSensor --testStringInit u = foldMap prettyShort $ u ^.. uvWorld . cWorld . lWorld . machines diff --git a/src/Dodge/Zoning/Base.hs b/src/Dodge/Zoning/Base.hs index 8da441880..54b7a0352 100644 --- a/src/Dodge/Zoning/Base.hs +++ b/src/Dodge/Zoning/Base.hs @@ -11,6 +11,8 @@ module Dodge.Zoning.Base , zoneOfCirc , zonesAroundPoint , xIntercepts + , xIntercepts' + , yIntercepts' , yIntercepts , updateInt2Map ) where @@ -48,7 +50,8 @@ 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 ++ yIntercepts' s sp ep) zoneOfSegSet :: Float -> Point2 -> Point2 -> S.Set Int2 {-# INLINE zoneOfSegSet #-} @@ -79,12 +82,30 @@ xIntercepts s (V2 sx sy) (V2 ex ey) | xdx < 0 = sx - modTo s sx | otherwise = s + sx - modTo s sx +xIntercepts' :: Float -> Point2 -> Point2 -> [Point2] +{-# INLINE xIntercepts' #-} +xIntercepts' s (V2 sx sy) (V2 ex ey) + | divTo s sx == divTo s ex = [] + | otherwise = g <$> [a, a + s .. b] + where + (a,b) | sx < ex = (ceilingTo s sx,floorTo s ex) + | otherwise = (ceilingTo s ex,floorTo s sx) + g x = V2 (h + x) (f x) + h = 0.5 * s * signum (ex - sx) + f x = sy + (x - sx) * (ey - sy) / (ex - sx) + 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 +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 + -- consider using: at x . non mempty . at y . non mempty <>~ a zoneMonoid :: Semigroup m => Int2 -> m -> IM.IntMap (IM.IntMap m) -> IM.IntMap (IM.IntMap m) {-# INLINE zoneMonoid #-} diff --git a/src/Geometry/Zone.hs b/src/Geometry/Zone.hs index 43d1d1f8e..9b8f2ef43 100644 --- a/src/Geometry/Zone.hs +++ b/src/Geometry/Zone.hs @@ -1,12 +1,20 @@ module Geometry.Zone ( divTo , modTo + , floorTo + , ceilingTo ) where divTo :: Float -> Float -> Int {-# INLINE divTo #-} divTo s = floor . (/s) +floorTo :: Float -> Float -> Float +floorTo s x = s * fromIntegral (divTo s x) + +ceilingTo :: Float -> Float -> Float +ceilingTo s x = s * (1 + fromIntegral (divTo s x)) + modTo :: Float -> Float -> Float {-# INLINE modTo #-} modTo s x = x - s * fromIntegral (divTo s x) diff --git a/tags b/tags index 1da4d9467..9888acf55 100644 --- a/tags +++ b/tags @@ -45,7 +45,7 @@ AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 34;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C -AllRoomClipBoundaries src/Dodge/Data/Config.hs 108;" C +AllRoomClipBoundaries src/Dodge/Data/Config.hs 110;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" C Ambush src/Dodge/Data/ActionPlan.hs 130;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C @@ -135,9 +135,9 @@ BloomLayer src/Picture/Data.hs 23;" C BloomNoZWrite src/Picture/Data.hs 24;" C Blunt src/Dodge/Data/Damage.hs 17;" C Boosting src/Dodge/Data/Creature/Stance.hs 27;" C -BottomMenuOption src/Dodge/Data/Universe.hs 75;" C +BottomMenuOption src/Dodge/Data/Universe.hs 77;" C BounceBullet src/Dodge/Data/Bullet.hs 28;" C -Bound_box_screen src/Dodge/Data/Config.hs 81;" C +Bound_box_screen src/Dodge/Data/Config.hs 83;" C BoundaryCursor src/Dodge/Data/SelectionList.hs 20;" C Bounds src/Dodge/Data/Bounds.hs 10;" t BrigSS src/Dodge/Data/Scenario.hs 102;" C @@ -206,16 +206,16 @@ 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 -Circ_collision_test src/Dodge/Data/Config.hs 85;" C +Circ_collision_test src/Dodge/Data/Config.hs 87;" C Climate src/Dodge/Data/Scenario.hs 32;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 139;" C -Close_shape_culling src/Dodge/Data/Config.hs 79;" C +Close_shape_culling src/Dodge/Data/Config.hs 81;" C Cloud src/Dodge/Data/Cloud.hs 12;" t CloudType src/Dodge/Data/Cloud.hs 20;" t ClusterLink src/Dodge/Data/RoomCluster.hs 13;" t ClusterStatus src/Dodge/Data/RoomCluster.hs 9;" t Cognizant src/Dodge/Data/Creature/Perception.hs 65;" C -Collision_test src/Dodge/Data/Config.hs 84;" C +Collision_test src/Dodge/Data/Config.hs 86;" C Color src/Color/Data.hs 30;" t Color8 src/Color/Data.hs 32;" t ColorFaction src/Dodge/Data/Creature/State.hs 19;" C @@ -270,8 +270,8 @@ CrWdBFSThenReturn src/Dodge/Data/CreatureEffect.hs 27;" C CrWeaponFailSound src/Dodge/Data/SoundOrigin.hs 20;" C CrWeaponSound src/Dodge/Data/SoundOrigin.hs 18;" C CrWlID src/Dodge/Data/CrWlID.hs 10;" t -Cr_awareness src/Dodge/Data/Config.hs 72;" C -Cr_status src/Dodge/Data/Config.hs 71;" C +Cr_awareness src/Dodge/Data/Config.hs 74;" C +Cr_status src/Dodge/Data/Config.hs 73;" C CraftClust src/Dodge/Combine/Graph.hs 18;" C CraftType src/Dodge/Data/Item/Combine.hs 49;" t CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C @@ -284,7 +284,7 @@ Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C Crystal src/Dodge/Data/Material.hs 16;" C -Cull_more_lights src/Dodge/Data/Config.hs 78;" C +Cull_more_lights src/Dodge/Data/Config.hs 80;" C CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cylinder src/Shape/Data.hs 14;" C DETECTOR src/Dodge/Data/Item/Combine.hs 33;" C @@ -309,8 +309,10 @@ Debris src/Dodge/Data/Prop.hs 28;" t DebrisChunk src/Dodge/Data/Prop.hs 28;" 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 +DebugItem src/Dodge/Data/Universe.hs 59;" t DebugLayer src/Picture/Data.hs 25;" C +Debug_get src/Dodge/Data/Config.hs 69;" C +Debug_put src/Dodge/Data/Config.hs 70;" C DecorationShape src/Dodge/Data/GenParams.hs 18;" t DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 20;" C DefaultForceField src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" C @@ -344,7 +346,7 @@ DoorDoNothing src/Dodge/Data/Door.hs 43;" C DoorLerp src/Dodge/Data/Door.hs 43;" C DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C DoorUpdate src/Dodge/Data/Door.hs 43;" t -DoubleRes src/Dodge/Data/Config.hs 98;" C +DoubleRes src/Dodge/Data/Config.hs 100;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t DrawForceField src/Dodge/Data/Wall.hs 37;" C DrawnWall src/Dodge/Data/Wall.hs 33;" C @@ -363,7 +365,7 @@ 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 49;" t -EighthRes src/Dodge/Data/Config.hs 98;" C +EighthRes src/Dodge/Data/Config.hs 100;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C ElectricSpark src/Dodge/Data/Spark.hs 19;" C @@ -394,7 +396,7 @@ Explosive src/Dodge/Data/Damage.hs 25;" C ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 13;" C -ExtraMenuOption src/Dodge/Data/Universe.hs 74;" t +ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t Eyes src/Dodge/Data/Creature/Perception.hs 39;" C FBO src/Shader/Data.hs 57;" t FLAMESHIELD src/Dodge/Data/Item/Combine.hs 121;" C @@ -451,7 +453,7 @@ ForceField src/Dodge/Data/Material.hs 19;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 12;" t FromEdge src/Dodge/Data/Room.hs 49;" C -FullRes src/Dodge/Data/Config.hs 98;" C +FullRes src/Dodge/Data/Config.hs 100;" C FullShadowFidelity src/Shape/Data.hs 19;" C FullSize src/Dodge/Data/Item/Params.hs 26;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C @@ -468,7 +470,7 @@ GStuckCreature src/Dodge/Data/Projectile.hs 48;" C GStuckWall src/Dodge/Data/Projectile.hs 49;" C GYROSCOPE src/Dodge/Data/Item/Combine.hs 96;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 18;" C -GameOverOptions src/Dodge/Data/Universe.hs 70;" C +GameOverOptions src/Dodge/Data/Universe.hs 72;" C GameRoom src/Dodge/GameRoom.hs 12;" t GasAmmo src/Dodge/Data/AmmoType.hs 11;" C GasCloud src/Dodge/Data/Cloud.hs 24;" C @@ -479,7 +481,7 @@ GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 23;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C -GeoObjShads src/Dodge/Data/Config.hs 102;" C +GeoObjShads src/Dodge/Data/Config.hs 104;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 25;" C @@ -509,9 +511,9 @@ HOMINGMODULE src/Dodge/Data/Item/Combine.hs 100;" C HOSE src/Dodge/Data/Item/Combine.hs 54;" C HP src/Dodge/Data/Creature.hs 63;" C HUD src/Dodge/Data/HUD.hs 29;" t -HalfRes src/Dodge/Data/Config.hs 98;" C +HalfRes src/Dodge/Data/Config.hs 100;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C -HardQuit src/Dodge/Data/Universe.hs 68;" C +HardQuit src/Dodge/Data/Universe.hs 70;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 14;" C @@ -566,13 +568,13 @@ InanimateAI src/Dodge/Data/Creature/Misc.hs 39;" C IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 11;" C InheritFloor src/Data/Tile.hs 12;" C Input src/Dodge/Data/Input.hs 33;" t -InputScreen src/Dodge/Data/Universe.hs 90;" C -Inspect_wall src/Dodge/Data/Config.hs 92;" C +InputScreen src/Dodge/Data/Universe.hs 92;" C +Inspect_wall src/Dodge/Data/Config.hs 94;" C Institution src/Dodge/Data/Scenario.hs 42;" t Int2 src/Geometry/Data.hs 21;" t -IntID src/Dodge/Data/Universe.hs 108;" t +IntID src/Dodge/Data/Universe.hs 110;" t Intention src/Dodge/Data/Creature.hs 68;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 108;" C +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 110;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t InvInt src/Dodge/Data/Item/Location.hs 16;" t @@ -665,7 +667,7 @@ ListDisplayParams src/Dodge/Data/SelectionList.hs 13;" t LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 150;" C LivingComplex src/Dodge/Data/Scenario.hs 68;" C LoadingBaySS src/Dodge/Data/Scenario.hs 93;" C -LoadingScreen src/Dodge/Data/Universe.hs 71;" C +LoadingScreen src/Dodge/Data/Universe.hs 73;" C LocDT src/Dodge/Data/DoubleTree.hs 99;" C LocLDT src/Dodge/Data/DoubleTree.hs 59;" C LocationDT src/Dodge/Data/DoubleTree.hs 99;" t @@ -687,9 +689,9 @@ MICROCHIP src/Dodge/Data/Item/Combine.hs 71;" C MICROPHONE src/Dodge/Data/Item/Combine.hs 82;" C MINIDISPLAY src/Dodge/Data/Item/Combine.hs 76;" C MINIGUNX src/Dodge/Data/Item/Combine.hs 150;" C -MODBlockedString src/Dodge/Data/Universe.hs 94;" C -MODString src/Dodge/Data/Universe.hs 93;" C -MODStringOption src/Dodge/Data/Universe.hs 95;" C +MODBlockedString src/Dodge/Data/Universe.hs 96;" C +MODString src/Dodge/Data/Universe.hs 95;" C +MODStringOption src/Dodge/Data/Universe.hs 97;" C MOTOR src/Dodge/Data/Item/Combine.hs 63;" C MPO src/Dodge/Base/Collide.hs 96;" t MTRS src/Dodge/Data/MTRS.hs 6;" t @@ -738,8 +740,8 @@ Medium src/Shape/Data.hs 25;" C Melee src/Dodge/Data/ActionPlan.hs 40;" C MeleeStrike src/Dodge/Data/ActionPlan.hs 144;" C Memory src/Dodge/Data/Creature.hs 75;" t -MenuOption src/Dodge/Data/Universe.hs 97;" t -MenuOptionDisplay src/Dodge/Data/Universe.hs 92;" t +MenuOption src/Dodge/Data/Universe.hs 99;" t +MenuOptionDisplay src/Dodge/Data/Universe.hs 94;" t MetaBranch src/Dodge/Data/MetaTree.hs 18;" t MetaNode src/Dodge/Data/MetaTree.hs 14;" t MetaTree src/Dodge/Data/MetaTree.hs 11;" t @@ -761,7 +763,7 @@ MouseGameRotate src/Dodge/Data/Input.hs 29;" C MouseInGame src/Dodge/Data/Input.hs 16;" C MouseMenuClick src/Dodge/Data/Input.hs 17;" C MouseMenuCursor src/Dodge/Data/Input.hs 18;" C -Mouse_position src/Dodge/Data/Config.hs 73;" C +Mouse_position src/Dodge/Data/Config.hs 75;" C Move src/Dodge/Data/ActionPlan.hs 26;" C MoveEquipment src/Dodge/Data/RightButtonOptions.hs 20;" C MoveForward src/Dodge/Data/ActionPlan.hs 27;" C @@ -807,13 +809,13 @@ NeverUsable src/Dodge/Data/UseCondition.hs 8;" C NewInt src/NewInt.hs 16;" t NewIntMap src/NewInt.hs 22;" t NewIntSet src/NewInt.hs 19;" t -NewSideEffect src/Dodge/Data/Universe.hs 63;" C +NewSideEffect src/Dodge/Data/Universe.hs 65;" C NoAction src/Dodge/Data/ActionPlan.hs 116;" C NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 41;" C NoConcurrentEffect src/Loop/Data.hs 7;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 9;" C -NoExtraMenuOption src/Dodge/Data/Universe.hs 77;" C +NoExtraMenuOption src/Dodge/Data/Universe.hs 79;" C NoFaction src/Dodge/Data/Creature/State.hs 18;" C NoFlare src/Dodge/Data/Muzzle.hs 29;" C NoHoming src/Dodge/Data/Projectile.hs 40;" C @@ -821,25 +823,25 @@ NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 32;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 105;" C +NoLighting src/Dodge/Data/Config.hs 107;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C NoMvType src/Dodge/Data/Creature/Misc.hs 27;" C -NoObjShads src/Dodge/Data/Config.hs 103;" C +NoObjShads src/Dodge/Data/Config.hs 105;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 108;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 110;" C NoSF src/Dodge/Data/ComposedItem.hs 29;" C NoShadowFidelity src/Shape/Data.hs 20;" C -NoShadows src/Dodge/Data/Config.hs 104;" C +NoShadows src/Dodge/Data/Config.hs 106;" C NoSubInventory src/Dodge/Data/HUD.hs 15;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 21;" C -Noclip src/Dodge/Data/Config.hs 70;" C +Noclip src/Dodge/Data/Config.hs 72;" C NodeMTree src/Dodge/Data/MetaTree.hs 16;" C NodeTree src/Dodge/Data/MetaTree.hs 15;" C NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 82;" C NonInf src/Dodge/Data/CardinalPoint.hs 36;" C -NormalOptions src/Dodge/Data/Universe.hs 70;" C +NormalOptions src/Dodge/Data/Universe.hs 72;" C NormalSpark src/Dodge/Data/Spark.hs 19;" C NormalTimeFlow src/Dodge/Data/World.hs 63;" C North src/Dodge/Data/CardinalPoint.hs 6;" C @@ -912,8 +914,8 @@ OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C Opacity src/Dodge/Data/Wall.hs 30;" t Opaque src/Dodge/Data/Wall.hs 34;" 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 +OptionScreen src/Dodge/Data/Universe.hs 82;" C +OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t OutLink src/Dodge/Data/Room.hs 44;" C OutsideTerminal src/Dodge/Data/Input.hs 28;" C OutwardShockwave src/Dodge/Data/Shockwave.hs 12;" C @@ -947,12 +949,12 @@ PSRoomRand src/Dodge/Data/GenWorld.hs 99;" C PSType src/Dodge/Data/GenWorld.hs 31;" t PUMP src/Dodge/Data/Item/Combine.hs 62;" C PaletteColor src/Color/Data.hs 11;" t -PathBetweenDebugV2s src/Dodge/Data/Universe.hs 54;" C -PathBetweenLeftRightClick src/Dodge/Data/Universe.hs 53;" C +PathBetweenDebugV2s src/Dodge/Data/Universe.hs 56;" C +PathBetweenLeftRightClick src/Dodge/Data/Universe.hs 55;" C PathFromEdge src/Dodge/Data/Room.hs 77;" t -PathShowType src/Dodge/Data/Universe.hs 52;" t +PathShowType src/Dodge/Data/Universe.hs 54;" t PathTo src/Dodge/Data/ActionPlan.hs 70;" C -Pathing src/Dodge/Data/Config.hs 76;" C +Pathing src/Dodge/Data/Config.hs 78;" C Patrol src/Dodge/Data/ActionPlan.hs 132;" C PausedTimeFlow src/Dodge/Data/World.hs 79;" C Payload src/Dodge/Data/Payload.hs 9;" t @@ -1040,7 +1042,7 @@ PutTrigger src/Dodge/Data/GenWorld.hs 47;" C PutWall src/Dodge/Data/GenWorld.hs 54;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 58;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 98;" C +QuarterRes src/Dodge/Data/Config.hs 100;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C RAM src/Dodge/Data/Item/Combine.hs 73;" C RED src/Color/Data.hs 12;" C @@ -1075,13 +1077,13 @@ Reload src/Dodge/Data/ActionPlan.hs 142;" C RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 27;" C RemoteScreenSF src/Dodge/Data/ComposedItem.hs 25;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 33;" C -Remove_LOS src/Dodge/Data/Config.hs 77;" C +Remove_LOS src/Dodge/Data/Config.hs 79;" C RenderData src/Data/Preload/Render.hs 13;" t ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 29;" C RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 37;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 36;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 35;" C -ResFactor src/Dodge/Data/Config.hs 98;" t +ResFactor src/Dodge/Data/Config.hs 100;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 61;" C @@ -1099,7 +1101,7 @@ RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C Room src/Dodge/Data/GenWorld.hs 120;" t -RoomClipping src/Dodge/Data/Config.hs 108;" t +RoomClipping src/Dodge/Data/Config.hs 110;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t RoomLinkType src/Dodge/Data/Room.hs 43;" t @@ -1111,7 +1113,7 @@ RoomProperties src/Dodge/Layout/Generate.hs 13;" t RoomType src/Dodge/Data/Room.hs 31;" t RoomWire src/Dodge/Data/Room.hs 53;" t RoundedFaces src/Shape/Data.hs 13;" C -RunningSideEffect src/Dodge/Data/Universe.hs 67;" C +RunningSideEffect src/Dodge/Data/Universe.hs 69;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 173;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C @@ -1132,7 +1134,7 @@ STICKYMOD src/Dodge/Data/Item/Combine.hs 23;" C SaveSlot src/Dodge/Data/SaveSlot.hs 7;" t SaveSlotNum src/Dodge/Data/SaveSlot.hs 10;" C Scope src/Dodge/Data/Item/Scope.hs 11;" t -ScreenLayer src/Dodge/Data/Universe.hs 79;" t +ScreenLayer src/Dodge/Data/Universe.hs 81;" t ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t Search src/Dodge/Data/ActionPlan.hs 145;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C @@ -1160,7 +1162,7 @@ ShadNum src/Picture/Data.hs 33;" t Shader src/Shader/Data.hs 51;" t ShaderTexture src/Shader/Data.hs 94;" t ShadowFidelity src/Shape/Data.hs 19;" t -ShadowRendering src/Dodge/Data/Config.hs 101;" t +ShadowRendering src/Dodge/Data/Config.hs 103;" t Shape src/Shape/Data.hs 48;" t ShapeProp src/Dodge/Data/Prop.hs 15;" C ShapeType src/Shape/Data.hs 11;" t @@ -1173,27 +1175,27 @@ ShockwaveDirection src/Dodge/Data/Shockwave.hs 12;" t ShootAt src/Dodge/Data/ActionPlan.hs 133;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t -Show_bound_box src/Dodge/Data/Config.hs 80;" C -Show_dda_test src/Dodge/Data/Config.hs 83;" C -Show_far_wall_detect src/Dodge/Data/Config.hs 86;" C -Show_mouse_click_pos src/Dodge/Data/Config.hs 95;" C +Show_bound_box src/Dodge/Data/Config.hs 82;" C +Show_dda_test src/Dodge/Data/Config.hs 85;" C +Show_far_wall_detect src/Dodge/Data/Config.hs 88;" C +Show_mouse_click_pos src/Dodge/Data/Config.hs 97;" C Show_ms_frame src/Dodge/Data/Config.hs 67;" C -Show_path_between src/Dodge/Data/Config.hs 93;" C -Show_sound src/Dodge/Data/Config.hs 69;" C -Show_wall_search_rays src/Dodge/Data/Config.hs 82;" C -Show_walls_near_point_cursor src/Dodge/Data/Config.hs 87;" C -Show_walls_near_point_you src/Dodge/Data/Config.hs 88;" C -Show_walls_near_segment src/Dodge/Data/Config.hs 89;" C -Show_writable_values src/Dodge/Data/Config.hs 94;" C -Show_zone_circ src/Dodge/Data/Config.hs 91;" C -Show_zone_near_point_cursor src/Dodge/Data/Config.hs 90;" C +Show_path_between src/Dodge/Data/Config.hs 95;" C +Show_sound src/Dodge/Data/Config.hs 71;" C +Show_wall_search_rays src/Dodge/Data/Config.hs 84;" C +Show_walls_near_point_cursor src/Dodge/Data/Config.hs 89;" C +Show_walls_near_point_you src/Dodge/Data/Config.hs 90;" C +Show_walls_near_segment src/Dodge/Data/Config.hs 91;" C +Show_writable_values src/Dodge/Data/Config.hs 96;" C +Show_zone_circ src/Dodge/Data/Config.hs 93;" C +Show_zone_near_point_cursor src/Dodge/Data/Config.hs 92;" C ShrapnelBomb src/Dodge/Data/Payload.hs 10;" C 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 +SideEffect src/Dodge/Data/Universe.hs 64;" t SimpleEdge src/Dodge/Data/PathGraph.hs 43;" t -SixteenthRes src/Dodge/Data/Config.hs 98;" C +SixteenthRes src/Dodge/Data/Config.hs 100;" C Size src/Shape/Data.hs 23;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -1227,7 +1229,7 @@ Sparking src/Dodge/Data/Damage.hs 18;" C Spatial src/Dodge/Data/Scenario.hs 73;" C SpatialInfluence src/Dodge/Data/Scenario.hs 81;" t SpawnedBy src/Dodge/Data/Creature/State.hs 17;" C -SplashOptions src/Dodge/Data/Universe.hs 70;" C +SplashOptions src/Dodge/Data/Universe.hs 72;" C SplitBeamCombine src/Dodge/Data/Beam.hs 40;" C SpreadGunAI src/Dodge/Data/Creature/Misc.hs 40;" C StabOrthReduce src/Dodge/Projectile/Create.hs 17;" C @@ -1325,12 +1327,12 @@ ToPlaySound src/Sound/Data.hs 33;" t ToStart src/Sound/Data.hs 24;" C ToStartMenu src/Sound/Data.hs 27;" C ToStop src/Sound/Data.hs 26;" C -Toggle src/Dodge/Data/Universe.hs 98;" C -Toggle2 src/Dodge/Data/Universe.hs 102;" C +Toggle src/Dodge/Data/Universe.hs 100;" C +Toggle2 src/Dodge/Data/Universe.hs 104;" C ToggleSF src/Dodge/Data/ComposedItem.hs 38;" C TopDT src/Dodge/Data/DoubleTree.hs 83;" C TopLDT src/Dodge/Data/DoubleTree.hs 41;" C -TopMenuOption src/Dodge/Data/Universe.hs 76;" C +TopMenuOption src/Dodge/Data/Universe.hs 78;" C TorchSF src/Dodge/Data/ComposedItem.hs 45;" C TorpedoBaySS src/Dodge/Data/Scenario.hs 99;" C TorqueCr src/Dodge/Data/WorldEffect.hs 29;" C @@ -1363,7 +1365,7 @@ UnderRoof src/Dodge/Data/Scenario.hs 79;" C UnderSea src/Dodge/Data/Scenario.hs 77;" C UniRandFloat src/Dodge/Data/GenFloat.hs 10;" C Unimportant src/Shape/Data.hs 32;" C -Universe src/Dodge/Data/Universe.hs 29;" t +Universe src/Dodge/Data/Universe.hs 30;" t UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 13;" C UnlockInv src/Dodge/Data/WorldEffect.hs 26;" C UnusedLink src/Dodge/Data/Room.hs 68;" C @@ -1403,7 +1405,7 @@ VIOLET src/Color/Data.hs 19;" C VOLLEYGUN src/Dodge/Data/Item/Combine.hs 151;" C VertexAttribute src/Shader/Data.hs 68;" t Verx src/Picture/Data.hs 11;" t -View_boundaries src/Dodge/Data/Config.hs 74;" C +View_boundaries src/Dodge/Data/Config.hs 76;" C ViewingDeckSS src/Dodge/Data/Scenario.hs 106;" C Vigilance src/Dodge/Data/Creature/Perception.hs 50;" t Vigilant src/Dodge/Data/Creature/Perception.hs 54;" C @@ -1432,7 +1434,7 @@ WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t WallSound src/Dodge/Data/SoundOrigin.hs 24;" C WallStructure src/Dodge/Data/Wall/Structure.hs 10;" t WallWire src/Dodge/Data/Room.hs 55;" C -Walls_info src/Dodge/Data/Config.hs 75;" C +Walls_info src/Dodge/Data/Config.hs 77;" C War src/Dodge/Data/Scenario.hs 28;" C WarmTime src/Dodge/Data/Item/Params.hs 19;" C WarmUpCoolDown src/Dodge/Data/TriggerType.hs 14;" C @@ -1592,8 +1594,8 @@ _cdtParent src/Dodge/Data/DoubleTree.hs 87;" f _cdtParent src/Dodge/Data/DoubleTree.hs 95;" f _cdtUp src/Dodge/Data/DoubleTree.hs 85;" f _cdtUp src/Dodge/Data/DoubleTree.hs 92;" f -_ceSideEffect src/Dodge/Data/Universe.hs 64;" f -_ceString src/Dodge/Data/Universe.hs 65;" f +_ceSideEffect src/Dodge/Data/Universe.hs 66;" f +_ceString src/Dodge/Data/Universe.hs 67;" f _chasmShader src/Data/Preload/Render.hs 46;" f _chasmVBO src/Data/Preload/Render.hs 45;" f _chasms src/Dodge/Data/CWorld.hs 33;" f @@ -1690,8 +1692,8 @@ _dbSpin src/Dodge/Data/Prop.hs 33;" f _dbType src/Dodge/Data/Prop.hs 30;" f _dbVel src/Dodge/Data/Prop.hs 31;" f _debris src/Dodge/Data/LWorld.hs 100;" f -_debugFunction src/Dodge/Data/Universe.hs 59;" f -_debugMessage src/Dodge/Data/Universe.hs 58;" f +_debugFunction src/Dodge/Data/Universe.hs 61;" f +_debugMessage src/Dodge/Data/Universe.hs 60;" f _debug_booleans src/Dodge/Data/Config.hs 57;" f _debug_view_clip_bounds src/Dodge/Data/Config.hs 56;" f _delayedEvents src/Dodge/Data/LWorld.hs 130;" f @@ -1764,7 +1766,7 @@ _ebType src/Dodge/Data/EnergyBall.hs 19;" f _ebVel src/Dodge/Data/EnergyBall.hs 16;" f _eboName src/Shader/Data.hs 89;" f _eboPtr src/Shader/Data.hs 90;" f -_emoMenuOption src/Dodge/Data/Universe.hs 75;" f +_emoMenuOption src/Dodge/Data/Universe.hs 77;" f _energyBalls src/Dodge/Data/LWorld.hs 104;" f _fbSize src/Dodge/Data/EnergyBall/Type.hs 12;" f _fbo2 src/Data/Preload/Render.hs 29;" f @@ -1988,13 +1990,13 @@ _meleeCooldown src/Dodge/Data/Creature/Misc.hs 68;" f _meleeTarget src/Dodge/Data/ActionPlan.hs 139;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f -_moEff src/Dodge/Data/Universe.hs 99;" f -_moEff1 src/Dodge/Data/Universe.hs 103;" f -_moEff2 src/Dodge/Data/Universe.hs 104;" f -_moString src/Dodge/Data/Universe.hs 100;" f -_moString src/Dodge/Data/Universe.hs 105;" f -_modOption src/Dodge/Data/Universe.hs 95;" f -_modString src/Dodge/Data/Universe.hs 93;" f +_moEff src/Dodge/Data/Universe.hs 101;" f +_moEff1 src/Dodge/Data/Universe.hs 105;" f +_moEff2 src/Dodge/Data/Universe.hs 106;" f +_moString src/Dodge/Data/Universe.hs 102;" f +_moString src/Dodge/Data/Universe.hs 107;" f +_modOption src/Dodge/Data/Universe.hs 97;" f +_modString src/Dodge/Data/Universe.hs 95;" f _modifications src/Dodge/Data/LWorld.hs 128;" f _mouseButtons src/Dodge/Data/Input.hs 38;" f _mouseButtonsReleased src/Dodge/Data/Input.hs 39;" f @@ -2077,7 +2079,7 @@ _prPos src/Dodge/Data/Prop.hs 16;" f _prRooms src/Dodge/Tree/Shift.hs 30;" f _prRot src/Dodge/Data/Prop.hs 20;" f _prUpdate src/Dodge/Data/Prop.hs 18;" f -_preloadData src/Dodge/Data/Universe.hs 31;" f +_preloadData src/Dodge/Data/Universe.hs 32;" f _pressedKeys src/Dodge/Data/Input.hs 37;" f _projectiles src/Dodge/Data/LWorld.hs 101;" f _props src/Dodge/Data/LWorld.hs 99;" f @@ -2185,15 +2187,15 @@ _rsPos src/Dodge/Data/RadarSweep.hs 18;" f _rsRad src/Dodge/Data/RadarSweep.hs 19;" f _rsSource src/Dodge/Data/RadarSweep.hs 24;" f _rsTimer src/Dodge/Data/RadarSweep.hs 21;" f -_scAvailableLines src/Dodge/Data/Universe.hs 87;" f -_scDisplayTime src/Dodge/Data/Universe.hs 88;" f -_scInput src/Dodge/Data/Universe.hs 90;" f -_scOffset src/Dodge/Data/Universe.hs 83;" f -_scOptionFlag src/Dodge/Data/Universe.hs 85;" f -_scOptions src/Dodge/Data/Universe.hs 82;" f -_scPositionedMenuOption src/Dodge/Data/Universe.hs 84;" f -_scSelectionList src/Dodge/Data/Universe.hs 86;" f -_scTitle src/Dodge/Data/Universe.hs 81;" f +_scAvailableLines src/Dodge/Data/Universe.hs 89;" f +_scDisplayTime src/Dodge/Data/Universe.hs 90;" f +_scInput src/Dodge/Data/Universe.hs 92;" f +_scOffset src/Dodge/Data/Universe.hs 85;" f +_scOptionFlag src/Dodge/Data/Universe.hs 87;" f +_scOptions src/Dodge/Data/Universe.hs 84;" f +_scPositionedMenuOption src/Dodge/Data/Universe.hs 86;" f +_scSelectionList src/Dodge/Data/Universe.hs 88;" f +_scTitle src/Dodge/Data/Universe.hs 83;" f _screenTextureVAO src/Data/Preload/Render.hs 52;" f _scrollAmount src/Dodge/Data/Input.hs 40;" f _scrollItemID src/Dodge/Data/World.hs 68;" f @@ -2371,25 +2373,26 @@ _useMapperPoints src/Dodge/Data/Item/Use.hs 39;" f _useSelf src/Dodge/Data/ActionPlan.hs 118;" f _useToggle src/Dodge/Data/Item/Use.hs 36;" f _useUpTo src/Dodge/Data/Muzzle.hs 63;" f -_uvCanContinue src/Dodge/Data/Universe.hs 37;" f -_uvConfig src/Dodge/Data/Universe.hs 35;" f -_uvDebug src/Dodge/Data/Universe.hs 42;" f -_uvDebugFloat1 src/Dodge/Data/Universe.hs 43;" f -_uvDebugFloat2 src/Dodge/Data/Universe.hs 44;" f -_uvDebugMessageOffset src/Dodge/Data/Universe.hs 48;" f -_uvDebugPathShowType src/Dodge/Data/Universe.hs 47;" f -_uvDebugV2_1 src/Dodge/Data/Universe.hs 45;" f -_uvDebugV2_2 src/Dodge/Data/Universe.hs 46;" f -_uvFrameTicks src/Dodge/Data/Universe.hs 40;" f -_uvIOEffects src/Dodge/Data/Universe.hs 33;" f -_uvLastFrameTicks src/Dodge/Data/Universe.hs 39;" f -_uvMSeed src/Dodge/Data/Universe.hs 38;" f -_uvRAMSave src/Dodge/Data/Universe.hs 41;" f -_uvScreenLayers src/Dodge/Data/Universe.hs 32;" f -_uvSideEffects src/Dodge/Data/Universe.hs 34;" f -_uvSoundQueue src/Dodge/Data/Universe.hs 49;" f -_uvTestString src/Dodge/Data/Universe.hs 36;" f -_uvWorld src/Dodge/Data/Universe.hs 30;" f +_uvCanContinue src/Dodge/Data/Universe.hs 38;" f +_uvConfig src/Dodge/Data/Universe.hs 36;" f +_uvDebug src/Dodge/Data/Universe.hs 43;" f +_uvDebugFloat1 src/Dodge/Data/Universe.hs 44;" f +_uvDebugFloat2 src/Dodge/Data/Universe.hs 45;" f +_uvDebugMessageOffset src/Dodge/Data/Universe.hs 50;" f +_uvDebugPathShowType src/Dodge/Data/Universe.hs 49;" f +_uvDebugPut src/Dodge/Data/Universe.hs 48;" f +_uvDebugV2_1 src/Dodge/Data/Universe.hs 46;" f +_uvDebugV2_2 src/Dodge/Data/Universe.hs 47;" f +_uvFrameTicks src/Dodge/Data/Universe.hs 41;" f +_uvIOEffects src/Dodge/Data/Universe.hs 34;" f +_uvLastFrameTicks src/Dodge/Data/Universe.hs 40;" f +_uvMSeed src/Dodge/Data/Universe.hs 39;" f +_uvRAMSave src/Dodge/Data/Universe.hs 42;" f +_uvScreenLayers src/Dodge/Data/Universe.hs 33;" f +_uvSideEffects src/Dodge/Data/Universe.hs 35;" f +_uvSoundQueue src/Dodge/Data/Universe.hs 51;" f +_uvTestString src/Dodge/Data/Universe.hs 37;" f +_uvWorld src/Dodge/Data/Universe.hs 31;" f _vaCount src/Shader/Data.hs 69;" f _vaNormalize src/Shader/Data.hs 71;" f _vaOffset src/Shader/Data.hs 72;" f @@ -2530,7 +2533,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 342;" f applyCME src/Dodge/HeldUse.hs 369;" f -applyClip src/Dodge/Debug.hs 96;" f +applyClip src/Dodge/Debug.hs 119;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyEventIO src/Loop.hs 90;" f applyGravityPU src/Dodge/Projectile/Update.hs 40;" f @@ -2540,7 +2543,7 @@ applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPastDamages src/Dodge/Creature/State.hs 49;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 459;" f -applyResFactor src/Dodge/Data/Config.hs 111;" f +applyResFactor src/Dodge/Data/Config.hs 113;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 559;" f applySoundCME src/Dodge/HeldUse.hs 449;" f @@ -2706,7 +2709,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 143;" f +cChasm src/Dodge/Room/Tutorial.hs 144;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2741,7 +2744,7 @@ 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 210;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 211;" f chasmTest src/Dodge/Creature/Update.hs 132;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f @@ -3018,13 +3021,16 @@ debrisSPic src/Dodge/Prop/Draw.hs 21;" f debrisSize src/Dodge/Block/Debris.hs 84;" f debugEvent src/Dodge/Debug.hs 36;" f debugEvents src/Dodge/Debug.hs 21;" f +debugGet src/Dodge/Debug.hs 91;" f debugItem src/Dodge/Debug.hs 39;" f debugMenu src/Dodge/Menu.hs 124;" f debugMenuOptions src/Dodge/Menu.hs 130;" f -debugMouseClickPos src/Dodge/Debug.hs 111;" f -debugOn src/Dodge/Data/Config.hs 152;" f -debugShowPath src/Dodge/Debug.hs 71;" f -debugWritableValues src/Dodge/Debug.hs 84;" f +debugMouseClickPos src/Dodge/Debug.hs 134;" f +debugOn src/Dodge/Data/Config.hs 154;" f +debugPut src/Dodge/Debug.hs 82;" f +debugPutN src/Dodge/Debug.hs 79;" f +debugShowPath src/Dodge/Debug.hs 94;" f +debugWritableValues src/Dodge/Debug.hs 107;" f decodeSensorType src/Dodge/Terminal.hs 72;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f @@ -3053,7 +3059,7 @@ defaultCWGen src/Dodge/Default/World.hs 59;" f defaultCWorld src/Dodge/Default/World.hs 84;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f -defaultConfig src/Dodge/Data/Config.hs 128;" f +defaultConfig src/Dodge/Data/Config.hs 130;" 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 @@ -3094,15 +3100,15 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f denormalEdges src/Polyhedra.hs 136;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyBlock src/Dodge/Block.hs 17;" f -destroyDoor src/Dodge/DrWdWd.hs 75;" f +destroyDoor src/Dodge/DrWdWd.hs 78;" f destroyInvItem src/Dodge/Inventory.hs 40;" f destroyItem src/Dodge/Inventory.hs 62;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f -destroyMount src/Dodge/DrWdWd.hs 96;" f -destroyMounts src/Dodge/DrWdWd.hs 93;" f +destroyMount src/Dodge/DrWdWd.hs 99;" f +destroyMounts src/Dodge/DrWdWd.hs 96;" f destroyProjectile src/Dodge/Projectile/Update.hs 108;" f detV src/Geometry/Vector.hs 94;" f detector src/Dodge/Item/Held/Utility.hs 27;" f @@ -3151,6 +3157,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 47;" f doDamage src/Dodge/Creature/State.hs 43;" f doDeathToggle src/Dodge/WorldEffect.hs 91;" f doDeathTriggers src/Dodge/WorldEffect.hs 84;" f +doDebugGet src/Dodge/Debug.hs 85;" f +doDebugPut src/Dodge/Debug.hs 73;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f @@ -3176,7 +3184,7 @@ doLoop src/Loop.hs 60;" f doMagnetBuBu src/Dodge/Bullet.hs 35;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f doPrWdLsLs src/Dodge/PrWdLsLs.hs 8;" f -doPreload appDodge/Main.hs 139;" f +doPreload appDodge/Main.hs 140;" f doPropUpdates src/Dodge/Prop/Update.hs 31;" f doQuickload src/Dodge/Save.hs 83;" f doQuicksave src/Dodge/Save.hs 77;" f @@ -3186,7 +3194,7 @@ doRoomPlacements src/Dodge/Layout.hs 104;" f doRoomShift src/Dodge/Room/Link.hs 33;" f doScopeZoom src/Dodge/Update/Scroll.hs 91;" f doSectionSize src/Dodge/DisplayInventory.hs 211;" f -doSideEffects appDodge/Main.hs 124;" f +doSideEffects appDodge/Main.hs 125;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 171;" f doTestDrawing src/Dodge/Render.hs 41;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -3235,8 +3243,8 @@ drawCombFilter src/Dodge/Render/Picture.hs 269;" f drawCombineInventory src/Dodge/Render/HUD.hs 182;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f drawCoord src/Dodge/Debug/Picture.hs 383;" f -drawCrInfo src/Dodge/Debug.hs 135;" f -drawCrInfo' src/Dodge/Debug.hs 130;" f +drawCrInfo src/Dodge/Debug.hs 158;" f +drawCrInfo' src/Dodge/Debug.hs 153;" f drawCreature src/Dodge/Render/ShapePicture.hs 71;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 198;" f drawCross src/Dodge/Render/Label.hs 24;" f @@ -3245,7 +3253,7 @@ drawCursorAt src/Dodge/Render/List.hs 72;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" f drawDDATest src/Dodge/Debug/Picture.hs 310;" f drawDamSensor src/Dodge/Machine/Draw.hs 27;" f -drawDebug src/Dodge/Debug.hs 173;" f +drawDebug src/Dodge/Debug.hs 196;" f drawDrag src/Dodge/Render/Picture.hs 200;" f drawDragDrop src/Dodge/Render/Picture.hs 229;" f drawDragPickup src/Dodge/Render/Picture.hs 238;" f @@ -3482,7 +3490,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 122;" 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 88;" f +foldMTRS src/Dodge/Room/Tutorial.hs 89;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3543,8 +3551,8 @@ 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 359;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 346;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 360;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 347;" f getDebugMouseOver src/Dodge/Update.hs 377;" f getDistortions src/Dodge/Render.hs 435;" f getEdgesCrossing src/Dodge/Path.hs 41;" f @@ -3561,7 +3569,7 @@ getNodePos src/Dodge/Path.hs 38;" 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 342;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 343;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3877,7 +3885,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 152;" f +lChasm src/Dodge/Room/Tutorial.hs 153;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 91;" f @@ -4125,7 +4133,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 150;" f -midChasm src/Dodge/Room/Tutorial.hs 173;" f +midChasm src/Dodge/Room/Tutorial.hs 174;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4352,7 +4360,7 @@ playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f playSoundAndUpdate src/Sound.hs 54;" f playSoundQueue src/Sound.hs 132;" f -playSoundUnlessRewinding appDodge/Main.hs 117;" f +playSoundUnlessRewinding appDodge/Main.hs 118;" f plusDecoration src/Dodge/Placement/TopDecoration.hs 35;" f pmLineLoop src/Shader/Data.hs 107;" f pmLineStrip src/Shader/Data.hs 107;" f @@ -4416,8 +4424,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 194;" f -polyChasmC src/Dodge/Room/Tutorial.hs 203;" f +polyChasm src/Dodge/Room/Tutorial.hs 195;" f +polyChasmC src/Dodge/Room/Tutorial.hs 204;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4601,7 +4609,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 259;" f +removeLights src/Dodge/Room/Tutorial.hs 260;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4779,7 +4787,7 @@ 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 368;" f +sensorTut src/Dodge/Room/Tutorial.hs 369;" 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 @@ -4787,7 +4795,7 @@ 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 102;" f -setClip src/Dodge/Debug.hs 159;" f +setClip src/Dodge/Debug.hs 182;" f setClusterID src/Dodge/Combine/Graph.hs 114;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f @@ -4806,7 +4814,7 @@ 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 95;" f +setRoomInt src/Dodge/Room/Tutorial.hs 96;" 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 @@ -4815,7 +4823,7 @@ setSoundVolume src/Sound.hs 157;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f -setTreeInts src/Dodge/Room/Tutorial.hs 102;" f +setTreeInts src/Dodge/Room/Tutorial.hs 103;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 440;" f @@ -4900,9 +4908,9 @@ showEquipItem src/Dodge/Item/Display.hs 107;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 47;" f +showManObj src/Dodge/TestString.hs 48;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 70;" f +showTimeFlow src/Dodge/TestString.hs 71;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 174;" f shrinkVert src/Geometry/Polygon.hs 178;" f shuffle src/RandomHelp.hs 49;" f @@ -5035,7 +5043,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f stopAllSounds src/Sound.hs 125;" f stopBulletAt src/Dodge/Bullet.hs 200;" f -stopPushing src/Dodge/DrWdWd.hs 101;" f +stopPushing src/Dodge/DrWdWd.hs 104;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f @@ -5048,7 +5056,7 @@ stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 46;" f subMap src/TreeHelp.hs 119;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 118;" f -succB src/Dodge/Debug.hs 79;" f +succB src/Dodge/Debug.hs 102;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapInOutLinks src/Dodge/RoomLink.hs 98;" f swapIndices src/ListHelp.hs 50;" f @@ -5118,7 +5126,7 @@ tflat3 src/Picture/Data.hs 62;" f tflat4 src/Picture/Data.hs 66;" f theCleanup appDodge/Main.hs 74;" f theColumns src/Dodge/Tree/Shift.hs 146;" f -theUpdateStep appDodge/Main.hs 109;" f +theUpdateStep appDodge/Main.hs 110;" f thickArc src/Picture/Base.hs 298;" f thickCircle src/Picture/Base.hs 272;" f thickLine src/Picture/Base.hs 244;" f @@ -5175,7 +5183,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" f topInvW src/Dodge/ListDisplayParams.hs 49;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 43;" f +topTestPart src/Dodge/TestString.hs 44;" f torchShape src/Dodge/Item/Draw/SPic.hs 276;" f torqueAmount src/Dodge/HeldUse.hs 581;" f torqueCr src/Dodge/WorldEffect.hs 77;" f @@ -5249,12 +5257,12 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f -tutDrop src/Dodge/Room/Tutorial.hs 107;" f -tutHub src/Dodge/Room/Tutorial.hs 266;" f -tutLight src/Dodge/Room/Tutorial.hs 231;" f -tutRezBox src/Dodge/Room/Tutorial.hs 379;" f +tutDrop src/Dodge/Room/Tutorial.hs 108;" f +tutHub src/Dodge/Room/Tutorial.hs 267;" f +tutLight src/Dodge/Room/Tutorial.hs 232;" f +tutRezBox src/Dodge/Room/Tutorial.hs 380;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 403;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 404;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f @@ -5375,7 +5383,7 @@ updateRadarBlips src/Dodge/Update.hs 562;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f updateRadarSweeps src/Dodge/Update.hs 664;" f updateRandNode src/TreeHelp.hs 109;" f -updateRenderSplit appDodge/Main.hs 112;" f +updateRenderSplit appDodge/Main.hs 113;" f updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f updateRootItemID src/Dodge/Inventory/Location.hs 41;" f updateScopeZoom src/Dodge/Update/Scroll.hs 79;" f @@ -5568,7 +5576,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 161;" f +zChasm src/Dodge/Room/Tutorial.hs 162;" 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