From 3206cdebf6cb9f0fa0826d7fc535151f35ff14c8 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 12 Oct 2025 18:47:10 +0100 Subject: [PATCH] Cleanup projectile update --- src/Dodge/Projectile/Update.hs | 181 ++++++++++++++++----------------- tags | 176 ++++++++++++++++---------------- 2 files changed, 177 insertions(+), 180 deletions(-) diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index 4263361f0..f1fc08dcb 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -2,7 +2,6 @@ --{-# OPTIONS_GHC -Wno-unused-imports #-} module Dodge.Projectile.Update (updateProjectile) where -import Linear import Control.Monad import Data.List (delete) import Data.Maybe @@ -19,6 +18,7 @@ import Dodge.WorldEvent.Sound import Geometry import qualified IntMapHelp as IM import LensHelp +import Linear import NewInt import RandomHelp @@ -38,62 +38,57 @@ doGravityPU pj | otherwise = id applyGravityPU :: Projectile -> World -> World -applyGravityPU pj w - | (pj ^. pjPos . _z) < 1 && norm (_pjVel pj) < 1 = - w - & topj . pjVel .~ 0 - | otherwise = - w -- & topj . pjZ .~ newz - & topj . pjVel . _z -~ 0.5 +applyGravityPU pj + | (pj ^. pjPos . _z) < 1 && norm (_pjVel pj) < 1 = topj . pjVel .~ 0 + | otherwise = topj . pjVel . _z -~ 0.5 where topj = cWorld . lWorld . projectiles . ix (pj ^. pjID) --- newz = pj ^. pjZ + pj ^. pjZVel - -- consider pushing any hit creature back shellExplosionCheck :: Projectile -> World -> World -shellExplosionCheck pj w +shellExplosionCheck pj | RetiredProjectile <- pj ^. pjType - , time <= 0 = - destroyProjectile (pj ^. pjScreenID) (_pjID pj) w - | time <= 0 = explodeShell pj w - | RetiredProjectile <- pj ^. pjType = w - | otherwise = w + , timeout = + destroyProjectile pj + | timeout = explodeShell pj + | otherwise = id where - time = _pjTimer pj + timeout = pj ^. pjTimer <= 0 shellHitWall :: Point3 -> Point3 -> Wall -> Projectile -> World -> World -shellHitWall p n wl pj w +shellHitWall p n wl pj | Just GStick <- pj ^? pjType . gnHitEffect = - w & topj . pjType .~ Grenade (GStuckWall (wl ^. wlStructure)) - & soundOriginIDsAt (ShellSound (pj ^. pjID)) [slapS, slap1S] (pj ^. pjPos . _xy) + (topj . pjType .~ Grenade (GStuckWall (wl ^. wlStructure))) + . stickHitSound pj | Just x <- pj ^? pjType . gnHitEffect . bounceTolerance , abs (dot (pj ^. pjVel) (normalize n)) < x = - w - & topj . pjVel %~ reflectInNormal n - & topj . pjPos .~ p + normalize n - & soundStart (ShellSound (pj ^. pjID)) (pj ^. pjPos . _xy) click1S Nothing - | otherwise = - w & topj . pjPos .~ p - & topj . pjTimer .~ 0 + (topj . pjVel %~ reflectInNormal n) + . (topj . pjPos .~ p + normalize n) + . bounceSound pj + | otherwise = topj %~ ((pjPos .~ p) . (pjTimer .~ 0)) where topj = cWorld . lWorld . projectiles . ix (_pjID pj) +bounceSound :: Projectile -> World -> World +bounceSound pj = soundStart (ShellSound (pj ^. pjID)) (pj ^. pjPos . _xy) click1S Nothing + +stickHitSound :: Projectile -> World -> World +stickHitSound pj = + soundOriginIDsAt (ShellSound (pj ^. pjID)) [slapS, slap1S] (pj ^. pjPos . _xy) + shellHitCreature :: Point3 -> Creature -> Projectile -> World -> World -shellHitCreature p cr pj w +shellHitCreature p cr pj | Just GStick <- pj ^? pjType . gnHitEffect = - w - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjType - .~ Grenade - ( GStuckCreature - (cr ^. crID) - (rotate3z (- cr ^. crDir) (p - ((cr ^. crPos . _xy) `v2z` 0))) - (pj ^. pjDir - cr ^. crDir) - ) - & soundOriginIDsAt (ShellSound (pj ^. pjID)) [slapS, slap1S] (pj ^. pjPos . _xy) - | otherwise = - w - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjTimer .~ 0 + (pjlens . pjType .~ Grenade gren) + . stickHitSound pj + | otherwise = pjlens . pjTimer .~ 0 + where + pjlens = cWorld . lWorld . projectiles . ix (_pjID pj) + gren = + GStuckCreature + (cr ^. crID) + (rotate3z (- cr ^. crDir) (p - cr ^. crPos)) + (pj ^. pjDir - cr ^. crDir) shellHitFloor :: Point3 -> Projectile -> World -> World shellHitFloor p pj w @@ -104,7 +99,7 @@ shellHitFloor p pj w & topj . pjVel . _z %~ bouncez & topj . pjVel . _xy %~ decvel & topj . pjSpin %~ decspin - & soundStart (ShellSound (pj ^. pjID)) (pj ^. pjPos . _xy) click1S Nothing + & bounceSound pj where bouncez x | x < -1 = -0.5 * x @@ -119,14 +114,13 @@ shellHitFloor p pj w | abs x < 0.01 = 0 | otherwise = x * 0.9 -destroyProjectile :: Maybe (NewInt ItmInt) -> Int -> World -> World -destroyProjectile mitid pjid w = - w & cWorld . lWorld . projectiles %~ IM.delete pjid - & removelink +destroyProjectile :: Projectile -> World -> World +destroyProjectile pj = + (cWorld . lWorld . projectiles %~ IM.delete pjid) . removelink where + pjid = pj ^. pjID removelink = fromMaybe id $ do - itid <- mitid --- loc <- w ^? cWorld . lWorld . itemLocations . ix itid + itid <- pj ^. pjScreenID return $ pointerToItemID itid . itUse . uaParams . apProjectiles %~ delete pjid trySpin :: Projectile -> World -> World @@ -139,37 +133,36 @@ tryThrust :: Projectile -> World -> World tryThrust pj = fromMaybe id $ do Rocket y x <- pj ^? pjType guard $ pj ^. pjTimer <= 330 && pj ^. pjTimer >= 0 - return $ doThrust pj x . pjRemoteSetDirection (Just y) pj + return $ doThrust pj x . pjRemoteSetDirection y pj doThrust :: Projectile -> Maybe RocketSmoke -> World -> World doThrust pj smoke w = w & randGen .~ g - & cWorld . lWorld . projectiles . ix i . pjVel . _xy %~ (\v -> accel +.+ frict *.* v) - & soundContinue (ShellSound i) newPos missileLaunchS (Just 1) + & cWorld . lWorld . projectiles . ix i . pjVel . _xy %~ (\v -> accel + frict *^ v) + & soundContinue (ShellSound i) (ep ^. _xy) missileLaunchS (Just 1) & makeFlamelet - ((oldPos -.- vel) `v2z` 20) - ((vel +.+ rotateV (pi + sparkD) accel) `v2z` 0) + (sp - 0.5 *^ vel) + (vel + rotateV (pi + sparkD) accel `v2z` 0) 3 10 & makeCloudAt RocketSmoke lifetime - (addZ 20 (oldPos +.+ r1 +.+ 30 *.* normalizeV (oldPos -.- newPos))) + (sp + r1 + 30 *^ signorm (sp - ep)) where lifetime = fst . randomR lt $ _randGen w lt | smoke == Just ReducedRocketSmoke = (50, 200) | otherwise = (300, 500) - -- trailfadetime = fst . randomR (100, 300) $ _randGen w accel = rotateV (pj ^. pjDir) (V2 3 0) i = _pjID pj - oldPos = pj ^. pjPos . _xy - vel = pj ^. pjVel . _xy - newPos = oldPos +.+ vel + sp = pj ^. pjPos + vel = pj ^. pjVel + ep = sp + vel (frict, g) = randomR (0.6, 0.9) $ _randGen w (sparkD, _) = randomR (-0.2, 0.2) $ _randGen w - r1 = randInCirc 10 & evalState $ _randGen w + r1 = addZ 0 $ randInCirc 10 & evalState $ _randGen w doBarrelSpin :: Int -> Float -> Projectile -> World -> World doBarrelSpin cid i pj w = @@ -179,31 +172,36 @@ doBarrelSpin cid i pj w = pjid = _pjID pj dir = argV $ pj ^. pjVel . _xy newSpin = case w ^? cWorld . lWorld . creatures . ix cid of - Just cr -> negate $ min 0.2 $ max (-0.2) $ normalizeAnglePi (dir - _crDir cr) / spinFactor + Just cr -> + negate $ + min 0.2 $ max (-0.2) $ normalizeAnglePi (dir - _crDir cr) / spinFactor _ -> 0 spinFactor = 5 * (6 - i) -- note this only allows YOU to remotely track projectiles -pjRemoteSetDirection :: Maybe RocketHoming -> Projectile -> World -> World +pjRemoteSetDirection :: RocketHoming -> Projectile -> World -> World pjRemoteSetDirection ph pj w = case ph of - Just (HomeUsingRemoteScreen screenid) + HomeUsingRemoteScreen screenid | lw ^? creatures . ix 0 . crManipulation . manObject . imSelectedItem == lw ^? items . ix (_unNInt screenid) . itLocation . ilInvID -> w - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjDir - .~ (w ^. wCam . camRot) + argV (w ^. input . mousePos) - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjSpin - .~ 0.5 * diffAngles ((w ^. wCam . camRot) + argV (w ^. input . mousePos)) (_pjDir pj) - Just (HomeUsingTargeting itid) + & pjlens . pjDir .~ mousedir + & pjlens . pjSpin .~ 0.5 * diffAngles mousedir pjdir + HomeUsingTargeting itid | Just tp <- w ^? pointerToItemID itid . itTargeting . itTgPos . _Just -> w - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjDir - %~ turnTo 0.2 (pj ^. pjPos . _xy) tp - & cWorld . lWorld . projectiles . ix (_pjID pj) . pjSpin - .~ 0.5 * diffAngles (turnTo 0.2 (pj ^. pjPos . _xy) tp (_pjDir pj)) (_pjDir pj) + & pjlens . pjDir %~ turnTo 0.2 (pj ^. pjPos . _xy) tp + & pjlens . pjSpin + .~ 0.5 + * diffAngles + (turnTo 0.2 (pj ^. pjPos . _xy) tp pjdir) + pjdir _ -> w where + pjdir = pj ^. pjDir + mousedir = w ^. wCam . camRot + argV (w ^. input . mousePos) lw = w ^. cWorld . lWorld + pjlens = cWorld . lWorld . projectiles . ix (pj ^. pjID) moveStuckGrenade :: Int -> Point3 -> Float -> Projectile -> World -> World moveStuckGrenade cid poff d pj w @@ -212,45 +210,44 @@ moveStuckGrenade cid poff d pj w cdir = cr ^. crDir vel = cpos - cr ^. crOldPos in w - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjPos . _xy - .~ xyV3 (cpos + rotate3z cdir poff) - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjDir .~ d + cdir - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjVel .~ vel + & pjlens . pjPos . _xy .~ xyV3 (cpos + rotate3z cdir poff) + & pjlens . pjDir .~ d + cdir + & pjlens . pjVel .~ vel | otherwise = - w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjType .~ Grenade GStick + w & pjlens . pjType .~ Grenade GStick + where + pjlens = cWorld . lWorld . projectiles . ix (pj ^. pjID) moveProjectile :: Projectile -> World -> World moveProjectile pj w | Just GStuckWall{} <- pj ^? pjType . gnHitEffect = w | Just (GStuckCreature crid poff d) <- pj ^? pjType . gnHitEffect = moveStuckGrenade crid poff d pj w - | (p, Just (n, OWall wl)) <- collide3 sp (sp + 2 *^ _pjVel pj) w = - shellHitWall p n wl pj w - | (p, Just (_, OFloor)) <- collide3 sp (sp + 2*^ _pjVel pj) w = - shellHitFloor p pj w - | (p, Just (_, OCreature cr)) <- collide3 sp (sp + 2 *^ _pjVel pj) w = - shellHitCreature p cr pj w - | (_, Just (_, OChasmWall)) <- collide3 sp (sp + 2 *^_pjVel pj) w = - -- no stick or bounce for now - w & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjTimer .~ 0 - | otherwise = - w - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjSpin *~ 0.99 - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjPos +~ _pjVel pj - & cWorld . lWorld . projectiles . ix (pj ^. pjID) . pjDir +~ _pjSpin pj + | otherwise = case collide3 sp (sp + _pjVel pj) w of + (p, Just (n, OWall wl)) -> shellHitWall p n wl pj w + (p, Just (_, OFloor)) -> shellHitFloor p pj w + (p, Just (_, OCreature cr)) -> shellHitCreature p cr pj w + (_, Just (_, OChasmWall)) -> w & pjlens . pjTimer .~ 0 -- no stick or bounce for now + _ -> + w + & pjlens . pjSpin *~ 0.99 + & pjlens . pjPos +~ _pjVel pj + & pjlens . pjDir +~ _pjSpin pj where + pjlens = cWorld . lWorld . projectiles . ix (pj ^. pjID) sp = _pjPos pj explodeShell :: Projectile -> World -> World explodeShell pj w = w - & cWorld . lWorld . projectiles . ix pjid . pjType .~ RetiredProjectile - & cWorld . lWorld . projectiles . ix pjid . pjVel .~ 0 - & cWorld . lWorld . projectiles . ix pjid . pjTimer .~ 30 + & pjlens . pjType .~ RetiredProjectile + & pjlens . pjVel .~ 0 + & pjlens . pjTimer .~ 30 & usePayload (_pjPayload pj) (pj ^. pjPos) (pj ^. pjVel) & stopSoundFrom (ShellSound pjid) & updatedetonator where + pjlens = cWorld . lWorld . projectiles . ix pjid updatedetonator = fromMaybe id $ do detid <- pj ^. pjDetonatorID return $ pointerToItemID detid . itUse . uaParams . apProjectiles %~ delete pjid diff --git a/tags b/tags index 27344ca17..02afd2e2c 100644 --- a/tags +++ b/tags @@ -728,7 +728,7 @@ MODStringOption src/Dodge/Data/Universe.hs 97;" C MOTOR src/Dodge/Data/Item/Combine.hs 64;" C MP2Ac src/Dodge/Data/CreatureEffect.hs 56;" t MP2NoAction src/Dodge/Data/CreatureEffect.hs 56;" C -MPO src/Dodge/Base/Collide.hs 89;" t +MPO src/Dodge/Base/Collide.hs 98;" t MTRS src/Dodge/Data/MTRS.hs 6;" t MTree src/Dodge/Data/MetaTree.hs 11;" C Machine src/Dodge/Data/Machine.hs 30;" t @@ -2613,7 +2613,7 @@ airlockDoor src/Dodge/Room/Airlock.hs 93;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 96;" f airlockSimple src/Dodge/Room/Airlock.hs 108;" f airlockZ src/Dodge/Room/Airlock.hs 133;" f -allVisibleWalls src/Dodge/Base/Collide.hs 214;" f +allVisibleWalls src/Dodge/Base/Collide.hs 225;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f ammoMagInfo src/Dodge/Item/Info.hs 49;" f @@ -2631,11 +2631,11 @@ angleBetween src/Geometry.hs 158;" f angleVV src/Geometry/Vector.hs 58;" f angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f -anythingHitCirc src/Dodge/Base/Collide.hs 337;" f +anythingHitCirc src/Dodge/Base/Collide.hs 348;" f applyCME src/Dodge/HeldUse.hs 370;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyEventIO src/Loop.hs 89;" f -applyGravityPU src/Dodge/Projectile/Update.hs 44;" f +applyGravityPU src/Dodge/Projectile/Update.hs 40;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 17;" f applyInvLock src/Dodge/HeldUse.hs 429;" f applyMagnetsToBul src/Dodge/Bullet.hs 32;" f @@ -2781,7 +2781,8 @@ blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f bossRoom src/Dodge/Room/Boss.hs 61;" f bounceDir src/Dodge/Bullet.hs 110;" f -bouncePoint src/Dodge/Base/Collide.hs 85;" f +bouncePoint src/Dodge/Base/Collide.hs 88;" f +bounceSound src/Dodge/Projectile/Update.hs 72;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f boxABC src/Polyhedra.hs 108;" f @@ -2814,8 +2815,8 @@ cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f -canSee src/Dodge/Base/Collide.hs 323;" f -canSeeIndirect src/Dodge/Base/Collide.hs 330;" f +canSee src/Dodge/Base/Collide.hs 334;" f +canSeeIndirect src/Dodge/Base/Collide.hs 341;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 69;" f cardEightVec src/Dodge/Base/CardinalPoint.hs 17;" f @@ -2845,7 +2846,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 175;" f chasmTest src/Dodge/Creature/Update.hs 132;" f -chasmWallToSurface src/Dodge/Base/Collide.hs 111;" f +chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 70;" f @@ -2870,12 +2871,12 @@ chooseMovementLtAuto src/Dodge/CreatureEffect.hs 107;" f chooseMovementPistol src/Dodge/Humanoid.hs 204;" f chooseMovementPistol' src/Dodge/Humanoid.hs 209;" f chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 90;" f -circHitWall src/Dodge/Base/Collide.hs 231;" f +circHitWall src/Dodge/Base/Collide.hs 242;" f circInPolygon src/Geometry/Polygon.hs 101;" f -circOnAnyCr src/Dodge/Base/Collide.hs 286;" f +circOnAnyCr src/Dodge/Base/Collide.hs 297;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f -circOnSomeWall src/Dodge/Base/Collide.hs 280;" f +circOnSomeWall src/Dodge/Base/Collide.hs 291;" f circle src/Picture/Base.hs 180;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f @@ -2923,18 +2924,18 @@ colCrWall src/Dodge/WallCreatureCollisions.hs 29;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f collectDamageTypes src/Dodge/Damage.hs 53;" f collectInvItems src/Dodge/Update/Input/InGame.hs 295;" f -collide3 src/Dodge/Base/Collide.hs 120;" f -collide3Chasm src/Dodge/Base/Collide.hs 104;" f -collide3Chasms src/Dodge/Base/Collide.hs 97;" f -collide3Creature src/Dodge/Base/Collide.hs 153;" f -collide3Floors src/Dodge/Base/Collide.hs 134;" f -collide3Wall src/Dodge/Base/Collide.hs 148;" f -collide3Walls src/Dodge/Base/Collide.hs 129;" f -collide3WallsFloor src/Dodge/Base/Collide.hs 91;" f -collideCircWalls src/Dodge/Base/Collide.hs 243;" f +collide3 src/Dodge/Base/Collide.hs 129;" f +collide3Chasm src/Dodge/Base/Collide.hs 113;" f +collide3Chasms src/Dodge/Base/Collide.hs 106;" f +collide3Creature src/Dodge/Base/Collide.hs 162;" f +collide3Floors src/Dodge/Base/Collide.hs 143;" f +collide3Wall src/Dodge/Base/Collide.hs 157;" f +collide3Walls src/Dodge/Base/Collide.hs 138;" f +collide3WallsFloor src/Dodge/Base/Collide.hs 100;" f +collideCircWalls src/Dodge/Base/Collide.hs 254;" f collidePoint src/Dodge/Base/Collide.hs 54;" f -collidePointTestFilter src/Dodge/Base/Collide.hs 179;" f -collidePointWallsFilter src/Dodge/Base/Collide.hs 193;" f +collidePointTestFilter src/Dodge/Base/Collide.hs 190;" f +collidePointWallsFilter src/Dodge/Base/Collide.hs 204;" f color src/Picture/Base.hs 108;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 237;" f @@ -2996,7 +2997,7 @@ crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f crHasTarget src/Dodge/Creature/Test.hs 65;" f crHasTargetLOS src/Dodge/Creature/Test.hs 68;" f -crHeight src/Dodge/Base/Collide.hs 164;" f +crHeight src/Dodge/Base/Collide.hs 175;" f crHit src/Dodge/WorldEvent/ThingsHit.hs 113;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f @@ -3037,15 +3038,15 @@ createHeadLamp src/Dodge/Euse.hs 58;" f createItemYou src/Dodge/Inventory/Add.hs 61;" f createLightMap src/Render.hs 26;" f createPathGrid src/Dodge/Room/Path.hs 20;" f -createProjectile src/Dodge/HeldUse.hs 1285;" f -createProjectileR src/Dodge/HeldUse.hs 1234;" f +createProjectile src/Dodge/HeldUse.hs 1273;" f +createProjectileR src/Dodge/HeldUse.hs 1222;" f createShell src/Dodge/Projectile/Create.hs 21;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 40;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 124;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f -creatureShootLaser src/Dodge/HeldUse.hs 845;" f -creatureShootPulseLaser src/Dodge/HeldUse.hs 876;" f +creatureShootLaser src/Dodge/HeldUse.hs 841;" f +creatureShootPulseLaser src/Dodge/HeldUse.hs 872;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 54;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 75;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 64;" f @@ -3211,12 +3212,12 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f destroyMount src/Dodge/Block.hs 100;" f destroyMounts src/Dodge/Block.hs 97;" f -destroyProjectile src/Dodge/Projectile/Update.hs 162;" f +destroyProjectile src/Dodge/Projectile/Update.hs 117;" f detV src/Geometry/Vector.hs 94;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f detectorInfo src/Dodge/Item/Info.hs 224;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1205;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1193;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 205;" f @@ -3246,10 +3247,10 @@ dmType src/Dodge/Damage.hs 38;" f doAimTwist src/Dodge/Creature/YourControl.hs 154;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f -doBarrelSpin src/Dodge/Projectile/Update.hs 214;" f +doBarrelSpin src/Dodge/Projectile/Update.hs 167;" f doBlBl src/Dodge/BlBl.hs 5;" f doBlSh src/Dodge/Block/Draw.hs 14;" f -doBounce src/Dodge/Base/Collide.hs 67;" f +doBounce src/Dodge/Base/Collide.hs 69;" f doButtonEvent src/Dodge/Button/Event.hs 9;" f doConLoop src/Loop.hs 137;" f doConLoop' src/Loop.hs 226;" f @@ -3276,8 +3277,8 @@ doDrag src/Dodge/Update/Input/InGame.hs 127;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1166;" f -doGravityPU src/Dodge/Projectile/Update.hs 38;" f +doGenFloat src/Dodge/HeldUse.hs 1155;" f +doGravityPU src/Dodge/Projectile/Update.hs 34;" f doHeldUseEffect src/Dodge/HeldUse.hs 352;" f doInPlacements src/Dodge/Layout.hs 82;" f doIndividualPlacements src/Dodge/Layout.hs 96;" f @@ -3308,7 +3309,7 @@ doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 167;" f doTestDrawing src/Dodge/Render.hs 41;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f -doThrust src/Dodge/Projectile/Update.hs 184;" f +doThrust src/Dodge/Projectile/Update.hs 138;" f doTimeScroll src/Dodge/Update.hs 196;" f doTmWdWd src/Dodge/WorldEffect.hs 89;" f doWallRotate src/Dodge/Update/Camera.hs 220;" f @@ -3467,7 +3468,7 @@ drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 285;" f dropAll src/Dodge/Creature/Update.hs 129;" f dropExcept src/Dodge/Creature/Action.hs 168;" f -dropInventoryPath src/Dodge/HeldUse.hs 1360;" f +dropInventoryPath src/Dodge/HeldUse.hs 1348;" f dropItem src/Dodge/Creature/Action.hs 175;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 34;" f @@ -3544,7 +3545,7 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 187;" f -explodeShell src/Dodge/Projectile/Update.hs 321;" f +explodeShell src/Dodge/Projectile/Update.hs 237;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -3655,7 +3656,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 144;" f gameplayMenu src/Dodge/Menu.hs 155;" f gameplayMenuOptions src/Dodge/Menu.hs 158;" f -gasType src/Dodge/HeldUse.hs 1123;" f +gasType src/Dodge/HeldUse.hs 1112;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f generateGraphs src/Dodge/Menu.hs 149;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -3668,11 +3669,11 @@ geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 143;" f getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f -getAttachedSFLink src/Dodge/HeldUse.hs 791;" f +getAttachedSFLink src/Dodge/HeldUse.hs 787;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 172;" f -getBulletType src/Dodge/HeldUse.hs 913;" f +getBulletType src/Dodge/HeldUse.hs 909;" f getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f @@ -3680,7 +3681,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 323;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 310;" f getDistortions src/Dodge/Render.hs 435;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1273;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1261;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f getLaserColor src/Dodge/HeldUse.hs 708;" f @@ -3690,7 +3691,7 @@ getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMenuMouseContext src/Dodge/Update.hs 372;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1260;" f +getPJStabiliser src/Dodge/HeldUse.hs 1248;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 306;" f @@ -3764,10 +3765,10 @@ handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 19;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f -hasButtonLOS src/Dodge/Base/Collide.hs 300;" f +hasButtonLOS src/Dodge/Base/Collide.hs 311;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f -hasLOS src/Dodge/Base/Collide.hs 293;" f -hasLOSIndirect src/Dodge/Base/Collide.hs 309;" f +hasLOS src/Dodge/Base/Collide.hs 304;" f +hasLOSIndirect src/Dodge/Base/Collide.hs 320;" f hat src/Dodge/Item/Equipment.hs 76;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f @@ -3787,9 +3788,9 @@ heldInfo src/Dodge/Item/Info.hs 92;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 19;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f heldItemInvLock src/Dodge/HeldUse.hs 443;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1003;" f +heldItemMuzVel src/Dodge/HeldUse.hs 999;" f heldItemMuzzles src/Dodge/HeldUse.hs 176;" f -heldItemRifling src/Dodge/HeldUse.hs 1046;" f +heldItemRifling src/Dodge/HeldUse.hs 1042;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 233;" f heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f @@ -3931,7 +3932,7 @@ isUnusedLnkType src/Dodge/PlacementSpot.hs 190;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 174;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f isVowel src/StringHelp.hs 8;" f -isWalkable src/Dodge/Base/Collide.hs 316;" f +isWalkable src/Dodge/Base/Collide.hs 327;" f isoMatrix src/MatrixHelper.hs 30;" f isotriBWH src/Geometry/Polygon.hs 21;" f itDim src/Dodge/Item/InvSize.hs 21;" f @@ -3949,7 +3950,7 @@ itemBlips src/Dodge/RadarSweep.hs 94;" f itemBulkiness src/Dodge/Creature/YourControl.hs 188;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f -itemDetectorEffect src/Dodge/HeldUse.hs 797;" f +itemDetectorEffect src/Dodge/HeldUse.hs 793;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f itemEquipPict src/Dodge/Item/Draw.hs 18;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f @@ -4131,7 +4132,7 @@ machineAddSound src/Dodge/Machine.hs 50;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machineUpdateDeathEff src/Dodge/Machine.hs 35;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 17;" f -magAmmoParams src/Dodge/HeldUse.hs 934;" f +magAmmoParams src/Dodge/HeldUse.hs 930;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 172;" f @@ -4146,7 +4147,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 70;" f makeBlockDebris src/Dodge/Block/Debris.hs 34;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 982;" f +makeBullet src/Dodge/HeldUse.hs 978;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4224,11 +4225,11 @@ mcProxSensorUpdate src/Dodge/Machine/Update.hs 139;" f mcProxTest src/Dodge/Machine/Update.hs 203;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f mcSPic src/Dodge/Render/ShapePicture.hs 135;" f -mcShootAuto src/Dodge/HeldUse.hs 1177;" f -mcShootLaser src/Dodge/HeldUse.hs 1170;" f +mcShootAuto src/Dodge/HeldUse.hs 1166;" f +mcShootLaser src/Dodge/HeldUse.hs 1159;" f mcTriggerVal src/Dodge/Machine/Update.hs 110;" f mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f -mcUseHeld src/Dodge/HeldUse.hs 1089;" f +mcUseHeld src/Dodge/HeldUse.hs 1085;" f mcUseItem src/Dodge/Machine/Update.hs 89;" f megaBattery src/Dodge/Item/Ammo.hs 55;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f @@ -4298,11 +4299,10 @@ moveCombineSel src/Dodge/Update/Scroll.hs 121;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 43;" f movePenBullet src/Dodge/Bullet.hs 202;" f -moveProjectile src/Dodge/Projectile/Update.hs 262;" f -moveProjectile' src/Dodge/Projectile/Update.hs 273;" f +moveProjectile src/Dodge/Projectile/Update.hs 215;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f -moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f +moveStuckGrenade src/Dodge/Projectile/Update.hs 201;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 69;" f moveWall src/Dodge/Wall/Move.hs 29;" f moveWallID src/Dodge/Wall/Move.hs 24;" f @@ -4319,8 +4319,8 @@ multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 679;" f -muzzlePos src/Dodge/HeldUse.hs 767;" f -muzzleRandPos src/Dodge/HeldUse.hs 776;" f +muzzlePos src/Dodge/HeldUse.hs 768;" f +muzzleRandPos src/Dodge/HeldUse.hs 777;" f mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f mvFS src/Dodge/Placement/PlaceSpot.hs 193;" f @@ -4413,10 +4413,10 @@ overPos src/Picture/Base.hs 303;" f overPosObj src/Shape.hs 277;" f overPosSH src/Shape.hs 261;" f overPosSP src/ShapePicture.hs 41;" f -overlapCircWalls src/Dodge/Base/Collide.hs 220;" f -overlapCircWallsClosest src/Dodge/Base/Collide.hs 266;" f +overlapCircWalls src/Dodge/Base/Collide.hs 231;" f +overlapCircWallsClosest src/Dodge/Base/Collide.hs 277;" f overlapSegCrs src/Dodge/Base/Collide.hs 61;" f -overlapSegWalls src/Dodge/Base/Collide.hs 202;" f +overlapSegWalls src/Dodge/Base/Collide.hs 213;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 175;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 36;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f @@ -4469,7 +4469,7 @@ pingPongBetween src/Render.hs 221;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 227;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 180;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f @@ -4751,7 +4751,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 910;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 906;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeLights src/Dodge/Room/Tutorial.hs 224;" f @@ -5006,10 +5006,10 @@ shapeVerxSize src/Shape/Parameters.hs 10;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 27;" f -shellExplosionCheck src/Dodge/Projectile/Update.hs 58;" f -shellHitCreature src/Dodge/Projectile/Update.hs 86;" f -shellHitFloor src/Dodge/Projectile/Update.hs 102;" f -shellHitWall src/Dodge/Projectile/Update.hs 69;" f +shellExplosionCheck src/Dodge/Projectile/Update.hs 48;" f +shellHitCreature src/Dodge/Projectile/Update.hs 79;" f +shellHitFloor src/Dodge/Projectile/Update.hs 93;" f +shellHitWall src/Dodge/Projectile/Update.hs 58;" f shellMag src/Dodge/Item/Ammo.hs 49;" f shellModule src/Dodge/Item/Scope.hs 123;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f @@ -5035,16 +5035,16 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 201;" f shineTorch src/Dodge/Creature/State.hs 238;" f -shootBullet src/Dodge/HeldUse.hs 976;" f -shootBullets src/Dodge/HeldUse.hs 966;" f +shootBullet src/Dodge/HeldUse.hs 972;" f +shootBullets src/Dodge/HeldUse.hs 962;" f shootFirstMiss src/Dodge/Creature/Volition.hs 34;" f -shootLaser src/Dodge/HeldUse.hs 855;" f -shootPulseBall src/Dodge/HeldUse.hs 896;" f -shootPulseLaser src/Dodge/HeldUse.hs 883;" f +shootLaser src/Dodge/HeldUse.hs 851;" f +shootPulseBall src/Dodge/HeldUse.hs 892;" f +shootPulseLaser src/Dodge/HeldUse.hs 879;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f -shootTeslaArc src/Dodge/HeldUse.hs 1194;" f +shootTeslaArc src/Dodge/HeldUse.hs 1183;" f shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f -shootTractorBeam src/Dodge/HeldUse.hs 824;" f +shootTractorBeam src/Dodge/HeldUse.hs 820;" f shootersRoom src/Dodge/Room/Room.hs 324;" f shootersRoom' src/Dodge/Room/Room.hs 291;" f shootersRoom1 src/Dodge/Room/Room.hs 314;" f @@ -5184,6 +5184,7 @@ startRoom src/Dodge/Room/Start.hs 53;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f startSeedGameConc src/Dodge/StartNewGame.hs 27;" f statsModifier src/Dodge/Creature/Info.hs 16;" f +stickHitSound src/Dodge/Projectile/Update.hs 75;" f stickyMod src/Dodge/Item/Scope.hs 51;" f stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 540;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 662;" f @@ -5258,7 +5259,6 @@ terminalWheelEvent src/Dodge/Update/Scroll.hs 131;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 409;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f -test src/Dodge/Projectile/Update.hs 296;" f testCrossWalls src/Dodge/Room/Path.hs 41;" f testEvent src/Dodge/Event/Test.hs 9;" f testInventory src/Dodge/Creature.hs 292;" f @@ -5342,7 +5342,7 @@ torqueCr src/Dodge/WorldEffect.hs 72;" f torso src/Dodge/Creature/Picture.hs 102;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 836;" f +tractorBeamAt src/Dodge/HeldUse.hs 832;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5402,9 +5402,9 @@ tryPlay src/Sound.hs 84;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 53;" f trySeedFromClipboard src/Dodge/Menu.hs 96;" f -trySpin src/Dodge/Projectile/Update.hs 172;" f +trySpin src/Dodge/Projectile/Update.hs 126;" f trySynthBullet src/Dodge/Creature/State.hs 167;" f -tryThrust src/Dodge/Projectile/Update.hs 178;" f +tryThrust src/Dodge/Projectile/Update.hs 132;" f tryUseParent src/Dodge/Creature/State.hs 145;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 37;" f @@ -5520,7 +5520,7 @@ updateObjCatMaybes src/Dodge/Update.hs 533;" f updateObjMapMaybe src/Dodge/Update.hs 526;" f updatePastWorlds src/Dodge/Update.hs 408;" f updatePreload src/Preload/Update.hs 20;" f -updateProjectile src/Dodge/Projectile/Update.hs 29;" f +updateProjectile src/Dodge/Projectile/Update.hs 25;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 146;" f updatePulseBall src/Dodge/Update.hs 433;" f @@ -5582,9 +5582,9 @@ upperPrismPolySU src/Shape.hs 114;" f upperPrismPolyTS src/Shape.hs 120;" f upperRounded src/Shape.hs 185;" f useBulletPayload src/Dodge/Bullet.hs 116;" f -useGasParams src/Dodge/HeldUse.hs 1094;" f +useGasParams src/Dodge/HeldUse.hs 1090;" f useHotkey src/Dodge/Creature/YourControl.hs 77;" f -useInventoryPath src/Dodge/HeldUse.hs 1391;" f +useInventoryPath src/Dodge/HeldUse.hs 1379;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 255;" f @@ -5592,11 +5592,11 @@ useLoadedAmmo src/Dodge/HeldUse.hs 721;" f useMagShield src/Dodge/Euse.hs 30;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1351;" f +useRewindGun src/Dodge/HeldUse.hs 1339;" f useRoomPosCond src/Dodge/PlacementSpot.hs 180;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 183;" f -useStopWatch src/Dodge/HeldUse.hs 1332;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1340;" f +useStopWatch src/Dodge/HeldUse.hs 1320;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1328;" f useUnusedLnk src/Dodge/PlacementSpot.hs 171;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 202;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 209;" f @@ -5625,21 +5625,21 @@ viewClipBounds src/Dodge/Debug/Picture.hs 330;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 147;" f violet src/Color.hs 21;" f -visibleWalls src/Dodge/Base/Collide.hs 206;" f +visibleWalls src/Dodge/Base/Collide.hs 217;" f visionCheck src/Dodge/Creature/Perception.hs 153;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f -walkNozzle src/Dodge/HeldUse.hs 812;" f +walkNozzle src/Dodge/HeldUse.hs 808;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f -wallToSurface src/Dodge/Base/Collide.hs 171;" f +wallToSurface src/Dodge/Base/Collide.hs 182;" f wallsFromRooms src/Dodge/Layout.hs 132;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f -warmupSound src/Dodge/HeldUse.hs 1385;" f +warmupSound src/Dodge/HeldUse.hs 1373;" f warningRooms src/Dodge/Room/Warning.hs 30;" f wasdAim src/Dodge/Creature/YourControl.hs 133;" f wasdDir src/Dodge/WASD.hs 17;" f