From eb068f5335269533b0cf45ff3dc5319adff10bd1 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 24 Sep 2025 10:39:34 +0100 Subject: [PATCH] Remove Annotation datatype --- src/Dodge/Annotation.hs | 39 ---- src/Dodge/Annotation/Data.hs | 43 ---- src/Dodge/Data/MetaTree.hs | 22 ++ src/Dodge/Floor.hs | 61 +++--- src/Dodge/LevelGen.hs | 5 +- src/Dodge/LockAndKey.hs | 2 +- src/Dodge/Room/Airlock.hs | 1 - src/Dodge/Room/GlassLesson.hs | 2 +- src/Dodge/Room/LongDoor.hs | 4 +- src/Dodge/Room/SensorDoor.hs | 2 +- src/Dodge/Room/Tutorial.hs | 21 +- tags | 368 +++++++++++++++++----------------- 12 files changed, 256 insertions(+), 314 deletions(-) delete mode 100644 src/Dodge/Annotation.hs delete mode 100644 src/Dodge/Annotation/Data.hs diff --git a/src/Dodge/Annotation.hs b/src/Dodge/Annotation.hs deleted file mode 100644 index 095696de9..000000000 --- a/src/Dodge/Annotation.hs +++ /dev/null @@ -1,39 +0,0 @@ ---{-# LANGUAGE TupleSections #-} - --- | Annotating tree structures with desired properties for rooms. -module Dodge.Annotation ( - module Dodge.Annotation.Data, - module Dodge.Annotation, -) where - -import Data.Maybe -import Dodge.Annotation.Data -import Dodge.Cleat ---import Dodge.Data.GenWorld -import Dodge.Tree -import LensHelp -import RandomHelp - -annoToRoomTree :: Annotation -> State LayoutVars MTRS -annoToRoomTree an = case an of - AnTree t -> t --- AnRoom r -> MTree "SingleRoom" . NodeTree . pure . (rmClusterStatus . csLinks . at OnwardCluster ?~ ()) <$> zoom _1 r <*> return [] - OnwardList ans -> do - mts <- mapM annoToRoomTree ans - return $ foldr1 attachOnward' mts --- IntAnno f -> do --- LayVars g i <- get --- put $ LayVars g (i + 1) --- annoToRoomTree (f i) - --PassthroughLockKeyLists ls ks i -> zoom lyGen $ do - PassthroughLockKeyLists ls ks -> do - i <- nextLayoutInt - (functionlockroom, randomitemidentity) <- takeOne ls - lr <- zoom lyGen $ functionlockroom i - ii <- zoom lyGen randomitemidentity - keyroom <- zoom lyGen . fromJust $ lookup ii ks - return $ - MTree - ("PassthroughLockKeyLists-" ++ show ii) - (NodeMTree $ MTree "RassThroughLockKeyLists" (NodeMTree lr) [MBranch (toLabel i) keyroom]) - [] diff --git a/src/Dodge/Annotation/Data.hs b/src/Dodge/Annotation/Data.hs deleted file mode 100644 index 71d5d942c..000000000 --- a/src/Dodge/Annotation/Data.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} - -module Dodge.Annotation.Data where - -import Control.Lens -import Control.Monad.State -import Dodge.Data.GenWorld -import Dodge.Data.MetaTree -import System.Random - -type MTRS = MetaTree Room String - -data LayoutVars = LayVars - { _lyGen :: StdGen - , _lyCounter :: Int - } - -data Annotation - = OnwardList [Annotation] --- | IntAnno (Int -> Annotation) --- | AnRoom (State StdGen Room) - | AnTree (State LayoutVars (MetaTree Room String)) - | PassthroughLockKeyLists - [(Int -> State StdGen (MetaTree Room String), State StdGen ItemType)] - [(ItemType, State StdGen (MetaTree Room String))] --- Int - -makeLenses ''Annotation -makeLenses ''LayoutVars - -instance RandomGen LayoutVars where - genWord32 x = let (y,g) = genWord32 (x ^. lyGen) - in (y,x & lyGen .~ g) - genWord64 x = let (y,g) = genWord64 (x ^. lyGen) - in (y,x & lyGen .~ g) - split x = let (g,h) = split (x ^. lyGen) in (x & lyGen .~ g, x & lyGen .~ h) - -nextLayoutInt :: State LayoutVars Int -nextLayoutInt = do - LayVars g i <- get - put $ LayVars g (i + 1) - return i diff --git a/src/Dodge/Data/MetaTree.hs b/src/Dodge/Data/MetaTree.hs index 04ab56f29..e5c36d1ea 100644 --- a/src/Dodge/Data/MetaTree.hs +++ b/src/Dodge/Data/MetaTree.hs @@ -5,6 +5,8 @@ module Dodge.Data.MetaTree where import Control.Lens import Data.Tree +import System.Random +import Control.Monad.State data MetaTree a b = MTree {_mtLabel :: b, _mtTree :: MetaNode a b, _mtBranches :: [MetaBranch a b]} @@ -23,3 +25,23 @@ makeLenses ''MetaNode instance Functor (MetaTree a) where fmap f (MTree b mn bs) = MTree (f b) (mn & nodeMetaTree %~ fmap f) (map (mbTree %~ fmap f) bs) + +data LayoutVars = LayVars + { _lyGen :: StdGen + , _lyCounter :: Int + } + +makeLenses ''LayoutVars + +instance RandomGen LayoutVars where + genWord32 x = let (y,g) = genWord32 (x ^. lyGen) + in (y,x & lyGen .~ g) + genWord64 x = let (y,g) = genWord64 (x ^. lyGen) + in (y,x & lyGen .~ g) + split x = let (g,h) = split (x ^. lyGen) in (x & lyGen .~ g, x & lyGen .~ h) + +nextLayoutInt :: State LayoutVars Int +nextLayoutInt = do + LayVars g i <- get + put $ LayVars g (i + 1) + return i diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 6a2da80bb..6fe36d02c 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -4,10 +4,10 @@ module Dodge.Floor ( tutRoomTree, ) where +import Dodge.Data.MTRS +import Data.Maybe import Dodge.Room.Tutorial -import Dodge.Annotation.Data import Data.List (intersperse) -import Dodge.Annotation import Dodge.Cleat import Dodge.Creature import Dodge.Data.GenWorld @@ -21,26 +21,18 @@ import RandomHelp tutRoomTree :: State LayoutVars (MetaTree Room String) tutRoomTree = tutAnoTree ---startWorldTreeTest :: Annotation ---startWorldTreeTest = --- OnwardList $ --- [ IntAnno $ AnTree . startRoom --- ] - initialRoomTree :: State LayoutVars MTRS initialRoomTree = - annoToRoomTree $ - OnwardList $ + foldMTRS $ intersperse - (AnTree $ zoom lyGen corDoor) - [ AnTree $ intAnno startRoom - , --IntAnno $ - PassthroughLockKeyLists + (zoom lyGen corDoor) + [ intAnno startRoom + , passthroughLockKeyLists [(sensorRoomRunPast ElectricSensor, takeOne [-- CRAFT (ENERGYBALLCRAFT TeslaBall) , HELD SPARKGUN])] itemRooms - , AnTree $ intAnno lasSensorTurretTest + , intAnno lasSensorTurretTest , -- , AnRoom $ tanksRoom [] [] <&> rmPmnts .~ [] -- , AnRoom $ tanksRoom [] [] -- , AnRoom $ roomCCrits 0 @@ -59,21 +51,20 @@ initialRoomTree = -- , AnTree $ tToBTree "spawners" <$> spawnerRoom -- , AnRoom pistolerRoom -- , AnRoom doubleCorridorBarrels - PassthroughLockKeyLists keyCardRunPastRand itemRooms - , AnTree . intAnno $ warningRooms "INVISIBLE CREATURE AHEAD" - , AnTree $ - rToOnward "chaseCrit+armourChaseCrit rectRoom" . + passthroughLockKeyLists keyCardRunPastRand itemRooms + , intAnno $ warningRooms "INVISIBLE CREATURE AHEAD" + , rToOnward "chaseCrit+armourChaseCrit rectRoom" . return . cleatOnward =<< (roomRectAutoLinks 400 400 <&> rmPmnts .++~ [ psPtPl anyUnusedSpot (PutCrit invisibleChaseCrit) , psPtPl anyUnusedSpot (PutCrit armourChaseCrit) ]) - , AnTree . intAnno $ fmap (tToBTree "healthTest") . healthTest - , AnTree . zoom lyGen $ + , intAnno $ fmap (tToBTree "healthTest") . healthTest + , zoom lyGen $ (tanksRoom [] [] >>= rToOnward "empty tanksRoom" . pure . cleatOnward) - , PassthroughLockKeyLists lockRoomKeyItems itemRooms - , AnTree randomChallenges - , AnTree $ intAnno lasSensorTurretTest + , passthroughLockKeyLists lockRoomKeyItems itemRooms + , randomChallenges + , intAnno lasSensorTurretTest , -- ,[AnTree $ fmap pure roomCCrits] -- ,[AirlockAno] -- ,[Corridor] @@ -114,7 +105,7 @@ initialRoomTree = -- ,[Corridor] -- ,[TreasureAno [addArmour autoCrit,addArmour autoCrit] [launcher]] -- ,[Corridor] - AnTree $ randomFourCornerRoom [] >>= rToOnward "randomFourCornerRoom" . pure . cleatOnward + randomFourCornerRoom [] >>= rToOnward "randomFourCornerRoom" . pure . cleatOnward ] intAnno :: (Int -> State StdGen MTRS) -> State LayoutVars MTRS @@ -123,5 +114,21 @@ intAnno f = do put $ LayVars g (i+1) zoom lyGen (f i) -anRoom :: State StdGen Room -> Annotation -anRoom t = AnTree $ zoom lyGen (tToBTree "anRoom" . return . cleatOnward <$> t) +anRoom :: State StdGen Room -> State LayoutVars MTRS +anRoom t = zoom lyGen (tToBTree "anRoom" . return . cleatOnward <$> t) + +passthroughLockKeyLists :: + [(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)] + -> [(ItemType, State LayoutVars (MetaTree Room String))] + -> State LayoutVars (MetaTree Room String) +passthroughLockKeyLists ls ks = do + i <- nextLayoutInt + (functionlockroom, randomitemidentity) <- takeOne ls + lr <- functionlockroom i + ii <- randomitemidentity + keyroom <- fromJust $ lookup ii ks + return $ + MTree + ("PassthroughLockKeyLists-" ++ show ii) + (NodeMTree $ MTree "RassThroughLockKeyLists" (NodeMTree lr) [MBranch (toLabel i) keyroom]) + [] diff --git a/src/Dodge/LevelGen.hs b/src/Dodge/LevelGen.hs index 9addabee7..23715fe4c 100644 --- a/src/Dodge/LevelGen.hs +++ b/src/Dodge/LevelGen.hs @@ -1,6 +1,5 @@ module Dodge.LevelGen (generateWorldFromSeed) where -import Dodge.Annotation.Data import Dodge.Layout import Data.Preload.Render import Control.Lens @@ -53,8 +52,8 @@ layoutLevelFromSeed i seed = do putStrLnAppend "log/attemptedSeeds" $ "Generating level with seed " ++ show seed appendFile "log/attemptedSeeds" "\n" let g = mkStdGen seed - let treecluster = evalState tutRoomTree (LayVars g 0) - --let treecluster = evalState initialRoomTree (LayVars g 0) + --let treecluster = evalState tutRoomTree (LayVars g 0) + let treecluster = evalState initialRoomTree (LayVars g 0) let labts = decomposeSelfTree $ numSelfTree $ combineTree _rmName treecluster appendFile "log/treeCluster" ("Seed: " ++ show seed ++ "\n") putStrLn "MetaTree clusters:" diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs index 5c66b5226..b8f1df2a8 100644 --- a/src/Dodge/LockAndKey.hs +++ b/src/Dodge/LockAndKey.hs @@ -22,7 +22,7 @@ lockRoomMultiItems = ) ] -lockRoomKeyItems :: [(Int -> State StdGen (MetaTree Room String), State StdGen ItemType)] +lockRoomKeyItems :: [(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)] lockRoomKeyItems = [ (lasCenSensEdge, takeOne [HELD RLAUNCHER, LASER, HELD SPARKGUN, HELD FLATSHIELD]) , (sensorRoomRunPast LaserSensor, return LASER) diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index aa7646e1e..3b6aedc75 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -6,7 +6,6 @@ module Dodge.Room.Airlock where import Data.Maybe import Control.Lens import Control.Monad ---import Dodge.Annotation.Data import Dodge.Data.GenWorld import Dodge.Default.Door import Dodge.Default.Room diff --git a/src/Dodge/Room/GlassLesson.hs b/src/Dodge/Room/GlassLesson.hs index f6c906c1d..2eeb4e581 100644 --- a/src/Dodge/Room/GlassLesson.hs +++ b/src/Dodge/Room/GlassLesson.hs @@ -1,8 +1,8 @@ --{-# LANGUAGE TupleSections #-} module Dodge.Room.GlassLesson where +import Dodge.Data.MTRS import qualified Data.Set as S -import Dodge.Annotation.Data import Dodge.Cleat import Dodge.Creature import Dodge.Data.GenWorld diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index ab3d520cd..8578b57b7 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -151,7 +151,7 @@ addButtonSlowDoor x h rm = do Nothing col = dim $ light red -slowDoorRoom :: State StdGen Room +slowDoorRoom :: RandomGen g => State g Room slowDoorRoom = do x <- state $ randomR (400, 800) y <- state $ randomR (400, 800) @@ -168,7 +168,7 @@ slowDoorRoom = do proom <- southPillarsRoom x y h addButtonSlowDoor x h (proom & rmPmnts %~ (++ (crits ++ barrels))) -slowDoorRoomRunPast :: State StdGen (MetaTree Room String) +slowDoorRoomRunPast :: RandomGen g => State g (MetaTree Room String) slowDoorRoomRunPast = do r <- slowDoorRoom rToOnward "slowDoorRoomRunPast" $ diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 120b85172..f36df9abd 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -1,8 +1,8 @@ --{-# LANGUAGE TupleSections #-} module Dodge.Room.SensorDoor (sensAboveDoor,sensorRoomRunPast) where +import Dodge.Data.MTRS import qualified Data.Set as S -import Dodge.Annotation.Data import Dodge.Cleat import Dodge.Data.GenWorld import Dodge.LevelGen.PlacementHelper diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 064a129c7..9425a620e 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -1,6 +1,6 @@ module Dodge.Room.Tutorial where -import Dodge.Annotation +import Dodge.Data.MTRS import Dodge.Room.Room import Dodge.Cleat import Dodge.Data.GenWorld @@ -38,16 +38,15 @@ import TreeHelp tutAnoTree :: State LayoutVars MTRS tutAnoTree = - annoToRoomTree $ - OnwardList - [ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox - , AnTree corDoor - , AnTree tutRooms - , AnTree corDoor - , AnTree $ tToBTree "critroom" <$> weaponBehindPillar - , AnTree corDoor - , AnTree tutDrop - , AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor + foldMTRS + [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox + , corDoor + , tutRooms + , corDoor + , tToBTree "critroom" <$> weaponBehindPillar + , corDoor + , tutDrop + , return $ tToBTree "cor" $ return $ cleatOnward corridor ---- , AnTree $ pickupTut ---- , AnTree $ weaponTut ] diff --git a/tags b/tags index ed25a42e9..54a6518a7 100644 --- a/tags +++ b/tags @@ -58,8 +58,6 @@ AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 32;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 61;" t AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 5;" t -AnTree src/Dodge/Annotation/Data.hs 23;" C -Annotation src/Dodge/Annotation/Data.hs 19;" t ArbitraryAction src/Dodge/Data/ActionPlan.hs 166;" C ArbitraryImpulse src/Dodge/Data/ActionPlan.hs 47;" C ArbitraryImpulseEffect src/Dodge/Data/ActionPlan.hs 48;" C @@ -674,9 +672,9 @@ Lasering src/Dodge/Data/Damage.hs 26;" C LauncherAI src/Dodge/Data/Creature/Misc.hs 45;" C LauncherAmmo src/Dodge/Data/AmmoType.hs 6;" C LaundrySS src/Dodge/Data/Scenario.hs 115;" C -LayVars src/Dodge/Annotation/Data.hs 14;" C +LayVars src/Dodge/Data/MetaTree.hs 29;" C Layer src/Picture/Data.hs 22;" t -LayoutVars src/Dodge/Annotation/Data.hs 14;" t +LayoutVars src/Dodge/Data/MetaTree.hs 29;" t LeadTarget src/Dodge/Data/ActionPlan.hs 149;" C LeftForward src/Dodge/Data/Creature/Stance.hs 35;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 86;" C @@ -711,7 +709,7 @@ MAGNET src/Dodge/Data/Item/Combine.hs 68;" C MAGSHIELD src/Dodge/Data/Item/Combine.hs 122;" C MAPPER src/Dodge/Data/Item/Combine.hs 26;" C MAXHEALTH src/Dodge/Data/Item/Combine.hs 47;" C -MBranch src/Dodge/Data/MetaTree.hs 16;" C +MBranch src/Dodge/Data/MetaTree.hs 18;" C MCrAc src/Dodge/Data/CreatureEffect.hs 45;" t MCrNoAction src/Dodge/Data/CreatureEffect.hs 45;" C MEDKIT src/Dodge/Data/Item/Combine.hs 117;" C @@ -726,8 +724,8 @@ MOTOR src/Dodge/Data/Item/Combine.hs 64;" C MP2Ac src/Dodge/Data/CreatureEffect.hs 56;" t MP2NoAction src/Dodge/Data/CreatureEffect.hs 56;" C MPO src/Dodge/Base/Collide.hs 88;" t -MTRS src/Dodge/Annotation/Data.hs 12;" t -MTree src/Dodge/Data/MetaTree.hs 9;" C +MTRS src/Dodge/Data/MTRS.hs 5;" t +MTree src/Dodge/Data/MetaTree.hs 11;" C Machine src/Dodge/Data/Machine.hs 30;" t MachineAltSound src/Dodge/Data/SoundOrigin.hs 23;" C MachinePart src/Dodge/Data/Wall/Structure.hs 15;" C @@ -773,9 +771,9 @@ MeleeStrike src/Dodge/Data/ActionPlan.hs 192;" C Memory src/Dodge/Data/Creature/Memory.hs 13;" t MenuOption src/Dodge/Data/Universe.hs 99;" t MenuOptionDisplay src/Dodge/Data/Universe.hs 94;" t -MetaBranch src/Dodge/Data/MetaTree.hs 16;" t -MetaNode src/Dodge/Data/MetaTree.hs 12;" t -MetaTree src/Dodge/Data/MetaTree.hs 9;" 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 Metal src/Dodge/Data/Material.hs 11;" C Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C @@ -872,8 +870,8 @@ NoSubInventory src/Dodge/Data/HUD.hs 17;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 23;" C Noclip src/Dodge/Data/Config.hs 70;" C -NodeMTree src/Dodge/Data/MetaTree.hs 14;" C -NodeTree src/Dodge/Data/MetaTree.hs 13;" C +NodeMTree src/Dodge/Data/MetaTree.hs 16;" C +NodeTree src/Dodge/Data/MetaTree.hs 15;" C NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 84;" C NonInf src/Dodge/Data/CardinalPoint.hs 29;" C NormalOptions src/Dodge/Data/Universe.hs 72;" C @@ -944,7 +942,6 @@ OnTurret src/Dodge/Data/Item/Location.hs 35;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneHand src/Dodge/Data/AimStance.hs 15;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C -OnwardList src/Dodge/Annotation/Data.hs 20;" C Opacity src/Dodge/Data/Wall.hs 40;" t Opaque src/Dodge/Data/Wall.hs 44;" C OpticScope src/Dodge/Data/Item/Scope.hs 14;" C @@ -981,14 +978,13 @@ PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 89;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 130;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C PRISM src/Dodge/Data/Item/Combine.hs 66;" C -PS src/Dodge/Data/GenWorld.hs 67;" C -PSNoShiftCont src/Dodge/Data/GenWorld.hs 68;" C -PSPos src/Dodge/Data/GenWorld.hs 69;" C -PSRoomRand src/Dodge/Data/GenWorld.hs 74;" C -PSType src/Dodge/Data/GenWorld.hs 30;" t +PS src/Dodge/Data/GenWorld.hs 68;" C +PSNoShiftCont src/Dodge/Data/GenWorld.hs 69;" C +PSPos src/Dodge/Data/GenWorld.hs 70;" C +PSRoomRand src/Dodge/Data/GenWorld.hs 75;" C +PSType src/Dodge/Data/GenWorld.hs 31;" t PUMP src/Dodge/Data/Item/Combine.hs 63;" C PaletteColor src/Color/Data.hs 14;" t -PassthroughLockKeyLists src/Dodge/Annotation/Data.hs 24;" C PathEdge src/Dodge/Data/PathGraph.hs 40;" t PathEdgeNodes src/Dodge/Data/PathGraph.hs 33;" t PathFromEdge src/Dodge/Data/Room.hs 69;" t @@ -1004,8 +1000,8 @@ PhysicalSensor src/Dodge/Data/Machine/Sensor.hs 18;" C Picture src/Picture/Data.hs 46;" t Piercing src/Dodge/Data/Damage.hs 20;" C PistolAI src/Dodge/Data/Creature/Misc.hs 43;" C -Placement src/Dodge/Data/GenWorld.hs 80;" t -PlacementSpot src/Dodge/Data/GenWorld.hs 66;" t +Placement src/Dodge/Data/GenWorld.hs 81;" t +PlacementSpot src/Dodge/Data/GenWorld.hs 67;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 88;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlayStatus src/Sound/Data.hs 23;" t @@ -1073,28 +1069,28 @@ PulseStatus src/Dodge/Data/Creature/Misc.hs 54;" C PushSource src/Dodge/Data/Door.hs 27;" t PushedBy src/Dodge/Data/Door.hs 29;" C PushesItself src/Dodge/Data/Door.hs 28;" C -PutBlock src/Dodge/Data/GenWorld.hs 44;" C -PutButton src/Dodge/Data/GenWorld.hs 39;" C -PutChasm src/Dodge/Data/GenWorld.hs 62;" C -PutCoord src/Dodge/Data/GenWorld.hs 45;" C -PutCrit src/Dodge/Data/GenWorld.hs 31;" C -PutDoor src/Dodge/Data/GenWorld.hs 56;" C -PutFlIt src/Dodge/Data/GenWorld.hs 42;" C -PutForeground src/Dodge/Data/GenWorld.hs 58;" C -PutID src/Dodge/Data/GenWorld.hs 61;" C -PutLS src/Dodge/Data/GenWorld.hs 38;" C -PutLineBlock src/Dodge/Data/GenWorld.hs 48;" C -PutMachine src/Dodge/Data/GenWorld.hs 32;" C -PutMod src/Dodge/Data/GenWorld.hs 46;" C -PutNothing src/Dodge/Data/GenWorld.hs 60;" C +PutBlock src/Dodge/Data/GenWorld.hs 45;" C +PutButton src/Dodge/Data/GenWorld.hs 40;" C +PutChasm src/Dodge/Data/GenWorld.hs 63;" C +PutCoord src/Dodge/Data/GenWorld.hs 46;" C +PutCrit src/Dodge/Data/GenWorld.hs 32;" C +PutDoor src/Dodge/Data/GenWorld.hs 57;" C +PutFlIt src/Dodge/Data/GenWorld.hs 43;" C +PutForeground src/Dodge/Data/GenWorld.hs 59;" C +PutID src/Dodge/Data/GenWorld.hs 62;" C +PutLS src/Dodge/Data/GenWorld.hs 39;" C +PutLineBlock src/Dodge/Data/GenWorld.hs 49;" C +PutMachine src/Dodge/Data/GenWorld.hs 33;" C +PutMod src/Dodge/Data/GenWorld.hs 47;" C +PutNothing src/Dodge/Data/GenWorld.hs 61;" C PutOnEquipment src/Dodge/Data/RightButtonOptions.hs 21;" C -PutPPlate src/Dodge/Data/GenWorld.hs 43;" C -PutProp src/Dodge/Data/GenWorld.hs 40;" C -PutSlideDr src/Dodge/Data/GenWorld.hs 55;" C -PutTerminal src/Dodge/Data/GenWorld.hs 41;" C -PutTrigger src/Dodge/Data/GenWorld.hs 47;" C -PutWall src/Dodge/Data/GenWorld.hs 54;" C -PutWorldUpdate src/Dodge/Data/GenWorld.hs 59;" C +PutPPlate src/Dodge/Data/GenWorld.hs 44;" C +PutProp src/Dodge/Data/GenWorld.hs 41;" C +PutSlideDr src/Dodge/Data/GenWorld.hs 56;" C +PutTerminal src/Dodge/Data/GenWorld.hs 42;" C +PutTrigger src/Dodge/Data/GenWorld.hs 48;" C +PutWall src/Dodge/Data/GenWorld.hs 55;" C +PutWorldUpdate src/Dodge/Data/GenWorld.hs 60;" C QFloat src/Geometry/Data.hs 50;" t QuarterRes src/Dodge/Data/Config.hs 97;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C @@ -1118,7 +1114,7 @@ RadialDistortion src/Dodge/Data/Distortion.hs 13;" C RandImpulse src/Dodge/Data/ActionPlan.hs 62;" t RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 64;" C RandImpulseList src/Dodge/Data/ActionPlan.hs 63;" C -RandPS src/Dodge/Data/GenWorld.hs 57;" C +RandPS src/Dodge/Data/GenWorld.hs 58;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 32;" C RandomTurn src/Dodge/Data/ActionPlan.hs 31;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C @@ -1153,7 +1149,7 @@ Rocket src/Dodge/Data/Projectile.hs 34;" C RocketHoming src/Dodge/Data/Projectile.hs 41;" t RocketSmoke src/Dodge/Data/Projectile.hs 54;" t RocketSmoke src/Dodge/Data/Cloud.hs 24;" C -Room src/Dodge/Data/GenWorld.hs 95;" t +Room src/Dodge/Data/GenWorld.hs 96;" t RoomClipping src/Dodge/Data/Config.hs 107;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 23;" t @@ -1183,7 +1179,7 @@ SPRING src/Dodge/Data/Item/Combine.hs 54;" C SPic src/ShapePicture/Data.hs 7;" t SQUARE src/Dodge/Data/GenParams.hs 20;" C SString src/ShortShow.hs 12;" C -ST src/Dodge/Data/MetaTree.hs 18;" C +ST src/Dodge/Data/MetaTree.hs 20;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 59;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 24;" C SaveSlot src/Dodge/Data/SaveSlot.hs 9;" t @@ -1206,7 +1202,7 @@ SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" C Selection src/Dodge/Data/HUD.hs 41;" t SelectionItem src/Dodge/Data/SelectionList.hs 41;" t SelectionWidth src/Dodge/Data/SelectionList.hs 39;" t -SelfTree src/Dodge/Data/MetaTree.hs 18;" t +SelfTree src/Dodge/Data/MetaTree.hs 20;" t SemiAutoTrigger src/Dodge/Data/TriggerType.hs 9;" C SensorType src/Dodge/Data/Machine/Sensor.hs 14;" t SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 33;" C @@ -1867,6 +1863,7 @@ _fullscreenShader src/Data/Preload/Render.hs 20;" f _futureWorlds src/Dodge/Data/World.hs 67;" f _futureWorlds src/Dodge/Data/World.hs 73;" f _gameplay_rotate_to_wall src/Dodge/Data/Config.hs 55;" f +_genInts src/Dodge/Data/GenWorld.hs 27;" f _genPmnt src/Dodge/Data/GenWorld.hs 26;" f _genRooms src/Dodge/Data/GenWorld.hs 25;" f _getAttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" f @@ -2003,8 +2000,8 @@ _lwID src/Dodge/Data/LinearShockwave.hs 15;" f _lwPoints src/Dodge/Data/LinearShockwave.hs 16;" f _lwPos src/Dodge/Data/LinearShockwave.hs 14;" f _lwTimer src/Dodge/Data/LinearShockwave.hs 17;" f -_lyCounter src/Dodge/Annotation/Data.hs 16;" f -_lyGen src/Dodge/Annotation/Data.hs 15;" f +_lyCounter src/Dodge/Data/MetaTree.hs 31;" f +_lyGen src/Dodge/Data/MetaTree.hs 30;" f _machines src/Dodge/Data/LWorld.hs 127;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 130;" f @@ -2014,8 +2011,8 @@ _mapInvItmID src/Dodge/Data/HUD.hs 22;" f _mapInvOffset src/Dodge/Data/HUD.hs 20;" f _mapInvZoom src/Dodge/Data/HUD.hs 21;" f _matUBO src/Data/Preload/Render.hs 39;" f -_mbAttach src/Dodge/Data/MetaTree.hs 16;" f -_mbTree src/Dodge/Data/MetaTree.hs 16;" f +_mbAttach src/Dodge/Data/MetaTree.hs 18;" f +_mbTree src/Dodge/Data/MetaTree.hs 18;" f _mcColor src/Dodge/Data/Machine.hs 36;" f _mcDamage src/Dodge/Data/Machine.hs 38;" f _mcDir src/Dodge/Data/Machine.hs 35;" f @@ -2066,9 +2063,9 @@ _mouseButtonsReleased src/Dodge/Data/Input.hs 39;" f _mouseContext src/Dodge/Data/Input.hs 35;" f _mouseMoving src/Dodge/Data/Input.hs 36;" f _mousePos src/Dodge/Data/Input.hs 34;" f -_mtBranches src/Dodge/Data/MetaTree.hs 10;" f -_mtLabel src/Dodge/Data/MetaTree.hs 10;" f -_mtTree src/Dodge/Data/MetaTree.hs 10;" f +_mtBranches src/Dodge/Data/MetaTree.hs 12;" f +_mtLabel src/Dodge/Data/MetaTree.hs 12;" f +_mtTree src/Dodge/Data/MetaTree.hs 12;" f _musicData src/Data/Preload.hs 13;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 35;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 30;" f @@ -2082,8 +2079,8 @@ _mzInaccuracy src/Dodge/Data/Muzzle.hs 12;" f _mzPos src/Dodge/Data/Muzzle.hs 10;" f _mzRandomOffset src/Dodge/Data/Muzzle.hs 17;" f _mzRot src/Dodge/Data/Muzzle.hs 11;" f -_nodeMetaTree src/Dodge/Data/MetaTree.hs 14;" f -_nodeTree src/Dodge/Data/MetaTree.hs 13;" f +_nodeMetaTree src/Dodge/Data/MetaTree.hs 16;" f +_nodeTree src/Dodge/Data/MetaTree.hs 15;" f _nodesSearched src/Dodge/Data/Creature/Memory.hs 15;" f _nonInf src/Dodge/Data/CardinalPoint.hs 29;" f _numLinkEW src/Dodge/Data/Room.hs 33;" f @@ -2136,11 +2133,11 @@ _pjSpin src/Dodge/Data/Projectile.hs 21;" f _pjTimer src/Dodge/Data/Projectile.hs 24;" f _pjType src/Dodge/Data/Projectile.hs 26;" f _pjVel src/Dodge/Data/Projectile.hs 19;" f -_plExternalID src/Dodge/Data/GenWorld.hs 84;" f -_plIDCont src/Dodge/Data/GenWorld.hs 85;" f -_plMID src/Dodge/Data/GenWorld.hs 83;" f -_plSpot src/Dodge/Data/GenWorld.hs 81;" f -_plType src/Dodge/Data/GenWorld.hs 82;" f +_plExternalID src/Dodge/Data/GenWorld.hs 85;" f +_plIDCont src/Dodge/Data/GenWorld.hs 86;" f +_plMID src/Dodge/Data/GenWorld.hs 84;" f +_plSpot src/Dodge/Data/GenWorld.hs 82;" f +_plType src/Dodge/Data/GenWorld.hs 83;" f _playStatus src/Sound/Data.hs 17;" f _playingSounds src/Dodge/Data/World.hs 42;" f _pnZoning src/Dodge/Data/World.hs 52;" f @@ -2179,34 +2176,34 @@ _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 38;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 37;" f _proxSensorType src/Dodge/Data/Machine/Sensor.hs 28;" f _proxToggle src/Dodge/Data/Machine/Sensor.hs 29;" f -_psFallback src/Dodge/Data/GenWorld.hs 72;" f -_psPos src/Dodge/Data/GenWorld.hs 67;" f -_psRandShift src/Dodge/Data/GenWorld.hs 76;" f -_psRoomEff src/Dodge/Data/GenWorld.hs 71;" f -_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 75;" f -_psRot src/Dodge/Data/GenWorld.hs 67;" f -_psSelect src/Dodge/Data/GenWorld.hs 70;" f +_psFallback src/Dodge/Data/GenWorld.hs 73;" f +_psPos src/Dodge/Data/GenWorld.hs 68;" f +_psRandShift src/Dodge/Data/GenWorld.hs 77;" f +_psRoomEff src/Dodge/Data/GenWorld.hs 72;" f +_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 76;" f +_psRot src/Dodge/Data/GenWorld.hs 68;" f +_psSelect src/Dodge/Data/GenWorld.hs 71;" f _pulseBalls src/Dodge/Data/LWorld.hs 121;" f _pulseLasers src/Dodge/Data/LWorld.hs 120;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 56;" f _pulseRate src/Dodge/Data/Creature/Misc.hs 55;" f -_putBlock src/Dodge/Data/GenWorld.hs 44;" f -_putButton src/Dodge/Data/GenWorld.hs 39;" f -_putChasmPoly src/Dodge/Data/GenWorld.hs 62;" f -_putEndPoint src/Dodge/Data/GenWorld.hs 52;" f -_putID src/Dodge/Data/GenWorld.hs 61;" f -_putItem src/Dodge/Data/GenWorld.hs 42;" f -_putMachineMachine src/Dodge/Data/GenWorld.hs 34;" f -_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 36;" f -_putMachinePoly src/Dodge/Data/GenWorld.hs 33;" f -_putMachineWall src/Dodge/Data/GenWorld.hs 35;" f -_putPoly src/Dodge/Data/GenWorld.hs 44;" f -_putStartPoint src/Dodge/Data/GenWorld.hs 51;" f -_putWall src/Dodge/Data/GenWorld.hs 44;" f -_putWall src/Dodge/Data/GenWorld.hs 49;" f -_putWidth src/Dodge/Data/GenWorld.hs 50;" f -_pwPoly src/Dodge/Data/GenWorld.hs 54;" f -_pwWall src/Dodge/Data/GenWorld.hs 54;" f +_putBlock src/Dodge/Data/GenWorld.hs 45;" f +_putButton src/Dodge/Data/GenWorld.hs 40;" f +_putChasmPoly src/Dodge/Data/GenWorld.hs 63;" f +_putEndPoint src/Dodge/Data/GenWorld.hs 53;" f +_putID src/Dodge/Data/GenWorld.hs 62;" f +_putItem src/Dodge/Data/GenWorld.hs 43;" f +_putMachineMachine src/Dodge/Data/GenWorld.hs 35;" f +_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 37;" f +_putMachinePoly src/Dodge/Data/GenWorld.hs 34;" f +_putMachineWall src/Dodge/Data/GenWorld.hs 36;" f +_putPoly src/Dodge/Data/GenWorld.hs 45;" f +_putStartPoint src/Dodge/Data/GenWorld.hs 52;" f +_putWall src/Dodge/Data/GenWorld.hs 45;" f +_putWall src/Dodge/Data/GenWorld.hs 50;" f +_putWidth src/Dodge/Data/GenWorld.hs 51;" f +_pwPoly src/Dodge/Data/GenWorld.hs 55;" f +_pwWall src/Dodge/Data/GenWorld.hs 55;" f _pyFaces src/Polyhedra/Data.hs 14;" f _pzDamage src/Dodge/Data/PulseLaser.hs 15;" f _pzDir src/Dodge/Data/PulseLaser.hs 14;" f @@ -2241,16 +2238,16 @@ _rmConnectsTo src/Dodge/Data/GenWorld.hs 119;" f _rmEndWires src/Dodge/Data/GenWorld.hs 118;" f _rmFloor src/Dodge/Data/GenWorld.hs 112;" f _rmHeight src/Dodge/Data/Room.hs 38;" f -_rmInPmnt src/Dodge/Data/GenWorld.hs 109;" f -_rmLinkEff src/Dodge/Data/GenWorld.hs 99;" f -_rmLinks src/Dodge/Data/GenWorld.hs 97;" f +_rmInPmnt src/Dodge/Data/GenWorld.hs 110;" f +_rmLinkEff src/Dodge/Data/GenWorld.hs 100;" f +_rmLinks src/Dodge/Data/GenWorld.hs 98;" f _rmMID src/Dodge/Data/GenWorld.hs 120;" f _rmMParent src/Dodge/Data/GenWorld.hs 121;" f _rmName src/Dodge/Data/GenWorld.hs 113;" f -_rmPath src/Dodge/Data/GenWorld.hs 107;" f -_rmPmnts src/Dodge/Data/GenWorld.hs 108;" f -_rmPolys src/Dodge/Data/GenWorld.hs 96;" f -_rmPos src/Dodge/Data/GenWorld.hs 106;" f +_rmPath src/Dodge/Data/GenWorld.hs 108;" f +_rmPmnts src/Dodge/Data/GenWorld.hs 109;" f +_rmPolys src/Dodge/Data/GenWorld.hs 97;" f +_rmPos src/Dodge/Data/GenWorld.hs 107;" f _rmRandPSs src/Dodge/Data/GenWorld.hs 116;" f _rmShift src/Dodge/Data/GenWorld.hs 114;" f _rmStartWires src/Dodge/Data/GenWorld.hs 117;" f @@ -2446,12 +2443,12 @@ _unNInt src/NewInt.hs 17;" f _unNIntMap src/NewInt.hs 23;" f _unNIntSet src/NewInt.hs 20;" f _unPrimitiveMode src/Shader/Data.hs 99;" f -_unPutCrit src/Dodge/Data/GenWorld.hs 31;" f -_unST src/Dodge/Data/MetaTree.hs 18;" f +_unPutCrit src/Dodge/Data/GenWorld.hs 32;" f +_unST src/Dodge/Data/MetaTree.hs 20;" f _unTO src/Shader/Data.hs 59;" f _unfiredBarrels src/Dodge/Data/Item/Params.hs 19;" f _unpauseClock src/Dodge/Data/World.hs 56;" f -_unputTerminal src/Dodge/Data/GenWorld.hs 41;" f +_unputTerminal src/Dodge/Data/GenWorld.hs 42;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f _useExactly src/Dodge/Data/Muzzle.hs 62;" f _useMapperLines src/Dodge/Data/Item/Use.hs 40;" f @@ -2579,7 +2576,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f -addPane src/Dodge/Placement/PlaceSpot.hs 149;" f +addPane src/Dodge/Placement/PlaceSpot.hs 147;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 102;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2613,7 +2610,7 @@ alteRifle src/Dodge/Item/Held/Cane.hs 22;" f ammoMagInfo src/Dodge/Item/Info.hs 49;" f ammoMagSPic src/Dodge/Item/Draw/SPic.hs 145;" f amr src/Dodge/Item/Held/Rod.hs 34;" f -anRoom src/Dodge/Floor.hs 130;" f +anRoom src/Dodge/Floor.hs 124;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 121;" f analyserByDoorWithPrompt src/Dodge/Room/LasTurret.hs 124;" f @@ -2624,7 +2621,6 @@ andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 161;" f angleVV src/Geometry/Vector.hs 57;" f angleVV3 src/Geometry/Vector3D.hs 122;" f -annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 67;" f anythingHitCirc src/Dodge/Base/Collide.hs 338;" f applyCME src/Dodge/HeldUse.hs 361;" f @@ -2676,11 +2672,11 @@ atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 243;" f atNthLinkOut src/Dodge/PlacementSpot.hs 224;" f atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 227;" f atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 246;" f -attachBranch src/Dodge/Tree/Compose.hs 83;" f +attachBranch src/Dodge/Tree/Compose.hs 84;" f attachInfo src/Dodge/Item/Info.hs 58;" f -attachList' src/Dodge/Tree/Compose.hs 80;" f -attachOnward src/Dodge/Tree/Compose.hs 95;" f -attachOnward' src/Dodge/Tree/Compose.hs 98;" f +attachList' src/Dodge/Tree/Compose.hs 81;" f +attachOnward src/Dodge/Tree/Compose.hs 96;" f +attachOnward' src/Dodge/Tree/Compose.hs 99;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 68;" f attribSize src/Shader/Compile.hs 306;" f @@ -2773,7 +2769,7 @@ bloodShort8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 598;" f blowTorch src/Dodge/Item/Held/SprayGuns.hs 43;" f blue src/Color.hs 16;" f blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f -bossKeyItems src/Dodge/LockAndKey.hs 12;" f +bossKeyItems src/Dodge/LockAndKey.hs 13;" f bossRoom src/Dodge/Room/Boss.hs 60;" f bounceDir src/Dodge/Bullet.hs 109;" f bouncePoint src/Dodge/Base/Collide.hs 84;" f @@ -2941,16 +2937,16 @@ combineItemListYouX src/Dodge/Combine.hs 35;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f -combineTree src/Dodge/Tree/Compose.hs 66;" f +combineTree src/Dodge/Tree/Compose.hs 67;" f commandColor src/Dodge/Terminal.hs 114;" f commonPrefix src/Dodge/Debug/Terminal.hs 148;" f comp src/Quaternion.hs 65;" f -compactDraw src/Dodge/LevelGen.hs 95;" f -compactDraw' src/Dodge/LevelGen.hs 106;" f -compactDrawTree src/Dodge/LevelGen.hs 89;" f +compactDraw src/Dodge/LevelGen.hs 96;" f +compactDraw' src/Dodge/LevelGen.hs 107;" f +compactDrawTree src/Dodge/LevelGen.hs 90;" f compileAndCheckShader src/Shader/Compile.hs 277;" f -composeNode src/Dodge/Tree/Compose.hs 76;" f -composeTree src/Dodge/Tree/Compose.hs 46;" f +composeNode src/Dodge/Tree/Compose.hs 77;" f +composeTree src/Dodge/Tree/Compose.hs 47;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 640;" f conEffects src/Dodge/Concurrent.hs 12;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f @@ -2969,11 +2965,11 @@ coolMinigun src/Dodge/Creature/State.hs 94;" f copier src/Dodge/Item/Scope.hs 88;" f copierItemUpdate src/Dodge/Creature/State.hs 130;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f -corDoor src/Dodge/Room/Room.hs 377;" f +corDoor src/Dodge/Room/Room.hs 375;" f cornerList src/Preload/Render.hs 198;" f corpseOrGib src/Dodge/Creature/Update.hs 102;" f corridor src/Dodge/Room/Corridor.hs 17;" f -corridorBoss src/Dodge/LockAndKey.hs 133;" f +corridorBoss src/Dodge/LockAndKey.hs 134;" f corridorN src/Dodge/Room/Corridor.hs 52;" f corridorWallN src/Dodge/Room/Corridor.hs 71;" f crAdd src/Dodge/Room/RezBox.hs 115;" f @@ -3041,7 +3037,7 @@ creatureShootPulseLaser src/Dodge/HeldUse.hs 859;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 53;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 74;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 63;" f -critInDeadEnd src/Dodge/Room/Room.hs 235;" f +critInDeadEnd src/Dodge/Room/Room.hs 234;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 29;" f crossPic src/Dodge/Render/Label.hs 27;" f crossProd src/Geometry/Vector3D.hs 41;" f @@ -3102,7 +3098,7 @@ dbArgChain src/Dodge/Base.hs 170;" f dbwMuzzles src/Dodge/HeldUse.hs 314;" f deZoneIX src/Dodge/Zoning/Base.hs 89;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f -deadEndRoom src/Dodge/Room/Room.hs 238;" f +deadEndRoom src/Dodge/Room/Room.hs 237;" f deadFeet src/Dodge/Creature/Picture.hs 68;" f deadRot src/Dodge/Creature/Picture.hs 84;" f deadScalp src/Dodge/Creature/Picture.hs 81;" f @@ -3120,8 +3116,8 @@ debugOn src/Dodge/Data/Config.hs 151;" f debugSelectCreatureList src/Dodge/Debug.hs 88;" f debugSelectCreatureMessage src/Dodge/Debug.hs 79;" f decodeSensorType src/Dodge/Terminal.hs 72;" f -decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f -decomposeTree src/Dodge/Tree/Compose.hs 57;" f +decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f +decomposeTree src/Dodge/Tree/Compose.hs 58;" 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 @@ -3272,7 +3268,7 @@ doGenFloat src/Dodge/HeldUse.hs 1184;" f doGravityPU src/Dodge/Projectile/Update.hs 36;" f doHeldUseEffect src/Dodge/HeldUse.hs 343;" f doInPlacements src/Dodge/Layout.hs 81;" f -doIndividualPlacements src/Dodge/Layout.hs 106;" f +doIndividualPlacements src/Dodge/Layout.hs 91;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f doIntImp src/Dodge/CreatureEffect.hs 24;" f doItemTimeScroll src/Dodge/Update.hs 191;" f @@ -3292,7 +3288,7 @@ doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 7;" f doRegexInput src/Dodge/Update/Input/InGame.hs 447;" f doRoomInPlacements src/Dodge/Layout.hs 86;" f -doRoomPlacements src/Dodge/Layout.hs 111;" f +doRoomPlacements src/Dodge/Layout.hs 96;" f doRoomShift src/Dodge/Room/Link.hs 33;" f doScopeZoom src/Dodge/Update/Scroll.hs 91;" f doSectionSize src/Dodge/DisplayInventory.hs 211;" f @@ -3318,7 +3314,7 @@ doorMechanism src/Dodge/DrWdWd.hs 24;" f doorMechanismStepwise src/Dodge/DrWdWd.hs 59;" f dotV src/Geometry/Vector.hs 75;" f dotV3 src/Geometry/Vector3D.hs 119;" f -doubleCorridorBarrels src/Dodge/Room/Room.hs 268;" f +doubleCorridorBarrels src/Dodge/Room/Room.hs 267;" f doubleFindMax src/Dodge/Update/Scroll.hs 181;" f doubleFindMin src/Dodge/Update/Scroll.hs 160;" f doubleFindPred src/Dodge/Update/Scroll.hs 188;" f @@ -3530,7 +3526,7 @@ errorHead src/ListHelp.hs 76;" f errorIsLHS src/Geometry.hs 66;" f errorNormalizeV src/Geometry.hs 55;" f errorPointInPolygon src/Geometry.hs 47;" f -evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 135;" f +evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 133;" f evenOddSplit src/Dodge/Base.hs 160;" f exitTerminalSubInv src/Dodge/WorldEffect.hs 116;" f expandLine src/Dodge/Picture.hs 30;" f @@ -3608,6 +3604,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 54;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 39;" f @@ -3645,13 +3642,13 @@ gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gRandify src/Dodge/Randify.hs 11;" f gadgetEffect src/Dodge/HeldUse.hs 46;" f gameOverMenu src/Dodge/Menu.hs 189;" f -gameRoomFromRoom src/Dodge/Layout.hs 151;" f +gameRoomFromRoom src/Dodge/Layout.hs 136;" f gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f -gameRoomsFromRooms src/Dodge/Layout.hs 148;" f +gameRoomsFromRooms src/Dodge/Layout.hs 133;" f gameplayMenu src/Dodge/Menu.hs 136;" f gameplayMenuOptions src/Dodge/Menu.hs 139;" f gasType src/Dodge/HeldUse.hs 1141;" f -generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f +generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f generateGraphs src/Dodge/LevelGen.hs 42;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f generateLevelFromRoomList src/Dodge/Layout.hs 33;" f @@ -3691,7 +3688,7 @@ getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 128;" f -getTiles src/Dodge/Layout.hs 198;" f +getTiles src/Dodge/Layout.hs 183;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f getVolleyBurst src/Dodge/HeldUse.hs 125;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f @@ -3820,8 +3817,7 @@ initTexture2DArray src/Shader/AuxAddition.hs 31;" f initTexture2DArrayData src/Shader/AuxAddition.hs 46;" f initTexture2DArraySquare src/Shader/AuxAddition.hs 16;" f initWallZoning src/Dodge/Wall/Zone.hs 12;" f -initialAnoTree src/Dodge/Floor.hs 35;" f -initialRoomTree src/Dodge/Floor.hs 22;" f +initialRoomTree src/Dodge/Floor.hs 31;" f initialWorld src/Dodge/Initialisation.hs 15;" f initialisePlaying src/Sound.hs 77;" f initializeGLState src/Preload/Render.hs 216;" f @@ -3840,7 +3836,7 @@ insertWall src/Dodge/Placement/PlaceSpot/Block.hs 122;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 70;" f -intAnno src/Dodge/Floor.hs 124;" f +intAnno src/Dodge/Floor.hs 118;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f interpWith src/Dodge/Creature/Boid.hs 11;" f intersectCircSeg src/Geometry/Intersect.hs 335;" f @@ -3951,7 +3947,7 @@ itemInternalValue src/Dodge/Item/Display.hs 34;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f itemInvLock src/Dodge/HeldUse.hs 429;" f itemMuzzles src/Dodge/HeldUse.hs 161;" f -itemRooms src/Dodge/LockAndKey.hs 39;" f +itemRooms src/Dodge/LockAndKey.hs 40;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f itemScan src/Dodge/Item/Scope.hs 63;" f @@ -3986,7 +3982,7 @@ k' src/ShortShow.hs 44;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 75;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 63;" f -keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f +keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f keyPic src/Dodge/Item/Draw/SPic.hs 471;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f @@ -4086,8 +4082,8 @@ locToTop src/Dodge/DoubleTree.hs 301;" f locUp src/Dodge/DoubleTree.hs 272;" f locUp' src/Dodge/DoubleTree.hs 288;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f -lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f -lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f +lockRoomKeyItems src/Dodge/LockAndKey.hs 26;" f +lockRoomMultiItems src/Dodge/LockAndKey.hs 16;" f lockedStart src/Dodge/Room/RunPast.hs 34;" f logistic src/Dodge/Base.hs 98;" f longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f @@ -4290,8 +4286,8 @@ moveWallID src/Dodge/Wall/Move.hs 24;" f moveWallIDToward src/Dodge/Wall/Move.hs 47;" f moveWallIDUnsafe src/Dodge/Wall/Move.hs 19;" f moveZoomCamera src/Dodge/Update/Camera.hs 87;" f -mtTopLabels src/Dodge/Tree/Compose.hs 49;" f -mtUnderLabels src/Dodge/Tree/Compose.hs 52;" f +mtTopLabels src/Dodge/Tree/Compose.hs 50;" f +mtUnderLabels src/Dodge/Tree/Compose.hs 53;" f muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f muin src/Dodge/RoomLink.hs 132;" f multGunCrit src/Dodge/Creature.hs 77;" f @@ -4300,18 +4296,18 @@ multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f muout src/Dodge/RoomLink.hs 129;" f muzFlareAt src/Dodge/HeldUse.hs 674;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 157;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 163;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 166;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 155;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 161;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 164;" f mvGust src/Dodge/Update.hs 770;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 224;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 222;" f mvP src/Dodge/Wall/Move.hs 54;" f -mvPP src/Dodge/Placement/PlaceSpot.hs 160;" f +mvPP src/Dodge/Placement/PlaceSpot.hs 158;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 154;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 152;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 207;" f myIntersectSegSeg src/Geometry/Intersect.hs 185;" f @@ -4331,7 +4327,7 @@ newSounds src/Dodge/Creature/Perception.hs 171;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f nextArc src/Dodge/Tesla.hs 61;" f nextInSectionSS src/Dodge/SelectionSections.hs 34;" f -nextLayoutInt src/Dodge/Annotation/Data.hs 39;" f +nextLayoutInt src/Dodge/Data/MetaTree.hs 43;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f @@ -4347,10 +4343,10 @@ numColor src/Color.hs 128;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLushort src/Shader/Parameters.hs 29;" f numLayers src/Picture/Data.hs 31;" f -numMetaTree src/Dodge/Tree/Compose.hs 119;" f -numMetaTree' src/Dodge/Tree/Compose.hs 122;" f -numSelfTree src/Dodge/Tree/Compose.hs 107;" f -numSelfTree' src/Dodge/Tree/Compose.hs 110;" f +numMetaTree src/Dodge/Tree/Compose.hs 120;" f +numMetaTree' src/Dodge/Tree/Compose.hs 123;" f +numSelfTree src/Dodge/Tree/Compose.hs 108;" f +numSelfTree' src/Dodge/Tree/Compose.hs 111;" f numShads src/Picture/Data.hs 42;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 183;" f @@ -4408,6 +4404,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f +passthroughLockKeyLists src/Dodge/Floor.hs 127;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f @@ -4445,27 +4442,27 @@ pincerP''' src/Dodge/Creature/Boid.hs 75;" f pingPongBetween src/Render.hs 221;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f -pistolerRoom src/Dodge/Room/Room.hs 322;" f +pistolerRoom src/Dodge/Room/Room.hs 320;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 225;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 169;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 199;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 167;" f +plMachine' src/Dodge/Placement/PlaceSpot.hs 197;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 175;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 213;" f +plTurret src/Dodge/Placement/PlaceSpot.hs 173;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 211;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 40;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 89;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 76;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 57;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 143;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 87;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 74;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 55;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 141;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4637,7 +4634,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 103;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 106;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f putShape src/Dodge/Room/Foreground.hs 134;" f -putStrLnAppend src/Dodge/LevelGen.hs 83;" f +putStrLnAppend src/Dodge/LevelGen.hs 84;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 55;" f putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 22;" f putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 17;" f @@ -4757,7 +4754,7 @@ resumeSound src/Dodge/SoundLogic.hs 48;" f retreatActionsPistol src/Dodge/Humanoid.hs 249;" f retreatFireLauncher src/Dodge/Humanoid.hs 270;" f retreatPointForFrom src/Dodge/Creature/Impulse/Flee.hs 7;" f -reversePair src/Dodge/LevelGen.hs 86;" f +reversePair src/Dodge/LevelGen.hs 87;" f rewinder src/Dodge/Item/Held/Utility.hs 36;" f rezBox src/Dodge/Room/RezBox.hs 31;" f rezBox' src/Dodge/Room/RezBox.hs 46;" f @@ -4785,7 +4782,7 @@ rmInvItem src/Dodge/Inventory.hs 73;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f rmOutLinks src/Dodge/RoomLink.hs 138;" f roomC src/Dodge/Room/Room.hs 39;" f -roomCCrits src/Dodge/Room/Room.hs 263;" f +roomCCrits src/Dodge/Room/Room.hs 262;" f roomCenterPillar src/Dodge/Room/Room.hs 120;" f roomCritLS src/Dodge/Room/RunPast.hs 24;" f roomCross src/Dodge/Room/Boss.hs 84;" f @@ -4905,14 +4902,14 @@ selSecSelSize src/Dodge/SelectionSections.hs 143;" f selSecYint src/Dodge/SelectionSections.hs 152;" f selectCreatureDebugItem src/Dodge/Debug.hs 65;" f selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f -sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f -sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f +sensAboveDoor src/Dodge/Room/SensorDoor.hs 54;" f +sensInsideDoor src/Dodge/Room/SensorDoor.hs 60;" f senseDamage src/Dodge/Machine/Update.hs 209;" f sensorReqToString src/Dodge/Machine/Update.hs 194;" f -sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f -sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f +sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f +sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 47;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 152;" f +sensorTut src/Dodge/Room/Tutorial.hs 159;" f sensorTypeDamages src/Dodge/Machine/Update.hs 228;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f @@ -4938,6 +4935,7 @@ setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 288;" f +setRoomInt src/Dodge/Room/Tutorial.hs 60;" 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 @@ -4968,7 +4966,7 @@ setupVBOStatic src/Shader/Compile.hs 116;" f setupVBOVAO src/Shader/Compile.hs 200;" f setupVertexAttribPointer src/Shader/Compile.hs 224;" f setupVertexAttribs src/Shader/Compile.hs 218;" f -setupWorldBounds src/Dodge/Layout.hs 115;" f +setupWorldBounds src/Dodge/Layout.hs 100;" f sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f shadVBOptr src/Shader.hs 40;" f shaderTypeExt src/Shader/Compile.hs 172;" f @@ -4988,7 +4986,7 @@ shellModule src/Dodge/Item/Scope.hs 123;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shiftByV2 src/Dodge/PlacementSpot.hs 253;" f -shiftChildren src/Dodge/Tree/Compose.hs 43;" f +shiftChildren src/Dodge/Tree/Compose.hs 44;" f shiftDraw src/Dodge/Render/ShapePicture.hs 79;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 85;" f shiftInBy src/Dodge/PlacementSpot.hs 250;" f @@ -5019,10 +5017,10 @@ shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f shootTeslaArc src/Dodge/HeldUse.hs 1211;" f shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f shootTractorBeam src/Dodge/HeldUse.hs 794;" f -shootersRoom src/Dodge/Room/Room.hs 316;" f -shootersRoom' src/Dodge/Room/Room.hs 283;" f -shootersRoom1 src/Dodge/Room/Room.hs 306;" f -shootingRange src/Dodge/Room/Room.hs 333;" f +shootersRoom src/Dodge/Room/Room.hs 314;" f +shootersRoom' src/Dodge/Room/Room.hs 282;" f +shootersRoom1 src/Dodge/Room/Room.hs 305;" f +shootingRange src/Dodge/Room/Room.hs 331;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f shortShow src/ShortShow.hs 7;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 708;" f @@ -5032,7 +5030,7 @@ showAttachItem src/Dodge/Item/Display.hs 92;" f showEnabledDebugs src/Dodge/Debug/Picture.hs 155;" f showEquipItem src/Dodge/Item/Display.hs 107;" f showInt src/Dodge/Item/Info.hs 75;" f -showIntsString src/Dodge/Tree/Compose.hs 129;" f +showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f showManObj src/Dodge/TestString.hs 45;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f @@ -5066,7 +5064,7 @@ slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 171;" f smallBattery src/Dodge/Item/Ammo.hs 60;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f -smallDrawTree src/Dodge/LevelGen.hs 92;" f +smallDrawTree src/Dodge/LevelGen.hs 93;" f smallGlass1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 646;" f smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f @@ -5077,7 +5075,7 @@ smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f -someCrits src/Dodge/LockAndKey.hs 120;" f +someCrits src/Dodge/LockAndKey.hs 121;" f soundAngle src/Dodge/SoundLogic.hs 163;" f soundContinue src/Dodge/SoundLogic.hs 131;" f soundContinueVol src/Dodge/SoundLogic.hs 145;" f @@ -5107,7 +5105,7 @@ sparkRandDir src/Dodge/Spark.hs 116;" f sparkToDamage src/Dodge/Spark.hs 39;" f spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 56;" f -spawnerRoom src/Dodge/Room/Room.hs 361;" f +spawnerRoom src/Dodge/Room/Room.hs 359;" f speedLegs src/Dodge/Item/Equipment.hs 90;" f splashMenu src/Dodge/Menu.hs 30;" f splashMenuOptions src/Dodge/Menu.hs 35;" f @@ -5191,7 +5189,7 @@ switchDoor src/Dodge/Placement/Instance/Door.hs 104;" f switchWallCol src/Dodge/Default/Door.hs 12;" f t src/ShortShow.hs 44;" f tEast src/Dodge/Room/Corridor.hs 90;" f -tToBTree src/Dodge/Tree/Compose.hs 92;" f +tToBTree src/Dodge/Tree/Compose.hs 93;" f tWest src/Dodge/Room/Corridor.hs 115;" f tabComplete src/Dodge/Terminal.hs 117;" f tabComplete' src/Dodge/Terminal.hs 123;" f @@ -5265,7 +5263,7 @@ thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 92;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f throwItem src/Dodge/Creature/Action.hs 211;" f tileTexCoords src/Tile.hs 11;" f -tilesFromRooms src/Dodge/Layout.hs 195;" f +tilesFromRooms src/Dodge/Layout.hs 180;" f tilesToLine src/Shader/AuxAddition.hs 66;" f timeFlowUpdate src/Dodge/Update.hs 167;" f timeScroller src/Dodge/Item/Held/Utility.hs 42;" f @@ -5290,7 +5288,7 @@ toColor8 src/Color.hs 148;" f toFloatVAs src/Shader/Compile.hs 211;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f -toOnward src/Dodge/Tree/Compose.hs 101;" f +toOnward src/Dodge/Tree/Compose.hs 102;" f toTopLeft src/Dodge/Render/List.hs 218;" f toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f @@ -5382,12 +5380,12 @@ tryUseParent src/Dodge/Creature/State.hs 144;" f 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 44;" f -tutDrop src/Dodge/Room/Tutorial.hs 61;" f -tutRezBox src/Dodge/Room/Tutorial.hs 162;" f -tutRoomTree src/Dodge/Floor.hs 26;" f -tutRooms src/Dodge/Room/Tutorial.hs 93;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 184;" f +tutAnoTree src/Dodge/Room/Tutorial.hs 39;" f +tutDrop src/Dodge/Room/Tutorial.hs 67;" f +tutRezBox src/Dodge/Room/Tutorial.hs 169;" f +tutRoomTree src/Dodge/Floor.hs 22;" f +tutRooms src/Dodge/Room/Tutorial.hs 100;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 191;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f @@ -5609,7 +5607,7 @@ wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallToSurface src/Dodge/Base/Collide.hs 172;" f -wallsFromRooms src/Dodge/Layout.hs 136;" f +wallsFromRooms src/Dodge/Layout.hs 121;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f warmupSound src/Dodge/HeldUse.hs 1421;" f warningRooms src/Dodge/Room/Warning.hs 26;" f @@ -5621,12 +5619,12 @@ wasdWithAiming src/Dodge/Creature/YourControl.hs 125;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 179;" f weakenMatS src/Dodge/Material/Sound.hs 18;" f -weaponBehindPillar src/Dodge/Room/Room.hs 178;" f -weaponBetweenPillars src/Dodge/Room/Room.hs 194;" f -weaponEmptyRoom src/Dodge/Room/Room.hs 139;" f -weaponLongCorridor src/Dodge/Room/Room.hs 219;" f -weaponRoom src/Dodge/Room/Room.hs 252;" f -weaponUnderCrits src/Dodge/Room/Room.hs 157;" f +weaponBehindPillar src/Dodge/Room/Room.hs 177;" f +weaponBetweenPillars src/Dodge/Room/Room.hs 193;" f +weaponEmptyRoom src/Dodge/Room/Room.hs 138;" f +weaponLongCorridor src/Dodge/Room/Room.hs 218;" f +weaponRoom src/Dodge/Room/Room.hs 251;" f +weaponUnderCrits src/Dodge/Room/Room.hs 156;" f wedgeGeom src/Dodge/Base.hs 42;" f wedgeOfThickness src/Dodge/Picture.hs 9;" f whirS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 712;" f