Work on airlocks

This commit is contained in:
2025-08-23 17:42:36 +01:00
parent f641805845
commit 32d7120177
19 changed files with 380 additions and 334 deletions
+4 -18
View File
@@ -1,27 +1,13 @@
Seed: 7114951007332849727 Seed: 7114951007332849727
Room layout (compact): Room layout (compact):
0,1,2,3 0,1,2,3
|
+- 4,5,6,7
|
8
Layout with room names: Layout with room names:
tutRezBox-0 Corridor-0
| |
autoDoor-1 6gon-1
| |
Corridor-2 defaultRoom-2
| |
doorToggle-6gon-3 autoRect-3
|
+- triggerDoorRoom-4
| |
| 6gon-5
| |
| triggerDoorRoom-6
| |
| 6gon-7
|
triggerDoorRoom-8
+1 -1
View File
@@ -1,4 +1,4 @@
Generating level with seed 7114951007332849727 Generating level with seed 7114951007332849727
After 1 attempt(s), Successful generation of level with seed 7114951007332849727 After 1 attempt(s), Successful generation of level with seed 7114951007332849727
9 rooms in total 4 rooms in total
+40 -22
View File
@@ -1,37 +1,55 @@
Seed: 7114951007332849727 Seed: 7114951007332849727
0:TutStartRez 0:teststart
| |
1:corDoor 1:TutDrop
| |
2:DoorTest 2:TutStartRez
| |
3:PickupTest 3:corDoor
| |
4:WeaponTestTest 4:DoorTest
0:0:TutStartRez
0:0:0:tutRezBox
1:0:corDoor
1:0:0:autoDoor
| |
1:0:1:Corridor 5:TutDrop
2:0:DoorTest 0:0:teststart
2:0:0:doorToggle-6gon 0:0:0:Corridor
1:0:TutDrop
1:0:0:6gon
| |
+- 2:0:1:triggerDoorRoom 1:0:1:defaultRoom
| |
2:0:2:triggerDoorRoom 1:0:2:autoRect
3:0:PickupTest 2:0:TutStartRez
3:0:0:6gon 2:0:0:tutRezBox
3:0:corDoor
3:0:0:autoDoor
| |
3:0:1:triggerDoorRoom 3:0:1:Corridor
4:0:6gon 4:0:DoorTest
4:0:0:doorToggle-6gon
|
+- 4:0:1:triggerDoorRoom
| |
| 4:0:2:autoRect
|
+- 4:0:3:triggerDoorRoom
| |
| 4:0:4:autoRect
|
4:0:5:Corridor
5:0:6gon
|
5:1:defaultRoom
|
5:2:autoRect
+1 -1
View File
File diff suppressed because one or more lines are too long
+5 -7
View File
@@ -110,8 +110,9 @@ data Room = Room
, _rmPos :: [RoomPos] , _rmPos :: [RoomPos]
, _rmPath :: S.Set (Point2, Point2) , _rmPath :: S.Set (Point2, Point2)
, _rmPmnts :: [Placement] , _rmPmnts :: [Placement]
, _rmInPmnt :: [InPlacement] , _rmInPmnt :: [InPlacement]
, _rmOutPmnt :: [OutPlacement] -- note that in placements form a list: multiple InPlacements can use the same id
, _rmOutPmnt :: IM.IntMap Placement
, _rmBound :: [[Point2]] , _rmBound :: [[Point2]]
, _rmFloor :: Floor , _rmFloor :: Floor
, _rmName :: String , _rmName :: String
@@ -128,13 +129,10 @@ data Room = Room
, _rmClusterStatus :: ClusterStatus , _rmClusterStatus :: ClusterStatus
} }
data OutPlacement = OutPlacement --data OutPlacement = OutPlacement { _opPlacement :: Placement }
{ _opPlacement :: Placement
, _opPlacementID :: Int
}
data InPlacement = InPlacement data InPlacement = InPlacement
{ _ipPlacement :: [Placement] -> Placement { _ipPlacement :: World -> [Placement] -> Placement
, _ipPlacementID :: Int , _ipPlacementID :: Int
} }
+2 -1
View File
@@ -79,7 +79,8 @@ defaultDirtWall =
} }
dirtColor :: Color dirtColor :: Color
dirtColor = V4 (150 / 256) (75 / 256) 0 (250 / 256) dirtColor = dark $ dark orange
--dirtColor = V4 (150 / 256) (75 / 256) 0 (250 / 256)
defaultWindow :: Wall defaultWindow :: Wall
defaultWindow = defaultWindow =
+3 -3
View File
@@ -97,7 +97,7 @@ doInPlacements (im, w) =
doRoomInPlacements :: IM.IntMap [Placement] -> GenWorld -> Room -> (GenWorld, Room) doRoomInPlacements :: IM.IntMap [Placement] -> GenWorld -> Room -> (GenWorld, Room)
doRoomInPlacements im w rm = foldr f (w, rm) $ _rmInPmnt rm doRoomInPlacements im w rm = foldr f (w, rm) $ _rmInPmnt rm
where where
f (InPlacement plf i) (w', r') = fst $ placeSpot (w', r') (plf $ im IM.! i) f (InPlacement plf i) (w', r') = fst $ placeSpot (w', r') (plf (w' ^. gwWorld) $ im IM.! i)
doOutPlacements :: GenWorld -> (IM.IntMap [Placement], GenWorld) doOutPlacements :: GenWorld -> (IM.IntMap [Placement], GenWorld)
doOutPlacements w = doOutPlacements w =
@@ -108,9 +108,9 @@ doRoomOutPlacements ::
(IM.IntMap [Placement], GenWorld) -> (IM.IntMap [Placement], GenWorld) ->
Room -> Room ->
((IM.IntMap [Placement], GenWorld), Room) ((IM.IntMap [Placement], GenWorld), Room)
doRoomOutPlacements imw r = foldr f (imw, r) $ _rmOutPmnt r doRoomOutPlacements imw r = foldr f (imw, r) $ IM.toList $ _rmOutPmnt r
where where
f (OutPlacement pl i) ((im, w), rm) = f (i, pl) ((im, w), rm) =
let ((neww, newrm), plmnts) = placeSpot (w, rm) pl let ((neww, newrm), plmnts) = placeSpot (w, rm) pl
in ((IM.insert i plmnts im, neww), newrm) in ((IM.insert i plmnts im, neww), newrm)
+2 -1
View File
@@ -26,7 +26,8 @@ import NewInt
import System.Random import System.Random
-- when placing a placement, we update the world and the room and assign an id -- when placing a placement, we update the world and the room and assign an id
-- to the placement -- to the placement. This id should be associated with the type of placement and
-- match up with the created id for the object (creature id, flitid id, etc)
placeSpot :: (GenWorld, Room) -> Placement -> ((GenWorld, Room), [Placement]) placeSpot :: (GenWorld, Room) -> Placement -> ((GenWorld, Room), [Placement])
placeSpot (w, rm) plmnt = case plmnt of placeSpot (w, rm) plmnt = case plmnt of
Placement{_plSpot = PSRoomRand i f} -> placeSpotRoomRand rm i f plmnt w Placement{_plSpot = PSRoomRand i f} -> placeSpotRoomRand rm i f plmnt w
+120 -110
View File
@@ -1,52 +1,51 @@
--{-# LANGUAGE LambdaCase #-} --{-# LANGUAGE LambdaCase #-}
module Dodge.PlacementSpot module Dodge.PlacementSpot (
( atFstLnkOut atFstLnkOut,
, atNthLnkOutShiftBy atNthLnkOutShiftBy,
, rpIsOnPath rpIsOnPath,
, rpIsOffPath rpIsOffPath,
, rpOffPathFromEdge rpOffPathFromEdge,
, rpOnPathFromEdge rpOnPathFromEdge,
, useUnusedLnk useUnusedLnk,
, psRandRanges psRandRanges,
, useRoomPosCond useRoomPosCond,
, isUsedLnkUnplaced isUsedLnkUnplaced,
, anyUnusedSpot anyUnusedSpot,
, unusedSpotAwayFromLink unusedSpotAwayFromLink,
, isUnusedLnk isUnusedLnk,
, isInLnk isInLnk,
, isOutLnk isOutLnk,
, unusedSpotNearInLink unusedSpotNearInLink,
, randDirPS randDirPS,
, unusedSpotAwayFromInLink unusedSpotAwayFromInLink,
, useLnkRoomPos useLnkRoomPos,
, atFstLnkOutShiftInward atFstLnkOutShiftInward,
, atFstLnkOutShiftBy atFstLnkOutShiftBy,
, atNthLnkOutShiftInward atNthLnkOutShiftInward,
, unusedOffPathAwayFromLink unusedOffPathAwayFromLink,
, setFallback setFallback,
, twoRoomPoss twoRoomPoss,
, isUnusedLnkType isUnusedLnkType,
, rprBoolShift rprBoolShift,
, rprShift rprShift,
, rprBool rprBool,
, shiftInBy shiftInBy,
, resetPLUse resetPLUse,
, psposAddLabel psposAddLabel,
, shiftByV2 shiftByV2,
, usedRoomLinkPoss usedRoomLinkPoss,
, usedRoomInLinkPoss usedRoomInLinkPoss,
, atNthLinkOut atNthLinkOut,
) where ) where
import Dodge.Data.GenWorld
import Geometry
import Control.Lens import Control.Lens
import Data.Maybe
import Data.Bifunctor
import Control.Monad.State import Control.Monad.State
import System.Random import Data.Bifunctor
import Data.Maybe
import qualified Data.Set as S import qualified Data.Set as S
import Dodge.Data.GenWorld
import Geometry
import System.Random
setDirPS :: Float -> PlacementSpot -> PlacementSpot setDirPS :: Float -> PlacementSpot -> PlacementSpot
setDirPS a ps = case ps of setDirPS a ps = case ps of
@@ -57,16 +56,16 @@ setDirPS a ps = case ps of
randDirPS :: RandomGen g => PlacementSpot -> State g PlacementSpot randDirPS :: RandomGen g => PlacementSpot -> State g PlacementSpot
randDirPS ps = do randDirPS ps = do
a <- state $ randomR (0,pi*2) a <- state $ randomR (0, pi * 2)
return $ setDirPS a ps return $ setDirPS a ps
isUnusedLnk :: RoomPos -> Room -> Bool isUnusedLnk :: RoomPos -> Room -> Bool
isUnusedLnk rp _ = case _rpLinkStatus rp of isUnusedLnk rp _ = case _rpLinkStatus rp of
UnusedLink {} -> _rpPlacementUse rp == 0 UnusedLink{} -> _rpPlacementUse rp == 0
_ -> False _ -> False
anyUnusedSpot :: PlacementSpot anyUnusedSpot :: PlacementSpot
anyUnusedSpot = rprBool $ \rp _ -> _rpLinkStatus rp == NotLink && _rpPlacementUse rp == 0 anyUnusedSpot = rprBool $ \rp _ -> _rpLinkStatus rp == NotLink && _rpPlacementUse rp == 0
psposAddLabel :: RoomPosType -> PlacementSpot -> PlacementSpot psposAddLabel :: RoomPosType -> PlacementSpot -> PlacementSpot
psposAddLabel lab = psSelect %~ (\f rp r -> f rp r & _Just . _2 . rpType %~ S.insert lab) psposAddLabel lab = psSelect %~ (\f rp r -> f rp r & _Just . _2 . rpType %~ S.insert lab)
@@ -77,23 +76,25 @@ rprBool t = PSPos (useRoomPosRoomCond t) (const id) Nothing
rpIsOnPath :: RoomPos -> Bool rpIsOnPath :: RoomPos -> Bool
rpIsOnPath = any f . _rpType rpIsOnPath = any f . _rpType
where where
f RoomPosOnPath {} = True f RoomPosOnPath{} = True
f _ = False f _ = False
rpIsOffPath :: RoomPos -> Bool rpIsOffPath :: RoomPos -> Bool
rpIsOffPath = any f . _rpType rpIsOffPath = any f . _rpType
where where
f RoomPosOffPath {} = True f RoomPosOffPath{} = True
f _ = False f _ = False
rpOffPathFromEdge :: PathFromEdge -> RoomPos -> Bool rpOffPathFromEdge :: PathFromEdge -> RoomPos -> Bool
rpOffPathFromEdge pe = any f . _rpType rpOffPathFromEdge pe = any f . _rpType
where where
f rt = maybe False (pe `elem`) (rt ^? offPathFromEdges) f rt = maybe False (pe `elem`) (rt ^? offPathFromEdges)
-- test whether a roomPos is on the path with a given from edge value -- test whether a roomPos is on the path with a given from edge value
rpOnPathFromEdge :: PathFromEdge -> RoomPos -> Bool rpOnPathFromEdge :: PathFromEdge -> RoomPos -> Bool
rpOnPathFromEdge pe = any f . _rpType rpOnPathFromEdge pe = any f . _rpType
where where
f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges) f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges)
resetPLUse :: PlacementSpot -> PlacementSpot resetPLUse :: PlacementSpot -> PlacementSpot
resetPLUse (PSPos f g fallback) = PSPos f' g fallback resetPLUse (PSPos f g fallback) = PSPos f' g fallback
@@ -101,58 +102,64 @@ resetPLUse (PSPos f g fallback) = PSPos f' g fallback
f' rp = fmap (second (rpPlacementUse .~ 0)) . f rp f' rp = fmap (second (rpPlacementUse .~ 0)) . f rp
resetPLUse _ = error "Tried to reset _rpPlacementUse of non PSPos placement" resetPLUse _ = error "Tried to reset _rpPlacementUse of non PSPos placement"
rprShift rprShift ::
:: (RoomPos -> Room -> Maybe (Point2,Float)) (RoomPos -> Room -> Maybe (Point2, Float)) ->
-> PlacementSpot PlacementSpot
rprShift t = PSPos f (const id) Nothing rprShift t = PSPos f (const id) Nothing
where where
f rp r = case t rp r of f rp r = case t rp r of
Just (p,a) -> Just (PS p a, rp & rpPlacementUse +~ 1) Just (p, a) -> Just (PS p a, rp & rpPlacementUse +~ 1)
Nothing -> Nothing Nothing -> Nothing
rprBoolShift :: (RoomPos -> Room -> Bool) rprBoolShift ::
-> ((Point2,Float) -> (Point2,Float)) (RoomPos -> Room -> Bool) ->
-> PlacementSpot ((Point2, Float) -> (Point2, Float)) ->
PlacementSpot
rprBoolShift t shift = PSPos f (const id) Nothing rprBoolShift t shift = PSPos f (const id) Nothing
where where
f rp r f rp r
| t rp r = Just (PS p a, rp & rpPlacementUse +~ 1) | t rp r = Just (PS p a, rp & rpPlacementUse +~ 1)
| otherwise = Nothing | otherwise = Nothing
where where
(p,a) = shift (_rpPos rp, _rpDir rp) (p, a) = shift (_rpPos rp, _rpDir rp)
unusedSpotAwayFromLink :: Float -> PlacementSpot unusedSpotAwayFromLink :: Float -> PlacementSpot
unusedSpotAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink unusedSpotAwayFromLink x = rprBool $ \rp r ->
&& _rpPlacementUse rp == 0 _rpLinkStatus rp == NotLink
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r) && _rpPlacementUse rp == 0
&& all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r)
setFallback :: Placement -> Placement -> Placement setFallback :: Placement -> Placement -> Placement
setFallback fallback setFallback fallback =
= (plSpot . psFallback %~ maybe (Just fallback) Just) (plSpot . psFallback %~ maybe (Just fallback) Just)
. (plIDCont %~ fmap (fmap (fmap $ setFallback fallback)) . ( plIDCont %~ fmap (fmap (fmap $ setFallback fallback))
) )
unusedOffPathAwayFromLink :: Float -> PlacementSpot unusedOffPathAwayFromLink :: Float -> PlacementSpot
--unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink --unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpPlacementUse rp == 0 unusedOffPathAwayFromLink x = rprBool $ \rp r ->
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r) _rpPlacementUse rp == 0
&& rpIsOffPath rp && all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r)
&& rpIsOffPath rp
unusedSpotAwayFromInLink :: Float -> PlacementSpot unusedSpotAwayFromInLink :: Float -> PlacementSpot
unusedSpotAwayFromInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink unusedSpotAwayFromInLink x = rprBool $ \rp r ->
&& _rpPlacementUse rp == 0 _rpLinkStatus rp == NotLink
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomInLinkPoss r) && _rpPlacementUse rp == 0
&& all ((> x) . dist (_rpPos rp)) (usedRoomInLinkPoss r)
--twoUnusedLinks :: (PlacementSpot -> PlacementSpot -> Placement) -> Placement --twoUnusedLinks :: (PlacementSpot -> PlacementSpot -> Placement) -> Placement
--twoUnusedLinks = twoRoomPoss isUnusedLnk isUnusedLnk --twoUnusedLinks = twoRoomPoss isUnusedLnk isUnusedLnk
twoRoomPoss :: (RoomPos -> Room -> Bool) twoRoomPoss ::
-> (RoomPos -> Room -> Bool) (RoomPos -> Room -> Bool) ->
-> (PlacementSpot -> PlacementSpot -> Placement) (RoomPos -> Room -> Bool) ->
-> Placement (PlacementSpot -> PlacementSpot -> Placement) ->
twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing Placement
$ \_ pl1 -> Just $ Placement 10 (rprBool cond2) PutNothing Nothing twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing $
$ \_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2) \_ pl1 -> Just $
Placement 10 (rprBool cond2) PutNothing Nothing $
\_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2)
--isUnusedLnk :: RoomPos -> Bool --isUnusedLnk :: RoomPos -> Bool
--isUnusedLnk rp = case _rpLinkStatus rp of --isUnusedLnk rp = case _rpLinkStatus rp of
@@ -161,26 +168,27 @@ twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing
isInLnk :: RoomPos -> Bool isInLnk :: RoomPos -> Bool
isInLnk rp = case _rpLinkStatus rp of isInLnk rp = case _rpLinkStatus rp of
UsedInLink {} -> _rpPlacementUse rp == 0 UsedInLink{} -> _rpPlacementUse rp == 0
_ -> False _ -> False
isOutLnk :: RoomPos -> Bool isOutLnk :: RoomPos -> Bool
isOutLnk rp = case _rpLinkStatus rp of isOutLnk rp = case _rpLinkStatus rp of
UsedOutLink {} -> _rpPlacementUse rp == 0 UsedOutLink{} -> _rpPlacementUse rp == 0
_ -> False _ -> False
useUnusedLnk :: PlacementSpot useUnusedLnk :: PlacementSpot
useUnusedLnk = rprBool isUnusedLnk useUnusedLnk = rprBool isUnusedLnk
isUsedLnkUnplaced :: RoomPos -> Bool isUsedLnkUnplaced :: RoomPos -> Bool
isUsedLnkUnplaced rp = case _rpLinkStatus rp of isUsedLnkUnplaced rp = case _rpLinkStatus rp of
UsedOutLink {} -> _rpPlacementUse rp == 0 UsedOutLink{} -> _rpPlacementUse rp == 0
UsedInLink {} -> _rpPlacementUse rp == 0 UsedInLink{} -> _rpPlacementUse rp == 0
_ -> False _ -> False
useRoomPosCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) useRoomPosCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot, RoomPos)
useRoomPosCond f = useRoomPosRoomCond $ \rp r -> f rp r useRoomPosCond f = useRoomPosRoomCond $ \rp r -> f rp r
useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot, RoomPos)
useRoomPosRoomCond t rp r useRoomPosRoomCond t rp r
| t rp r = Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1) | t rp r = Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1)
| otherwise = Nothing | otherwise = Nothing
@@ -191,23 +199,24 @@ isUnusedLnkType rlt rp _ = case _rpLinkStatus rp of
_ -> False _ -> False
unusedSpotNearInLink :: Float -> PlacementSpot unusedSpotNearInLink :: Float -> PlacementSpot
unusedSpotNearInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink unusedSpotNearInLink x = rprBool $ \rp r ->
&& _rpPlacementUse rp == 0 _rpLinkStatus rp == NotLink
&& any ( (<x) . dist (_rpPos rp) ) (usedRoomInLinkPoss r) && _rpPlacementUse rp == 0
&& any ((< x) . dist (_rpPos rp)) (usedRoomInLinkPoss r)
usedRoomInLinkPoss :: Room -> [Point2] usedRoomInLinkPoss :: Room -> [Point2]
usedRoomInLinkPoss r = mapMaybe f $ _rmPos r usedRoomInLinkPoss r = mapMaybe f $ _rmPos r
where where
f rp = case _rpLinkStatus rp of f rp = case _rpLinkStatus rp of
UsedInLink {} -> Just $ _rpPos rp UsedInLink{} -> Just $ _rpPos rp
_ -> Nothing _ -> Nothing
usedRoomLinkPoss :: Room -> [Point2] usedRoomLinkPoss :: Room -> [Point2]
usedRoomLinkPoss r = mapMaybe f $ _rmPos r usedRoomLinkPoss r = mapMaybe f $ _rmPos r
where where
f rp = case _rpLinkStatus rp of f rp = case _rpLinkStatus rp of
UsedInLink {} -> Just $ _rpPos rp UsedInLink{} -> Just $ _rpPos rp
UsedOutLink {} -> Just $ _rpPos rp UsedOutLink{} -> Just $ _rpPos rp
_ -> Nothing _ -> Nothing
atFstLnkOut :: PlacementSpot atFstLnkOut :: PlacementSpot
@@ -216,44 +225,45 @@ atFstLnkOut = atNthLinkOut 0
atNthLinkOut :: Int -> PlacementSpot atNthLinkOut :: Int -> PlacementSpot
atNthLinkOut n = rprBool $ \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n atNthLinkOut n = rprBool $ \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n
atNthLnkOutShiftBy :: Int -> ((Point2,Float) -> (Point2,Float)) -> PlacementSpot atNthLnkOutShiftBy :: Int -> ((Point2, Float) -> (Point2, Float)) -> PlacementSpot
atNthLnkOutShiftBy n = rprBoolShift atNthLnkOutShiftBy n = rprBoolShift $
$ \ rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n
--atNthLnkOutShiftBy n theshift = PSPos f (const id) Nothing --atNthLnkOutShiftBy n theshift = PSPos f (const id) Nothing
-- where -- where
-- f rp _ = case _rpLinkStatus rp of -- f rp _ = case _rpLinkStatus rp of
-- UsedOutLink {_rplsChildNum = i} | i == n -- UsedOutLink {_rplsChildNum = i} | i == n
-- -> Just (PS p a, rp & rpPlacementUse +~ 1) -- -> Just (PS p a, rp & rpPlacementUse +~ 1)
-- _ -> Nothing -- _ -> Nothing
-- where -- where
-- (p,a) = theshift (_rpPos rp,_rpDir rp) -- (p,a) = theshift (_rpPos rp,_rpDir rp)
atFstLnkOutShiftBy :: ((Point2,Float) -> (Point2,Float)) -> PlacementSpot atFstLnkOutShiftBy :: ((Point2, Float) -> (Point2, Float)) -> PlacementSpot
atFstLnkOutShiftBy = atNthLnkOutShiftBy 0 atFstLnkOutShiftBy = atNthLnkOutShiftBy 0
atFstLnkOutShiftInward :: Float -> PlacementSpot atFstLnkOutShiftInward :: Float -> PlacementSpot
atFstLnkOutShiftInward = atNthLnkOutShiftInward 0 atFstLnkOutShiftInward = atNthLnkOutShiftInward 0
atNthLnkOutShiftInward :: Int -> Float -> PlacementSpot atNthLnkOutShiftInward :: Int -> Float -> PlacementSpot
atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n $
$ \ (p,a) -> (p +.+ rotateV a (V2 0 (negate x)),a) \(p, a) -> (p +.+ rotateV a (V2 0 (negate x)), a)
shiftInBy :: Float -> (Point2,Float) -> (Point2,Float) shiftInBy :: Float -> (Point2, Float) -> (Point2, Float)
shiftInBy x (p,a) = (p +.+ rotateV a (V2 0 (negate x)),a) shiftInBy x (p, a) = (p +.+ rotateV a (V2 0 (negate x)), a)
shiftByV2 :: Point2 -> (Point2,Float) -> (Point2,Float) shiftByV2 :: Point2 -> (Point2, Float) -> (Point2, Float)
shiftByV2 x (p,a) = (p +.+ rotateV a x,a) shiftByV2 x (p, a) = (p +.+ rotateV a x, a)
-- this should probably check the placement use, but so should others: should -- this should probably check the placement use, but so should others: should
-- unify these -- unify these
useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot, RoomPos)
useLnkRoomPos rp _ = case _rpLinkStatus rp of useLnkRoomPos rp _ = case _rpLinkStatus rp of
UnusedLink {} -> Just (PS (_rpPos rp) (_rpDir rp) , rp & rpPlacementUse +~ 1) UnusedLink{} -> Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1)
_ -> Nothing _ -> Nothing
psRandRanges :: (Float,Float) -> (Float,Float) -> (Float,Float) -> State StdGen (Point2,Float) psRandRanges :: (Float, Float) -> (Float, Float) -> (Float, Float) -> State StdGen (Point2, Float)
psRandRanges xranges yranges aranges = do psRandRanges xranges yranges aranges = do
x <- state $ randomR xranges x <- state $ randomR xranges
y <- state $ randomR yranges y <- state $ randomR yranges
a <- state $ randomR aranges a <- state $ randomR aranges
return (V2 x y,a) return (V2 x y, a)
+26 -1
View File
@@ -3,6 +3,7 @@
{- Rooms that contain two doors and a switch alternating both. -} {- Rooms that contain two doors and a switch alternating both. -}
module Dodge.Room.Airlock where module Dodge.Room.Airlock where
import Dodge.Annotation.Data
import Dodge.Data.GenWorld import Dodge.Data.GenWorld
import Dodge.Default.Door import Dodge.Default.Door
import Dodge.Default.Room import Dodge.Default.Room
@@ -14,12 +15,36 @@ import Dodge.RoomLink
import Geometry import Geometry
import Picture import Picture
import RandomHelp import RandomHelp
import Control.Lens
-- | A passage with a switch that opens forward access while closing backwards access. -- | A passage with a switch that opens forward access while closing backwards access.
airlock :: RandomGen g => State g Room airlock :: RandomGen g => State g Room
airlock = takeOne [airlock0, airlock90, airlockCrystal, airlockZ] airlock = takeOne [airlock0, airlock90, airlockCrystal, airlockZ]
--airlock = takeOne [airlockCrystal] --airlock = takeOne [airlockCrystal]
decontamRoom :: State LayoutVars Room
decontamRoom = do
return $ defaultRoom
& rmPolys .~ [rectNSWE 100 0 0 40, switchcut]
& rmLinks .~ muout lnks ++ muin [last lnks]
& rmPath .~ foldMap doublePairSet [(V2 20 95, V2 20 45), (V2 20 45, V2 20 5)]
& 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
, invisibleWall $ rectNSWE 60 40 (-40) (-30)
, spanLightI (V2 (-2) 30) (V2 (-2) 70)
]
& rmBound .~ [rectNSWE 75 15 0 40, switchcut]
where
thewall = switchWallCol col
switchcut = rectNSWE 65 35 (-40) 80
lnks =
[ (V2 20 95, 0)
, (V2 20 5, pi)
]
col = dim $ dim $ bright red
-- | Straight airlock -- | Straight airlock
airlock0 :: Room airlock0 :: Room
@@ -124,7 +149,7 @@ airlock90 =
defaultRoom defaultRoom
{ _rmPolys = { _rmPolys =
[ rectNSWE 100 10 10 100 [ rectNSWE 100 10 10 100
, rectNSWE 20 0 20 60 , rectNSWE 20 (-0.1) 20 60
, rectNSWE 20 60 20 0 , rectNSWE 20 60 20 0
, map , map
toV2 toV2
+2 -2
View File
@@ -39,6 +39,6 @@ triggerDoorRoom inplid =
-- note no bounds -- note no bounds
} }
where where
f (pmnt : _) = putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2 f _ (pmnt : _) = putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2
f _ = error "tried to put a door using an empty placement list" f _ _ = error "tried to put a door using an empty placement list"
cond pmnt = WdTrig $ fromJust (_plMID pmnt) cond pmnt = WdTrig $ fromJust (_plMID pmnt)
+7 -9
View File
@@ -35,24 +35,24 @@ cenLasTur =
covershape = rectNSWE 10 (-10) (-20) 20 covershape = rectNSWE 10 (-10) (-20) 20
lightSensInsideDoor :: Int -> Room -> Room lightSensInsideDoor :: Int -> Room -> Room
lightSensInsideDoor outplid rm = lightSensInsideDoor i rm =
rm rm
& rmPmnts & rmPmnts
.++~ [ psPt atFstLnkOut (PutForeground $ floorWire (V2 20 0) (V2 20 (-100))) .++~ [ psPt atFstLnkOut (PutForeground $ floorWire (V2 20 0) (V2 20 (-100)))
, psPt atFstLnkOut (PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100))) , psPt atFstLnkOut (PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100)))
, psPt atFstLnkOut (PutForeground $ verticalWire (V2 20 0) 0 80) , psPt atFstLnkOut (PutForeground $ verticalWire (V2 20 0) 0 80)
] ]
& rmOutPmnt .~ [OutPlacement (sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100)) outplid] & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100))
lightSensByDoor :: Int -> Room -> Room lightSensByDoor :: Int -> Room -> Room
lightSensByDoor outplid rm = lightSensByDoor i rm =
rm rm
& rmPmnts & rmPmnts
.++~ [ psPt atFstLnkOut $ PutForeground $ verticalWire (V2 20 0) 0 80 .++~ [ psPt atFstLnkOut $ PutForeground $ verticalWire (V2 20 0) 0 80
, heightWallPS (atNthLnkOutShiftInward 1 100) 30 covershape , heightWallPS (atNthLnkOutShiftInward 1 100) 30 covershape
, heightWallPS (atFstLnkOutShiftInward 100) 30 covershape , heightWallPS (atFstLnkOutShiftInward 100) 30 covershape
] ]
& rmOutPmnt .~ [OutPlacement (sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift)) outplid] & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift))
where where
covershape = rectNSWE 10 (-10) (-20) 20 covershape = rectNSWE 10 (-10) (-20) 20
sensorshift (p, a) = (p +.+ rotateV a (V2 60 (-20)), a) sensorshift (p, a) = (p +.+ rotateV a (V2 60 (-20)), a)
@@ -76,21 +76,19 @@ healthAnalyserByDoor :: Int -> Room -> Room
healthAnalyserByDoor = analyserByDoor (RequireHealth 1100) healthAnalyserByDoor = analyserByDoor (RequireHealth 1100)
analyserByNthLink :: Int -> ProximityRequirement -> Int -> Room -> Room analyserByNthLink :: Int -> ProximityRequirement -> Int -> Room -> Room
analyserByNthLink n proxreq outplid rm = analyserByNthLink n proxreq i rm =
rm rm
& rmPmnts & rmPmnts
.++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80 .++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80
] ]
& rmOutPmnt & rmOutPmnt . at i ?~
.:~ OutPlacement
( analyser ( analyser
proxreq proxreq
(atNthLnkOutShiftBy n (\(p, a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) (atNthLnkOutShiftBy n (\(p, a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
(atNthLnkOutShiftBy n sensorshift) (atNthLnkOutShiftBy n sensorshift)
) )
outplid
where where
sensorshift (p, a) = (p +.+ rotateV a (V2 30 (-10)), a) sensorshift (p, a) = (p +.+ rotateV a (V2 (-30) (-10)), a)
analyserByDoor :: ProximityRequirement -> Int -> Room -> Room analyserByDoor :: ProximityRequirement -> Int -> Room -> Room
analyserByDoor = analyserByNthLink 0 analyserByDoor = analyserByNthLink 0
+1 -1
View File
@@ -61,7 +61,7 @@ longBlockedCorridor maxn = do
n <- state $ randomR (0, maxn) n <- state $ randomR (0, maxn)
let plmnts = let plmnts =
[ sPS (V2 20 40) r $ dirtPoly $ square 10 [ sPS (V2 20 40) r $ dirtPoly $ square 10
, sPS (V2 20 15) 0 putLamp -- , sPS (V2 20 15) 0 putLamp
] ]
sequence $ sequence $
treeFromPost (replicate n $ shuffleLinks corridor) $ treeFromPost (replicate n $ shuffleLinks corridor) $
+2 -1
View File
@@ -2,6 +2,7 @@ module Dodge.Room.RunPast (
lockedStart, lockedStart,
) where ) where
import qualified Data.IntMap.Strict as IM
import Color import Color
import qualified Data.Set as S import qualified Data.Set as S
import Dodge.Cleat import Dodge.Cleat
@@ -50,7 +51,7 @@ lockedStart i = do
map (over root $ rmConnectsTo .~ S.member theedge) doorrooms map (over root $ rmConnectsTo .~ S.member theedge) doorrooms
++ [ return ++ [ return
smallRoom smallRoom
{ _rmOutPmnt = [OutPlacement (putLitButOnPosExtTrig red useUnusedLnk) i] { _rmOutPmnt = IM.singleton i (putLitButOnPosExtTrig red useUnusedLnk)
, _rmPmnts = [plRRpt 0 (PutFlIt theweapon)] , _rmPmnts = [plRRpt 0 (PutFlIt theweapon)]
, _rmBound = [rectNSWE 70 30 0 40] , _rmBound = [rectNSWE 70 30 0 40]
} }
+2 -2
View File
@@ -56,7 +56,7 @@ sensAboveDoor sensetype wth ps =
(\tp -> Just $ damageSensor sensetype wth (_plMID tp) ps) (\tp -> Just $ damageSensor sensetype wth (_plMID tp) ps)
sensInsideDoor :: SensorType -> Int -> Room -> Room sensInsideDoor :: SensorType -> Int -> Room -> Room
sensInsideDoor senseType outplid rm = rm sensInsideDoor senseType i rm = rm
& rmName .++~ take 4 (show senseType) & rmName .++~ take 4 (show senseType)
& rmPmnts & rmPmnts
.++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100)) .++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100))
@@ -66,4 +66,4 @@ sensInsideDoor senseType outplid rm = rm
(textTerminal & tmCommands .:~ TCDamageCommand) (textTerminal & tmCommands .:~ TCDamageCommand)
& plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10) & plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10)
] ]
& rmOutPmnt .~ [OutPlacement (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) outplid] & rmOutPmnt . at i ?~ (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100))
+21 -19
View File
@@ -1,5 +1,9 @@
module Dodge.Room.Tutorial (tutAnoTree) where module Dodge.Room.Tutorial (tutAnoTree) where
import Dodge.Room.Corridor
import Dodge.Room.Airlock
import Dodge.Room.RoadBlock
import Dodge.Room.Room
import Dodge.Item.Held.Cane import Dodge.Item.Held.Cane
import Dodge.Item.Ammo import Dodge.Item.Ammo
import Dodge.Annotation.Data import Dodge.Annotation.Data
@@ -22,7 +26,6 @@ import Dodge.Room.Ngon
--import Dodge.Room.Link --import Dodge.Room.Link
import Dodge.Room.Procedural import Dodge.Room.Procedural
import Dodge.Room.RezBox import Dodge.Room.RezBox
import Dodge.Room.Room
import Dodge.Room.Warning import Dodge.Room.Warning
--import Dodge.Room.RoadBlock --import Dodge.Room.RoadBlock
import Dodge.RoomLink import Dodge.RoomLink
@@ -40,25 +43,21 @@ import TreeHelp
tutAnoTree :: Annotation tutAnoTree :: Annotation
tutAnoTree = tutAnoTree =
OnwardList $ OnwardList $
[ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor
, AnTree $ tutDrop
, AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, AnTree corDoor , AnTree corDoor
, AnTree $ tutRooms , AnTree $ tutRooms
, AnTree $ pickupTut , AnTree $ tutDrop
, AnTree $ weaponTut -- , AnTree $ pickupTut
-- , AnTree $ weaponTut
] ]
weaponTut :: State LayoutVars (MetaTree Room String) tutDrop :: State LayoutVars (MetaTree Room String)
weaponTut = do tutDrop = do
x <- shuffleLinks $ roomNgon 6 100 x <- shuffleLinks $ roomNgon 6 100
& rmPmnts .:~ sps (PS 0 0) (PutFlIt $ burstRifle) y <- decontamRoom
return $ tToBTree "WeaponTestTest" $ treePost $ [x] return $ tToBTree "TutDrop" $ treePost [x,y,roomRectAutoLinks 40 100]
pickupTut :: State LayoutVars (MetaTree Room String)
pickupTut = do
i <- nextLayoutInt
x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i $ roomNgon 6 100
& rmPmnts .:~ sps (PS 0 0) (PutFlIt $ drumMag & itConsumables ?~ 100)
return $ tToBTree "PickupTest" $ treePost $ [x, cleatOnward $ triggerDoorRoom i]
tutRooms :: State LayoutVars (MetaTree Room String) tutRooms :: State LayoutVars (MetaTree Room String)
tutRooms = do tutRooms = do
@@ -67,12 +66,15 @@ tutRooms = do
x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
$ addDoorAtNthLinkToggleTerminal 1 (makeTermPara s) j $ addDoorAtNthLinkToggleTerminal 1 (makeTermPara s) j
$ roomNgon 6 100 $ roomNgon 6 100
bcor <- blockedCorridor
return $ tToBTree "DoorTest" $ Node x return $ tToBTree "DoorTest" $ Node x
[Node (cleatOnward $ triggerDoorRoom i) [] [treeFromPost [triggerDoorRoom i] (r burstRifle)
,Node ( triggerDoorRoom j) [] ,treeFromPost [triggerDoorRoom j] (r (drumMag & itConsumables ?~ 100))
,bcor
] ]
where where
s = "INTERACTION TEST 1: USE KEYBOARD OR SCROLL TO ENTER COMMANDS." s = "INTERACTION TEST: USE KEYBOARD OR SCROLL TO ENTER COMMANDS."
r x = roomRectAutoLinks 100 100 & rmPmnts .:~ sps (PS 50 0) (PutFlIt x)
tutRezBox :: RandomGen g => State g Room tutRezBox :: RandomGen g => State g Room
tutRezBox = do tutRezBox = do
@@ -91,4 +93,4 @@ tutRezBox = do
s = tutorialMessage1 s = tutorialMessage1
tutorialMessage1 :: String tutorialMessage1 :: String
tutorialMessage1 = "SYNTHESIS SUCCESSFUL. MOVEMENT TEST 1 INITIATED [WASD]. INTERACTION TEST 1 IN QUEUE [SPACE]." tutorialMessage1 = "SYNTHESIS SUCCESSFUL. MOBILITY TEST INITIATED [WASD]. INTERACTION TEST IN QUEUE [SPACE]."
+1 -1
View File
@@ -36,7 +36,7 @@ addDoorToggleTerminal = addDoorAtNthLinkToggleTerminal 0
addDoorAtNthLinkToggleTerminal :: Int -> [TerminalLine] -> Int -> Room -> Room addDoorAtNthLinkToggleTerminal :: Int -> [TerminalLine] -> Int -> Room -> Room
addDoorAtNthLinkToggleTerminal j xs i = (rmName .++~ "doorToggle-") addDoorAtNthLinkToggleTerminal j xs i = (rmName .++~ "doorToggle-")
. (rmOutPmnt .:~ OutPlacement outplace i) . (rmOutPmnt . at i ?~ outplace)
where where
outplace = outplace =
extTrigLitPos extTrigLitPos
+14 -7
View File
@@ -16,6 +16,7 @@ module Dodge.Terminal (
tlDoEffect, tlDoEffect,
) where ) where
import Dodge.Item.Display
import Color import Color
import Data.Char import Data.Char
import qualified Data.List as List import qualified Data.List as List
@@ -59,11 +60,12 @@ getCommand :: World
getCommand w tm = \case getCommand w tm = \case
TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z)) TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z))
TCBase -> quitCommand <> toggleCommands tm TCBase -> quitCommand <> toggleCommands tm
TCDamageCommand -> damageCodeCommand w TCDamageCommand -> damageCodeCommand w tm
TCSensorInfo -> sensorCommand w tm TCSensorInfo -> sensorCommand w tm
damageCodeCommand :: World -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) damageCodeCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
damageCodeCommand w = PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..] damageCodeCommand w tm
= PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..]
where where
f :: SensorType -> Maybe (String, [TerminalLine]) f :: SensorType -> Maybe (String, [TerminalLine])
f st = do f st = do
@@ -82,12 +84,17 @@ decodeSensorType st w = fromMaybe [] $ do
-- ugly -- ugly
sensorCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) sensorCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
sensorCommand w tm = PTE.singleton "SENSOR" $ fromMaybe mempty $ do sensorCommand w tm = PTE.singleton "SENSOR" $ fromMaybe mempty $ do
ProximitySensor _ d r b <- w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor ProximitySensor _ _ r b <- w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor
return $ PTE.fromList return $ PTE.fromList
[ ("REQUIREMENT", [makeTermLine $ show r] ) [ ("", makeTermPara $ sensorReqToString r b)
, ("RADIUS", [makeTermLine $ show d])
, ("STATUS", [makeTermLine $ show b])
] ]
sensorReqToString :: ProximityRequirement -> Bool -> String
sensorReqToString pr = \case
True -> "SENSOR TEST PASSED."
False -> "SENSOR REQUIRES: " ++ case pr of
RequireHealth x -> "HEALTH ABOVE " ++ show x
RequireEquipment x -> itemBaseName x
toggleCommands :: Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) toggleCommands :: Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
+126 -127
View File
@@ -590,7 +590,7 @@ InDream src/Dodge/Data/Scenario.hs 19;" C
InInv src/Dodge/Data/Item/Location.hs 29;" C InInv src/Dodge/Data/Item/Location.hs 29;" C
InLink src/Dodge/Data/Room.hs 44;" C InLink src/Dodge/Data/Room.hs 44;" C
InParallelUniverse src/Dodge/Data/Scenario.hs 21;" C InParallelUniverse src/Dodge/Data/Scenario.hs 21;" C
InPlacement src/Dodge/Data/GenWorld.hs 136;" t InPlacement src/Dodge/Data/GenWorld.hs 134;" t
InRealWorld src/Dodge/Data/Scenario.hs 18;" C InRealWorld src/Dodge/Data/Scenario.hs 18;" C
InSimulation src/Dodge/Data/Scenario.hs 20;" C InSimulation src/Dodge/Data/Scenario.hs 20;" C
InVoid src/Dodge/Data/Item/Location.hs 39;" C InVoid src/Dodge/Data/Item/Location.hs 39;" C
@@ -953,7 +953,6 @@ OptionScreen src/Dodge/Data/Universe.hs 82;" C
OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t
OutAction src/Dodge/Creature/Action.hs 45;" t OutAction src/Dodge/Creature/Action.hs 45;" t
OutLink src/Dodge/Data/Room.hs 43;" C OutLink src/Dodge/Data/Room.hs 43;" C
OutPlacement src/Dodge/Data/GenWorld.hs 131;" t
OutsideTerminal src/Dodge/Data/Input.hs 33;" C OutsideTerminal src/Dodge/Data/Input.hs 33;" C
OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" C OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" C
OverCombCombine src/Dodge/Data/Input.hs 29;" C OverCombCombine src/Dodge/Data/Input.hs 29;" C
@@ -1941,8 +1940,8 @@ _impulseUseTarget src/Dodge/Data/ActionPlan.hs 53;" f
_impulseUseTargetCID src/Dodge/Data/ActionPlan.hs 50;" f _impulseUseTargetCID src/Dodge/Data/ActionPlan.hs 50;" f
_impulsesListList src/Dodge/Data/ActionPlan.hs 98;" f _impulsesListList src/Dodge/Data/ActionPlan.hs 98;" f
_input src/Dodge/Data/World.hs 42;" f _input src/Dodge/Data/World.hs 42;" f
_ipPlacement src/Dodge/Data/GenWorld.hs 137;" f _ipPlacement src/Dodge/Data/GenWorld.hs 135;" f
_ipPlacementID src/Dodge/Data/GenWorld.hs 138;" f _ipPlacementID src/Dodge/Data/GenWorld.hs 136;" f
_isWarming src/Dodge/Data/Item/Params.hs 23;" f _isWarming src/Dodge/Data/Item/Params.hs 23;" f
_ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" f _ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" f
_ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f _ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f
@@ -2109,8 +2108,6 @@ _offPathFromEdges src/Dodge/Data/Room.hs 74;" f
_oldMagnets src/Dodge/Data/LWorld.hs 129;" f _oldMagnets src/Dodge/Data/LWorld.hs 129;" f
_onPathFromEdges src/Dodge/Data/Room.hs 73;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f
_opDraw src/Dodge/Data/Wall.hs 43;" f _opDraw src/Dodge/Data/Wall.hs 43;" f
_opPlacement src/Dodge/Data/GenWorld.hs 132;" f
_opPlacementID src/Dodge/Data/GenWorld.hs 133;" f
_opSel src/Dodge/Data/RightButtonOptions.hs 15;" f _opSel src/Dodge/Data/RightButtonOptions.hs 15;" f
_opTexture src/Dodge/Data/Wall.hs 44;" f _opTexture src/Dodge/Data/Wall.hs 44;" f
_opticDefaultZoom src/Dodge/Data/Item/Scope.hs 20;" f _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 20;" f
@@ -2247,29 +2244,29 @@ _rkSmoke src/Dodge/Data/Projectile.hs 36;" f
_rlDir src/Dodge/Data/Room.hs 26;" f _rlDir src/Dodge/Data/Room.hs 26;" f
_rlPos src/Dodge/Data/Room.hs 25;" f _rlPos src/Dodge/Data/Room.hs 25;" f
_rlType src/Dodge/Data/Room.hs 24;" f _rlType src/Dodge/Data/Room.hs 24;" f
_rmBound src/Dodge/Data/GenWorld.hs 115;" f _rmBound src/Dodge/Data/GenWorld.hs 116;" f
_rmChildren src/Dodge/Data/GenWorld.hs 126;" f _rmChildren src/Dodge/Data/GenWorld.hs 127;" f
_rmClusterStatus src/Dodge/Data/GenWorld.hs 128;" f _rmClusterStatus src/Dodge/Data/GenWorld.hs 129;" f
_rmConnectsTo src/Dodge/Data/GenWorld.hs 123;" f _rmConnectsTo src/Dodge/Data/GenWorld.hs 124;" f
_rmEndWires src/Dodge/Data/GenWorld.hs 122;" f _rmEndWires src/Dodge/Data/GenWorld.hs 123;" f
_rmFloor src/Dodge/Data/GenWorld.hs 116;" f _rmFloor src/Dodge/Data/GenWorld.hs 117;" f
_rmHeight src/Dodge/Data/Room.hs 38;" f _rmHeight src/Dodge/Data/Room.hs 38;" f
_rmInPmnt src/Dodge/Data/GenWorld.hs 113;" f _rmInPmnt src/Dodge/Data/GenWorld.hs 113;" f
_rmLinkEff src/Dodge/Data/GenWorld.hs 103;" f _rmLinkEff src/Dodge/Data/GenWorld.hs 103;" f
_rmLinks src/Dodge/Data/GenWorld.hs 101;" f _rmLinks src/Dodge/Data/GenWorld.hs 101;" f
_rmMID src/Dodge/Data/GenWorld.hs 124;" f _rmMID src/Dodge/Data/GenWorld.hs 125;" f
_rmMParent src/Dodge/Data/GenWorld.hs 125;" f _rmMParent src/Dodge/Data/GenWorld.hs 126;" f
_rmName src/Dodge/Data/GenWorld.hs 117;" f _rmName src/Dodge/Data/GenWorld.hs 118;" f
_rmOutPmnt src/Dodge/Data/GenWorld.hs 114;" f _rmOutPmnt src/Dodge/Data/GenWorld.hs 115;" f
_rmPath src/Dodge/Data/GenWorld.hs 111;" f _rmPath src/Dodge/Data/GenWorld.hs 111;" f
_rmPmnts src/Dodge/Data/GenWorld.hs 112;" f _rmPmnts src/Dodge/Data/GenWorld.hs 112;" f
_rmPolys src/Dodge/Data/GenWorld.hs 100;" f _rmPolys src/Dodge/Data/GenWorld.hs 100;" f
_rmPos src/Dodge/Data/GenWorld.hs 110;" f _rmPos src/Dodge/Data/GenWorld.hs 110;" f
_rmRandPSs src/Dodge/Data/GenWorld.hs 120;" f _rmRandPSs src/Dodge/Data/GenWorld.hs 121;" f
_rmShift src/Dodge/Data/GenWorld.hs 118;" f _rmShift src/Dodge/Data/GenWorld.hs 119;" f
_rmStartWires src/Dodge/Data/GenWorld.hs 121;" f _rmStartWires src/Dodge/Data/GenWorld.hs 122;" f
_rmType src/Dodge/Data/GenWorld.hs 127;" f _rmType src/Dodge/Data/GenWorld.hs 128;" f
_rmViewpoints src/Dodge/Data/GenWorld.hs 119;" f _rmViewpoints src/Dodge/Data/GenWorld.hs 120;" f
_rmWidth src/Dodge/Data/Room.hs 37;" f _rmWidth src/Dodge/Data/Room.hs 37;" f
_rpDir src/Dodge/Data/Room.hs 16;" f _rpDir src/Dodge/Data/Room.hs 16;" f
_rpLinkStatus src/Dodge/Data/Room.hs 18;" f _rpLinkStatus src/Dodge/Data/Room.hs 18;" f
@@ -2576,7 +2573,7 @@ addButtonSlowDoor src/Dodge/Room/LongDoor.hs 97;" f
addCrGibs src/Dodge/Prop/Gib.hs 16;" f addCrGibs src/Dodge/Prop/Gib.hs 16;" f
addDepth src/Picture/Base.hs 133;" f addDepth src/Picture/Base.hs 133;" f
addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 37;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 37;" f
addDoorToggleTerminal src/Dodge/Room/Warning.hs 33;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 34;" f
addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f
addEdges src/Dodge/Path.hs 122;" f addEdges src/Dodge/Path.hs 122;" f
addGib4 src/Dodge/Prop/Gib.hs 51;" f addGib4 src/Dodge/Prop/Gib.hs 51;" f
@@ -2594,7 +2591,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f
addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f
addIndefiniteArticle src/StringHelp.hs 17;" f addIndefiniteArticle src/StringHelp.hs 17;" f
addNodes src/Dodge/Path.hs 115;" f addNodes src/Dodge/Path.hs 115;" f
addPane src/Dodge/Placement/PlaceSpot.hs 169;" f addPane src/Dodge/Placement/PlaceSpot.hs 170;" f
addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f
addPointPolygon src/Geometry/Polygon.hs 102;" f addPointPolygon src/Geometry/Polygon.hs 102;" f
addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f
@@ -2615,14 +2612,14 @@ aimDelaySweep src/Dodge/Render/Picture.hs 288;" f
aimStance src/Dodge/Item/AimStance.hs 10;" f aimStance src/Dodge/Item/AimStance.hs 10;" f
aimStanceInfo src/Dodge/Item/Info.hs 244;" f aimStanceInfo src/Dodge/Item/Info.hs 244;" f
aimTurn src/Dodge/Creature/YourControl.hs 165;" f aimTurn src/Dodge/Creature/YourControl.hs 165;" f
airlock src/Dodge/Room/Airlock.hs 19;" f airlock src/Dodge/Room/Airlock.hs 21;" f
airlock0 src/Dodge/Room/Airlock.hs 25;" f airlock0 src/Dodge/Room/Airlock.hs 50;" f
airlock90 src/Dodge/Room/Airlock.hs 122;" f airlock90 src/Dodge/Room/Airlock.hs 147;" f
airlockCrystal src/Dodge/Room/Airlock.hs 161;" f airlockCrystal src/Dodge/Room/Airlock.hs 186;" f
airlockDoor src/Dodge/Room/Airlock.hs 51;" f airlockDoor src/Dodge/Room/Airlock.hs 76;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 79;" f
airlockSimple src/Dodge/Room/Airlock.hs 66;" f airlockSimple src/Dodge/Room/Airlock.hs 91;" f
airlockZ src/Dodge/Room/Airlock.hs 91;" f airlockZ src/Dodge/Room/Airlock.hs 116;" f
allVisibleWalls src/Dodge/Base/Collide.hs 215;" f allVisibleWalls src/Dodge/Base/Collide.hs 215;" f
alongSegBy src/Geometry.hs 41;" f alongSegBy src/Geometry.hs 41;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
@@ -2631,7 +2628,8 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 145;" f
amr src/Dodge/Item/Held/Rod.hs 34;" f amr src/Dodge/Item/Held/Rod.hs 34;" f
anRoom src/Dodge/Floor.hs 130;" f anRoom src/Dodge/Floor.hs 130;" f
analyser src/Dodge/Placement/Instance/Analyser.hs 10;" f analyser src/Dodge/Placement/Instance/Analyser.hs 10;" f
analyserByDoor src/Dodge/Room/LasTurret.hs 77;" f analyserByDoor src/Dodge/Room/LasTurret.hs 93;" f
analyserByNthLink src/Dodge/Room/LasTurret.hs 78;" f
andOrRegex src/Dodge/DisplayInventory.hs 78;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f
angleBetween src/Geometry.hs 161;" f angleBetween src/Geometry.hs 161;" f
angleVV src/Geometry/Vector.hs 57;" f angleVV src/Geometry/Vector.hs 57;" f
@@ -2682,11 +2680,12 @@ arrow src/Picture/Composite.hs 19;" f
arrowPath src/Picture/Composite.hs 8;" f arrowPath src/Picture/Composite.hs 8;" f
assignHotkey src/Dodge/AssignHotkey.hs 13;" f assignHotkey src/Dodge/AssignHotkey.hs 13;" f
assignPushDoors src/Dodge/LevelGen.hs 43;" f assignPushDoors src/Dodge/LevelGen.hs 43;" f
atFstLnkOut src/Dodge/PlacementSpot.hs 212;" f atFstLnkOut src/Dodge/PlacementSpot.hs 222;" f
atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 227;" f atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 241;" f
atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 230;" f atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 244;" f
atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 215;" f atNthLinkOut src/Dodge/PlacementSpot.hs 225;" f
atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 233;" f atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 228;" f
atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 247;" f
attachBranch src/Dodge/Tree/Compose.hs 83;" f attachBranch src/Dodge/Tree/Compose.hs 83;" f
attachInfo src/Dodge/Item/Info.hs 58;" f attachInfo src/Dodge/Item/Info.hs 58;" f
attachList' src/Dodge/Tree/Compose.hs 80;" f attachList' src/Dodge/Tree/Compose.hs 80;" f
@@ -2956,7 +2955,7 @@ combineList src/Dodge/Combine.hs 20;" f
combineRooms src/Dodge/Room/Procedural.hs 152;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f
combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f
combineTree src/Dodge/Tree/Compose.hs 66;" f combineTree src/Dodge/Tree/Compose.hs 66;" f
commandColor src/Dodge/Terminal.hs 130;" f commandColor src/Dodge/Terminal.hs 136;" f
commonPrefix src/Dodge/Debug/Terminal.hs 146;" f commonPrefix src/Dodge/Debug/Terminal.hs 146;" f
comp src/Quaternion.hs 65;" f comp src/Quaternion.hs 65;" f
compactDraw src/Dodge/LevelGen.hs 93;" f compactDraw src/Dodge/LevelGen.hs 93;" f
@@ -2970,8 +2969,8 @@ conEffects src/Dodge/Concurrent.hs 12;" f
conLDTToConDT src/Dodge/DoubleTree.hs 22;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f
concurrentIS src/Dodge/Update/Input/InGame.hs 281;" f concurrentIS src/Dodge/Update/Input/InGame.hs 281;" f
connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f
connectionBlurb src/Dodge/Terminal.hs 45;" f connectionBlurb src/Dodge/Terminal.hs 46;" f
connectionBlurbLines src/Dodge/Terminal.hs 37;" f connectionBlurbLines src/Dodge/Terminal.hs 38;" f
constructEdges src/Polyhedra.hs 34;" f constructEdges src/Polyhedra.hs 34;" f
constructEdgesList src/Polyhedra.hs 43;" f constructEdgesList src/Polyhedra.hs 43;" f
contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f
@@ -3038,7 +3037,7 @@ crZoneSize src/Dodge/Zoning/Creature.hs 41;" f
craftInfo src/Dodge/Item/Info.hs 169;" f craftInfo src/Dodge/Item/Info.hs 169;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f
crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f
createFlIt src/Dodge/Placement/PlaceSpot.hs 181;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 182;" f
createForceField src/Dodge/ForceField.hs 7;" f createForceField src/Dodge/ForceField.hs 7;" f
createGas src/Dodge/Gas.hs 8;" f createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 55;" f createHeadLamp src/Dodge/Euse.hs 55;" f
@@ -3097,7 +3096,7 @@ dShadCol src/Dodge/Render/List.hs 215;" f
damMatSideEffect src/Dodge/Material/Damage.hs 13;" f damMatSideEffect src/Dodge/Material/Damage.hs 13;" f
damThingHitWith src/Dodge/Damage.hs 72;" f damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 49;" f damToExpBarrel src/Dodge/Barreloid.hs 49;" f
damageCodeCommand src/Dodge/Terminal.hs 65;" f damageCodeCommand src/Dodge/Terminal.hs 66;" f
damageCrWl src/Dodge/Damage.hs 29;" f damageCrWl src/Dodge/Damage.hs 29;" f
damageCrWlID src/Dodge/Damage.hs 23;" f damageCrWlID src/Dodge/Damage.hs 23;" f
damageDirection src/Dodge/Damage.hs 35;" f damageDirection src/Dodge/Damage.hs 35;" f
@@ -3138,9 +3137,10 @@ debugMenuOptions src/Dodge/Menu.hs 122;" f
debugOn src/Dodge/Data/Config.hs 151;" f debugOn src/Dodge/Data/Config.hs 151;" f
debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f
debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f
decodeSensorType src/Dodge/Terminal.hs 77;" f decodeSensorType src/Dodge/Terminal.hs 78;" f
decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f
decomposeTree src/Dodge/Tree/Compose.hs 57;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f
decontamRoom src/Dodge/Room/Airlock.hs 25;" f
decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f
decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f
decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f
@@ -3200,7 +3200,7 @@ defaultSwitchWall src/Dodge/Default/Door.hs 22;" f
defaultTerminal src/Dodge/Default/Terminal.hs 10;" f defaultTerminal src/Dodge/Default/Terminal.hs 10;" f
defaultVision src/Dodge/Default/Creature.hs 85;" f defaultVision src/Dodge/Default/Creature.hs 85;" f
defaultWall src/Dodge/Default/Wall.hs 17;" f defaultWall src/Dodge/Default/Wall.hs 17;" f
defaultWindow src/Dodge/Default/Wall.hs 84;" f defaultWindow src/Dodge/Default/Wall.hs 85;" f
defaultWorld src/Dodge/Default/World.hs 34;" f defaultWorld src/Dodge/Default/World.hs 34;" f
degToRad src/Geometry/Vector.hs 117;" f degToRad src/Geometry/Vector.hs 117;" f
deleteIMInZone src/Dodge/Base.hs 70;" f deleteIMInZone src/Dodge/Base.hs 70;" f
@@ -3550,7 +3550,7 @@ errorHead src/ListHelp.hs 76;" f
errorIsLHS src/Geometry.hs 66;" f errorIsLHS src/Geometry.hs 66;" f
errorNormalizeV src/Geometry.hs 55;" f errorNormalizeV src/Geometry.hs 55;" f
errorPointInPolygon src/Geometry.hs 47;" f errorPointInPolygon src/Geometry.hs 47;" f
evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 150;" f evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 151;" f
evenOddSplit src/Dodge/Base.hs 160;" f evenOddSplit src/Dodge/Base.hs 160;" f
exitTerminalSubInv src/Dodge/WorldEffect.hs 107;" f exitTerminalSubInv src/Dodge/WorldEffect.hs 107;" f
expandLine src/Dodge/Picture.hs 30;" f expandLine src/Dodge/Picture.hs 30;" f
@@ -3689,8 +3689,8 @@ getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 169;" f getBulHitDams src/Dodge/Bullet.hs 169;" f
getBulletType src/Dodge/HeldUse.hs 943;" f getBulletType src/Dodge/HeldUse.hs 943;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 527;" f getCloseObj src/Dodge/Update/Input/InGame.hs 527;" f
getCommand src/Dodge/Terminal.hs 57;" f getCommand src/Dodge/Terminal.hs 58;" f
getCommands src/Dodge/Terminal.hs 54;" f getCommands src/Dodge/Terminal.hs 55;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f
getDistortions src/Dodge/Render.hs 435;" f getDistortions src/Dodge/Render.hs 435;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f
@@ -3788,8 +3788,8 @@ headLampShape src/Dodge/Item/Draw/SPic.hs 455;" f
headMap src/Dodge/DoubleTree.hs 248;" f headMap src/Dodge/DoubleTree.hs 248;" f
headPQ src/Dodge/Creature/HandPos.hs 108;" f headPQ src/Dodge/Creature/HandPos.hs 108;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 74;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 75;" f
healthTest src/Dodge/Room/LasTurret.hs 95;" f healthTest src/Dodge/Room/LasTurret.hs 96;" f
heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f
heldAimZoom src/Dodge/Update/Camera.hs 142;" f heldAimZoom src/Dodge/Update/Camera.hs 142;" f
@@ -3808,7 +3808,7 @@ heldItemWeight src/Dodge/Creature/Statistics.hs 72;" f
heldPositionInfo src/Dodge/Item/Info.hs 241;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f
heldTorqueAmount src/Dodge/HeldUse.hs 584;" f heldTorqueAmount src/Dodge/HeldUse.hs 584;" f
heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f
helpPara src/Dodge/Terminal.hs 106;" f helpPara src/Dodge/Terminal.hs 112;" f
helpPoly3D src/Polyhedra.hs 125;" f helpPoly3D src/Polyhedra.hs 125;" f
heron src/Geometry.hs 221;" f heron src/Geometry.hs 221;" f
hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f
@@ -3932,7 +3932,7 @@ isCognizant src/Dodge/Creature/Perception.hs 106;" f
isConnected src/Dodge/Inventory/Swap.hs 74;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f
isElectrical src/Dodge/Machine/Update.hs 80;" f isElectrical src/Dodge/Machine/Update.hs 80;" f
isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 188;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 188;" f
isInLnk src/Dodge/PlacementSpot.hs 161;" f isInLnk src/Dodge/PlacementSpot.hs 169;" f
isJust' src/MaybeHelp.hs 29;" f isJust' src/MaybeHelp.hs 29;" f
isLHS src/Geometry/LHS.hs 8;" f isLHS src/Geometry/LHS.hs 8;" f
isLeftOf src/Geometry.hs 202;" f isLeftOf src/Geometry.hs 202;" f
@@ -3940,14 +3940,14 @@ isLeftOfA src/Geometry.hs 196;" f
isNHS src/Geometry/Intersect.hs 51;" f isNHS src/Geometry/Intersect.hs 51;" f
isNothing' src/MaybeHelp.hs 33;" f isNothing' src/MaybeHelp.hs 33;" f
isOnSeg src/Geometry.hs 240;" f isOnSeg src/Geometry.hs 240;" f
isOutLnk src/Dodge/PlacementSpot.hs 165;" f isOutLnk src/Dodge/PlacementSpot.hs 174;" f
isOverTerminalScreen src/Dodge/Update.hs 414;" f isOverTerminalScreen src/Dodge/Update.hs 414;" f
isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f
isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f
isRHS src/Geometry/LHS.hs 24;" f isRHS src/Geometry/LHS.hs 24;" f
isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f
isUnusedLnkType src/Dodge/PlacementSpot.hs 187;" f isUnusedLnkType src/Dodge/PlacementSpot.hs 196;" f
isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 173;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 182;" f
isValidCommand src/Dodge/Debug/Terminal.hs 131;" f isValidCommand src/Dodge/Debug/Terminal.hs 131;" f
isVowel src/StringHelp.hs 8;" f isVowel src/StringHelp.hs 8;" f
isWalkable src/Dodge/Base/Collide.hs 317;" f isWalkable src/Dodge/Base/Collide.hs 317;" f
@@ -4014,8 +4014,8 @@ justify src/Justify.hs 9;" f
k src/ShortShow.hs 33;" f k src/ShortShow.hs 33;" f
k' src/ShortShow.hs 33;" f k' src/ShortShow.hs 33;" f
keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 60;" f
keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 471;" f keyPic src/Dodge/Item/Draw/SPic.hs 471;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f
@@ -4027,12 +4027,12 @@ lamp src/Dodge/Creature/Lamp.hs 21;" f
lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f
lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 73;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 73;" f
lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 115;" f
lasGunPic src/Dodge/Item/Draw/SPic.hs 424;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 424;" f
lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f
lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 108;" f
lasTunnel src/Dodge/Room/LasTurret.hs 126;" f lasTunnel src/Dodge/Room/LasTurret.hs 127;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 168;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f
lastMap src/Dodge/DoubleTree.hs 252;" f lastMap src/Dodge/DoubleTree.hs 252;" f
@@ -4060,8 +4060,8 @@ leftRightCombine src/Dodge/Item/Grammar.hs 196;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 480;" f legsSPic src/Dodge/Item/Draw/SPic.hs 480;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f
light src/Color.hs 104;" f light src/Color.hs 104;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 47;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 36;" f lightSensInsideDoor src/Dodge/Room/LasTurret.hs 37;" f
lightSensor src/Dodge/Placement/Instance/Sensor.hs 47;" f lightSensor src/Dodge/Placement/Instance/Sensor.hs 47;" f
lightsToRender src/Dodge/Render/Lights.hs 14;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f
lightx4 src/Color.hs 145;" f lightx4 src/Color.hs 145;" f
@@ -4116,7 +4116,7 @@ locUp' src/Dodge/DoubleTree.hs 287;" f
lockInv src/Dodge/Inventory/Lock.hs 9;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f
lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f
lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f
lockedStart src/Dodge/Room/RunPast.hs 34;" f lockedStart src/Dodge/Room/RunPast.hs 35;" f
logistic src/Dodge/Base.hs 98;" f logistic src/Dodge/Base.hs 98;" f
longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f
longCrit src/Dodge/Creature.hs 71;" f longCrit src/Dodge/Creature.hs 71;" f
@@ -4159,8 +4159,8 @@ makeBullet src/Dodge/HeldUse.hs 1021;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 127;" f makeColorTermLine src/Dodge/Terminal.hs 133;" f
makeColorTermPara src/Dodge/Terminal.hs 124;" f makeColorTermPara src/Dodge/Terminal.hs 130;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 45;" f makeDebris src/Dodge/Block/Debris.hs 45;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f
@@ -4196,8 +4196,8 @@ makeSourcedShader src/Shader/Compile.hs 167;" f
makeSpark src/Dodge/Spark.hs 45;" f makeSpark src/Dodge/Spark.hs 45;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
makeTermLine src/Dodge/Terminal.hs 112;" f makeTermLine src/Dodge/Terminal.hs 118;" f
makeTermPara src/Dodge/Terminal.hs 121;" f makeTermPara src/Dodge/Terminal.hs 127;" f
makeTeslaArc src/Dodge/Tesla.hs 29;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f
makeTileFromPoly src/Tile.hs 34;" f makeTileFromPoly src/Tile.hs 34;" f
@@ -4310,7 +4310,6 @@ moveProjectile src/Dodge/Projectile/Update.hs 262;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f
moveToSideFirstOutLink src/Dodge/Room/Warning.hs 74;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 60;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 60;" f
moveWall src/Dodge/Wall/Move.hs 29;" f moveWall src/Dodge/Wall/Move.hs 29;" f
moveWallID src/Dodge/Wall/Move.hs 24;" f moveWallID src/Dodge/Wall/Move.hs 24;" f
@@ -4327,18 +4326,18 @@ multiLookupTrie src/SimpleTrie.hs 57;" f
multiLookupTrieI src/SimpleTrie.hs 66;" f multiLookupTrieI src/SimpleTrie.hs 66;" f
muout src/Dodge/RoomLink.hs 129;" f muout src/Dodge/RoomLink.hs 129;" f
muzFlareAt src/Dodge/HeldUse.hs 676;" f muzFlareAt src/Dodge/HeldUse.hs 676;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f mvButton src/Dodge/Placement/PlaceSpot.hs 178;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f mvCr src/Dodge/Placement/PlaceSpot.hs 188;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f mvFS src/Dodge/Placement/PlaceSpot.hs 191;" f
mvGust src/Dodge/Update.hs 806;" f mvGust src/Dodge/Update.hs 806;" f
mvLS src/Dodge/Placement/PlaceSpot.hs 218;" f mvLS src/Dodge/Placement/PlaceSpot.hs 219;" f
mvP src/Dodge/Wall/Move.hs 54;" f mvP src/Dodge/Wall/Move.hs 54;" f
mvPP src/Dodge/Placement/PlaceSpot.hs 184;" f mvPP src/Dodge/Placement/PlaceSpot.hs 185;" f
mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f
mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f
mvPointToward src/Dodge/Base.hs 136;" f mvPointToward src/Dodge/Base.hs 136;" f
mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f
mvProp src/Dodge/Placement/PlaceSpot.hs 174;" f mvProp src/Dodge/Placement/PlaceSpot.hs 175;" f
mvPs src/Dodge/Wall/Move.hs 58;" f mvPs src/Dodge/Wall/Move.hs 58;" f
myIntersectLineLine src/Geometry/Intersect.hs 207;" f myIntersectLineLine src/Geometry/Intersect.hs 207;" f
myIntersectSegSeg src/Geometry/Intersect.hs 185;" f myIntersectSegSeg src/Geometry/Intersect.hs 185;" f
@@ -4465,7 +4464,6 @@ picMap src/Picture/Base.hs 67;" f
pickUpItem src/Dodge/Inventory/Add.hs 107;" f pickUpItem src/Dodge/Inventory/Add.hs 107;" f
pickUpItemAt src/Dodge/Inventory/Add.hs 113;" f pickUpItemAt src/Dodge/Inventory/Add.hs 113;" f
pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f
pickupTut src/Dodge/Room/Tutorial.hs 56;" f
pincerP src/Dodge/Creature/Boid.hs 61;" f pincerP src/Dodge/Creature/Boid.hs 61;" f
pincerP' src/Dodge/Creature/Boid.hs 94;" f pincerP' src/Dodge/Creature/Boid.hs 94;" f
pincerP'' src/Dodge/Creature/Boid.hs 104;" f pincerP'' src/Dodge/Creature/Boid.hs 104;" f
@@ -4479,24 +4477,24 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 227;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f
plMachine src/Dodge/Placement/PlaceSpot.hs 193;" f plMachine src/Dodge/Placement/PlaceSpot.hs 194;" f
plNew src/Dodge/Base/NewID.hs 23;" f plNew src/Dodge/Base/NewID.hs 23;" f
plNewID src/Dodge/Base/NewID.hs 7;" f 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 31;" f plNewUsing src/Dodge/Base/NewID.hs 31;" f
plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f
plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 208;" f placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 209;" f
placePickOne src/Dodge/Placement/PlaceSpot.hs 42;" f placePickOne src/Dodge/Placement/PlaceSpot.hs 43;" f
placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 54;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 55;" f
placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 45;" f placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 46;" f
placeSpot src/Dodge/Placement/PlaceSpot.hs 30;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f
placeSpotID src/Dodge/Placement/PlaceSpot.hs 100;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f
placeSpotID' src/Dodge/Placement/PlaceSpot.hs 106;" f placeSpotID' src/Dodge/Placement/PlaceSpot.hs 107;" f
placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f
placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 71;" f
placeString src/Dodge/Render/MenuScreen.hs 61;" f placeString src/Dodge/Render/MenuScreen.hs 61;" f
placeWallPoly src/Dodge/Placement/PlaceSpot.hs 163;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 164;" f
plainRegex src/Dodge/DisplayInventory.hs 196;" f plainRegex src/Dodge/DisplayInventory.hs 196;" f
playIfFree src/Sound.hs 137;" f playIfFree src/Sound.hs 137;" f
playPositionalSoundQueue src/Sound.hs 145;" f playPositionalSoundQueue src/Sound.hs 145;" f
@@ -4639,7 +4637,7 @@ psPt src/Dodge/LevelGen/PlacementHelper.hs 24;" f
psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f
psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f
psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f
psRandRanges src/Dodge/PlacementSpot.hs 250;" f psRandRanges src/Dodge/PlacementSpot.hs 264;" f
psj src/Dodge/LevelGen/PlacementHelper.hs 70;" f psj src/Dodge/LevelGen/PlacementHelper.hs 70;" f
psposAddLabel src/Dodge/PlacementSpot.hs 70;" f psposAddLabel src/Dodge/PlacementSpot.hs 70;" f
pt0 src/Dodge/LevelGen/PlacementHelper.hs 54;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 54;" f
@@ -4683,7 +4681,7 @@ qToV2 src/Quaternion.hs 56;" f
qToV3 src/Quaternion.hs 53;" f qToV3 src/Quaternion.hs 53;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f
quitCommand src/Dodge/Terminal.hs 109;" f quitCommand src/Dodge/Terminal.hs 115;" f
qz src/Quaternion.hs 71;" f qz src/Quaternion.hs 71;" f
rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f
rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f
@@ -4774,7 +4772,7 @@ renderShadows src/Render.hs 117;" f
replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 162;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 162;" f
replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f
resetPLUse src/Dodge/PlacementSpot.hs 97;" f resetPLUse src/Dodge/PlacementSpot.hs 99;" f
resetStride src/Dodge/Creature/State/WalkCycle.hs 24;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 24;" f
resetTerminal src/Dodge/WorldEffect.hs 101;" f resetTerminal src/Dodge/WorldEffect.hs 101;" f
resizeFBOTO src/Framebuffer/Update.hs 203;" f resizeFBOTO src/Framebuffer/Update.hs 203;" f
@@ -4819,7 +4817,7 @@ rmOutLinks src/Dodge/RoomLink.hs 138;" f
roomC src/Dodge/Room/Room.hs 38;" f roomC src/Dodge/Room/Room.hs 38;" f
roomCCrits src/Dodge/Room/Room.hs 260;" f roomCCrits src/Dodge/Room/Room.hs 260;" f
roomCenterPillar src/Dodge/Room/Room.hs 119;" f roomCenterPillar src/Dodge/Room/Room.hs 119;" f
roomCritLS src/Dodge/Room/RunPast.hs 24;" f roomCritLS src/Dodge/Room/RunPast.hs 25;" f
roomCross src/Dodge/Room/Boss.hs 84;" f roomCross src/Dodge/Room/Boss.hs 84;" f
roomGlassOctogon src/Dodge/Room/Boss.hs 21;" f roomGlassOctogon src/Dodge/Room/Boss.hs 21;" f
roomMiniIntro src/Dodge/Room/Room.hs 114;" f roomMiniIntro src/Dodge/Room/Room.hs 114;" f
@@ -4861,13 +4859,13 @@ rotateXY src/Polyhedra.hs 31;" f
roundPoint2 src/Geometry/Intersect.hs 246;" f roundPoint2 src/Geometry/Intersect.hs 246;" f
roundTank src/Dodge/Placement/Instance/Tank.hs 25;" f roundTank src/Dodge/Placement/Instance/Tank.hs 25;" f
roundTankCross src/Dodge/Placement/Instance/Tank.hs 31;" f roundTankCross src/Dodge/Placement/Instance/Tank.hs 31;" f
rpIsOffPath src/Dodge/PlacementSpot.hs 81;" f rpIsOffPath src/Dodge/PlacementSpot.hs 82;" f
rpIsOnPath src/Dodge/PlacementSpot.hs 76;" f rpIsOnPath src/Dodge/PlacementSpot.hs 76;" f
rpOffPathFromEdge src/Dodge/PlacementSpot.hs 86;" f rpOffPathFromEdge src/Dodge/PlacementSpot.hs 88;" f
rpOnPathFromEdge src/Dodge/PlacementSpot.hs 92;" f rpOnPathFromEdge src/Dodge/PlacementSpot.hs 94;" f
rprBool src/Dodge/PlacementSpot.hs 73;" f rprBool src/Dodge/PlacementSpot.hs 73;" f
rprBoolShift src/Dodge/PlacementSpot.hs 112;" f rprBoolShift src/Dodge/PlacementSpot.hs 114;" f
rprShift src/Dodge/PlacementSpot.hs 103;" f rprShift src/Dodge/PlacementSpot.hs 105;" f
rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f
runPastStart src/Dodge/Room/Start.hs 72;" f runPastStart src/Dodge/Room/Start.hs 72;" f
runStateWorld src/Dodge/Randify.hs 17;" f runStateWorld src/Dodge/Randify.hs 17;" f
@@ -4940,7 +4938,8 @@ selectedItemScroll src/Dodge/Update/Scroll.hs 50;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 52;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 52;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 58;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 58;" f
senseDamage src/Dodge/Machine/Update.hs 160;" f senseDamage src/Dodge/Machine/Update.hs 160;" f
sensorCommand src/Dodge/Terminal.hs 83;" f sensorCommand src/Dodge/Terminal.hs 84;" f
sensorReqToString src/Dodge/Terminal.hs 91;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 25;" f sensorRoom src/Dodge/Room/SensorDoor.hs 25;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 45;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 45;" f
sensorSPic src/Dodge/Machine/Draw.hs 70;" f sensorSPic src/Dodge/Machine/Draw.hs 70;" f
@@ -4954,7 +4953,7 @@ setClickWorldPos src/Dodge/Update.hs 106;" f
setClusterID src/Dodge/Combine/Graph.hs 116;" f setClusterID src/Dodge/Combine/Graph.hs 116;" f
setDepth src/Picture/Base.hs 128;" f setDepth src/Picture/Base.hs 128;" f
setDirPS src/Dodge/PlacementSpot.hs 50;" f setDirPS src/Dodge/PlacementSpot.hs 50;" f
setFallback src/Dodge/PlacementSpot.hs 128;" f setFallback src/Dodge/PlacementSpot.hs 132;" f
setInLinks src/Dodge/RoomLink.hs 51;" f setInLinks src/Dodge/RoomLink.hs 51;" f
setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f
setInLinksPD src/Dodge/RoomLink.hs 74;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f
@@ -5018,11 +5017,11 @@ shellMag src/Dodge/Item/Ammo.hs 49;" f
shellModule src/Dodge/Item/Scope.hs 123;" f shellModule src/Dodge/Item/Scope.hs 123;" f
shellShape src/Dodge/Projectile/Draw.hs 35;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f
shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f
shiftByV2 src/Dodge/PlacementSpot.hs 240;" f shiftByV2 src/Dodge/PlacementSpot.hs 254;" f
shiftChildren src/Dodge/Tree/Compose.hs 43;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f
shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f
shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f
shiftInBy src/Dodge/PlacementSpot.hs 237;" f shiftInBy src/Dodge/PlacementSpot.hs 251;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 299;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 299;" f
shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 338;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 338;" f
shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 332;" f shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 332;" f
@@ -5075,7 +5074,7 @@ shuffleRoomPos src/Dodge/Layout.hs 78;" f
shuffleTail src/RandomHelp.hs 59;" f shuffleTail src/RandomHelp.hs 59;" f
sigmoid src/Dodge/Base.hs 151;" f sigmoid src/Dodge/Base.hs 151;" f
simpleCrSprings src/Dodge/Update.hs 883;" f simpleCrSprings src/Dodge/Update.hs 883;" f
simpleTermMessage src/Dodge/Terminal.hs 180;" f simpleTermMessage src/Dodge/Terminal.hs 186;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f
singleAmmo src/Dodge/Item/AmmoSlots.hs 62;" f singleAmmo src/Dodge/Item/AmmoSlots.hs 62;" f
@@ -5102,7 +5101,7 @@ smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 646;" f
smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f
smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f
smallPillar src/Dodge/Room/Pillar.hs 37;" f smallPillar src/Dodge/Room/Pillar.hs 37;" f
smallRoom src/Dodge/Room/RunPast.hs 31;" f smallRoom src/Dodge/Room/RunPast.hs 32;" f
smg src/Dodge/Item/Held/Stick.hs 58;" f smg src/Dodge/Item/Held/Stick.hs 58;" f
smokeReducer src/Dodge/Item/Scope.hs 162;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f
sndV2 src/Geometry/Data.hs 73;" f sndV2 src/Geometry/Data.hs 73;" f
@@ -5223,8 +5222,8 @@ t src/ShortShow.hs 33;" f
tEast src/Dodge/Room/Corridor.hs 90;" f tEast src/Dodge/Room/Corridor.hs 90;" f
tToBTree src/Dodge/Tree/Compose.hs 92;" f tToBTree src/Dodge/Tree/Compose.hs 92;" f
tWest src/Dodge/Room/Corridor.hs 115;" f tWest src/Dodge/Room/Corridor.hs 115;" f
tabComplete src/Dodge/Terminal.hs 133;" f tabComplete src/Dodge/Terminal.hs 139;" f
tabComplete' src/Dodge/Terminal.hs 139;" f tabComplete' src/Dodge/Terminal.hs 145;" f
takeN src/RandomHelp.hs 44;" f takeN src/RandomHelp.hs 44;" f
takeNMore src/RandomHelp.hs 41;" f takeNMore src/RandomHelp.hs 41;" f
takeOne src/RandomHelp.hs 22;" f takeOne src/RandomHelp.hs 22;" f
@@ -5252,10 +5251,10 @@ targetingScope src/Dodge/Item/Scope.hs 38;" f
telRoomLev src/Dodge/Room/Teleport.hs 14;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f
teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f
termScreenColor src/Dodge/Terminal/Color.hs 10;" f termScreenColor src/Dodge/Terminal/Color.hs 10;" f
termSoundLine src/Dodge/Terminal.hs 48;" f termSoundLine src/Dodge/Terminal.hs 49;" f
termTextColor src/Dodge/Terminal.hs 51;" f termTextColor src/Dodge/Terminal.hs 52;" f
terminalColor src/Dodge/Placement/Instance/Terminal.hs 70;" f terminalColor src/Dodge/Placement/Instance/Terminal.hs 70;" f
terminalReturnEffect src/Dodge/Terminal.hs 184;" f terminalReturnEffect src/Dodge/Terminal.hs 190;" f
terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f
terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f
@@ -5274,7 +5273,7 @@ textJustifyCenter src/Picture/Base.hs 212;" f
textJustifyLeft src/Picture/Base.hs 208;" f textJustifyLeft src/Picture/Base.hs 208;" f
textJustifyRight src/Picture/Base.hs 198;" f textJustifyRight src/Picture/Base.hs 198;" f
textRight src/Picture/Base.hs 203;" f textRight src/Picture/Base.hs 203;" f
textTerminal src/Dodge/Terminal.hs 34;" f textTerminal src/Dodge/Terminal.hs 35;" f
textVMirror src/Picture/Base.hs 216;" f textVMirror src/Picture/Base.hs 216;" f
tflat2 src/Picture/Data.hs 60;" f tflat2 src/Picture/Data.hs 60;" f
tflat3 src/Picture/Data.hs 64;" f tflat3 src/Picture/Data.hs 64;" f
@@ -5309,8 +5308,8 @@ tingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 574;" f
tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 566;" f tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 566;" f
titleOptionsMenu src/Dodge/Menu.hs 102;" f titleOptionsMenu src/Dodge/Menu.hs 102;" f
titleOptionsNoWrite src/Dodge/Menu.hs 105;" f titleOptionsNoWrite src/Dodge/Menu.hs 105;" f
tlDoEffect src/Dodge/Terminal.hs 118;" f tlDoEffect src/Dodge/Terminal.hs 124;" f
tlSetStatus src/Dodge/Terminal.hs 115;" f tlSetStatus src/Dodge/Terminal.hs 121;" f
tmUpdate src/Dodge/Update.hs 499;" f tmUpdate src/Dodge/Update.hs 499;" f
toBinary src/Dodge/Inventory/SelectionList.hs 138;" f toBinary src/Dodge/Inventory/SelectionList.hs 138;" f
toBothLnk src/Dodge/RoomLink.hs 121;" f toBothLnk src/Dodge/RoomLink.hs 121;" f
@@ -5325,7 +5324,7 @@ toV2 src/Geometry/Data.hs 54;" f
toV3 src/Geometry/Data.hs 57;" f toV3 src/Geometry/Data.hs 57;" f
toV4 src/Geometry/Data.hs 60;" f toV4 src/Geometry/Data.hs 60;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 318;" f toggleCombineInv src/Dodge/DisplayInventory.hs 318;" f
toggleCommands src/Dodge/Terminal.hs 93;" f toggleCommands src/Dodge/Terminal.hs 99;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f
toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" f
toggleJust src/MaybeHelp.hs 41;" f toggleJust src/MaybeHelp.hs 41;" f
@@ -5417,11 +5416,12 @@ tryUseParent src/Dodge/Creature/State.hs 143;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f turnTo src/Dodge/Movement/Turn.hs 8;" f
turret src/Dodge/Placement/Instance/Turret.hs 35;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 40;" f tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f
tutRezBox src/Dodge/Room/Tutorial.hs 77;" f tutDrop src/Dodge/Room/Tutorial.hs 56;" f
tutRezBox src/Dodge/Room/Tutorial.hs 79;" f
tutRoomTree src/Dodge/Floor.hs 26;" f tutRoomTree src/Dodge/Floor.hs 26;" f
tutRooms src/Dodge/Room/Tutorial.hs 63;" f tutRooms src/Dodge/Room/Tutorial.hs 62;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 93;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 95;" f
tweenAngles src/Geometry/Vector.hs 195;" f tweenAngles src/Geometry/Vector.hs 195;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
@@ -5429,7 +5429,7 @@ twists src/Dodge/Creature/Test.hs 109;" f
twoFlat src/Dodge/Creature/Test.hs 106;" f twoFlat src/Dodge/Creature/Test.hs 106;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f twoRoomPoss src/Dodge/PlacementSpot.hs 154;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 596;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 596;" f
twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 586;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 586;" f
@@ -5448,10 +5448,10 @@ unsafeSwapKeys src/IntMapHelp.hs 74;" f
unshadowBlock src/Dodge/Block.hs 39;" f unshadowBlock src/Dodge/Block.hs 39;" 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 134;" f unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 138;" f
unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 140;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 145;" f
unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 123;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 126;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 192;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 201;" f
updateAimPos src/Dodge/Update.hs 321;" f updateAimPos src/Dodge/Update.hs 321;" f
updateAllNodes src/TreeHelp.hs 85;" f updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla.hs 44;" f
@@ -5592,19 +5592,19 @@ useHotkey src/Dodge/Creature/YourControl.hs 70;" f
useInventoryPath src/Dodge/HeldUse.hs 1446;" f useInventoryPath src/Dodge/HeldUse.hs 1446;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 245;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 259;" f
useLoadedAmmo src/Dodge/HeldUse.hs 719;" f useLoadedAmmo src/Dodge/HeldUse.hs 719;" f
useMagShield src/Dodge/Euse.hs 27;" f useMagShield src/Dodge/Euse.hs 27;" f
useNormalCamera src/Dodge/Camera.hs 6;" f useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1406;" f useRewindGun src/Dodge/HeldUse.hs 1406;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 179;" f useRoomPosCond src/Dodge/PlacementSpot.hs 188;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 182;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 191;" f
useStopWatch src/Dodge/HeldUse.hs 1387;" f useStopWatch src/Dodge/HeldUse.hs 1387;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1395;" f useTimeScrollGun src/Dodge/HeldUse.hs 1395;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 170;" f useUnusedLnk src/Dodge/PlacementSpot.hs 179;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 197;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 207;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 204;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 214;" f
v2z src/Geometry/Vector3D.hs 93;" f v2z src/Geometry/Vector3D.hs 93;" f
vCen3 src/Geometry/Vector3D.hs 115;" f vCen3 src/Geometry/Vector3D.hs 115;" f
vInverse src/Geometry/Vector.hs 153;" f vInverse src/Geometry/Vector.hs 153;" f
@@ -5645,7 +5645,7 @@ wallToSurface src/Dodge/Base/Collide.hs 172;" f
wallsFromRooms src/Dodge/Layout.hs 146;" f wallsFromRooms src/Dodge/Layout.hs 146;" f
wallsToDraw src/Dodge/Render/Walls.hs 17;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f
warmupSound src/Dodge/HeldUse.hs 1440;" f warmupSound src/Dodge/HeldUse.hs 1440;" f
warningRooms src/Dodge/Room/Warning.hs 25;" f warningRooms src/Dodge/Room/Warning.hs 26;" f
wasdAim src/Dodge/Creature/YourControl.hs 126;" f wasdAim src/Dodge/Creature/YourControl.hs 126;" f
wasdDir src/Dodge/WASD.hs 17;" f wasdDir src/Dodge/WASD.hs 17;" f
wasdM src/Dodge/WASD.hs 9;" f wasdM src/Dodge/WASD.hs 9;" f
@@ -5659,7 +5659,6 @@ weaponBetweenPillars src/Dodge/Room/Room.hs 191;" f
weaponEmptyRoom src/Dodge/Room/Room.hs 137;" f weaponEmptyRoom src/Dodge/Room/Room.hs 137;" f
weaponLongCorridor src/Dodge/Room/Room.hs 216;" f weaponLongCorridor src/Dodge/Room/Room.hs 216;" f
weaponRoom src/Dodge/Room/Room.hs 249;" f weaponRoom src/Dodge/Room/Room.hs 249;" f
weaponTut src/Dodge/Room/Tutorial.hs 50;" f
weaponUnderCrits src/Dodge/Room/Room.hs 154;" f weaponUnderCrits src/Dodge/Room/Room.hs 154;" f
wedgeGeom src/Dodge/Base.hs 42;" f wedgeGeom src/Dodge/Base.hs 42;" f
wedgeOfThickness src/Dodge/Picture.hs 9;" f wedgeOfThickness src/Dodge/Picture.hs 9;" f