diff --git a/src/Dodge/Room/Boss.hs b/src/Dodge/Room/Boss.hs index 5f1346446..0a1ea997e 100644 --- a/src/Dodge/Room/Boss.hs +++ b/src/Dodge/Room/Boss.hs @@ -18,12 +18,13 @@ import LensHelp import RandomHelp import Control.Monad +-- pathing needs to be done roomGlassOctogon :: -- | Size Float -> Room roomGlassOctogon x = - createPathGrid $ +-- createPathGrid $ defaultRoom { _rmPolys = [ rectNSWE x (- x) (- x) x diff --git a/src/Dodge/Room/Path.hs b/src/Dodge/Room/Path.hs index db9da27a4..6156375f7 100644 --- a/src/Dodge/Room/Path.hs +++ b/src/Dodge/Room/Path.hs @@ -1,39 +1,20 @@ module Dodge.Room.Path ( gridPoints, linksGridToPath, - makeGrid, - createPathGrid, +-- makeGrid, +-- createPathGrid, gridPoints'', linksGridToPath', ) where import Control.Lens -import qualified Control.Foldl as L import Data.Function (on) import Data.List -import Data.Maybe import qualified Data.Set as S import Dodge.Data.GenWorld -import Dodge.LevelGen.StaticWalls import Geometry import Grid -createPathGrid :: Room -> Room -createPathGrid rm = rm & rmPath .~ linksGridToPath (_rmLinks rm) filterGrid - where - filterGrid = filter - (\p -> pairInPolys (_rmPolys rm) p && testCrossWalls outerWalls p) grid - grid = fromMaybe [] $ shiftedGrid <$> minx <*> maxx <*> miny <*> maxy - outerWalls = foldr cutPoly [] $ _rmPolys rm - outerPoints = map fst outerWalls - (minx, maxx, miny, maxy) = L.fold theFold outerPoints - theFold = - (,,,) - <$> L.premap fstV2 L.minimum - <*> L.premap fstV2 L.maximum - <*> L.premap sndV2 L.minimum - <*> L.premap sndV2 L.maximum - -- assumes subpth is symmetric linksGridToPath :: [RoomLink] -> [(Point2, Point2)] -> S.Set (Point2, Point2) linksGridToPath lnks subpth = S.fromList subpth <> foldMap (linkClosest . (^. rlPos)) lnks @@ -45,10 +26,3 @@ linksGridToPath' lnks subpth' = subpth <> foldMap (linkClosest . (^. rlPos)) lnk where subpth = foldMap doublePairSet subpth' linkClosest p = doublePairSet (p, minimumBy (compare `on` dist p) $ S.map fst subpth) - -testCrossWalls :: [(Point2, Point2)] -> (Point2, Point2) -> Bool -testCrossWalls wls (a, b) = not $ any (isJust . uncurry (intersectSegSeg a b)) wls - ---extra test whether both members of the path edge are in some poly -pairInPolys :: [[Point2]] -> (Point2, Point2) -> Bool -pairInPolys polys (a, b) = any (pointInPoly a) polys && any (pointInPoly b) polys diff --git a/src/Dodge/Room/Procedural.hs b/src/Dodge/Room/Procedural.hs index da0414012..6301dfda6 100644 --- a/src/Dodge/Room/Procedural.hs +++ b/src/Dodge/Room/Procedural.hs @@ -7,9 +7,10 @@ module Dodge.Room.Procedural ( centerVaultRoom, combineRooms, -- linksAndPath, - makeGrid, +-- makeGrid, ) where +import Grid import Dodge.Door.PutSlideDoor import Dodge.Default.Wall import Control.Monad @@ -37,16 +38,7 @@ import RandomHelp -- This will need a cleanup, but it might change a bit first {- A simple rectangular room with a light in the center. Creates links and pathfinding graph. -} -roomRect :: - -- | Width - Float -> - -- | Height - Float -> - -- | Number of links on vertical walls - Int -> - -- | Number of links on horizontal walls - Int -> - Room +roomRect :: Float -> Float -> Int -> Int -> Room roomRect x y xn yn = defaultRoom { _rmPolys = [rectNSWE y 0 0 x] @@ -82,8 +74,14 @@ roomRect x y xn yn = } } where + xs = take (xn + 1) [0,xd..] & each +~ 20 + ys = take (yn + 1) [0,yd..] & each +~ 20 yd = (y - 40) / fromIntegral yn xd = (x - 40) / fromIntegral xn + pth = linksGridToPath lnks + $ latticeXsYs xs ys + --pth = linksGridToPath lnks + -- $ map (bimap (+.+ V2 20 20) (+.+ V2 20 20)) (makeGrid xd xn yd yn) somelnks poffset ps a = zip (map (+.+ poffset) ps) (repeat a) wlnks = somelnks (V2 0 20) (gridPoints 0 1 yd (yn + 1)) (pi / 2) elnks = somelnks (V2 x 20) (gridPoints 0 1 yd (yn + 1)) (- pi / 2) @@ -97,8 +95,6 @@ roomRect x y xn yn = m edge edgefrom1 edgefrom2 = zipWith (lnkBothAnd (OnEdge edge) edgefrom1 edgefrom2) [0 ..] . zipCountDown - pth = linksGridToPath lnks - $ map (bimap (+.+ V2 20 20) (+.+ V2 20 20)) (makeGrid xd xn yd yn) makeonpos (p, a) = RoomPos p 0 (S.singleton $ RoomPosOnGrid $ makerpedges a) (NotLink True) mempty makerpedges (a, b) = diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 9d5b9f5a8..6de77aedb 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -1,6 +1,7 @@ {-# OPTIONS_GHC -Wno-unused-imports #-} module Dodge.Room.Tutorial where +import Dodge.Room.Boss import Dodge.Room.Tanks import Dodge.Room.LongDoor import Dodge.Layout @@ -46,7 +47,7 @@ tutAnoTree = do [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor -- , return $ tToBTree "cor" $ return $ cleatOnward $ corridor & rmPmnts .~ mempty --- , return $ tToBTree "cor" $ return $ cleatOnward airlock90 + , return $ tToBTree "cor" $ return $ cleatOnward $ roomGlassOctogon 200 -- , corDoor -- , return $ tToBTree "cor" $ return $ cleatOnward (twinSlowDoorRoom 80 200 40) -- , return $ tToBTree "cor" $ return $ cleatOnward corridor diff --git a/src/Grid.hs b/src/Grid.hs index b29e8b73f..1aa90b22b 100644 --- a/src/Grid.hs +++ b/src/Grid.hs @@ -1,15 +1,12 @@ module Grid ( - makeGrid, gridInPolygon, - shiftedGrid, gridPoints, gridPoints'', + latticeXsYs, ) where import Bound import Control.Lens -import Data.List -import qualified Data.Tuple.Extra as Tup import Geometry gridInPolygon :: Float -> [Point2] -> [Point2] @@ -25,65 +22,14 @@ boundedGrid gap (n, s, e, w) = gridPointsOff w s gap nx gap ny nx = floor $ (e - w) / gap ny = floor $ (n - s) / gap -shiftedGrid :: - -- | x min - Float -> - -- | x max - Float -> - -- | y min - Float -> - -- | y max - Float -> - [(Point2, Point2)] -shiftedGrid xmin xmax ymin ymax = grid - where - xd = xmax - xmin - yd = ymax - ymin - xsteps = ceiling $ (xd - 40) / 60 - ysteps = ceiling $ (yd - 40) / 60 - shift p = bimap (p +.+) (p +.+) - grid = map (shift (V2 (xmin + 20) (ymin + 20))) $ makeGrid 60 xsteps 60 ysteps - -- creates a DAG -gridXsYs :: [Float] -> [Float] -> [(Point2, Point2)] -gridXsYs xs ys = +latticeXsYs :: [Float] -> [Float] -> [(Point2, Point2)] +latticeXsYs xs ys = foldMap (\y -> mkpairs xs & each . each %~ (`V2` y)) ys <> foldMap (\x -> mkpairs ys & each . each %~ V2 x) xs where mkpairs zs = zip zs $ tail zs -makeGrid :: - -- | horizontal step size - Float -> - -- | number of horizontal steps - Int -> - -- | vertical step size - Float -> - -- | number of vertical steps - Int -> - [(Point2, Point2)] -makeGrid x nx y ny = - foldMap doublePair $ - gridXsYs (take (nx + 1) [0, x ..]) (take (ny + 1) [0, y ..]) - --- creates a rectangular grid starting at (0,0) in the positive orthant --- needs fixing in degenerate (xstep or ystep == 0) cases -makeGrid' :: - -- | horizontal step size - Float -> - -- | number of horizontal steps - Int -> - -- | vertical step size - Float -> - -- | number of vertical steps - Int -> - [(Point2, Point2)] -makeGrid' x nx y ny = - nub - . concatMap doublePair - . concatMap (\p -> map (Tup.both (p +.+)) $ makeRect x y) - $ gridPoints x nx y ny - gridPointsOff :: Float -> Float -> Float -> Int -> Float -> Int -> [Point2] gridPointsOff xoff yoff x nx y ny = map f $ gridPoints' nx ny where @@ -92,10 +38,6 @@ gridPointsOff xoff yoff x nx y ny = map f $ gridPoints' nx ny gridPoints :: Float -> Int -> Float -> Int -> [Point2] gridPoints = gridPointsOff 0 0 --- map f $ gridPoints' nx ny --- where --- f (a,b) = V2 (fromIntegral a * x) (fromIntegral b * y) - gridPoints'' :: Float -> Int -> Float -> Int -> [(Point2, (Int, Int))] gridPoints'' x nx y ny = map f $ gridPoints' nx ny where @@ -103,13 +45,3 @@ gridPoints'' x nx y ny = map f $ gridPoints' nx ny gridPoints' :: Int -> Int -> [(Int, Int)] gridPoints' nx ny = [(x, y) | x <- [0 .. nx -1], y <- [0 .. ny -1]] - -makeRect :: Float -> Float -> [(Point2, Point2)] -makeRect x y = - map - (bimap toV2 toV2) - [ ((0, 0), (x, 0)) - , ((0, 0), (0, y)) - , ((x, y), (x, 0)) - , ((x, y), (0, y)) - ] diff --git a/tags b/tags index 9888acf55..72a9983be 100644 --- a/tags +++ b/tags @@ -2533,7 +2533,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 342;" f applyCME src/Dodge/HeldUse.hs 369;" f -applyClip src/Dodge/Debug.hs 119;" f +applyClip src/Dodge/Debug.hs 187;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyEventIO src/Loop.hs 90;" f applyGravityPU src/Dodge/Projectile/Update.hs 40;" f @@ -2683,7 +2683,7 @@ bounceDir src/Dodge/Bullet.hs 111;" f bouncePoint src/Dodge/Base/Collide.hs 86;" f bounceSound src/Dodge/Projectile/Update.hs 73;" f boundPoints src/Bound.hs 10;" f -boundedGrid src/Grid.hs 19;" f +boundedGrid src/Grid.hs 21;" f boxABC src/Polyhedra.hs 108;" f boxEdgeIndices src/Shader/Poke.hs 358;" f boxSurfaces src/Shader/Poke.hs 277;" f @@ -2724,10 +2724,11 @@ cardVec src/Dodge/Base/CardinalPoint.hs 10;" f cardinalBetweenAdj src/Dodge/Base/CardinalPoint.hs 28;" f cardinalVectors src/Dodge/FloorItem.hs 24;" f cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f +ceilingTo src/Geometry/Zone.hs 15;" 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 293;" f +centerVaultRoom src/Dodge/Room/Procedural.hs 297;" f centroid src/Geometry/Polygon.hs 168;" f centroidNum src/Geometry/Polygon.hs 171;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f @@ -2744,7 +2745,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 211;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 214;" f chasmTest src/Dodge/Creature/Update.hs 132;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f @@ -2783,7 +2784,7 @@ clAlt src/Dodge/Cloud.hs 5;" f clClSpringVel src/Dodge/Update.hs 842;" f clColor src/Shader/Poke/Cloud.hs 35;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f -clampPath src/Dodge/Room/Procedural.hs 170;" f +clampPath src/Dodge/Room/Procedural.hs 174;" 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 @@ -2840,11 +2841,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 176;" f +combineFloors src/Dodge/Room/Procedural.hs 180;" 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 156;" f +combineRooms src/Dodge/Room/Procedural.hs 160;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineTree src/Dodge/Tree/Compose.hs 67;" f commandColor src/Dodge/Terminal.hs 114;" f @@ -3009,7 +3010,7 @@ darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f dbArg src/Dodge/Base.hs 165;" f dbArgChain src/Dodge/Base.hs 170;" f dbwMuzzles src/Dodge/HeldUse.hs 322;" f -deZoneIX src/Dodge/Zoning/Base.hs 95;" f +deZoneIX src/Dodge/Zoning/Base.hs 116;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f deadEndRoom src/Dodge/Room/Room.hs 246;" f deadFeet src/Dodge/Creature/Picture.hs 68;" f @@ -3019,18 +3020,22 @@ deadUpperBody src/Dodge/Creature/Picture.hs 113;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f debrisSPic src/Dodge/Prop/Draw.hs 21;" f debrisSize src/Dodge/Block/Debris.hs 84;" f -debugEvent src/Dodge/Debug.hs 36;" f -debugEvents src/Dodge/Debug.hs 21;" f -debugGet src/Dodge/Debug.hs 91;" f -debugItem src/Dodge/Debug.hs 39;" f +debugEvent src/Dodge/Debug.hs 42;" f +debugEvents src/Dodge/Debug.hs 27;" f +debugGet src/Dodge/Debug.hs 79;" f +debugGet1 src/Dodge/Debug.hs 86;" f +debugGet2 src/Dodge/Debug.hs 94;" f +debugGet3 src/Dodge/Debug.hs 111;" f +debugItem src/Dodge/Debug.hs 45;" f debugMenu src/Dodge/Menu.hs 124;" f debugMenuOptions src/Dodge/Menu.hs 130;" f -debugMouseClickPos src/Dodge/Debug.hs 134;" f +debugMouseClickPos src/Dodge/Debug.hs 202;" f debugOn src/Dodge/Data/Config.hs 154;" f -debugPut src/Dodge/Debug.hs 82;" f -debugPutN src/Dodge/Debug.hs 79;" f -debugShowPath src/Dodge/Debug.hs 94;" f -debugWritableValues src/Dodge/Debug.hs 107;" f +debugPutDraw src/Dodge/Debug.hs 136;" f +debugPutItems src/Dodge/Debug.hs 119;" f +debugPutN src/Dodge/Debug.hs 125;" f +debugShowPath src/Dodge/Debug.hs 162;" f +debugWritableValues src/Dodge/Debug.hs 175;" f decodeSensorType src/Dodge/Terminal.hs 72;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f @@ -3100,15 +3105,15 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f denormalEdges src/Polyhedra.hs 136;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyBlock src/Dodge/Block.hs 17;" f -destroyDoor src/Dodge/DrWdWd.hs 78;" f +destroyDoor src/Dodge/DrWdWd.hs 76;" f destroyInvItem src/Dodge/Inventory.hs 40;" f destroyItem src/Dodge/Inventory.hs 62;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f -destroyMount src/Dodge/DrWdWd.hs 99;" f -destroyMounts src/Dodge/DrWdWd.hs 96;" f +destroyMount src/Dodge/DrWdWd.hs 97;" f +destroyMounts src/Dodge/DrWdWd.hs 94;" f destroyProjectile src/Dodge/Projectile/Update.hs 108;" f detV src/Geometry/Vector.hs 94;" f detector src/Dodge/Item/Held/Utility.hs 27;" f @@ -3133,7 +3138,7 @@ displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f displayTerminalLineString src/Dodge/Update.hs 484;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f -divTo src/Geometry/Zone.hs 6;" f +divTo src/Geometry/Zone.hs 8;" f divideCircle src/Geometry.hs 321;" f divideDoorPane src/Dodge/Placement/Instance/Door.hs 71;" f divideLine src/Geometry.hs 248;" f @@ -3157,8 +3162,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 47;" f doDamage src/Dodge/Creature/State.hs 43;" f doDeathToggle src/Dodge/WorldEffect.hs 91;" f doDeathTriggers src/Dodge/WorldEffect.hs 84;" f -doDebugGet src/Dodge/Debug.hs 85;" f -doDebugPut src/Dodge/Debug.hs 73;" f +doDebugGet src/Dodge/Debug.hs 155;" f +doDebugPut src/Dodge/Debug.hs 128;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f @@ -3231,7 +3236,7 @@ drawArrowDown src/Dodge/Render/Picture.hs 221;" f drawBaseMachine src/Dodge/Machine/Draw.hs 68;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBlip src/Dodge/RadarBlip.hs 16;" f -drawBoundingBox src/Dodge/Debug/Picture.hs 355;" f +drawBoundingBox src/Dodge/Debug/Picture.hs 367;" f drawBullet src/Dodge/Render/ShapePicture.hs 135;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f @@ -3242,18 +3247,18 @@ drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 269;" f drawCombineInventory src/Dodge/Render/HUD.hs 182;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f -drawCoord src/Dodge/Debug/Picture.hs 383;" f -drawCrInfo src/Dodge/Debug.hs 158;" f -drawCrInfo' src/Dodge/Debug.hs 153;" f +drawCoord src/Dodge/Debug/Picture.hs 395;" f +drawCrInfo src/Dodge/Debug.hs 226;" f +drawCrInfo' src/Dodge/Debug.hs 221;" f drawCreature src/Dodge/Render/ShapePicture.hs 71;" f -drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 198;" f +drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 72;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" f -drawDDATest src/Dodge/Debug/Picture.hs 310;" f +drawDDATest src/Dodge/Debug/Picture.hs 311;" f drawDamSensor src/Dodge/Machine/Draw.hs 27;" f -drawDebug src/Dodge/Debug.hs 196;" f +drawDebug src/Dodge/Debug.hs 264;" f drawDrag src/Dodge/Render/Picture.hs 200;" f drawDragDrop src/Dodge/Render/Picture.hs 229;" f drawDragPickup src/Dodge/Render/Picture.hs 238;" f @@ -3265,7 +3270,7 @@ drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 127;" f drawExamineInventory src/Dodge/Render/HUD.hs 198;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f -drawFarWallDetect src/Dodge/Debug/Picture.hs 277;" f +drawFarWallDetect src/Dodge/Debug/Picture.hs 278;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawForceField src/Dodge/Wall/Draw.hs 13;" f @@ -3273,8 +3278,8 @@ drawGapPlus src/Dodge/Render/Picture.hs 280;" f drawGib src/Dodge/Prop/Draw.hs 31;" f drawHUD src/Dodge/Render/HUD.hs 51;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 19;" f -drawInspectWall src/Dodge/Debug/Picture.hs 254;" f -drawInspectWalls src/Dodge/Debug/Picture.hs 242;" f +drawInspectWall src/Dodge/Debug/Picture.hs 255;" f +drawInspectWalls src/Dodge/Debug/Picture.hs 243;" f drawInventory src/Dodge/Render/HUD.hs 58;" f drawItemChildrenConnect src/Dodge/Render/HUD.hs 329;" f drawItemConnections src/Dodge/Render/HUD.hs 319;" f @@ -3297,11 +3302,11 @@ drawMenuOrHUD src/Dodge/Render/Picture.hs 69;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 14;" f drawMouseCursor src/Dodge/Render/Picture.hs 85;" f drawMouseOver src/Dodge/Render/HUD.hs 109;" f -drawMousePosition src/Dodge/Debug/Picture.hs 373;" f +drawMousePosition src/Dodge/Debug/Picture.hs 385;" f drawOptions src/Dodge/Render/MenuScreen.hs 22;" f -drawPathBetween src/Dodge/Debug/Picture.hs 201;" f -drawPathEdge src/Dodge/Debug/Picture.hs 267;" f -drawPathing src/Dodge/Debug/Picture.hs 404;" f +drawPathBetween src/Dodge/Debug/Picture.hs 202;" f +drawPathEdge src/Dodge/Debug/Picture.hs 268;" f +drawPathing src/Dodge/Debug/Picture.hs 416;" f drawPlus src/Dodge/Render/Picture.hs 165;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f @@ -3341,15 +3346,18 @@ drawTurret src/Dodge/Machine/Draw.hs 76;" f drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 212;" f drawWall src/Dodge/Wall/Draw.hs 9;" f drawWallFace src/Dodge/Debug/Picture.hs 73;" f -drawWallSearchRays src/Dodge/Debug/Picture.hs 319;" f -drawWallsNearCursor src/Dodge/Debug/Picture.hs 231;" f +drawWallSearchRays src/Dodge/Debug/Picture.hs 331;" f +drawWallsNearCursor src/Dodge/Debug/Picture.hs 232;" f drawWallsNearSegment src/Dodge/Debug/Picture.hs 130;" f -drawWallsNearYou src/Dodge/Debug/Picture.hs 222;" f +drawWallsNearYou src/Dodge/Debug/Picture.hs 223;" f drawWeapon src/Dodge/Creature/Volition.hs 15;" f -drawWlIDs src/Dodge/Debug/Picture.hs 391;" f -drawZoneCirc src/Dodge/Debug/Picture.hs 299;" f +drawWlIDs src/Dodge/Debug/Picture.hs 403;" f +drawZone src/Dodge/Debug/Picture.hs 152;" f +drawZoneCirc src/Dodge/Debug/Picture.hs 300;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f -drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 292;" f +drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 293;" f +drawthedoor src/Dodge/Debug.hs 146;" f +drawthezones src/Dodge/Debug.hs 139;" f dropAll src/Dodge/Creature/Update.hs 129;" f dropInventoryPath src/Dodge/HeldUse.hs 1351;" f dropItem src/Dodge/Creature/Action.hs 155;" f @@ -3380,7 +3388,7 @@ ebEffect src/Dodge/EnergyBall.hs 45;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f edgeFormatting src/Dodge/Combine/Graph.hs 129;" f -edgeToPic src/Dodge/Debug/Picture.hs 413;" f +edgeToPic src/Dodge/Debug/Picture.hs 425;" f effectOnEquip src/Dodge/Equipment.hs 32;" f effectOnRemove src/Dodge/Equipment.hs 19;" f eitType src/Dodge/Data/EquipType.hs 15;" f @@ -3487,6 +3495,7 @@ flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 122;" f +floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f @@ -3551,11 +3560,11 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 360;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 347;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 363;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 350;" f getDebugMouseOver src/Dodge/Update.hs 377;" f getDistortions src/Dodge/Render.hs 435;" f -getEdgesCrossing src/Dodge/Path.hs 41;" f +getEdgesCrossing src/Dodge/Path.hs 42;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f @@ -3565,11 +3574,11 @@ getLaserPhaseV src/Dodge/HeldUse.hs 701;" f getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMenuMouseContext src/Dodge/Update.hs 389;" f -getNodePos src/Dodge/Path.hs 38;" f +getNodePos src/Dodge/Path.hs 39;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 343;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 346;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3608,11 +3617,12 @@ graphicsMenu src/Dodge/Menu.hs 185;" f graphicsMenuOptions src/Dodge/Menu.hs 188;" f green src/Color.hs 15;" f greyN src/Color.hs 124;" f -gridInPolygon src/Grid.hs 12;" f -gridPoints src/Grid.hs 67;" f -gridPoints' src/Grid.hs 79;" f -gridPoints'' src/Grid.hs 74;" f -gridPointsOff src/Grid.hs 62;" f +gridInPolygon src/Grid.hs 14;" f +gridPoints src/Grid.hs 73;" f +gridPoints' src/Grid.hs 81;" f +gridPoints'' src/Grid.hs 76;" f +gridPointsOff src/Grid.hs 68;" f +gridXsYs src/Grid.hs 47;" f groupSplitItemAmounts src/Dodge/Combine.hs 51;" f gruntS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 678;" f gut1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 726;" f @@ -3953,7 +3963,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 126;" f +lnkBothAnd src/Dodge/Room/Procedural.hs 130;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 387;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f @@ -4043,16 +4053,15 @@ makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 56;" f makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFragBullets src/Dodge/Bullet.hs 132;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f -makeGrid src/Grid.hs 46;" f -makeIntInterval src/Dodge/Zoning/Base.hs 37;" f +makeGrid src/Grid.hs 54;" f +makeIntInterval src/Dodge/Zoning/Base.hs 39;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f makeMuzzleFlare src/Dodge/HeldUse.hs 656;" f makeParagraph src/Justify.hs 6;" f -makePathBetween src/Dodge/Path.hs 67;" f -makePathBetweenPs src/Dodge/Path.hs 88;" f -makePathUsing src/Dodge/Path.hs 55;" f +makePathBetween src/Dodge/Path.hs 68;" f +makePathBetweenPs src/Dodge/Path.hs 92;" f +makePathUsing src/Dodge/Path.hs 56;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f -makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f makeShaderEBO src/Shader/Compile.hs 53;" f makeShaderProgram src/Shader/Compile.hs 241;" f @@ -4133,7 +4142,7 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 150;" f -midChasm src/Dodge/Room/Tutorial.hs 174;" f +midChasm src/Dodge/Room/Tutorial.hs 177;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4165,7 +4174,7 @@ mntLSCond src/Dodge/Placement/Instance/LightSource.hs 163;" f mntLSOn src/Dodge/Placement/Instance/LightSource.hs 68;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 180;" f mntLightLnkCond' src/Dodge/Placement/Instance/LightSource.hs 185;" f -modTo src/Geometry/Zone.hs 10;" f +modTo src/Geometry/Zone.hs 18;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f mouseCursorType src/Dodge/Render/Picture.hs 92;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 25;" f @@ -4228,6 +4237,7 @@ noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f nodeFormatting src/Dodge/Combine/Graph.hs 145;" f +nodesNear src/Dodge/Path.hs 80;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f normalizeAngle src/Geometry/Vector.hs 128;" f normalizeAnglePi src/Dodge/Base.hs 154;" f @@ -4247,8 +4257,8 @@ numSelfTree' src/Dodge/Tree/Compose.hs 110;" f numShads src/Picture/Data.hs 40;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 184;" f -obstacleColor src/Dodge/Debug/Picture.hs 270;" f -obstructPathsCrossing src/Dodge/Path.hs 122;" f +obstacleColor src/Dodge/Debug/Picture.hs 271;" f +obstructPathsCrossing src/Dodge/Path.hs 126;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f @@ -4278,7 +4288,7 @@ outwardIntegers src/Dodge/Base.hs 181;" f overCol src/Picture/Base.hs 308;" f overColObj src/Shape.hs 273;" f overColSH src/Shape.hs 241;" f -overDebugEvent src/Dodge/Debug.hs 30;" f +overDebugEvent src/Dodge/Debug.hs 36;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkType src/Dodge/RoomLink.hs 105;" f overPos src/Picture/Base.hs 303;" f @@ -4296,7 +4306,7 @@ p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pairInPolys src/Dodge/Room/Path.hs 53;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 68;" f -pairsToIncGraph src/Dodge/Path.hs 95;" f +pairsToIncGraph src/Dodge/Path.hs 99;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f @@ -4304,7 +4314,7 @@ parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f passthroughLockKeyLists src/Dodge/Floor.hs 120;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f -pathEdgeObstructed src/Dodge/Path.hs 70;" f +pathEdgeObstructed src/Dodge/Path.hs 71;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseGame src/Dodge/Update/Input/InGame.hs 525;" f pauseMenu src/Dodge/Menu.hs 59;" f @@ -4379,7 +4389,7 @@ pointInOrOnPolygon src/Geometry/Polygon.hs 78;" f pointInPoly src/Geometry/Polygon.hs 86;" f pointIsInCone src/Geometry.hs 375;" f pointIsOnScreen src/Dodge/Base/Window.hs 59;" f -pointTowardsImpulse src/Dodge/Path.hs 92;" f +pointTowardsImpulse src/Dodge/Path.hs 96;" f pointerToItem src/Dodge/Item/Location.hs 39;" f pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f @@ -4424,8 +4434,8 @@ pokeWall src/Shader/Poke.hs 78;" f pokeWallsWindows src/Shader/Poke.hs 50;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f -polyChasm src/Dodge/Room/Tutorial.hs 195;" f -polyChasmC src/Dodge/Room/Tutorial.hs 204;" f +polyChasm src/Dodge/Room/Tutorial.hs 198;" f +polyChasmC src/Dodge/Room/Tutorial.hs 207;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4531,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 217;" f -quarterRoomTri src/Dodge/Room/Procedural.hs 181;" f +quarterRoomSquare src/Dodge/Room/Procedural.hs 221;" f +quarterRoomTri src/Dodge/Room/Procedural.hs 185;" f quitCommand src/Dodge/Terminal.hs 93;" f qz src/Quaternion.hs 67;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f @@ -4563,8 +4573,8 @@ randSparkExtraVel src/Dodge/Spark.hs 92;" f randWallReflect src/Dodge/Update.hs 644;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f -randomFourCornerRoom src/Dodge/Room/Procedural.hs 270;" f -randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 282;" f +randomFourCornerRoom src/Dodge/Room/Procedural.hs 274;" f +randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 286;" f randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f randomMediumRoom src/Dodge/Room/Boss.hs 76;" f randomPath src/TreeHelp.hs 145;" f @@ -4609,7 +4619,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 260;" f +removeLights src/Dodge/Room/Tutorial.hs 263;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4677,7 +4687,7 @@ 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 40;" f -roomRectAutoLinks src/Dodge/Room/Procedural.hs 143;" f +roomRectAutoLinks src/Dodge/Room/Procedural.hs 147;" 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 @@ -4787,7 +4797,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 369;" f +sensorTut src/Dodge/Room/Tutorial.hs 372;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f @@ -4795,7 +4805,7 @@ sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f setChannelPos src/Sound.hs 150;" f setClickWorldPos src/Dodge/Update.hs 102;" f -setClip src/Dodge/Debug.hs 182;" f +setClip src/Dodge/Debug.hs 250;" f setClusterID src/Dodge/Combine/Graph.hs 114;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f @@ -4881,7 +4891,7 @@ shiftRelativeToPS src/Dodge/Placement/Shift.hs 18;" f shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f -shiftedGrid src/Grid.hs 25;" f +shiftedGrid src/Grid.hs 27;" f shineTargetLaser src/Dodge/Creature/State.hs 201;" f shineTorch src/Dodge/Creature/State.hs 238;" f shootBullet src/Dodge/HeldUse.hs 973;" f @@ -4946,11 +4956,11 @@ smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f smallPillar src/Dodge/Room/Pillar.hs 37;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f -smallSnailInt2 src/Dodge/Path.hs 82;" f +smallSnailInt2 src/Dodge/Path.hs 86;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f -snailAround src/Dodge/Path.hs 79;" f -snapToGrid src/Dodge/Path.hs 131;" f +snailAround src/Dodge/Path.hs 83;" f +snapToGrid src/Dodge/Path.hs 135;" f sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -4964,7 +4974,7 @@ soundMultiFrom src/Dodge/SoundLogic.hs 187;" f soundOriginIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f soundOriginsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f soundPathList src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 296;" f -soundPic src/Dodge/Debug/Picture.hs 360;" f +soundPic src/Dodge/Debug/Picture.hs 372;" f soundStart src/Dodge/SoundLogic.hs 118;" f soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f @@ -5043,7 +5053,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f stopAllSounds src/Sound.hs 125;" f stopBulletAt src/Dodge/Bullet.hs 200;" f -stopPushing src/Dodge/DrWdWd.hs 104;" f +stopPushing src/Dodge/DrWdWd.hs 102;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f @@ -5056,7 +5066,7 @@ stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 46;" f subMap src/TreeHelp.hs 119;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 118;" f -succB src/Dodge/Debug.hs 102;" f +succB src/Dodge/Debug.hs 170;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapInOutLinks src/Dodge/RoomLink.hs 98;" f swapIndices src/ListHelp.hs 50;" f @@ -5258,11 +5268,11 @@ turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f tutDrop src/Dodge/Room/Tutorial.hs 108;" f -tutHub src/Dodge/Room/Tutorial.hs 267;" f -tutLight src/Dodge/Room/Tutorial.hs 232;" f -tutRezBox src/Dodge/Room/Tutorial.hs 380;" f +tutHub src/Dodge/Room/Tutorial.hs 270;" f +tutLight src/Dodge/Room/Tutorial.hs 235;" f +tutRezBox src/Dodge/Room/Tutorial.hs 383;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 404;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 407;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f @@ -5325,7 +5335,7 @@ updateDoor src/Dodge/DrWdWd.hs 26;" f updateDoors src/Dodge/Update.hs 311;" f updateDust src/Dodge/Update.hs 823;" f updateDusts src/Dodge/Update.hs 673;" f -updateEdge src/Dodge/Path.hs 47;" f +updateEdge src/Dodge/Path.hs 48;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 33;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 24;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 30;" f @@ -5345,7 +5355,7 @@ updateIMl src/Dodge/Update.hs 532;" f updateIMl' src/Dodge/Update.hs 535;" f updateInGameCamera src/Dodge/Update/Camera.hs 79;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 428;" f -updateInt2Map src/Dodge/Zoning/Base.hs 98;" f +updateInt2Map src/Dodge/Zoning/Base.hs 119;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f updateItemTargeting src/Dodge/Creature/State.hs 260;" f updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 396;" f @@ -5470,8 +5480,8 @@ verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 23;" f vgunMuzzles src/Dodge/HeldUse.hs 341;" f -viewBoundaries src/Dodge/Debug/Picture.hs 328;" f -viewClipBounds src/Dodge/Debug/Picture.hs 337;" f +viewBoundaries src/Dodge/Debug/Picture.hs 340;" f +viewClipBounds src/Dodge/Debug/Picture.hs 349;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f violet src/Color.hs 21;" f @@ -5481,7 +5491,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f walkNozzle src/Dodge/HeldUse.hs 809;" f -walkableNodeNear src/Dodge/Path.hs 73;" f +walkableNodeNear src/Dodge/Path.hs 74;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 54;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f @@ -5558,12 +5568,14 @@ writeConfig src/Dodge/Menu.hs 182;" f writeSaveSlot src/Dodge/Save.hs 36;" f xCylinder src/Shape.hs 137;" f xCylinderST src/Shape.hs 134;" f -xIntercepts src/Dodge/Zoning/Base.hs 66;" f +xIntercepts src/Dodge/Zoning/Base.hs 69;" f +xIntercepts' src/Dodge/Zoning/Base.hs 85;" f xSwitch src/Dodge/Room/Airlock.hs 33;" f xV2 src/Geometry/Vector.hs 201;" f xyV3 src/Geometry/Vector.hs 213;" f xyzV4 src/Geometry/Vector.hs 209;" f -yIntercepts src/Dodge/Zoning/Base.hs 82;" f +yIntercepts src/Dodge/Zoning/Base.hs 97;" f +yIntercepts' src/Dodge/Zoning/Base.hs 103;" f yV2 src/Geometry/Vector.hs 205;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 13;" f @@ -5576,39 +5588,39 @@ yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 162;" f +zChasm src/Dodge/Room/Tutorial.hs 163;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f 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 123;" f +zipCountDown src/Dodge/Room/Procedural.hs 127;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f zoneClouds src/Dodge/Update.hs 477;" f zoneCreature src/Dodge/Zoning/Creature.hs 55;" f zoneCreatures src/Dodge/Update.hs 513;" f zoneDust src/Dodge/Zoning/Cloud.hs 48;" f zoneDusts src/Dodge/Update.hs 481;" f -zoneExtract src/Dodge/Zoning/Base.hs 58;" f +zoneExtract src/Dodge/Zoning/Base.hs 61;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f -zoneMonoid src/Dodge/Zoning/Base.hs 89;" f -zoneOfCirc src/Dodge/Zoning/Base.hs 26;" f +zoneMonoid src/Dodge/Zoning/Base.hs 110;" f +zoneOfCirc src/Dodge/Zoning/Base.hs 28;" f zoneOfCl src/Dodge/Zoning/Cloud.hs 24;" f zoneOfCr src/Dodge/Zoning/Creature.hs 45;" f zoneOfDs src/Dodge/Zoning/Cloud.hs 45;" f zoneOfIncPe src/Dodge/Zoning/Pathing.hs 52;" f zoneOfPn src/Dodge/Zoning/Pathing.hs 29;" f -zoneOfPoint src/Dodge/Zoning/Base.hs 46;" f -zoneOfRect src/Dodge/Zoning/Base.hs 30;" f -zoneOfSeg src/Dodge/Zoning/Base.hs 49;" f -zoneOfSegSet src/Dodge/Zoning/Base.hs 53;" f +zoneOfPoint src/Dodge/Zoning/Base.hs 48;" f +zoneOfRect src/Dodge/Zoning/Base.hs 32;" f +zoneOfSeg src/Dodge/Zoning/Base.hs 51;" f +zoneOfSegSet src/Dodge/Zoning/Base.hs 56;" f zoneOfSight src/Dodge/Zoning/World.hs 9;" f zoneOfWl src/Dodge/Zoning/Wall.hs 55;" f zonePn src/Dodge/Zoning/Pathing.hs 32;" f zoneWall src/Dodge/Zoning/Wall.hs 65;" f -zonesAroundPoint src/Dodge/Zoning/Base.hs 102;" f -zonesExtract src/Dodge/Zoning/Base.hs 62;" f +zonesAroundPoint src/Dodge/Zoning/Base.hs 123;" f +zonesExtract src/Dodge/Zoning/Base.hs 65;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 71;" f zoomInLongGun src/Dodge/Update/Scroll.hs 105;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 113;" f