diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index ed1933a5c..d3e66d78f 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -124,7 +124,8 @@ chasmTest :: Creature -> World -> World chasmTest cr w | _crZVel cr < 0 = w & tocr . crZVel -~ 0.5 & tocr . crPos . _z +~ _crZVel cr - | Just (x, y) <- List.find g (foldMap loopPairs $ w ^. cWorld . chasms) = w +-- | Just (x, y) <- List.find g (foldMap loopPairs $ w ^. cWorld . chasms') = w + | Just (x, y) <- List.find g (w ^. cWorld . cliffs) = w & soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100) & tocr . crPos . _xy -~ normalizeV (vNormal (x - y)) | any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5 diff --git a/src/Dodge/Data/CWorld.hs b/src/Dodge/Data/CWorld.hs index 859f60dec..aa127394e 100644 --- a/src/Dodge/Data/CWorld.hs +++ b/src/Dodge/Data/CWorld.hs @@ -31,6 +31,7 @@ data CWorld = CWorld , _incEdges :: [(Int,Int)] , _numberFloorVerxs :: Int , _chasms :: [[Point2]] + , _cliffs :: [(Point2,Point2)] , _numberChasmVerxs :: Int , _highlightItems :: IM.IntMap Int } diff --git a/src/Dodge/Data/GenWorld.hs b/src/Dodge/Data/GenWorld.hs index 0c2ddc860..3c98f90c3 100644 --- a/src/Dodge/Data/GenWorld.hs +++ b/src/Dodge/Data/GenWorld.hs @@ -58,11 +58,18 @@ data PSType | PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld) -- the Int is the roomid | PutNothing | PutID {_putID :: Int} - | PutChasm {_putChasmPoly :: [Point2]} + | PutChasm {_putChasmChasms :: [[Point2]], _putChasmCliffs :: [[Point2]]} + -- the chasms should be a convex partition of the cliffs. + -- Chasm and cliff polygons are orientated anticlockwise, so platforms + -- within a chasm will appear as a clockwise oriented list of points + -- in _putChasmCliffs. | PutLabel {_putLabel :: String} -- currently not actually put anywhere -- just used for later inspection as top level -- of a continuing placement in a room placement list +putConvexChasm :: [Point2] -> PSType +putConvexChasm ps = PutChasm [ps] [ps] + instance ShortShow PSType where shortShow PutCrit {} = "PutCrit" shortShow PutMachine {} = "PutMachine" diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index 182063393..3448707b8 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -94,6 +94,7 @@ defaultCWorld = , _cwTiles = mempty , _numberFloorVerxs = 0 , _chasms = mempty + , _cliffs = mempty , _numberChasmVerxs = 0 , _incGraph = mempty , _incNode = mempty diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 258a1bb61..d009de842 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -142,7 +142,8 @@ placeSpotID rid ps pt w = case pt of PutNothing -> (0, w) PutID i -> (i, w) PutWorldUpdate f -> (0, w & f rid ps) - PutChasm ps' -> (0, placeChasm w rid ps' $ map doShift ps') + PutChasm ps' qs -> (0, placeChasm w rid ps' (map (map doShift) ps') + (foldMap loopPairs (map (map doShift) qs))) PutLabel{} -> (0, w) where p@(V2 px py) = _psPos ps @@ -151,13 +152,15 @@ placeSpotID rid ps pt w = case pt of doShift = shiftPointBy (p, rot) pashift = compP2A (p, rot) -placeChasm :: GenWorld -> Int -> [Point2] -> [Point2] -> GenWorld -placeChasm gw rid ps shiftps = - gw & gwWorld . cWorld . chasms .:~ shiftps - & genRooms . ix rid . rmPos %~ filter (\rp -> not $ pointInPoly (_rpPos rp) ps) +placeChasm :: GenWorld -> Int -> [[Point2]] -> [[Point2]] -> [(Point2,Point2)] -> GenWorld +placeChasm gw rid ps shiftps cfs = + gw & gwWorld . cWorld . chasms <>~ shiftps + & gwWorld . cWorld . cliffs <>~ cfs + & genRooms . ix rid . rmPos %~ filter (\rp -> not $ any (pointInPoly (_rpPos rp)) ps) & gwWorld %~ f where - f w = foldl' g w (loopPairs shiftps) + --f w = foldl' g w (loopPairs shiftps) + f w = foldl' g w cfs g w (x, y) = obstructPathsCrossing (S.singleton ChasmObstacle) x y w placeWallPoly :: [Point2] -> Wall -> World -> World diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index 0cc3627d3..7f88272d5 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -38,7 +38,8 @@ worldSPic cfig u = ) <> foldup btSPic (filtOn _btPos _buttons) <> foldup (mcSPic (w ^. cWorld)) (filtOn _mcPos _machines) - <> foldMap' drawChasm (w ^. cWorld . chasms) +-- <> foldMap' drawChasm (w ^. cWorld . chasms) + <> foldMap' (Prelude.uncurry drawCliff) (w ^. cWorld . cliffs) <> w ^. cWorld . lWorld . tempSPic <> testSPic cfig u where @@ -79,8 +80,8 @@ testPic _ _ = mempty drawBlock :: Block -> SPic drawBlock = noPic . _blDraw -drawChasm :: [Point2] -> SPic -drawChasm = foldMap (Prelude.uncurry drawCliff) . loopPairs +--drawChasm :: [Point2] -> SPic +--drawChasm = foldMap (Prelude.uncurry drawCliff) . loopPairs drawCliff :: Point2 -> Point2 -> SPic drawCliff x y = diff --git a/src/Dodge/Room/Pillar.hs b/src/Dodge/Room/Pillar.hs index 75a3582f9..3fd21c450 100644 --- a/src/Dodge/Room/Pillar.hs +++ b/src/Dodge/Room/Pillar.hs @@ -126,5 +126,5 @@ roomPillars pillarsize w h wn hn = do where pilw = ((w - 40 * (fromIntegral wn + 1)) / fromIntegral wn) - pillarsize pilh = ((h - 40 * (fromIntegral hn + 1)) / fromIntegral hn) - pillarsize - testchasm = Placement (PS 0 0) (PutChasm (map (+V2 50 120) (rectWH 50 25))) Nothing Nothing + testchasm = Placement (PS 0 0) (putConvexChasm (map (+V2 50 120) (rectWH 50 25))) Nothing Nothing (\_ _ -> Nothing) diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 3d03820d7..014d82dd5 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -135,7 +135,7 @@ cChasm = do roomRectAutoLinks x y <&> rmLinks %~ setOutLinks (isCornerLink NorthWest) <&> rmLinks %~ setInLinks (isCornerLink SouthWest) - <&> rmPmnts <>~ [sps0 $ PutChasm (rectNSWE (y -50) 50 0 (x -50))] + <&> rmPmnts <>~ [sps0 $ putConvexChasm (rectNSWE (y -50) 50 0 (x -50))] lChasm :: State LayoutVars Room lChasm = do @@ -144,7 +144,7 @@ lChasm = do roomRectAutoLinks x y <&> rmLinks %~ setOutLinks (isCornerLink NorthWest) <&> rmLinks %~ setInLinks (isCornerLink SouthEast) - <&> rmPmnts <>~ [sps0 $ PutChasm (rectNSWE (y -50) 0 0 (x -50))] + <&> rmPmnts <>~ [sps0 $ putConvexChasm (rectNSWE (y -50) 0 0 (x -50))] -- the Float is the width of the bridge zChasm :: Float -> State LayoutVars Room @@ -156,8 +156,8 @@ zChasm z = do <&> rmLinks %~ setInLinks (isCornerLink SouthEast) <&> rmPath %~ addNodesCrossing (V2 0 (y/2),V2 x (y/2)) <&> rmPmnts - <>~ [ sps0 $ PutChasm (rectNSWE (y / 2 - z) 0 0 (x -50)) - , sps0 $ PutChasm (rectNSWE y (y / 2 + z) 50 x) + <>~ [ sps0 $ putConvexChasm (rectNSWE (y / 2 - z) 0 0 (x -50)) + , sps0 $ putConvexChasm (rectNSWE y (y / 2 + z) 50 x) ] midChasm :: State LayoutVars Room @@ -174,10 +174,10 @@ midChasm = do where censquare x y = do z <- state $ randomR (40, 60) - return [sps0 $ PutChasm (rectNSWE (y - z) z z (x - z))] + return [sps0 $ putConvexChasm (rectNSWE (y - z) z z (x - z))] cenoct x y = return - [sps0 $ PutChasm $ (V2 (x / 2) (y / 2) +) <$> polyOrthDist 8 (min x y / 2 - 25)] + [sps0 $ putConvexChasm $ (V2 (x / 2) (y / 2) +) <$> polyOrthDist 8 (min x y / 2 - 25)] -- dia x y = [sps0 $ PutChasm [V2 ] @@ -185,7 +185,7 @@ polyChasm :: Int -> Float -> State LayoutVars Room polyChasm n x = shuffleLinks =<< ( roomNgon n x - <&> rmPmnts <>~ [sps0 $ PutChasm $ polyOrthDist n (x -30)] + <&> rmPmnts <>~ [sps0 $ putConvexChasm $ polyOrthDist n (x -30)] <&> rmLinks %~ setOutLinks (\rl -> rl ^. rlPos . _y > 0) <&> rmLinks %~ setInLinks (\rl -> rl ^. rlPos . _y < (5 - x)) ) @@ -193,7 +193,7 @@ polyChasm n x = polyChasmC :: Int -> Float -> State LayoutVars Room polyChasmC n x = roomNgon n x - <&> rmPmnts <>~ [sps0 $ PutChasm $ rectNSWE x (60 - x) (-40) 40] + <&> rmPmnts <>~ [sps0 $ putConvexChasm $ rectNSWE x (60 - x) (-40) 40] <&> rmLinks %~ setInLinks (\rl -> PolyEdge 1 `S.member` (rl ^. rlType)) <&> rmLinks %~ setOutLinks (\rl -> PolyEdge (n -1) `S.member` (rl ^. rlType)) diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index 782f176c8..3c5dddd38 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -21,7 +21,7 @@ module Dodge.WorldEvent.ThingsHit ( import ListHelp import Control.Applicative import Dodge.Wall.Pathing -import Data.Monoid +--import Data.Monoid import qualified Data.Set as S import Linear import Dodge.Data.Object @@ -182,6 +182,9 @@ isFlyable p1 p2 = isWalkable :: Point2 -> Point2 -> World -> Bool {-# INLINE isWalkable #-} -isWalkable p1 p2 w = isFlyable p1 p2 w && not (getAny $ foldMap f (w ^. cWorld . chasms)) +isWalkable p1 p2 w = isFlyable p1 p2 w && not (any f (w ^. cWorld . cliffs)) where - f = foldMap (Any . isJust . uncurry (intersectSegSeg p1 p2)) . loopPairs + f = isJust . uncurry (intersectSegSeg p1 p2) +--isWalkable p1 p2 w = isFlyable p1 p2 w && not (getAny $ foldMap f (w ^. cWorld . chasms)) +-- where +-- f = foldMap (Any . isJust . uncurry (intersectSegSeg p1 p2)) . loopPairs diff --git a/src/Geometry/Triangulate.hs b/src/Geometry/Triangulate.hs index 63dadc77e..8332cdf17 100644 --- a/src/Geometry/Triangulate.hs +++ b/src/Geometry/Triangulate.hs @@ -4,6 +4,7 @@ module Geometry.Triangulate where import Data.List +-- assumes that the polygon is convex polyToTris :: [s] -> [s] {-# INLINEABLE polyToTris #-} polyToTris (x : xs) = foldl' (f x) [] $ zip xs $ tail xs diff --git a/tags b/tags index 6a14a86ec..4e36caa62 100644 --- a/tags +++ b/tags @@ -13,7 +13,7 @@ .+.+~ src/LensHelp.hs 23;" o .:~ src/LensHelp.hs 14;" o <$> src/Dodge/Data/ActionPlan.hs 156;" o -<$> src/Dodge/Data/CWorld.hs 51;" o +<$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o <$> src/Dodge/Data/Creature.hs 91;" o <$> src/Dodge/Data/LWorld.hs 176;" o @@ -176,7 +176,7 @@ COPIER src/Dodge/Data/Item/Combine.hs 28;" C CRAFT src/Dodge/Data/Item/Combine.hs 18;" C CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 183;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 84;" C -CWGen src/Dodge/Data/CWorld.hs 38;" t +CWGen src/Dodge/Data/CWorld.hs 39;" t CWorld src/Dodge/Data/CWorld.hs 23;" t CYAN src/Color/Data.hs 16;" C CamControl src/Dodge/Data/Camera.hs 17;" t @@ -480,7 +480,7 @@ GasParams src/Dodge/Data/Item/Use.hs 52;" C GasType src/Dodge/Data/Cloud.hs 42;" t GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t -GenWorld src/Dodge/Data/GenWorld.hs 23;" t +GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C GeoObjShads src/Dodge/Data/Config.hs 116;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C @@ -652,9 +652,9 @@ Lasering src/Dodge/Data/Damage.hs 22;" C LauncherAI src/Dodge/Data/Creature/Misc.hs 43;" C LauncherAmmo src/Dodge/Data/AmmoType.hs 9;" C LaundrySS src/Dodge/Data/Scenario.hs 115;" C -LayVars src/Dodge/Data/MetaTree.hs 29;" C +LayVars src/Dodge/Data/MetaTree.hs 30;" C Layer src/Picture/Data.hs 20;" t -LayoutVars src/Dodge/Data/MetaTree.hs 29;" t +LayoutVars src/Dodge/Data/MetaTree.hs 30;" t LeadTarget src/Dodge/Data/ActionPlan.hs 115;" C LeftForward src/Dodge/Data/Creature/Stance.hs 29;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 84;" C @@ -691,7 +691,7 @@ MAGNET src/Dodge/Data/Item/Combine.hs 67;" C MAGSHIELD src/Dodge/Data/Item/Combine.hs 120;" C MAPPER src/Dodge/Data/Item/Combine.hs 25;" C MAXHEALTH src/Dodge/Data/Item/Combine.hs 46;" C -MBranch src/Dodge/Data/MetaTree.hs 18;" C +MBranch src/Dodge/Data/MetaTree.hs 19;" C MEDKIT src/Dodge/Data/Item/Combine.hs 115;" C MICROCHIP src/Dodge/Data/Item/Combine.hs 71;" C MICROPHONE src/Dodge/Data/Item/Combine.hs 82;" C @@ -703,7 +703,7 @@ MODStringOption src/Dodge/Data/Universe.hs 107;" 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 -MTree src/Dodge/Data/MetaTree.hs 11;" C +MTree src/Dodge/Data/MetaTree.hs 12;" C Machine src/Dodge/Data/Machine.hs 30;" t MachineAltSound src/Dodge/Data/SoundOrigin.hs 23;" C MachineBackgroundSound src/Dodge/Data/SoundOrigin.hs 22;" C @@ -754,9 +754,9 @@ MeleeStrike src/Dodge/Data/ActionPlan.hs 144;" C Memory src/Dodge/Data/Creature.hs 77;" t MenuOption src/Dodge/Data/Universe.hs 109;" t MenuOptionDisplay src/Dodge/Data/Universe.hs 104;" 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 +MetaBranch src/Dodge/Data/MetaTree.hs 19;" t +MetaNode src/Dodge/Data/MetaTree.hs 15;" t +MetaTree src/Dodge/Data/MetaTree.hs 12;" t Metal src/Dodge/Data/Material.hs 15;" C Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C @@ -852,8 +852,8 @@ NoSubInventory src/Dodge/Data/HUD.hs 15;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C Noclip src/Dodge/Data/Config.hs 83;" C -NodeMTree src/Dodge/Data/MetaTree.hs 16;" C -NodeTree src/Dodge/Data/MetaTree.hs 15;" C +NodeMTree src/Dodge/Data/MetaTree.hs 17;" C +NodeTree src/Dodge/Data/MetaTree.hs 16;" C NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 82;" C NonInf src/Dodge/Data/CardinalPoint.hs 44;" C NormalOptions src/Dodge/Data/Universe.hs 71;" C @@ -967,11 +967,11 @@ POISONSPRAYER src/Dodge/Data/Item/Combine.hs 172;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 87;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 128;" C PRISM src/Dodge/Data/Item/Combine.hs 65;" C -PS src/Dodge/Data/GenWorld.hs 91;" C -PSNoShiftCont src/Dodge/Data/GenWorld.hs 92;" C -PSPos src/Dodge/Data/GenWorld.hs 93;" C -PSRoomRand src/Dodge/Data/GenWorld.hs 98;" C -PSType src/Dodge/Data/GenWorld.hs 31;" t +PS src/Dodge/Data/GenWorld.hs 92;" C +PSNoShiftCont src/Dodge/Data/GenWorld.hs 93;" C +PSPos src/Dodge/Data/GenWorld.hs 94;" C +PSRoomRand src/Dodge/Data/GenWorld.hs 99;" C +PSType src/Dodge/Data/GenWorld.hs 32;" 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 @@ -991,8 +991,8 @@ PhysicalSensor src/Dodge/Data/Machine/Sensor.hs 16;" C Picture src/Picture/Data.hs 41;" t Piercing src/Dodge/Data/Damage.hs 16;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C -Placement src/Dodge/Data/GenWorld.hs 104;" t -PlacementSpot src/Dodge/Data/GenWorld.hs 90;" t +Placement src/Dodge/Data/GenWorld.hs 105;" t +PlacementSpot src/Dodge/Data/GenWorld.hs 91;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C PlainDeath src/Dodge/Data/Creature.hs 68;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C @@ -1037,27 +1037,27 @@ PulseStatus src/Dodge/Data/Creature/Misc.hs 52;" C PushSource src/Dodge/Data/Door.hs 23;" t PushedBy src/Dodge/Data/Door.hs 25;" C PushesItself src/Dodge/Data/Door.hs 24;" C -PutBlock src/Dodge/Data/GenWorld.hs 43;" C -PutButton src/Dodge/Data/GenWorld.hs 39;" C -PutChasm src/Dodge/Data/GenWorld.hs 60;" C -PutCoord src/Dodge/Data/GenWorld.hs 44;" C -PutCrit src/Dodge/Data/GenWorld.hs 32;" C -PutDoor src/Dodge/Data/GenWorld.hs 54;" C -PutFlIt src/Dodge/Data/GenWorld.hs 42;" C -PutForeground src/Dodge/Data/GenWorld.hs 56;" C -PutID src/Dodge/Data/GenWorld.hs 59;" C -PutLS src/Dodge/Data/GenWorld.hs 38;" C -PutLabel src/Dodge/Data/GenWorld.hs 61;" C -PutLineBlock src/Dodge/Data/GenWorld.hs 47;" C -PutMachine src/Dodge/Data/GenWorld.hs 33;" C -PutMod src/Dodge/Data/GenWorld.hs 45;" C -PutNothing src/Dodge/Data/GenWorld.hs 58;" C +PutBlock src/Dodge/Data/GenWorld.hs 44;" C +PutButton src/Dodge/Data/GenWorld.hs 40;" C +PutChasm src/Dodge/Data/GenWorld.hs 61;" C +PutCoord src/Dodge/Data/GenWorld.hs 45;" C +PutCrit src/Dodge/Data/GenWorld.hs 33;" C +PutDoor src/Dodge/Data/GenWorld.hs 55;" C +PutFlIt src/Dodge/Data/GenWorld.hs 43;" C +PutForeground src/Dodge/Data/GenWorld.hs 57;" C +PutID src/Dodge/Data/GenWorld.hs 60;" C +PutLS src/Dodge/Data/GenWorld.hs 39;" C +PutLabel src/Dodge/Data/GenWorld.hs 62;" C +PutLineBlock src/Dodge/Data/GenWorld.hs 48;" C +PutMachine src/Dodge/Data/GenWorld.hs 34;" C +PutMod src/Dodge/Data/GenWorld.hs 46;" C +PutNothing src/Dodge/Data/GenWorld.hs 59;" C PutOnEquipment src/Dodge/Data/RightButtonOptions.hs 19;" C -PutProp src/Dodge/Data/GenWorld.hs 40;" C -PutTerminal src/Dodge/Data/GenWorld.hs 41;" C -PutTrigger src/Dodge/Data/GenWorld.hs 46;" C -PutWall src/Dodge/Data/GenWorld.hs 53;" C -PutWorldUpdate src/Dodge/Data/GenWorld.hs 57;" C +PutProp src/Dodge/Data/GenWorld.hs 41;" C +PutTerminal src/Dodge/Data/GenWorld.hs 42;" C +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 112;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C @@ -1075,14 +1075,14 @@ RLAUNCHER src/Dodge/Data/Item/Combine.hs 169;" C RLAUNCHERX src/Dodge/Data/Item/Combine.hs 170;" C ROSE src/Color/Data.hs 18;" C RPLinkStatus src/Dodge/Data/Room.hs 58;" t -RProps src/Dodge/Layout/Generate.hs 13;" C +RProps src/Dodge/Layout/Generate.hs 14;" C RadarBlip src/Dodge/Data/RadarBlip.hs 12;" t RadarSweep src/Dodge/Data/RadarSweep.hs 17;" t RadialDistortion src/Dodge/Data/Distortion.hs 11;" C RandImpulse src/Dodge/Data/ActionPlan.hs 49;" t RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 51;" C RandImpulseList src/Dodge/Data/ActionPlan.hs 50;" C -RandPS src/Dodge/Data/GenWorld.hs 55;" C +RandPS src/Dodge/Data/GenWorld.hs 56;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 31;" C RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C @@ -1119,7 +1119,7 @@ Rocket src/Dodge/Data/Projectile.hs 32;" C 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 119;" t +Room src/Dodge/Data/GenWorld.hs 120;" t RoomClipping src/Dodge/Data/Config.hs 122;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t @@ -1128,7 +1128,7 @@ RoomPos src/Dodge/Data/Room.hs 15;" t RoomPosFlag src/Dodge/Data/Room.hs 80;" t RoomPosOffGrid src/Dodge/Data/Room.hs 82;" C RoomPosOnGrid src/Dodge/Data/Room.hs 81;" C -RoomProperties src/Dodge/Layout/Generate.hs 13;" t +RoomProperties src/Dodge/Layout/Generate.hs 14;" t RoomType src/Dodge/Data/Room.hs 31;" t RoomWire src/Dodge/Data/Room.hs 53;" t RoundedFaces src/Shape/Data.hs 13;" C @@ -1149,7 +1149,7 @@ SPic src/ShapePicture/Data.hs 7;" t SQUARE src/Dodge/Data/GenParams.hs 18;" C SSBO src/Shader/Data.hs 96;" t SString src/ShortShow.hs 16;" C -ST src/Dodge/Data/MetaTree.hs 20;" C +ST src/Dodge/Data/MetaTree.hs 21;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 58;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 23;" C SaveSlot src/Dodge/Data/SaveSlot.hs 7;" t @@ -1172,7 +1172,7 @@ SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" C Selection src/Dodge/Data/HUD.hs 39;" t SelectionItem src/Dodge/Data/SelectionList.hs 44;" t SelectionWidth src/Dodge/Data/SelectionList.hs 42;" t -SelfTree src/Dodge/Data/MetaTree.hs 20;" t +SelfTree src/Dodge/Data/MetaTree.hs 21;" t SemiAutoTrigger src/Dodge/Data/TriggerType.hs 9;" C SensorType src/Dodge/Data/Machine/Sensor.hs 12;" t SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 30;" C @@ -1657,6 +1657,7 @@ _cldtUp src/Dodge/Data/DoubleTree.hs 43;" f _cldtUp src/Dodge/Data/DoubleTree.hs 51;" f _clickPos src/Dodge/Data/Input.hs 42;" f _clickWorldPos src/Dodge/Data/Input.hs 44;" f +_cliffs src/Dodge/Data/CWorld.hs 34;" f _closeButtons src/Dodge/Data/HUD.hs 36;" f _closeItems src/Dodge/Data/HUD.hs 35;" f _cloudShader src/Data/Preload/Render.hs 52;" f @@ -1711,11 +1712,11 @@ _currentArc src/Dodge/Data/Item/Params.hs 15;" f _currentFoot src/Dodge/Data/Creature/Stance.hs 23;" f _cwGen src/Dodge/Data/CWorld.hs 25;" f _cwTiles src/Dodge/Data/CWorld.hs 27;" f -_cwgGameRooms src/Dodge/Data/CWorld.hs 41;" f -_cwgParams src/Dodge/Data/CWorld.hs 39;" f -_cwgRoomClipping src/Dodge/Data/CWorld.hs 42;" f -_cwgSeed src/Dodge/Data/CWorld.hs 43;" f -_cwgWorldBounds src/Dodge/Data/CWorld.hs 40;" f +_cwgGameRooms src/Dodge/Data/CWorld.hs 42;" f +_cwgParams src/Dodge/Data/CWorld.hs 40;" f +_cwgRoomClipping src/Dodge/Data/CWorld.hs 43;" f +_cwgSeed src/Dodge/Data/CWorld.hs 44;" f +_cwgWorldBounds src/Dodge/Data/CWorld.hs 41;" f _cylinderSize src/Shape/Data.hs 14;" f _dbPos src/Dodge/Data/Prop.hs 26;" f _dbRot src/Dodge/Data/Prop.hs 29;" f @@ -1832,9 +1833,9 @@ _futureWorlds src/Dodge/Data/World.hs 76;" f _gameplay_rotate_to_wall src/Dodge/Data/Config.hs 66;" f _gasZoning src/Dodge/Data/World.hs 50;" f _gasses src/Dodge/Data/LWorld.hs 98;" 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 +_genInts src/Dodge/Data/GenWorld.hs 28;" f +_genPmnt src/Dodge/Data/GenWorld.hs 27;" f +_genRooms src/Dodge/Data/GenWorld.hs 26;" f _getAttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" f _getCombAmount src/Dodge/Data/CombAmount.hs 10;" f _getFixated src/Dodge/Data/Creature/Perception.hs 60;" f @@ -1870,10 +1871,10 @@ _guPos src/Dodge/Data/Gust.hs 13;" f _guTime src/Dodge/Data/Gust.hs 15;" f _guVel src/Dodge/Data/Gust.hs 14;" f _gusts src/Dodge/Data/LWorld.hs 99;" f -_gwWorld src/Dodge/Data/GenWorld.hs 24;" f +_gwWorld src/Dodge/Data/GenWorld.hs 25;" f _heldPos src/Dodge/Data/Input.hs 43;" f _heldWorldPos src/Dodge/Data/Input.hs 45;" f -_highlightItems src/Dodge/Data/CWorld.hs 35;" f +_highlightItems src/Dodge/Data/CWorld.hs 36;" f _hotkeys src/Dodge/Data/LWorld.hs 142;" f _hud src/Dodge/Data/World.hs 46;" f _humanoidAI src/Dodge/Data/Creature/Misc.hs 79;" f @@ -1977,8 +1978,8 @@ _lwID src/Dodge/Data/LinearShockwave.hs 13;" f _lwPoints src/Dodge/Data/LinearShockwave.hs 14;" f _lwPos src/Dodge/Data/LinearShockwave.hs 12;" f _lwTimer src/Dodge/Data/LinearShockwave.hs 15;" f -_lyCounter src/Dodge/Data/MetaTree.hs 31;" f -_lyGen src/Dodge/Data/MetaTree.hs 30;" f +_lyCounter src/Dodge/Data/MetaTree.hs 32;" f +_lyGen src/Dodge/Data/MetaTree.hs 31;" f _machines src/Dodge/Data/LWorld.hs 122;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 125;" f @@ -1988,8 +1989,8 @@ _mapInvItmID src/Dodge/Data/HUD.hs 20;" f _mapInvOffset src/Dodge/Data/HUD.hs 18;" f _mapInvZoom src/Dodge/Data/HUD.hs 19;" f _matUBO src/Data/Preload/Render.hs 42;" f -_mbAttach src/Dodge/Data/MetaTree.hs 18;" f -_mbTree src/Dodge/Data/MetaTree.hs 18;" f +_mbAttach src/Dodge/Data/MetaTree.hs 19;" f +_mbTree src/Dodge/Data/MetaTree.hs 19;" f _mcDamage src/Dodge/Data/Machine.hs 37;" f _mcDir src/Dodge/Data/Machine.hs 35;" f _mcHP src/Dodge/Data/Machine.hs 36;" f @@ -2044,9 +2045,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 12;" f -_mtLabel src/Dodge/Data/MetaTree.hs 12;" f -_mtTree src/Dodge/Data/MetaTree.hs 12;" f +_mtBranches src/Dodge/Data/MetaTree.hs 13;" f +_mtLabel src/Dodge/Data/MetaTree.hs 13;" f +_mtTree src/Dodge/Data/MetaTree.hs 13;" f _musicData src/Data/Preload.hs 13;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 33;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 28;" f @@ -2060,13 +2061,13 @@ _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 16;" f -_nodeTree src/Dodge/Data/MetaTree.hs 15;" f +_nodeMetaTree src/Dodge/Data/MetaTree.hs 17;" f +_nodeTree src/Dodge/Data/MetaTree.hs 16;" f _nodesSearched src/Dodge/Data/Creature.hs 79;" f _nonInf src/Dodge/Data/CardinalPoint.hs 44;" f _numLinkEW src/Dodge/Data/Room.hs 34;" f _numLinkNS src/Dodge/Data/Room.hs 35;" f -_numberChasmVerxs src/Dodge/Data/CWorld.hs 34;" f +_numberChasmVerxs src/Dodge/Data/CWorld.hs 35;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 32;" f _nzAngle src/Dodge/Data/Item/Params.hs 16;" f _nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 49;" f @@ -2092,8 +2093,8 @@ _pbTimer src/Dodge/Data/PulseLaser.hs 23;" f _pbVel src/Dodge/Data/PulseLaser.hs 21;" f _phRemoteID src/Dodge/Data/Projectile.hs 41;" f _phTargetingID src/Dodge/Data/Projectile.hs 42;" f -_pickUpLevel src/Dodge/Layout/Generate.hs 14;" f -_pickUps src/Dodge/Layout/Generate.hs 15;" f +_pickUpLevel src/Dodge/Layout/Generate.hs 15;" f +_pickUps src/Dodge/Layout/Generate.hs 16;" f _pictureShaders src/Data/Preload/Render.hs 31;" f _piercedPoints src/Dodge/Data/Creature/Misc.hs 87;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f @@ -2107,11 +2108,11 @@ _pjSpin src/Dodge/Data/Projectile.hs 19;" f _pjTimer src/Dodge/Data/Projectile.hs 22;" f _pjType src/Dodge/Data/Projectile.hs 24;" f _pjVel src/Dodge/Data/Projectile.hs 17;" f -_plExternalID src/Dodge/Data/GenWorld.hs 108;" f -_plIDCont src/Dodge/Data/GenWorld.hs 109;" f -_plMID src/Dodge/Data/GenWorld.hs 107;" f -_plSpot src/Dodge/Data/GenWorld.hs 105;" f -_plType src/Dodge/Data/GenWorld.hs 106;" f +_plExternalID src/Dodge/Data/GenWorld.hs 109;" f +_plIDCont src/Dodge/Data/GenWorld.hs 110;" f +_plMID src/Dodge/Data/GenWorld.hs 108;" f +_plSpot src/Dodge/Data/GenWorld.hs 106;" f +_plType src/Dodge/Data/GenWorld.hs 107;" f _playStatus src/Sound/Data.hs 15;" f _playingSounds src/Dodge/Data/World.hs 41;" f _posture src/Dodge/Data/Creature/Stance.hs 17;" f @@ -2130,37 +2131,37 @@ _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 35;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 34;" f _proxSensorType src/Dodge/Data/Machine/Sensor.hs 25;" f _proxToggle src/Dodge/Data/Machine/Sensor.hs 26;" f -_psFallback src/Dodge/Data/GenWorld.hs 96;" f -_psPos src/Dodge/Data/GenWorld.hs 91;" f -_psRandShift src/Dodge/Data/GenWorld.hs 100;" f -_psRoomEff src/Dodge/Data/GenWorld.hs 95;" f -_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 99;" f -_psRot src/Dodge/Data/GenWorld.hs 91;" f -_psSelect src/Dodge/Data/GenWorld.hs 94;" f +_psFallback src/Dodge/Data/GenWorld.hs 97;" f +_psPos src/Dodge/Data/GenWorld.hs 92;" f +_psRandShift src/Dodge/Data/GenWorld.hs 101;" f +_psRoomEff src/Dodge/Data/GenWorld.hs 96;" f +_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 100;" f +_psRot src/Dodge/Data/GenWorld.hs 92;" f +_psSelect src/Dodge/Data/GenWorld.hs 95;" f _pullWallShader src/Data/Preload/Render.hs 22;" f _pulseBalls src/Dodge/Data/LWorld.hs 116;" f _pulseLasers src/Dodge/Data/LWorld.hs 115;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 54;" f _pulseRate src/Dodge/Data/Creature/Misc.hs 53;" f -_putBlock src/Dodge/Data/GenWorld.hs 43;" f -_putButton src/Dodge/Data/GenWorld.hs 39;" f -_putChasmPoly src/Dodge/Data/GenWorld.hs 60;" f -_putDoorDoor src/Dodge/Data/GenWorld.hs 54;" f -_putDoorWall src/Dodge/Data/GenWorld.hs 54;" f -_putEndPoint src/Dodge/Data/GenWorld.hs 51;" f -_putID src/Dodge/Data/GenWorld.hs 59;" f -_putItem src/Dodge/Data/GenWorld.hs 42;" f -_putLabel src/Dodge/Data/GenWorld.hs 61;" f -_putMachineMachine src/Dodge/Data/GenWorld.hs 35;" f -_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 36;" f -_putMachinePoly src/Dodge/Data/GenWorld.hs 34;" f -_putPoly src/Dodge/Data/GenWorld.hs 43;" f -_putStartPoint src/Dodge/Data/GenWorld.hs 50;" f -_putWall src/Dodge/Data/GenWorld.hs 43;" f -_putWall src/Dodge/Data/GenWorld.hs 48;" f -_putWidth src/Dodge/Data/GenWorld.hs 49;" f -_pwPoly src/Dodge/Data/GenWorld.hs 53;" f -_pwWall src/Dodge/Data/GenWorld.hs 53;" f +_putBlock src/Dodge/Data/GenWorld.hs 44;" f +_putButton src/Dodge/Data/GenWorld.hs 40;" f +_putChasmPoly src/Dodge/Data/GenWorld.hs 61;" f +_putDoorDoor src/Dodge/Data/GenWorld.hs 55;" f +_putDoorWall src/Dodge/Data/GenWorld.hs 55;" f +_putEndPoint src/Dodge/Data/GenWorld.hs 52;" f +_putID src/Dodge/Data/GenWorld.hs 60;" f +_putItem src/Dodge/Data/GenWorld.hs 43;" f +_putLabel src/Dodge/Data/GenWorld.hs 62;" f +_putMachineMachine src/Dodge/Data/GenWorld.hs 36;" f +_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 37;" f +_putMachinePoly 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 _pyFaces src/Polyhedra/Data.hs 14;" f _pzDamage src/Dodge/Data/PulseLaser.hs 15;" f _pzDir src/Dodge/Data/PulseLaser.hs 14;" f @@ -2196,28 +2197,28 @@ _rkSmoke src/Dodge/Data/Projectile.hs 34;" f _rlDir src/Dodge/Data/Room.hs 27;" f _rlPos src/Dodge/Data/Room.hs 26;" f _rlType src/Dodge/Data/Room.hs 25;" f -_rmBound src/Dodge/Data/GenWorld.hs 134;" f -_rmChildren src/Dodge/Data/GenWorld.hs 145;" f -_rmClusterStatus src/Dodge/Data/GenWorld.hs 147;" f -_rmConnectsTo src/Dodge/Data/GenWorld.hs 142;" f -_rmEndWires src/Dodge/Data/GenWorld.hs 141;" f -_rmFloor src/Dodge/Data/GenWorld.hs 135;" f +_rmBound src/Dodge/Data/GenWorld.hs 135;" f +_rmChildren src/Dodge/Data/GenWorld.hs 146;" f +_rmClusterStatus src/Dodge/Data/GenWorld.hs 148;" f +_rmConnectsTo src/Dodge/Data/GenWorld.hs 143;" f +_rmEndWires src/Dodge/Data/GenWorld.hs 142;" f +_rmFloor src/Dodge/Data/GenWorld.hs 136;" f _rmHeight src/Dodge/Data/Room.hs 39;" f -_rmInPmnt src/Dodge/Data/GenWorld.hs 133;" f -_rmLinkEff src/Dodge/Data/GenWorld.hs 123;" f -_rmLinks src/Dodge/Data/GenWorld.hs 121;" f -_rmMID src/Dodge/Data/GenWorld.hs 143;" f -_rmMParent src/Dodge/Data/GenWorld.hs 144;" f -_rmName src/Dodge/Data/GenWorld.hs 136;" f -_rmPath src/Dodge/Data/GenWorld.hs 131;" f -_rmPmnts src/Dodge/Data/GenWorld.hs 132;" f -_rmPolys src/Dodge/Data/GenWorld.hs 120;" f -_rmPos src/Dodge/Data/GenWorld.hs 130;" f -_rmRandPSs src/Dodge/Data/GenWorld.hs 139;" f -_rmShift src/Dodge/Data/GenWorld.hs 137;" f -_rmStartWires src/Dodge/Data/GenWorld.hs 140;" f -_rmType src/Dodge/Data/GenWorld.hs 146;" f -_rmViewpoints src/Dodge/Data/GenWorld.hs 138;" f +_rmInPmnt src/Dodge/Data/GenWorld.hs 134;" f +_rmLinkEff src/Dodge/Data/GenWorld.hs 124;" f +_rmLinks src/Dodge/Data/GenWorld.hs 122;" f +_rmMID src/Dodge/Data/GenWorld.hs 144;" f +_rmMParent src/Dodge/Data/GenWorld.hs 145;" f +_rmName src/Dodge/Data/GenWorld.hs 137;" f +_rmPath src/Dodge/Data/GenWorld.hs 132;" f +_rmPmnts src/Dodge/Data/GenWorld.hs 133;" f +_rmPolys src/Dodge/Data/GenWorld.hs 121;" f +_rmPos src/Dodge/Data/GenWorld.hs 131;" f +_rmRandPSs src/Dodge/Data/GenWorld.hs 140;" f +_rmShift src/Dodge/Data/GenWorld.hs 138;" f +_rmStartWires src/Dodge/Data/GenWorld.hs 141;" f +_rmType src/Dodge/Data/GenWorld.hs 147;" f +_rmViewpoints src/Dodge/Data/GenWorld.hs 139;" f _rmWidth src/Dodge/Data/Room.hs 38;" f _rpDir src/Dodge/Data/Room.hs 17;" f _rpFlags src/Dodge/Data/Room.hs 18;" f @@ -2415,13 +2416,13 @@ _unFBO src/Shader/Data.hs 57;" f _unNInt src/NewInt.hs 16;" f _unNIntMap src/NewInt.hs 22;" f _unNIntSet src/NewInt.hs 19;" f -_unPutCrit src/Dodge/Data/GenWorld.hs 32;" f -_unST src/Dodge/Data/MetaTree.hs 20;" f +_unPutCrit src/Dodge/Data/GenWorld.hs 33;" f +_unST src/Dodge/Data/MetaTree.hs 21;" f _unTO src/Shader/Data.hs 59;" f _unVAO src/Shader/Data.hs 64;" f _unfiredBarrels src/Dodge/Data/Item/Params.hs 17;" f _unpauseClock src/Dodge/Data/World.hs 59;" f -_unputTerminal src/Dodge/Data/GenWorld.hs 41;" f +_unputTerminal src/Dodge/Data/GenWorld.hs 42;" f _upscaleCloudShader src/Data/Preload/Render.hs 25;" f _useExactly src/Dodge/Data/Muzzle.hs 62;" f _useMapperLines src/Dodge/Data/Item/Use.hs 38;" f @@ -2544,7 +2545,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 addNodesCrossing src/Dodge/Room/Path.hs 22;" f -addPane src/Dodge/Placement/PlaceSpot.hs 167;" f +addPane src/Dodge/Placement/PlaceSpot.hs 173;" f addPointPolygon src/Geometry/Polygon.hs 134;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f @@ -2584,7 +2585,7 @@ andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 158;" f angleVV src/Geometry/Vector.hs 58;" f angleVV3 src/Geometry/Vector3D.hs 122;" f -anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f +anyUnusedSpot src/Dodge/PlacementSpot.hs 67;" f anythingHitCirc src/Dodge/Base/Collide.hs 342;" f applyCME src/Dodge/HeldUse.hs 372;" f applyClip src/Dodge/Debug.hs 138;" f @@ -2595,7 +2596,7 @@ applyIndividualDamage src/Dodge/Creature/Damage.hs 17;" f applyInvLock src/Dodge/HeldUse.hs 431;" f applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPastDamages src/Dodge/Creature/State.hs 49;" f -applyPosition src/Sound.hs 112;" f +applyPosition src/Sound.hs 113;" f applyRecoil src/Dodge/HeldUse.hs 462;" f applyResFactor src/Dodge/Data/Config.hs 125;" f applyResFactorF src/Dodge/Data/Config.hs 134;" f @@ -2629,19 +2630,19 @@ arms src/Dodge/Creature/Picture.hs 72;" f arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f assignHotkey src/Dodge/AssignHotkey.hs 9;" f -assignPushDoors src/Dodge/LevelGen.hs 35;" f -atFstLnkOut src/Dodge/PlacementSpot.hs 217;" f -atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 237;" f -atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 240;" f -atNthLinkOut src/Dodge/PlacementSpot.hs 220;" f -atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 223;" f -atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 243;" f -attachBranch src/Dodge/Tree/Compose.hs 83;" f +assignPushDoors src/Dodge/LevelGen.hs 36;" f +atFstLnkOut src/Dodge/PlacementSpot.hs 218;" f +atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 238;" f +atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 241;" f +atNthLinkOut src/Dodge/PlacementSpot.hs 221;" f +atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 224;" f +atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 244;" 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 -attachTree src/Dodge/Tree/Compose.hs 38;" 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 39;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 75;" f attribSize src/Shader/Compile.hs 139;" f autoAmr src/Dodge/Item/Held/Rod.hs 39;" f @@ -2668,7 +2669,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 827;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 231;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Render/ShapePicture.hs 110;" f +barrelShape src/Dodge/Render/ShapePicture.hs 111;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 408;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f baseCI src/Dodge/Item/Grammar.hs 158;" f @@ -2696,7 +2697,7 @@ bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f bgunSound src/Dodge/HeldUse.hs 517;" f bingate src/Dodge/Item/Scope.hs 115;" f black src/Color.hs 54;" f -blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f +blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 15;" f blinkActionFail src/Dodge/Creature/Action/Blink.hs 87;" f blinkActionMousePos src/Dodge/Creature/Action/Blink.hs 24;" f blinkDistortions src/Dodge/Creature/Action/Blink.hs 45;" f @@ -2743,11 +2744,11 @@ boxSurfacesIndices src/Shader/Poke.hs 290;" f boxXYZ src/Polyhedra.hs 91;" f boxXYZnobase src/Polyhedra.hs 77;" f brainHat src/Dodge/Item/Equipment.hs 62;" f -branchRectWith src/Dodge/Room/Branch.hs 15;" f +branchRectWith src/Dodge/Room/Branch.hs 16;" f branchWith src/Dodge/Room/Room.hs 77;" f bright src/Color.hs 147;" f brightX src/Color.hs 143;" f -btSPic src/Dodge/Render/ShapePicture.hs 159;" f +btSPic src/Dodge/Render/ShapePicture.hs 160;" f btText src/Dodge/Inventory/SelectionList.hs 236;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 431;" f @@ -2842,7 +2843,7 @@ clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 577;" f cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f cleanUpPreload src/Preload.hs 10;" f cleanUpSoundPreload src/Preload.hs 15;" f -cleanupHalted src/Sound.hs 118;" f +cleanupHalted src/Sound.hs 119;" f cleatLabel src/Dodge/Cleat.hs 30;" f cleatOnward src/Dodge/Cleat.hs 24;" f cleatSide src/Dodge/Cleat.hs 27;" f @@ -2892,17 +2893,17 @@ combineItemListYouX src/Dodge/Combine.hs 36;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 132;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 743;" f -combineTree src/Dodge/Tree/Compose.hs 67;" f +combineTree src/Dodge/Tree/Compose.hs 68;" f commandColor src/Dodge/Terminal.hs 127;" f commonPrefix src/Dodge/Debug/Terminal.hs 149;" f comp src/Quaternion.hs 61;" f compP2A src/Dodge/ShiftPoint.hs 11;" f -compactDraw src/Dodge/LevelGen.hs 94;" f -compactDraw' src/Dodge/LevelGen.hs 105;" f -compactDrawTree src/Dodge/LevelGen.hs 88;" f +compactDraw src/Dodge/LevelGen.hs 95;" f +compactDraw' src/Dodge/LevelGen.hs 106;" f +compactDrawTree src/Dodge/LevelGen.hs 89;" f compileAndCheckShader src/Shader/Compile.hs 108;" f -composeNode src/Dodge/Tree/Compose.hs 76;" f -composeTree src/Dodge/Tree/Compose.hs 47;" f +composeNode src/Dodge/Tree/Compose.hs 77;" f +composeTree src/Dodge/Tree/Compose.hs 48;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 665;" f conEffects src/Dodge/Concurrent.hs 12;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f @@ -2912,6 +2913,7 @@ constructEdges src/Polyhedra.hs 31;" f constructEdgesList src/Polyhedra.hs 40;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 58;" f continueTerminal src/Dodge/Update/Input/InGame.hs 407;" f +convexCover src/Dodge/Placement/PlaceSpot.hs 165;" f convexHull src/Geometry/Polygon.hs 142;" f convexHullSafe src/Geometry/Polygon.hs 149;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 46;" f @@ -2979,7 +2981,7 @@ craftItemSPic src/Dodge/Item/Draw/SPic.hs 40;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 597;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 10;" f -createHeadLamp src/Dodge/Euse.hs 68;" f +createHeadLamp src/Dodge/Euse.hs 64;" f createItemYou src/Dodge/Inventory/Add.hs 62;" f createLightMap src/Render.hs 26;" f createProjectile src/Dodge/HeldUse.hs 1271;" f @@ -3010,7 +3012,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 40;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f cubeShape src/Dodge/Block/Debris.hs 110;" f -cullPoint src/Dodge/Render/ShapePicture.hs 126;" f +cullPoint src/Dodge/Render/ShapePicture.hs 127;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f @@ -3083,13 +3085,13 @@ debugPutN src/Dodge/Debug.hs 92;" f debugShowPath src/Dodge/Debug.hs 113;" f debugWritableValues src/Dodge/Debug.hs 126;" f decodeSensorType src/Dodge/Terminal.hs 81;" f -decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f -decomposeTree src/Dodge/Tree/Compose.hs 58;" f +decomposeSelfTree src/Dodge/Tree/Compose.hs 62;" f +decomposeTree src/Dodge/Tree/Compose.hs 59;" f decontamRoom src/Dodge/Room/Airlock.hs 38;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 14;" f decorationToShape src/Dodge/Placement/TopDecoration.hs 16;" f decreaseAwareness src/Dodge/Creature/Perception.hs 118;" f -decrementTimer src/Sound.hs 103;" f +decrementTimer src/Sound.hs 104;" f dedaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 557;" f dededaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 677;" f dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 759;" f @@ -3125,13 +3127,13 @@ defaultDoorWall src/Dodge/Default/Wall.hs 29;" f defaultDrawButton src/Dodge/Button/Draw.hs 29;" f defaultFlIt src/Dodge/Default.hs 27;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f -defaultHUD src/Dodge/Default/World.hs 169;" f +defaultHUD src/Dodge/Default/World.hs 170;" f defaultInanimate src/Dodge/Default/Creature.hs 62;" f defaultInput src/Dodge/Default/World.hs 12;" f defaultIntention src/Dodge/Default/Creature.hs 98;" f defaultInvSize src/Dodge/Default/Creature.hs 72;" f defaultLDP src/Dodge/ListDisplayParams.hs 19;" f -defaultLWorld src/Dodge/Default/World.hs 104;" f +defaultLWorld src/Dodge/Default/World.hs 105;" f defaultMachine src/Dodge/Default.hs 30;" f defaultMachineWall src/Dodge/Default/Wall.hs 38;" f defaultPerceptionState src/Dodge/Default/Creature.hs 75;" f @@ -3239,7 +3241,7 @@ doModificationEffect src/Dodge/ModificationEffect.hs 7;" f doPreload appDodge/Main.hs 132;" f doQuickload src/Dodge/Save.hs 83;" f doQuicksave src/Dodge/Save.hs 77;" f -doRandImpulse src/Dodge/RandImpulse.hs 7;" f +doRandImpulse src/Dodge/RandImpulse.hs 8;" f doRegexInput src/Dodge/Update/Input/InGame.hs 453;" f doRoomPlacements src/Dodge/Layout.hs 104;" f doRoomShift src/Dodge/Room/Link.hs 33;" f @@ -3278,14 +3280,13 @@ drawAnySelectionBox src/Dodge/Render/Picture.hs 130;" f drawArrowDown src/Dodge/Render/Picture.hs 219;" f drawBaseMachine src/Dodge/Machine/Draw.hs 75;" f drawBlip src/Dodge/RadarBlip.hs 16;" f -drawBlock src/Dodge/Render/ShapePicture.hs 79;" f +drawBlock src/Dodge/Render/ShapePicture.hs 80;" f drawBoundingBox src/Dodge/Debug/Picture.hs 359;" f -drawBullet src/Dodge/Render/ShapePicture.hs 165;" f +drawBullet src/Dodge/Render/ShapePicture.hs 166;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChasm src/Dodge/Render/ShapePicture.hs 82;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f -drawCliff src/Dodge/Render/ShapePicture.hs 85;" f +drawCliff src/Dodge/Render/ShapePicture.hs 86;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 267;" f drawCombineInventory src/Dodge/Render/HUD.hs 190;" f @@ -3294,7 +3295,7 @@ drawCoord src/Dodge/Debug/Picture.hs 387;" f drawCountMod src/Render.hs 231;" f drawCrInfo src/Dodge/Debug.hs 177;" f drawCrInfo' src/Dodge/Debug.hs 172;" f -drawCreature src/Dodge/Render/ShapePicture.hs 101;" f +drawCreature src/Dodge/Render/ShapePicture.hs 102;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCross src/Dodge/Render/Label.hs 25;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f @@ -3355,7 +3356,7 @@ drawPathing src/Dodge/Debug/Picture.hs 408;" f drawPlus src/Dodge/Render/Picture.hs 163;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f -drawPulseBall src/Dodge/Render/ShapePicture.hs 93;" f +drawPulseBall src/Dodge/Render/ShapePicture.hs 94;" f drawQuitTerminal src/Dodge/Render/Picture.hs 145;" f drawRBOptions src/Dodge/Render/HUD.hs 253;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f @@ -3427,19 +3428,19 @@ ebEffect src/Dodge/EnergyBall.hs 45;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f edgeToPic src/Dodge/Debug/Picture.hs 417;" f -effectOnEquip src/Dodge/Euse.hs 91;" f -effectOnRemove src/Dodge/Euse.hs 81;" f +effectOnEquip src/Dodge/Euse.hs 89;" f +effectOnRemove src/Dodge/Euse.hs 79;" f eitType src/Dodge/Data/EquipType.hs 15;" f ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 837;" f elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 821;" f elephantGun src/Dodge/Item/Held/Rod.hs 27;" f -emptyCorridor src/Dodge/Room/BlinkAcross.hs 22;" f +emptyCorridor src/Dodge/Room/BlinkAcross.hs 23;" f emptyTrie src/SimpleTrie.hs 17;" f encircle src/Dodge/Creature/Boid.hs 118;" f encircleCloseP src/Dodge/Creature/Boid.hs 38;" f encircleDistP src/Dodge/Creature/Boid.hs 24;" f encircleP src/Dodge/Creature/Boid.hs 30;" f -endArcPos src/Dodge/Tesla.hs 87;" f +endArcPos src/Dodge/Tesla.hs 86;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 276;" f endRegex src/Dodge/Update/Input/InGame.hs 270;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 689;" f @@ -3451,7 +3452,7 @@ eqPosText src/Dodge/Equipment/Text.hs 5;" f eqTypeToSites src/Dodge/Inventory/RBList.hs 77;" f equipAllocString src/Dodge/Render/HUD.hs 316;" f equipAttachPos src/Dodge/Item/Draw.hs 30;" f -equipBackgroundEffect src/Dodge/Euse.hs 23;" f +equipBackgroundEffect src/Dodge/Euse.hs 22;" f equipInfo src/Dodge/Item/Info.hs 141;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 158;" f equipPosition src/Dodge/Item/Draw.hs 38;" f @@ -3480,7 +3481,7 @@ explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 80;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 131;" f +extraPics src/Dodge/Render/ShapePicture.hs 132;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f @@ -3532,7 +3533,7 @@ flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 233;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 152;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 153;" f floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f @@ -3540,7 +3541,7 @@ foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f foldMTRS src/Dodge/Room/Tutorial.hs 77;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 111;" f -followImpulse src/Dodge/Creature/Impulse.hs 24;" f +followImpulse src/Dodge/Creature/Impulse.hs 25;" f foot1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 819;" f foot2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 705;" f foot3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 831;" f @@ -3567,7 +3568,7 @@ fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 48;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f -gRandify src/Dodge/Randify.hs 11;" f +gRandify src/Dodge/Randify.hs 12;" f gadgetEffect src/Dodge/HeldUse.hs 49;" f gameOverMenu src/Dodge/Menu.hs 200;" f gameRoomFromRoom src/Dodge/Layout.hs 152;" f @@ -3580,9 +3581,9 @@ gasType src/Dodge/HeldUse.hs 1110;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f generateGraphs src/Dodge/Menu.hs 147;" f -generateLayout src/Dodge/Layout/Generate.hs 10;" f +generateLayout src/Dodge/Layout/Generate.hs 11;" f generateLevelFromRoomList src/Dodge/Layout.hs 35;" f -generateWorldFromSeed src/Dodge/LevelGen.hs 17;" f +generateWorldFromSeed src/Dodge/LevelGen.hs 18;" f geom src/Shader/Data.hs 110;" f geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f @@ -3754,7 +3755,7 @@ initTexture2DArraySquare src/Shader/AuxAddition.hs 16;" f initWallZoning src/Dodge/Wall/Zone.hs 12;" f initialRoomTree src/Dodge/Floor.hs 24;" f initialWorld src/Dodge/Initialisation.hs 13;" f -initialisePlaying src/Sound.hs 77;" f +initialisePlaying src/Sound.hs 78;" f initializeGLState src/Preload/Render.hs 255;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f @@ -3838,7 +3839,7 @@ isCornerLink src/Dodge/RoomLink.hs 65;" f isElectrical src/Dodge/Machine/Update.hs 106;" f isFlyable src/Dodge/WorldEvent/ThingsHit.hs 176;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 198;" f -isInLnk src/Dodge/PlacementSpot.hs 161;" f +isInLnk src/Dodge/PlacementSpot.hs 162;" f isJust' src/MaybeHelp.hs 27;" f isLHS src/Geometry/LHS.hs 11;" f isLeftOf src/Geometry.hs 199;" f @@ -3847,14 +3848,14 @@ isMidEdgeLink src/Dodge/RoomLink.hs 56;" f isNHS src/Geometry/Intersect.hs 53;" f isNothing' src/MaybeHelp.hs 31;" f isOnSeg src/Geometry.hs 237;" f -isOutLnk src/Dodge/PlacementSpot.hs 166;" f +isOutLnk src/Dodge/PlacementSpot.hs 167;" f isOverTerminalScreen src/Dodge/Update.hs 444;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 108;" f isRHS src/Geometry/LHS.hs 32;" f -isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f -isUnusedLnkType src/Dodge/PlacementSpot.hs 190;" f -isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 174;" f +isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f +isUnusedLnkType src/Dodge/PlacementSpot.hs 191;" f +isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 175;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f isVowel src/StringHelp.hs 8;" f isWalkable src/Dodge/WorldEvent/ThingsHit.hs 183;" f @@ -3938,7 +3939,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 54;" f lamp src/Dodge/Creature/Lamp.hs 18;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 115;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 116;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 130;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 414;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 731;" f @@ -3950,7 +3951,7 @@ laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f lastMap src/Dodge/DoubleTree.hs 253;" f latticeXsYs src/Grid.hs 24;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f -layoutLevelFromSeed src/Dodge/LevelGen.hs 40;" f +layoutLevelFromSeed src/Dodge/LevelGen.hs 41;" f ldpRect src/Dodge/Render/List.hs 48;" f ldpSelection src/Dodge/Update/Input/ScreenLayer.hs 84;" f ldtIL src/Dodge/DoubleTree.hs 225;" f @@ -4041,7 +4042,7 @@ longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 145;" f lookupTrie src/SimpleTrie.hs 30;" f loopPairs src/ListHelp.hs 30;" f -lootRoom src/Dodge/Room/Treasure.hs 58;" f +lootRoom src/Dodge/Room/Treasure.hs 59;" f lorem src/Lorem.hs 3;" f lowBlock src/Dodge/Placement/Instance/Block.hs 28;" f lowWhirS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 541;" f @@ -4099,12 +4100,12 @@ makeShaderVBO src/Shader/Compile.hs 24;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f makeSourcedShader src/Shader/Compile.hs 54;" f -makeSpark src/Dodge/Spark.hs 45;" f +makeSpark src/Dodge/Spark.hs 46;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 23;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeTermLine src/Dodge/Terminal.hs 109;" f makeTermPara src/Dodge/Terminal.hs 118;" f -makeTeslaArc src/Dodge/Tesla.hs 29;" f +makeTeslaArc src/Dodge/Tesla.hs 28;" f makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 39;" f makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 15;" f @@ -4127,7 +4128,7 @@ maybeDestroyDoor src/Dodge/Wall/Damage.hs 64;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 568;" f maybeOpenConsole src/Dodge/Update.hs 134;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f -maybeTakeOne src/RandomHelp.hs 116;" f +maybeTakeOne src/RandomHelp.hs 118;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f mcApplyDamage src/Dodge/Machine/Update.hs 167;" f mcBackgroundSound src/Dodge/Machine/Update.hs 156;" f @@ -4142,7 +4143,7 @@ mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 126;" f mcProxSensorUpdate src/Dodge/Machine/Update.hs 177;" f mcProxTest src/Dodge/Machine/Update.hs 258;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 219;" f -mcSPic src/Dodge/Render/ShapePicture.hs 162;" f +mcSPic src/Dodge/Render/ShapePicture.hs 163;" f mcShootAuto src/Dodge/HeldUse.hs 1164;" f mcShootLaser src/Dodge/HeldUse.hs 1157;" f mcTypeUpdate src/Dodge/Machine/Update.hs 33;" f @@ -4163,7 +4164,7 @@ menuOptionToSelectionItem src/Dodge/Menu/Option.hs 91;" f merge src/ListHelp.hs 84;" f mergeBy src/ListHelp.hs 87;" f mergeOn src/ListHelp.hs 94;" f -mergeSound src/Sound.hs 59;" f +mergeSound src/Sound.hs 60;" f metal1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 841;" f metal2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 735;" f metal3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 573;" f @@ -4227,8 +4228,8 @@ moveWall src/Dodge/Wall/Move.hs 23;" f moveWallID src/Dodge/Wall/Move.hs 18;" f moveWallIDUnsafe src/Dodge/Wall/Move.hs 13;" f moveZoomCamera src/Dodge/Update/Camera.hs 92;" f -mtTopLabels src/Dodge/Tree/Compose.hs 50;" f -mtUnderLabels src/Dodge/Tree/Compose.hs 53;" f +mtTopLabels src/Dodge/Tree/Compose.hs 51;" f +mtUnderLabels src/Dodge/Tree/Compose.hs 54;" f muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f muin src/Dodge/RoomLink.hs 147;" f multGunCrit src/Dodge/Creature.hs 75;" f @@ -4240,16 +4241,16 @@ muzFlareAt src/Dodge/HeldUse.hs 681;" f muzzlePos src/Dodge/HeldUse.hs 767;" f muzzleRandPos src/Dodge/HeldUse.hs 776;" f muzzleWallCheck src/Dodge/Update.hs 323;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 175;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 178;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 184;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 184;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f mvGust src/Dodge/Update.hs 823;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 219;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 225;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 172;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 178;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f nRays src/Geometry.hs 182;" f @@ -4266,9 +4267,9 @@ newKey src/IntMapHelp.hs 61;" f newSounds src/Dodge/Creature/Perception.hs 169;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f -nextArc src/Dodge/Tesla.hs 61;" f +nextArc src/Dodge/Tesla.hs 60;" f nextInSectionSS src/Dodge/SelectionSections.hs 34;" f -nextLayoutInt src/Dodge/Data/MetaTree.hs 43;" f +nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f @@ -4285,18 +4286,18 @@ nulgate src/Dodge/Item/Scope.hs 101;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLuint src/Shader/Parameters.hs 29;" f numLayers src/Picture/Data.hs 26;" 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 37;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 184;" f obstacleColor src/Dodge/Debug/Picture.hs 264;" f obstructPathsCrossing src/Dodge/Path.hs 120;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f -onEquipWristShield src/Dodge/Euse.hs 96;" f -onRemoveWristShield src/Dodge/Euse.hs 86;" f +onEquipWristShield src/Dodge/Euse.hs 94;" f +onRemoveWristShield src/Dodge/Euse.hs 84;" f onXY src/Geometry/Vector3D.hs 130;" f oneH src/Dodge/Creature/Test.hs 96;" f openConsole src/Dodge/Update.hs 139;" f @@ -4336,7 +4337,7 @@ overlapSegCrs src/Dodge/Base/Collide.hs 59;" f overlapSegWalls src/Dodge/Base/Collide.hs 211;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 180;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f -overwriteLabel src/Dodge/Tree/Compose.hs 31;" f +overwriteLabel src/Dodge/Tree/Compose.hs 32;" f p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 68;" f @@ -4382,25 +4383,25 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 196;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 187;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 193;" 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 -placeChasm src/Dodge/Placement/PlaceSpot.hs 153;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 214;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 42;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 34;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 103;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 88;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 66;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 162;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 154;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 220;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 43;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 35;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 104;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 67;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 168;" f plainRegex src/Dodge/DisplayInventory.hs 193;" f -playIfFree src/Sound.hs 138;" f -playPositionalSoundQueue src/Sound.hs 146;" f -playSoundAndUpdate src/Sound.hs 54;" f -playSoundQueue src/Sound.hs 133;" f +playIfFree src/Sound.hs 139;" f +playPositionalSoundQueue src/Sound.hs 147;" f +playSoundAndUpdate src/Sound.hs 55;" f +playSoundQueue src/Sound.hs 134;" f playSoundUnlessRewinding appDodge/Main.hs 110;" f plusDecoration src/Dodge/Placement/TopDecoration.hs 43;" f pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f @@ -4472,7 +4473,7 @@ popScreen src/Dodge/Menu/PushPop.hs 6;" f posRms src/Dodge/Tree/Shift.hs 44;" f posSelSecYint src/Dodge/SelectionSections.hs 147;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f -postGenerationProcessing src/Dodge/LevelGen.hs 30;" f +postGenerationProcessing src/Dodge/LevelGen.hs 31;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 14;" f postWorldLoad src/Dodge/WorldLoad.hs 18;" f powerFakeout src/Dodge/Room/Start.hs 28;" f @@ -4513,9 +4514,9 @@ psPt src/Dodge/LevelGen/PlacementHelper.hs 24;" f psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f -psRandRanges src/Dodge/PlacementSpot.hs 260;" f +psRandRanges src/Dodge/PlacementSpot.hs 261;" f psj src/Dodge/LevelGen/PlacementHelper.hs 71;" f -psposAddLabel src/Dodge/PlacementSpot.hs 69;" f +psposAddLabel src/Dodge/PlacementSpot.hs 70;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f pulseChecker src/Dodge/Item/Equipment.hs 84;" f @@ -4544,7 +4545,7 @@ putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 101;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f putShape src/Dodge/Room/Foreground.hs 134;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f -putStrLnAppend src/Dodge/LevelGen.hs 82;" f +putStrLnAppend src/Dodge/LevelGen.hs 83;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 51;" f putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 20;" f putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 15;" f @@ -4565,25 +4566,25 @@ radToDeg src/Geometry/Vector.hs 123;" f radiusSpring src/Dodge/Update.hs 903;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f -randDirPS src/Dodge/PlacementSpot.hs 56;" f -randDirSpark src/Dodge/Spark.hs 55;" f +randDirPS src/Dodge/PlacementSpot.hs 57;" f +randDirSpark src/Dodge/Spark.hs 56;" f randEdgeTank src/Dodge/Room/Tanks.hs 34;" f randEdgeTanks src/Dodge/Room/Tanks.hs 52;" f randFirstWeapon src/Dodge/Placement/Random.hs 8;" f -randFromPair src/RandomHelp.hs 141;" f -randInArc src/RandomHelp.hs 81;" f -randInArcStrip src/RandomHelp.hs 84;" f -randInCirc src/RandomHelp.hs 73;" f -randInHemisphere src/RandomHelp.hs 104;" f -randInRect src/RandomHelp.hs 110;" f -randOnCirc src/RandomHelp.hs 76;" f -randOnHemisphere src/RandomHelp.hs 97;" f -randOnUnitSphere src/RandomHelp.hs 90;" f -randPeaked src/RandomHelp.hs 138;" f -randPeakedParam src/RandomHelp.hs 130;" f -randProb src/RandomHelp.hs 68;" f -randSpark src/Dodge/Spark.hs 69;" f -randSparkExtraVel src/Dodge/Spark.hs 92;" f +randFromPair src/RandomHelp.hs 143;" f +randInArc src/RandomHelp.hs 83;" f +randInArcStrip src/RandomHelp.hs 86;" f +randInCirc src/RandomHelp.hs 75;" f +randInHemisphere src/RandomHelp.hs 106;" f +randInRect src/RandomHelp.hs 112;" f +randOnCirc src/RandomHelp.hs 78;" f +randOnHemisphere src/RandomHelp.hs 99;" f +randOnUnitSphere src/RandomHelp.hs 92;" f +randPeaked src/RandomHelp.hs 140;" f +randPeakedParam src/RandomHelp.hs 132;" f +randProb src/RandomHelp.hs 70;" f +randSpark src/Dodge/Spark.hs 70;" f +randSparkExtraVel src/Dodge/Spark.hs 93;" f randWallReflect src/Dodge/Update.hs 679;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f @@ -4593,12 +4594,12 @@ randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f randomMediumRoom src/Dodge/Room/Boss.hs 70;" f randomPath src/TreeHelp.hs 145;" f randomPoints bench/Bench.hs 37;" f -randomRanges src/RandomHelp.hs 16;" f -randomSelectionFromList src/RandomHelp.hs 65;" f +randomRanges src/RandomHelp.hs 18;" f +randomSelectionFromList src/RandomHelp.hs 67;" f randomTank src/Dodge/Room/Tanks.hs 20;" f -randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f -randsOnCirc src/RandomHelp.hs 127;" f -randsSpread src/RandomHelp.hs 120;" f +randomTreeStructure src/Dodge/Layout/Generate.hs 19;" f +randsOnCirc src/RandomHelp.hs 129;" f +randsSpread src/RandomHelp.hs 122;" f ratIntersectLineLine src/Geometry/Intersect.hs 216;" f rdToVec2s src/Dodge/Render.hs 426;" f readSaveSlot src/Dodge/Save.hs 45;" f @@ -4655,7 +4656,7 @@ renderShadows src/Render.hs 116;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 168;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 66;" f -resetPLUse src/Dodge/PlacementSpot.hs 92;" f +resetPLUse src/Dodge/PlacementSpot.hs 93;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetTerminal src/Dodge/WorldEffect.hs 160;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f @@ -4673,7 +4674,7 @@ resumeSound src/Dodge/SoundLogic.hs 48;" f retreatPointForFrom src/Dodge/Creature/Impulse/Flee.hs 9;" f revCard src/Dodge/Data/CardinalPoint.hs 13;" f reverseCymbal1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 807;" f -reversePair src/Dodge/LevelGen.hs 85;" f +reversePair src/Dodge/LevelGen.hs 86;" 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 @@ -4745,15 +4746,15 @@ rotateXY src/Polyhedra.hs 28;" f roundPoint2 src/Geometry/Intersect.hs 237;" f roundTank src/Dodge/Placement/Instance/Tank.hs 26;" f roundTankCross src/Dodge/Placement/Instance/Tank.hs 32;" f -rpIsOffGrid src/Dodge/PlacementSpot.hs 81;" f -rpIsOnGrid src/Dodge/PlacementSpot.hs 75;" f -rpOffPathFromEdge src/Dodge/PlacementSpot.hs 87;" f -rprBool src/Dodge/PlacementSpot.hs 72;" f -rprBoolShift src/Dodge/PlacementSpot.hs 107;" f -rprShift src/Dodge/PlacementSpot.hs 98;" f +rpIsOffGrid src/Dodge/PlacementSpot.hs 82;" f +rpIsOnGrid src/Dodge/PlacementSpot.hs 76;" f +rpOffPathFromEdge src/Dodge/PlacementSpot.hs 88;" f +rprBool src/Dodge/PlacementSpot.hs 73;" f +rprBoolShift src/Dodge/PlacementSpot.hs 108;" f +rprShift src/Dodge/PlacementSpot.hs 99;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f runPastStart src/Dodge/Room/Start.hs 72;" f -runStateWorld src/Dodge/Randify.hs 17;" f +runStateWorld src/Dodge/Randify.hs 18;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f safeAngleVV src/Geometry/Vector.hs 69;" f safeArgV src/Geometry/Vector.hs 88;" f @@ -4831,12 +4832,12 @@ sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f -setChannelPos src/Sound.hs 151;" f +setChannelPos src/Sound.hs 152;" f setClickWorldPos src/Dodge/Update.hs 109;" f setClip src/Dodge/Debug.hs 201;" f setDepth src/Picture/Base.hs 120;" f -setDirPS src/Dodge/PlacementSpot.hs 49;" f -setFallback src/Dodge/PlacementSpot.hs 125;" f +setDirPS src/Dodge/PlacementSpot.hs 50;" f +setFallback src/Dodge/PlacementSpot.hs 126;" f setInLinks src/Dodge/RoomLink.hs 53;" f setInLinksByType src/Dodge/RoomLink.hs 72;" f setInLinksPD src/Dodge/RoomLink.hs 92;" f @@ -4844,7 +4845,7 @@ setInvPosFromSS src/Dodge/Inventory/Location.hs 92;" f setLayer src/Picture/Base.hs 131;" f setLinkType src/Dodge/RoomLink.hs 78;" f setLinkTypePD src/Dodge/RoomLink.hs 85;" f -setMusicVolume src/Sound.hs 163;" f +setMusicVolume src/Sound.hs 164;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f setOldPos src/Dodge/Update.hs 538;" f setOutLinks src/Dodge/RoomLink.hs 50;" f @@ -4856,7 +4857,7 @@ setSelWhileDragging src/Dodge/Update/Input/InGame.hs 342;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 97;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f -setSoundVolume src/Sound.hs 158;" f +setSoundVolume src/Sound.hs 159;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f @@ -4866,8 +4867,7 @@ setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 448;" f setVol src/Dodge/Config.hs 47;" f setWindowColor src/Dodge/Render/Walls.hs 32;" f -setWristShieldPos src/Dodge/Euse.hs 48;" f -setWristShieldPos' src/Dodge/Euse.hs 108;" f +setWristShieldPos src/Dodge/Euse.hs 113;" f setupConLoop src/Loop.hs 103;" f setupConLoop' src/Loop.hs 193;" f setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f @@ -4892,10 +4892,10 @@ shellMag src/Dodge/Item/Ammo.hs 46;" f shellModule src/Dodge/Item/Scope.hs 128;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 91;" f -shiftByV2 src/Dodge/PlacementSpot.hs 250;" f -shiftChildren src/Dodge/Tree/Compose.hs 44;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 120;" f -shiftInBy src/Dodge/PlacementSpot.hs 247;" f +shiftByV2 src/Dodge/PlacementSpot.hs 251;" f +shiftChildren src/Dodge/Tree/Compose.hs 45;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 121;" f +shiftInBy src/Dodge/PlacementSpot.hs 248;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 310;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 355;" f shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 349;" f @@ -4934,7 +4934,7 @@ shoulderSH src/Dodge/Creature/Picture.hs 125;" f showAttachItem src/Dodge/Item/Display.hs 92;" 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 54;" f showMuzzlePositions src/Dodge/Debug.hs 253;" f @@ -4942,10 +4942,10 @@ showTerminalError src/Dodge/Debug/Terminal.hs 80;" f showTimeFlow src/Dodge/TestString.hs 77;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 175;" f shrinkVert src/Geometry/Polygon.hs 179;" f -shuffle src/RandomHelp.hs 49;" f +shuffle src/RandomHelp.hs 51;" f shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 82;" f -shuffleTail src/RandomHelp.hs 59;" f +shuffleTail src/RandomHelp.hs 61;" f sigmoid src/Dodge/Base.hs 151;" f simpleCrSprings src/Dodge/Update.hs 908;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f @@ -4980,7 +4980,7 @@ slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 157;" f smallBattery src/Dodge/Item/Ammo.hs 56;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f -smallDrawTree src/Dodge/LevelGen.hs 91;" f +smallDrawTree src/Dodge/LevelGen.hs 92;" f smallGlass1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 825;" f smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 535;" f smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 805;" f @@ -5018,10 +5018,10 @@ spanColLightI src/Dodge/Placement/Instance/LightSource.hs 166;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 158;" f spanLightI src/Dodge/Placement/Instance/LightSource.hs 180;" f spanLightY src/Dodge/Placement/Instance/LightSource.hs 183;" f -sparkDam src/Dodge/Spark.hs 36;" f +sparkDam src/Dodge/Spark.hs 37;" f sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f -sparkRandDir src/Dodge/Spark.hs 116;" f -sparkToDamage src/Dodge/Spark.hs 39;" f +sparkRandDir src/Dodge/Spark.hs 117;" f +sparkToDamage src/Dodge/Spark.hs 40;" f spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 54;" f spawnerRoom src/Dodge/Room/Room.hs 377;" f @@ -5083,7 +5083,7 @@ stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 767;" f stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 537;" f stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 543;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 657;" f -stopAllSounds src/Sound.hs 126;" f +stopAllSounds src/Sound.hs 127;" f stopBulletAt src/Dodge/Bullet.hs 200;" f stopPushing src/Dodge/Wall/Damage.hs 95;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f @@ -5109,13 +5109,13 @@ swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f t src/ShortShow.hs 48;" f tEast src/Dodge/Room/Corridor.hs 91;" f -tToBTree src/Dodge/Tree/Compose.hs 92;" f +tToBTree src/Dodge/Tree/Compose.hs 93;" f tWest src/Dodge/Room/Corridor.hs 116;" f -takeN src/RandomHelp.hs 44;" f -takeNMore src/RandomHelp.hs 41;" f -takeOne src/RandomHelp.hs 22;" f -takeOneMore src/RandomHelp.hs 34;" f -takeOneWeighted src/RandomHelp.hs 25;" f +takeN src/RandomHelp.hs 46;" f +takeNMore src/RandomHelp.hs 43;" f +takeOne src/RandomHelp.hs 24;" f +takeOneMore src/RandomHelp.hs 36;" f +takeOneWeighted src/RandomHelp.hs 27;" f takeUntil src/FoldableHelp.hs 99;" f takeWhileArb src/ListHelp.hs 100;" f takeWhileArb' src/ListHelp.hs 108;" f @@ -5152,8 +5152,8 @@ teslaGunPic src/Dodge/Item/Draw/SPic.hs 411;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f testEvent src/Dodge/Event/Test.hs 11;" f testInventory src/Dodge/Creature.hs 304;" f -testPic src/Dodge/Render/ShapePicture.hs 55;" f -testSPic src/Dodge/Render/ShapePicture.hs 52;" f +testPic src/Dodge/Render/ShapePicture.hs 56;" f +testSPic src/Dodge/Render/ShapePicture.hs 53;" f testStringInit src/Dodge/TestString.hs 34;" f text src/Picture/Base.hs 185;" f textGrad src/Picture/Text.hs 5;" f @@ -5213,7 +5213,7 @@ toColor8 src/Color.hs 158;" f toFloatVAs src/Shader/Compile.hs 66;" 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 212;" f toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f @@ -5272,12 +5272,12 @@ treeAttachDeep src/TreeHelp.hs 193;" f treeChildNums src/TreeHelp.hs 130;" f treeFromPost src/TreeHelp.hs 40;" f treeFromTrunk src/TreeHelp.hs 52;" f -treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 21;" f +treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 22;" f treePath src/Dodge/Tree/GenerateStructure.hs 13;" f treePaths src/TreeHelp.hs 139;" f treePost src/TreeHelp.hs 46;" f treeToPotentialFunction src/Dodge/Item/Grammar.hs 143;" f -triLootRoom src/Dodge/Room/Treasure.hs 22;" f +triLootRoom src/Dodge/Room/Treasure.hs 23;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitchSPic src/Dodge/Placement/Instance/Button.hs 14;" f @@ -5290,11 +5290,11 @@ tryClickUse src/Dodge/Creature/YourControl.hs 237;" f tryCombine src/Dodge/Update/Input/InGame.hs 551;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 139;" f -tryGetChannel src/Sound.hs 98;" f +tryGetChannel src/Sound.hs 99;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 22;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 40;" f tryPickupSelected src/Dodge/Update/Input/InGame.hs 146;" f -tryPlay src/Sound.hs 84;" f +tryPlay src/Sound.hs 85;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 54;" f trySeedFromClipboard src/Dodge/Menu.hs 94;" f @@ -5318,7 +5318,7 @@ twists src/Dodge/Creature/Test.hs 102;" f twoFlat src/Dodge/Creature/Test.hs 99;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 75;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f -twoRoomPoss src/Dodge/PlacementSpot.hs 146;" f +twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 649;" f @@ -5337,13 +5337,13 @@ unsafeSwapKeys src/IntMapHelp.hs 75;" f unshadowBlock src/Dodge/Block.hs 14;" f untilJust src/MonadHelp.hs 7;" f untilJustCount src/MonadHelp.hs 14;" f -unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" f -unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 137;" f -unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 119;" f -unusedSpotNearInLink src/Dodge/PlacementSpot.hs 196;" f +unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 132;" f +unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 138;" f +unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 120;" f +unusedSpotNearInLink src/Dodge/PlacementSpot.hs 197;" f updateAimPos src/Dodge/Update.hs 353;" f updateAllNodes src/TreeHelp.hs 86;" f -updateArc src/Dodge/Tesla.hs 44;" f +updateArc src/Dodge/Tesla.hs 43;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 484;" f updateBarrel src/Dodge/Barreloid.hs 44;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f @@ -5422,7 +5422,7 @@ updateObjMapMaybe src/Dodge/Update.hs 578;" f updatePastWorlds src/Dodge/Update.hs 459;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 137;" f +updatePulse src/Dodge/Creature/Update.hs 138;" f updatePulseBall src/Dodge/Update.hs 484;" f updatePulseLaser src/Dodge/Update.hs 648;" f updatePulseLasers src/Dodge/Update.hs 479;" f @@ -5442,9 +5442,9 @@ updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f updateShockwaves src/Dodge/Update.hs 690;" f updateSingleNodes src/TreeHelp.hs 98;" f -updateSound src/Sound.hs 72;" f -updateSounds src/Sound.hs 67;" f -updateSpark src/Dodge/Spark.hs 19;" f +updateSound src/Sound.hs 73;" f +updateSounds src/Sound.hs 68;" f +updateSpark src/Dodge/Spark.hs 20;" f updateSparks src/Dodge/Update.hs 702;" f updateTerminal src/Dodge/Update.hs 522;" f updateTeslaArc src/Dodge/Update.hs 618;" f @@ -5488,19 +5488,19 @@ useHotkey src/Dodge/Creature/YourControl.hs 77;" f useInventoryPath src/Dodge/HeldUse.hs 1377;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f -useLnkRoomPos src/Dodge/PlacementSpot.hs 255;" f +useLnkRoomPos src/Dodge/PlacementSpot.hs 256;" f useLoadedAmmo src/Dodge/HeldUse.hs 723;" f -useMagShield src/Dodge/Euse.hs 40;" f +useMagShield src/Dodge/Euse.hs 33;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f useRewindGun src/Dodge/HeldUse.hs 1337;" f -useRoomPosCond src/Dodge/PlacementSpot.hs 180;" f -useRoomPosRoomCond src/Dodge/PlacementSpot.hs 183;" f +useRoomPosCond src/Dodge/PlacementSpot.hs 181;" f +useRoomPosRoomCond src/Dodge/PlacementSpot.hs 184;" f useStopWatch src/Dodge/HeldUse.hs 1318;" f useTimeScrollGun src/Dodge/HeldUse.hs 1326;" f -useUnusedLnk src/Dodge/PlacementSpot.hs 171;" f -usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 202;" f -usedRoomLinkPoss src/Dodge/PlacementSpot.hs 209;" f +useUnusedLnk src/Dodge/PlacementSpot.hs 172;" f +usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 203;" f +usedRoomLinkPoss src/Dodge/PlacementSpot.hs 210;" f v2z src/Geometry/Vector3D.hs 93;" f vCen3 src/Geometry/Vector3D.hs 115;" f vInverse src/Geometry/Vector.hs 154;" f @@ -5633,7 +5633,7 @@ zConnect src/Dodge/Render/Connectors.hs 18;" f zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f zeroZ src/Geometry/Vector.hs 9;" f -zipArcs src/Dodge/Tesla.hs 52;" f +zipArcs src/Dodge/Tesla.hs 51;" f zipCount src/Dodge/Tree/Shift.hs 136;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f zoneClouds src/Dodge/Update.hs 511;" f