From 9168acf12e2c162520d21d5b3ed115fb5d2ad819 Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 27 Dec 2024 22:32:56 +0000 Subject: [PATCH] Cleanup --- src/Dodge/Data/Projectile.hs | 2 +- src/Dodge/Projectile/Create.hs | 2 +- src/Dodge/Projectile/Draw.hs | 2 +- src/Dodge/Projectile/Update.hs | 103 ++++++++++++++++------------ tags | 121 +++++++++++++++++---------------- 5 files changed, 123 insertions(+), 107 deletions(-) diff --git a/src/Dodge/Data/Projectile.hs b/src/Dodge/Data/Projectile.hs index f22bb43f7..7006f3333 100644 --- a/src/Dodge/Data/Projectile.hs +++ b/src/Dodge/Data/Projectile.hs @@ -20,7 +20,7 @@ data Projectile = Shell { _prjPos :: Point2 , _prjVel :: Point2 - , _prjAcc :: Point2 +-- , _prjAcc :: Point2 , _prjDir :: Float , _prjSpin :: Float , _prjDraw :: ProjectileDraw diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index 6798983dc..c5811c6d2 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -36,7 +36,7 @@ createShell homing mdetonator mscreen smokestatus pjtype payload muz cr w = w , _prjVel = rotateV dir (V2 speed 0) + cr ^. crPos - cr ^. crOldPos , _prjDraw = homingDrawType homing , _prjID = i - , _prjAcc = rotateV dir (V2 3 0) +-- , _prjAcc = rotateV dir (V2 3 0) , _prjDir = dir , _prjSpin = 0 , _prjPayload = payload diff --git a/src/Dodge/Projectile/Draw.hs b/src/Dodge/Projectile/Draw.hs index 5056ea12c..8dcc930e9 100644 --- a/src/Dodge/Projectile/Draw.hs +++ b/src/Dodge/Projectile/Draw.hs @@ -22,7 +22,7 @@ drawShell pj = noPic . translateSHz (_prjZ pj) . uncurryV translateSHxy (_prjPos pj) - $ rotateSH (argV $ _prjAcc pj) shellShape + $ rotateSH (_prjDir pj) shellShape shellShape :: Shape shellShape = colorSH black $ upperPrismPoly Small Typical 4 $ map toV2 [(-6, 4), (-6, -4), (6, -4), (8, 0), (6, 4)] diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index 04cb3c1e7..38554b0c1 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -3,10 +3,9 @@ module Dodge.Projectile.Update ( updateProjectile, ) where -import Data.List (delete) -import LensHelp import Control.Monad import Data.Foldable +import Data.List (delete) import Data.Maybe import Dodge.Base import Dodge.Data.World @@ -18,6 +17,7 @@ import Dodge.SoundLogic import Dodge.WorldEvent.Cloud import Geometry import qualified IntMapHelp as IM +import LensHelp import NewInt import RandomHelp @@ -26,8 +26,12 @@ updateProjectile pj w = foldl' (\w' pu -> upProjectile pu pj w') w (_prjUpdates upProjectile :: ProjectileUpdate -> Projectile -> World -> World upProjectile pu pj = case pu of - CollisionEffectPU mcontrolid mdetonatorid mscreenid -> shellCollisionCheck - mcontrolid mdetonatorid mscreenid pj + CollisionEffectPU mcontrolid mdetonatorid mscreenid -> + shellCollisionCheck + mcontrolid + mdetonatorid + mscreenid + pj TimePU -> decTimMvVel pj ThrustPU st et smoke | act st et -> doThrust pj smoke @@ -50,21 +54,25 @@ upProjectile pu pj = case pu of applyGravityPU :: Projectile -> World -> World applyGravityPU pj w - | newz <= 0 && abs (pj ^. prjZVel) < 1 = w - & topj . prjVel %~ decvel - & topj . prjSpin %~ decspin - | newz < 0 = w & topj . prjZ .~ 0 - & topj . prjZVel %~ bouncez - & topj . prjVel %~ decvel - & topj . prjSpin %~ decspin - & soundStart (ShellSound (pj ^. prjID)) (pj ^. prjPos) click1S Nothing - | otherwise = w & topj . prjZ .~ newz - & topj . prjZVel -~ 0.5 + | newz <= 0 && abs (pj ^. prjZVel) < 1 = + w + & topj . prjVel %~ decvel + & topj . prjSpin %~ decspin + | newz < 0 = + w & topj . prjZ .~ 0 + & topj . prjZVel %~ bouncez + & topj . prjVel %~ decvel + & topj . prjSpin %~ decspin + & soundStart (ShellSound (pj ^. prjID)) (pj ^. prjPos) click1S Nothing + | otherwise = + w & topj . prjZ .~ newz + & topj . prjZVel -~ 0.5 where topj = cWorld . lWorld . projectiles . ix (pj ^. prjID) - bouncez z | z < -1 = -0.5 * z + bouncez z + | z < -1 = -0.5 * z | otherwise = 0 - decvel v + decvel v | magV v > 1 = rotateV (5 * pj ^. prjSpin) $ 0.8 * v | otherwise = 0 decspin x @@ -73,13 +81,16 @@ applyGravityPU pj w newz = pj ^. prjZ + pj ^. prjZVel --shellCollisionCheck :: (Projectile -> World -> World) -> Projectile -> World -> World -shellCollisionCheck :: Maybe (NewInt ItmInt) - -> Maybe (NewInt ItmInt) - -> Maybe (NewInt ItmInt) - -> Projectile -> World -> World +shellCollisionCheck :: + Maybe (NewInt ItmInt) -> + Maybe (NewInt ItmInt) -> + Maybe (NewInt ItmInt) -> + Projectile -> + World -> + World shellCollisionCheck controlid detid screenid pj w --- | time > 330 && circOnSomeWall oldPos 4 w = g --- | time <= 330 && anythingHitCirc 2 oldPos newPos w = g + -- | time > 330 && circOnSomeWall oldPos 4 w = g + -- | time <= 330 && anythingHitCirc 2 oldPos newPos w = g | anythingHitCirc 2 oldPos newPos w = g | time <= 0 = g | otherwise = w @@ -114,10 +125,11 @@ doThrust pj smoke w = (addZ 20 (oldPos +.+ r1 +.+ 30 *.* normalizeV (oldPos -.- newPos))) where lifetime = fst . randomR lt $ _randGen w - lt | smoke = (50, 200) - | otherwise = (300,500) - trailfadetime = fst . randomR (100,300) $ _randGen w - accel = _prjAcc pj + lt + | smoke = (50, 200) + | otherwise = (300, 500) + trailfadetime = fst . randomR (100, 300) $ _randGen w + accel = rotateV (pj ^. prjDir) (V2 3 0) i = _prjID pj oldPos = _prjPos pj vel = _prjVel pj @@ -146,20 +158,18 @@ trySpinByCID cid i pj w = w & cWorld . lWorld . projectiles . ix pjid . prjSpin -- note this only allows YOU to remotely track projectiles pjRemoteSetDirection :: ProjectileHoming -> Projectile -> World -> World pjRemoteSetDirection ph pj w = case ph of - NoHoming -> w - HomeUsingRemoteScreen screenid -> - let newdir - | w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . imSelectedItem - == w ^? cWorld . lWorld . itemLocations . ix (_unNInt screenid) . ilInvID = - (w ^. wCam . camRot) + argV (_mousePos (_input w)) - | otherwise = _prjDir pj - in w & cWorld . lWorld . projectiles . ix (_prjID pj) . prjAcc - .~ magV (_prjAcc pj) *.* unitVectorAtAngle newdir - HomeUsingTargeting itid -> fromMaybe w $ do - tp <- w ^? pointerToItemID itid . itTargeting . itTgPos . _Just - return $ - w & cWorld . lWorld . projectiles . ix (_prjID pj) . prjAcc - %~ vecTurnTo 0.2 (_prjPos pj) tp + HomeUsingRemoteScreen screenid + | lw ^? creatures . ix 0 . crManipulation . manObject . imSelectedItem + == lw ^? itemLocations . ix (_unNInt screenid) . ilInvID -> + w & cWorld . lWorld . projectiles . ix (_prjID pj) . prjDir + .~ (w ^. wCam . camRot) + argV (w ^. input . mousePos) + HomeUsingTargeting itid + | Just tp <- w ^? pointerToItemID itid . itTargeting . itTgPos . _Just -> + w & cWorld . lWorld . projectiles . ix (_prjID pj) . prjDir + %~ turnTo 0.2 (_prjPos pj) tp + _ -> w + where + lw = w ^. cWorld . lWorld --pjRemoteSetDirection mscreenid pj w = fromMaybe w $ do -- screenid <- fmap _unNInt mscreenid @@ -179,7 +189,7 @@ decTimMvVel pj = cWorld . lWorld . projectiles . ix pjid %~ ( (prjTimer -~ 1) . (prjPos %~ (+.+ vel)) - . (prjAcc %~ rotateV rot) + -- . (prjAcc %~ rotateV rot) . (prjDir +~ rot) ) where @@ -187,10 +197,13 @@ decTimMvVel pj = vel = _prjVel pj pjid = _prjID pj -explodeShell :: Maybe (NewInt ItmInt) -> - Maybe (NewInt ItmInt) -> - Maybe (NewInt ItmInt) -> - Projectile -> World -> World +explodeShell :: + Maybe (NewInt ItmInt) -> + Maybe (NewInt ItmInt) -> + Maybe (NewInt ItmInt) -> + Projectile -> + World -> + World explodeShell controlid mdetid screenid pj w = w & cWorld . lWorld . projectiles . ix pjid . prjUpdates .~ [DestroyPU screenid 30] diff --git a/tags b/tags index b0818e5b7..5caeca923 100644 --- a/tags +++ b/tags @@ -70,13 +70,13 @@ AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 49;" C AmmoPerShot src/Dodge/Data/Item/Use.hs 162;" t AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 19;" C AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 48;" C -AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 43;" t +AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 44;" t AnRoom src/Dodge/Annotation/Data.hs 18;" C AnTree src/Dodge/Annotation/Data.hs 19;" C Analyser src/Dodge/Placement/Instance/Analyser.hs 1;" m Annotation src/Dodge/Annotation/Data.hs 14;" t Annotation src/Dodge/Annotation.hs 3;" m -ApplyGravityPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 40;" C +ApplyGravityPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 41;" C ArbitraryAction src/Dodge/Data/ActionPlan.hs 166;" C ArbitraryImpulse src/Dodge/Data/ActionPlan.hs 47;" C ArbitraryImpulseEffect src/Dodge/Data/ActionPlan.hs 48;" C @@ -161,7 +161,7 @@ BeamShooterParams src/Dodge/Data/Item/Use.hs 93;" C BeamSimple src/Dodge/Data/Beam.hs 50;" C BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C -BeltBulletAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 46;" C +BeltBulletAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 47;" C Bezier src/Geometry/Bezier.hs 1;" m BezierTrajectory src/Dodge/Data/Bullet.hs 51;" C BezierTrajectoryType src/Dodge/Data/Bullet.hs 58;" C @@ -221,7 +221,7 @@ Bullet src/Dodge/Data/Bullet.hs 17;" t Bullet src/Dodge/Bullet.hs 1;" m Bullet src/Dodge/Data/Bullet.hs 6;" m Bullet src/Dodge/Item/Weapon/Bullet.hs 1;" m -BulletAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 45;" C +BulletAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 46;" C BulletEffect src/Dodge/Data/Bullet.hs 35;" t BulletGun src/Dodge/Item/Held/BulletGun.hs 1;" m BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t @@ -295,7 +295,7 @@ ChaseCritters src/Dodge/Data/Creature/State.hs 38;" C Check src/Framebuffer/Check.hs 1;" m CheckConsistency src/Dodge/Room/CheckConsistency.hs 1;" m CheckSlots src/Dodge/Inventory/CheckSlots.hs 1;" m -ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 57;" C +ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 58;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 62;" C ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 61;" C ChooseTarget src/Dodge/Creature/ChooseTarget.hs 1;" m @@ -319,7 +319,7 @@ ClusterLink src/Dodge/Data/RoomCluster.hs 14;" t ClusterStatus src/Dodge/Data/RoomCluster.hs 9;" t Cognizant src/Dodge/Data/Creature/Perception.hs 67;" C Collide src/Dodge/Base/Collide.hs 14;" m -CollisionEffectPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 36;" C +CollisionEffectPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 37;" C Collision_test src/Dodge/Data/Config.hs 84;" C Color src/Color/Data.hs 33;" t Color src/Color.hs 1;" m @@ -413,8 +413,8 @@ Craftable src/Dodge/Item/Craftable.hs 1;" m Create src/Dodge/Projectile/Create.hs 1;" m Create src/Dodge/Prop/Create.hs 1;" m Create src/Dodge/Wall/Create.hs 1;" m -CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 60;" C -CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 60;" C +CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 61;" C +CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 61;" C CreateShieldWall src/Dodge/Data/Item/Effect.hs 22;" C Creature src/Dodge/Data/Creature.hs 36;" t Creature src/Dodge/Creature.hs 1;" m @@ -493,7 +493,7 @@ DefaultArcStep src/Dodge/Data/ArcStep.hs 23;" C DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" C DefaultDrawButton src/Dodge/Data/Button.hs 17;" C DefaultDrawSwitch src/Dodge/Data/Button.hs 18;" C -DefaultForceField src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C +DefaultForceField src/Dodge/Data/Item/Use/Consumption/Ammo.hs 55;" C DefaultHeldParams src/Dodge/Data/Item/Use.hs 80;" C DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 13;" C DefaultRoomType src/Dodge/Data/Room.hs 31;" C @@ -587,7 +587,7 @@ DrawRemoteShell src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C DrawShell src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C DrawnWall src/Dodge/Data/Wall.hs 41;" C Drone src/Dodge/Item/Weapon/Drone.hs 1;" m -DroneAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 48;" C +DroneAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 49;" C DropAll src/Dodge/Data/Creature/State.hs 24;" C DropAmount src/Dodge/Data/Creature/State.hs 25;" C DropItem src/Dodge/Data/ActionPlan.hs 39;" C @@ -617,7 +617,7 @@ EffectWhileAttached src/Dodge/Data/Item/Effect.hs 25;" C EffectWhileRoot src/Dodge/Data/Item/Effect.hs 24;" C EighthRes src/Dodge/Data/Config.hs 97;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C -ElectricalAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 47;" C +ElectricalAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 48;" C Electronics src/Dodge/Data/Material.hs 11;" C EllShad src/Picture/Data.hs 39;" C Enable_debug src/Dodge/Data/Config.hs 68;" C @@ -658,7 +658,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 37;" C Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m ExplosionPayload src/Dodge/Data/Payload.hs 11;" C ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C -ExplosivePutty src/Dodge/Data/Item/Use/Consumption/Ammo.hs 51;" C +ExplosivePutty src/Dodge/Data/Item/Use/Consumption/Ammo.hs 52;" C ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" m ExtraEffect src/Dodge/Item/Weapon/ExtraEffect.hs 6;" m Eyes src/Dodge/Data/Creature/Perception.hs 41;" C @@ -726,7 +726,7 @@ FootForward src/Dodge/Data/Creature/Stance.hs 31;" t FootstepSound src/Dodge/Data/SoundOrigin.hs 29;" C ForceField src/Dodge/ForceField.hs 1;" m ForceField src/Dodge/Wall/ForceField.hs 1;" m -ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" t +ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 55;" t Foreground src/Dodge/Room/Foreground.hs 1;" m ForegroundShape src/Dodge/Data/ForegroundShape.hs 14;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 6;" m @@ -750,10 +750,10 @@ GameOverOptions src/Dodge/Data/Universe.hs 70;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m Gas src/Dodge/Gas.hs 1;" m -GasAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 49;" C +GasAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 50;" C GasCloud src/Dodge/Data/Cloud.hs 31;" C -GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 60;" t -GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 57;" t +GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 61;" t +GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 58;" t GasParams src/Dodge/Data/Item/Use.hs 115;" C GasSprayParams src/Dodge/Data/Item/Use.hs 81;" C GenCr src/Dodge/Data/Creature/State.hs 31;" C @@ -790,6 +790,7 @@ Graph src/Dodge/Combine/Graph.hs 3;" m Graph src/Dodge/Graph.hs 2;" m GraphHelp src/GraphHelp.hs 1;" m GraphVizHelp src/GraphVizHelp.hs 2;" m +Grenade src/Dodge/Data/Projectile.hs 15;" C Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m @@ -1000,7 +1001,7 @@ LaserStart src/Dodge/Data/Laser.hs 21;" t LaserType src/Dodge/Data/Laser.hs 16;" t Launcher src/Dodge/Item/Held/Launcher.hs 1;" m LauncherAI src/Dodge/Data/Creature/Misc.hs 54;" C -LauncherAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 44;" C +LauncherAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 45;" C LauncherCrit src/Dodge/Creature/LauncherCrit.hs 1;" m LaundrySS src/Dodge/Data/Scenario.hs 115;" C Layer src/Picture/Data.hs 22;" t @@ -1467,15 +1468,16 @@ PressPlateId src/Dodge/Data/PressPlate.hs 15;" C PressType src/Dodge/Data/Input.hs 13;" t PreviousArcEffect src/Dodge/Data/Item/Params.hs 34;" t PrimitiveMode src/Shader/Data.hs 99;" t -PrintMaterial src/Dodge/Data/Item/Use/Consumption/Ammo.hs 50;" C +PrintMaterial src/Dodge/Data/Item/Use/Consumption/Ammo.hs 51;" C Prison src/Dodge/Data/Scenario.hs 65;" C Procedural src/Dodge/Room/Procedural.hs 2;" m -Projectile src/Dodge/Data/Projectile.hs 14;" t +Projectile src/Dodge/Data/Projectile.hs 19;" t Projectile src/Dodge/Data/Projectile.hs 6;" m Projectile src/Dodge/Projectile.hs 1;" m ProjectileDraw src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" t ProjectileHoming src/Dodge/Data/Item/Use/Consumption/Ammo.hs 23;" t ProjectileParams src/Dodge/Data/Item/Use.hs 114;" C +ProjectileType src/Dodge/Data/Projectile.hs 14;" t ProjectileUpdate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 29;" t Prop src/Dodge/Data/Prop.hs 18;" t Prop src/Dodge/Data/Prop.hs 6;" m @@ -1612,6 +1614,7 @@ RightButtonOptions src/Dodge/Data/RightButtonOptions.hs 6;" m RightForward src/Dodge/Data/Creature/Stance.hs 33;" C RightwardLDT src/Dodge/Data/DoubleTree.hs 58;" C RoadBlock src/Dodge/Room/RoadBlock.hs 2;" m +Rocket src/Dodge/Data/Projectile.hs 16;" C Rod src/Dodge/Item/Held/Rod.hs 1;" m Room src/Dodge/Data/GenWorld.hs 94;" t Room src/Dodge/Data/Room.hs 4;" m @@ -1721,7 +1724,7 @@ ShapePicture src/ShapePicture.hs 1;" m ShapeProp src/Dodge/Data/Prop.hs 33;" C ShapeType src/Shape/Data.hs 16;" t Shatter src/Dodge/Item/Weapon/Shatter.hs 1;" m -Shell src/Dodge/Data/Projectile.hs 15;" C +Shell src/Dodge/Data/Projectile.hs 20;" C ShellSound src/Dodge/Data/SoundOrigin.hs 26;" C ShieldGroup src/Dodge/Data/Creature/State.hs 52;" C Shift src/Dodge/Placement/Shift.hs 1;" m @@ -1938,7 +1941,7 @@ Tile src/Dodge/Tile.hs 1;" m Tile src/Tile.hs 2;" m Tiled src/Data/Tile.hs 13;" C TimeFlowStatus src/Dodge/Data/World.hs 58;" t -TimePU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 35;" C +TimePU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 36;" C Tiny src/Shape/Data.hs 32;" C TmId src/Dodge/Data/Terminal.hs 60;" C TmTm src/Dodge/Data/Terminal.hs 59;" t @@ -2816,18 +2819,18 @@ _pickUps src/Dodge/Layout/Generate.hs 15;" f _pictureShaders src/Data/Preload/Render.hs 28;" f _piercedPoints src/Dodge/Data/Creature/State.hs 30;" f _pjuCID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" f -_pjuControlID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 36;" f +_pjuControlID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 37;" f _pjuControllerID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 32;" f -_pjuDetonatorID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 37;" f +_pjuDetonatorID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 38;" f _pjuEnd src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" f _pjuReduceSpin src/Dodge/Data/Item/Use/Consumption/Ammo.hs 33;" f _pjuScreenID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 34;" f -_pjuScreenID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 38;" f +_pjuScreenID src/Dodge/Data/Item/Use/Consumption/Ammo.hs 39;" f _pjuSmokeless src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" f _pjuSpinAmound src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" f _pjuStart src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" f _pjuTime src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" f -_pjuTimer src/Dodge/Data/Item/Use/Consumption/Ammo.hs 34;" f +_pjuTimer src/Dodge/Data/Item/Use/Consumption/Ammo.hs 35;" f _plIDCont src/Dodge/Data/GenWorld.hs 81;" f _plMID src/Dodge/Data/GenWorld.hs 80;" f _plOrder src/Dodge/Data/GenWorld.hs 77;" f @@ -2868,18 +2871,19 @@ _preloadData src/Dodge/Data/Universe.hs 32;" f _pressPlates src/Dodge/Data/LWorld.hs 134;" f _pressedKeys src/Dodge/Data/Input.hs 45;" f _previousArcEffect src/Dodge/Data/Item/Params.hs 26;" f -_prjAcc src/Dodge/Data/Projectile.hs 18;" f -_prjDir src/Dodge/Data/Projectile.hs 19;" f -_prjDraw src/Dodge/Data/Projectile.hs 21;" f -_prjID src/Dodge/Data/Projectile.hs 22;" f -_prjPayload src/Dodge/Data/Projectile.hs 23;" f -_prjPos src/Dodge/Data/Projectile.hs 16;" f -_prjSpin src/Dodge/Data/Projectile.hs 20;" f -_prjTimer src/Dodge/Data/Projectile.hs 24;" f -_prjUpdates src/Dodge/Data/Projectile.hs 27;" f -_prjVel src/Dodge/Data/Projectile.hs 17;" f -_prjZ src/Dodge/Data/Projectile.hs 25;" f -_prjZVel src/Dodge/Data/Projectile.hs 26;" f +_prjAcc src/Dodge/Data/Projectile.hs 23;" f +_prjDir src/Dodge/Data/Projectile.hs 24;" f +_prjDraw src/Dodge/Data/Projectile.hs 26;" f +_prjID src/Dodge/Data/Projectile.hs 27;" f +_prjPayload src/Dodge/Data/Projectile.hs 28;" f +_prjPos src/Dodge/Data/Projectile.hs 21;" f +_prjSpin src/Dodge/Data/Projectile.hs 25;" f +_prjTimer src/Dodge/Data/Projectile.hs 29;" f +_prjType src/Dodge/Data/Projectile.hs 33;" f +_prjUpdates src/Dodge/Data/Projectile.hs 32;" f +_prjVel src/Dodge/Data/Projectile.hs 22;" f +_prjZ src/Dodge/Data/Projectile.hs 30;" f +_prjZVel src/Dodge/Data/Projectile.hs 31;" f _projectiles src/Dodge/Data/LWorld.hs 104;" f _props src/Dodge/Data/LWorld.hs 103;" f _proxDist src/Dodge/Data/Machine/Sensor.hs 26;" f @@ -3288,6 +3292,7 @@ aSound src/Dodge/SoundLogic.hs 68;" f aStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 41;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f accessTerminal src/Dodge/WorldEffect.hs 48;" f +activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 50;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 24;" f addArmour src/Dodge/Creature.hs 83;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f @@ -3362,7 +3367,7 @@ applyCME src/Dodge/HeldUse.hs 126;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f -applyGravityPU src/Dodge/Projectile/Update.hs 50;" f +applyGravityPU src/Dodge/Projectile/Update.hs 51;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f applyInvLock src/Dodge/HeldUse.hs 141;" f @@ -3724,8 +3729,6 @@ createArc src/Dodge/Tesla/Arc.hs 81;" f createBarrelSpark src/Dodge/Spark.hs 44;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f createForceField src/Dodge/ForceField.hs 7;" f -createGProjectile src/Dodge/HeldUse.hs 642;" f -createGShell src/Dodge/Projectile/Create.hs 73;" f createGas src/Dodge/Gas.hs 8;" f createHeadLamp src/Dodge/Euse.hs 132;" f createItemYou src/Dodge/Inventory/Add.hs 95;" f @@ -3734,7 +3737,7 @@ createNewArc src/Dodge/Tesla.hs 81;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f createProjectile src/Dodge/HeldUse.hs 609;" f -createShell src/Dodge/Projectile/Create.hs 23;" f +createShell src/Dodge/Projectile/Create.hs 22;" f createShieldWall src/Dodge/Euse.hs 107;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f @@ -3827,7 +3830,7 @@ debugMenuOptions src/Dodge/Menu.hs 119;" f debugOn src/Dodge/Data/Config.hs 151;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f -decTimMvVel src/Dodge/Projectile/Update.hs 176;" f +decTimMvVel src/Dodge/Projectile/Update.hs 177;" f decodedtmap src/Dodge/Terminal.hs 205;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f @@ -3930,7 +3933,7 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 21;" f destroyMount src/Dodge/Block.hs 104;" f destroyMounts src/Dodge/Block.hs 101;" f -destroyProjectile src/Dodge/Projectile/Update.hs 91;" f +destroyProjectile src/Dodge/Projectile/Update.hs 92;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 41;" f detectorColor src/Dodge/Item/Draw/SPic.hs 434;" f @@ -4044,7 +4047,7 @@ doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f doTestDrawing src/Dodge/Render.hs 42;" 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 103;" f +doThrust src/Dodge/Projectile/Update.hs 104;" f doTimeScroll src/Dodge/Update.hs 205;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 101;" f @@ -4251,7 +4254,7 @@ expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 195;" f expireAndDamageFL src/Dodge/Flame.hs 47;" f -explodeShell src/Dodge/Projectile/Update.hs 188;" f +explodeShell src/Dodge/Projectile/Update.hs 190;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 410;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -4500,7 +4503,7 @@ hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f -homingDrawType src/Dodge/Projectile/Create.hs 16;" f +homingDrawType src/Dodge/Projectile/Create.hs 15;" f homingModule src/Dodge/Item/Scope.hs 36;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 63;" f @@ -5133,7 +5136,7 @@ pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 42;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 12;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 146;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 147;" 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 @@ -5382,7 +5385,7 @@ rectXY src/Geometry/Polygon.hs 35;" f rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f red src/Color.hs 14;" f reduceLocLDT src/Dodge/DoubleTree.hs 256;" f -reduceSpinBy src/Dodge/Projectile/Update.hs 173;" f +reduceSpinBy src/Dodge/Projectile/Update.hs 174;" f reflDirWall src/Dodge/Base/Wall.hs 16;" f reflVelWall src/Dodge/Base/Wall.hs 24;" f reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f @@ -5398,7 +5401,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteDetonate src/Dodge/Creature/Impulse/UseItem.hs 50;" f +remoteDetonate src/Dodge/Creature/Impulse/UseItem.hs 57;" f remoteDetonator src/Dodge/Item/Scope.hs 63;" f remoteScreen src/Dodge/Item/Scope.hs 59;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f @@ -5654,7 +5657,7 @@ shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 284;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f -shellCollisionCheck src/Dodge/Projectile/Update.hs 75;" f +shellCollisionCheck src/Dodge/Projectile/Update.hs 76;" f shellMag src/Dodge/Item/Ammo.hs 61;" f shellModule src/Dodge/Item/Scope.hs 45;" f shellShape src/Dodge/Projectile/Draw.hs 27;" f @@ -5958,7 +5961,7 @@ toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f toggleCombineInv src/Dodge/DisplayInventory.hs 35;" f toggleCommand src/Dodge/Terminal.hs 196;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 63;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 70;" f toggleJust src/MaybeHelp.hs 41;" f toggleMap src/Dodge/Update/Input/InGame.hs 556;" f toggleTweakInv src/Dodge/Update/Input/InGame.hs 569;" f @@ -6043,7 +6046,7 @@ tryPutFloorItemIDInInv src/Dodge/Inventory/Add.hs 26;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 42;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f -trySpinByCID src/Dodge/Projectile/Update.hs 128;" f +trySpinByCID src/Dodge/Projectile/Update.hs 129;" f trySynthBullet src/Dodge/Creature/State.hs 204;" f tryUseParent src/Dodge/Creature/State.hs 197;" f turnTo src/Dodge/Movement/Turn.hs 4;" f @@ -6078,7 +6081,7 @@ unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f upHammer src/Dodge/Default.hs 76;" f -upProjectile src/Dodge/Projectile/Update.hs 26;" f +upProjectile src/Dodge/Projectile/Update.hs 27;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 91;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f @@ -6150,7 +6153,7 @@ updatePosEvents src/Dodge/Update.hs 573;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 365;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 368;" f -updateProjectile src/Dodge/Projectile/Update.hs 23;" f +updateProjectile src/Dodge/Projectile/Update.hs 24;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 22;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f @@ -6221,20 +6224,20 @@ useGasParams src/Dodge/HeldUse.hs 506;" f useHotkey src/Dodge/Creature/YourControl.hs 54;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f useLoadedAmmo src/Dodge/HeldUse.hs 289;" f -useLocation src/Dodge/Creature/Impulse/UseItem.hs 54;" f +useLocation src/Dodge/Creature/Impulse/UseItem.hs 61;" f useMagShield src/Dodge/Euse.hs 46;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 17;" f -useRewindGun src/Dodge/HeldUse.hs 708;" f +useRewindGun src/Dodge/HeldUse.hs 677;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useSelectedItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f -useStopWatch src/Dodge/HeldUse.hs 689;" f +useSelectedItem src/Dodge/Creature/Impulse/UseItem.hs 21;" f +useStopWatch src/Dodge/HeldUse.hs 658;" f useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/HeldUse.hs 63;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 697;" f +useTimeScrollGun src/Dodge/HeldUse.hs 666;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 433;" f