Improve door crushing

This commit is contained in:
2026-03-26 19:21:10 +00:00
parent 31d7a00ecf
commit 01b765300e
10 changed files with 107 additions and 87 deletions
+6 -2
View File
@@ -34,6 +34,7 @@ module Dodge.Base.Collide (
collide3, collide3,
) where ) where
import qualified Data.IntMap.Strict as IM
import Control.Lens import Control.Lens
import Control.Monad import Control.Monad
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
@@ -48,7 +49,7 @@ import FoldableHelp
import Geometry import Geometry
import Linear import Linear
collidePoint :: Point2 -> Point2 -> [Wall] -> (Point2, Maybe Wall) collidePoint :: Foldable t => Point2 -> Point2 -> t Wall -> (Point2, Maybe Wall)
{-# INLINE collidePoint #-} {-# INLINE collidePoint #-}
collidePoint sp ep = foldl' f (ep, Nothing) collidePoint sp ep = foldl' f (ep, Nothing)
where where
@@ -201,7 +202,7 @@ collidePointTestFilter t sp ep =
collidePointWallsFilter :: (Wall -> Bool) -> Point2 -> Point2 -> World -> (Point2, Maybe Wall) collidePointWallsFilter :: (Wall -> Bool) -> Point2 -> Point2 -> World -> (Point2, Maybe Wall)
{-# INLINE collidePointWallsFilter #-} {-# INLINE collidePointWallsFilter #-}
collidePointWallsFilter t sp ep = collidePoint sp ep . filter t . wlsNearSeg sp ep collidePointWallsFilter t sp ep = collidePoint sp ep . IM.filter t . wlsNearSeg sp ep
-- overlapSegWalls :: Point2 -> Point2 -> StreamOf Wall -- overlapSegWalls :: Point2 -> Point2 -> StreamOf Wall
-- -> StreamOf (Point2,Wall) -- -> StreamOf (Point2,Wall)
@@ -219,6 +220,7 @@ visibleWalls sp ep =
takeUntil (wlIsOpaque . snd) takeUntil (wlIsOpaque . snd)
. sortOn (dist sp . fst) . sortOn (dist sp . fst)
. overlapSegWalls sp ep . overlapSegWalls sp ep
. IM.elems
. wlsNearSeg sp ep . wlsNearSeg sp ep
allVisibleWalls :: World -> [(Point2, Wall)] allVisibleWalls :: World -> [(Point2, Wall)]
@@ -296,6 +298,7 @@ hasLOS :: Point2 -> Point2 -> World -> Bool
hasLOS p1 p2 = hasLOS p1 p2 =
not not
. collidePointTestFilter (const True) p1 p2 . collidePointTestFilter (const True) p1 p2
. IM.elems
. wlsNearSeg p1 p2 . wlsNearSeg p1 p2
hasButtonLOS :: Point2 -> Point2 -> World -> Bool hasButtonLOS :: Point2 -> Point2 -> World -> Bool
@@ -312,6 +315,7 @@ hasLOSIndirect :: Point2 -> Point2 -> World -> Bool
hasLOSIndirect p1 p2 = hasLOSIndirect p1 p2 =
not not
. collidePointTestFilter wlIsOpaque p1 p2 . collidePointTestFilter wlIsOpaque p1 p2
. IM.elems
. wlsNearSeg p1 p2 . wlsNearSeg p1 p2
canSee :: Int -> Int -> World -> Bool canSee :: Int -> Int -> World -> Bool
+2 -1
View File
@@ -5,6 +5,7 @@ module Dodge.Creature.Action.Blink (
unsafeBlinkAction, unsafeBlinkAction,
) where ) where
import qualified Data.IntMap.Strict as IM
import Linear import Linear
import Dodge.Creature.Radius import Dodge.Creature.Radius
import Dodge.Zoning.Wall import Dodge.Zoning.Wall
@@ -34,7 +35,7 @@ blinkActionMousePos cr w =
p1 = w ^. cWorld . lWorld . lAimPos p1 = w ^. cWorld . lWorld . lAimPos
cpos = cr ^. crPos . _xy cpos = cr ^. crPos . _xy
--p2 = bouncePoint (const True) 1 cpos p1 w --p2 = bouncePoint (const True) 1 cpos p1 w
p2 = pushIntoMaybe $ collideCircWalls cpos p1 r (wlsNearSeg cpos p1 w) p2 = pushIntoMaybe $ collideCircWalls cpos p1 r (IM.elems $ wlsNearSeg cpos p1 w)
r = crRad $ cr ^. crType r = crRad $ cr ^. crType
p3 = maybe p1 ((+.+ squashNormalizeV (cpos -.- p1)) . fst) p2 p3 = maybe p1 ((+.+ squashNormalizeV (cpos -.- p1)) . fst) p2
--p3 = maybe p1 (const 0) p2 --p3 = maybe p1 (const 0) p2
+1 -1
View File
@@ -276,7 +276,7 @@ drawFarWallDetect w =
( \q -> ( \q ->
line line
[ p [ p
, fst $ collidePoint p q $ filter wlIsOpaque $ wlsNearSeg p q w , fst $ collidePoint p q $ filter wlIsOpaque $ IM.elems $ wlsNearSeg p q w
] ]
) )
$ getViewpoints p (_cWorld w) $ getViewpoints p (_cWorld w)
+1 -2
View File
@@ -33,8 +33,7 @@ import Data.Monoid
import RandomHelp import RandomHelp
testStringInit :: Universe -> [String] testStringInit :: Universe -> [String]
testStringInit _ = [] testStringInit u = (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crWallTouch)
--(fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crHP . _HP)
-- <> (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcMaterial) -- <> (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcMaterial)
--testStringInit u = map show (u ^.. uvWorld . cWorld . lWorld . machines . traverse . mcDir) --testStringInit u = map show (u ^.. uvWorld . cWorld . lWorld . machines . traverse . mcDir)
--testStringInit u = map show --testStringInit u = map show
+1 -1
View File
@@ -352,7 +352,7 @@ muzzleWallCheck w cr = fromMaybe cr $ do
cp = cr ^. crPos . _xy cp = cr ^. crPos . _xy
-- cop = cr ^. crOldPos . _xy -- cop = cr ^. crOldPos . _xy
r <- boundPointsRect (cp : ps) r <- boundPointsRect (cp : ps)
let wls = uncurry wlsNearRect r w & filter (not . _wlTouchThrough) let wls = uncurry wlsNearRect r w & IM.elems & filter (not . _wlTouchThrough)
vs = mapMaybe (g cp wls) ps vs = mapMaybe (g cp wls) ps
return $ if null vs return $ if null vs
then cr then cr
+3 -2
View File
@@ -26,6 +26,7 @@ import Geometry
import LensHelp import LensHelp
import SDL (MouseButton (..)) import SDL (MouseButton (..))
import qualified SDL import qualified SDL
import qualified Data.IntMap.Strict as IM
{- Update the screen camera rotation and position, including any in rold scope/remote camera modifiers; {- Update the screen camera rotation and position, including any in rold scope/remote camera modifiers;
update where your avatar's view is from. -} update where your avatar's view is from. -}
@@ -220,7 +221,7 @@ rotateToOverlappingWall w =
maybe maybe
id id
(doWallRotate . snd) (doWallRotate . snd)
(overlapCircWallsClosest p r (filter _wlRotateTo $ wlsNearCirc p r w)) (overlapCircWallsClosest p r (filter _wlRotateTo . IM.elems $ wlsNearCirc p r w))
w w
where where
r = crRad (cr ^. crType) + 10 r = crRad (cr ^. crType) + 10
@@ -245,7 +246,7 @@ farWallDistDirection :: Point2 -> World -> Maybe (Float, Float, Float, Float)
farWallDistDirection p w = boundPoints $ map f $ getViewpoints p (_cWorld w) farWallDistDirection p w = boundPoints $ map f $ getViewpoints p (_cWorld w)
where where
f q = (rotateV (negate (w ^. wCam . camRot)) . (-.- p)) (foldl' findPoint q (wls q)) f q = (rotateV (negate (w ^. wCam . camRot)) . (-.- p)) (foldl' findPoint q (wls q))
wls q = filter wlIsOpaque $ wlsNearSeg p q w wls q = filter wlIsOpaque . IM.elems $ wlsNearSeg p q w
findPoint q = fromMaybe q . uncurry (intersectSegSeg p q) . _wlLine findPoint q = fromMaybe q . uncurry (intersectSegSeg p q) . _wlLine
findBoundDists :: Config -> World -> (Float, Float, Float, Float) findBoundDists :: Config -> World -> (Float, Float, Float, Float)
+18 -4
View File
@@ -1,6 +1,7 @@
-- | Deals with moving creature wall collisions. -- | Deals with moving creature wall collisions.
module Dodge.WallCreatureCollisions (colCrsWalls) where module Dodge.WallCreatureCollisions (colCrsWalls) where
import qualified Data.IntMap.Strict as IM
import Control.Lens import Control.Lens
import Data.Foldable import Data.Foldable
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
@@ -28,19 +29,23 @@ colCrWall w c = cornpush . wallpush $ pushthrough c
r = crRad (c ^. crType) + wallBuffer r = crRad (c ^. crType) + wallBuffer
p1 = c ^. crOldPos . _xy p1 = c ^. crOldPos . _xy
p2 = c ^. crPos . _xy p2 = c ^. crPos . _xy
ls = _wlLine <$> wls ls = _wlLine <$> IM.elems wls
ls' = filter (uncurry $ isLHS p1) ls ls' = filter (uncurry $ isLHS p1) ls
wls = filter notff $ wlsNearCirc p2 r w wls = IM.filter notff $ wlsNearCirc p2 (2*r) w
notff x = x ^. wlMaterial /= ForceField notff x = x ^. wlMaterial /= ForceField
pushCr :: [Wall] -> Creature -> Creature -- might want to check angled crushing
pushCr :: IM.IntMap Wall -> Creature -> Creature
pushCr wls cr pushCr wls cr
| dist ep sp > r && dist ep ap > r = | (dist ep sp > r && dist ep ap > r)
|| wlsCrush twls
=
ecr ecr
& crDamage <>~ [Crushing 1000 0] & crDamage <>~ [Crushing 1000 0]
& crPos . _xy .~ ap & crPos . _xy .~ ap
| otherwise = ecr | otherwise = ecr
where where
twls = IM.elems $ IM.restrictKeys wls (ecr ^. crWallTouch)
ep = ecr ^. crPos . _xy ep = ecr ^. crPos . _xy
ap = cr ^. crOldPos . _xy ap = cr ^. crOldPos . _xy
sp = cr ^. crPos . _xy sp = cr ^. crPos . _xy
@@ -50,6 +55,15 @@ pushCr wls cr
Just p -> acr & crPos . _xy .~ p & crWallTouch %~ IS.insert (wl ^. wlID) Just p -> acr & crPos . _xy .~ p & crWallTouch %~ IS.insert (wl ^. wlID)
Nothing -> acr Nothing -> acr
wlsCrush :: [Wall] -> Bool
wlsCrush [] = False
wlsCrush (x:xs) = any (wlWlCrush x) xs || wlsCrush xs
wlWlCrush :: Wall -> Wall -> Bool
wlWlCrush w1 w2 = angleVV (f w1) (f w2) > 0.75 * pi
where
f = uncurry (-) . (^. wlLine)
-- the amount to push creatures out from walls, extra to their radius -- the amount to push creatures out from walls, extra to their radius
wallBuffer :: Float wallBuffer :: Float
wallBuffer = 0 wallBuffer = 0
+2 -2
View File
@@ -163,10 +163,10 @@ wlHitPos sp ep = maybe ep ((+ normalize (ep - sp)) . fst) . safeHead . wlsHit sp
wlsHitUnsorted :: Point2 -> Point2 -> World -> [(Point2, Wall)] wlsHitUnsorted :: Point2 -> Point2 -> World -> [(Point2, Wall)]
wlsHitUnsorted sp ep wlsHitUnsorted sp ep
| sp == ep = const mempty | sp == ep = const mempty
| otherwise = overlapSegWalls sp ep . wlsNearSeg sp ep | otherwise = overlapSegWalls sp ep . IM.elems . wlsNearSeg sp ep
wlsHitRadial :: Point2 -> Float -> World -> [(Point2, Wall)] wlsHitRadial :: Point2 -> Float -> World -> [(Point2, Wall)]
wlsHitRadial p r = mapMaybe f . wlsNearCirc p r wlsHitRadial p r = mapMaybe f . IM.elems . wlsNearCirc p r
where where
--f wl = uncurry (intersectSegSeg p (p - r *.* v)) (_wlLine wl) <&> (,wl) --f wl = uncurry (intersectSegSeg p (p - r *.* v)) (_wlLine wl) <&> (,wl)
f wl = mhp <&> (,wl) f wl = mhp <&> (,wl)
+6 -7
View File
@@ -11,7 +11,6 @@ module Dodge.Zoning.Wall
import Control.Lens import Control.Lens
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
import Data.Maybe
import Dodge.Data.World import Dodge.Data.World
import Dodge.Zoning.Base import Dodge.Zoning.Base
import FoldableHelp import FoldableHelp
@@ -32,21 +31,21 @@ wlIXsNearRect = nearRect wlZoneSize _wlZoning
wlIXsNearCirc :: Point2 -> Float -> World -> IS.IntSet wlIXsNearCirc :: Point2 -> Float -> World -> IS.IntSet
wlIXsNearCirc p r = wlIXsNearRect (p +.+ V2 r r) (p -.- V2 r r) wlIXsNearCirc p r = wlIXsNearRect (p +.+ V2 r r) (p -.- V2 r r)
wlsFromIXs :: World -> IS.IntSet -> [Wall] wlsFromIXs :: World -> IS.IntSet -> IM.IntMap Wall
{-# INLINE wlsFromIXs #-} {-# INLINE wlsFromIXs #-}
wlsFromIXs w = mapMaybe (\wlid -> w ^? cWorld . lWorld . walls . ix wlid) . IS.toList wlsFromIXs w = IM.restrictKeys (w ^. cWorld . lWorld . walls)
wlsNearPoint :: Point2 -> World -> [Wall] wlsNearPoint :: Point2 -> World -> IM.IntMap Wall
wlsNearPoint p w = wlsFromIXs w $ wlIXsNearPoint p w wlsNearPoint p w = wlsFromIXs w $ wlIXsNearPoint p w
wlsNearSeg :: Point2 -> Point2 -> World -> [Wall] wlsNearSeg :: Point2 -> Point2 -> World -> IM.IntMap Wall
{-# INLINE wlsNearSeg #-} {-# INLINE wlsNearSeg #-}
wlsNearSeg sp ep w = wlsFromIXs w $ wlIXsNearSeg sp ep w wlsNearSeg sp ep w = wlsFromIXs w $ wlIXsNearSeg sp ep w
wlsNearRect :: Point2 -> Point2 -> World -> [Wall] wlsNearRect :: Point2 -> Point2 -> World -> IM.IntMap Wall
wlsNearRect sp ep w = wlsFromIXs w $ wlIXsNearRect sp ep w wlsNearRect sp ep w = wlsFromIXs w $ wlIXsNearRect sp ep w
wlsNearCirc :: Point2 -> Float -> World -> [Wall] wlsNearCirc :: Point2 -> Float -> World -> IM.IntMap Wall
wlsNearCirc p r w = wlsFromIXs w $ wlIXsNearCirc p r w wlsNearCirc p r w = wlsFromIXs w $ wlIXsNearCirc p r w
wlZoneSize :: Float wlZoneSize :: Float
+67 -65
View File
@@ -160,8 +160,8 @@ BulletPayload src/Dodge/Data/Bullet.hs 32;" t
BulletTrajectory src/Dodge/Data/Bullet.hs 40;" t BulletTrajectory src/Dodge/Data/Bullet.hs 40;" t
BulletTrajectoryType src/Dodge/Data/Bullet.hs 47;" t BulletTrajectoryType src/Dodge/Data/Bullet.hs 47;" t
BurstTrigger src/Dodge/Data/TriggerType.hs 12;" C BurstTrigger src/Dodge/Data/TriggerType.hs 12;" C
Button src/Dodge/Data/Button.hs 33;" t Button src/Dodge/Data/Button.hs 29;" t
ButtonAccessTerminal src/Dodge/Data/Button.hs 31;" C ButtonAccessTerminal src/Dodge/Data/Button.hs 27;" C
ButtonDumbSwitch src/Dodge/Data/Button.hs 26;" C ButtonDumbSwitch src/Dodge/Data/Button.hs 26;" C
ButtonEvent src/Dodge/Data/Button.hs 13;" t ButtonEvent src/Dodge/Data/Button.hs 13;" t
ButtonPress src/Dodge/Data/Button.hs 14;" C ButtonPress src/Dodge/Data/Button.hs 14;" C
@@ -699,7 +699,7 @@ MODBlockedString src/Dodge/Data/Universe.hs 106;" C
MODString src/Dodge/Data/Universe.hs 105;" C MODString src/Dodge/Data/Universe.hs 105;" C
MODStringOption src/Dodge/Data/Universe.hs 107;" C MODStringOption src/Dodge/Data/Universe.hs 107;" C
MOTOR src/Dodge/Data/Item/Combine.hs 63;" C MOTOR src/Dodge/Data/Item/Combine.hs 63;" C
MPO src/Dodge/Base/Collide.hs 95;" t MPO src/Dodge/Base/Collide.hs 96;" t
MTRS src/Dodge/Data/MTRS.hs 6;" t MTRS src/Dodge/Data/MTRS.hs 6;" t
MTree src/Dodge/Data/MetaTree.hs 12;" C MTree src/Dodge/Data/MetaTree.hs 12;" C
Machine src/Dodge/Data/Machine.hs 30;" t Machine src/Dodge/Data/Machine.hs 30;" t
@@ -1561,9 +1561,7 @@ _bdMaxX src/Dodge/Data/Bounds.hs 12;" f
_bdMaxY src/Dodge/Data/Bounds.hs 14;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f
_bdMinX src/Dodge/Data/Bounds.hs 11;" f _bdMinX src/Dodge/Data/Bounds.hs 11;" f
_bdMinY src/Dodge/Data/Bounds.hs 13;" f _bdMinY src/Dodge/Data/Bounds.hs 13;" f
_bdsColor1 src/Dodge/Data/Button.hs 28;" f _bdsTrigger src/Dodge/Data/Button.hs 26;" f
_bdsColor2 src/Dodge/Data/Button.hs 29;" f
_bdsTrigger src/Dodge/Data/Button.hs 27;" f
_beamCombine src/Dodge/Data/Beam.hs 46;" f _beamCombine src/Dodge/Data/Beam.hs 46;" f
_blDir src/Dodge/Data/Block.hs 27;" f _blDir src/Dodge/Data/Block.hs 27;" f
_blDraw src/Dodge/Data/Block.hs 29;" f _blDraw src/Dodge/Data/Block.hs 29;" f
@@ -1596,13 +1594,13 @@ _bpColor src/Dodge/Data/Button.hs 17;" f
_bpEff src/Dodge/Data/Button.hs 16;" f _bpEff src/Dodge/Data/Button.hs 16;" f
_bsColor1 src/Dodge/Data/Button.hs 22;" f _bsColor1 src/Dodge/Data/Button.hs 22;" f
_bsColor2 src/Dodge/Data/Button.hs 23;" f _bsColor2 src/Dodge/Data/Button.hs 23;" f
_btEvent src/Dodge/Data/Button.hs 36;" f _btEvent src/Dodge/Data/Button.hs 32;" f
_btID src/Dodge/Data/Button.hs 37;" f _btID src/Dodge/Data/Button.hs 33;" f
_btOn src/Dodge/Data/Button.hs 15;" f _btOn src/Dodge/Data/Button.hs 15;" f
_btOn src/Dodge/Data/Button.hs 24;" f _btOn src/Dodge/Data/Button.hs 24;" f
_btPos src/Dodge/Data/Button.hs 34;" f _btPos src/Dodge/Data/Button.hs 30;" f
_btRot src/Dodge/Data/Button.hs 35;" f _btRot src/Dodge/Data/Button.hs 31;" f
_btTermID src/Dodge/Data/Button.hs 31;" f _btTermID src/Dodge/Data/Button.hs 27;" f
_buDam src/Dodge/Data/Bullet.hs 34;" f _buDam src/Dodge/Data/Bullet.hs 34;" f
_buDrag src/Dodge/Data/Bullet.hs 20;" f _buDrag src/Dodge/Data/Bullet.hs 20;" f
_buEffect src/Dodge/Data/Bullet.hs 17;" f _buEffect src/Dodge/Data/Bullet.hs 17;" f
@@ -2532,7 +2530,7 @@ activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 63;" f
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
addArmour src/Dodge/Creature.hs 82;" f addArmour src/Dodge/Creature.hs 82;" f
addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f
addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 97;" f
addCrGibs src/Dodge/Prop/Gib.hs 17;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f
addDepth src/Picture/Base.hs 125;" f addDepth src/Picture/Base.hs 125;" f
addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 43;" f addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 43;" f
@@ -2563,7 +2561,7 @@ addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f
addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f
addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f
addSideEffect src/Dodge/Concurrent.hs 29;" f addSideEffect src/Dodge/Concurrent.hs 29;" f
addSouthPillars src/Dodge/Room/LongDoor.hs 88;" f addSouthPillars src/Dodge/Room/LongDoor.hs 89;" f
addTermSignal src/Dodge/Event/Input.hs 31;" f addTermSignal src/Dodge/Event/Input.hs 31;" f
addToTrunk src/TreeHelp.hs 157;" f addToTrunk src/TreeHelp.hs 157;" f
addWarningTerminal src/Dodge/Room/Warning.hs 94;" f addWarningTerminal src/Dodge/Room/Warning.hs 94;" f
@@ -2581,7 +2579,7 @@ airlockCrystal src/Dodge/Room/Airlock.hs 251;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 104;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 104;" f
airlockSimple src/Dodge/Room/Airlock.hs 129;" f airlockSimple src/Dodge/Room/Airlock.hs 129;" f
airlockZ src/Dodge/Room/Airlock.hs 166;" f airlockZ src/Dodge/Room/Airlock.hs 166;" f
allVisibleWalls src/Dodge/Base/Collide.hs 224;" f allVisibleWalls src/Dodge/Base/Collide.hs 226;" f
alongSegBy src/Geometry.hs 40;" f alongSegBy src/Geometry.hs 40;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
alteRifleAmmoOrient src/Dodge/Item/Orientation.hs 51;" f alteRifleAmmoOrient src/Dodge/Item/Orientation.hs 51;" f
@@ -2597,7 +2595,7 @@ angleBetween src/Geometry.hs 158;" f
angleVV src/Geometry/Vector.hs 58;" f angleVV src/Geometry/Vector.hs 58;" f
angleVV3 src/Geometry/Vector3D.hs 122;" f angleVV3 src/Geometry/Vector3D.hs 122;" f
anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f
anythingHitCirc src/Dodge/Base/Collide.hs 331;" f anythingHitCirc src/Dodge/Base/Collide.hs 335;" f
applyCME src/Dodge/HeldUse.hs 397;" f applyCME src/Dodge/HeldUse.hs 397;" f
applyClip src/Dodge/Debug.hs 176;" f applyClip src/Dodge/Debug.hs 176;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f
@@ -2743,7 +2741,7 @@ boolOption src/Dodge/Menu/OptionType.hs 12;" f
bossKeyItems src/Dodge/LockAndKey.hs 13;" f bossKeyItems src/Dodge/LockAndKey.hs 13;" f
bossRoom src/Dodge/Room/Boss.hs 55;" f bossRoom src/Dodge/Room/Boss.hs 55;" f
bounceDir src/Dodge/Bullet.hs 111;" f bounceDir src/Dodge/Bullet.hs 111;" f
bouncePoint src/Dodge/Base/Collide.hs 85;" f bouncePoint src/Dodge/Base/Collide.hs 86;" f
bounceSound src/Dodge/Projectile/Update.hs 74;" f bounceSound src/Dodge/Projectile/Update.hs 74;" f
boundPoints src/Bound.hs 9;" f boundPoints src/Bound.hs 9;" f
boundPointsRect src/Bound.hs 23;" f boundPointsRect src/Bound.hs 23;" f
@@ -2779,8 +2777,8 @@ cFilledRect src/Dodge/CharacterEnums.hs 6;" f
cWireRect src/Dodge/CharacterEnums.hs 10;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f
calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f
calcTexCoord src/Tile.hs 19;" f calcTexCoord src/Tile.hs 19;" f
canSee src/Dodge/Base/Collide.hs 317;" f canSee src/Dodge/Base/Collide.hs 321;" f
canSeeIndirect src/Dodge/Base/Collide.hs 324;" f canSeeIndirect src/Dodge/Base/Collide.hs 328;" f
cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f
capacitor src/Dodge/Item/Ammo.hs 67;" f capacitor src/Dodge/Item/Ammo.hs 67;" f
card8Vec src/Dodge/Base/CardinalPoint.hs 17;" f card8Vec src/Dodge/Base/CardinalPoint.hs 17;" f
@@ -2815,7 +2813,7 @@ chasmSimpleMaze src/Dodge/Room/Tutorial.hs 358;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 298;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 298;" f
chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f
chasmTestLiving src/Dodge/Creature/Update.hs 137;" f chasmTestLiving src/Dodge/Creature/Update.hs 137;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f chasmWallToSurface src/Dodge/Base/Collide.hs 119;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f
checkDeath src/Dodge/Creature/Update.hs 78;" f checkDeath src/Dodge/Creature/Update.hs 78;" f
@@ -2838,12 +2836,12 @@ chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f
chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f
chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f
chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 61;" f chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 61;" f
circHitWall src/Dodge/Base/Collide.hs 237;" f circHitWall src/Dodge/Base/Collide.hs 239;" f
circInPolygon src/Geometry/Polygon.hs 110;" f circInPolygon src/Geometry/Polygon.hs 110;" f
circOnAnyCr src/Dodge/Base/Collide.hs 282;" f circOnAnyCr src/Dodge/Base/Collide.hs 284;" f
circOnSeg src/Geometry.hs 101;" f circOnSeg src/Geometry.hs 101;" f
circOnSegNoEndpoints src/Geometry.hs 91;" f circOnSegNoEndpoints src/Geometry.hs 91;" f
circOnSomeWall src/Dodge/Base/Collide.hs 276;" f circOnSomeWall src/Dodge/Base/Collide.hs 278;" f
circle src/Picture/Base.hs 172;" f circle src/Picture/Base.hs 172;" f
circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f
circleSolid src/Picture/Base.hs 156;" f circleSolid src/Picture/Base.hs 156;" f
@@ -2879,22 +2877,22 @@ clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f
clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f
clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f
cogRaised src/Dodge/Creature/Perception.hs 101;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f
colCrWall src/Dodge/WallCreatureCollisions.hs 22;" f colCrWall src/Dodge/WallCreatureCollisions.hs 23;" f
colCrsWalls src/Dodge/WallCreatureCollisions.hs 14;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 15;" f
collectDamageTypes src/Dodge/Damage.hs 53;" f collectDamageTypes src/Dodge/Damage.hs 53;" f
collectInvItems src/Dodge/Inventory.hs 201;" f collectInvItems src/Dodge/Inventory.hs 201;" f
collide3 src/Dodge/Base/Collide.hs 127;" f collide3 src/Dodge/Base/Collide.hs 128;" f
collide3Chasm src/Dodge/Base/Collide.hs 111;" f collide3Chasm src/Dodge/Base/Collide.hs 112;" f
collide3Chasms src/Dodge/Base/Collide.hs 103;" f collide3Chasms src/Dodge/Base/Collide.hs 104;" f
collide3Creature src/Dodge/Base/Collide.hs 160;" f collide3Creature src/Dodge/Base/Collide.hs 161;" f
collide3Floors src/Dodge/Base/Collide.hs 141;" f collide3Floors src/Dodge/Base/Collide.hs 142;" f
collide3Wall src/Dodge/Base/Collide.hs 155;" f collide3Wall src/Dodge/Base/Collide.hs 156;" f
collide3Walls src/Dodge/Base/Collide.hs 136;" f collide3Walls src/Dodge/Base/Collide.hs 137;" f
collide3WallsFloor src/Dodge/Base/Collide.hs 97;" f collide3WallsFloor src/Dodge/Base/Collide.hs 98;" f
collideCircWalls src/Dodge/Base/Collide.hs 249;" f collideCircWalls src/Dodge/Base/Collide.hs 251;" f
collidePoint src/Dodge/Base/Collide.hs 51;" f collidePoint src/Dodge/Base/Collide.hs 52;" f
collidePointTestFilter src/Dodge/Base/Collide.hs 188;" f collidePointTestFilter src/Dodge/Base/Collide.hs 189;" f
collidePointWallsFilter src/Dodge/Base/Collide.hs 202;" f collidePointWallsFilter src/Dodge/Base/Collide.hs 203;" f
color src/Picture/Base.hs 100;" f color src/Picture/Base.hs 100;" f
colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f
colorSH src/Shape.hs 234;" f colorSH src/Shape.hs 234;" f
@@ -2957,7 +2955,7 @@ crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f
crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f
crHasTarget src/Dodge/Creature/Test.hs 66;" f crHasTarget src/Dodge/Creature/Test.hs 66;" f
crHasTargetLOS src/Dodge/Creature/Test.hs 69;" f crHasTargetLOS src/Dodge/Creature/Test.hs 69;" f
crHeight src/Dodge/Base/Collide.hs 173;" f crHeight src/Dodge/Base/Collide.hs 174;" f
crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f
crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f
crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f
@@ -3147,7 +3145,7 @@ defaultDirtBlock src/Dodge/Default/Block.hs 17;" f
defaultDirtWall src/Dodge/Default/Wall.hs 47;" f defaultDirtWall src/Dodge/Default/Wall.hs 47;" f
defaultDoor src/Dodge/Default/Door.hs 5;" f defaultDoor src/Dodge/Default/Door.hs 5;" f
defaultDoorWall src/Dodge/Default/Wall.hs 29;" f defaultDoorWall src/Dodge/Default/Wall.hs 29;" f
defaultDrawButton src/Dodge/Button/Draw.hs 30;" f defaultDrawButton src/Dodge/Button/Draw.hs 44;" f
defaultFlIt src/Dodge/Default.hs 27;" f defaultFlIt src/Dodge/Default.hs 27;" f
defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f
defaultHUD src/Dodge/Default/World.hs 172;" f defaultHUD src/Dodge/Default/World.hs 172;" f
@@ -3224,7 +3222,7 @@ doAnyEquipmentEffect src/Dodge/Creature/State.hs 140;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f
doBlBl src/Dodge/BlBl.hs 5;" f doBlBl src/Dodge/BlBl.hs 5;" f
doBounce src/Dodge/Base/Collide.hs 66;" f doBounce src/Dodge/Base/Collide.hs 67;" f
doButtonEvent src/Dodge/Button/Event.hs 9;" f doButtonEvent src/Dodge/Button/Event.hs 9;" f
doConLoop src/Loop.hs 138;" f doConLoop src/Loop.hs 138;" f
doConLoop' src/Loop.hs 230;" f doConLoop' src/Loop.hs 230;" f
@@ -3310,7 +3308,7 @@ drawBlip src/Dodge/RadarBlip.hs 16;" f
drawBlock src/Dodge/Render/ShapePicture.hs 81;" f drawBlock src/Dodge/Render/ShapePicture.hs 81;" f
drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f
drawBullet src/Dodge/Render/ShapePicture.hs 175;" f drawBullet src/Dodge/Render/ShapePicture.hs 175;" f
drawButton src/Dodge/Button/Draw.hs 10;" f drawButton src/Dodge/Button/Draw.hs 11;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f
drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f
@@ -3337,6 +3335,7 @@ drawDragPickup src/Dodge/Render/Picture.hs 236;" f
drawDragSelect src/Dodge/Render/Picture.hs 195;" f drawDragSelect src/Dodge/Render/Picture.hs 195;" f
drawDragSelected src/Dodge/Render/HUD.hs 144;" f drawDragSelected src/Dodge/Render/HUD.hs 144;" f
drawDragSelecting src/Dodge/Render/HUD.hs 162;" f drawDragSelecting src/Dodge/Render/HUD.hs 162;" f
drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f
drawEmptySet src/Dodge/Render/Picture.hs 151;" f drawEmptySet src/Dodge/Render/Picture.hs 151;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f
drawEquipment src/Dodge/Creature/Picture.hs 125;" f drawEquipment src/Dodge/Creature/Picture.hs 125;" f
@@ -3404,7 +3403,7 @@ drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f
drawSpark src/Dodge/Spark/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f
drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f
drawSubInventory src/Dodge/Render/HUD.hs 173;" f drawSubInventory src/Dodge/Render/HUD.hs 173;" f
drawSwitch src/Dodge/Button/Draw.hs 17;" f drawSwitch src/Dodge/Button/Draw.hs 18;" f
drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f
drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f
drawTerminalCursorLink src/Dodge/Render/HUD.hs 392;" f drawTerminalCursorLink src/Dodge/Render/HUD.hs 392;" f
@@ -3722,10 +3721,10 @@ handleTextInput src/Dodge/Event/Input.hs 19;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f
hardQuit src/Dodge/Concurrent.hs 32;" f hardQuit src/Dodge/Concurrent.hs 32;" f
hasAutoDoorBody src/Dodge/Creature/Test.hs 141;" f hasAutoDoorBody src/Dodge/Creature/Test.hs 141;" f
hasButtonLOS src/Dodge/Base/Collide.hs 301;" f hasButtonLOS src/Dodge/Base/Collide.hs 304;" f
hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f
hasLOS src/Dodge/Base/Collide.hs 294;" f hasLOS src/Dodge/Base/Collide.hs 296;" f
hasLOSIndirect src/Dodge/Base/Collide.hs 310;" f hasLOSIndirect src/Dodge/Base/Collide.hs 313;" f
hat src/Dodge/Item/Equipment.hs 65;" f hat src/Dodge/Item/Equipment.hs 65;" f
head src/DoubleStack.hs 14;" f head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 68;" f headLamp src/Dodge/Item/Equipment.hs 68;" f
@@ -4098,6 +4097,7 @@ makeCorpse src/Dodge/Corpse/Make.hs 13;" f
makeDebris src/Dodge/Block/Debris.hs 48;" f makeDebris src/Dodge/Block/Debris.hs 48;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f
makeDoorDebris src/Dodge/Block/Debris.hs 26;" f makeDoorDebris src/Dodge/Block/Debris.hs 26;" f
makeDumbSwitch src/Dodge/Room/LongDoor.hs 141;" f
makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 68;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 68;" f
makeFlak src/Dodge/Bullet.hs 146;" f makeFlak src/Dodge/Bullet.hs 146;" f
@@ -4298,7 +4298,7 @@ nextInSectionSS src/Dodge/SelectionSections.hs 34;" f
nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f
noPic src/ShapePicture.hs 25;" f noPic src/ShapePicture.hs 25;" f
noShape src/ShapePicture.hs 29;" f noShape src/ShapePicture.hs 29;" f
noclipCheck src/Dodge/WallCreatureCollisions.hs 17;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 18;" f
nodesNear src/Dodge/Path.hs 75;" f nodesNear src/Dodge/Path.hs 75;" f
nonConvexChasm src/Dodge/Room/Tutorial.hs 260;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 260;" f
nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f
@@ -4358,10 +4358,10 @@ overPos src/Picture/Base.hs 298;" f
overPosObj src/Shape.hs 274;" f overPosObj src/Shape.hs 274;" f
overPosSH src/Shape.hs 258;" f overPosSH src/Shape.hs 258;" f
overPosSP src/ShapePicture.hs 41;" f overPosSP src/ShapePicture.hs 41;" f
overlapCircWalls src/Dodge/Base/Collide.hs 230;" f overlapCircWalls src/Dodge/Base/Collide.hs 232;" f
overlapCircWallsClosest src/Dodge/Base/Collide.hs 269;" f overlapCircWallsClosest src/Dodge/Base/Collide.hs 271;" f
overlapSegCrs src/Dodge/Base/Collide.hs 58;" f overlapSegCrs src/Dodge/Base/Collide.hs 59;" f
overlapSegWalls src/Dodge/Base/Collide.hs 211;" f overlapSegWalls src/Dodge/Base/Collide.hs 212;" f
overrideInternal src/Dodge/Creature/ReaderUpdate.hs 180;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 180;" f
overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f
overwriteLabel src/Dodge/Tree/Compose.hs 32;" f overwriteLabel src/Dodge/Tree/Compose.hs 32;" f
@@ -4549,10 +4549,10 @@ psposAddLabel src/Dodge/PlacementSpot.hs 71;" f
pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f
ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f
pulseChecker src/Dodge/Item/Equipment.hs 84;" f pulseChecker src/Dodge/Item/Equipment.hs 84;" f
pushCr src/Dodge/WallCreatureCollisions.hs 36;" f pushCr src/Dodge/WallCreatureCollisions.hs 37;" f
pushL src/DoubleStack.hs 20;" f pushL src/DoubleStack.hs 20;" f
pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 70;" f pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 83;" f
pushOutFromWall src/Dodge/WallCreatureCollisions.hs 59;" f pushOutFromWall src/Dodge/WallCreatureCollisions.hs 72;" f
pushR src/DoubleStack.hs 24;" f pushR src/DoubleStack.hs 24;" f
pushScreen src/Dodge/Menu/PushPop.hs 9;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f
pushYouOutFromWalls src/Dodge/Update.hs 342;" f pushYouOutFromWalls src/Dodge/Update.hs 342;" f
@@ -4967,10 +4967,10 @@ showEquipItem src/Dodge/Item/Display.hs 108;" f
showInt src/Dodge/Item/Info.hs 75;" f showInt src/Dodge/Item/Info.hs 75;" f
showIntsString src/Dodge/Tree/Compose.hs 130;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f
showInventoryPathing src/Dodge/Item/Display.hs 86;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f
showManObj src/Dodge/TestString.hs 58;" f showManObj src/Dodge/TestString.hs 57;" f
showMuzzlePositions src/Dodge/Debug.hs 292;" f showMuzzlePositions src/Dodge/Debug.hs 292;" f
showTerminalError src/Dodge/Debug/Terminal.hs 80;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f
showTimeFlow src/Dodge/TestString.hs 67;" f showTimeFlow src/Dodge/TestString.hs 66;" f
shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f
shrinkVert src/Geometry/Polygon.hs 202;" f shrinkVert src/Geometry/Polygon.hs 202;" f
shuffle src/RandomHelp.hs 68;" f shuffle src/RandomHelp.hs 68;" f
@@ -5006,9 +5006,9 @@ slapClean7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 747;" f
slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f
slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f
slideWindow src/ListHelp.hs 81;" f slideWindow src/ListHelp.hs 81;" f
slowCrushRoom src/Dodge/Room/LongDoor.hs 140;" f slowCrushRoom src/Dodge/Room/LongDoor.hs 144;" f
slowDoorRoom src/Dodge/Room/LongDoor.hs 152;" f slowDoorRoom src/Dodge/Room/LongDoor.hs 176;" f
slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 169;" f slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 193;" f
smallBattery src/Dodge/Item/Ammo.hs 57;" f smallBattery src/Dodge/Item/Ammo.hs 57;" f
smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f
smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f
@@ -5043,7 +5043,7 @@ soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 175;" f
soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f
soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatus src/Dodge/SoundLogic.hs 104;" f
soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f
southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 86;" f
spaceAction src/Dodge/Update/Input/InGame.hs 504;" f spaceAction src/Dodge/Update/Input/InGame.hs 504;" f
spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 160;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 160;" f
spanColLightI src/Dodge/Placement/Instance/LightSource.hs 153;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 153;" f
@@ -5076,7 +5076,7 @@ sqPlatformChasm src/Dodge/Room/Tutorial.hs 225;" f
sqSpitChasm src/Dodge/Room/Tutorial.hs 240;" f sqSpitChasm src/Dodge/Room/Tutorial.hs 240;" f
square src/Geometry/Polygon.hs 56;" f square src/Geometry/Polygon.hs 56;" f
squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f
squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 73;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 86;" f
squashNormalizeV src/Geometry/Vector.hs 158;" f squashNormalizeV src/Geometry/Vector.hs 158;" f
ssLookupDown src/Dodge/SelectionSections.hs 96;" f ssLookupDown src/Dodge/SelectionSections.hs 96;" f
ssLookupGE' src/Dodge/SelectionSections.hs 150;" f ssLookupGE' src/Dodge/SelectionSections.hs 150;" f
@@ -5269,7 +5269,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f
topInvW src/Dodge/ListDisplayParams.hs 54;" f topInvW src/Dodge/ListDisplayParams.hs 54;" f
topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f
topPrismIndices src/Shader/Poke.hs 410;" f topPrismIndices src/Shader/Poke.hs 410;" f
topTestPart src/Dodge/TestString.hs 54;" f topTestPart src/Dodge/TestString.hs 53;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 606;" f torqueAmount src/Dodge/HeldUse.hs 606;" f
torqueCr src/Dodge/WorldEffect.hs 86;" f torqueCr src/Dodge/WorldEffect.hs 86;" f
@@ -5348,8 +5348,8 @@ tutRezBox src/Dodge/Room/Tutorial.hs 525;" f
tutRoomTree src/Dodge/Floor.hs 20;" f tutRoomTree src/Dodge/Floor.hs 20;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 550;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 550;" f
tweenAngles src/Geometry/Vector.hs 190;" f tweenAngles src/Geometry/Vector.hs 190;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 35;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 36;" f
twists src/Dodge/Creature/Test.hs 103;" f twists src/Dodge/Creature/Test.hs 103;" f
twoFlat src/Dodge/Creature/Test.hs 100;" f twoFlat src/Dodge/Creature/Test.hs 100;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 76;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 76;" f
@@ -5564,7 +5564,7 @@ viewGameRoomBoundaries src/Dodge/Debug/Picture.hs 332;" f
viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f
viewTarget src/Dodge/Creature/ReaderUpdate.hs 155;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 155;" f
violet src/Color.hs 48;" f violet src/Color.hs 48;" f
visibleWalls src/Dodge/Base/Collide.hs 216;" f visibleWalls src/Dodge/Base/Collide.hs 217;" f
visionCheck src/Dodge/Creature/Perception.hs 152;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f
vocalizationTest src/Dodge/Creature/Vocalization.hs 62;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 62;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
@@ -5572,9 +5572,9 @@ volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f
walkNozzle src/Dodge/HeldUse.hs 826;" f walkNozzle src/Dodge/HeldUse.hs 826;" f
walkableNodeNear src/Dodge/Path.hs 69;" f walkableNodeNear src/Dodge/Path.hs 69;" f
wallBlips src/Dodge/RadarSweep.hs 99;" f wallBlips src/Dodge/RadarSweep.hs 99;" f
wallBuffer src/Dodge/WallCreatureCollisions.hs 54;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 67;" f
wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f
wallToSurface src/Dodge/Base/Collide.hs 180;" f wallToSurface src/Dodge/Base/Collide.hs 181;" f
wallsFromRooms src/Dodge/Layout.hs 141;" f wallsFromRooms src/Dodge/Layout.hs 141;" f
wallsToDraw src/Dodge/Render/Walls.hs 18;" f wallsToDraw src/Dodge/Render/Walls.hs 18;" f
warmupSound src/Dodge/HeldUse.hs 1396;" f warmupSound src/Dodge/HeldUse.hs 1396;" f
@@ -5627,7 +5627,9 @@ wlIsOpaque src/Dodge/Base/Wall.hs 6;" f
wlIsSeeThrough src/Dodge/Base/Wall.hs 11;" f wlIsSeeThrough src/Dodge/Base/Wall.hs 11;" f
wlOpaqueDraw src/Dodge/Render/Walls.hs 53;" f wlOpaqueDraw src/Dodge/Render/Walls.hs 53;" f
wlSeeThroughDraw src/Dodge/Render/Walls.hs 56;" f wlSeeThroughDraw src/Dodge/Render/Walls.hs 56;" f
wlWlCrush src/Dodge/WallCreatureCollisions.hs 61;" f
wlZoneSize src/Dodge/Zoning/Wall.hs 52;" f wlZoneSize src/Dodge/Zoning/Wall.hs 52;" f
wlsCrush src/Dodge/WallCreatureCollisions.hs 57;" f
wlsFromIXs src/Dodge/Zoning/Wall.hs 35;" f wlsFromIXs src/Dodge/Zoning/Wall.hs 35;" f
wlsHit src/Dodge/WorldEvent/ThingsHit.hs 156;" f wlsHit src/Dodge/WorldEvent/ThingsHit.hs 156;" f
wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 168;" f wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 168;" f