Add check to cylinder segment collision, break rocket projectiles

This commit is contained in:
2025-10-12 00:26:48 +01:00
parent 8245115763
commit 33de1f79b6
9 changed files with 147 additions and 91 deletions
+1 -1
View File
@@ -1 +1 @@
5641590692396144028 7114951007332849727
+12 -1
View File
@@ -732,7 +732,8 @@ useLoadedAmmo loc cr mz m w =
MuzzleRLauncher -> createProjectileR loc magtree mz cr w MuzzleRLauncher -> createProjectileR loc magtree mz cr w
MuzzleGLauncher -> MuzzleGLauncher ->
createProjectile createProjectile
(itmtree ^. dtValue . _3) pq
-- (itmtree ^. dtValue . _3)
(Grenade (getGrenadeHitEffect itmtree)) (Grenade (getGrenadeHitEffect itmtree))
magtree magtree
(getPJStabiliser itmtree) (getPJStabiliser itmtree)
@@ -754,11 +755,21 @@ useLoadedAmmo loc cr mz m w =
MuzzleStopper -> useStopWatch itm cr w MuzzleStopper -> useStopWatch itm cr w
MuzzleScroller -> useTimeScrollGun itm cr w MuzzleScroller -> useTimeScrollGun itm cr w
where where
pq = muzzlePos loc cr mz
itmtree = loc ^. locDT itmtree = loc ^. locDT
mitid = magtree ^. dtValue . _1 . itID mitid = magtree ^. dtValue . _1 . itID
itm = itmtree ^. dtValue . _1 itm = itmtree ^. dtValue . _1
(x, magtree) = fromJust m (x, magtree) = fromJust m
muzzlePos :: LocationDT OItem -> Creature -> Muzzle -> Point3Q
muzzlePos m cr muz = (p1,q1) `Q.comp` pq `Q.comp` (p3,q3)
where
pq = locOrient m cr
p1 = cr ^. crPos
q1 = Q.qz $ cr ^. crDir
p3 = addZ 0 $ muz ^. mzPos
q3 = Q.qz $ muz ^. mzRot
getAttachedSFLink :: ItemSF -> DTree OItem -> Maybe (NewInt ItmInt) getAttachedSFLink :: ItemSF -> DTree OItem -> Maybe (NewInt ItmInt)
getAttachedSFLink sf = (^? dtRight . folding (find f) . dtValue . _1 . itID) getAttachedSFLink sf = (^? dtRight . folding (find f) . dtValue . _1 . itID)
where where
+2 -3
View File
@@ -61,10 +61,9 @@ locOrient loc cr =
handHandleOrient :: LocationDT CItem -> Creature -> Point3Q handHandleOrient :: LocationDT CItem -> Creature -> Point3Q
handHandleOrient loc cr = handHandleOrient loc cr =
handOrient cr (itemAimStance (loc' ^. locDT)) handOrient cr (itemAimStance (l ^. locDT)) `Q.comp` handleOrient l
`Q.comp` handleOrient loc'
where where
loc' = locToTop loc l = locToTop loc
shoulderHeight :: Float shoulderHeight :: Float
shoulderHeight = 18 shoulderHeight = 18
+7 -3
View File
@@ -36,10 +36,13 @@ createShell (p,q) mdetonator mscreen stab pjtype payload muz cr w =
& updatedetonator & updatedetonator
& cWorld . lWorld . projectiles . at i & cWorld . lWorld . projectiles . at i
?~ Shell ?~ Shell
{ _pjPos = pos -- { _pjPos = pos
, _pjVel = (rotateV dir' (V2 speed 0) + crvelcomponent) `v2z` 0 { _pjPos = p
-- , _pjVel = (rotateV dir' (V2 speed 0) + crvelcomponent) `v2z` 0
, _pjVel = (rotateV ddd (V2 speed 0) + crvelcomponent) `v2z` 0
, _pjID = i , _pjID = i
, _pjDir = dir' -- , _pjDir = dir'
, _pjDir = ddd
, _pjSpin = 0 , _pjSpin = 0
, _pjPayload = payload , _pjPayload = payload
, _pjTimer = lifespan , _pjTimer = lifespan
@@ -49,6 +52,7 @@ createShell (p,q) mdetonator mscreen stab pjtype payload muz cr w =
, _pjScreenID = mscreen , _pjScreenID = mscreen
} }
where where
ddd = Q.qToAng q
crvelcomponent = case stab of crvelcomponent = case stab of
Just StabOrthReduce -> projV (cr ^. crPos . _xy - cr ^. crOldPos . _xy) (unitVectorAtAngle dir) Just StabOrthReduce -> projV (cr ^. crPos . _xy - cr ^. crOldPos . _xy) (unitVectorAtAngle dir)
_ -> (cr ^. crPos - cr ^. crOldPos) ^. _xy _ -> (cr ^. crPos - cr ^. crOldPos) ^. _xy
+1 -1
View File
@@ -33,7 +33,7 @@ drawShell mcol pj =
mcol mcol
shellShape :: Shape shellShape :: Shape
shellShape = colorSH black $ upperPrismPoly Small Typical 4 $ map toV2 [(-6, 4), (-6, -4), (6, -4), (8, 0), (6, 4)] shellShape = colorSH (greyN 0.5) $ upperPrismPoly Small Typical 4 $ map toV2 [(-6, 4), (-6, -4), (6, -4), (8, 0), (6, 4)]
drawRemoteShell :: Projectile -> SPic drawRemoteShell :: Projectile -> SPic
drawRemoteShell pj drawRemoteShell pj
+44 -5
View File
@@ -2,6 +2,11 @@
--{-# OPTIONS_GHC -Wno-unused-imports #-} --{-# OPTIONS_GHC -Wno-unused-imports #-}
module Dodge.Projectile.Update (updateProjectile) where module Dodge.Projectile.Update (updateProjectile) where
import Linear
import Dodge.Render.List
import Dodge.Render.Label
import ShortShow
import Picture.Base
import Control.Monad import Control.Monad
import Data.List (delete) import Data.List (delete)
import Data.Maybe import Data.Maybe
@@ -18,8 +23,6 @@ import Dodge.WorldEvent.Sound
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import LensHelp import LensHelp
import Linear.Metric
import Linear.V3
import NewInt import NewInt
import RandomHelp import RandomHelp
@@ -257,16 +260,28 @@ moveStuckGrenade cid poff d pj w
w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjType .~ Grenade GStick w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjType .~ Grenade GStick
moveProjectile :: Projectile -> World -> World moveProjectile :: Projectile -> World -> World
moveProjectile pj w moveProjectile pj w = moveProjectile' pj w
& cWorld . lWorld . flares <>~
(setLayer DebugLayer
$ color red $ line [p, (p +v)]
)
where
p = pj^. pjPos . _xy
v = pj^. pjVel . _xy
moveProjectile' :: Projectile -> World -> World
moveProjectile' pj w
| Just GStuckWall{} <- pj ^? pjType . gnHitEffect = w | Just GStuckWall{} <- pj ^? pjType . gnHitEffect = w
| Just (GStuckCreature crid poff d) <- pj ^? pjType . gnHitEffect = | Just (GStuckCreature crid poff d) <- pj ^? pjType . gnHitEffect =
moveStuckGrenade crid poff d pj w moveStuckGrenade crid poff d pj w
| (p, Just (n, OWall wl)) <- collide3 sp (sp + _pjVel pj) w = | (p, Just (n, OWall wl)) <- collide3 sp (sp + 2 *^ _pjVel pj) w =
shellHitWall p n wl pj w shellHitWall p n wl pj w
| (p, Just (_, OFloor)) <- collide3 sp (sp + _pjVel pj) w = | (p, Just (_, OFloor)) <- collide3 sp (sp + 2*^ _pjVel pj) w =
shellHitFloor p pj w shellHitFloor p pj w
| (p, Just (_, OCreature cr)) <- collide3 sp (sp + _pjVel pj) w = | (p, Just (_, OCreature cr)) <- collide3 sp (sp + _pjVel pj) w =
shellHitCreature p cr pj w shellHitCreature p cr pj w
& cWorld . lWorld . flares <>~ test p cr w sp (_pjVel pj)
| (_, Just (_, OChasmWall)) <- collide3 sp (sp + _pjVel pj) w = | (_, Just (_, OChasmWall)) <- collide3 sp (sp + _pjVel pj) w =
-- no stick or bounce for now -- no stick or bounce for now
w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjTimer .~ 0 w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjTimer .~ 0
@@ -278,6 +293,30 @@ moveProjectile pj w
where where
sp = _pjPos pj sp = _pjPos pj
test p cr w sp v =
(setLayer FixedCoordLayer
$ uncurryV translate (worldPosToScreen (w ^. wCam) (p ^. _xy))
$ drawList [text (shortShow p),text $shortShow sp, text $ shortShow $ sp + 2*v, text $ shortShow v]
<> color white (crossPic 5)
) <>
(setLayer DebugLayer
$ uncurryV translate (p ^. _xy)
$ ( scale 0.1 0.1
$ stackPicturesAt
[ text $ shortShow p
, text $ shortShow sp
, text $ shortShow (sp + v)
]
) <> color green (crossPic 5)
) <>
setLayer DebugLayer
(uncurryV translate (cr ^. crPos . _xy)
$ circle 10
) <>
(setLayer DebugLayer
$ color red $ line [sp^. _xy, (sp +v)^._xy]
)
explodeShell :: Projectile -> World -> World explodeShell :: Projectile -> World -> World
explodeShell pj w = explodeShell pj w =
w w
+6 -9
View File
@@ -360,24 +360,21 @@ intersectCircLine c r x y =
f :: Float -> Point2 f :: Float -> Point2
f a = x + (a *.* (y - x)) f a = x + (a *.* (y - x))
intersectCylSeg :: intersectCylSeg :: Point3 -> Float -> Float -> Point3 -> Point3 ->
Point3 ->
Float ->
Float ->
Point3 ->
Point3 ->
(Maybe (Point3, Point3), Maybe (Point3, Point3)) (Maybe (Point3, Point3), Maybe (Point3, Point3))
intersectCylSeg p r h s e = fromMaybe (Nothing, Nothing) $ do intersectCylSeg p r h s e = fromMaybe (Nothing, Nothing) $ do
(a, b) <- intersectCircLineAlong (p ^. _xy) r (s ^. _xy) (e ^. _xy) (a, b) <- intersectCircLineAlong (p ^. _xy) r (s ^. _xy) (e ^. _xy)
return (f min a, f max b) return (f min a, f max b)
where where
mtopx = intersectLinePlaneAlong s e (V3 0 0 h) (V3 0 0 1) mtopx = intersectLinePlaneAlong s e (V3 0 0 (h + p ^. _z)) (V3 0 0 1)
mbotx = intersectLinePlaneAlong s e (V3 0 0 0) (V3 0 0 1) mbotx = intersectLinePlaneAlong s e (V3 0 0 (p^._z)) (V3 0 0 1)
v = e - s v = e - s
f mm a = do f mm a = do
let x = s + a *.*.* v let x = s + a *.*.* v
if x ^. _z < (h + p ^. _z) && x ^. _z > (p ^. _z) if x ^. _z < (h + p ^. _z) && x ^. _z > (p ^. _z)
then return (x, v & _xy %~ reflectInNormal (x ^. _xy - p ^. _xy)) then do
guard $ a >= 0 && a < 1
return (x, v & _xy %~ reflectInNormal (x ^. _xy - p ^. _xy))
else do else do
topx <- mtopx topx <- mtopx
botx <- mbotx botx <- mbotx
+4
View File
@@ -9,6 +9,10 @@ class ShortShow a where
instance ShortShow a => ShortShow (V2 a) where instance ShortShow a => ShortShow (V2 a) where
shortShow (V2 x y) = shortShow x ++ "#" ++ shortShow y shortShow (V2 x y) = shortShow x ++ "#" ++ shortShow y
instance ShortShow a => ShortShow (V3 a) where
shortShow (V3 x y z) = shortShow x ++ "#" ++ shortShow y
++ "#" ++ shortShow z
newtype ShortString = SString String newtype ShortString = SString String
instance ShortShow ShortString where instance ShortShow ShortString where
+70 -68
View File
@@ -1184,7 +1184,7 @@ SPEEDLEGS src/Dodge/Data/Item/Combine.hs 130;" C
SPRING src/Dodge/Data/Item/Combine.hs 54;" C SPRING src/Dodge/Data/Item/Combine.hs 54;" C
SPic src/ShapePicture/Data.hs 7;" t SPic src/ShapePicture/Data.hs 7;" t
SQUARE src/Dodge/Data/GenParams.hs 20;" C SQUARE src/Dodge/Data/GenParams.hs 20;" C
SString src/ShortShow.hs 12;" C SString src/ShortShow.hs 16;" C
ST src/Dodge/Data/MetaTree.hs 20;" C ST src/Dodge/Data/MetaTree.hs 20;" C
STEELDRUM src/Dodge/Data/Item/Combine.hs 59;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 59;" C
STICKYMOD src/Dodge/Data/Item/Combine.hs 24;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 24;" C
@@ -1231,7 +1231,7 @@ Shockwave src/Dodge/Data/Shockwave.hs 17;" t
ShockwaveDirection src/Dodge/Data/Shockwave.hs 14;" t ShockwaveDirection src/Dodge/Data/Shockwave.hs 14;" t
ShootAt src/Dodge/Data/ActionPlan.hs 181;" C ShootAt src/Dodge/Data/ActionPlan.hs 181;" C
ShortShow src/ShortShow.hs 6;" c ShortShow src/ShortShow.hs 6;" c
ShortString src/ShortShow.hs 12;" t ShortString src/ShortShow.hs 16;" t
Show_bound_box src/Dodge/Data/Config.hs 80;" C Show_bound_box src/Dodge/Data/Config.hs 80;" C
Show_dda_test src/Dodge/Data/Config.hs 83;" C Show_dda_test src/Dodge/Data/Config.hs 83;" C
Show_far_wall_detect src/Dodge/Data/Config.hs 86;" C Show_far_wall_detect src/Dodge/Data/Config.hs 86;" C
@@ -2634,7 +2634,7 @@ anythingHitCirc src/Dodge/Base/Collide.hs 337;" f
applyCME src/Dodge/HeldUse.hs 362;" f applyCME src/Dodge/HeldUse.hs 362;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f
applyEventIO src/Loop.hs 89;" f applyEventIO src/Loop.hs 89;" f
applyGravityPU src/Dodge/Projectile/Update.hs 41;" f applyGravityPU src/Dodge/Projectile/Update.hs 42;" f
applyIndividualDamage src/Dodge/Creature/Damage.hs 17;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 17;" f
applyInvLock src/Dodge/HeldUse.hs 421;" f applyInvLock src/Dodge/HeldUse.hs 421;" f
applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyMagnetsToBul src/Dodge/Bullet.hs 32;" f
@@ -3036,16 +3036,16 @@ createHeadLamp src/Dodge/Euse.hs 58;" f
createItemYou src/Dodge/Inventory/Add.hs 61;" f createItemYou src/Dodge/Inventory/Add.hs 61;" f
createLightMap src/Render.hs 26;" f createLightMap src/Render.hs 26;" f
createPathGrid src/Dodge/Room/Path.hs 20;" f createPathGrid src/Dodge/Room/Path.hs 20;" f
createProjectile src/Dodge/HeldUse.hs 1309;" f createProjectile src/Dodge/HeldUse.hs 1320;" f
createProjectileR src/Dodge/HeldUse.hs 1258;" f createProjectileR src/Dodge/HeldUse.hs 1269;" f
createShell src/Dodge/Projectile/Create.hs 22;" f createShell src/Dodge/Projectile/Create.hs 22;" f
createShieldWall src/Dodge/Item/BackgroundEffect.hs 40;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 40;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 124;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 124;" f
createWall src/Dodge/Wall/Create.hs 8;" f createWall src/Dodge/Wall/Create.hs 8;" f
creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f
creatureShootLaser src/Dodge/HeldUse.hs 816;" f creatureShootLaser src/Dodge/HeldUse.hs 827;" f
creatureShootPulseBall src/Dodge/HeldUse.hs 893;" f creatureShootPulseBall src/Dodge/HeldUse.hs 904;" f
creatureShootPulseLaser src/Dodge/HeldUse.hs 860;" f creatureShootPulseLaser src/Dodge/HeldUse.hs 871;" f
creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 54;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 54;" f
creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 75;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 75;" f
creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 64;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 64;" f
@@ -3211,12 +3211,12 @@ 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/Block.hs 100;" f destroyMount src/Dodge/Block.hs 100;" f
destroyMounts src/Dodge/Block.hs 97;" f destroyMounts src/Dodge/Block.hs 97;" f
destroyProjectile src/Dodge/Projectile/Update.hs 159;" f destroyProjectile src/Dodge/Projectile/Update.hs 160;" 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
detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f
detectorInfo src/Dodge/Item/Info.hs 224;" f detectorInfo src/Dodge/Item/Info.hs 224;" f
determineProjectileTracking src/Dodge/HeldUse.hs 1229;" f determineProjectileTracking src/Dodge/HeldUse.hs 1240;" f
diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f
did src/Dodge/Item/InvSize.hs 54;" f did src/Dodge/Item/InvSize.hs 54;" f
diffAngles src/Geometry.hs 205;" f diffAngles src/Geometry.hs 205;" f
@@ -3246,7 +3246,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 211;" f doBarrelSpin src/Dodge/Projectile/Update.hs 212;" f
doBlBl src/Dodge/BlBl.hs 5;" f doBlBl src/Dodge/BlBl.hs 5;" f
doBlSh src/Dodge/Block/Draw.hs 14;" f doBlSh src/Dodge/Block/Draw.hs 14;" f
doBounce src/Dodge/Base/Collide.hs 67;" f doBounce src/Dodge/Base/Collide.hs 67;" f
@@ -3276,8 +3276,8 @@ 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
doFloatFloat src/Dodge/FloatFunction.hs 5;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doGenFloat src/Dodge/HeldUse.hs 1185;" f doGenFloat src/Dodge/HeldUse.hs 1196;" f
doGravityPU src/Dodge/Projectile/Update.hs 35;" f doGravityPU src/Dodge/Projectile/Update.hs 36;" f
doHeldUseEffect src/Dodge/HeldUse.hs 344;" f doHeldUseEffect src/Dodge/HeldUse.hs 344;" f
doInPlacements src/Dodge/Layout.hs 82;" f doInPlacements src/Dodge/Layout.hs 82;" f
doIndividualPlacements src/Dodge/Layout.hs 96;" f doIndividualPlacements src/Dodge/Layout.hs 96;" f
@@ -3308,7 +3308,7 @@ doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 167;" f
doTestDrawing src/Dodge/Render.hs 41;" f doTestDrawing src/Dodge/Render.hs 41;" f
doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 181;" f doThrust src/Dodge/Projectile/Update.hs 182;" f
doTimeScroll src/Dodge/Update.hs 196;" f doTimeScroll src/Dodge/Update.hs 196;" f
doTmWdWd src/Dodge/WorldEffect.hs 89;" f doTmWdWd src/Dodge/WorldEffect.hs 89;" f
doWallRotate src/Dodge/Update/Camera.hs 220;" f doWallRotate src/Dodge/Update/Camera.hs 220;" f
@@ -3467,7 +3467,7 @@ drawZoneCol src/Dodge/Debug/Picture.hs 149;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 285;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 285;" f
dropAll src/Dodge/Creature/Update.hs 129;" f dropAll src/Dodge/Creature/Update.hs 129;" f
dropExcept src/Dodge/Creature/Action.hs 168;" f dropExcept src/Dodge/Creature/Action.hs 168;" f
dropInventoryPath src/Dodge/HeldUse.hs 1397;" f dropInventoryPath src/Dodge/HeldUse.hs 1408;" f
dropItem src/Dodge/Creature/Action.hs 175;" f dropItem src/Dodge/Creature/Action.hs 175;" f
dropper src/Dodge/Item/Scope.hs 76;" f dropper src/Dodge/Item/Scope.hs 76;" f
drumMag src/Dodge/Item/Ammo.hs 34;" f drumMag src/Dodge/Item/Ammo.hs 34;" f
@@ -3544,7 +3544,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 187;" f expireAndDamage src/Dodge/Bullet.hs 187;" f
explodeShell src/Dodge/Projectile/Update.hs 281;" f explodeShell src/Dodge/Projectile/Update.hs 285;" 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
@@ -3556,7 +3556,7 @@ extractRoomPos src/Dodge/RoomPos.hs 6;" f
faceEdges src/Polyhedra.hs 65;" f faceEdges src/Polyhedra.hs 65;" f
facesToVF src/Polyhedra/Geodesic.hs 69;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f
farWallDistDirection src/Dodge/Update/Camera.hs 241;" f farWallDistDirection src/Dodge/Update/Camera.hs 241;" f
fdiv src/ShortShow.hs 37;" f fdiv src/ShortShow.hs 41;" f
feet src/Dodge/Creature/Picture.hs 51;" f feet src/Dodge/Creature/Picture.hs 51;" f
ffoldM src/Framebuffer/Update.hs 79;" f ffoldM src/Framebuffer/Update.hs 79;" f
filter3 src/FoldableHelp.hs 76;" f filter3 src/FoldableHelp.hs 76;" f
@@ -3645,7 +3645,7 @@ fusePairs src/Dodge/Path.hs 153;" f
fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f
fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f
fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f
g src/ShortShow.hs 44;" f g src/ShortShow.hs 48;" f
gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f
gRandify src/Dodge/Randify.hs 11;" f gRandify src/Dodge/Randify.hs 11;" f
gadgetEffect src/Dodge/HeldUse.hs 47;" f gadgetEffect src/Dodge/HeldUse.hs 47;" f
@@ -3655,7 +3655,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f
gameRoomsFromRooms src/Dodge/Layout.hs 144;" f gameRoomsFromRooms src/Dodge/Layout.hs 144;" f
gameplayMenu src/Dodge/Menu.hs 155;" f gameplayMenu src/Dodge/Menu.hs 155;" f
gameplayMenuOptions src/Dodge/Menu.hs 158;" f gameplayMenuOptions src/Dodge/Menu.hs 158;" f
gasType src/Dodge/HeldUse.hs 1142;" f gasType src/Dodge/HeldUse.hs 1153;" f
generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f
generateGraphs src/Dodge/Menu.hs 149;" f generateGraphs src/Dodge/Menu.hs 149;" f
generateLayout src/Dodge/Layout/Generate.hs 10;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f
@@ -3668,11 +3668,11 @@ geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f geqConstr src/SameConstr.hs 21;" f
getAimZoom src/Dodge/Update/Camera.hs 143;" f getAimZoom src/Dodge/Update/Camera.hs 143;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f
getAttachedSFLink src/Dodge/HeldUse.hs 762;" f getAttachedSFLink src/Dodge/HeldUse.hs 773;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 172;" f getBulHitDams src/Dodge/Bullet.hs 172;" f
getBulletType src/Dodge/HeldUse.hs 925;" f getBulletType src/Dodge/HeldUse.hs 936;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f 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
@@ -3680,7 +3680,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 323;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 323;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 310;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 310;" f
getDistortions src/Dodge/Render.hs 435;" f getDistortions src/Dodge/Render.hs 435;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1297;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1308;" f
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f
getLaserColor src/Dodge/HeldUse.hs 704;" f getLaserColor src/Dodge/HeldUse.hs 704;" f
@@ -3690,7 +3690,7 @@ getLinksOfType src/Dodge/RoomLink.hs 41;" f
getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f
getMenuMouseContext src/Dodge/Update.hs 372;" f getMenuMouseContext src/Dodge/Update.hs 372;" f
getNodePos src/Dodge/Path.hs 31;" f getNodePos src/Dodge/Path.hs 31;" f
getPJStabiliser src/Dodge/HeldUse.hs 1284;" f getPJStabiliser src/Dodge/HeldUse.hs 1295;" 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 306;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 306;" f
@@ -3759,7 +3759,7 @@ handleMouseButtonEvent src/Dodge/Event/Input.hs 61;" f
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
handleMouseWheelEvent src/Dodge/Event/Input.hs 56;" f handleMouseWheelEvent src/Dodge/Event/Input.hs 56;" f
handleOrient src/Dodge/Item/HeldOffset.hs 31;" f handleOrient src/Dodge/Item/HeldOffset.hs 31;" f
handlePos src/Dodge/Item/HeldOffset.hs 84;" f handlePos src/Dodge/Item/HeldOffset.hs 83;" f
handleResizeEvent src/Dodge/Event.hs 53;" f handleResizeEvent src/Dodge/Event.hs 53;" f
handleTextInput src/Dodge/Event/Input.hs 19;" f handleTextInput src/Dodge/Event/Input.hs 19;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f
@@ -3782,14 +3782,14 @@ heldAimStance src/Dodge/Item/AimStance.hs 24;" f
heldAimZoom src/Dodge/Update/Camera.hs 149;" f heldAimZoom src/Dodge/Update/Camera.hs 149;" f
heldEffect src/Dodge/HeldUse.hs 60;" f heldEffect src/Dodge/HeldUse.hs 60;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 131;" f heldEffectMuzzles src/Dodge/HeldUse.hs 131;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 90;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 89;" f
heldInfo src/Dodge/Item/Info.hs 92;" f heldInfo src/Dodge/Item/Info.hs 92;" f
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 19;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 19;" f
heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f
heldItemInvLock src/Dodge/HeldUse.hs 435;" f heldItemInvLock src/Dodge/HeldUse.hs 435;" f
heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzVel src/Dodge/HeldUse.hs 1033;" f
heldItemMuzzles src/Dodge/HeldUse.hs 176;" f heldItemMuzzles src/Dodge/HeldUse.hs 176;" f
heldItemRifling src/Dodge/HeldUse.hs 1065;" f heldItemRifling src/Dodge/HeldUse.hs 1076;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 233;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 233;" f
heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f
heldPositionInfo src/Dodge/Item/Info.hs 240;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f
@@ -3949,7 +3949,7 @@ itemBlips src/Dodge/RadarSweep.hs 94;" f
itemBulkiness src/Dodge/Creature/YourControl.hs 188;" f itemBulkiness src/Dodge/Creature/YourControl.hs 188;" f
itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f
itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f
itemDetectorEffect src/Dodge/HeldUse.hs 768;" f itemDetectorEffect src/Dodge/HeldUse.hs 779;" f
itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f
itemEquipPict src/Dodge/Item/Draw.hs 18;" f itemEquipPict src/Dodge/Item/Draw.hs 18;" f
itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f
@@ -3998,8 +3998,8 @@ jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f
jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f
jumpLegs src/Dodge/Item/Equipment.hs 93;" f jumpLegs src/Dodge/Item/Equipment.hs 93;" f
justify src/Justify.hs 9;" f justify src/Justify.hs 9;" f
k src/ShortShow.hs 44;" f k src/ShortShow.hs 48;" f
k' src/ShortShow.hs 44;" f k' src/ShortShow.hs 48;" f
keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 78;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 78;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 66;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 66;" f
@@ -4125,13 +4125,13 @@ lsColPosRad src/Dodge/LightSource.hs 29;" f
lsPosCol src/Dodge/LightSource.hs 26;" f lsPosCol src/Dodge/LightSource.hs 26;" f
lsPosRad src/Dodge/LightSource.hs 17;" f lsPosRad src/Dodge/LightSource.hs 17;" f
ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 12;" f ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 12;" f
m src/ShortShow.hs 44;" f m src/ShortShow.hs 48;" f
mAT src/Dodge/Item/MagAmmoType.hs 19;" f mAT src/Dodge/Item/MagAmmoType.hs 19;" f
machineAddSound src/Dodge/Machine.hs 50;" f machineAddSound src/Dodge/Machine.hs 50;" f
machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f
machineUpdateDeathEff src/Dodge/Machine.hs 35;" f machineUpdateDeathEff src/Dodge/Machine.hs 35;" f
machineUpdateLiveDieEff src/Dodge/Machine.hs 17;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 17;" f
magAmmoParams src/Dodge/HeldUse.hs 946;" f magAmmoParams src/Dodge/HeldUse.hs 957;" f
magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f
magShield src/Dodge/Item/Equipment.hs 27;" f magShield src/Dodge/Item/Equipment.hs 27;" f
magV src/Geometry/Vector.hs 172;" f magV src/Geometry/Vector.hs 172;" f
@@ -4146,7 +4146,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f
makeBlip src/Dodge/RadarSweep.hs 70;" f makeBlip src/Dodge/RadarSweep.hs 70;" f
makeBlockDebris src/Dodge/Block/Debris.hs 34;" f makeBlockDebris src/Dodge/Block/Debris.hs 34;" f
makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 1003;" f makeBullet src/Dodge/HeldUse.hs 1014;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
@@ -4224,11 +4224,11 @@ mcProxSensorUpdate src/Dodge/Machine/Update.hs 139;" f
mcProxTest src/Dodge/Machine/Update.hs 203;" f mcProxTest src/Dodge/Machine/Update.hs 203;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f
mcSPic src/Dodge/Render/ShapePicture.hs 135;" f mcSPic src/Dodge/Render/ShapePicture.hs 135;" f
mcShootAuto src/Dodge/HeldUse.hs 1196;" f mcShootAuto src/Dodge/HeldUse.hs 1207;" f
mcShootLaser src/Dodge/HeldUse.hs 1189;" f mcShootLaser src/Dodge/HeldUse.hs 1200;" f
mcTriggerVal src/Dodge/Machine/Update.hs 110;" f mcTriggerVal src/Dodge/Machine/Update.hs 110;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f
mcUseHeld src/Dodge/HeldUse.hs 1108;" f mcUseHeld src/Dodge/HeldUse.hs 1119;" f
mcUseItem src/Dodge/Machine/Update.hs 89;" f mcUseItem src/Dodge/Machine/Update.hs 89;" f
megaBattery src/Dodge/Item/Ammo.hs 55;" f megaBattery src/Dodge/Item/Ammo.hs 55;" f
megaShellMag src/Dodge/Item/Ammo.hs 44;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f
@@ -4298,10 +4298,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 43;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 43;" f
movePenBullet src/Dodge/Bullet.hs 202;" f movePenBullet src/Dodge/Bullet.hs 202;" f
moveProjectile src/Dodge/Projectile/Update.hs 259;" f moveProjectile src/Dodge/Projectile/Update.hs 260;" 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 245;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 246;" f
moveToSideNthOutLink src/Dodge/Room/Warning.hs 69;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 69;" f
moveWall src/Dodge/Wall/Move.hs 29;" f moveWall src/Dodge/Wall/Move.hs 29;" f
moveWallID src/Dodge/Wall/Move.hs 24;" f moveWallID src/Dodge/Wall/Move.hs 24;" f
@@ -4318,6 +4318,7 @@ multiLookupTrie src/SimpleTrie.hs 57;" f
multiLookupTrieI src/SimpleTrie.hs 66;" f multiLookupTrieI src/SimpleTrie.hs 66;" f
muout src/Dodge/RoomLink.hs 144;" f muout src/Dodge/RoomLink.hs 144;" f
muzFlareAt src/Dodge/HeldUse.hs 675;" f muzFlareAt src/Dodge/HeldUse.hs 675;" f
muzzlePos src/Dodge/HeldUse.hs 764;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 193;" f mvFS src/Dodge/Placement/PlaceSpot.hs 193;" f
@@ -4417,7 +4418,7 @@ overlapSegWalls src/Dodge/Base/Collide.hs 202;" f
overrideInternal src/Dodge/Creature/ReaderUpdate.hs 175;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 175;" f
overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 36;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 36;" f
overwriteLabel src/Dodge/Tree/Compose.hs 31;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f
p src/ShortShow.hs 44;" f p src/ShortShow.hs 48;" f
pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f
pairInPolys src/Dodge/Room/Path.hs 45;" f pairInPolys src/Dodge/Room/Path.hs 45;" f
pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 70;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 70;" f
@@ -4466,7 +4467,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 224;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 225;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f
@@ -4748,8 +4749,8 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f
remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f
remoteScreen src/Dodge/Item/Scope.hs 139;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f
removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 921;" f removeAmmoFromMag src/Dodge/HeldUse.hs 932;" f
removeDot src/ShortShow.hs 40;" 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 224;" f removeLights src/Dodge/Room/Tutorial.hs 224;" f
removeShieldWall src/Dodge/Item/BackgroundEffect.hs 58;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 58;" f
@@ -5003,10 +5004,10 @@ shapeVerxSize src/Shape/Parameters.hs 10;" f
shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f
shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f
shatterWall src/Dodge/Item/Weapon/Shatter.hs 27;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 27;" f
shellExplosionCheck src/Dodge/Projectile/Update.hs 55;" f shellExplosionCheck src/Dodge/Projectile/Update.hs 56;" f
shellHitCreature src/Dodge/Projectile/Update.hs 83;" f shellHitCreature src/Dodge/Projectile/Update.hs 84;" f
shellHitFloor src/Dodge/Projectile/Update.hs 99;" f shellHitFloor src/Dodge/Projectile/Update.hs 100;" f
shellHitWall src/Dodge/Projectile/Update.hs 66;" f shellHitWall src/Dodge/Projectile/Update.hs 67;" f
shellMag src/Dodge/Item/Ammo.hs 49;" f shellMag src/Dodge/Item/Ammo.hs 49;" f
shellModule src/Dodge/Item/Scope.hs 123;" f shellModule src/Dodge/Item/Scope.hs 123;" f
shellShape src/Dodge/Projectile/Draw.hs 35;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f
@@ -5032,16 +5033,16 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f
shiftedGrid src/Grid.hs 25;" f shiftedGrid src/Grid.hs 25;" f
shineTargetLaser src/Dodge/Creature/State.hs 201;" f shineTargetLaser src/Dodge/Creature/State.hs 201;" f
shineTorch src/Dodge/Creature/State.hs 238;" f shineTorch src/Dodge/Creature/State.hs 238;" f
shootBullet src/Dodge/HeldUse.hs 988;" f shootBullet src/Dodge/HeldUse.hs 999;" f
shootBullets src/Dodge/HeldUse.hs 978;" f shootBullets src/Dodge/HeldUse.hs 989;" f
shootFirstMiss src/Dodge/Creature/Volition.hs 34;" f shootFirstMiss src/Dodge/Creature/Volition.hs 34;" f
shootLaser src/Dodge/HeldUse.hs 839;" f shootLaser src/Dodge/HeldUse.hs 850;" f
shootPulseBall src/Dodge/HeldUse.hs 907;" f shootPulseBall src/Dodge/HeldUse.hs 918;" f
shootPulseLaser src/Dodge/HeldUse.hs 880;" f shootPulseLaser src/Dodge/HeldUse.hs 891;" f
shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f
shootTeslaArc src/Dodge/HeldUse.hs 1212;" f shootTeslaArc src/Dodge/HeldUse.hs 1223;" f
shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f
shootTractorBeam src/Dodge/HeldUse.hs 795;" f shootTractorBeam src/Dodge/HeldUse.hs 806;" f
shootersRoom src/Dodge/Room/Room.hs 324;" f shootersRoom src/Dodge/Room/Room.hs 324;" f
shootersRoom' src/Dodge/Room/Room.hs 291;" f shootersRoom' src/Dodge/Room/Room.hs 291;" f
shootersRoom1 src/Dodge/Room/Room.hs 314;" f shootersRoom1 src/Dodge/Room/Room.hs 314;" f
@@ -5049,7 +5050,7 @@ shootingRange src/Dodge/Room/Room.hs 341;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 7;" f shortShow src/ShortShow.hs 7;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 708;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 708;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 69;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 68;" f
shoulderSH src/Dodge/Creature/Picture.hs 124;" f shoulderSH src/Dodge/Creature/Picture.hs 124;" f
showAttachItem src/Dodge/Item/Display.hs 92;" f showAttachItem src/Dodge/Item/Display.hs 92;" f
showEnabledDebugs src/Dodge/Debug/Picture.hs 156;" f showEnabledDebugs src/Dodge/Debug/Picture.hs 156;" f
@@ -5195,7 +5196,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 37;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 37;" f
strictify src/MaybeHelp.hs 37;" f strictify src/MaybeHelp.hs 37;" f
strideRot src/Dodge/Item/HeldOffset.hs 72;" f strideRot src/Dodge/Item/HeldOffset.hs 71;" f
stringToList src/Picture/Base.hs 313;" f stringToList src/Picture/Base.hs 313;" f
stringToListGrad src/Picture/Text.hs 12;" f stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f stripZ src/Geometry/Vector3D.hs 97;" f
@@ -5211,7 +5212,7 @@ swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f
swarmUsingCenter src/Dodge/Creature/Boid.hs 176;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 176;" f
switchDoor src/Dodge/Placement/Instance/Door.hs 104;" f switchDoor src/Dodge/Placement/Instance/Door.hs 104;" f
switchWallCol src/Dodge/Default/Door.hs 12;" f switchWallCol src/Dodge/Default/Door.hs 12;" f
t src/ShortShow.hs 44;" f t src/ShortShow.hs 48;" f
tEast src/Dodge/Room/Corridor.hs 90;" f tEast src/Dodge/Room/Corridor.hs 90;" f
tToBTree src/Dodge/Tree/Compose.hs 92;" f tToBTree src/Dodge/Tree/Compose.hs 92;" f
tWest src/Dodge/Room/Corridor.hs 115;" f tWest src/Dodge/Room/Corridor.hs 115;" f
@@ -5255,6 +5256,7 @@ terminalWheelEvent src/Dodge/Update/Scroll.hs 131;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 409;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 409;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f
test src/Dodge/Projectile/Update.hs 283;" f
testCrossWalls src/Dodge/Room/Path.hs 41;" f testCrossWalls src/Dodge/Room/Path.hs 41;" f
testEvent src/Dodge/Event/Test.hs 9;" f testEvent src/Dodge/Event/Test.hs 9;" f
testInventory src/Dodge/Creature.hs 292;" f testInventory src/Dodge/Creature.hs 292;" f
@@ -5338,7 +5340,7 @@ torqueCr src/Dodge/WorldEffect.hs 72;" f
torso src/Dodge/Creature/Picture.hs 102;" f torso src/Dodge/Creature/Picture.hs 102;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 807;" f tractorBeamAt src/Dodge/HeldUse.hs 818;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" f
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
@@ -5398,9 +5400,9 @@ tryPlay src/Sound.hs 84;" f
tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f
tryPutItemInInvAt src/Dodge/Inventory/Add.hs 53;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 53;" f
trySeedFromClipboard src/Dodge/Menu.hs 96;" f trySeedFromClipboard src/Dodge/Menu.hs 96;" f
trySpin src/Dodge/Projectile/Update.hs 169;" f trySpin src/Dodge/Projectile/Update.hs 170;" f
trySynthBullet src/Dodge/Creature/State.hs 167;" f trySynthBullet src/Dodge/Creature/State.hs 167;" f
tryThrust src/Dodge/Projectile/Update.hs 175;" f tryThrust src/Dodge/Projectile/Update.hs 176;" f
tryUseParent src/Dodge/Creature/State.hs 145;" f 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 37;" f turret src/Dodge/Placement/Instance/Turret.hs 37;" f
@@ -5417,7 +5419,7 @@ twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 81;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f
twists src/Dodge/Creature/Test.hs 100;" f twists src/Dodge/Creature/Test.hs 100;" f
twoFlat src/Dodge/Creature/Test.hs 97;" f twoFlat src/Dodge/Creature/Test.hs 97;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 81;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 146;" f twoRoomPoss src/Dodge/PlacementSpot.hs 146;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f
@@ -5516,7 +5518,7 @@ updateObjCatMaybes src/Dodge/Update.hs 533;" f
updateObjMapMaybe src/Dodge/Update.hs 526;" f updateObjMapMaybe src/Dodge/Update.hs 526;" f
updatePastWorlds src/Dodge/Update.hs 408;" f updatePastWorlds src/Dodge/Update.hs 408;" f
updatePreload src/Preload/Update.hs 20;" f updatePreload src/Preload/Update.hs 20;" f
updateProjectile src/Dodge/Projectile/Update.hs 26;" f updateProjectile src/Dodge/Projectile/Update.hs 27;" f
updateProp src/Dodge/Prop/Update.hs 11;" f updateProp src/Dodge/Prop/Update.hs 11;" f
updatePulse src/Dodge/Creature/Update.hs 146;" f updatePulse src/Dodge/Creature/Update.hs 146;" f
updatePulseBall src/Dodge/Update.hs 433;" f updatePulseBall src/Dodge/Update.hs 433;" f
@@ -5578,9 +5580,9 @@ upperPrismPolySU src/Shape.hs 114;" f
upperPrismPolyTS src/Shape.hs 120;" f upperPrismPolyTS src/Shape.hs 120;" f
upperRounded src/Shape.hs 185;" f upperRounded src/Shape.hs 185;" f
useBulletPayload src/Dodge/Bullet.hs 116;" f useBulletPayload src/Dodge/Bullet.hs 116;" f
useGasParams src/Dodge/HeldUse.hs 1113;" f useGasParams src/Dodge/HeldUse.hs 1124;" f
useHotkey src/Dodge/Creature/YourControl.hs 77;" f useHotkey src/Dodge/Creature/YourControl.hs 77;" f
useInventoryPath src/Dodge/HeldUse.hs 1428;" f useInventoryPath src/Dodge/HeldUse.hs 1439;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 255;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 255;" f
@@ -5588,11 +5590,11 @@ useLoadedAmmo src/Dodge/HeldUse.hs 717;" f
useMagShield src/Dodge/Euse.hs 30;" f useMagShield src/Dodge/Euse.hs 30;" f
useNormalCamera src/Dodge/Camera.hs 6;" f useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1388;" f useRewindGun src/Dodge/HeldUse.hs 1399;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 180;" f useRoomPosCond src/Dodge/PlacementSpot.hs 180;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 183;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 183;" f
useStopWatch src/Dodge/HeldUse.hs 1369;" f useStopWatch src/Dodge/HeldUse.hs 1380;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1377;" f useTimeScrollGun src/Dodge/HeldUse.hs 1388;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 171;" f useUnusedLnk src/Dodge/PlacementSpot.hs 171;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 202;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 202;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 209;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 209;" f
@@ -5626,7 +5628,7 @@ visionCheck src/Dodge/Creature/Perception.hs 153;" f
vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f
walkNozzle src/Dodge/HeldUse.hs 783;" f walkNozzle src/Dodge/HeldUse.hs 794;" f
walkableNodeNear src/Dodge/Path.hs 48;" f walkableNodeNear src/Dodge/Path.hs 48;" f
wallBlips src/Dodge/RadarSweep.hs 99;" f wallBlips src/Dodge/RadarSweep.hs 99;" f
wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f
@@ -5635,7 +5637,7 @@ wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f
wallToSurface src/Dodge/Base/Collide.hs 171;" f wallToSurface src/Dodge/Base/Collide.hs 171;" f
wallsFromRooms src/Dodge/Layout.hs 132;" f wallsFromRooms src/Dodge/Layout.hs 132;" f
wallsToDraw src/Dodge/Render/Walls.hs 17;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f
warmupSound src/Dodge/HeldUse.hs 1422;" f warmupSound src/Dodge/HeldUse.hs 1433;" f
warningRooms src/Dodge/Room/Warning.hs 30;" f warningRooms src/Dodge/Room/Warning.hs 30;" f
wasdAim src/Dodge/Creature/YourControl.hs 133;" f wasdAim src/Dodge/Creature/YourControl.hs 133;" f
wasdDir src/Dodge/WASD.hs 17;" f wasdDir src/Dodge/WASD.hs 17;" f