Fix shockwave damage radius for walls

This commit is contained in:
2025-10-28 08:09:44 +00:00
parent 20042fcf8d
commit d6c4d3d609
16 changed files with 137 additions and 314 deletions
+1 -2
View File
@@ -49,8 +49,7 @@ data GrenadeHitEffect
| GStuckWall {_stuckWlID :: WallStructure} | GStuckWall {_stuckWlID :: WallStructure}
deriving (Show, Eq, Ord, Read) --Generic, Flat) deriving (Show, Eq, Ord, Read) --Generic, Flat)
data RocketSmoke data RocketSmoke = ReducedRocketSmoke
= ReducedRocketSmoke
deriving (Show, Eq, Ord, Read) --Generic, Flat) deriving (Show, Eq, Ord, Read) --Generic, Flat)
makeLenses ''Projectile makeLenses ''Projectile
+3 -60
View File
@@ -2,12 +2,7 @@
module Dodge.Debug (debugEvents, drawDebug) where module Dodge.Debug (debugEvents, drawDebug) where
import Geometry.Data import AesonHelp
import Dodge.WorldBool
import Dodge.Zoning.Pathing
import Dodge.Door.DoorLerp
import Dodge.ShiftPoint
import Dodge.Zoning.Base
import Control.Lens import Control.Lens
import Control.Monad import Control.Monad
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
@@ -77,44 +72,8 @@ debugItem = \case
Debug_put -> debugPutItems Debug_put -> debugPutItems
debugGet :: Universe -> [String] debugGet :: Universe -> [String]
debugGet u = [fromMaybe "DebugGetFail" $ debugGet1 u debugGet u = foldMap getPretty $ u ^. uvWorld . cWorld . lWorld . shockwaves
, fromMaybe "DebugGetFail" $ debugGet2 u
, fromMaybe "DebugGetFail" $ debugGet3 u
]
--debugGet1 :: Show a => Universe -> Maybe a
debugGet1 :: Universe -> Maybe String
debugGet1 u = do
dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2
let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x)
ps = wlposs (dr ^. drLerp)
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
return $ show $ S.toList is
debugGet2 :: Universe -> Maybe String
debugGet2 u = do
let w = u ^. uvWorld
dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2
let clerp = dr ^. drLerp
speed = dr ^?! drUpdate . drLerpSpeed
toOpen = doWdBl (_drTrigger dr) w
newlerp
| toOpen && clerp < 1 = Just . min 1 $ clerp + speed
| clerp > 0 && not toOpen = Just . max 0 $ clerp - speed
| otherwise = Nothing
x <- newlerp
let wlposs y = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr y)
ps = wlposs x
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
return $ show is
debugGet3 :: Universe -> Maybe String
debugGet3 u = do
dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2
let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x)
ps = wlposs (dr ^. drLerp)
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
return $ show is
debugPutItems :: Universe -> Maybe [DebugItem] debugPutItems :: Universe -> Maybe [DebugItem]
debugPutItems u = Just $ f <$> [0..debugPutN] debugPutItems u = Just $ f <$> [0..debugPutN]
@@ -134,23 +93,7 @@ doDebugPut i u
| otherwise = u | otherwise = u
debugPutDraw :: IM.IntMap String -> Universe -> Picture debugPutDraw :: IM.IntMap String -> Universe -> Picture
debugPutDraw _ u = drawthedoor u <> drawthezones u debugPutDraw _ _ = mempty
drawthezones :: Universe -> Picture
drawthezones u = fold $ do
is <- readMaybe =<< u ^? uvDebugPut . ix 0
let f :: [Int2] -> [Int2]
f = id
return $ foldMap (drawZoneCol yellow peZoneSize) $ f is
drawthedoor :: Universe -> Picture
drawthedoor u = fold $ do
dr <- u ^? uvWorld . cWorld . lWorld . doors . ix 2
let wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x)
ps = wlposs (dr ^. drLerp)
return $ setLayer DebugLayer $ color blue $ foldMap g ps
where
g (x,y) = line [x,y]
doDebugGet :: Universe -> Maybe [DebugItem] doDebugGet :: Universe -> Maybe [DebugItem]
doDebugGet u = doDebugGet u =
-108
View File
@@ -1,108 +0,0 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.DrWdWd (updateDoor) where
import Dodge.LightSource
import Data.Foldable
import qualified Data.IntMap.Strict as IM
import Data.Maybe
import qualified Data.Set as S
import Dodge.Block.Debris
import Dodge.Data.World
import Dodge.Door.DoorLerp
import Dodge.ShiftPoint
import Dodge.SoundLogic
import Dodge.Wall.Delete
import Dodge.Wall.Move
import Dodge.WorldBool
import Dodge.Zoning.Base
import Dodge.Zoning.Pathing
import Geometry.Data
import LensHelp
import Linear
import Picture.Data
import Shape.Data
updateDoor :: Door -> World -> (S.Set Int2, World)
updateDoor dr w
| dr ^. drHP < 1 = destroyDoor dr w
| DoorLerp x <- dr ^. drUpdate = doorLerp x dr w
| otherwise =
( mempty
, foldl' (doDoorMount (doDoorLerp dr (dr ^. drLerp))) w (dr ^. drMounts)
)
doDoorMount :: Point2A -> World -> MountedObject -> World
doDoorMount pa w = \case
MountedLight p r c ->
w & cWorld . lWorld . lights
.:~ LSParam (p & _xy %~ shiftPointBy pa) r c
MountedSPic x ->
w & cWorld . lWorld . tempSPic
<>~ ( x & _1 . each . sfVs . each . _xy %~ shiftPointBy pa
& _2 . each . vxPos . _xy %~ shiftPointBy pa
)
doorLerp :: Float -> Door -> World -> (S.Set Int2, World)
doorLerp speed dr w = fromMaybe (mempty,domounts (dr ^. drLerp) w) $ do
x <- newlerp
let ps = wlposs x
ps' = wlposs (dr ^. drLerp)
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) (ps <> ps')
-- it seems possible that this will miss some paths: we don't add zones for the
-- old footprint. Seems unlikely, but a possible cause of pathfinding bugs
return
( is
, domounts x $ f x
& playSound x
& cWorld . lWorld . doors . ix drid . drLerp .~ x
)
where
domounts x w' = foldl' (doDoorMount (doDoorLerp dr x)) w' (dr ^. drMounts)
f = ifoldl' (flip . moveWallID) w . wlposs
wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (doDoorLerp dr x)
clerp = dr ^. drLerp
newlerp
| toOpen && clerp < 1 = Just . min 1 $ clerp + speed
| clerp > 0 && not toOpen = Just . max 0 $ clerp - speed
| otherwise = Nothing
toOpen = doWdBl (_drTrigger dr) w
drid = _drID dr
playSound x
| _drPushedBy dr == PushesItself =
soundContinue (WallSound drid) (fst $ doDoorLerp dr x) slideDoorS (Just 1)
| otherwise = id
destroyDoor :: Door -> World -> (S.Set Int2, World)
destroyDoor dr w =
( is
, w
& makeDoorDebris dr
& deleteWallIDs wlids
& cWorld . lWorld . doors %~ IM.delete (_drID dr)
-- & muchWlDustAt awl (0.5 * uncurry (+) (_drPos dr))
-- & flip (foldl' (flip $ muchWlDustAt awl)) (map (pos +.+) ps)
& stopPushing (_drPushes dr)
& (destroyMounts pa) (_drMounts dr)
)
where
pa = doDoorLerp dr (dr ^. drLerp)
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
ps = (dr ^. drFootPrint) & each . each %~ shiftPointBy pa
wlids = IM.keysSet $ _drFootPrint dr
destroyMounts :: Point2A -> [MountedObject] -> World -> World
destroyMounts pa mos w = foldl' (flip $ destroyMount pa) w mos
destroyMount :: Point2A -> MountedObject -> World -> World
destroyMount pa = \case
MountedLight x _ _ -> destroyLSFlashAt $ x & _xy %~ shiftPointBy pa
MountedSPic{} -> id -- make debris?
stopPushing :: Maybe Int -> World -> World
stopPushing mdrid w = fromMaybe w $ do
drid <- mdrid
dr <- w ^? cWorld . lWorld . doors . ix drid
return $
w & cWorld . lWorld . doors . ix drid . drUpdate .~ DoorDoNothing
& stopPushing (_drPushes dr)
+3 -6
View File
@@ -17,11 +17,7 @@ import Linear
-- this needs to be tested with both reflections and refractions -- this needs to be tested with both reflections and refractions
reflectLaserAlong :: reflectLaserAlong ::
Float -> Float -> Point2 -> Point2 -> World -> (Maybe (Point2, Either Creature Wall), [Point2])
Point2 ->
Point2 ->
World ->
(Maybe (Point2, Either Creature Wall), [Point2])
{-# INLINE reflectLaserAlong #-} {-# INLINE reflectLaserAlong #-}
reflectLaserAlong phasev sp ep w = case thingHitFilt (const True) _wlUnshadowed sp ep w of reflectLaserAlong phasev sp ep w = case thingHitFilt (const True) _wlUnshadowed sp ep w of
Just (p, Right wl) Just (p, Right wl)
@@ -63,7 +59,8 @@ refract phasev x y wl p
reflectExternal = 1 < abs (sin angleInc / phasev) reflectExternal = 1 < abs (sin angleInc / phasev)
-- note can hit multiple pulse balls -- note can hit multiple pulse balls
reflectPulseLaserAlong :: Float -> Point2 -> Point2 -> World -> ([(Point2, Object)], [Point2]) reflectPulseLaserAlong ::
Float -> Point2 -> Point2 -> World -> ([(Point2, Object)], [Point2])
{-# INLINE reflectPulseLaserAlong #-} {-# INLINE reflectPulseLaserAlong #-}
reflectPulseLaserAlong phasev sp ep w = f $ filter (isunshad . snd) $ crWlPbHit sp ep w reflectPulseLaserAlong phasev sp ep w = f $ filter (isunshad . snd) $ crWlPbHit sp ep w
where where
+13 -18
View File
@@ -22,7 +22,7 @@ import Dodge.Placement.Instance.Block
import Geometry import Geometry
heightWallPS :: PlacementSpot -> Float -> [Point2] -> Placement heightWallPS :: PlacementSpot -> Float -> [Point2] -> Placement
heightWallPS spot h ps = psPtPl spot $ lowBlock Stone (materialColor Stone) h ps heightWallPS spot h = psPtPl spot . lowBlock Stone (materialColor Stone) h
invisibleWall :: [Point2] -> Placement invisibleWall :: [Point2] -> Placement
invisibleWall ps = invisibleWall ps =
@@ -57,14 +57,14 @@ Places an breakable window between two points.
Width 8, also extends out from each point by 8. Width 8, also extends out from each point by 8.
-} -}
windowLine :: Point2 -> Point2 -> Placement windowLine :: Point2 -> Point2 -> Placement
windowLine a b = sps0 $ PutLineBlock defaultWindow 8 a b windowLine a = sps0 . PutLineBlock defaultWindow 8 a
{- {-
Places an unbreakable window between two points. Places an unbreakable window between two points.
Width 7, also extends out from each point by 7. Width 7, also extends out from each point by 7.
-} -}
crystalLine :: Point2 -> Point2 -> Placement crystalLine :: Point2 -> Point2 -> Placement
crystalLine a b = sps0 $ PutLineBlock defaultCrystalWall 7 a b crystalLine a = sps0 . PutLineBlock defaultCrystalWall 7 a
--crystalLine a b = sps0 $ PutWall ps defaultCrystalWall --crystalLine a b = sps0 $ PutWall ps defaultCrystalWall
-- where -- where
@@ -109,8 +109,8 @@ replacePutID ::
[PSType] -> [PSType] ->
Room -> Room ->
Room Room
replacePutID i psts r = replacePutID i psts =
r & rmPmnts %~ flip (subZipWith (isPutID i) (\ps pt -> ps & plType .~ pt)) psts rmPmnts %~ flip (subZipWith (isPutID i) (\ps pt -> ps & plType .~ pt)) psts
{- Partition a list by a predicate, apply a zip to those elements {- Partition a list by a predicate, apply a zip to those elements
that satisfy the predicate, concatenate that satisfy the predicate, concatenate
@@ -146,17 +146,12 @@ isPutID i ps = Just i == ps ^? plType . putID
-- aline = PutLineBlock baseBlockPane 9 -- aline = PutLineBlock baseBlockPane 9
putBlockRect :: Float -> Float -> Float -> Float -> [Placement] putBlockRect :: Float -> Float -> Float -> Float -> [Placement]
putBlockRect a x b y = putBlockRect a x b y = uncurry blockLine <$> loopPairs (rectNSWE b y a x)
[ blockLine (V2 a b) (V2 a y)
, blockLine (V2 a y) (V2 x y)
, blockLine (V2 x y) (V2 x b)
, blockLine (V2 x b) (V2 a b)
]
putBlockV :: Float -> Float -> Float -> Float -> [Placement] putBlockV :: Float -> Float -> Float -> Float -> [Placement]
putBlockV a x b y = putBlockV a x b y = uncurry blockLine <$>
[ blockLine (V2 a b) (V2 a y) [ (V2 a b, V2 a y)
, blockLine (V2 x b) (V2 a b) , (V2 x b, V2 a b)
] ]
--putBlockC :: Float -> Float -> Float -> Float -> [Placement] --putBlockC :: Float -> Float -> Float -> Float -> [Placement]
@@ -167,8 +162,8 @@ putBlockV a x b y =
-- ] -- ]
putBlockN :: Float -> Float -> Float -> Float -> [Placement] putBlockN :: Float -> Float -> Float -> Float -> [Placement]
putBlockN a x b y = putBlockN a x b y = uncurry blockLine <$>
[ blockLine (V2 a b) (V2 a y) [ (V2 a b, V2 a y)
, blockLine (V2 x b) (V2 a b) , (V2 x b, V2 a b)
, blockLine (V2 x y) (V2 x b) , (V2 x y, V2 x b)
] ]
+12 -11
View File
@@ -13,7 +13,7 @@ import Dodge.Item.Location
import Dodge.Movement.Turn import Dodge.Movement.Turn
import Dodge.Payload import Dodge.Payload
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.WorldEvent.Cloud --import Dodge.WorldEvent.Cloud
import Dodge.WorldEvent.Sound import Dodge.WorldEvent.Sound
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
@@ -126,7 +126,8 @@ tryThrust pj = fromMaybe id $ do
return $ doThrust pj x . pjRemoteSetDirection y pj return $ doThrust pj x . pjRemoteSetDirection y pj
doThrust :: Projectile -> Maybe RocketSmoke -> World -> World doThrust :: Projectile -> Maybe RocketSmoke -> World -> World
doThrust pj smoke w = --doThrust pj smoke w =
doThrust pj _ w =
w w
& randGen .~ g & randGen .~ g
& cWorld . lWorld . projectiles . ix i . pjVel . _xy %~ (\v -> accel + frict *^ v) & cWorld . lWorld . projectiles . ix i . pjVel . _xy %~ (\v -> accel + frict *^ v)
@@ -136,15 +137,15 @@ doThrust pj smoke w =
(vel + rotateV (pi + sparkD) accel `v2z` 0) (vel + rotateV (pi + sparkD) accel `v2z` 0)
3 3
10 10
& makeCloudAt -- & makeCloudAt
RocketSmoke -- RocketSmoke
lifetime -- lifetime
(sp + r1 + 30 *^ signorm (sp - ep)) -- (sp + r1 + 30 *^ signorm (sp - ep))
where where
lifetime = fst . randomR lt $ _randGen w -- lifetime = fst . randomR lt $ _randGen w
lt -- lt
| smoke == Just ReducedRocketSmoke = (50, 200) -- | smoke == Just ReducedRocketSmoke = (50, 200)
| otherwise = (300, 500) -- | otherwise = (300, 500)
accel = rotateV (pj ^. pjDir) (V2 3 0) accel = rotateV (pj ^. pjDir) (V2 3 0)
i = _pjID pj i = _pjID pj
sp = pj ^. pjPos sp = pj ^. pjPos
@@ -152,7 +153,7 @@ doThrust pj smoke w =
ep = sp + vel ep = sp + vel
(frict, g) = randomR (0.6, 0.9) $ _randGen w (frict, g) = randomR (0.6, 0.9) $ _randGen w
(sparkD, _) = randomR (-0.2, 0.2) $ _randGen w (sparkD, _) = randomR (-0.2, 0.2) $ _randGen w
r1 = addZ 0 $ randInCirc 10 & evalState $ _randGen w -- r1 = addZ 0 $ randInCirc 10 & evalState $ _randGen w
doBarrelSpin :: Int -> Float -> Projectile -> World -> World doBarrelSpin :: Int -> Float -> Projectile -> World -> World
doBarrelSpin cid i pj w = doBarrelSpin cid i pj w =
+1 -1
View File
@@ -48,7 +48,7 @@ tutAnoTree = do
foldMTRS foldMTRS
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, corDoor , corDoor
, tToBTree "cor" . return . cleatOnward <$> polyChasmC 6 120 , tToBTree "cor" . return . cleatOnward <$> southPillarsRoom 300 300 100
-- , tToBTree "x" . return . cleatOnward <$> airlockSimple -- , tToBTree "x" . return . cleatOnward <$> airlockSimple
-- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] [] -- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] []
, return $ tToBTree "cor" $ return $ cleatOnward corridor , return $ tToBTree "cor" $ return $ cleatOnward corridor
+1 -1
View File
@@ -11,6 +11,6 @@ drawShockwave sw =
$ thickCircle rad thickness $ thickCircle rad thickness
where where
r = _swRad sw r = _swRad sw
thickness = tFraction ** 2 * r thickness = min rad $ tFraction ** 2 * r
rad = r - (3 / 4) * r * tFraction rad = r - (3 / 4) * r * tFraction
tFraction = fromIntegral (_swTimer sw) / fromIntegral (_swMaxTime sw) tFraction = fromIntegral (_swTimer sw) / fromIntegral (_swMaxTime sw)
+3 -16
View File
@@ -23,23 +23,10 @@ moveShockwave w sw
tFraction = fromIntegral t / fromIntegral (_swMaxTime sw) tFraction = fromIntegral t / fromIntegral (_swMaxTime sw)
rad = r - (3 / 4) * r * tFraction rad = r - (3 / 4) * r * tFraction
doDams doDams
| (p ^. _z >= 0) && (p ^. _z < 25) = damageInCircle (Explosive dam) (p ^. _xy) rad | (p ^. _z >= 0) && (p ^. _z < 25)
&& t > 5
= damageInCircle (Explosive dam) (p ^. _xy) rad
| otherwise = id | otherwise = id
-- doDams w' =
-- over (cWorld . lWorld . creatures) (IM.map damCr) $
-- foldl'
-- (flip $ damageWall (Explosive 1000 p))
-- w'
-- hitBlocks
-- hitBlocks = map snd . overlapCircWalls p rad $ wlsNearCirc p rad w
-- -- this is not expansive enough
-- damCr cr
-- | _crID cr `elem` is || dist (_crPos cr) p >= rad + crRad (cr ^. crType) = cr
-- | otherwise = cr & crDamage .:~ Explosive dam p
--where
-- cpos = _crPos cr
-- v = normalizeV (cpos -.- p)
moveInverseShockwave :: moveInverseShockwave ::
World -> World ->
+1 -1
View File
@@ -26,7 +26,7 @@ import Dodge.Data.Universe
import Dodge.Debug import Dodge.Debug
import Dodge.DisplayInventory import Dodge.DisplayInventory
import Dodge.Distortion import Dodge.Distortion
import Dodge.DrWdWd import Dodge.Door
import Dodge.EnergyBall import Dodge.EnergyBall
import Dodge.Flame import Dodge.Flame
import Dodge.Inventory import Dodge.Inventory
+19 -17
View File
@@ -11,7 +11,7 @@ module Dodge.WorldEvent.Explosion (
import Control.Monad import Control.Monad
import Data.List import Data.List
import Dodge.Data.World import Dodge.Data.World
import Dodge.EnergyBall --import Dodge.EnergyBall
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.Shockwave
import Dodge.WorldEvent.SpawnParticle import Dodge.WorldEvent.SpawnParticle
@@ -20,7 +20,7 @@ import LensHelp
import Picture import Picture
import RandomHelp import RandomHelp
import Linear.V3 import Linear.V3
import Linear.Metric --import Linear.Metric
makePoisonExplosionAt :: makePoisonExplosionAt ::
-- | Position -- | Position
@@ -71,23 +71,25 @@ makeFlameExplosionAt p w =
-- particle passes through for the first frame of its existence -- particle passes through for the first frame of its existence
makeExplosionAt :: Point3 -> Point3 -> World -> World makeExplosionAt :: Point3 -> Point3 -> World -> World
makeExplosionAt p vel w = --makeExplosionAt p vel w =
makeExplosionAt p _ w =
w w
& soundStart (Explosion (w ^. cWorld . lWorld . lClock)) (p ^. _xy) bangS Nothing & soundStart (Explosion (w ^. cWorld . lWorld . lClock)) (p ^. _xy) bangS Nothing
& addFlames -- & addFlames
& cWorld . lWorld . worldEvents & cWorld . lWorld . worldEvents
.:~ MakeTempLight (LSParam p 150 (V3 1 0.5 0)) 20 .:~ MakeTempLight (LSParam p 150 (V3 1 0.5 0)) 20
& makeShockwaveAt [] p 50 50 1 white -- & makeShockwaveAt [] p 50 50 1 white
& makeShockwaveAt [] p 50 5000 1 white
where where
fVs = fmap (`v2z` 0) $ replicateM 100 (randInCirc 1) & evalState $ _randGen w -- fVs = fmap (`v2z` 0) $ replicateM 100 (randInCirc 1) & evalState $ _randGen w
fPs' = fmap (`v2z` 0) $ replicateM 100 (randInCirc 5) & evalState $ _randGen w -- fPs' = fmap (`v2z` 0) $ replicateM 100 (randInCirc 5) & evalState $ _randGen w
fdamps = replicateM 100 (state $ randomR (0,1)) & evalState $ _randGen w -- fdamps = replicateM 100 (state $ randomR (0,1)) & evalState $ _randGen w
inversePushOut v = (15 - norm v) * 0.01 *.*.* v -- inversePushOut v = (15 - norm v) * 0.01 *.*.* v
fVs' = zipWith (+.+.+) fVs $ map inversePushOut fPs' -- fVs' = zipWith (+.+.+) fVs $ map inversePushOut fPs'
sizes = randomRs (2, 9) $ _randGen w -- sizes = randomRs (2, 9) $ _randGen w
times = randomRs (15, 20) $ _randGen w -- times = randomRs (15, 20) $ _randGen w
mF q v damp size time = makeFlamelet -- mF q v damp size time = makeFlamelet
--(q - (2*v + 2* vel)) (v + damp *.*.* vel) size time -- --(q - (2*v + 2* vel)) (v + damp *.*.* vel) size time
(q - (2*v )) (v + damp *.*.* vel) size time -- (q - (2*v )) (v + damp *.*.* vel) size time
newFs = zipWith4 (mF p) (zipWith (+) fPs' (fmap (3 *.*.*) fVs')) fdamps sizes times -- newFs = zipWith4 (mF p) (zipWith (+) fPs' (fmap (3 *.*.*) fVs')) fdamps sizes times
addFlames w' = foldl' (flip ($)) w' newFs -- addFlames w' = foldl' (flip ($)) w' newFs
-1
View File
@@ -8,7 +8,6 @@ import Geometry
import LensHelp import LensHelp
import Picture import Picture
-- currently very effective against walls
makeShockwaveAt :: makeShockwaveAt ::
-- | IDs of invulnerable creatures. -- | IDs of invulnerable creatures.
[Int] -> [Int] ->
+12 -3
View File
@@ -17,6 +17,7 @@ module Dodge.WorldEvent.ThingsHit (
isWalkable, isWalkable,
) where ) where
import Control.Applicative
import Dodge.Wall.Pathing import Dodge.Wall.Pathing
import Data.Monoid import Data.Monoid
import qualified Data.Set as S import qualified Data.Set as S
@@ -146,9 +147,17 @@ wlsHitUnsorted 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 . 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)
where where
v = normalizeV . vNormal . uncurry (-) $ _wlLine wl (x,y) = wl ^. wlLine
t mp = do
p' <- mp
guard (distance p p' < r)
mp
orthp = t $ orthogonalPointOnSeg x y p
mhp = orthp <|> t (return x) <|> t (return y)
-- v = normalizeV . vNormal . uncurry (-) $ _wlLine wl
crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)] crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)]
crsHitRadial p r = mapMaybe f . crsNearCirc p r crsHitRadial p r = mapMaybe f . crsNearCirc p r
@@ -156,7 +165,7 @@ crsHitRadial p r = mapMaybe f . crsNearCirc p r
f cr = do f cr = do
let cp = cr ^. crPos . _xy let cp = cr ^. crPos . _xy
guard $ dist p cp < r + crRad (_crType cr) guard $ dist p cp < r + crRad (_crType cr)
return (cp + (1 + crRad (_crType cr)) *.* (cp - p), cr) return (cp + (1 + crRad (_crType cr)) *^ (cp - p), cr)
isFlyable :: Point2 -> Point2 -> World -> Bool isFlyable :: Point2 -> Point2 -> World -> Bool
{-# INLINE isFlyable #-} {-# INLINE isFlyable #-}
+2 -1
View File
@@ -34,7 +34,8 @@ crIXsNearCirc :: Point2 -> Float -> World -> IS.IntSet
crIXsNearCirc p r = crsNearRect (p +.+ V2 r r) (p -.- V2 r r) crIXsNearCirc p r = crsNearRect (p +.+ V2 r r) (p -.- V2 r r)
crsNearCirc :: Point2 -> Float -> World -> [Creature] crsNearCirc :: Point2 -> Float -> World -> [Creature]
crsNearCirc p r w = mapMaybe (\cid -> w ^? cWorld . lWorld . creatures . ix cid) . IS.toList $ crIXsNearCirc p r w crsNearCirc p r w = mapMaybe (\cid -> w ^? cWorld . lWorld . creatures . ix cid) . IS.toList
$ crIXsNearCirc p r w
crsNearRect :: Point2 -> Point2 -> World -> IS.IntSet crsNearRect :: Point2 -> Point2 -> World -> IS.IntSet
crsNearRect = nearRect crZoneSize _crZoning crsNearRect = nearRect crZoneSize _crZoning
+2 -2
View File
@@ -295,7 +295,7 @@ closestPointOnLineParam ::
Float Float
{-# INLINE closestPointOnLineParam #-} {-# INLINE closestPointOnLineParam #-}
closestPointOnLineParam !a !b !p = closestPointOnLineParam !a !b !p =
(p -.- a) `dotV` (b -.- a) / (b -.- a) `dotV` (b -.- a) (p - a) `dotV` (b - a) / (b - a) `dotV` (b - a)
{- | Given a segment and external point, find the closest point on the segment. {- | Given a segment and external point, find the closest point on the segment.
clamps to the end of the segment clamps to the end of the segment
@@ -312,7 +312,7 @@ closestPointOnSeg segP1 segP2 p
orthogonalPointOnSeg :: Point2 -> Point2 -> Point2 -> Maybe Point2 orthogonalPointOnSeg :: Point2 -> Point2 -> Point2 -> Maybe Point2
orthogonalPointOnSeg a b p orthogonalPointOnSeg a b p
| param < 0 || param > 1 = Nothing | param < 0 || param > 1 = Nothing
| otherwise = Just $ a +.+ param *.* normalizeV (b -.- a) | otherwise = Just $ a + param *^ normalizeV (b - a)
where where
param = closestPointOnLineParam a b p param = closestPointOnLineParam a b p
+64 -66
View File
@@ -1070,7 +1070,7 @@ RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C
ReactorSS src/Dodge/Data/Scenario.hs 111;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C
RecRoomSS src/Dodge/Data/Scenario.hs 103;" C RecRoomSS src/Dodge/Data/Scenario.hs 103;" C
RectRoomType src/Dodge/Data/Room.hs 33;" C RectRoomType src/Dodge/Data/Room.hs 33;" C
ReducedRocketSmoke src/Dodge/Data/Projectile.hs 53;" C ReducedRocketSmoke src/Dodge/Data/Projectile.hs 52;" C
ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C
Religion src/Dodge/Data/Scenario.hs 47;" C Religion src/Dodge/Data/Scenario.hs 47;" C
Reload src/Dodge/Data/ActionPlan.hs 142;" C Reload src/Dodge/Data/ActionPlan.hs 142;" C
@@ -2534,7 +2534,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f
anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f
anythingHitCirc src/Dodge/Base/Collide.hs 342;" f anythingHitCirc src/Dodge/Base/Collide.hs 342;" f
applyCME src/Dodge/HeldUse.hs 369;" f applyCME src/Dodge/HeldUse.hs 369;" f
applyClip src/Dodge/Debug.hs 187;" f applyClip src/Dodge/Debug.hs 170;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f
applyEventIO src/Loop.hs 90;" f applyEventIO src/Loop.hs 90;" f
applyGravityPU src/Dodge/Projectile/Update.hs 40;" f applyGravityPU src/Dodge/Projectile/Update.hs 40;" f
@@ -2710,7 +2710,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f
burstRifle src/Dodge/Item/Held/Cane.hs 30;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f
buttonFlip src/Dodge/Button/Event.hs 17;" f buttonFlip src/Dodge/Button/Event.hs 17;" f
buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f
cChasm src/Dodge/Room/Tutorial.hs 139;" f cChasm src/Dodge/Room/Tutorial.hs 140;" f
cFilledRect src/Dodge/CharacterEnums.hs 6;" f 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
@@ -2746,7 +2746,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 210;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 209;" f
chasmTest src/Dodge/Creature/Update.hs 132;" f chasmTest src/Dodge/Creature/Update.hs 132;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
@@ -3020,22 +3020,22 @@ deadUpperBody src/Dodge/Creature/Picture.hs 113;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f
debrisSPic src/Dodge/Prop/Draw.hs 21;" f debrisSPic src/Dodge/Prop/Draw.hs 21;" f
debrisSize src/Dodge/Block/Debris.hs 84;" f debrisSize src/Dodge/Block/Debris.hs 84;" f
debugEvent src/Dodge/Debug.hs 42;" f debugEvent src/Dodge/Debug.hs 41;" f
debugEvents src/Dodge/Debug.hs 27;" f debugEvents src/Dodge/Debug.hs 26;" f
debugGet src/Dodge/Debug.hs 79;" f debugGet src/Dodge/Debug.hs 78;" f
debugGet1 src/Dodge/Debug.hs 86;" f debugGet1 src/Dodge/Debug.hs 85;" f
debugGet2 src/Dodge/Debug.hs 94;" f debugGet2 src/Dodge/Debug.hs 93;" f
debugGet3 src/Dodge/Debug.hs 111;" f debugGet3 src/Dodge/Debug.hs 110;" f
debugItem src/Dodge/Debug.hs 45;" f debugItem src/Dodge/Debug.hs 44;" f
debugMenu src/Dodge/Menu.hs 124;" f debugMenu src/Dodge/Menu.hs 124;" f
debugMenuOptions src/Dodge/Menu.hs 130;" f debugMenuOptions src/Dodge/Menu.hs 130;" f
debugMouseClickPos src/Dodge/Debug.hs 202;" f debugMouseClickPos src/Dodge/Debug.hs 185;" f
debugOn src/Dodge/Data/Config.hs 154;" f debugOn src/Dodge/Data/Config.hs 154;" f
debugPutDraw src/Dodge/Debug.hs 136;" f debugPutDraw src/Dodge/Debug.hs 135;" f
debugPutItems src/Dodge/Debug.hs 119;" f debugPutItems src/Dodge/Debug.hs 118;" f
debugPutN src/Dodge/Debug.hs 125;" f debugPutN src/Dodge/Debug.hs 124;" f
debugShowPath src/Dodge/Debug.hs 162;" f debugShowPath src/Dodge/Debug.hs 145;" f
debugWritableValues src/Dodge/Debug.hs 175;" f debugWritableValues src/Dodge/Debug.hs 158;" f
decodeSensorType src/Dodge/Terminal.hs 72;" f decodeSensorType src/Dodge/Terminal.hs 72;" f
decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f
decomposeTree src/Dodge/Tree/Compose.hs 58;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f
@@ -3105,15 +3105,15 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f
denormalEdges src/Polyhedra.hs 136;" f denormalEdges src/Polyhedra.hs 136;" f
destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f
destroyBlock src/Dodge/Block.hs 17;" f destroyBlock src/Dodge/Block.hs 17;" f
destroyDoor src/Dodge/DrWdWd.hs 76;" f destroyDoor src/Dodge/Door.hs 74;" f
destroyInvItem src/Dodge/Inventory.hs 40;" f destroyInvItem src/Dodge/Inventory.hs 40;" f
destroyItem src/Dodge/Inventory.hs 62;" f destroyItem src/Dodge/Inventory.hs 62;" f
destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f
destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f
destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f
destroyMcType src/Dodge/Machine/Destroy.hs 22;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f
destroyMount src/Dodge/DrWdWd.hs 97;" f destroyMount src/Dodge/Door.hs 95;" f
destroyMounts src/Dodge/DrWdWd.hs 94;" f destroyMounts src/Dodge/Door.hs 92;" f
destroyProjectile src/Dodge/Projectile/Update.hs 108;" f destroyProjectile src/Dodge/Projectile/Update.hs 108;" f
detV src/Geometry/Vector.hs 94;" f detV src/Geometry/Vector.hs 94;" f
detector src/Dodge/Item/Held/Utility.hs 27;" f detector src/Dodge/Item/Held/Utility.hs 27;" f
@@ -3148,7 +3148,7 @@ dmType src/Dodge/Damage.hs 38;" f
doAimTwist src/Dodge/Creature/YourControl.hs 154;" f doAimTwist src/Dodge/Creature/YourControl.hs 154;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" 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 157;" f doBarrelSpin src/Dodge/Projectile/Update.hs 158;" f
doBlBl src/Dodge/BlBl.hs 5;" f doBlBl src/Dodge/BlBl.hs 5;" f
doBounce src/Dodge/Base/Collide.hs 67;" 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
@@ -3162,8 +3162,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 47;" f
doDamage src/Dodge/Creature/State.hs 43;" f doDamage src/Dodge/Creature/State.hs 43;" f
doDeathToggle src/Dodge/WorldEffect.hs 91;" f doDeathToggle src/Dodge/WorldEffect.hs 91;" f
doDeathTriggers src/Dodge/WorldEffect.hs 84;" f doDeathTriggers src/Dodge/WorldEffect.hs 84;" f
doDebugGet src/Dodge/Debug.hs 155;" f doDebugGet src/Dodge/Debug.hs 138;" f
doDebugPut src/Dodge/Debug.hs 128;" f doDebugPut src/Dodge/Debug.hs 127;" f
doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f
doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f
doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f
@@ -3173,7 +3173,7 @@ doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f
doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f
doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f
doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f
doDoorMount src/Dodge/DrWdWd.hs 35;" f doDoorMount src/Dodge/Door.hs 34;" f
doDrag src/Dodge/Update/Input/InGame.hs 127;" f doDrag src/Dodge/Update/Input/InGame.hs 127;" f
doDrawing src/Dodge/Render.hs 34;" f doDrawing src/Dodge/Render.hs 34;" f
doDrawing' src/Dodge/Render.hs 45;" f doDrawing' src/Dodge/Render.hs 45;" f
@@ -3216,7 +3216,7 @@ doWorldEvents src/Dodge/Update.hs 429;" f
doWorldPos src/Dodge/WorldPos.hs 10;" f doWorldPos src/Dodge/WorldPos.hs 10;" f
door src/Dodge/Room/Door.hs 13;" f door src/Dodge/Room/Door.hs 13;" f
doorBetween src/Dodge/Placement/Instance/Door.hs 44;" f doorBetween src/Dodge/Placement/Instance/Door.hs 44;" f
doorLerp src/Dodge/DrWdWd.hs 46;" f doorLerp src/Dodge/Door.hs 44;" f
dotV src/Geometry/Vector.hs 76;" f dotV src/Geometry/Vector.hs 76;" f
dotV3 src/Geometry/Vector3D.hs 119;" f dotV3 src/Geometry/Vector3D.hs 119;" f
doubleCorridorBarrels src/Dodge/Room/Room.hs 276;" f doubleCorridorBarrels src/Dodge/Room/Room.hs 276;" f
@@ -3248,8 +3248,8 @@ drawCombFilter src/Dodge/Render/Picture.hs 269;" f
drawCombineInventory src/Dodge/Render/HUD.hs 182;" f drawCombineInventory src/Dodge/Render/HUD.hs 182;" f
drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f
drawCoord src/Dodge/Debug/Picture.hs 395;" f drawCoord src/Dodge/Debug/Picture.hs 395;" f
drawCrInfo src/Dodge/Debug.hs 226;" f drawCrInfo src/Dodge/Debug.hs 209;" f
drawCrInfo' src/Dodge/Debug.hs 221;" f drawCrInfo' src/Dodge/Debug.hs 204;" f
drawCreature src/Dodge/Render/ShapePicture.hs 71;" f drawCreature src/Dodge/Render/ShapePicture.hs 71;" f
drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f
drawCross src/Dodge/Render/Label.hs 24;" f drawCross src/Dodge/Render/Label.hs 24;" f
@@ -3258,7 +3258,7 @@ drawCursorAt src/Dodge/Render/List.hs 72;" f
drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 139;" f
drawDDATest src/Dodge/Debug/Picture.hs 311;" f drawDDATest src/Dodge/Debug/Picture.hs 311;" f
drawDamSensor src/Dodge/Machine/Draw.hs 27;" f drawDamSensor src/Dodge/Machine/Draw.hs 27;" f
drawDebug src/Dodge/Debug.hs 264;" f drawDebug src/Dodge/Debug.hs 247;" f
drawDrag src/Dodge/Render/Picture.hs 200;" f drawDrag src/Dodge/Render/Picture.hs 200;" f
drawDragDrop src/Dodge/Render/Picture.hs 229;" f drawDragDrop src/Dodge/Render/Picture.hs 229;" f
drawDragPickup src/Dodge/Render/Picture.hs 238;" f drawDragPickup src/Dodge/Render/Picture.hs 238;" f
@@ -3356,8 +3356,6 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f
drawZoneCirc src/Dodge/Debug/Picture.hs 300;" f drawZoneCirc src/Dodge/Debug/Picture.hs 300;" f
drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 293;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 293;" f
drawthedoor src/Dodge/Debug.hs 146;" f
drawthezones src/Dodge/Debug.hs 139;" f
dropAll src/Dodge/Creature/Update.hs 129;" f dropAll src/Dodge/Creature/Update.hs 129;" f
dropInventoryPath src/Dodge/HeldUse.hs 1351;" f dropInventoryPath src/Dodge/HeldUse.hs 1351;" f
dropItem src/Dodge/Creature/Action.hs 155;" f dropItem src/Dodge/Creature/Action.hs 155;" f
@@ -3436,7 +3434,7 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f
expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 188;" f expireAndDamage src/Dodge/Bullet.hs 188;" f
explodeShell src/Dodge/Projectile/Update.hs 228;" f explodeShell src/Dodge/Projectile/Update.hs 229;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f
@@ -3499,7 +3497,7 @@ floorTo src/Geometry/Zone.hs 12;" f
floorWire src/Dodge/Wire.hs 13;" f floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f
foldMTRS src/Dodge/Room/Tutorial.hs 84;" f foldMTRS src/Dodge/Room/Tutorial.hs 85;" f
foldPairs src/ListHelp.hs 37;" f foldPairs src/ListHelp.hs 37;" f
foldrWhileArb src/ListHelp.hs 110;" f foldrWhileArb src/ListHelp.hs 110;" f
followImpulse src/Dodge/Creature/Impulse.hs 24;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f
@@ -3560,8 +3558,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f
getCommand src/Dodge/Terminal.hs 52;" f getCommand src/Dodge/Terminal.hs 52;" f
getCommands src/Dodge/Terminal.hs 49;" f getCommands src/Dodge/Terminal.hs 49;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 359;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 358;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 346;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 345;" f
getDebugMouseOver src/Dodge/Update.hs 377;" f getDebugMouseOver src/Dodge/Update.hs 377;" f
getDistortions src/Dodge/Render.hs 435;" f getDistortions src/Dodge/Render.hs 435;" f
getEdgesCrossing src/Dodge/Path.hs 42;" f getEdgesCrossing src/Dodge/Path.hs 42;" f
@@ -3578,7 +3576,7 @@ getNodePos src/Dodge/Path.hs 39;" f
getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f
getPretty src/AesonHelp.hs 8;" f getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 342;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 341;" f
getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3782,7 +3780,7 @@ inventoryX src/Dodge/Creature.hs 113;" f
inverseSelNumPos src/Dodge/SelectionSections.hs 193;" f inverseSelNumPos src/Dodge/SelectionSections.hs 193;" f
inverseSelSecYint src/Dodge/SelectionSections.hs 164;" f inverseSelSecYint src/Dodge/SelectionSections.hs 164;" f
inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 177;" f inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 177;" f
inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 42;" f
invertEncircleDistP src/Dodge/Creature/Boid.hs 16;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 16;" f
invertIntMap src/IntMapHelp.hs 100;" f invertIntMap src/IntMapHelp.hs 100;" f
invertIntMap src/Multiset.hs 67;" f invertIntMap src/Multiset.hs 67;" f
@@ -3893,7 +3891,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f
knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f
lChasm src/Dodge/Room/Tutorial.hs 148;" f lChasm src/Dodge/Room/Tutorial.hs 149;" f
lConnect src/Dodge/Render/Connectors.hs 42;" f lConnect src/Dodge/Render/Connectors.hs 42;" f
lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f
lShape src/Dodge/Placement/Instance/LightSource.hs 91;" f lShape src/Dodge/Placement/Instance/LightSource.hs 91;" f
@@ -4064,7 +4062,7 @@ makeShaderProgram src/Shader/Compile.hs 241;" f
makeShaderUsingVAO src/Shader/Compile.hs 146;" f makeShaderUsingVAO src/Shader/Compile.hs 146;" f
makeShaderUsingVBO src/Shader/Compile.hs 69;" f makeShaderUsingVBO src/Shader/Compile.hs 69;" f
makeShaderVBO src/Shader/Compile.hs 32;" f makeShaderVBO src/Shader/Compile.hs 32;" f
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f
makeShrapnelAt src/Dodge/Payload.hs 24;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f
makeSourcedShader src/Shader/Compile.hs 167;" f makeSourcedShader src/Shader/Compile.hs 167;" f
makeSpark src/Dodge/Spark.hs 45;" f makeSpark src/Dodge/Spark.hs 45;" f
@@ -4138,7 +4136,7 @@ mglCreate src/GLHelp.hs 8;" f
mglDelete src/GLHelp.hs 14;" f mglDelete src/GLHelp.hs 14;" f
midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f
midBounds src/Dodge/Room/Foreground.hs 150;" f midBounds src/Dodge/Room/Foreground.hs 150;" f
midChasm src/Dodge/Room/Tutorial.hs 173;" f midChasm src/Dodge/Room/Tutorial.hs 172;" f
midPad src/Padding.hs 27;" f midPad src/Padding.hs 27;" f
midPadL src/Padding.hs 33;" f midPadL src/Padding.hs 33;" f
midPoint src/Geometry.hs 83;" f midPoint src/Geometry.hs 83;" f
@@ -4179,10 +4177,10 @@ moveCombineSel src/Dodge/Update/Scroll.hs 121;" f
moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f
moveLSThen src/Dodge/Placement/Instance/LightSource.hs 47;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 47;" f
movePenBullet src/Dodge/Bullet.hs 203;" f movePenBullet src/Dodge/Bullet.hs 203;" f
moveProjectile src/Dodge/Projectile/Update.hs 209;" f moveProjectile src/Dodge/Projectile/Update.hs 210;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 13;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f
moveStuckGrenade src/Dodge/Projectile/Update.hs 196;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 197;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 69;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 69;" f
moveWall src/Dodge/Wall/Move.hs 23;" f moveWall src/Dodge/Wall/Move.hs 23;" f
moveWallID src/Dodge/Wall/Move.hs 18;" f moveWallID src/Dodge/Wall/Move.hs 18;" f
@@ -4284,7 +4282,7 @@ outwardIntegers src/Dodge/Base.hs 181;" f
overCol src/Picture/Base.hs 308;" f overCol src/Picture/Base.hs 308;" f
overColObj src/Shape.hs 273;" f overColObj src/Shape.hs 273;" f
overColSH src/Shape.hs 241;" f overColSH src/Shape.hs 241;" f
overDebugEvent src/Dodge/Debug.hs 36;" f overDebugEvent src/Dodge/Debug.hs 35;" f
overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f
overLnkType src/Dodge/RoomLink.hs 105;" f overLnkType src/Dodge/RoomLink.hs 105;" f
overPos src/Picture/Base.hs 303;" f overPos src/Picture/Base.hs 303;" f
@@ -4342,7 +4340,7 @@ pingPongBetween src/Render.hs 221;" f
pipe src/Dodge/Item/Craftable.hs 32;" f pipe src/Dodge/Item/Craftable.hs 32;" f
pistol src/Dodge/Item/Held/Stick.hs 40;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f
pistolerRoom src/Dodge/Room/Room.hs 330;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f
pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 173;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 20;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 20;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 53;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 53;" f
@@ -4429,8 +4427,8 @@ pokeWall src/Shader/Poke.hs 78;" f
pokeWallsWindows src/Shader/Poke.hs 50;" f pokeWallsWindows src/Shader/Poke.hs 50;" f
poly3 src/Picture/Base.hs 84;" f poly3 src/Picture/Base.hs 84;" f
poly3Col src/Picture/Base.hs 88;" f poly3Col src/Picture/Base.hs 88;" f
polyChasm src/Dodge/Room/Tutorial.hs 194;" f polyChasm src/Dodge/Room/Tutorial.hs 193;" f
polyChasmC src/Dodge/Room/Tutorial.hs 203;" f polyChasmC src/Dodge/Room/Tutorial.hs 202;" f
polyCirc src/Shape.hs 46;" f polyCirc src/Shape.hs 46;" f
polyCircx src/Shape.hs 51;" f polyCircx src/Shape.hs 51;" f
polyCornerDist src/Geometry/Polygon.hs 61;" f polyCornerDist src/Geometry/Polygon.hs 61;" f
@@ -4510,9 +4508,9 @@ pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 64;" 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
putAutoDoor src/Dodge/Placement/Instance/Door.hs 93;" f putAutoDoor src/Dodge/Placement/Instance/Door.hs 93;" f
putBlockN src/Dodge/Placement/Instance/Wall.hs 169;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 164;" f
putBlockRect src/Dodge/Placement/Instance/Wall.hs 148;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 148;" f
putBlockV src/Dodge/Placement/Instance/Wall.hs 156;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 151;" f
putDoor src/Dodge/Room/Airlock.hs 114;" f putDoor src/Dodge/Room/Airlock.hs 114;" f
putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f
putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 27;" f putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 27;" f
@@ -4591,16 +4589,16 @@ rectXY src/Geometry/Polygon.hs 37;" f
red src/Color.hs 14;" f red src/Color.hs 14;" f
reduceLocDT src/Dodge/DoubleTree.hs 398;" f reduceLocDT src/Dodge/DoubleTree.hs 398;" f
reduceLocLDT src/Dodge/DoubleTree.hs 393;" f reduceLocLDT src/Dodge/DoubleTree.hs 393;" f
reflDirWall src/Dodge/Base/Wall.hs 16;" f
reflVelWall src/Dodge/Base/Wall.hs 24;" f reflVelWall src/Dodge/Base/Wall.hs 24;" f
reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f
reflWall src/Dodge/Base/Wall.hs 16;" f
reflectAngle src/Geometry.hs 142;" f reflectAngle src/Geometry.hs 142;" f
reflectIn src/Geometry.hs 136;" f reflectIn src/Geometry.hs 136;" f
reflectInNormal src/Geometry/Vector.hs 217;" f reflectInNormal src/Geometry/Vector.hs 217;" f
reflectInParam src/Geometry.hs 230;" f reflectInParam src/Geometry.hs 230;" f
reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 17;" f reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 19;" f
reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 70;" f reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 62;" f
refract src/Dodge/Item/Weapon/LaserPath.hs 44;" f refract src/Dodge/Item/Weapon/LaserPath.hs 36;" f
refreshOptionsSelectionList src/Dodge/Menu/Option.hs 35;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 35;" f
regexCombs src/Dodge/DisplayInventory.hs 71;" f regexCombs src/Dodge/DisplayInventory.hs 71;" f
regexList src/Dodge/DisplayInventory.hs 308;" f regexList src/Dodge/DisplayInventory.hs 308;" f
@@ -4614,7 +4612,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f
removeDot src/ShortShow.hs 44;" f removeDot src/ShortShow.hs 44;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
removeLights src/Dodge/Room/Tutorial.hs 259;" f removeLights src/Dodge/Room/Tutorial.hs 258;" f
removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f
removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f
renderDataResizeUpdate src/Preload/Update.hs 26;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f
@@ -4793,7 +4791,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
sensorSPic src/Dodge/Machine/Draw.hs 81;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f
sensorTut src/Dodge/Room/Tutorial.hs 368;" f sensorTut src/Dodge/Room/Tutorial.hs 367;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f
@@ -4801,7 +4799,7 @@ sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f
setAimPosture src/Dodge/Creature/YourControl.hs 145;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f
setChannelPos src/Sound.hs 150;" f setChannelPos src/Sound.hs 150;" f
setClickWorldPos src/Dodge/Update.hs 102;" f setClickWorldPos src/Dodge/Update.hs 102;" f
setClip src/Dodge/Debug.hs 250;" f setClip src/Dodge/Debug.hs 233;" f
setClusterID src/Dodge/Combine/Graph.hs 114;" f setClusterID src/Dodge/Combine/Graph.hs 114;" f
setDepth src/Picture/Base.hs 128;" f setDepth src/Picture/Base.hs 128;" f
setDirPS src/Dodge/PlacementSpot.hs 49;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f
@@ -4820,7 +4818,7 @@ setOutLinks src/Dodge/RoomLink.hs 50;" f
setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f
setOutLinksPD src/Dodge/RoomLink.hs 95;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f
setRoomInt src/Dodge/Room/Tutorial.hs 91;" f setRoomInt src/Dodge/Room/Tutorial.hs 92;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f
setShaderSource src/Shader/Compile.hs 290;" f setShaderSource src/Shader/Compile.hs 290;" f
@@ -4829,7 +4827,7 @@ setSoundVolume src/Sound.hs 157;" f
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f
setTile src/Dodge/Layout.hs 70;" f setTile src/Dodge/Layout.hs 70;" f
setTiles src/Dodge/Layout.hs 67;" f setTiles src/Dodge/Layout.hs 67;" f
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f setTreeInts src/Dodge/Room/Tutorial.hs 99;" f
setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 440;" f setViewport src/Dodge/Render.hs 440;" f
@@ -5048,7 +5046,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f
stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f
stopAllSounds src/Sound.hs 125;" f stopAllSounds src/Sound.hs 125;" f
stopBulletAt src/Dodge/Bullet.hs 200;" f stopBulletAt src/Dodge/Bullet.hs 200;" f
stopPushing src/Dodge/DrWdWd.hs 102;" f stopPushing src/Dodge/Door.hs 100;" f
stopSoundFrom src/Dodge/SoundLogic.hs 220;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f
strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f
@@ -5061,7 +5059,7 @@ stripZ src/Geometry/Vector3D.hs 97;" f
subInvX src/Dodge/ListDisplayParams.hs 46;" f subInvX src/Dodge/ListDisplayParams.hs 46;" f
subMap src/TreeHelp.hs 119;" f subMap src/TreeHelp.hs 119;" f
subZipWith src/Dodge/Placement/Instance/Wall.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 118;" f
succB src/Dodge/Debug.hs 170;" f succB src/Dodge/Debug.hs 153;" f
swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f
swapInOutLinks src/Dodge/RoomLink.hs 98;" f swapInOutLinks src/Dodge/RoomLink.hs 98;" f
swapIndices src/ListHelp.hs 50;" f swapIndices src/ListHelp.hs 50;" f
@@ -5260,13 +5258,13 @@ tryUseParent src/Dodge/Creature/State.hs 145;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f turnTo src/Dodge/Movement/Turn.hs 8;" f
turret src/Dodge/Placement/Instance/Turret.hs 35;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 45;" f tutAnoTree src/Dodge/Room/Tutorial.hs 46;" f
tutDrop src/Dodge/Room/Tutorial.hs 103;" f tutDrop src/Dodge/Room/Tutorial.hs 104;" f
tutHub src/Dodge/Room/Tutorial.hs 266;" f tutHub src/Dodge/Room/Tutorial.hs 265;" f
tutLight src/Dodge/Room/Tutorial.hs 231;" f tutLight src/Dodge/Room/Tutorial.hs 230;" f
tutRezBox src/Dodge/Room/Tutorial.hs 379;" f tutRezBox src/Dodge/Room/Tutorial.hs 378;" f
tutRoomTree src/Dodge/Floor.hs 21;" f tutRoomTree src/Dodge/Floor.hs 21;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 403;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 402;" 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 79;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f
@@ -5325,7 +5323,7 @@ updateDelayedEvents src/Dodge/Update.hs 891;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 559;" f updateDistortions src/Dodge/Update.hs 559;" f
updateDoor src/Dodge/DrWdWd.hs 26;" f updateDoor src/Dodge/Door.hs 25;" f
updateDoors src/Dodge/Update.hs 311;" f updateDoors src/Dodge/Update.hs 311;" f
updateDust src/Dodge/Update.hs 823;" f updateDust src/Dodge/Update.hs 823;" f
updateDusts src/Dodge/Update.hs 673;" f updateDusts src/Dodge/Update.hs 673;" f
@@ -5582,7 +5580,7 @@ yourInv src/Dodge/Base/You.hs 28;" f
yourRootItem src/Dodge/Base/You.hs 22;" f yourRootItem src/Dodge/Base/You.hs 22;" f
yourSelectedItem src/Dodge/Base/You.hs 16;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f
yourStatsInfo src/Dodge/Creature/Info.hs 27;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f
zChasm src/Dodge/Room/Tutorial.hs 158;" f zChasm src/Dodge/Room/Tutorial.hs 159;" f
zConnect src/Dodge/Render/Connectors.hs 17;" f zConnect src/Dodge/Render/Connectors.hs 17;" f
zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f