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
Room layout (compact):
0,1,2,3
|
+- 4,5,6,7
|
8
Layout with room names:
tutRezBox-0
Corridor-0
|
autoDoor-1
6gon-1
|
Corridor-2
defaultRoom-2
|
doorToggle-6gon-3
|
+- triggerDoorRoom-4
| |
| 6gon-5
| |
| triggerDoorRoom-6
| |
| 6gon-7
|
triggerDoorRoom-8
autoRect-3
+1 -1
View File
@@ -1,4 +1,4 @@
Generating 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
0:TutStartRez
0:teststart
|
1:corDoor
1:TutDrop
|
2:DoorTest
2:TutStartRez
|
3:PickupTest
3:corDoor
|
4:WeaponTestTest
0:0:TutStartRez
0:0:0:tutRezBox
1:0:corDoor
1:0:0:autoDoor
4:DoorTest
|
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]
, _rmPath :: S.Set (Point2, Point2)
, _rmPmnts :: [Placement]
, _rmInPmnt :: [InPlacement]
, _rmOutPmnt :: [OutPlacement]
, _rmInPmnt :: [InPlacement]
-- note that in placements form a list: multiple InPlacements can use the same id
, _rmOutPmnt :: IM.IntMap Placement
, _rmBound :: [[Point2]]
, _rmFloor :: Floor
, _rmName :: String
@@ -128,13 +129,10 @@ data Room = Room
, _rmClusterStatus :: ClusterStatus
}
data OutPlacement = OutPlacement
{ _opPlacement :: Placement
, _opPlacementID :: Int
}
--data OutPlacement = OutPlacement { _opPlacement :: Placement }
data InPlacement = InPlacement
{ _ipPlacement :: [Placement] -> Placement
{ _ipPlacement :: World -> [Placement] -> Placement
, _ipPlacementID :: Int
}
+2 -1
View File
@@ -79,7 +79,8 @@ defaultDirtWall =
}
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 =
+3 -3
View File
@@ -97,7 +97,7 @@ doInPlacements (im, w) =
doRoomInPlacements :: IM.IntMap [Placement] -> GenWorld -> Room -> (GenWorld, Room)
doRoomInPlacements im w rm = foldr f (w, rm) $ _rmInPmnt rm
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 w =
@@ -108,9 +108,9 @@ doRoomOutPlacements ::
(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
f (OutPlacement pl i) ((im, w), rm) =
f (i, pl) ((im, w), rm) =
let ((neww, newrm), plmnts) = placeSpot (w, rm) pl
in ((IM.insert i plmnts im, neww), newrm)
+2 -1
View File
@@ -26,7 +26,8 @@ import NewInt
import System.Random
-- 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 (w, rm) plmnt = case plmnt of
Placement{_plSpot = PSRoomRand i f} -> placeSpotRoomRand rm i f plmnt w
+120 -110
View File
@@ -1,52 +1,51 @@
--{-# LANGUAGE LambdaCase #-}
module Dodge.PlacementSpot
( atFstLnkOut
, atNthLnkOutShiftBy
, rpIsOnPath
, rpIsOffPath
, rpOffPathFromEdge
, rpOnPathFromEdge
, useUnusedLnk
, psRandRanges
, useRoomPosCond
, isUsedLnkUnplaced
, anyUnusedSpot
, unusedSpotAwayFromLink
, isUnusedLnk
, isInLnk
, isOutLnk
, unusedSpotNearInLink
, randDirPS
, unusedSpotAwayFromInLink
, useLnkRoomPos
, atFstLnkOutShiftInward
, atFstLnkOutShiftBy
, atNthLnkOutShiftInward
, unusedOffPathAwayFromLink
, setFallback
, twoRoomPoss
, isUnusedLnkType
, rprBoolShift
, rprShift
, rprBool
, shiftInBy
, resetPLUse
, psposAddLabel
, shiftByV2
, usedRoomLinkPoss
, usedRoomInLinkPoss
, atNthLinkOut
) where
import Dodge.Data.GenWorld
import Geometry
module Dodge.PlacementSpot (
atFstLnkOut,
atNthLnkOutShiftBy,
rpIsOnPath,
rpIsOffPath,
rpOffPathFromEdge,
rpOnPathFromEdge,
useUnusedLnk,
psRandRanges,
useRoomPosCond,
isUsedLnkUnplaced,
anyUnusedSpot,
unusedSpotAwayFromLink,
isUnusedLnk,
isInLnk,
isOutLnk,
unusedSpotNearInLink,
randDirPS,
unusedSpotAwayFromInLink,
useLnkRoomPos,
atFstLnkOutShiftInward,
atFstLnkOutShiftBy,
atNthLnkOutShiftInward,
unusedOffPathAwayFromLink,
setFallback,
twoRoomPoss,
isUnusedLnkType,
rprBoolShift,
rprShift,
rprBool,
shiftInBy,
resetPLUse,
psposAddLabel,
shiftByV2,
usedRoomLinkPoss,
usedRoomInLinkPoss,
atNthLinkOut,
) where
import Control.Lens
import Data.Maybe
import Data.Bifunctor
import Control.Monad.State
import System.Random
import Data.Bifunctor
import Data.Maybe
import qualified Data.Set as S
import Dodge.Data.GenWorld
import Geometry
import System.Random
setDirPS :: Float -> PlacementSpot -> PlacementSpot
setDirPS a ps = case ps of
@@ -57,16 +56,16 @@ setDirPS a ps = case ps of
randDirPS :: RandomGen g => PlacementSpot -> State g PlacementSpot
randDirPS ps = do
a <- state $ randomR (0,pi*2)
a <- state $ randomR (0, pi * 2)
return $ setDirPS a ps
isUnusedLnk :: RoomPos -> Room -> Bool
isUnusedLnk rp _ = case _rpLinkStatus rp of
UnusedLink {} -> _rpPlacementUse rp == 0
UnusedLink{} -> _rpPlacementUse rp == 0
_ -> False
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 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 = any f . _rpType
where
f RoomPosOnPath {} = True
f RoomPosOnPath{} = True
f _ = False
rpIsOffPath :: RoomPos -> Bool
rpIsOffPath = any f . _rpType
where
f RoomPosOffPath {} = True
f RoomPosOffPath{} = True
f _ = False
rpOffPathFromEdge :: PathFromEdge -> RoomPos -> Bool
rpOffPathFromEdge pe = any f . _rpType
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
rpOnPathFromEdge :: PathFromEdge -> RoomPos -> Bool
rpOnPathFromEdge pe = any f . _rpType
where
f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges)
f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges)
resetPLUse :: PlacementSpot -> PlacementSpot
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
resetPLUse _ = error "Tried to reset _rpPlacementUse of non PSPos placement"
rprShift
:: (RoomPos -> Room -> Maybe (Point2,Float))
-> PlacementSpot
rprShift ::
(RoomPos -> Room -> Maybe (Point2, Float)) ->
PlacementSpot
rprShift t = PSPos f (const id) Nothing
where
f rp r = case t rp r of
Just (p,a) -> Just (PS p a, rp & rpPlacementUse +~ 1)
Nothing -> Nothing
Just (p, a) -> Just (PS p a, rp & rpPlacementUse +~ 1)
Nothing -> Nothing
rprBoolShift :: (RoomPos -> Room -> Bool)
-> ((Point2,Float) -> (Point2,Float))
-> PlacementSpot
rprBoolShift ::
(RoomPos -> Room -> Bool) ->
((Point2, Float) -> (Point2, Float)) ->
PlacementSpot
rprBoolShift t shift = PSPos f (const id) Nothing
where
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
where
(p,a) = shift (_rpPos rp, _rpDir rp)
(p, a) = shift (_rpPos rp, _rpDir rp)
unusedSpotAwayFromLink :: Float -> PlacementSpot
unusedSpotAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r)
unusedSpotAwayFromLink x = rprBool $ \rp r ->
_rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r)
setFallback :: Placement -> Placement -> Placement
setFallback fallback
= (plSpot . psFallback %~ maybe (Just fallback) Just)
. (plIDCont %~ fmap (fmap (fmap $ setFallback fallback))
)
setFallback fallback =
(plSpot . psFallback %~ maybe (Just fallback) Just)
. ( plIDCont %~ fmap (fmap (fmap $ setFallback fallback))
)
unusedOffPathAwayFromLink :: Float -> PlacementSpot
--unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpPlacementUse rp == 0
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r)
&& rpIsOffPath rp
--unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
unusedOffPathAwayFromLink x = rprBool $ \rp r ->
_rpPlacementUse rp == 0
&& all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r)
&& rpIsOffPath rp
unusedSpotAwayFromInLink :: Float -> PlacementSpot
unusedSpotAwayFromInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& all ( (>x) . dist (_rpPos rp) ) (usedRoomInLinkPoss r)
unusedSpotAwayFromInLink x = rprBool $ \rp r ->
_rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& all ((> x) . dist (_rpPos rp)) (usedRoomInLinkPoss r)
--twoUnusedLinks :: (PlacementSpot -> PlacementSpot -> Placement) -> Placement
--twoUnusedLinks = twoRoomPoss isUnusedLnk isUnusedLnk
twoRoomPoss :: (RoomPos -> Room -> Bool)
-> (RoomPos -> Room -> Bool)
-> (PlacementSpot -> PlacementSpot -> Placement)
-> Placement
twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing
$ \_ pl1 -> Just $ Placement 10 (rprBool cond2) PutNothing Nothing
$ \_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2)
twoRoomPoss ::
(RoomPos -> Room -> Bool) ->
(RoomPos -> Room -> Bool) ->
(PlacementSpot -> PlacementSpot -> Placement) ->
Placement
twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing $
\_ pl1 -> Just $
Placement 10 (rprBool cond2) PutNothing Nothing $
\_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2)
--isUnusedLnk :: RoomPos -> Bool
--isUnusedLnk rp = case _rpLinkStatus rp of
@@ -161,26 +168,27 @@ twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing
isInLnk :: RoomPos -> Bool
isInLnk rp = case _rpLinkStatus rp of
UsedInLink {} -> _rpPlacementUse rp == 0
UsedInLink{} -> _rpPlacementUse rp == 0
_ -> False
isOutLnk :: RoomPos -> Bool
isOutLnk rp = case _rpLinkStatus rp of
UsedOutLink {} -> _rpPlacementUse rp == 0
UsedOutLink{} -> _rpPlacementUse rp == 0
_ -> False
useUnusedLnk :: PlacementSpot
useUnusedLnk = rprBool isUnusedLnk
isUsedLnkUnplaced :: RoomPos -> Bool
isUsedLnkUnplaced rp = case _rpLinkStatus rp of
UsedOutLink {} -> _rpPlacementUse rp == 0
UsedInLink {} -> _rpPlacementUse rp == 0
isUsedLnkUnplaced rp = case _rpLinkStatus rp of
UsedOutLink{} -> _rpPlacementUse rp == 0
UsedInLink{} -> _rpPlacementUse rp == 0
_ -> 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
useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot,RoomPos)
useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot, RoomPos)
useRoomPosRoomCond t rp r
| t rp r = Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1)
| otherwise = Nothing
@@ -191,23 +199,24 @@ isUnusedLnkType rlt rp _ = case _rpLinkStatus rp of
_ -> False
unusedSpotNearInLink :: Float -> PlacementSpot
unusedSpotNearInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& any ( (<x) . dist (_rpPos rp) ) (usedRoomInLinkPoss r)
unusedSpotNearInLink x = rprBool $ \rp r ->
_rpLinkStatus rp == NotLink
&& _rpPlacementUse rp == 0
&& any ((< x) . dist (_rpPos rp)) (usedRoomInLinkPoss r)
usedRoomInLinkPoss :: Room -> [Point2]
usedRoomInLinkPoss r = mapMaybe f $ _rmPos r
where
f rp = case _rpLinkStatus rp of
UsedInLink {} -> Just $ _rpPos rp
UsedInLink{} -> Just $ _rpPos rp
_ -> Nothing
usedRoomLinkPoss :: Room -> [Point2]
usedRoomLinkPoss r = mapMaybe f $ _rmPos r
where
f rp = case _rpLinkStatus rp of
UsedInLink {} -> Just $ _rpPos rp
UsedOutLink {} -> Just $ _rpPos rp
UsedInLink{} -> Just $ _rpPos rp
UsedOutLink{} -> Just $ _rpPos rp
_ -> Nothing
atFstLnkOut :: PlacementSpot
@@ -216,44 +225,45 @@ atFstLnkOut = atNthLinkOut 0
atNthLinkOut :: Int -> PlacementSpot
atNthLinkOut n = rprBool $ \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n
atNthLnkOutShiftBy :: Int -> ((Point2,Float) -> (Point2,Float)) -> PlacementSpot
atNthLnkOutShiftBy n = rprBoolShift
$ \ rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n
atNthLnkOutShiftBy :: Int -> ((Point2, Float) -> (Point2, Float)) -> PlacementSpot
atNthLnkOutShiftBy n = rprBoolShift $
\rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n
--atNthLnkOutShiftBy n theshift = PSPos f (const id) Nothing
-- where
-- f rp _ = case _rpLinkStatus rp of
-- UsedOutLink {_rplsChildNum = i} | i == n
-- UsedOutLink {_rplsChildNum = i} | i == n
-- -> Just (PS p a, rp & rpPlacementUse +~ 1)
-- _ -> Nothing
-- where
-- (p,a) = theshift (_rpPos rp,_rpDir rp)
atFstLnkOutShiftBy :: ((Point2,Float) -> (Point2,Float)) -> PlacementSpot
atFstLnkOutShiftBy :: ((Point2, Float) -> (Point2, Float)) -> PlacementSpot
atFstLnkOutShiftBy = atNthLnkOutShiftBy 0
atFstLnkOutShiftInward :: Float -> PlacementSpot
atFstLnkOutShiftInward = atNthLnkOutShiftInward 0
atNthLnkOutShiftInward :: Int -> Float -> PlacementSpot
atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n
$ \ (p,a) -> (p +.+ rotateV a (V2 0 (negate x)),a)
atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n $
\(p, a) -> (p +.+ rotateV a (V2 0 (negate x)), a)
shiftInBy :: Float -> (Point2,Float) -> (Point2,Float)
shiftInBy x (p,a) = (p +.+ rotateV a (V2 0 (negate x)),a)
shiftInBy :: Float -> (Point2, Float) -> (Point2, Float)
shiftInBy x (p, a) = (p +.+ rotateV a (V2 0 (negate x)), a)
shiftByV2 :: Point2 -> (Point2,Float) -> (Point2,Float)
shiftByV2 x (p,a) = (p +.+ rotateV a x,a)
shiftByV2 :: Point2 -> (Point2, Float) -> (Point2, Float)
shiftByV2 x (p, a) = (p +.+ rotateV a x, a)
-- this should probably check the placement use, but so should others: should
-- unify these
useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot,RoomPos)
useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot, RoomPos)
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
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
x <- state $ randomR xranges
y <- state $ randomR yranges
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. -}
module Dodge.Room.Airlock where
import Dodge.Annotation.Data
import Dodge.Data.GenWorld
import Dodge.Default.Door
import Dodge.Default.Room
@@ -14,12 +15,36 @@ import Dodge.RoomLink
import Geometry
import Picture
import RandomHelp
import Control.Lens
-- | A passage with a switch that opens forward access while closing backwards access.
airlock :: RandomGen g => State g Room
airlock = takeOne [airlock0, airlock90, airlockCrystal, airlockZ]
--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
airlock0 :: Room
@@ -124,7 +149,7 @@ airlock90 =
defaultRoom
{ _rmPolys =
[ rectNSWE 100 10 10 100
, rectNSWE 20 0 20 60
, rectNSWE 20 (-0.1) 20 60
, rectNSWE 20 60 20 0
, map
toV2
+2 -2
View File
@@ -39,6 +39,6 @@ triggerDoorRoom inplid =
-- note no bounds
}
where
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 _ (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"
cond pmnt = WdTrig $ fromJust (_plMID pmnt)
+7 -9
View File
@@ -35,24 +35,24 @@ cenLasTur =
covershape = rectNSWE 10 (-10) (-20) 20
lightSensInsideDoor :: Int -> Room -> Room
lightSensInsideDoor outplid rm =
lightSensInsideDoor i rm =
rm
& rmPmnts
.++~ [ psPt atFstLnkOut (PutForeground $ floorWire (V2 20 0) (V2 20 (-100)))
, psPt atFstLnkOut (PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100)))
, 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 outplid rm =
lightSensByDoor i rm =
rm
& rmPmnts
.++~ [ psPt atFstLnkOut $ PutForeground $ verticalWire (V2 20 0) 0 80
, heightWallPS (atNthLnkOutShiftInward 1 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
covershape = rectNSWE 10 (-10) (-20) 20
sensorshift (p, a) = (p +.+ rotateV a (V2 60 (-20)), a)
@@ -76,21 +76,19 @@ healthAnalyserByDoor :: Int -> Room -> Room
healthAnalyserByDoor = analyserByDoor (RequireHealth 1100)
analyserByNthLink :: Int -> ProximityRequirement -> Int -> Room -> Room
analyserByNthLink n proxreq outplid rm =
analyserByNthLink n proxreq i rm =
rm
& rmPmnts
.++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80
]
& rmOutPmnt
.:~ OutPlacement
& rmOutPmnt . at i ?~
( analyser
proxreq
(atNthLnkOutShiftBy n (\(p, a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a)))
(atNthLnkOutShiftBy n sensorshift)
)
outplid
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 = analyserByNthLink 0
+1 -1
View File
@@ -61,7 +61,7 @@ longBlockedCorridor maxn = do
n <- state $ randomR (0, maxn)
let plmnts =
[ sPS (V2 20 40) r $ dirtPoly $ square 10
, sPS (V2 20 15) 0 putLamp
-- , sPS (V2 20 15) 0 putLamp
]
sequence $
treeFromPost (replicate n $ shuffleLinks corridor) $
+2 -1
View File
@@ -2,6 +2,7 @@ module Dodge.Room.RunPast (
lockedStart,
) where
import qualified Data.IntMap.Strict as IM
import Color
import qualified Data.Set as S
import Dodge.Cleat
@@ -50,7 +51,7 @@ lockedStart i = do
map (over root $ rmConnectsTo .~ S.member theedge) doorrooms
++ [ return
smallRoom
{ _rmOutPmnt = [OutPlacement (putLitButOnPosExtTrig red useUnusedLnk) i]
{ _rmOutPmnt = IM.singleton i (putLitButOnPosExtTrig red useUnusedLnk)
, _rmPmnts = [plRRpt 0 (PutFlIt theweapon)]
, _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)
sensInsideDoor :: SensorType -> Int -> Room -> Room
sensInsideDoor senseType outplid rm = rm
sensInsideDoor senseType i rm = rm
& rmName .++~ take 4 (show senseType)
& rmPmnts
.++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100))
@@ -66,4 +66,4 @@ sensInsideDoor senseType outplid rm = rm
(textTerminal & tmCommands .:~ TCDamageCommand)
& 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
import Dodge.Room.Corridor
import Dodge.Room.Airlock
import Dodge.Room.RoadBlock
import Dodge.Room.Room
import Dodge.Item.Held.Cane
import Dodge.Item.Ammo
import Dodge.Annotation.Data
@@ -22,7 +26,6 @@ import Dodge.Room.Ngon
--import Dodge.Room.Link
import Dodge.Room.Procedural
import Dodge.Room.RezBox
import Dodge.Room.Room
import Dodge.Room.Warning
--import Dodge.Room.RoadBlock
import Dodge.RoomLink
@@ -40,25 +43,21 @@ import TreeHelp
tutAnoTree :: Annotation
tutAnoTree =
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 $ tutRooms
, AnTree $ pickupTut
, AnTree $ weaponTut
, AnTree $ tutDrop
-- , AnTree $ pickupTut
-- , AnTree $ weaponTut
]
weaponTut :: State LayoutVars (MetaTree Room String)
weaponTut = do
tutDrop :: State LayoutVars (MetaTree Room String)
tutDrop = do
x <- shuffleLinks $ roomNgon 6 100
& rmPmnts .:~ sps (PS 0 0) (PutFlIt $ burstRifle)
return $ tToBTree "WeaponTestTest" $ treePost $ [x]
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]
y <- decontamRoom
return $ tToBTree "TutDrop" $ treePost [x,y,roomRectAutoLinks 40 100]
tutRooms :: State LayoutVars (MetaTree Room String)
tutRooms = do
@@ -67,12 +66,15 @@ tutRooms = do
x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
$ addDoorAtNthLinkToggleTerminal 1 (makeTermPara s) j
$ roomNgon 6 100
bcor <- blockedCorridor
return $ tToBTree "DoorTest" $ Node x
[Node (cleatOnward $ triggerDoorRoom i) []
,Node ( triggerDoorRoom j) []
[treeFromPost [triggerDoorRoom i] (r burstRifle)
,treeFromPost [triggerDoorRoom j] (r (drumMag & itConsumables ?~ 100))
,bcor
]
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 = do
@@ -91,4 +93,4 @@ tutRezBox = do
s = tutorialMessage1
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 j xs i = (rmName .++~ "doorToggle-")
. (rmOutPmnt .:~ OutPlacement outplace i)
. (rmOutPmnt . at i ?~ outplace)
where
outplace =
extTrigLitPos
+14 -7
View File
@@ -16,6 +16,7 @@ module Dodge.Terminal (
tlDoEffect,
) where
import Dodge.Item.Display
import Color
import Data.Char
import qualified Data.List as List
@@ -59,11 +60,12 @@ getCommand :: World
getCommand w tm = \case
TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z))
TCBase -> quitCommand <> toggleCommands tm
TCDamageCommand -> damageCodeCommand w
TCDamageCommand -> damageCodeCommand w tm
TCSensorInfo -> sensorCommand w tm
damageCodeCommand :: World -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
damageCodeCommand w = PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..]
damageCodeCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
damageCodeCommand w tm
= PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..]
where
f :: SensorType -> Maybe (String, [TerminalLine])
f st = do
@@ -82,12 +84,17 @@ decodeSensorType st w = fromMaybe [] $ do
-- ugly
sensorCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine])
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
[ ("REQUIREMENT", [makeTermLine $ show r] )
, ("RADIUS", [makeTermLine $ show d])
, ("STATUS", [makeTermLine $ show b])
[ ("", makeTermPara $ sensorReqToString r 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])
+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
InLink src/Dodge/Data/Room.hs 44;" 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
InSimulation src/Dodge/Data/Scenario.hs 20;" 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
OutAction src/Dodge/Creature/Action.hs 45;" t
OutLink src/Dodge/Data/Room.hs 43;" C
OutPlacement src/Dodge/Data/GenWorld.hs 131;" t
OutsideTerminal src/Dodge/Data/Input.hs 33;" C
OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" 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
_impulsesListList src/Dodge/Data/ActionPlan.hs 98;" f
_input src/Dodge/Data/World.hs 42;" f
_ipPlacement src/Dodge/Data/GenWorld.hs 137;" f
_ipPlacementID src/Dodge/Data/GenWorld.hs 138;" f
_ipPlacement src/Dodge/Data/GenWorld.hs 135;" f
_ipPlacementID src/Dodge/Data/GenWorld.hs 136;" f
_isWarming src/Dodge/Data/Item/Params.hs 23;" f
_ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" 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
_onPathFromEdges src/Dodge/Data/Room.hs 73;" 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
_opTexture src/Dodge/Data/Wall.hs 44;" 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
_rlPos src/Dodge/Data/Room.hs 25;" f
_rlType src/Dodge/Data/Room.hs 24;" f
_rmBound src/Dodge/Data/GenWorld.hs 115;" f
_rmChildren src/Dodge/Data/GenWorld.hs 126;" f
_rmClusterStatus src/Dodge/Data/GenWorld.hs 128;" f
_rmConnectsTo src/Dodge/Data/GenWorld.hs 123;" f
_rmEndWires src/Dodge/Data/GenWorld.hs 122;" f
_rmFloor src/Dodge/Data/GenWorld.hs 116;" f
_rmBound src/Dodge/Data/GenWorld.hs 116;" f
_rmChildren src/Dodge/Data/GenWorld.hs 127;" f
_rmClusterStatus src/Dodge/Data/GenWorld.hs 129;" f
_rmConnectsTo src/Dodge/Data/GenWorld.hs 124;" f
_rmEndWires src/Dodge/Data/GenWorld.hs 123;" f
_rmFloor src/Dodge/Data/GenWorld.hs 117;" f
_rmHeight src/Dodge/Data/Room.hs 38;" f
_rmInPmnt src/Dodge/Data/GenWorld.hs 113;" f
_rmLinkEff src/Dodge/Data/GenWorld.hs 103;" f
_rmLinks src/Dodge/Data/GenWorld.hs 101;" f
_rmMID src/Dodge/Data/GenWorld.hs 124;" f
_rmMParent src/Dodge/Data/GenWorld.hs 125;" f
_rmName src/Dodge/Data/GenWorld.hs 117;" f
_rmOutPmnt src/Dodge/Data/GenWorld.hs 114;" f
_rmMID src/Dodge/Data/GenWorld.hs 125;" f
_rmMParent src/Dodge/Data/GenWorld.hs 126;" f
_rmName src/Dodge/Data/GenWorld.hs 118;" f
_rmOutPmnt src/Dodge/Data/GenWorld.hs 115;" f
_rmPath src/Dodge/Data/GenWorld.hs 111;" f
_rmPmnts src/Dodge/Data/GenWorld.hs 112;" f
_rmPolys src/Dodge/Data/GenWorld.hs 100;" f
_rmPos src/Dodge/Data/GenWorld.hs 110;" f
_rmRandPSs src/Dodge/Data/GenWorld.hs 120;" f
_rmShift src/Dodge/Data/GenWorld.hs 118;" f
_rmStartWires src/Dodge/Data/GenWorld.hs 121;" f
_rmType src/Dodge/Data/GenWorld.hs 127;" f
_rmViewpoints src/Dodge/Data/GenWorld.hs 119;" f
_rmRandPSs src/Dodge/Data/GenWorld.hs 121;" f
_rmShift src/Dodge/Data/GenWorld.hs 119;" f
_rmStartWires src/Dodge/Data/GenWorld.hs 122;" f
_rmType src/Dodge/Data/GenWorld.hs 128;" f
_rmViewpoints src/Dodge/Data/GenWorld.hs 120;" f
_rmWidth src/Dodge/Data/Room.hs 37;" f
_rpDir src/Dodge/Data/Room.hs 16;" 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
addDepth src/Picture/Base.hs 133;" 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
addEdges src/Dodge/Path.hs 122;" 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
addIndefiniteArticle src/StringHelp.hs 17;" 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
addPointPolygon src/Geometry/Polygon.hs 102;" 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
aimStanceInfo src/Dodge/Item/Info.hs 244;" f
aimTurn src/Dodge/Creature/YourControl.hs 165;" f
airlock src/Dodge/Room/Airlock.hs 19;" f
airlock0 src/Dodge/Room/Airlock.hs 25;" f
airlock90 src/Dodge/Room/Airlock.hs 122;" f
airlockCrystal src/Dodge/Room/Airlock.hs 161;" f
airlockDoor src/Dodge/Room/Airlock.hs 51;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f
airlockSimple src/Dodge/Room/Airlock.hs 66;" f
airlockZ src/Dodge/Room/Airlock.hs 91;" f
airlock src/Dodge/Room/Airlock.hs 21;" f
airlock0 src/Dodge/Room/Airlock.hs 50;" f
airlock90 src/Dodge/Room/Airlock.hs 147;" f
airlockCrystal src/Dodge/Room/Airlock.hs 186;" f
airlockDoor src/Dodge/Room/Airlock.hs 76;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 79;" f
airlockSimple src/Dodge/Room/Airlock.hs 91;" f
airlockZ src/Dodge/Room/Airlock.hs 116;" f
allVisibleWalls src/Dodge/Base/Collide.hs 215;" f
alongSegBy src/Geometry.hs 41;" 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
anRoom src/Dodge/Floor.hs 130;" 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
angleBetween src/Geometry.hs 161;" 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
assignHotkey src/Dodge/AssignHotkey.hs 13;" f
assignPushDoors src/Dodge/LevelGen.hs 43;" f
atFstLnkOut src/Dodge/PlacementSpot.hs 212;" f
atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 227;" f
atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 230;" f
atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 215;" f
atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 233;" f
atFstLnkOut src/Dodge/PlacementSpot.hs 222;" f
atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 241;" f
atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 244;" f
atNthLinkOut src/Dodge/PlacementSpot.hs 225;" f
atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 228;" f
atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 247;" f
attachBranch src/Dodge/Tree/Compose.hs 83;" f
attachInfo src/Dodge/Item/Info.hs 58;" 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
combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" 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
comp src/Quaternion.hs 65;" 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
concurrentIS src/Dodge/Update/Input/InGame.hs 281;" f
connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f
connectionBlurb src/Dodge/Terminal.hs 45;" f
connectionBlurbLines src/Dodge/Terminal.hs 37;" f
connectionBlurb src/Dodge/Terminal.hs 46;" f
connectionBlurbLines src/Dodge/Terminal.hs 38;" f
constructEdges src/Polyhedra.hs 34;" f
constructEdgesList src/Polyhedra.hs 43;" 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
craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" 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
createGas src/Dodge/Gas.hs 8;" 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
damThingHitWith src/Dodge/Damage.hs 72;" 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
damageCrWlID src/Dodge/Damage.hs 23;" 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
debugSelectCreatureList src/Dodge/Debug.hs 86;" 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
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
decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" 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
defaultVision src/Dodge/Default/Creature.hs 85;" 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
degToRad src/Geometry/Vector.hs 117;" f
deleteIMInZone src/Dodge/Base.hs 70;" f
@@ -3550,7 +3550,7 @@ errorHead src/ListHelp.hs 76;" f
errorIsLHS src/Geometry.hs 66;" f
errorNormalizeV src/Geometry.hs 55;" 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
exitTerminalSubInv src/Dodge/WorldEffect.hs 107;" 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
getBulletType src/Dodge/HeldUse.hs 943;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 527;" f
getCommand src/Dodge/Terminal.hs 57;" f
getCommands src/Dodge/Terminal.hs 54;" f
getCommand src/Dodge/Terminal.hs 58;" f
getCommands src/Dodge/Terminal.hs 55;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f
getDistortions src/Dodge/Render.hs 435;" 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
headPQ src/Dodge/Creature/HandPos.hs 108;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 74;" f
healthTest src/Dodge/Room/LasTurret.hs 95;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 75;" f
healthTest src/Dodge/Room/LasTurret.hs 96;" f
heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldAimStance src/Dodge/Item/AimStance.hs 24;" 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
heldTorqueAmount src/Dodge/HeldUse.hs 584;" 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
heron src/Geometry.hs 221;" 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
isElectrical src/Dodge/Machine/Update.hs 80;" 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
isLHS src/Geometry/LHS.hs 8;" f
isLeftOf src/Geometry.hs 202;" f
@@ -3940,14 +3940,14 @@ isLeftOfA src/Geometry.hs 196;" f
isNHS src/Geometry/Intersect.hs 51;" f
isNothing' src/MaybeHelp.hs 33;" 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
isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f
isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f
isRHS src/Geometry/LHS.hs 24;" f
isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f
isUnusedLnkType src/Dodge/PlacementSpot.hs 187;" f
isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 173;" f
isUnusedLnkType src/Dodge/PlacementSpot.hs 196;" f
isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 182;" f
isValidCommand src/Dodge/Debug/Terminal.hs 131;" f
isVowel src/StringHelp.hs 8;" 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
keyCard src/Dodge/Item/Held/Utility.hs 20;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 60;" f
keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 471;" 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
lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" 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
lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f
lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f
lasTunnel src/Dodge/Room/LasTurret.hs 126;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f
lasSensorTurretTest src/Dodge/Room/LasTurret.hs 108;" f
lasTunnel src/Dodge/Room/LasTurret.hs 127;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 168;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 34;" 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
liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f
light src/Color.hs 104;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 36;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 47;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 37;" f
lightSensor src/Dodge/Placement/Instance/Sensor.hs 47;" f
lightsToRender src/Dodge/Render/Lights.hs 14;" 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
lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" 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
longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" 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
makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 127;" f
makeColorTermPara src/Dodge/Terminal.hs 124;" f
makeColorTermLine src/Dodge/Terminal.hs 133;" f
makeColorTermPara src/Dodge/Terminal.hs 130;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 45;" 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
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
makeTermLine src/Dodge/Terminal.hs 112;" f
makeTermPara src/Dodge/Terminal.hs 121;" f
makeTermLine src/Dodge/Terminal.hs 118;" f
makeTermPara src/Dodge/Terminal.hs 127;" f
makeTeslaArc src/Dodge/Tesla.hs 29;" f
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" 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
moveShockwave src/Dodge/Shockwave/Update.hs 13;" 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
moveWall src/Dodge/Wall/Move.hs 29;" 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
muout src/Dodge/RoomLink.hs 129;" f
muzFlareAt src/Dodge/HeldUse.hs 676;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 178;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 188;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 191;" 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
mvPP src/Dodge/Placement/PlaceSpot.hs 184;" f
mvPP src/Dodge/Placement/PlaceSpot.hs 185;" f
mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f
mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f
mvPointToward src/Dodge/Base.hs 136;" 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
myIntersectLineLine src/Geometry/Intersect.hs 207;" 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
pickUpItemAt src/Dodge/Inventory/Add.hs 113;" 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 94;" 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
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" 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
plNewID src/Dodge/Base/NewID.hs 7;" f
plNewUpID src/Dodge/Base/NewID.hs 13;" f
plNewUsing src/Dodge/Base/NewID.hs 31;" f
plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f
plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 208;" f
placePickOne src/Dodge/Placement/PlaceSpot.hs 42;" f
placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 54;" f
placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 45;" f
placeSpot src/Dodge/Placement/PlaceSpot.hs 30;" f
placeSpotID src/Dodge/Placement/PlaceSpot.hs 100;" f
placeSpotID' src/Dodge/Placement/PlaceSpot.hs 106;" f
placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f
placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 209;" f
placePickOne src/Dodge/Placement/PlaceSpot.hs 43;" f
placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 55;" f
placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 46;" f
placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f
placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f
placeSpotID' src/Dodge/Placement/PlaceSpot.hs 107;" f
placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f
placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 71;" 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
playIfFree src/Sound.hs 137;" 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
psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" 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
psposAddLabel src/Dodge/PlacementSpot.hs 70;" 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
quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" 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
rLauncher src/Dodge/Item/Held/Launcher.hs 14;" 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
replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" 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
resetTerminal src/Dodge/WorldEffect.hs 101;" 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
roomCCrits src/Dodge/Room/Room.hs 260;" 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
roomGlassOctogon src/Dodge/Room/Boss.hs 21;" 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
roundTank src/Dodge/Placement/Instance/Tank.hs 25;" 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
rpOffPathFromEdge src/Dodge/PlacementSpot.hs 86;" f
rpOnPathFromEdge src/Dodge/PlacementSpot.hs 92;" f
rpOffPathFromEdge src/Dodge/PlacementSpot.hs 88;" f
rpOnPathFromEdge src/Dodge/PlacementSpot.hs 94;" f
rprBool src/Dodge/PlacementSpot.hs 73;" f
rprBoolShift src/Dodge/PlacementSpot.hs 112;" f
rprShift src/Dodge/PlacementSpot.hs 103;" f
rprBoolShift src/Dodge/PlacementSpot.hs 114;" f
rprShift src/Dodge/PlacementSpot.hs 105;" f
rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f
runPastStart src/Dodge/Room/Start.hs 72;" 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
sensInsideDoor src/Dodge/Room/SensorDoor.hs 58;" 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
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 45;" 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
setDepth src/Picture/Base.hs 128;" 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
setInLinksByType src/Dodge/RoomLink.hs 54;" 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
shellShape src/Dodge/Projectile/Draw.hs 35;" 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
shiftDraw src/Dodge/Render/ShapePicture.hs 78;" 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
shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 338;" 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
sigmoid src/Dodge/Base.hs 151;" 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
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" 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
smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" 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
smokeReducer src/Dodge/Item/Scope.hs 162;" 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
tToBTree src/Dodge/Tree/Compose.hs 92;" 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
takeNMore src/RandomHelp.hs 41;" 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
teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f
termScreenColor src/Dodge/Terminal/Color.hs 10;" f
termSoundLine src/Dodge/Terminal.hs 48;" f
termTextColor src/Dodge/Terminal.hs 51;" f
termSoundLine src/Dodge/Terminal.hs 49;" f
termTextColor src/Dodge/Terminal.hs 52;" 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
terminalScreenGlow src/Dodge/Machine/Update.hs 35;" 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
textJustifyRight src/Picture/Base.hs 198;" 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
tflat2 src/Picture/Data.hs 60;" 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
titleOptionsMenu src/Dodge/Menu.hs 102;" f
titleOptionsNoWrite src/Dodge/Menu.hs 105;" f
tlDoEffect src/Dodge/Terminal.hs 118;" f
tlSetStatus src/Dodge/Terminal.hs 115;" f
tlDoEffect src/Dodge/Terminal.hs 124;" f
tlSetStatus src/Dodge/Terminal.hs 121;" f
tmUpdate src/Dodge/Update.hs 499;" f
toBinary src/Dodge/Inventory/SelectionList.hs 138;" 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
toV4 src/Geometry/Data.hs 60;" 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
toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" 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
turret src/Dodge/Placement/Instance/Turret.hs 35;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 40;" f
tutRezBox src/Dodge/Room/Tutorial.hs 77;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f
tutDrop src/Dodge/Room/Tutorial.hs 56;" f
tutRezBox src/Dodge/Room/Tutorial.hs 79;" f
tutRoomTree src/Dodge/Floor.hs 26;" f
tutRooms src/Dodge/Room/Tutorial.hs 63;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 93;" f
tutRooms src/Dodge/Room/Tutorial.hs 62;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 95;" f
tweenAngles src/Geometry/Vector.hs 195;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" 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
twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" 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
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 596;" 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
untilJust src/MonadHelp.hs 7;" f
untilJustCount src/MonadHelp.hs 14;" f
unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 134;" f
unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 140;" f
unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 123;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 192;" f
unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 138;" f
unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 145;" f
unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 126;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 201;" f
updateAimPos src/Dodge/Update.hs 321;" f
updateAllNodes src/TreeHelp.hs 85;" 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
useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" 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
useMagShield src/Dodge/Euse.hs 27;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1406;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 179;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 182;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 188;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 191;" f
useStopWatch src/Dodge/HeldUse.hs 1387;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1395;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 170;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 197;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 204;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 179;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 207;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 214;" f
v2z src/Geometry/Vector3D.hs 93;" f
vCen3 src/Geometry/Vector3D.hs 115;" 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
wallsToDraw src/Dodge/Render/Walls.hs 17;" 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
wasdDir src/Dodge/WASD.hs 17;" 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
weaponLongCorridor src/Dodge/Room/Room.hs 216;" 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
wedgeGeom src/Dodge/Base.hs 42;" f
wedgeOfThickness src/Dodge/Picture.hs 9;" f