Improve some door placement

This commit is contained in:
2025-10-24 20:30:36 +01:00
parent 95b4105f52
commit b0d519c69d
9 changed files with 92 additions and 115 deletions
-13
View File
@@ -1,13 +0,0 @@
--{-# LANGUAGE LambdaCase #-}
module Dodge.Block.Draw () where
--
--import Dodge.Data.Block
--import Shape
--import ShapePicture
--drawBlock :: BlockDraw -> SPic
--drawBlock = \case
-- BlockDrawMempty -> mempty
---- BlockDraws bds -> foldMap drawBlock bds
---- BlockDrawColHeightPoss col h ps -> noPic $ colorSH col (upperBox Medium Typical h ps)
-- BlockDrawBlSh x -> noPic x
+1 -15
View File
@@ -26,23 +26,9 @@ data Block = Block
, _blPos :: Point2 , _blPos :: Point2
, _blDir :: Float , _blDir :: Float
, _blHeight :: Float , _blHeight :: Float
-- , _blDraw :: BlockDraw , _blDraw :: Shape -- should probably make a data type for instances of these...
, _blDraw :: Shape
} }
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
--data BlockDraw
-- = BlockDrawMempty
-- | BlockDrawBlSh Shape
---- | BlockDraws [BlockDraw]
---- | BlockDrawColHeightPoss Color Float [Point2]
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
--
--data BlSh
-- = BlShConst Shape
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''Block makeLenses ''Block
--deriveJSON defaultOptions ''BlSh
--deriveJSON defaultOptions ''BlockDraw
deriveJSON defaultOptions ''Block deriveJSON defaultOptions ''Block
+1 -1
View File
@@ -54,7 +54,7 @@ data PSType
| PutWall {_pwPoly :: [Point2], _pwWall :: Wall} | PutWall {_pwPoly :: [Point2], _pwWall :: Wall}
| PutSlideDr Bool Door Wall (S.Set EdgeObstacle) Float Point2 Point2 | PutSlideDr Bool Door Wall (S.Set EdgeObstacle) Float Point2 Point2
-- | PutDoor Color EdgeObstacle WdBl [(Point2, Point2)] -- | PutDoor Color EdgeObstacle WdBl [(Point2, Point2)]
| PutDoor Bool (S.Set EdgeObstacle) WdBl Float Point2A Point2A -- [(Point2, Point2)] | PutDoor Bool WdBl Float Point2A Point2A
| RandPS (State StdGen PSType) | RandPS (State StdGen PSType)
| PutForeground ForegroundShape | PutForeground ForegroundShape
| PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld) | PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld)
+9 -14
View File
@@ -6,6 +6,7 @@
-} -}
module Dodge.Placement.PlaceSpot (placeSpot) where module Dodge.Placement.PlaceSpot (placeSpot) where
import Dodge.Placement.PlaceSpot.Block
import Control.Monad.State import Control.Monad.State
import Data.Bifunctor import Data.Bifunctor
import Data.Foldable import Data.Foldable
@@ -16,7 +17,6 @@ import Dodge.Base.NewID
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
import Dodge.Default.Wall import Dodge.Default.Wall
import Dodge.Path import Dodge.Path
import Dodge.Placement.PlaceSpot.Block
import Dodge.Placement.PlaceSpot.TriggerDoor import Dodge.Placement.PlaceSpot.TriggerDoor
import Dodge.Placement.Shift import Dodge.Placement.Shift
import Dodge.ShiftPoint import Dodge.ShiftPoint
@@ -134,7 +134,7 @@ placeSpotID rid ps pt w = case pt of
PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w
PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p' rot ls) w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p' rot ls) w
RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w
PutDoor isauto eo f l p1 p2 -> plDoor isauto eo f l (pashift p1) (pashift p2) w PutDoor isauto f l p1 p2 -> plDoor isauto f l (pashift p1) (pashift p2) w
PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w
PutSlideDr isauto wl dr eo off a b -> PutSlideDr isauto wl dr eo off a b ->
plSlideDoor isauto wl dr eo off (doShift a) (doShift b) w plSlideDoor isauto wl dr eo off (doShift a) (doShift b) w
@@ -180,9 +180,9 @@ placeWallPoly qs wl w
| otherwise = error "tried to place wall poly with too few points" | otherwise = error "tried to place wall poly with too few points"
addPane :: Wall -> World -> (Point2, Point2) -> World addPane :: Wall -> World -> (Point2, Point2) -> World
addPane wl w l = addPane wl w l = insertWall (wl & wlLine .~ l & wlID .~ i) w
w & plNew (cWorld . lWorld . walls) wlID (wl & wlLine .~ l) where
& uncurry (obstructPathsCrossing (S.fromList [WallObstacle WallNotAutoOpen])) l i = IM.newKey $ w ^. cWorld . lWorld . walls
mvProp :: Point2 -> Float -> Prop -> Prop mvProp :: Point2 -> Float -> Prop -> Prop
mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a)) mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a))
@@ -211,7 +211,7 @@ plMachine ::
plMachine wallpoly mc mitm p rot gw = plMachine wallpoly mc mitm p rot gw =
( mcid ( mcid
, gw & tolw . machines . at mcid ?~ themc , gw & tolw . machines . at mcid ?~ themc
& tolw . walls %~ placeMachineWalls wallpoly mcid wlid & gwWorld %~ placeMachineWalls wallpoly mcid wlid
& tolw %~ maybe id placeturretitm mitm & tolw %~ maybe id placeturretitm mitm
) )
where where
@@ -227,15 +227,10 @@ plMachine wallpoly mc mitm p rot gw =
itid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . items itid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . items
itm' = itm & itID .~ NInt itid & itLocation .~ OnTurret mcid itm' = itm & itID .~ NInt itid & itLocation .~ OnTurret mcid
-- TODO correctly remove/shift pathfinding lines (removePathsCrossing) placeMachineWalls :: [Point2] -> Int -> Int -> World -> World
placeMachineWalls :: [Point2] -> Int -> Int -> IM.IntMap Wall -> IM.IntMap Wall placeMachineWalls poly mcid = insertStructureWalls MachinePart baseWall poly mcid
placeMachineWalls poly mcid wlid = flip (foldr f) $ zip [wlid ..] $ loopPairs poly
where where
f (wid, l) = IM.insert wid baseWall{_wlID = wid, _wlLine = l} baseWall = defaultMachineWall & wlStructure . wsMachine .~ mcid
baseWall =
defaultMachineWall
& wlStructure . wsMachine .~ mcid
& wlTouchThrough .~ True
mvLS :: Point3 -> Float -> LightSource -> LightSource mvLS :: Point3 -> Float -> LightSource -> LightSource
mvLS (V3 x y z) rot ls = ls & lsParam . lsPos .~ V3 x y z +.+.+ startPos mvLS (V3 x y z) rot ls = ls & lsParam . lsPos .~ V3 x y z +.+.+ startPos
+20 -6
View File
@@ -2,16 +2,18 @@
module Dodge.Placement.PlaceSpot.Block ( module Dodge.Placement.PlaceSpot.Block (
plBlock, plBlock,
plLineBlock, plLineBlock,
insertWall,
insertStructureWalls,
) where ) where
import Dodge.Wall.Pathing
import qualified Data.Set as S
import Control.Lens import Control.Lens
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
import Data.List import Data.List
import qualified Data.Set as S
import Dodge.Base import Dodge.Base
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
import Dodge.Path import Dodge.Path
import Dodge.Wall.Pathing
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
@@ -26,15 +28,26 @@ plBlock ps bl wl w =
, _blShadows = [] , _blShadows = []
, _blFootprint = ps , _blFootprint = ps
} }
& gwWorld %~ insertWalls wls & gwWorld %~ insertStructureWalls BlockPart wl ps blid i
where where
blid = IM.newKey $ w ^. gwWorld . cWorld . lWorld . blocks blid = IM.newKey $ w ^. gwWorld . cWorld . lWorld . blocks
i = IM.newKey $ w ^. gwWorld . cWorld . lWorld . walls i = IM.newKey $ w ^. gwWorld . cWorld . lWorld . walls
is = take (length ps) [i ..] is = take (length ps) [i ..]
insertStructureWalls ::
(Int -> WallStructure) ->
Wall ->
[Point2] ->
Int ->
Int ->
World ->
World
insertStructureWalls f wl ps sid wid = insertWalls wls
where
wls = wls =
zipWith zipWith
(\j ln -> wl & wlLine .~ ln & wlID .~ j & wlStructure .~ BlockPart blid) (\i xy -> wl & wlLine .~ xy & wlID .~ i & wlStructure .~ f sid)
is [wid ..]
(loopPairs ps) (loopPairs ps)
-- | Splits a line into many four cornered blocks. -- | Splits a line into many four cornered blocks.
@@ -107,6 +120,7 @@ insertWalls wls w = foldl' (flip insertWall) w wls
insertWall :: Wall -> World -> World insertWall :: Wall -> World -> World
insertWall wl = insertWall wl =
uncurry (obstructPathsCrossing (S.map WallObstacle $ getWallPathing wl)) uncurry
(obstructPathsCrossing (S.map WallObstacle $ getWallPathing wl))
(_wlLine wl) (_wlLine wl)
. (cWorld . lWorld . walls . at (_wlID wl) ?~ wl) . (cWorld . lWorld . walls . at (_wlID wl) ?~ wl)
+9 -7
View File
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.TriggerDoor (
updateDoorEdges, updateDoorEdges,
) where ) where
import Dodge.Placement.PlaceSpot.Block
import Data.List import Data.List
import qualified Data.Set as S import qualified Data.Set as S
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
@@ -19,7 +20,6 @@ import Linear
plDoor :: plDoor ::
Bool -> Bool ->
S.Set EdgeObstacle ->
-- | Opening condition -- | Opening condition
WdBl -> WdBl ->
-- | Door positions, closed to open. -- | Door positions, closed to open.
@@ -29,7 +29,7 @@ plDoor ::
Point2A -> Point2A ->
GenWorld -> GenWorld ->
(Int, GenWorld) (Int, GenWorld)
plDoor isauto eo cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors %~ addDoor) -- carefull with the ordering of addWalls plDoor isauto cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors %~ addDoor) -- carefull with the ordering of addWalls
where where
drid = IM.newKey $ _doors (_lWorld (_cWorld $ _gwWorld gw)) drid = IM.newKey $ _doors (_lWorld (_cWorld $ _gwWorld gw))
addDoor = addDoor =
@@ -43,13 +43,15 @@ plDoor isauto eo cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld .
, _drLerp = 0 , _drLerp = 0
, _drFootPrint = IM.fromList . zip wlids $ wlps' , _drFootPrint = IM.fromList . zip wlids $ wlps'
} }
wlids = take 4 [IM.newKey $ _walls (_lWorld (_cWorld $ _gwWorld gw)) ..] wlids = take 4 [wlid..]
wlid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . walls
wlps' = rectanglePairs 9 0 (V2 l 0) wlps' = rectanglePairs 9 0 (V2 l 0)
addWalls = insertStructureWalls (`DoorPart` isauto) defaultDoorWall
(map fst wlps' & each %~ shiftPointBy p1) drid wlid
--addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids --addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids
addWalls w' = -- foldl' (addDoorWall isauto eo drid defaultDoorWall) w' $
foldl' (addDoorWall isauto eo drid defaultDoorWall) w' $ -- zip wlids $
zip wlids $ -- wlps' & each . each %~ shiftPointBy p1
wlps' & each . each %~ shiftPointBy p1
addDoorWall :: addDoorWall ::
Bool -> Bool ->
+1 -2
View File
@@ -96,9 +96,8 @@ airlock0 =
] ]
col = dim $ dim $ bright red col = dim $ dim $ bright red
--airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType
airlockDoor :: WdBl -> Float -> Point2A -> Point2A -> PSType airlockDoor :: WdBl -> Float -> Point2A -> Point2A -> PSType
airlockDoor = PutDoor False switchWallObs airlockDoor = PutDoor False
airlockDoubleDoor :: airlockDoubleDoor ::
Point2 -> Point2 ->
+3 -2
View File
@@ -1,3 +1,4 @@
{-# OPTIONS_GHC -Wno-unused-imports #-}
module Dodge.Room.Tutorial where module Dodge.Room.Tutorial where
import Dodge.Room.Tanks import Dodge.Room.Tanks
@@ -44,10 +45,10 @@ tutAnoTree = do
foldMTRS foldMTRS
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, corDoor , corDoor
, tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] [] -- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] []
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , tToBTree "lastun" . return . cleatOnward <$> cenLasTur , tToBTree "lastun" . return . cleatOnward <$> cenLasTur
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
+46 -53
View File
@@ -126,16 +126,9 @@ BlBl src/Dodge/Data/BlBl.hs 9;" t
BlConst src/Dodge/Data/BlBl.hs 11;" C BlConst src/Dodge/Data/BlBl.hs 11;" C
BlId src/Dodge/Data/BlBl.hs 12;" C BlId src/Dodge/Data/BlBl.hs 12;" C
BlNegate src/Dodge/Data/BlBl.hs 10;" C BlNegate src/Dodge/Data/BlBl.hs 10;" C
BlSh src/Dodge/Data/Block.hs 40;" t
BlShConst src/Dodge/Data/Block.hs 41;" C
Block src/Dodge/Data/Block.hs 20;" t Block src/Dodge/Data/Block.hs 20;" t
BlockDebris src/Dodge/Data/Prop.hs 29;" C BlockDebris src/Dodge/Data/Prop.hs 29;" C
BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 30;" C BlockDegradeSound src/Dodge/Data/SoundOrigin.hs 30;" C
BlockDraw src/Dodge/Data/Block.hs 33;" t
BlockDrawBlSh src/Dodge/Data/Block.hs 35;" C
BlockDrawColHeightPoss src/Dodge/Data/Block.hs 37;" C
BlockDrawMempty src/Dodge/Data/Block.hs 34;" C
BlockDraws src/Dodge/Data/Block.hs 36;" C
BlockPart src/Dodge/Data/Wall/Structure.hs 14;" C BlockPart src/Dodge/Data/Wall/Structure.hs 14;" C
BlockedLink src/Dodge/Data/Room.hs 50;" C BlockedLink src/Dodge/Data/Room.hs 50;" C
BloomLayer src/Picture/Data.hs 23;" C BloomLayer src/Picture/Data.hs 23;" C
@@ -2628,7 +2621,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f
bangStick src/Dodge/Item/Held/Stick.hs 15;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f
barPP src/Dodge/Room/Foreground.hs 236;" f barPP src/Dodge/Room/Foreground.hs 236;" f
barrel src/Dodge/Creature/Inanimate.hs 17;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Render/ShapePicture.hs 78;" f barrelShape src/Dodge/Render/ShapePicture.hs 80;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 406;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 406;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 98;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 98;" f
baseCI src/Dodge/Item/Grammar.hs 158;" f baseCI src/Dodge/Item/Grammar.hs 158;" f
@@ -2711,7 +2704,7 @@ branchRectWith src/Dodge/Room/Branch.hs 15;" f
branchWith src/Dodge/Room/Room.hs 69;" f branchWith src/Dodge/Room/Room.hs 69;" f
bright src/Color.hs 120;" f bright src/Color.hs 120;" f
brightX src/Color.hs 116;" f brightX src/Color.hs 116;" f
btSPic src/Dodge/Render/ShapePicture.hs 127;" f btSPic src/Dodge/Render/ShapePicture.hs 129;" f
btText src/Dodge/Inventory/SelectionList.hs 237;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f
bufferEBO src/Shader/Bind.hs 28;" f bufferEBO src/Shader/Bind.hs 28;" f
bufferPokedVBO src/Shader/Bind.hs 19;" f bufferPokedVBO src/Shader/Bind.hs 19;" f
@@ -2725,7 +2718,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f
burstRifle src/Dodge/Item/Held/Cane.hs 30;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f
buttonFlip src/Dodge/Button/Event.hs 17;" f buttonFlip src/Dodge/Button/Event.hs 17;" f
buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f
cChasm src/Dodge/Room/Tutorial.hs 134;" f cChasm src/Dodge/Room/Tutorial.hs 135;" f
cFilledRect src/Dodge/CharacterEnums.hs 6;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f
cWireRect src/Dodge/CharacterEnums.hs 10;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f
calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f
@@ -2760,7 +2753,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 201;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 202;" f
chasmTest src/Dodge/Creature/Update.hs 132;" f chasmTest src/Dodge/Creature/Update.hs 132;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
@@ -2980,7 +2973,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 39;" f
crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f
crystalLine src/Dodge/Placement/Instance/Wall.hs 66;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 66;" f
cubeShape src/Dodge/Block/Debris.hs 113;" f cubeShape src/Dodge/Block/Debris.hs 113;" f
cullPoint src/Dodge/Render/ShapePicture.hs 94;" f cullPoint src/Dodge/Render/ShapePicture.hs 96;" f
cullPretty src/AesonHelp.hs 14;" f cullPretty src/AesonHelp.hs 14;" f
cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f
cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f
@@ -3243,14 +3236,13 @@ drawArrowDown src/Dodge/Render/Picture.hs 221;" f
drawBaseMachine src/Dodge/Machine/Draw.hs 68;" f drawBaseMachine src/Dodge/Machine/Draw.hs 68;" f
drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f
drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlip src/Dodge/RadarBlip.hs 16;" f
drawBlock src/Dodge/Block/Draw.hs 7;" f
drawBoundingBox src/Dodge/Debug/Picture.hs 354;" f drawBoundingBox src/Dodge/Debug/Picture.hs 354;" f
drawBullet src/Dodge/Render/ShapePicture.hs 133;" f drawBullet src/Dodge/Render/ShapePicture.hs 135;" f
drawButton src/Dodge/Button/Draw.hs 10;" f drawButton src/Dodge/Button/Draw.hs 10;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawChasm src/Dodge/Render/ShapePicture.hs 50;" f drawChasm src/Dodge/Render/ShapePicture.hs 52;" f
drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f
drawCliff src/Dodge/Render/ShapePicture.hs 53;" f drawCliff src/Dodge/Render/ShapePicture.hs 55;" f
drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f
drawCombFilter src/Dodge/Render/Picture.hs 269;" f drawCombFilter src/Dodge/Render/Picture.hs 269;" f
drawCombineInventory src/Dodge/Render/HUD.hs 182;" f drawCombineInventory src/Dodge/Render/HUD.hs 182;" f
@@ -3258,7 +3250,7 @@ drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f
drawCoord src/Dodge/Debug/Picture.hs 382;" f drawCoord src/Dodge/Debug/Picture.hs 382;" f
drawCrInfo src/Dodge/Debug.hs 135;" f drawCrInfo src/Dodge/Debug.hs 135;" f
drawCrInfo' src/Dodge/Debug.hs 130;" f drawCrInfo' src/Dodge/Debug.hs 130;" f
drawCreature src/Dodge/Render/ShapePicture.hs 69;" f drawCreature src/Dodge/Render/ShapePicture.hs 71;" f
drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 198;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 198;" f
drawCross src/Dodge/Render/Label.hs 24;" f drawCross src/Dodge/Render/Label.hs 24;" f
drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f
@@ -3322,7 +3314,7 @@ drawPointLabel src/Dodge/Render/Label.hs 13;" f
drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f
drawProp src/Dodge/Prop/Draw.hs 26;" f drawProp src/Dodge/Prop/Draw.hs 26;" f
drawProxSensor src/Dodge/Machine/Draw.hs 37;" f drawProxSensor src/Dodge/Machine/Draw.hs 37;" f
drawPulseBall src/Dodge/Render/ShapePicture.hs 61;" f drawPulseBall src/Dodge/Render/ShapePicture.hs 63;" f
drawQuitTerminal src/Dodge/Render/Picture.hs 147;" f drawQuitTerminal src/Dodge/Render/Picture.hs 147;" f
drawRBOptions src/Dodge/Render/HUD.hs 251;" f drawRBOptions src/Dodge/Render/HUD.hs 251;" f
drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f
@@ -3449,7 +3441,7 @@ explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f
extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f
extraPics src/Dodge/Render/ShapePicture.hs 99;" f extraPics src/Dodge/Render/ShapePicture.hs 101;" f
extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f
extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f
extractRoomPos src/Dodge/RoomPos.hs 6;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f
@@ -3502,11 +3494,11 @@ flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f
flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f
flockPointTarget src/Dodge/Creature/Boid.hs 204;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f
floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f
floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 122;" f
floorWire src/Dodge/Wire.hs 13;" f floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f
foldMTRS src/Dodge/Room/Tutorial.hs 79;" f foldMTRS src/Dodge/Room/Tutorial.hs 80;" f
foldPairs src/ListHelp.hs 37;" f foldPairs src/ListHelp.hs 37;" f
foldrWhileArb src/ListHelp.hs 110;" f foldrWhileArb src/ListHelp.hs 110;" f
followImpulse src/Dodge/Creature/Impulse.hs 24;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f
@@ -3567,8 +3559,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f
getCommand src/Dodge/Terminal.hs 52;" f getCommand src/Dodge/Terminal.hs 52;" f
getCommands src/Dodge/Terminal.hs 49;" f getCommands src/Dodge/Terminal.hs 49;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 350;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 351;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 337;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 338;" f
getDebugMouseOver src/Dodge/Update.hs 376;" f getDebugMouseOver src/Dodge/Update.hs 376;" f
getDistortions src/Dodge/Render.hs 435;" f getDistortions src/Dodge/Render.hs 435;" f
getEdgesCrossing src/Dodge/Path.hs 49;" f getEdgesCrossing src/Dodge/Path.hs 49;" f
@@ -3585,7 +3577,7 @@ getNodePos src/Dodge/Path.hs 38;" f
getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f
getPretty src/AesonHelp.hs 8;" f getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 333;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 334;" f
getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3735,9 +3727,10 @@ insertNewKey src/IntMapHelp.hs 65;" f
insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f
insertOver src/ListHelp.hs 47;" f insertOver src/ListHelp.hs 47;" f
insertS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f insertS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f
insertWall src/Dodge/Placement/PlaceSpot/Block.hs 108;" f insertStructureWalls src/Dodge/Placement/PlaceSpot/Block.hs 43;" f
insertWall src/Dodge/Placement/PlaceSpot/Block.hs 127;" f
insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f
insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 105;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 124;" f
insertWithNewKeys src/IntMapHelp.hs 71;" f insertWithNewKeys src/IntMapHelp.hs 71;" f
intAnno src/Dodge/Floor.hs 111;" f intAnno src/Dodge/Floor.hs 111;" f
interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f
@@ -3900,14 +3893,14 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f
knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f
lChasm src/Dodge/Room/Tutorial.hs 143;" f lChasm src/Dodge/Room/Tutorial.hs 144;" f
lConnect src/Dodge/Render/Connectors.hs 42;" f lConnect src/Dodge/Render/Connectors.hs 42;" f
lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f
lShape src/Dodge/Placement/Instance/LightSource.hs 89;" f lShape src/Dodge/Placement/Instance/LightSource.hs 89;" f
lamp src/Dodge/Creature/Lamp.hs 21;" f lamp src/Dodge/Creature/Lamp.hs 21;" f
lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f
lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 83;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 85;" f
lasCenSensEdge src/Dodge/Room/LasTurret.hs 141;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 141;" f
lasGunPic src/Dodge/Item/Draw/SPic.hs 412;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 412;" f
lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f
@@ -4013,7 +4006,7 @@ lookupTrie src/SimpleTrie.hs 30;" f
loopPairs src/ListHelp.hs 30;" f loopPairs src/ListHelp.hs 30;" f
lootRoom src/Dodge/Room/Treasure.hs 58;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f
lorem src/Lorem.hs 3;" f lorem src/Lorem.hs 3;" f
lowBlock src/Dodge/Placement/Instance/Block.hs 25;" f lowBlock src/Dodge/Placement/Instance/Block.hs 26;" f
lsColPos src/Dodge/LightSource.hs 23;" f lsColPos src/Dodge/LightSource.hs 23;" f
lsColPosID src/Dodge/LightSource.hs 20;" f lsColPosID src/Dodge/LightSource.hs 20;" f
lsColPosRad src/Dodge/LightSource.hs 29;" f lsColPosRad src/Dodge/LightSource.hs 29;" f
@@ -4115,7 +4108,7 @@ mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 104;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 139;" f mcProxSensorUpdate src/Dodge/Machine/Update.hs 139;" f
mcProxTest src/Dodge/Machine/Update.hs 203;" f mcProxTest src/Dodge/Machine/Update.hs 203;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f
mcSPic src/Dodge/Render/ShapePicture.hs 130;" f mcSPic src/Dodge/Render/ShapePicture.hs 132;" f
mcShootAuto src/Dodge/HeldUse.hs 1169;" f mcShootAuto src/Dodge/HeldUse.hs 1169;" f
mcShootLaser src/Dodge/HeldUse.hs 1162;" f mcShootLaser src/Dodge/HeldUse.hs 1162;" f
mcTriggerVal src/Dodge/Machine/Update.hs 110;" f mcTriggerVal src/Dodge/Machine/Update.hs 110;" f
@@ -4150,7 +4143,7 @@ mglCreate src/GLHelp.hs 8;" f
mglDelete src/GLHelp.hs 14;" f mglDelete src/GLHelp.hs 14;" f
midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f
midBounds src/Dodge/Room/Foreground.hs 151;" f midBounds src/Dodge/Room/Foreground.hs 151;" f
midChasm src/Dodge/Room/Tutorial.hs 164;" f midChasm src/Dodge/Room/Tutorial.hs 165;" f
midPad src/Padding.hs 27;" f midPad src/Padding.hs 27;" f
midPadL src/Padding.hs 33;" f midPadL src/Padding.hs 33;" f
midPoint src/Geometry.hs 83;" f midPoint src/Geometry.hs 83;" f
@@ -4215,7 +4208,7 @@ mvButton src/Dodge/Placement/PlaceSpot.hs 190;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 193;" f mvCr src/Dodge/Placement/PlaceSpot.hs 193;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 200;" f mvFS src/Dodge/Placement/PlaceSpot.hs 200;" f
mvGust src/Dodge/Update.hs 784;" f mvGust src/Dodge/Update.hs 784;" f
mvLS src/Dodge/Placement/PlaceSpot.hs 240;" f mvLS src/Dodge/Placement/PlaceSpot.hs 239;" f
mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f
mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f
mvPointToward src/Dodge/Base.hs 136;" f mvPointToward src/Dodge/Base.hs 136;" f
@@ -4354,9 +4347,9 @@ pipe src/Dodge/Item/Craftable.hs 32;" f
pistol src/Dodge/Item/Held/Stick.hs 40;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f
pistolerRoom src/Dodge/Room/Room.hs 330;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f
pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 20;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 20;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 20;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 41;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 60;" f
plMachine src/Dodge/Placement/PlaceSpot.hs 203;" f plMachine src/Dodge/Placement/PlaceSpot.hs 203;" f
plNew src/Dodge/Base/NewID.hs 19;" f plNew src/Dodge/Base/NewID.hs 19;" f
plNewID src/Dodge/Base/NewID.hs 7;" f plNewID src/Dodge/Base/NewID.hs 7;" f
@@ -4441,8 +4434,8 @@ pokeWall src/Shader/Poke.hs 78;" f
pokeWallsWindows src/Shader/Poke.hs 50;" f pokeWallsWindows src/Shader/Poke.hs 50;" f
poly3 src/Picture/Base.hs 84;" f poly3 src/Picture/Base.hs 84;" f
poly3Col src/Picture/Base.hs 88;" f poly3Col src/Picture/Base.hs 88;" f
polyChasm src/Dodge/Room/Tutorial.hs 185;" f polyChasm src/Dodge/Room/Tutorial.hs 186;" f
polyChasmC src/Dodge/Room/Tutorial.hs 194;" f polyChasmC src/Dodge/Room/Tutorial.hs 195;" f
polyCirc src/Shape.hs 46;" f polyCirc src/Shape.hs 46;" f
polyCircx src/Shape.hs 51;" f polyCircx src/Shape.hs 51;" f
polyCornerDist src/Geometry/Polygon.hs 61;" f polyCornerDist src/Geometry/Polygon.hs 61;" f
@@ -4561,8 +4554,8 @@ randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f
randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f
randDirPS src/Dodge/PlacementSpot.hs 56;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f
randDirSpark src/Dodge/Spark.hs 55;" f randDirSpark src/Dodge/Spark.hs 55;" f
randEdgeTank src/Dodge/Room/Tanks.hs 33;" f randEdgeTank src/Dodge/Room/Tanks.hs 34;" f
randEdgeTanks src/Dodge/Room/Tanks.hs 62;" f randEdgeTanks src/Dodge/Room/Tanks.hs 52;" f
randFirstWeapon src/Dodge/Placement/Random.hs 8;" f randFirstWeapon src/Dodge/Placement/Random.hs 8;" f
randFromPair src/RandomHelp.hs 141;" f randFromPair src/RandomHelp.hs 141;" f
randInArc src/RandomHelp.hs 81;" f randInArc src/RandomHelp.hs 81;" f
@@ -4589,7 +4582,7 @@ randomPath src/TreeHelp.hs 145;" f
randomPoints bench/Bench.hs 37;" f randomPoints bench/Bench.hs 37;" f
randomRanges src/RandomHelp.hs 16;" f randomRanges src/RandomHelp.hs 16;" f
randomSelectionFromList src/RandomHelp.hs 65;" f randomSelectionFromList src/RandomHelp.hs 65;" f
randomTank src/Dodge/Room/Tanks.hs 19;" f randomTank src/Dodge/Room/Tanks.hs 20;" f
randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f
randsOnCirc src/RandomHelp.hs 127;" f randsOnCirc src/RandomHelp.hs 127;" f
randsSpread src/RandomHelp.hs 120;" f randsSpread src/RandomHelp.hs 120;" f
@@ -4628,7 +4621,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f
removeDot src/ShortShow.hs 44;" f removeDot src/ShortShow.hs 44;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
removeLights src/Dodge/Room/Tutorial.hs 250;" f removeLights src/Dodge/Room/Tutorial.hs 251;" f
removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f
removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f
renderDataResizeUpdate src/Preload/Update.hs 26;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f
@@ -4807,7 +4800,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
sensorSPic src/Dodge/Machine/Draw.hs 81;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f
sensorTut src/Dodge/Room/Tutorial.hs 359;" f sensorTut src/Dodge/Room/Tutorial.hs 360;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f
@@ -4834,7 +4827,7 @@ setOutLinks src/Dodge/RoomLink.hs 50;" f
setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f
setOutLinksPD src/Dodge/RoomLink.hs 95;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f
setRoomInt src/Dodge/Room/Tutorial.hs 86;" f setRoomInt src/Dodge/Room/Tutorial.hs 87;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f
setShaderSource src/Shader/Compile.hs 290;" f setShaderSource src/Shader/Compile.hs 290;" f
@@ -4844,7 +4837,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f
setTile src/Dodge/Layout.hs 70;" f setTile src/Dodge/Layout.hs 70;" f
setTiles src/Dodge/Layout.hs 67;" f setTiles src/Dodge/Layout.hs 67;" f
setToggle src/Dodge/Prop/Update.hs 44;" f setToggle src/Dodge/Prop/Update.hs 44;" f
setTreeInts src/Dodge/Room/Tutorial.hs 93;" f setTreeInts src/Dodge/Room/Tutorial.hs 94;" f
setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 440;" f setViewport src/Dodge/Render.hs 440;" f
@@ -4886,7 +4879,7 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f
shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f
shiftByV2 src/Dodge/PlacementSpot.hs 250;" f shiftByV2 src/Dodge/PlacementSpot.hs 250;" f
shiftChildren src/Dodge/Tree/Compose.hs 44;" f shiftChildren src/Dodge/Tree/Compose.hs 44;" f
shiftDraw src/Dodge/Render/ShapePicture.hs 88;" f shiftDraw src/Dodge/Render/ShapePicture.hs 90;" f
shiftInBy src/Dodge/PlacementSpot.hs 247;" f shiftInBy src/Dodge/PlacementSpot.hs 247;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 305;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 305;" f
shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 350;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 350;" f
@@ -5102,8 +5095,8 @@ takeWhileArb src/ListHelp.hs 99;" f
takeWhileArb' src/ListHelp.hs 107;" f takeWhileArb' src/ListHelp.hs 107;" f
tankShape src/Dodge/Placement/Instance/Tank.hs 22;" f tankShape src/Dodge/Placement/Instance/Tank.hs 22;" f
tankSquareDec src/Dodge/Placement/Instance/Tank.hs 15;" f tankSquareDec src/Dodge/Placement/Instance/Tank.hs 15;" f
tanksPipesRoom src/Dodge/Room/Tanks.hs 90;" f tanksPipesRoom src/Dodge/Room/Tanks.hs 69;" f
tanksRoom src/Dodge/Room/Tanks.hs 98;" f tanksRoom src/Dodge/Room/Tanks.hs 77;" f
tap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 630;" f tap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 630;" f
tap2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 562;" f tap2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 562;" f
tap3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 610;" f tap3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 610;" f
@@ -5278,13 +5271,13 @@ tryUseParent src/Dodge/Creature/State.hs 145;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f turnTo src/Dodge/Movement/Turn.hs 8;" f
turret src/Dodge/Placement/Instance/Turret.hs 35;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 42;" f tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f
tutDrop src/Dodge/Room/Tutorial.hs 98;" f tutDrop src/Dodge/Room/Tutorial.hs 99;" f
tutHub src/Dodge/Room/Tutorial.hs 257;" f tutHub src/Dodge/Room/Tutorial.hs 258;" f
tutLight src/Dodge/Room/Tutorial.hs 222;" f tutLight src/Dodge/Room/Tutorial.hs 223;" f
tutRezBox src/Dodge/Room/Tutorial.hs 370;" f tutRezBox src/Dodge/Room/Tutorial.hs 371;" f
tutRoomTree src/Dodge/Floor.hs 21;" f tutRoomTree src/Dodge/Floor.hs 21;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 394;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 395;" f
tweenAngles src/Geometry/Vector.hs 190;" f tweenAngles src/Geometry/Vector.hs 190;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 30;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 30;" f
@@ -5600,7 +5593,7 @@ yourInv src/Dodge/Base/You.hs 28;" f
yourRootItem src/Dodge/Base/You.hs 22;" f yourRootItem src/Dodge/Base/You.hs 22;" f
yourSelectedItem src/Dodge/Base/You.hs 16;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f
yourStatsInfo src/Dodge/Creature/Info.hs 27;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f
zChasm src/Dodge/Room/Tutorial.hs 152;" f zChasm src/Dodge/Room/Tutorial.hs 153;" f
zConnect src/Dodge/Render/Connectors.hs 17;" f zConnect src/Dodge/Render/Connectors.hs 17;" f
zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f