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
+12 -9
View File
@@ -1,22 +1,25 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Block ( module Dodge.Block (
splinterBlock, splinterBlock,
destroyBlock, destroyBlock,
) where ) where
import Dodge.Zoning.Wall import qualified Data.Set as S
import Dodge.Base.Collide
import Control.Monad
import Dodge.Path
import Control.Lens import Control.Lens
import Control.Monad
import Data.Foldable import Data.Foldable
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
import Data.Maybe import Data.Maybe
import Dodge.Base.Collide
import Dodge.Block.Debris import Dodge.Block.Debris
import Dodge.Data.World import Dodge.Data.World
import Dodge.Material.Sound import Dodge.Material.Sound
import Dodge.Path
import Dodge.Wall.Delete import Dodge.Wall.Delete
import Dodge.Wall.Zone import Dodge.Wall.Zone
import Dodge.WorldEvent.Sound import Dodge.WorldEvent.Sound
import Dodge.Zoning.Wall
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
splinterBlock :: Block -> World -> World splinterBlock :: Block -> World -> World
@@ -53,10 +56,12 @@ destroyBlock bl w =
& deleteWallIDs wlids & deleteWallIDs wlids
& maybeClearPaths (_blObstructs bl) -- must happen after the walls are deleted & maybeClearPaths (_blObstructs bl) -- must happen after the walls are deleted
& cWorld . lWorld . blocks %~ IM.delete (_blID bl) & cWorld . lWorld . blocks %~ IM.delete (_blID bl)
where
-- & muchWlDustAt awl (_blPos bl) -- & muchWlDustAt awl (_blPos bl)
-- & flip (foldl' $ flip (muchWlDustAt awl)) (map (pos +.+) ps) -- & flip (foldl' $ flip (muchWlDustAt awl)) (map (pos +.+) ps)
where
wlids = _blWallIDs bl wlids = _blWallIDs bl
-- awl = w ^?! cWorld . lWorld . walls . ix (IS.findMin wlids) -- awl = w ^?! cWorld . lWorld . walls . ix (IS.findMin wlids)
-- pos = fst . _wlLine $ awl -- pos = fst . _wlLine $ awl
-- ps = replicateM 25 (randInCirc 20) & evalState $ _randGen w -- ps = replicateM 25 (randInCirc 20) & evalState $ _randGen w
@@ -70,12 +75,10 @@ maybeClearPath w (i,j) = fromMaybe w $ do
x <- getNodePos i w x <- getNodePos i w
y <- getNodePos j w y <- getNodePos j w
guard $ null $ overlapSegWalls x y $ wlsNearSeg x y w guard $ null $ overlapSegWalls x y $ wlsNearSeg x y w
return $ w & cWorld . incGraph %~ updateEdge f (i,j) return $ w & cWorld . incGraph %~ updateEdge (S.intersection (S.singleton ChasmObstacle)) (i, j)
where
f = at BlockObstacle .~ Nothing
---- | not . null $ overlapSegWalls (_peStart pe) (_peEnd pe) $ wlsNearSeg (_peStart pe) (_peEnd pe) w = ---- | not . null $ overlapSegWalls (_peStart pe) (_peEnd pe) $ wlsNearSeg (_peStart pe) (_peEnd pe) w =
---- w ---- w
---- | otherwise = ---- | otherwise =
---- w ---- w
---- & cWorld . pathGraph %~ FGL.insEdge (x, y, pe & peObstacles .~ mempty) . FGL.delEdge (x, y) ---- & 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 , _putEndPoint :: Point2
} }
| PutWall {_pwPoly :: [Point2], _pwWall :: Wall} | 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 [(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) | RandPS (State StdGen PSType)
| PutForeground ForegroundShape | PutForeground ForegroundShape
| PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld) | PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld)
+8 -7
View File
@@ -8,12 +8,13 @@ The warnings have been disabled.
-} -}
module Dodge.Data.PathGraph where module Dodge.Data.PathGraph where
import Dodge.Data.Wall.Structure
import Control.Lens import Control.Lens
import Data.Aeson import Data.Aeson
import Data.Aeson.TH import Data.Aeson.TH
import Data.Graph.Inductive import Data.Graph.Inductive
--import Data.Map.Strict (Map) --import Data.Map.Strict (Map)
import qualified Data.Set as Set import qualified Data.Set as S
--import Geometry.Data --import Geometry.Data
--data PathGraph = PathGraph --data PathGraph = PathGraph
@@ -41,17 +42,17 @@ import qualified Data.Set as Set
data SimpleEdge = SimpleEdge data SimpleEdge = SimpleEdge
{ _seDist :: Float { _seDist :: Float
, _seObstacles :: Set.Set EdgeObstacle , _seObstacles :: S.Set EdgeObstacle
} }
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
data EdgeObstacle data EdgeObstacle
= BlockObstacle = WallObstacle WallFlag
| DoorObstacle
| AutoDoorObstacle
| WallObstacle
| ChasmObstacle | 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 --instance (ToJSON a, ToJSON b) => ToJSON (Gr a b) where
-- toEncoding = genericToEncoding defaultOptions -- toEncoding = genericToEncoding defaultOptions
+2
View File
@@ -14,12 +14,14 @@ import Data.Aeson.TH
import Dodge.Data.Material import Dodge.Data.Material
import Dodge.Data.Wall.Structure import Dodge.Data.Wall.Structure
import Geometry import Geometry
import qualified Data.Set as S
data Wall = Wall data Wall = Wall
{ _wlLine :: (Point2, Point2) { _wlLine :: (Point2, Point2)
, _wlID :: Int , _wlID :: Int
, _wlColor :: Color , _wlColor :: Color
, _wlOpacity :: Opacity , _wlOpacity :: Opacity
, _wlPathFlag :: S.Set WallFlag
, _wlPathable :: Bool , _wlPathable :: Bool
, _wlPenetrable :: Bool , _wlPenetrable :: Bool
, _wlBouncy :: Bool , _wlBouncy :: Bool
+9 -2
View File
@@ -1,8 +1,8 @@
{-# LANGUAGE StrictData #-} {-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Wall.Structure module Dodge.Data.Wall.Structure where
where
import Control.Lens import Control.Lens
import Data.Aeson import Data.Aeson
import Data.Aeson.TH import Data.Aeson.TH
@@ -15,5 +15,12 @@ data WallStructure
| CreaturePart {_wlStCreature :: Int} | CreaturePart {_wlStCreature :: Int}
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
data WallFlag
= WallBlockVisibility
| WallNotAutoOpen
| WallNotDestrucable
deriving (Eq, Ord, Show, Read, Enum, Bounded) --Generic, Flat)
makeLenses ''WallStructure makeLenses ''WallStructure
deriveJSON defaultOptions ''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 :: EdgeObstacle -> Color
obstacleColor eo = case eo of obstacleColor eo = case eo of
WallObstacle -> red WallObstacle WallNotAutoOpen -> red
DoorObstacle -> orange WallObstacle WallBlockVisibility -> orange
AutoDoorObstacle -> yellow WallObstacle WallNotDestrucable -> yellow
BlockObstacle -> blue
ChasmObstacle -> cyan ChasmObstacle -> cyan
drawFarWallDetect :: World -> Picture 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) p = worldPosToScreen (w ^. wCam) $ 0.5 *.* uncurry (+.+) (_wlLine wl)
drawPathing :: Config -> World -> Picture drawPathing :: Config -> World -> Picture
drawPathing cfig w = drawPathing cfig w = setLayer DebugLayer $ ifoldMap f $ w ^. cWorld . incGraph
setLayer DebugLayer $ ifoldMap f $ w ^. cWorld . incGraph
where where
inodes = w ^. cWorld . incNode inodes = w ^. cWorld . incNode
f i = foldMap (g i) f i = foldMap (g i)
+4
View File
@@ -8,6 +8,7 @@ module Dodge.Default.Wall (
defaultDirtWall, defaultDirtWall,
) where ) where
import qualified Data.Set as S
import Control.Lens import Control.Lens
import Dodge.Data.Wall import Dodge.Data.Wall
import Geometry.Data import Geometry.Data
@@ -20,6 +21,8 @@ defaultWall =
{ _wlLine = (V2 0 0, V2 50 0) { _wlLine = (V2 0 0, V2 50 0)
, _wlID = 0 , _wlID = 0
, _wlColor = greyN 0.6 , _wlColor = greyN 0.6
, _wlPathFlag = S.fromList [WallBlockVisibility
, WallNotAutoOpen, WallNotDestrucable]
, --, _wlOpacity = Opaque 11 , --, _wlOpacity = Opaque 11
_wlOpacity = Opaque 11 _wlOpacity = Opaque 11
, _wlPathable = False , _wlPathable = False
@@ -38,6 +41,7 @@ defaultWall =
defaultDoorWall :: Wall defaultDoorWall :: Wall
defaultDoorWall = defaultWall { _wlMaterial = Metal } defaultDoorWall = defaultWall { _wlMaterial = Metal }
& wlPathFlag . at WallNotDestrucable .~ Nothing
{- Indestructible see-through wall. -} {- Indestructible see-through wall. -}
defaultCrystalWall :: Wall defaultCrystalWall :: Wall
+5 -4
View File
@@ -15,6 +15,7 @@ module Dodge.Path (
getEdgesCrossing, getEdgesCrossing,
) where ) where
import qualified Data.Set as S
import qualified Algorithm.Search as AS import qualified Algorithm.Search as AS
import Control.Lens import Control.Lens
--import Data.Bifunctor --import Data.Bifunctor
@@ -82,7 +83,7 @@ makePathBetween :: Point2 -> Point2 -> World -> Maybe [Int]
makePathBetween = makePathUsing $ not . pathEdgeObstructed makePathBetween = makePathUsing $ not . pathEdgeObstructed
pathEdgeObstructed :: Set.Set EdgeObstacle -> Bool 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 walkableNodeNear :: World -> Point2 -> Maybe Int
{-# INLINE walkableNodeNear #-} {-# INLINE walkableNodeNear #-}
@@ -129,17 +130,17 @@ pairsToIncGraph pairs =
ps = Set.toList $ Set.map fst pairs <> Set.map snd pairs ps = Set.toList $ Set.map fst pairs <> Set.map snd pairs
obstructPathsCrossing :: obstructPathsCrossing ::
EdgeObstacle -> S.Set EdgeObstacle ->
Point2 -> Point2 ->
Point2 -> Point2 ->
World -> World ->
(World, [(Int,Int)]) (World, [(Int,Int)])
obstructPathsCrossing obstacletype s e w = obstructPathsCrossing obs s e w =
( w & cWorld . incGraph %~ updateincedges ( w & cWorld . incGraph %~ updateincedges
, inces , inces
) )
where where
updateincedge = flip $ updateEdge (at obstacletype ?~ ()) updateincedge = flip $ updateEdge (S.union obs)
updateincedges gr = foldl' updateincedge gr inces updateincedges gr = foldl' updateincedge gr inces
inces = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZoning s e w inces = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZoning s e w
inedgecrosses (i, j) = isJust $ intersectSegSeg s e (f i) (f j) 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 switchDoor, -- not used 9/3/22
) where ) where
import qualified Data.Set as S
import Color import Color
import Control.Lens import Control.Lens
import Dodge.Data.CreatureEffect import Dodge.Data.CreatureEffect
@@ -14,12 +15,13 @@ import Dodge.LevelGen.PlacementHelper
import Dodge.LevelGen.Switch import Dodge.LevelGen.Switch
import Geometry 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 = putDoubleDoor eo wl cond a b speed =
putDoubleDoorThen eo wl cond 1 a b speed (const $ const Nothing) putDoubleDoorThen eo wl cond 1 a b speed (const $ const Nothing)
putDoubleDoorThen :: putDoubleDoorThen ::
EdgeObstacle -> S.Set EdgeObstacle ->
Wall -> Wall ->
WdBl -> WdBl ->
Float -> Float ->
@@ -37,7 +39,7 @@ putDoubleDoorThen eo wl cond soff a b speed cont =
half = 0.5 *.* (a +.+ b) half = 0.5 *.* (a +.+ b)
doorBetween :: doorBetween ::
EdgeObstacle -> S.Set EdgeObstacle ->
Wall -> Wall ->
WdBl -> WdBl ->
Float -> 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 (p : ps) -> ptCont (adoor p) $ \pl -> Just $ divideDoorPane (_plMID pl) wl cond soff speed ps g
_ -> undefined _ -> undefined
where where
adoor (x, y) = PutSlideDr thedoor wl DoorObstacle soff x y adoor (x, y) = PutSlideDr thedoor wl mempty soff x y
thedoor = thedoor =
defaultDoor & drSpeed .~ speed & drTrigger .~ cond defaultDoor & drSpeed .~ speed & drTrigger .~ cond
& drPushedBy .~ maybe PushesItself PushedBy mid & 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) let x = w ^?! gwWorld . coordinates . ix (apl ^?! plMID . _Just)
y = w ^?! gwWorld . coordinates . ix (bpl ^?! plMID . _Just) y = w ^?! gwWorld . coordinates . ix (bpl ^?! plMID . _Just)
in Just $ putDoubleDoor in Just $ putDoubleDoor
AutoDoorObstacle (S.fromList [WallObstacle WallBlockVisibility])
defaultAutoWall defaultAutoWall
(WdBlCrFilterNearPoint 40 (0.5 *.* (x + y)) CrIsAnimate) (WdBlCrFilterNearPoint 40 (0.5 *.* (x + y)) CrIsAnimate)
a a
@@ -109,7 +111,8 @@ switchDoor btpos btrot dra drb col = pContID
jsps0J (doorbetween btid dra drc) $ jsps0J (doorbetween btid dra drc) $
sps0 (doorbetween btid drb drc) sps0 (doorbetween btid drb drc)
where 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 where
thedoor = thedoor =
defaultDoor defaultDoor
+3 -2
View File
@@ -6,6 +6,7 @@
-} -}
module Dodge.Placement.PlaceSpot (placeSpot) where module Dodge.Placement.PlaceSpot (placeSpot) where
import qualified Data.Set as S
import Color import Color
import Control.Monad.State import Control.Monad.State
import Data.Bifunctor import Data.Bifunctor
@@ -165,7 +166,7 @@ placeChasm gw rid ps shiftps =
& gwWorld %~ f & gwWorld %~ f
where where
f w = foldl' g w (loopPairs shiftps) 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 --evaluateRandPS
-- :: Int -> State StdGen PSType -> PlacementSpot -> GenWorld -> (Int, GenWorld) -- :: 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 :: Wall -> World -> (Point2, Point2) -> World
addPane wl w l = addPane wl w l =
w & plNew (cWorld . lWorld . walls) wlID (wl & wlLine .~ 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 :: Point2 -> Float -> Prop -> Prop
mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a)) mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a))
+3 -1
View File
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.Block (
plLineBlock, plLineBlock,
) where ) where
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
@@ -119,5 +120,6 @@ insertWalls blid wls w = w' & cWorld . lWorld . blocks . ix blid . blObstructs .
insertWall :: Wall -> World -> (World, [(Int,Int)]) insertWall :: Wall -> World -> (World, [(Int,Int)])
insertWall wl = insertWall wl =
uncurry (obstructPathsCrossing BlockObstacle) (_wlLine wl) uncurry (obstructPathsCrossing (S.fromList [WallObstacle WallNotAutoOpen, WallObstacle WallBlockVisibility]))
(_wlLine wl)
. (cWorld . lWorld . walls . at (_wlID wl) ?~ wl) . (cWorld . lWorld . walls . at (_wlID wl) ?~ wl)
+5 -3
View File
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.TriggerDoor (
updateDoorEdges, updateDoorEdges,
) where ) where
import qualified Data.Set as S
import Dodge.ShiftPoint import Dodge.ShiftPoint
import Linear import Linear
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
@@ -18,7 +19,7 @@ import Picture
plDoor :: plDoor ::
Color -> Color ->
EdgeObstacle -> S.Set EdgeObstacle ->
-- | Opening condition -- | Opening condition
WdBl -> WdBl ->
-- | Door positions, closed to open. -- | 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 addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids
$ wlps' & each . each %~ shiftPointBy p1 $ 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) = addDoorWall eo drid wl w (wlid, wlps) =
w' w'
& cWorld . lWorld . walls & cWorld . lWorld . walls
@@ -80,7 +82,7 @@ updateDoorEdge _ w _ = w
plSlideDoor :: plSlideDoor ::
Door -> Door ->
Wall -> Wall ->
EdgeObstacle -> S.Set EdgeObstacle ->
Float -> Float ->
Point2 -> Point2 ->
Point2 -> Point2 ->
+6 -6
View File
@@ -35,8 +35,8 @@ decontamRoom i =
& rmPmnts & rmPmnts
.~ [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ .~ [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid -> Just $ \btid -> Just $
putDoubleDoorThen DoorObstacle thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ putDoubleDoorThen switchWallObs 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 \_ _ -> Just $ putDoubleDoor switchWallObs thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
, invisibleWall $ rectNSWE 60 40 (-40) (-30) , invisibleWall $ rectNSWE 60 40 (-40) (-30)
, spanLightI (V2 (-20) 30) (V2 (-20) 70) , spanLightI (V2 (-20) 30) (V2 (-20) 70)
, analyser (NoItemZone ps) (PS 50 0) (PS mcpos 0) & plExternalID ?~ i , analyser (NoItemZone ps) (PS 50 0) (PS mcpos 0) & plExternalID ?~ i
@@ -50,7 +50,7 @@ decontamRoom i =
pmnt <- gw ^? genPmnt . ix i pmnt <- gw ^? genPmnt . ix i
return $ return $
putDoubleDoor putDoubleDoor
DoorObstacle switchWallObs
(switchWallCol red) (switchWallCol red)
(cond pmnt) (cond pmnt)
(V2 (-10) 35) (V2 (-10) 35)
@@ -78,8 +78,8 @@ airlock0 =
, _rmPmnts = , _rmPmnts =
[ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid -> Just $ \btid -> Just $
putDoubleDoorThen DoorObstacle thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ putDoubleDoorThen switchWallObs 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 \_ _ -> Just $ putDoubleDoor switchWallObs thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2
, invisibleWall $ rectNSWE 60 40 (-40) (-30) , invisibleWall $ rectNSWE 60 40 (-40) (-30)
, spanLightI (V2 (-2) 30) (V2 (-2) 70) , spanLightI (V2 (-2) 30) (V2 (-2) 70)
, sps0 $ putShape $ thinHighBar 75 (V2 40 50) (V2 (-1) 50) , sps0 $ putShape $ thinHighBar 75 (V2 40 50) (V2 (-1) 50)
@@ -97,7 +97,7 @@ airlock0 =
--airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType --airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType
airlockDoor :: Color -> WdBl -> Float -> Point2A -> Point2A -> PSType airlockDoor :: Color -> WdBl -> Float -> Point2A -> Point2A -> PSType
airlockDoor col = PutDoor col DoorObstacle airlockDoor col = PutDoor col switchWallObs
airlockDoubleDoor :: airlockDoubleDoor ::
Point2 -> 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 f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do
pmnt <- gw ^? genPmnt . ix i pmnt <- gw ^? genPmnt . ix i
return $ putDoubleDoor 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) cond pmnt = WdTrig $ fromJust (_plMID pmnt)
+3 -3
View File
@@ -47,8 +47,8 @@ twinSlowDoorRoom w h x =
, _rmPath = mempty , _rmPath = mempty
, _rmPmnts = , _rmPmnts =
[ pContID (PS (V2 0 (h -5)) pi) (PutButton $ makeButton col NoWorldEffect) $ [ 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)) $ \btid -> jsps0J (PutSlideDr (thedoor btid) thewall switchWallObs 1 (V2 x 1) (V2 x h)) $
ps0 (PutSlideDr (thedoor btid) thewall DoorObstacle 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))) $ \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 \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)) (rprBool (isUnusedLnkType InLink))
$ \btplmnt -> Just $ $ \btplmnt -> Just $
putDoubleDoorThen putDoubleDoorThen
DoorObstacle switchWallObs
thewall thewall
(WdBlBtOn $ fromJust $ _plMID btplmnt) (WdBlBtOn $ fromJust $ _plMID btplmnt)
30 30
+2 -2
View File
@@ -327,8 +327,8 @@ centerVaultRoom w h d =
theDoor = theDoor =
[ pContID (PS (V2 35 (d + 4)) 0) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ [ pContID (PS (V2 35 (d + 4)) 0) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $
\btid -> \btid ->
jspsJ (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 DoorObstacle 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 thewall = switchWallCol col
thedoor btid = thedoor btid =
+3 -5
View File
@@ -318,12 +318,10 @@ updateEdgeWallObs :: World -> (Int,Int) -> World
updateEdgeWallObs w (i,j) = fromMaybe w $ do updateEdgeWallObs w (i,j) = fromMaybe w $ do
s <- getNodePos i w s <- getNodePos i w
e <- getNodePos j w e <- getNodePos j w
let wls = snd <$> wlsHitUnsorted s e w let wlflags = foldMap (^. _2 . wlPathFlag) $ wlsHitUnsorted s e w
return $ w & cWorld . incGraph %~ updateEdge (f wls) (i,j) return $ w & cWorld . incGraph %~ updateEdge (f wlflags) (i,j)
where where
f wls f x _ = S.map WallObstacle x
| all _wlPathable wls = (at BlockObstacle .~ Nothing) . (at DoorObstacle .~ Nothing)
| otherwise = at DoorObstacle ?~ ()
updateDoors :: World -> World updateDoors :: World -> World
updateDoors w = let (is,w') = foldrM updateDoor w (w ^. cWorld . lWorld . doors) 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 Audition src/Dodge/Data/Creature/Perception.hs 45;" t
AutoAI src/Dodge/Data/Creature/Misc.hs 45;" C AutoAI src/Dodge/Data/Creature/Misc.hs 45;" C
AutoCrit src/Dodge/Data/Creature/Misc.hs 70;" 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 AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C
Avatar src/Dodge/Data/Creature/Misc.hs 59;" C Avatar src/Dodge/Data/Creature/Misc.hs 59;" C
AvatarDead src/Dodge/Data/Creature/Misc.hs 67;" 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 BlockDrawColHeightPoss src/Dodge/Data/Block.hs 39;" C
BlockDrawMempty src/Dodge/Data/Block.hs 36;" C BlockDrawMempty src/Dodge/Data/Block.hs 36;" C
BlockDraws src/Dodge/Data/Block.hs 38;" 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 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
@@ -212,7 +210,7 @@ ChangeStrategy src/Dodge/Data/ActionPlan.hs 43;" C
ChaseAI src/Dodge/Data/Creature/Misc.hs 38;" C ChaseAI src/Dodge/Data/Creature/Misc.hs 38;" C
ChaseCrit src/Dodge/Data/Creature/Misc.hs 68;" C ChaseCrit src/Dodge/Data/Creature/Misc.hs 68;" C
ChaseCritters src/Dodge/Data/Creature/State.hs 16;" 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 ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C
ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 29;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 29;" C
ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 28;" 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 DoReplicate src/Dodge/Data/ActionPlan.hs 106;" C
DoReplicatePartial src/Dodge/Data/ActionPlan.hs 110;" C DoReplicatePartial src/Dodge/Data/ActionPlan.hs 110;" C
DockingBaySS src/Dodge/Data/Scenario.hs 92;" 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 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 DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C
DoubleRes src/Dodge/Data/Config.hs 98;" C DoubleRes src/Dodge/Data/Config.hs 98;" C
DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t
DrWdId src/Dodge/Data/WorldEffect.hs 63;" C DrWdId src/Dodge/Data/WorldEffect.hs 63;" C
DrWdWd src/Dodge/Data/WorldEffect.hs 63;" t DrWdWd src/Dodge/Data/WorldEffect.hs 63;" t
DrawForceField src/Dodge/Data/Wall.hs 45;" C DrawForceField src/Dodge/Data/Wall.hs 47;" C
DrawnWall src/Dodge/Data/Wall.hs 41;" C DrawnWall src/Dodge/Data/Wall.hs 43;" C
DroneAmmo src/Dodge/Data/AmmoType.hs 10;" C DroneAmmo src/Dodge/Data/AmmoType.hs 10;" C
DropItem src/Dodge/Data/ActionPlan.hs 38;" C DropItem src/Dodge/Data/ActionPlan.hs 38;" C
DudPayload src/Dodge/Data/Payload.hs 11;" 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 NorthWest src/Dodge/Data/CardinalPoint.hs 16;" C
NorthWest8 src/Dodge/Data/CardinalPoint.hs 27;" C NorthWest8 src/Dodge/Data/CardinalPoint.hs 27;" C
NotLink src/Dodge/Data/Room.hs 69;" 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 Nothing' src/MaybeHelp.hs 11;" C
NothingID src/Dodge/Data/CrWlID.hs 10;" C NothingID src/Dodge/Data/CrWlID.hs 10;" C
NozzleAngle src/Dodge/Data/Item/Params.hs 16;" 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 OnceSound src/Dodge/Data/SoundOrigin.hs 14;" C
OneHand src/Dodge/Data/AimStance.hs 14;" C OneHand src/Dodge/Data/AimStance.hs 14;" C
OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C
Opacity src/Dodge/Data/Wall.hs 38;" t Opacity src/Dodge/Data/Wall.hs 40;" t
Opaque src/Dodge/Data/Wall.hs 42;" C Opaque src/Dodge/Data/Wall.hs 44;" C
OpticScope src/Dodge/Data/Item/Scope.hs 12;" C OpticScope src/Dodge/Data/Item/Scope.hs 12;" C
OptionScreen src/Dodge/Data/Universe.hs 80;" C OptionScreen src/Dodge/Data/Universe.hs 80;" C
OptionScreenFlag src/Dodge/Data/Universe.hs 70;" t 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 PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t
PulseLaserSF src/Dodge/Data/ComposedItem.hs 41;" C PulseLaserSF src/Dodge/Data/ComposedItem.hs 41;" C
PulseStatus src/Dodge/Data/Creature/Misc.hs 52;" C PulseStatus src/Dodge/Data/Creature/Misc.hs 52;" C
PushSource src/Dodge/Data/Door.hs 24;" t PushSource src/Dodge/Data/Door.hs 23;" t
PushedBy src/Dodge/Data/Door.hs 26;" C PushedBy src/Dodge/Data/Door.hs 25;" C
PushesItself src/Dodge/Data/Door.hs 25;" C PushesItself src/Dodge/Data/Door.hs 24;" C
PutBlock src/Dodge/Data/GenWorld.hs 45;" C PutBlock src/Dodge/Data/GenWorld.hs 45;" C
PutButton src/Dodge/Data/GenWorld.hs 41;" C PutButton src/Dodge/Data/GenWorld.hs 41;" C
PutChasm src/Dodge/Data/GenWorld.hs 64;" 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 Search src/Dodge/Data/ActionPlan.hs 145;" C
SecretCabal src/Dodge/Data/Scenario.hs 44;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C
SectionCursor src/Dodge/Data/SelectionList.hs 23;" t SectionCursor src/Dodge/Data/SelectionList.hs 23;" t
SeeAbove src/Dodge/Data/Wall.hs 40;" C SeeAbove src/Dodge/Data/Wall.hs 42;" C
SeeThrough src/Dodge/Data/Wall.hs 39;" C SeeThrough src/Dodge/Data/Wall.hs 41;" C
Sel src/Dodge/Data/HUD.hs 39;" C Sel src/Dodge/Data/HUD.hs 39;" C
SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C
SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" 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 WRIST_ECG src/Dodge/Data/Item/Combine.hs 135;" C
WaitThen src/Dodge/Data/ActionPlan.hs 74;" C WaitThen src/Dodge/Data/ActionPlan.hs 74;" C
Walking src/Dodge/Data/Creature/Stance.hs 23;" 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 WallArcNode src/Dodge/Data/LWorld.hs 154;" C
WallDraw src/Dodge/Data/Wall.hs 45;" t WallBlockVisibility src/Dodge/Data/Wall/Structure.hs 19;" C
WallObstacle src/Dodge/Data/PathGraph.hs 52;" 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.hs 23;" t
WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t
WallSound src/Dodge/Data/SoundOrigin.hs 24;" C 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 107;" f
_doReplicateTimes src/Dodge/Data/ActionPlan.hs 112;" f _doReplicateTimes src/Dodge/Data/ActionPlan.hs 112;" f
_doors src/Dodge/Data/LWorld.hs 118;" f _doors src/Dodge/Data/LWorld.hs 118;" f
_drFootPrint src/Dodge/Data/Door.hs 38;" f _drFootPrint src/Dodge/Data/Door.hs 36;" f
_drHP src/Dodge/Data/Door.hs 39;" f _drHP src/Dodge/Data/Door.hs 37;" f
_drID src/Dodge/Data/Door.hs 31;" f _drID src/Dodge/Data/Door.hs 30;" f
_drLerp src/Dodge/Data/Door.hs 37;" f _drLerp src/Dodge/Data/Door.hs 35;" f
_drMech src/Dodge/Data/Door.hs 34;" f _drMech src/Dodge/Data/Door.hs 32;" f
_drMounts src/Dodge/Data/Door.hs 43;" f _drMounts src/Dodge/Data/Door.hs 41;" f
_drObstacleType src/Dodge/Data/Door.hs 45;" f _drOnePos src/Dodge/Data/Door.hs 34;" f
_drOnePos src/Dodge/Data/Door.hs 36;" f _drPushedBy src/Dodge/Data/Door.hs 39;" f
_drPushedBy src/Dodge/Data/Door.hs 41;" f _drPushes src/Dodge/Data/Door.hs 40;" f
_drPushes src/Dodge/Data/Door.hs 42;" f _drSpeed src/Dodge/Data/Door.hs 38;" f
_drSpeed src/Dodge/Data/Door.hs 40;" f _drTrigger src/Dodge/Data/Door.hs 31;" f
_drTrigger src/Dodge/Data/Door.hs 33;" f _drZeroPos src/Dodge/Data/Door.hs 33;" f
_drWallIDs src/Dodge/Data/Door.hs 32;" f
_drZeroPos src/Dodge/Data/Door.hs 35;" f
_dsPos src/Dodge/Data/Cloud.hs 28;" f _dsPos src/Dodge/Data/Cloud.hs 28;" f
_dsTimer src/Dodge/Data/Cloud.hs 30;" f _dsTimer src/Dodge/Data/Cloud.hs 30;" f
_dsType src/Dodge/Data/Cloud.hs 31;" 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 _offGridFromEdges src/Dodge/Data/Room.hs 82;" f
_oldMagnets src/Dodge/Data/LWorld.hs 121;" f _oldMagnets src/Dodge/Data/LWorld.hs 121;" f
_onGridFromEdges src/Dodge/Data/Room.hs 81;" 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 _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 _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 18;" f
_opticPos src/Dodge/Data/Item/Scope.hs 14;" f _opticPos src/Dodge/Data/Item/Scope.hs 14;" f
_opticZoom src/Dodge/Data/Item/Scope.hs 17;" 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 _windowShader src/Data/Preload/Render.hs 19;" f
_windowX src/Dodge/Data/Config.hs 51;" f _windowX src/Dodge/Data/Config.hs 51;" f
_windowY src/Dodge/Data/Config.hs 52;" f _windowY src/Dodge/Data/Config.hs 52;" f
_wlBouncy src/Dodge/Data/Wall.hs 25;" f _wlBouncy src/Dodge/Data/Wall.hs 27;" f
_wlColor src/Dodge/Data/Wall.hs 21;" f _wlColor src/Dodge/Data/Wall.hs 22;" f
_wlFireThrough src/Dodge/Data/Wall.hs 28;" f _wlFireThrough src/Dodge/Data/Wall.hs 30;" f
_wlHeight src/Dodge/Data/Wall.hs 33;" f _wlHeight src/Dodge/Data/Wall.hs 35;" f
_wlID src/Dodge/Data/Wall.hs 20;" f _wlID src/Dodge/Data/Wall.hs 21;" f
_wlLine src/Dodge/Data/Wall.hs 19;" f _wlLine src/Dodge/Data/Wall.hs 20;" f
_wlMaterial src/Dodge/Data/Wall.hs 34;" f _wlMaterial src/Dodge/Data/Wall.hs 36;" f
_wlOpacity src/Dodge/Data/Wall.hs 22;" f _wlOpacity src/Dodge/Data/Wall.hs 23;" f
_wlPathable src/Dodge/Data/Wall.hs 23;" f _wlPathFlag src/Dodge/Data/Wall.hs 24;" f
_wlPenetrable src/Dodge/Data/Wall.hs 24;" f _wlPathable src/Dodge/Data/Wall.hs 25;" f
_wlReflect src/Dodge/Data/Wall.hs 29;" f _wlPenetrable src/Dodge/Data/Wall.hs 26;" f
_wlRotateTo src/Dodge/Data/Wall.hs 31;" 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 _wlStCreature src/Dodge/Data/Wall/Structure.hs 15;" f
_wlStructure src/Dodge/Data/Wall.hs 32;" f _wlStructure src/Dodge/Data/Wall.hs 34;" f
_wlTouchThrough src/Dodge/Data/Wall.hs 27;" f _wlTouchThrough src/Dodge/Data/Wall.hs 29;" f
_wlUnshadowed src/Dodge/Data/Wall.hs 30;" f _wlUnshadowed src/Dodge/Data/Wall.hs 32;" f
_wlWalkable src/Dodge/Data/Wall.hs 26;" f _wlWalkable src/Dodge/Data/Wall.hs 28;" f
_wlZoning src/Dodge/Data/World.hs 49;" f _wlZoning src/Dodge/Data/World.hs 49;" f
_worldEventFlags src/Dodge/Data/World.hs 45;" f _worldEventFlags src/Dodge/Data/World.hs 45;" f
_worldEvents src/Dodge/Data/LWorld.hs 127;" 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 addDepth src/Picture/Base.hs 133;" f
addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f
addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" 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 addGib4 src/Dodge/Prop/Gib.hs 52;" f
addGibAt src/Dodge/Prop/Gib.hs 63;" f addGibAt src/Dodge/Prop/Gib.hs 63;" f
addGibAtDir src/Dodge/Prop/Gib.hs 69;" 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 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 55;" 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 cullPoint src/Dodge/Render/ShapePicture.hs 94;" 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
@@ -3045,7 +3045,7 @@ deadScalp src/Dodge/Creature/Picture.hs 81;" f
deadUpperBody src/Dodge/Creature/Picture.hs 113;" f deadUpperBody src/Dodge/Creature/Picture.hs 113;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f
debrisSPic src/Dodge/Prop/Draw.hs 20;" 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 debugEvent src/Dodge/Debug.hs 36;" f
debugEvents src/Dodge/Debug.hs 21;" f debugEvents src/Dodge/Debug.hs 21;" f
debugItem src/Dodge/Debug.hs 39;" 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 deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f
denormalEdges src/Polyhedra.hs 136;" f denormalEdges src/Polyhedra.hs 136;" f
destroyAllInvItems src/Dodge/Inventory.hs 53;" 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 destroyDoor src/Dodge/DrWdWd.hs 56;" f
destroyInvItem src/Dodge/Inventory.hs 40;" f destroyInvItem src/Dodge/Inventory.hs 40;" f
destroyItem src/Dodge/Inventory.hs 62;" 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 doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f
doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f
doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" 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 doDrag src/Dodge/Update/Input/InGame.hs 127;" f
doDrawing src/Dodge/Render.hs 34;" f doDrawing src/Dodge/Render.hs 34;" f
doDrawing' src/Dodge/Render.hs 45;" 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 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 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 drawBullet src/Dodge/Render/ShapePicture.hs 133;" 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
@@ -3269,7 +3270,7 @@ 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
drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" 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 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 69;" f
@@ -3278,7 +3279,7 @@ drawCross src/Dodge/Render/Label.hs 24;" f
drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f
drawCursorAt src/Dodge/Render/List.hs 72;" f drawCursorAt src/Dodge/Render/List.hs 72;" f
drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" 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 drawDamSensor src/Dodge/Machine/Draw.hs 27;" f
drawDebug src/Dodge/Debug.hs 173;" f drawDebug src/Dodge/Debug.hs 173;" f
drawDoubleLampCover src/Dodge/Prop/Draw.hs 95;" 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 drawEquipment src/Dodge/Creature/Picture.hs 127;" f
drawExamineInventory src/Dodge/Render/HUD.hs 198;" f drawExamineInventory src/Dodge/Render/HUD.hs 198;" f
drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" 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 drawFlame src/Dodge/Flame/Draw.hs 8;" f
drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f
drawForceField src/Dodge/Wall/Draw.hs 11;" 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 drawMenuScreen src/Dodge/Render/MenuScreen.hs 14;" f
drawMouseCursor src/Dodge/Render/Picture.hs 85;" f drawMouseCursor src/Dodge/Render/Picture.hs 85;" f
drawMouseOver src/Dodge/Render/HUD.hs 109;" 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 drawOptions src/Dodge/Render/MenuScreen.hs 22;" f
drawPathBetween src/Dodge/Debug/Picture.hs 201;" f drawPathBetween src/Dodge/Debug/Picture.hs 201;" f
drawPathEdge src/Dodge/Debug/Picture.hs 266;" 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 drawPlus src/Dodge/Render/Picture.hs 165;" f
drawPointLabel src/Dodge/Render/Label.hs 13;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f
drawProjectile src/Dodge/Projectile/Draw.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 drawVerticalLampCover src/Dodge/Prop/Draw.hs 71;" f
drawWall src/Dodge/Wall/Draw.hs 7;" f drawWall src/Dodge/Wall/Draw.hs 7;" f
drawWallFace src/Dodge/Debug/Picture.hs 73;" 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 drawWallsNearCursor src/Dodge/Debug/Picture.hs 230;" f
drawWallsNearSegment src/Dodge/Debug/Picture.hs 130;" f drawWallsNearSegment src/Dodge/Debug/Picture.hs 130;" f
drawWallsNearYou src/Dodge/Debug/Picture.hs 221;" f drawWallsNearYou src/Dodge/Debug/Picture.hs 221;" f
drawWeapon src/Dodge/Creature/Volition.hs 15;" f drawWeapon src/Dodge/Creature/Volition.hs 15;" f
drawWlIDs src/Dodge/Debug/Picture.hs 391;" f drawWlIDs src/Dodge/Debug/Picture.hs 390;" f
drawZoneCirc src/Dodge/Debug/Picture.hs 299;" f drawZoneCirc src/Dodge/Debug/Picture.hs 298;" f
drawZoneCol src/Dodge/Debug/Picture.hs 149;" 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 dropAll src/Dodge/Creature/Update.hs 129;" f
dropInventoryPath src/Dodge/HeldUse.hs 1351;" f dropInventoryPath src/Dodge/HeldUse.hs 1351;" f
dropItem src/Dodge/Creature/Action.hs 154;" 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 ebFlicker src/Dodge/EnergyBall.hs 70;" f
ebtToDamage src/Dodge/EnergyBall.hs 93;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f
edgeFormatting src/Dodge/Combine/Graph.hs 129;" 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 effectOnEquip src/Dodge/Equipment.hs 32;" f
effectOnRemove src/Dodge/Equipment.hs 19;" f effectOnRemove src/Dodge/Equipment.hs 19;" f
eitType src/Dodge/Data/EquipType.hs 15;" 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 leftWristPQ src/Dodge/Creature/HandPos.hs 81;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 468;" f legsSPic src/Dodge/Item/Draw/SPic.hs 468;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f
lerpdr src/Dodge/DrWdWd.hs 53;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 111;" f liShape src/Dodge/Placement/Instance/LightSource.hs 111;" f
light src/Color.hs 104;" f light src/Color.hs 104;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 51;" 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 makeArc src/Picture/Base.hs 157;" f
makeAttach src/Dodge/Item/Attach.hs 10;" f makeAttach src/Dodge/Item/Attach.hs 10;" f
makeBlip src/Dodge/RadarSweep.hs 70;" 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 makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 979;" f makeBullet src/Dodge/HeldUse.hs 979;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" 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 makeColorTermLine src/Dodge/Terminal.hs 111;" f
makeColorTermPara src/Dodge/Terminal.hs 108;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 47;" f makeDebris src/Dodge/Block/Debris.hs 48;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 50;" f makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f
makeDoorDebris src/Dodge/Block/Debris.hs 25;" f makeDoorDebris src/Dodge/Block/Debris.hs 26;" f
makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f
makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 73;" 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 maxShowX src/Dodge/Combine/Graph.hs 48;" f
maxViewDistance src/Dodge/Viewpoints.hs 26;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f
maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f
maybeClearPath src/Dodge/Block.hs 68;" f maybeClearPath src/Dodge/Block.hs 73;" f
maybeClearPaths src/Dodge/Block.hs 65;" f maybeClearPaths src/Dodge/Block.hs 70;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f
maybeOpenConsole src/Dodge/Update.hs 129;" 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 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 16;" 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 plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 48;" f
plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f
plMachine' src/Dodge/Placement/PlaceSpot.hs 250;" 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 plNewUpID src/Dodge/Base/NewID.hs 13;" f
plNewUsing src/Dodge/Base/NewID.hs 27;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f
plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" 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 plTurret src/Dodge/Placement/PlaceSpot.hs 219;" f
placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 264;" 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 soundOriginIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f
soundOriginsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f soundOriginsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f
soundPathList src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 296;" 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 soundStart src/Dodge/SoundLogic.hs 118;" f
soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f
soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" 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 splashMenu src/Dodge/Menu.hs 33;" f
splashMenuOptions src/Dodge/Menu.hs 38;" f splashMenuOptions src/Dodge/Menu.hs 38;" f
splashScreen src/Dodge/Initialisation.hs 10;" 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 splitBezierquad src/Geometry/Bezier.hs 15;" f
splitExtra src/Justify.hs 21;" f splitExtra src/Justify.hs 21;" f
splitLookupTrie src/SimpleTrie.hs 39;" 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 unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f
unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f
unsafeSwapKeys src/IntMapHelp.hs 75;" 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 untilJust src/MonadHelp.hs 7;" f
untilJustCount src/MonadHelp.hs 14;" f untilJustCount src/MonadHelp.hs 14;" f
unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" 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 updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 577;" f updateDistortions src/Dodge/Update.hs 577;" f
updateDoor src/Dodge/DrWdWd.hs 20;" f updateDoor src/Dodge/DrWdWd.hs 20;" f
updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 74;" f updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 72;" f
updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 69;" f
updateDoors src/Dodge/Update.hs 328;" f updateDoors src/Dodge/Update.hs 328;" f
updateDust src/Dodge/Update.hs 841;" f updateDust src/Dodge/Update.hs 841;" f
updateDusts src/Dodge/Update.hs 691;" 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 verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f
verticalWire src/Dodge/Wire.hs 24;" f verticalWire src/Dodge/Wire.hs 24;" f
vgunMuzzles src/Dodge/HeldUse.hs 341;" f vgunMuzzles src/Dodge/HeldUse.hs 341;" f
viewBoundaries src/Dodge/Debug/Picture.hs 328;" f viewBoundaries src/Dodge/Debug/Picture.hs 327;" f
viewClipBounds src/Dodge/Debug/Picture.hs 337;" f viewClipBounds src/Dodge/Debug/Picture.hs 336;" f
viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f
viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f
violet src/Color.hs 21;" f violet src/Color.hs 21;" f