From 3f5f5d2c6b7e45fa10d0bcf7714f85563c9bc697 Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 24 Oct 2025 23:22:16 +0100 Subject: [PATCH] Cleanup --- src/Dodge/Block/Debris.hs | 2 - src/Dodge/Data/GenWorld.hs | 8 +-- src/Dodge/Default/Wall.hs | 18 +++--- src/Dodge/Placement/Instance/Door.hs | 23 +++----- src/Dodge/Placement/PlaceSpot.hs | 4 +- src/Dodge/Placement/PlaceSpot/Block.hs | 5 +- src/Dodge/Room/Airlock.hs | 77 +++++++++----------------- src/Dodge/Room/Door.hs | 3 +- src/Dodge/Room/LongDoor.hs | 2 +- src/Dodge/Room/Procedural.hs | 1 - src/Dodge/Room/Tutorial.hs | 1 + tags | 50 ++++++++--------- 12 files changed, 77 insertions(+), 117 deletions(-) diff --git a/src/Dodge/Block/Debris.hs b/src/Dodge/Block/Debris.hs index 09c12415f..09975628d 100644 --- a/src/Dodge/Block/Debris.hs +++ b/src/Dodge/Block/Debris.hs @@ -39,12 +39,10 @@ makeBlockDebris bl w = foldl' (flip $ makeDebris mt) w ps where dsize = debrisSize mt ps = gridInPolygon dsize $ shrinkPolyOnEdges dsize $ reverse (_blFootprint bl) - --(mt, col) = fromMaybe (Stone, greyN 0.5) $ do mt = fromMaybe Stone $ do wlids <- w ^? cWorld . lWorld . blocks . ix (_blID bl) . blWallIDs (wlid, _) <- IS.minView wlids wl <- w ^? cWorld . lWorld . walls . ix wlid - --return (_wlMaterial wl, _wlColor wl) return $ _wlMaterial wl --makeDebris :: Material -> Color -> Point2 -> World -> World diff --git a/src/Dodge/Data/GenWorld.hs b/src/Dodge/Data/GenWorld.hs index 561ce729c..01d74eaf8 100644 --- a/src/Dodge/Data/GenWorld.hs +++ b/src/Dodge/Data/GenWorld.hs @@ -52,9 +52,7 @@ data PSType , _putEndPoint :: Point2 } | PutWall {_pwPoly :: [Point2], _pwWall :: Wall} --- | PutSlideDr Door Wall Float Point2 Point2 - | PutDoor' Door Wall --- | PutDoor WdBl Float Point2A Point2A + | PutDoor Door Wall | RandPS (State StdGen PSType) | PutForeground ForegroundShape | PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld) @@ -79,9 +77,7 @@ instance ShortShow PSType where shortShow PutTrigger {} = "PutTrigger" shortShow PutLineBlock {} = "PutLineBlock" shortShow PutWall {} = "PutWall" --- shortShow PutSlideDr {} = "PutSlideDr" --- shortShow PutDoor {} = "PutDoor" - shortShow PutDoor' {} = "PutDoor'" + shortShow PutDoor {} = "PutDoor" shortShow RandPS {} = "RandPS" shortShow PutForeground {} = "PutForeground" shortShow PutWorldUpdate {} = "PutWorldUpdate" diff --git a/src/Dodge/Default/Wall.hs b/src/Dodge/Default/Wall.hs index 852d03302..45ba00980 100644 --- a/src/Dodge/Default/Wall.hs +++ b/src/Dodge/Default/Wall.hs @@ -38,20 +38,18 @@ defaultCrystalWall = defaultWall & wlOpacity .~ SeeThrough & wlMaterial .~ Cryst defaultMachineWall :: Wall defaultMachineWall = defaultWall - { _wlOpacity = SeeAbove - , _wlRotateTo = False - , _wlStructure = MachinePart 0 - , _wlMaterial = Metal - , _wlTouchThrough = True - } + & wlOpacity .~ SeeAbove + & wlRotateTo .~ False + & wlStructure .~ MachinePart 0 + & wlMaterial .~ Metal + & wlTouchThrough .~ True defaultDirtWall :: Wall defaultDirtWall = defaultWall - { _wlOpacity = Opaque 6 - , _wlRotateTo = False - , _wlMaterial = Dirt - } + & wlOpacity .~ Opaque 6 + & wlRotateTo .~ False + & wlMaterial .~ Dirt defaultWindow :: Wall defaultWindow = defaultWall & wlOpacity .~ SeeThrough & wlMaterial .~ Glass diff --git a/src/Dodge/Placement/Instance/Door.hs b/src/Dodge/Placement/Instance/Door.hs index d99aae149..56a02c407 100644 --- a/src/Dodge/Placement/Instance/Door.hs +++ b/src/Dodge/Placement/Instance/Door.hs @@ -15,18 +15,16 @@ import Geometry import Linear putDoubleDoor :: - Bool -> Wall -> WdBl -> Point2 -> Point2 -> Float -> Placement -putDoubleDoor isauto wl cond a b speed = - putDoubleDoorThen isauto wl cond 1 a b speed (const $ const Nothing) +putDoubleDoor wl cond a b speed = + putDoubleDoorThen wl cond 1 a b speed (const $ const Nothing) putDoubleDoorThen :: - Bool -> Wall -> WdBl -> Float -> @@ -35,16 +33,15 @@ putDoubleDoorThen :: Float -> (Placement -> Placement -> Maybe Placement) -> Placement -putDoubleDoorThen isauto wl cond soff a b speed cont = - doorBetween isauto wl cond soff a half speed $ +putDoubleDoorThen wl cond soff a b speed cont = + doorBetween wl cond soff a half speed $ \pl1 -> Just $ - doorBetween isauto wl cond soff b half speed $ + doorBetween wl cond soff b half speed $ \pl2 -> cont pl1 pl2 where half = 0.5 *.* (a +.+ b) doorBetween :: - Bool -> Wall -> WdBl -> Float -> @@ -53,9 +50,9 @@ doorBetween :: Float -> (Placement -> Maybe Placement) -> Placement -doorBetween isauto wl cond soff pa pb speed g = case divideLine 40 pa pb of +doorBetween wl cond soff pa pb speed g = case divideLine 40 pa pb of [x, y] -> ptCont (putSlideDr adoor wl soff x y) g - (x : y : zs) -> divideDoorPane isauto Nothing wl cond (soff - dist y pb) speed (zip (x : y : zs) (y : zs)) g + (x : y : zs) -> divideDoorPane Nothing wl cond (soff - dist y pb) speed (zip (x : y : zs) (y : zs)) g _ -> error "tried to create doorBetween with too few points" where adoor = @@ -65,7 +62,6 @@ doorBetween isauto wl cond soff pa pb speed g = case divideLine 40 pa pb of divideDoorPane :: - Bool -> Maybe Int -> Wall -> WdBl -> @@ -74,9 +70,9 @@ divideDoorPane :: [(Point2, Point2)] -> (Placement -> Maybe Placement) -> Placement -divideDoorPane isauto mid wl cond soff speed ppairs g = case ppairs of +divideDoorPane mid wl cond soff speed ppairs g = case ppairs of [p] -> ptCont (adoor p) g - (p : ps) -> ptCont (adoor p) $ \pl -> Just $ divideDoorPane isauto (_plMID pl) wl cond soff speed ps g + (p : ps) -> ptCont (adoor p) $ \pl -> Just $ divideDoorPane (_plMID pl) wl cond soff speed ps g _ -> undefined where adoor (x, y) = putSlideDr thedoor wl soff x y @@ -92,7 +88,6 @@ putAutoDoor a b = Placement (PS 0 0) (PutCoord a) Nothing Nothing $ \_ apl -> y = w ^?! gwWorld . coordinates . ix (bpl ^?! plMID . _Just) in Just $ putDoubleDoor - True defaultAutoWall (WdBlCrFilterNearPoint 40 (0.5 *^ (x + y)) CrIsAnimate) a diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index bec84bfbf..0188e24cc 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -134,9 +134,7 @@ placeSpotID rid ps pt w = case pt of PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p' rot ls) w RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w --- PutDoor f l p1 p2 -> plDoor f l (pashift p1) (pashift p2) w - PutDoor' dr wl -> plDoor' (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w --- PutSlideDr wl dr off a b -> plSlideDoor wl dr off (doShift a) (doShift b) w + PutDoor dr wl -> plDoor' (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w PutBlock bl wl ps' -> plBlock diff --git a/src/Dodge/Placement/PlaceSpot/Block.hs b/src/Dodge/Placement/PlaceSpot/Block.hs index ef30d042d..32ec0ec13 100644 --- a/src/Dodge/Placement/PlaceSpot/Block.hs +++ b/src/Dodge/Placement/PlaceSpot/Block.hs @@ -42,9 +42,8 @@ insertStructureWalls :: Int -> World -> World -insertStructureWalls f wl ps sid wid = insertWalls wls - where - wls = +insertStructureWalls f wl ps sid wid = + insertWalls $ zipWith (\i xy -> wl & wlLine .~ xy & wlID .~ i & wlStructure .~ f sid) [wid ..] diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 9195b00ba..47c0b5543 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -3,6 +3,7 @@ {- Rooms that contain two doors and a switch alternating both. -} module Dodge.Room.Airlock where +import Dodge.PlacementSpot import Dodge.LevelGen.DoorPane import Dodge.Default.Door import qualified Data.IntMap.Strict as IM @@ -38,8 +39,8 @@ decontamRoom i = & rmPmnts .~ [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ \btid -> Just $ - putDoubleDoorThen False thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ - \_ _ -> Just $ putDoubleDoor False thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2 + putDoubleDoorThen defaultDoorWall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ + \_ _ -> Just $ putDoubleDoor defaultDoorWall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2 , invisibleWall $ rectNSWE 60 40 (-40) (-30) , spanLightI (V2 (-20) 30) (V2 (-20) 70) , analyser (NoItemZone ps) (PS 50 0) (PS mcpos 0) & plExternalID ?~ i @@ -52,7 +53,7 @@ decontamRoom i = f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do pmnt <- gw ^? genPmnt . ix i return $ - putDoubleDoor False + putDoubleDoor defaultDoorWall (cond pmnt) (V2 (-10) 35) @@ -62,8 +63,6 @@ decontamRoom i = mcpos = V2 70 50 cutps = [rectNSWE 100 0 0 40, switchcut] ps = (\p -> p - mcpos) <$> orderPolygon (concat cutps) - --thewall = switchWallCol col - thewall = defaultDoorWall switchcut = rectNSWE 65 35 (-40) 80 lnks = [ (V2 20 95, 0) @@ -81,8 +80,8 @@ airlock0 = , _rmPmnts = [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ \btid -> Just $ - putDoubleDoorThen False thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ - \_ _ -> Just $ putDoubleDoor False thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2 + putDoubleDoorThen defaultDoorWall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ + \_ _ -> Just $ putDoubleDoor defaultDoorWall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2 , invisibleWall $ rectNSWE 60 40 (-40) (-30) , spanLightI (V2 (-2) 30) (V2 (-2) 70) , sps0 $ putShape $ thinHighBar 75 (V2 40 50) (V2 (-1) 50) @@ -90,7 +89,6 @@ airlock0 = , _rmBound = [rectNSWE 75 15 0 40, switchcut] } where - thewall = defaultDoorWall switchcut = rectNSWE 65 35 (-40) 20 lnks = [ (V2 20 95, 0) @@ -99,22 +97,19 @@ airlock0 = col = dim $ dim $ bright red airlockDoubleDoor :: - Point2 -> - Point2 -> WdBl -> Float -> Point2A -> Point2A -> - Float -> Point2A -> Point2A -> Maybe Placement -airlockDoubleDoor p1 p2 cond l1 x1 y1 l2 x2 y2 = - jspsJ p1 0 (putDoor cond l1 x1 y1) $ - sPS p2 0 (putDoor cond l2 x2 y2) +airlockDoubleDoor cond l x1 y1 x2 y2 = + jspsJ 0 0 (putDoor cond l x1 y1) $ + sPS 0 0 (putDoor cond l x2 y2) putDoor :: WdBl -> Float -> Point2A -> Point2A -> PSType -putDoor cond l p1 p2 = PutDoor' dr wl +putDoor cond l p1 p2 = PutDoor dr wl where wl = defaultDoorWall dr = defaultDoor @@ -125,26 +120,26 @@ putDoor cond l p1 p2 = PutDoor' dr wl & drFootPrint .~ IM.fromList (zip [0..] $ wlps') wlps' = rectanglePairs 9 0 (V2 l 0) -airlockSimple :: Room -airlockSimple = - defaultRoom +airlockSimple :: RandomGen g => State g Room +airlockSimple = do + light1 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isInLnk rp + light2 <- mntLightLnkCond $ resetPLUse $ rprBool $ \rp _ -> isOutLnk rp + return $ defaultRoom { _rmPolys = [rectNSWE 120 0 0 180] , _rmLinks = map (uncurry outLink) (init lnks) ++ [uncurry inLink $ last lnks] , _rmPath = foldMap (doublePairSet . (V2 90 30,) . fst) lnks , _rmPmnts = - [ pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ + [ light1,light2, + pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ \btid -> airlockDoubleDoor - 0 - (V2 180 0) (WdBlBtOn btid) - l1 - x1 - y1 - l2 - x2 - y2 + 55 + (0, pi / 2) + (0, 0) + (V2 180 0, pi / 2) + (V2 180 0, pi) -- outDoorps inDoorps ] , _rmBound = @@ -156,12 +151,6 @@ airlockSimple = , (V2 180 30, 1.5 * pi) ] col = dim $ dim $ bright red - l1 = 55 - l2 = 55 - x1 = (0, pi / 2) - y1 = (0, 0) - y2 = (0, pi / 2) - x2 = (0, pi) airlockZ :: RandomGen g => State g Room airlockZ = do @@ -180,15 +169,12 @@ airlockZ = do [ pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ \btid -> airlockDoubleDoor - (V2 0 60) - (V2 180 60) (WdBlBtOn btid) - l1 - x1 - y1 - l2 - x2 - y2 + 61 + (V2 0 60, - pi / 2) + (V2 0 60, 0) + (V2 180 60, - pi) + (V2 180 60, - pi / 2) , sps0 $ PutWall (reverse $ rectNSWE 70 50 60 120) defaultWall , lighting ] @@ -198,15 +184,6 @@ airlockZ = do where lnks = muout [(V2 0 30, pi / 2)] ++ muin [(V2 180 30, 1.5 * pi)] col = dim $ dim $ bright red - l1 = 61 - l2 = 61 - x1 = (0, - pi / 2) - y1 = (0, 0) - x2 = (0, - pi) - y2 = (0, - pi / 2) - --- outDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 0 (-61)) --- inDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 (-61) 0) airlock90 :: Room airlock90 = diff --git a/src/Dodge/Room/Door.hs b/src/Dodge/Room/Door.hs index 74116cd5e..0e3c19929 100644 --- a/src/Dodge/Room/Door.hs +++ b/src/Dodge/Room/Door.hs @@ -41,6 +41,5 @@ triggerDoorRoom i = where f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do pmnt <- gw ^? genPmnt . ix i - return $ putDoubleDoor False - defaultDoorWall (cond pmnt) (V2 0 20) (V2 40 20) 2 + return $ putDoubleDoor defaultDoorWall (cond pmnt) (V2 0 20) (V2 40 20) 2 cond pmnt = WdTrig $ fromJust (_plMID pmnt) diff --git a/src/Dodge/Room/LongDoor.hs b/src/Dodge/Room/LongDoor.hs index 6a6356c06..4398ee18f 100644 --- a/src/Dodge/Room/LongDoor.hs +++ b/src/Dodge/Room/LongDoor.hs @@ -138,7 +138,7 @@ addButtonSlowDoor x h rm = do col (rprBool (isUnusedLnkType InLink)) $ \btplmnt -> Just $ - putDoubleDoorThen False + putDoubleDoorThen thewall (WdBlBtOn $ fromJust $ _plMID btplmnt) 30 diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index 36c5f126c..da0414012 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -332,7 +332,6 @@ centerVaultRoom w h d = jspsJ (V2 0 (d -10)) 0 (putSlideDr (thedoor btid) thewall 1 (V2 (-21) 0) (V2 0 0)) $ sPS (V2 0 (d -10)) 0 (putSlideDr (thedoor btid) thewall 1 (V2 21 0) (V2 0 0)) ] - --thewall = switchWallCol col thewall = defaultDoorWall thedoor btid = defaultDoor diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index b715d2334..67f9d3c5d 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -45,6 +45,7 @@ tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor + , tToBTree "x" . return . cleatOnward <$> airlockSimple -- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] [] -- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor diff --git a/tags b/tags index 794ea5417..e57cd5a9a 100644 --- a/tags +++ b/tags @@ -2473,7 +2473,7 @@ activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 62;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f addArmour src/Dodge/Creature.hs 84;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f -addButtonSlowDoor src/Dodge/Room/LongDoor.hs 100;" f +addButtonSlowDoor src/Dodge/Room/LongDoor.hs 101;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f addDepth src/Picture/Base.hs 133;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f @@ -2500,7 +2500,7 @@ addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addSideEffect src/Dodge/Concurrent.hs 29;" f -addSouthPillars src/Dodge/Room/LongDoor.hs 92;" f +addSouthPillars src/Dodge/Room/LongDoor.hs 93;" f addTermSignal src/Dodge/Event/Input.hs 31;" f addToTrunk src/TreeHelp.hs 157;" f addWarningTerminal src/Dodge/Room/Warning.hs 61;" f @@ -2733,7 +2733,7 @@ cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f cenLasTur src/Dodge/Room/LasTurret.hs 25;" f centerText src/Picture/Base.hs 184;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f -centerVaultRoom src/Dodge/Room/Procedural.hs 292;" f +centerVaultRoom src/Dodge/Room/Procedural.hs 293;" f centroid src/Geometry/Polygon.hs 168;" f centroidNum src/Geometry/Polygon.hs 171;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f @@ -2789,7 +2789,7 @@ clAlt src/Dodge/Cloud.hs 5;" f clClSpringVel src/Dodge/Update.hs 841;" f clColor src/Shader/Poke/Cloud.hs 35;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f -clampPath src/Dodge/Room/Procedural.hs 169;" f +clampPath src/Dodge/Room/Procedural.hs 170;" f clang1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 560;" f clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f @@ -2846,11 +2846,11 @@ combinationsGraph src/Dodge/Combine/Graph.hs 72;" f combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 43;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f -combineFloors src/Dodge/Room/Procedural.hs 175;" f +combineFloors src/Dodge/Room/Procedural.hs 176;" f combineInventoryExtra src/Dodge/Render/HUD.hs 337;" f combineItemListYouX src/Dodge/Combine.hs 35;" f combineList src/Dodge/Combine.hs 21;" f -combineRooms src/Dodge/Room/Procedural.hs 155;" f +combineRooms src/Dodge/Room/Procedural.hs 156;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineTree src/Dodge/Tree/Compose.hs 67;" f commandColor src/Dodge/Terminal.hs 114;" f @@ -3139,7 +3139,7 @@ dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f divideCircle src/Geometry.hs 321;" f -divideDoorPane src/Dodge/Placement/Instance/Door.hs 68;" f +divideDoorPane src/Dodge/Placement/Instance/Door.hs 67;" f divideLine src/Geometry.hs 248;" f divideLineExact src/Geometry.hs 276;" f divideLineOddNumPoints src/Geometry.hs 261;" f @@ -3211,7 +3211,7 @@ doWdWd src/Dodge/WorldEffect.hs 28;" f doWorldEvents src/Dodge/Update.hs 428;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 13;" f -doorBetween src/Dodge/Placement/Instance/Door.hs 47;" f +doorBetween src/Dodge/Placement/Instance/Door.hs 46;" f doorLerp src/Dodge/DrWdWd.hs 27;" f dotV src/Geometry/Vector.hs 76;" f dotV3 src/Geometry/Vector3D.hs 119;" f @@ -3960,7 +3960,7 @@ listGuard src/Dodge/Creature/ReaderUpdate.hs 195;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 302;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 43;" f -lnkBothAnd src/Dodge/Room/Procedural.hs 125;" f +lnkBothAnd src/Dodge/Room/Procedural.hs 126;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 387;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f @@ -4514,13 +4514,13 @@ pushOutFromWall src/Dodge/WallCreatureCollisions.hs 101;" f pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 64;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f -putAutoDoor src/Dodge/Placement/Instance/Door.hs 88;" f +putAutoDoor src/Dodge/Placement/Instance/Door.hs 87;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 169;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 148;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 156;" f putDoor src/Dodge/Room/Airlock.hs 116;" f -putDoubleDoor src/Dodge/Placement/Instance/Door.hs 18;" f -putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 29;" f +putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f +putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 28;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 65;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 222;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f @@ -4529,7 +4529,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 57;" f putShape src/Dodge/Room/Foreground.hs 134;" f -putSlideDr src/Dodge/Door/PutSlideDoor.hs 7;" f +putSlideDr src/Dodge/Door/PutSlideDoor.hs 11;" f putStrLnAppend src/Dodge/LevelGen.hs 82;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 54;" f putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 22;" f @@ -4541,8 +4541,8 @@ qID src/Quaternion.hs 58;" f qToAng src/Quaternion.hs 55;" f qToV2 src/Quaternion.hs 52;" f qToV3 src/Quaternion.hs 49;" f -quarterRoomSquare src/Dodge/Room/Procedural.hs 216;" f -quarterRoomTri src/Dodge/Room/Procedural.hs 180;" f +quarterRoomSquare src/Dodge/Room/Procedural.hs 217;" f +quarterRoomTri src/Dodge/Room/Procedural.hs 181;" f quitCommand src/Dodge/Terminal.hs 93;" f qz src/Quaternion.hs 67;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f @@ -4574,8 +4574,8 @@ randSparkExtraVel src/Dodge/Spark.hs 92;" f randWallReflect src/Dodge/Update.hs 643;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f -randomFourCornerRoom src/Dodge/Room/Procedural.hs 269;" f -randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 281;" f +randomFourCornerRoom src/Dodge/Room/Procedural.hs 270;" f +randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 282;" f randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f randomMediumRoom src/Dodge/Room/Boss.hs 76;" f randomPath src/TreeHelp.hs 145;" f @@ -4688,8 +4688,8 @@ roomPillars src/Dodge/Room/Pillar.hs 106;" f roomPillarsContaining src/Dodge/Room/Containing.hs 39;" f roomPillarsPassage src/Dodge/Room/Pillar.hs 93;" f roomPillarsSquare src/Dodge/Room/Pillar.hs 49;" f -roomRect src/Dodge/Room/Procedural.hs 39;" f -roomRectAutoLinks src/Dodge/Room/Procedural.hs 142;" f +roomRect src/Dodge/Room/Procedural.hs 40;" f +roomRectAutoLinks src/Dodge/Room/Procedural.hs 143;" f roomShuriken src/Dodge/Room/Boss.hs 123;" f roomTwistCross src/Dodge/Room/Boss.hs 154;" f roomsContaining src/Dodge/Room/Containing.hs 20;" f @@ -4948,8 +4948,8 @@ slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 670;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 604;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 688;" f slideWindow src/ListHelp.hs 80;" f -slowDoorRoom src/Dodge/Room/LongDoor.hs 157;" f -slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 174;" f +slowDoorRoom src/Dodge/Room/LongDoor.hs 158;" f +slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 175;" 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 @@ -4984,7 +4984,7 @@ soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f -southPillarsRoom src/Dodge/Room/LongDoor.hs 89;" f +southPillarsRoom src/Dodge/Room/LongDoor.hs 90;" f spaceAction src/Dodge/Update/Input/InGame.hs 528;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 206;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 199;" f @@ -5277,8 +5277,8 @@ tutRezBox src/Dodge/Room/Tutorial.hs 372;" f tutRoomTree src/Dodge/Floor.hs 21;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 396;" f tweenAngles src/Geometry/Vector.hs 190;" f -twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f -twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 30;" f +twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 84;" f +twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 31;" f twists src/Dodge/Creature/Test.hs 102;" f twoFlat src/Dodge/Creature/Test.hs 99;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f @@ -5596,7 +5596,7 @@ zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f zeroZ src/Geometry/Vector.hs 9;" f zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 136;" f -zipCountDown src/Dodge/Room/Procedural.hs 122;" f +zipCountDown src/Dodge/Room/Procedural.hs 123;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f zoneClouds src/Dodge/Update.hs 476;" f zoneCreature src/Dodge/Zoning/Creature.hs 55;" f