Start to make wall flags/pathing interaction more sensible

This commit is contained in:
2025-10-23 11:35:24 +01:00
parent 9e6534b8f4
commit fc7c4d6468
18 changed files with 167 additions and 145 deletions
+16 -13
View File
@@ -1,22 +1,25 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Block (
splinterBlock,
destroyBlock,
) where
import Dodge.Zoning.Wall
import Dodge.Base.Collide
import Control.Monad
import Dodge.Path
import qualified Data.Set as S
import Control.Lens
import Control.Monad
import Data.Foldable
import qualified Data.IntSet as IS
import Data.Maybe
import Dodge.Base.Collide
import Dodge.Block.Debris
import Dodge.Data.World
import Dodge.Material.Sound
import Dodge.Path
import Dodge.Wall.Delete
import Dodge.Wall.Zone
import Dodge.WorldEvent.Sound
import Dodge.Zoning.Wall
import qualified IntMapHelp as IM
splinterBlock :: Block -> World -> World
@@ -53,29 +56,29 @@ destroyBlock bl w =
& deleteWallIDs wlids
& maybeClearPaths (_blObstructs bl) -- must happen after the walls are deleted
& cWorld . lWorld . blocks %~ IM.delete (_blID bl)
-- & muchWlDustAt awl (_blPos bl)
-- & flip (foldl' $ flip (muchWlDustAt awl)) (map (pos +.+) ps)
where
-- & muchWlDustAt awl (_blPos bl)
-- & flip (foldl' $ flip (muchWlDustAt awl)) (map (pos +.+) ps)
wlids = _blWallIDs bl
-- awl = w ^?! cWorld . lWorld . walls . ix (IS.findMin wlids)
-- pos = fst . _wlLine $ awl
-- ps = replicateM 25 (randInCirc 20) & evalState $ _randGen w
-- this does not handle eg doors blocking the path as well
maybeClearPaths :: [(Int,Int)] -> World -> World
maybeClearPaths :: [(Int, Int)] -> World -> World
maybeClearPaths ps w = foldl' maybeClearPath w ps
maybeClearPath :: World -> (Int,Int) -> World
maybeClearPath w (i,j) = fromMaybe w $ do
maybeClearPath :: World -> (Int, Int) -> World
maybeClearPath w (i, j) = fromMaybe w $ do
x <- getNodePos i w
y <- getNodePos j w
guard $ null $ overlapSegWalls x y $ wlsNearSeg x y w
return $ w & cWorld . incGraph %~ updateEdge f (i,j)
where
f = at BlockObstacle .~ Nothing
return $ w & cWorld . incGraph %~ updateEdge (S.intersection (S.singleton ChasmObstacle)) (i, j)
---- | not . null $ overlapSegWalls (_peStart pe) (_peEnd pe) $ wlsNearSeg (_peStart pe) (_peEnd pe) w =
---- w
---- | otherwise =
---- w
---- & cWorld . pathGraph %~ FGL.insEdge (x, y, pe & peObstacles .~ mempty) . FGL.delEdge (x, y)
+2 -2
View File
@@ -53,9 +53,9 @@ data PSType
, _putEndPoint :: Point2
}
| PutWall {_pwPoly :: [Point2], _pwWall :: Wall}
| PutSlideDr Door Wall EdgeObstacle Float Point2 Point2
| PutSlideDr Door Wall (S.Set EdgeObstacle) Float Point2 Point2
-- | PutDoor Color EdgeObstacle WdBl [(Point2, Point2)]
| PutDoor Color EdgeObstacle WdBl Float Point2A Point2A -- [(Point2, Point2)]
| PutDoor Color (S.Set EdgeObstacle) WdBl Float Point2A Point2A -- [(Point2, Point2)]
| RandPS (State StdGen PSType)
| PutForeground ForegroundShape
| PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld)
+8 -7
View File
@@ -8,12 +8,13 @@ The warnings have been disabled.
-}
module Dodge.Data.PathGraph where
import Dodge.Data.Wall.Structure
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Data.Graph.Inductive
--import Data.Map.Strict (Map)
import qualified Data.Set as Set
import qualified Data.Set as S
--import Geometry.Data
--data PathGraph = PathGraph
@@ -41,17 +42,17 @@ import qualified Data.Set as Set
data SimpleEdge = SimpleEdge
{ _seDist :: Float
, _seObstacles :: Set.Set EdgeObstacle
, _seObstacles :: S.Set EdgeObstacle
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data EdgeObstacle
= BlockObstacle
| DoorObstacle
| AutoDoorObstacle
| WallObstacle
= WallObstacle WallFlag
| ChasmObstacle
deriving (Eq, Ord, Show, Bounded, Enum, Read) --Generic, Flat)
deriving (Eq, Ord, Show, Read) --Generic, Flat)
switchWallObs :: S.Set EdgeObstacle
switchWallObs = S.fromList $ WallObstacle <$> [WallBlockVisibility,WallNotAutoOpen]
--instance (ToJSON a, ToJSON b) => ToJSON (Gr a b) where
-- toEncoding = genericToEncoding defaultOptions
+2
View File
@@ -14,12 +14,14 @@ import Data.Aeson.TH
import Dodge.Data.Material
import Dodge.Data.Wall.Structure
import Geometry
import qualified Data.Set as S
data Wall = Wall
{ _wlLine :: (Point2, Point2)
, _wlID :: Int
, _wlColor :: Color
, _wlOpacity :: Opacity
, _wlPathFlag :: S.Set WallFlag
, _wlPathable :: Bool
, _wlPenetrable :: Bool
, _wlBouncy :: Bool
+10 -3
View File
@@ -1,8 +1,8 @@
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Wall.Structure
where
module Dodge.Data.Wall.Structure where
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
@@ -12,8 +12,15 @@ data WallStructure
| DoorPart {_wsDoor :: Int}
| MachinePart {_wsMachine :: Int}
| BlockPart {_wsBlock :: Int}
| CreaturePart { _wlStCreature :: Int }
| CreaturePart {_wlStCreature :: Int}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data WallFlag
= WallBlockVisibility
| WallNotAutoOpen
| WallNotDestrucable
deriving (Eq, Ord, Show, Read, Enum, Bounded) --Generic, Flat)
makeLenses ''WallStructure
deriveJSON defaultOptions ''WallStructure
deriveJSON defaultOptions ''WallFlag
+4 -6
View File
@@ -268,10 +268,9 @@ drawPathEdge x y pe = setLayer DebugLayer $ multiArrow x y green (S.map obstacle
obstacleColor :: EdgeObstacle -> Color
obstacleColor eo = case eo of
WallObstacle -> red
DoorObstacle -> orange
AutoDoorObstacle -> yellow
BlockObstacle -> blue
WallObstacle WallNotAutoOpen -> red
WallObstacle WallBlockVisibility -> orange
WallObstacle WallNotDestrucable -> yellow
ChasmObstacle -> cyan
drawFarWallDetect :: World -> Picture
@@ -402,8 +401,7 @@ drawWlIDs w = setLayer FixedCoordLayer $ foldMap f (w ^. cWorld . lWorld . walls
p = worldPosToScreen (w ^. wCam) $ 0.5 *.* uncurry (+.+) (_wlLine wl)
drawPathing :: Config -> World -> Picture
drawPathing cfig w =
setLayer DebugLayer $ ifoldMap f $ w ^. cWorld . incGraph
drawPathing cfig w = setLayer DebugLayer $ ifoldMap f $ w ^. cWorld . incGraph
where
inodes = w ^. cWorld . incNode
f i = foldMap (g i)
+4
View File
@@ -8,6 +8,7 @@ module Dodge.Default.Wall (
defaultDirtWall,
) where
import qualified Data.Set as S
import Control.Lens
import Dodge.Data.Wall
import Geometry.Data
@@ -20,6 +21,8 @@ defaultWall =
{ _wlLine = (V2 0 0, V2 50 0)
, _wlID = 0
, _wlColor = greyN 0.6
, _wlPathFlag = S.fromList [WallBlockVisibility
, WallNotAutoOpen, WallNotDestrucable]
, --, _wlOpacity = Opaque 11
_wlOpacity = Opaque 11
, _wlPathable = False
@@ -38,6 +41,7 @@ defaultWall =
defaultDoorWall :: Wall
defaultDoorWall = defaultWall { _wlMaterial = Metal }
& wlPathFlag . at WallNotDestrucable .~ Nothing
{- Indestructible see-through wall. -}
defaultCrystalWall :: Wall
+5 -4
View File
@@ -15,6 +15,7 @@ module Dodge.Path (
getEdgesCrossing,
) where
import qualified Data.Set as S
import qualified Algorithm.Search as AS
import Control.Lens
--import Data.Bifunctor
@@ -82,7 +83,7 @@ makePathBetween :: Point2 -> Point2 -> World -> Maybe [Int]
makePathBetween = makePathUsing $ not . pathEdgeObstructed
pathEdgeObstructed :: Set.Set EdgeObstacle -> Bool
pathEdgeObstructed pe = any (`Set.member` pe) [DoorObstacle, BlockObstacle, ChasmObstacle]
pathEdgeObstructed pe = any (`Set.member` pe) [WallObstacle WallNotAutoOpen, ChasmObstacle]
walkableNodeNear :: World -> Point2 -> Maybe Int
{-# INLINE walkableNodeNear #-}
@@ -129,17 +130,17 @@ pairsToIncGraph pairs =
ps = Set.toList $ Set.map fst pairs <> Set.map snd pairs
obstructPathsCrossing ::
EdgeObstacle ->
S.Set EdgeObstacle ->
Point2 ->
Point2 ->
World ->
(World, [(Int,Int)])
obstructPathsCrossing obstacletype s e w =
obstructPathsCrossing obs s e w =
( w & cWorld . incGraph %~ updateincedges
, inces
)
where
updateincedge = flip $ updateEdge (at obstacletype ?~ ())
updateincedge = flip $ updateEdge (S.union obs)
updateincedges gr = foldl' updateincedge gr inces
inces = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZoning s e w
inedgecrosses (i, j) = isJust $ intersectSegSeg s e (f i) (f j)
+9 -6
View File
@@ -5,6 +5,7 @@ module Dodge.Placement.Instance.Door (
switchDoor, -- not used 9/3/22
) where
import qualified Data.Set as S
import Color
import Control.Lens
import Dodge.Data.CreatureEffect
@@ -14,12 +15,13 @@ import Dodge.LevelGen.PlacementHelper
import Dodge.LevelGen.Switch
import Geometry
putDoubleDoor :: EdgeObstacle -> Wall -> WdBl -> Point2 -> Point2 -> Float -> Placement
putDoubleDoor :: S.Set EdgeObstacle
-> Wall -> WdBl -> Point2 -> Point2 -> Float -> Placement
putDoubleDoor eo wl cond a b speed =
putDoubleDoorThen eo wl cond 1 a b speed (const $ const Nothing)
putDoubleDoorThen ::
EdgeObstacle ->
S.Set EdgeObstacle ->
Wall ->
WdBl ->
Float ->
@@ -37,7 +39,7 @@ putDoubleDoorThen eo wl cond soff a b speed cont =
half = 0.5 *.* (a +.+ b)
doorBetween ::
EdgeObstacle ->
S.Set EdgeObstacle ->
Wall ->
WdBl ->
Float ->
@@ -70,7 +72,7 @@ divideDoorPane mid wl cond soff speed ppairs g = case ppairs of
(p : ps) -> ptCont (adoor p) $ \pl -> Just $ divideDoorPane (_plMID pl) wl cond soff speed ps g
_ -> undefined
where
adoor (x, y) = PutSlideDr thedoor wl DoorObstacle soff x y
adoor (x, y) = PutSlideDr thedoor wl mempty soff x y
thedoor =
defaultDoor & drSpeed .~ speed & drTrigger .~ cond
& drPushedBy .~ maybe PushesItself PushedBy mid
@@ -81,7 +83,7 @@ putAutoDoor a b = Placement (PS 0 0) (PutCoord a) Nothing Nothing $ \_ apl ->
let x = w ^?! gwWorld . coordinates . ix (apl ^?! plMID . _Just)
y = w ^?! gwWorld . coordinates . ix (bpl ^?! plMID . _Just)
in Just $ putDoubleDoor
AutoDoorObstacle
(S.fromList [WallObstacle WallBlockVisibility])
defaultAutoWall
(WdBlCrFilterNearPoint 40 (0.5 *.* (x + y)) CrIsAnimate)
a
@@ -109,7 +111,8 @@ switchDoor btpos btrot dra drb col = pContID
jsps0J (doorbetween btid dra drc) $
sps0 (doorbetween btid drb drc)
where
doorbetween btid a b = PutSlideDr thedoor (switchWallCol col) DoorObstacle 1 a b
doorbetween btid a b = PutSlideDr thedoor (switchWallCol col)
(S.fromList (WallObstacle <$> [WallNotAutoOpen,WallBlockVisibility])) 1 a b
where
thedoor =
defaultDoor
+3 -2
View File
@@ -6,6 +6,7 @@
-}
module Dodge.Placement.PlaceSpot (placeSpot) where
import qualified Data.Set as S
import Color
import Control.Monad.State
import Data.Bifunctor
@@ -165,7 +166,7 @@ placeChasm gw rid ps shiftps =
& gwWorld %~ f
where
f w = foldl' g w (loopPairs shiftps)
g w (x,y) = fst $ obstructPathsCrossing ChasmObstacle x y w
g w (x,y) = fst $ obstructPathsCrossing (S.singleton ChasmObstacle) x y w
--evaluateRandPS
-- :: Int -> State StdGen PSType -> PlacementSpot -> GenWorld -> (Int, GenWorld)
@@ -185,7 +186,7 @@ placeWallPoly qs wl w = foldl' (addPane wl) w pairs
addPane :: Wall -> World -> (Point2, Point2) -> World
addPane wl w l =
w & plNew (cWorld . lWorld . walls) wlID (wl & wlLine .~ l)
& fst . uncurry (obstructPathsCrossing WallObstacle) l
& fst . uncurry (obstructPathsCrossing (S.fromList [WallObstacle WallNotAutoOpen])) l
mvProp :: Point2 -> Float -> Prop -> Prop
mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a))
+3 -1
View File
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.Block (
plLineBlock,
) where
import qualified Data.Set as S
import Control.Lens
import qualified Data.IntSet as IS
import Data.List
@@ -119,5 +120,6 @@ insertWalls blid wls w = w' & cWorld . lWorld . blocks . ix blid . blObstructs .
insertWall :: Wall -> World -> (World, [(Int,Int)])
insertWall wl =
uncurry (obstructPathsCrossing BlockObstacle) (_wlLine wl)
uncurry (obstructPathsCrossing (S.fromList [WallObstacle WallNotAutoOpen, WallObstacle WallBlockVisibility]))
(_wlLine wl)
. (cWorld . lWorld . walls . at (_wlID wl) ?~ wl)
+5 -3
View File
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.TriggerDoor (
updateDoorEdges,
) where
import qualified Data.Set as S
import Dodge.ShiftPoint
import Linear
import Dodge.Data.GenWorld
@@ -18,7 +19,7 @@ import Picture
plDoor ::
Color ->
EdgeObstacle ->
S.Set EdgeObstacle ->
-- | Opening condition
WdBl ->
-- | Door positions, closed to open.
@@ -51,7 +52,8 @@ plDoor col eo cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld . cW
addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids
$ wlps' & each . each %~ shiftPointBy p1
addDoorWall :: EdgeObstacle -> Int -> Wall -> World -> (Int, (Point2, Point2)) -> World
addDoorWall :: S.Set EdgeObstacle
-> Int -> Wall -> World -> (Int, (Point2, Point2)) -> World
addDoorWall eo drid wl w (wlid, wlps) =
w'
& cWorld . lWorld . walls
@@ -80,7 +82,7 @@ updateDoorEdge _ w _ = w
plSlideDoor ::
Door ->
Wall ->
EdgeObstacle ->
S.Set EdgeObstacle ->
Float ->
Point2 ->
Point2 ->
+6 -6
View File
@@ -35,8 +35,8 @@ decontamRoom i =
& rmPmnts
.~ [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid -> Just $
putDoubleDoorThen DoorObstacle thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $
\_ _ -> Just $ putDoubleDoor DoorObstacle thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
putDoubleDoorThen switchWallObs thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $
\_ _ -> Just $ putDoubleDoor switchWallObs thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
, invisibleWall $ rectNSWE 60 40 (-40) (-30)
, spanLightI (V2 (-20) 30) (V2 (-20) 70)
, analyser (NoItemZone ps) (PS 50 0) (PS mcpos 0) & plExternalID ?~ i
@@ -50,7 +50,7 @@ decontamRoom i =
pmnt <- gw ^? genPmnt . ix i
return $
putDoubleDoor
DoorObstacle
switchWallObs
(switchWallCol red)
(cond pmnt)
(V2 (-10) 35)
@@ -78,8 +78,8 @@ airlock0 =
, _rmPmnts =
[ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid -> Just $
putDoubleDoorThen DoorObstacle thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $
\_ _ -> Just $ putDoubleDoor DoorObstacle thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
putDoubleDoorThen switchWallObs thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $
\_ _ -> Just $ putDoubleDoor switchWallObs thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
, invisibleWall $ rectNSWE 60 40 (-40) (-30)
, spanLightI (V2 (-2) 30) (V2 (-2) 70)
, sps0 $ putShape $ thinHighBar 75 (V2 40 50) (V2 (-1) 50)
@@ -97,7 +97,7 @@ airlock0 =
--airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType
airlockDoor :: Color -> WdBl -> Float -> Point2A -> Point2A -> PSType
airlockDoor col = PutDoor col DoorObstacle
airlockDoor col = PutDoor col switchWallObs
airlockDoubleDoor ::
Point2 ->
+1 -1
View File
@@ -43,5 +43,5 @@ triggerDoorRoom i =
f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do
pmnt <- gw ^? genPmnt . ix i
return $ putDoubleDoor
DoorObstacle (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2
switchWallObs (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2
cond pmnt = WdTrig $ fromJust (_plMID pmnt)
+3 -3
View File
@@ -47,8 +47,8 @@ twinSlowDoorRoom w h x =
, _rmPath = mempty
, _rmPmnts =
[ pContID (PS (V2 0 (h -5)) pi) (PutButton $ makeButton col NoWorldEffect) $
\btid -> jsps0J (PutSlideDr (thedoor btid) thewall DoorObstacle 1 (V2 x 1) (V2 x h)) $
ps0 (PutSlideDr (thedoor btid) thewall DoorObstacle 1 (V2 (- x) 1) (V2 (- x) h)) $
\btid -> jsps0J (PutSlideDr (thedoor btid) thewall switchWallObs 1 (V2 x 1) (V2 x h)) $
ps0 (PutSlideDr (thedoor btid) thewall switchWallObs 1 (V2 (- x) 1) (V2 (- x) h)) $
\did -> jps0' (PutLS (lsColPos (V3 0.75 0 0) (V3 0 (h -1) lampheight))) $
\lspl -> jsps0 $ PutProp $ addColorChange (fromJust $ _plMID lspl) did $ lampCoverWhen (WdBlDoorMoving did) (V2 0 (h -1)) lampheight
]
@@ -135,7 +135,7 @@ addButtonSlowDoor x h rm = do
(rprBool (isUnusedLnkType InLink))
$ \btplmnt -> Just $
putDoubleDoorThen
DoorObstacle
switchWallObs
thewall
(WdBlBtOn $ fromJust $ _plMID btplmnt)
30
+2 -2
View File
@@ -327,8 +327,8 @@ centerVaultRoom w h d =
theDoor =
[ pContID (PS (V2 35 (d + 4)) 0) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid ->
jspsJ (V2 0 (d -10)) 0 (PutSlideDr (thedoor btid) thewall DoorObstacle 1 (V2 (-21) 0) (V2 0 0)) $
sPS (V2 0 (d -10)) 0 (PutSlideDr (thedoor btid) thewall DoorObstacle 1 (V2 21 0) (V2 0 0))
jspsJ (V2 0 (d -10)) 0 (PutSlideDr (thedoor btid) thewall switchWallObs 1 (V2 (-21) 0) (V2 0 0)) $
sPS (V2 0 (d -10)) 0 (PutSlideDr (thedoor btid) thewall switchWallObs 1 (V2 21 0) (V2 0 0))
]
thewall = switchWallCol col
thedoor btid =
+3 -5
View File
@@ -318,12 +318,10 @@ updateEdgeWallObs :: World -> (Int,Int) -> World
updateEdgeWallObs w (i,j) = fromMaybe w $ do
s <- getNodePos i w
e <- getNodePos j w
let wls = snd <$> wlsHitUnsorted s e w
return $ w & cWorld . incGraph %~ updateEdge (f wls) (i,j)
let wlflags = foldMap (^. _2 . wlPathFlag) $ wlsHitUnsorted s e w
return $ w & cWorld . incGraph %~ updateEdge (f wlflags) (i,j)
where
f wls
| all _wlPathable wls = (at BlockObstacle .~ Nothing) . (at DoorObstacle .~ Nothing)
| otherwise = at DoorObstacle ?~ ()
f x _ = S.map WallObstacle x
updateDoors :: World -> World
updateDoors w = let (is,w') = foldrM updateDoor w (w ^. cWorld . lWorld . doors)
+81 -81
View File
@@ -75,7 +75,6 @@ AttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" C
Audition src/Dodge/Data/Creature/Perception.hs 45;" t
AutoAI src/Dodge/Data/Creature/Misc.hs 45;" C
AutoCrit src/Dodge/Data/Creature/Misc.hs 70;" C
AutoDoorObstacle src/Dodge/Data/PathGraph.hs 51;" C
AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C
Avatar src/Dodge/Data/Creature/Misc.hs 59;" C
AvatarDead src/Dodge/Data/Creature/Misc.hs 67;" C
@@ -138,7 +137,6 @@ BlockDrawBlSh src/Dodge/Data/Block.hs 37;" C
BlockDrawColHeightPoss src/Dodge/Data/Block.hs 39;" C
BlockDrawMempty src/Dodge/Data/Block.hs 36;" C
BlockDraws src/Dodge/Data/Block.hs 38;" C
BlockObstacle src/Dodge/Data/PathGraph.hs 49;" C
BlockPart src/Dodge/Data/Wall/Structure.hs 14;" C
BlockedLink src/Dodge/Data/Room.hs 50;" C
BloomLayer src/Picture/Data.hs 23;" C
@@ -212,7 +210,7 @@ ChangeStrategy src/Dodge/Data/ActionPlan.hs 43;" C
ChaseAI src/Dodge/Data/Creature/Misc.hs 38;" C
ChaseCrit src/Dodge/Data/Creature/Misc.hs 68;" C
ChaseCritters src/Dodge/Data/Creature/State.hs 16;" C
ChasmObstacle src/Dodge/Data/PathGraph.hs 53;" C
ChasmObstacle src/Dodge/Data/PathGraph.hs 50;" C
ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C
ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 29;" C
ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 28;" C
@@ -349,16 +347,15 @@ DoNotMoveEquipment src/Dodge/Data/RightButtonOptions.hs 18;" C
DoReplicate src/Dodge/Data/ActionPlan.hs 106;" C
DoReplicatePartial src/Dodge/Data/ActionPlan.hs 110;" C
DockingBaySS src/Dodge/Data/Scenario.hs 92;" C
Door src/Dodge/Data/Door.hs 30;" t
Door src/Dodge/Data/Door.hs 29;" t
DoorLerp src/Dodge/Data/WorldEffect.hs 63;" C
DoorObstacle src/Dodge/Data/PathGraph.hs 50;" C
DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C
DoubleRes src/Dodge/Data/Config.hs 98;" C
DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t
DrWdId src/Dodge/Data/WorldEffect.hs 63;" C
DrWdWd src/Dodge/Data/WorldEffect.hs 63;" t
DrawForceField src/Dodge/Data/Wall.hs 45;" C
DrawnWall src/Dodge/Data/Wall.hs 41;" C
DrawForceField src/Dodge/Data/Wall.hs 47;" C
DrawnWall src/Dodge/Data/Wall.hs 43;" C
DroneAmmo src/Dodge/Data/AmmoType.hs 10;" C
DropItem src/Dodge/Data/ActionPlan.hs 38;" C
DudPayload src/Dodge/Data/Payload.hs 11;" C
@@ -858,7 +855,7 @@ NorthEast8 src/Dodge/Data/CardinalPoint.hs 21;" C
NorthWest src/Dodge/Data/CardinalPoint.hs 16;" C
NorthWest8 src/Dodge/Data/CardinalPoint.hs 27;" C
NotLink src/Dodge/Data/Room.hs 69;" C
NotPushed src/Dodge/Data/Door.hs 27;" C
NotPushed src/Dodge/Data/Door.hs 26;" C
Nothing' src/MaybeHelp.hs 11;" C
NothingID src/Dodge/Data/CrWlID.hs 10;" C
NozzleAngle src/Dodge/Data/Item/Params.hs 16;" C
@@ -918,8 +915,8 @@ OnTurret src/Dodge/Data/Item/Location.hs 37;" C
OnceSound src/Dodge/Data/SoundOrigin.hs 14;" C
OneHand src/Dodge/Data/AimStance.hs 14;" C
OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C
Opacity src/Dodge/Data/Wall.hs 38;" t
Opaque src/Dodge/Data/Wall.hs 42;" C
Opacity src/Dodge/Data/Wall.hs 40;" t
Opaque src/Dodge/Data/Wall.hs 44;" C
OpticScope src/Dodge/Data/Item/Scope.hs 12;" C
OptionScreen src/Dodge/Data/Universe.hs 80;" C
OptionScreenFlag src/Dodge/Data/Universe.hs 70;" t
@@ -1034,9 +1031,9 @@ PulseBallSF src/Dodge/Data/ComposedItem.hs 44;" C
PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t
PulseLaserSF src/Dodge/Data/ComposedItem.hs 41;" C
PulseStatus src/Dodge/Data/Creature/Misc.hs 52;" C
PushSource src/Dodge/Data/Door.hs 24;" t
PushedBy src/Dodge/Data/Door.hs 26;" C
PushesItself src/Dodge/Data/Door.hs 25;" 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 45;" C
PutButton src/Dodge/Data/GenWorld.hs 41;" C
PutChasm src/Dodge/Data/GenWorld.hs 64;" C
@@ -1157,8 +1154,8 @@ ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t
Search src/Dodge/Data/ActionPlan.hs 145;" C
SecretCabal src/Dodge/Data/Scenario.hs 44;" C
SectionCursor src/Dodge/Data/SelectionList.hs 23;" t
SeeAbove src/Dodge/Data/Wall.hs 40;" C
SeeThrough src/Dodge/Data/Wall.hs 39;" C
SeeAbove src/Dodge/Data/Wall.hs 42;" C
SeeThrough src/Dodge/Data/Wall.hs 41;" C
Sel src/Dodge/Data/HUD.hs 39;" C
SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C
SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C
@@ -1439,10 +1436,14 @@ WRISTARMOUR src/Dodge/Data/Item/Combine.hs 123;" C
WRIST_ECG src/Dodge/Data/Item/Combine.hs 135;" C
WaitThen src/Dodge/Data/ActionPlan.hs 74;" C
Walking src/Dodge/Data/Creature/Stance.hs 23;" C
Wall src/Dodge/Data/Wall.hs 18;" t
Wall src/Dodge/Data/Wall.hs 19;" t
WallArcNode src/Dodge/Data/LWorld.hs 154;" C
WallDraw src/Dodge/Data/Wall.hs 45;" t
WallObstacle src/Dodge/Data/PathGraph.hs 52;" C
WallBlockVisibility src/Dodge/Data/Wall/Structure.hs 19;" C
WallDraw src/Dodge/Data/Wall.hs 47;" t
WallFlag src/Dodge/Data/Wall/Structure.hs 18;" t
WallNotAutoOpen src/Dodge/Data/Wall/Structure.hs 20;" C
WallNotDestrucable src/Dodge/Data/Wall/Structure.hs 21;" C
WallObstacle src/Dodge/Data/PathGraph.hs 49;" C
WallP src/Dodge/LevelGen/StaticWalls.hs 23;" t
WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t
WallSound src/Dodge/Data/SoundOrigin.hs 24;" C
@@ -1754,20 +1755,18 @@ _doReplicateAction src/Dodge/Data/ActionPlan.hs 113;" f
_doReplicateTimes src/Dodge/Data/ActionPlan.hs 107;" f
_doReplicateTimes src/Dodge/Data/ActionPlan.hs 112;" f
_doors src/Dodge/Data/LWorld.hs 118;" f
_drFootPrint src/Dodge/Data/Door.hs 38;" f
_drHP src/Dodge/Data/Door.hs 39;" f
_drID src/Dodge/Data/Door.hs 31;" f
_drLerp src/Dodge/Data/Door.hs 37;" f
_drMech src/Dodge/Data/Door.hs 34;" f
_drMounts src/Dodge/Data/Door.hs 43;" f
_drObstacleType src/Dodge/Data/Door.hs 45;" f
_drOnePos src/Dodge/Data/Door.hs 36;" f
_drPushedBy src/Dodge/Data/Door.hs 41;" f
_drPushes src/Dodge/Data/Door.hs 42;" f
_drSpeed src/Dodge/Data/Door.hs 40;" f
_drTrigger src/Dodge/Data/Door.hs 33;" f
_drWallIDs src/Dodge/Data/Door.hs 32;" f
_drZeroPos src/Dodge/Data/Door.hs 35;" f
_drFootPrint src/Dodge/Data/Door.hs 36;" f
_drHP src/Dodge/Data/Door.hs 37;" f
_drID src/Dodge/Data/Door.hs 30;" f
_drLerp src/Dodge/Data/Door.hs 35;" f
_drMech src/Dodge/Data/Door.hs 32;" f
_drMounts src/Dodge/Data/Door.hs 41;" f
_drOnePos src/Dodge/Data/Door.hs 34;" f
_drPushedBy src/Dodge/Data/Door.hs 39;" f
_drPushes src/Dodge/Data/Door.hs 40;" f
_drSpeed src/Dodge/Data/Door.hs 38;" f
_drTrigger src/Dodge/Data/Door.hs 31;" f
_drZeroPos src/Dodge/Data/Door.hs 33;" f
_dsPos src/Dodge/Data/Cloud.hs 28;" f
_dsTimer src/Dodge/Data/Cloud.hs 30;" f
_dsType src/Dodge/Data/Cloud.hs 31;" f
@@ -2054,9 +2053,9 @@ _nzWalkSpeed src/Dodge/Data/Muzzle.hs 50;" f
_offGridFromEdges src/Dodge/Data/Room.hs 82;" f
_oldMagnets src/Dodge/Data/LWorld.hs 121;" f
_onGridFromEdges src/Dodge/Data/Room.hs 81;" f
_opDraw src/Dodge/Data/Wall.hs 41;" f
_opDraw src/Dodge/Data/Wall.hs 43;" f
_opSel src/Dodge/Data/RightButtonOptions.hs 15;" f
_opTexture src/Dodge/Data/Wall.hs 42;" f
_opTexture src/Dodge/Data/Wall.hs 44;" f
_opticDefaultZoom src/Dodge/Data/Item/Scope.hs 18;" f
_opticPos src/Dodge/Data/Item/Scope.hs 14;" f
_opticZoom src/Dodge/Data/Item/Scope.hs 17;" f
@@ -2454,23 +2453,24 @@ _windowPosY src/Dodge/Data/Config.hs 54;" f
_windowShader src/Data/Preload/Render.hs 19;" f
_windowX src/Dodge/Data/Config.hs 51;" f
_windowY src/Dodge/Data/Config.hs 52;" f
_wlBouncy src/Dodge/Data/Wall.hs 25;" f
_wlColor src/Dodge/Data/Wall.hs 21;" f
_wlFireThrough src/Dodge/Data/Wall.hs 28;" f
_wlHeight src/Dodge/Data/Wall.hs 33;" f
_wlID src/Dodge/Data/Wall.hs 20;" f
_wlLine src/Dodge/Data/Wall.hs 19;" f
_wlMaterial src/Dodge/Data/Wall.hs 34;" f
_wlOpacity src/Dodge/Data/Wall.hs 22;" f
_wlPathable src/Dodge/Data/Wall.hs 23;" f
_wlPenetrable src/Dodge/Data/Wall.hs 24;" f
_wlReflect src/Dodge/Data/Wall.hs 29;" f
_wlRotateTo src/Dodge/Data/Wall.hs 31;" f
_wlBouncy src/Dodge/Data/Wall.hs 27;" f
_wlColor src/Dodge/Data/Wall.hs 22;" f
_wlFireThrough src/Dodge/Data/Wall.hs 30;" f
_wlHeight src/Dodge/Data/Wall.hs 35;" f
_wlID src/Dodge/Data/Wall.hs 21;" f
_wlLine src/Dodge/Data/Wall.hs 20;" f
_wlMaterial src/Dodge/Data/Wall.hs 36;" f
_wlOpacity src/Dodge/Data/Wall.hs 23;" f
_wlPathFlag src/Dodge/Data/Wall.hs 24;" f
_wlPathable src/Dodge/Data/Wall.hs 25;" f
_wlPenetrable src/Dodge/Data/Wall.hs 26;" f
_wlReflect src/Dodge/Data/Wall.hs 31;" f
_wlRotateTo src/Dodge/Data/Wall.hs 33;" f
_wlStCreature src/Dodge/Data/Wall/Structure.hs 15;" f
_wlStructure src/Dodge/Data/Wall.hs 32;" f
_wlTouchThrough src/Dodge/Data/Wall.hs 27;" f
_wlUnshadowed src/Dodge/Data/Wall.hs 30;" f
_wlWalkable src/Dodge/Data/Wall.hs 26;" f
_wlStructure src/Dodge/Data/Wall.hs 34;" f
_wlTouchThrough src/Dodge/Data/Wall.hs 29;" f
_wlUnshadowed src/Dodge/Data/Wall.hs 32;" f
_wlWalkable src/Dodge/Data/Wall.hs 28;" f
_wlZoning src/Dodge/Data/World.hs 49;" f
_worldEventFlags src/Dodge/Data/World.hs 45;" f
_worldEvents src/Dodge/Data/LWorld.hs 127;" f
@@ -2496,7 +2496,7 @@ addCrGibs src/Dodge/Prop/Gib.hs 17;" f
addDepth src/Picture/Base.hs 133;" f
addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f
addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" f
addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 56;" f
addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 54;" f
addGib4 src/Dodge/Prop/Gib.hs 52;" f
addGibAt src/Dodge/Prop/Gib.hs 63;" f
addGibAtDir src/Dodge/Prop/Gib.hs 69;" f
@@ -2990,7 +2990,7 @@ crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f
crsNearRect src/Dodge/Zoning/Creature.hs 39;" f
crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f
crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f
cubeShape src/Dodge/Block/Debris.hs 105;" f
cubeShape src/Dodge/Block/Debris.hs 106;" f
cullPoint src/Dodge/Render/ShapePicture.hs 94;" f
cullPretty src/AesonHelp.hs 14;" f
cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f
@@ -3045,7 +3045,7 @@ deadScalp src/Dodge/Creature/Picture.hs 81;" f
deadUpperBody src/Dodge/Creature/Picture.hs 113;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f
debrisSPic src/Dodge/Prop/Draw.hs 20;" f
debrisSize src/Dodge/Block/Debris.hs 79;" f
debrisSize src/Dodge/Block/Debris.hs 80;" f
debugEvent src/Dodge/Debug.hs 36;" f
debugEvents src/Dodge/Debug.hs 21;" f
debugItem src/Dodge/Debug.hs 39;" f
@@ -3125,7 +3125,7 @@ deleteWallID src/Dodge/Wall/Delete.hs 13;" f
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 48;" f
destroyBlock src/Dodge/Block.hs 51;" f
destroyDoor src/Dodge/DrWdWd.hs 56;" f
destroyInvItem src/Dodge/Inventory.hs 40;" f
destroyItem src/Dodge/Inventory.hs 62;" f
@@ -3194,6 +3194,7 @@ doDebugTestF12 src/Dodge/Update/Input/DebugTest.hs 84;" f
doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f
doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f
doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f
doDoorLerp src/Dodge/DrWdWd.hs 53;" f
doDrag src/Dodge/Update/Input/InGame.hs 127;" f
doDrawing src/Dodge/Render.hs 34;" f
doDrawing' src/Dodge/Render.hs 45;" f
@@ -3258,7 +3259,7 @@ drawBaseMachine src/Dodge/Machine/Draw.hs 68;" f
drawBeam src/Dodge/Beam/Draw.hs 6;" f
drawBlip src/Dodge/RadarBlip.hs 16;" f
drawBlock src/Dodge/Block/Draw.hs 7;" f
drawBoundingBox src/Dodge/Debug/Picture.hs 355;" f
drawBoundingBox src/Dodge/Debug/Picture.hs 354;" f
drawBullet src/Dodge/Render/ShapePicture.hs 133;" f
drawButton src/Dodge/Button/Draw.hs 10;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
@@ -3269,7 +3270,7 @@ 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
drawCoord src/Dodge/Debug/Picture.hs 382;" f
drawCrInfo src/Dodge/Debug.hs 135;" f
drawCrInfo' src/Dodge/Debug.hs 130;" f
drawCreature src/Dodge/Render/ShapePicture.hs 69;" f
@@ -3278,7 +3279,7 @@ 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 309;" f
drawDamSensor src/Dodge/Machine/Draw.hs 27;" f
drawDebug src/Dodge/Debug.hs 173;" f
drawDoubleLampCover src/Dodge/Prop/Draw.hs 95;" f
@@ -3293,7 +3294,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 276;" f
drawFlame src/Dodge/Flame/Draw.hs 8;" f
drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f
drawForceField src/Dodge/Wall/Draw.hs 11;" f
@@ -3326,11 +3327,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 372;" f
drawOptions src/Dodge/Render/MenuScreen.hs 22;" f
drawPathBetween src/Dodge/Debug/Picture.hs 201;" f
drawPathEdge src/Dodge/Debug/Picture.hs 266;" f
drawPathing src/Dodge/Debug/Picture.hs 404;" f
drawPathing src/Dodge/Debug/Picture.hs 403;" 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
@@ -3371,15 +3372,15 @@ drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 212;" f
drawVerticalLampCover src/Dodge/Prop/Draw.hs 71;" f
drawWall src/Dodge/Wall/Draw.hs 7;" f
drawWallFace src/Dodge/Debug/Picture.hs 73;" f
drawWallSearchRays src/Dodge/Debug/Picture.hs 319;" f
drawWallSearchRays src/Dodge/Debug/Picture.hs 318;" f
drawWallsNearCursor src/Dodge/Debug/Picture.hs 230;" f
drawWallsNearSegment src/Dodge/Debug/Picture.hs 130;" f
drawWallsNearYou src/Dodge/Debug/Picture.hs 221;" 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 390;" f
drawZoneCirc src/Dodge/Debug/Picture.hs 298;" f
drawZoneCol src/Dodge/Debug/Picture.hs 149;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 292;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 291;" f
dropAll src/Dodge/Creature/Update.hs 129;" f
dropInventoryPath src/Dodge/HeldUse.hs 1351;" f
dropItem src/Dodge/Creature/Action.hs 154;" f
@@ -3410,7 +3411,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 412;" f
effectOnEquip src/Dodge/Equipment.hs 32;" f
effectOnRemove src/Dodge/Equipment.hs 19;" f
eitType src/Dodge/Data/EquipType.hs 15;" f
@@ -3956,7 +3957,6 @@ leftRightCombine src/Dodge/Item/Grammar.hs 197;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 81;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 468;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f
lerpdr src/Dodge/DrWdWd.hs 53;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 111;" f
light src/Color.hs 104;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 51;" f
@@ -4053,7 +4053,7 @@ main test/Spec.hs 12;" f
makeArc src/Picture/Base.hs 157;" f
makeAttach src/Dodge/Item/Attach.hs 10;" f
makeBlip src/Dodge/RadarSweep.hs 70;" f
makeBlockDebris src/Dodge/Block/Debris.hs 36;" f
makeBlockDebris src/Dodge/Block/Debris.hs 37;" f
makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 979;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f
@@ -4062,9 +4062,9 @@ makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 111;" f
makeColorTermPara src/Dodge/Terminal.hs 108;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 47;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 50;" f
makeDoorDebris src/Dodge/Block/Debris.hs 25;" f
makeDebris src/Dodge/Block/Debris.hs 48;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f
makeDoorDebris src/Dodge/Block/Debris.hs 26;" f
makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f
makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 73;" f
@@ -4111,8 +4111,8 @@ maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f
maxShowX src/Dodge/Combine/Graph.hs 48;" f
maxViewDistance src/Dodge/Viewpoints.hs 26;" f
maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f
maybeClearPath src/Dodge/Block.hs 68;" f
maybeClearPaths src/Dodge/Block.hs 65;" f
maybeClearPath src/Dodge/Block.hs 73;" f
maybeClearPaths src/Dodge/Block.hs 70;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f
maybeOpenConsole src/Dodge/Update.hs 129;" f
@@ -4370,7 +4370,7 @@ pistol src/Dodge/Item/Held/Stick.hs 40;" f
pistolerRoom src/Dodge/Room/Room.hs 330;" f
pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 16;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 20;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 19;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 48;" f
plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f
plMachine' src/Dodge/Placement/PlaceSpot.hs 250;" f
@@ -4379,7 +4379,7 @@ plNewID src/Dodge/Base/NewID.hs 7;" f
plNewUpID src/Dodge/Base/NewID.hs 13;" f
plNewUsing src/Dodge/Base/NewID.hs 27;" f
plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f
plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 82;" f
plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 80;" f
plTurret src/Dodge/Placement/PlaceSpot.hs 219;" f
placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 264;" f
@@ -5006,7 +5006,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 359;" f
soundStart src/Dodge/SoundLogic.hs 118;" f
soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f
soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f
@@ -5029,7 +5029,7 @@ speedLegs src/Dodge/Item/Equipment.hs 90;" f
splashMenu src/Dodge/Menu.hs 33;" f
splashMenuOptions src/Dodge/Menu.hs 38;" f
splashScreen src/Dodge/Initialisation.hs 10;" f
splinterBlock src/Dodge/Block.hs 22;" f
splinterBlock src/Dodge/Block.hs 25;" f
splitBezierquad src/Geometry/Bezier.hs 15;" f
splitExtra src/Justify.hs 21;" f
splitLookupTrie src/SimpleTrie.hs 39;" f
@@ -5330,7 +5330,7 @@ unpause src/Dodge/Menu.hs 212;" f
unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f
unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f
unsafeSwapKeys src/IntMapHelp.hs 75;" f
unshadowBlock src/Dodge/Block.hs 35;" f
unshadowBlock src/Dodge/Block.hs 38;" f
untilJust src/MonadHelp.hs 7;" f
untilJustCount src/MonadHelp.hs 14;" f
unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" f
@@ -5366,8 +5366,8 @@ updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 577;" f
updateDoor src/Dodge/DrWdWd.hs 20;" f
updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 74;" f
updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f
updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 72;" f
updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 69;" f
updateDoors src/Dodge/Update.hs 328;" f
updateDust src/Dodge/Update.hs 841;" f
updateDusts src/Dodge/Update.hs 691;" f
@@ -5516,8 +5516,8 @@ verticalPipe src/Dodge/Picture.hs 19;" f
verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f
verticalWire src/Dodge/Wire.hs 24;" 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 327;" f
viewClipBounds src/Dodge/Debug/Picture.hs 336;" f
viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f
viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f
violet src/Color.hs 21;" f