From 3dce133f3001b0af637f456f396ac700912238b9 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 8 Jun 2025 23:31:44 +0100 Subject: [PATCH] Work on energy balls --- src/Dodge/Bullet.hs | 13 ++- src/Dodge/Data/Bullet.hs | 1 - src/Dodge/EnergyBall.hs | 24 +++++- src/Dodge/Spark.hs | 26 ++++++ tags | 175 ++++++++++++++++++++------------------- 5 files changed, 144 insertions(+), 95 deletions(-) diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 476798b0f..9b01f5da0 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -20,6 +20,8 @@ import System.Random updateBullet :: World -> Bullet -> (World, Maybe Bullet) updateBullet w bu + | magV (_buVel bu) < 10 + , BulBall _ <- _buPayload bu = (useBulletPayload bu (_buPos bu) w, Nothing) | magV (_buVel bu) < 1 = (useBulletPayload bu (_buPos bu) w, Nothing) -- have to be slightly carefull not to accelerate bullets using magnets | otherwise = second (Just . updateBulVel) . hitEffFromBul w $ applyMagnetsToBul bu w @@ -114,11 +116,10 @@ useBulletPayload bu = case _buPayload bu of BulFlak -> makeFlak bu BulFrag -> makeFragBullets BulGas -> (`makeGasCloud` V2 0 0) --- BulBall FlamingBall -> incBallAt BulBall ExplosiveBall -> \p -> cWorld . lWorld . shockwaves .:~ concBall p - BulBall ElectricalBall -> makeStaticBall - BulBall FlashBall -> makeFlashBall - BulBall (FlameletBall x _) -> \p -> makeFlamelet p 0 x 10 + BulBall ElectricalBall -> makeMovingEB (_buVel bu) ElectricalBall + BulBall FlashBall -> makeMovingEB (_buVel bu) FlashBall + BulBall (FlameletBall x r) -> makeMovingEB (_buVel bu) (FlameletBall x r) makeFragBullets :: Point2 -> World -> World makeFragBullets p w = w & cWorld . lWorld . bullets .++~ bus @@ -134,7 +135,6 @@ makeFragBullets p w = w & cWorld . lWorld . bullets .++~ bus & buPos .~ p & buOldPos .~ p & buWidth .~ 1 --- & buDamages .~ [Damage PIERCING 5 0 0 0 $ PushBackDamage 2] makeFlak :: Bullet -> Point2 -> World -> World makeFlak bu _ w = w & cWorld . lWorld . bullets .++~ [f x | x <- xs] @@ -144,7 +144,6 @@ makeFlak bu _ w = w & cWorld . lWorld . bullets .++~ [f x | x <- xs] f x = bu & buVel %~ g x & buPayload .~ BulPlain 25 & buWidth .~ 0.5 --- & buDamages .~ [Damage PIERCING 25 0 0 0 $ PushBackDamage 2] g x v = v +.+ x *.* normalizeV (vNormal v) hitEffFromBul :: World -> Bullet -> (World, Bullet) @@ -196,7 +195,7 @@ moveBullet pt = pt & buPos +~ _buVel pt & buOldPos .~ _buPos pt stopBulletAt :: Point2 -> Bullet -> Bullet stopBulletAt hitp pt = pt - & buPos .~ hitp + & buPos .~ hitp + squashNormalizeV (_buPos pt - hitp) & buOldPos .~ _buPos pt & buVel .~ 0 diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index d93c767a0..45a308866 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -24,7 +24,6 @@ data Bullet = Bullet , _buPos :: Point2 , _buOldPos :: Point2 , _buWidth :: Float --- , _buDamages :: [Damage] } deriving (Show, Eq, Ord, Read) --Generic, Flat) diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index b3b4519a2..71580dc9e 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -5,6 +5,7 @@ module Dodge.EnergyBall ( incBallAt, makeFlashBall, makeFlamelet, + makeMovingEB, ) where import qualified Data.IntMap.Strict as IM @@ -12,6 +13,7 @@ import Data.List (foldl') import Data.Maybe import Dodge.Base.Collide import Dodge.Data.World +import Dodge.Spark import Dodge.WorldEvent.ThingsHit import Geometry import LensHelp @@ -36,13 +38,23 @@ updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb | _ebTimer eb <= 0 = (w, Nothing) | otherwise = - ( ebFlicker eb $ damageCircle (_ebPos eb) (_ebEff eb) w + ( ebEffect eb . ebFlicker eb $ damageCircle (_ebPos eb) (_ebEff eb) w , Just $ eb & ebTimer -~ 1 & ebPos .~ bp & ebVel .~ 0.85 * bv ) where p = eb ^. ebPos + eb ^. ebVel (bp, bv) = fromMaybe (p, eb ^. ebVel) $ bouncePoint (const True) 0 (eb ^. ebPos) p w +ebEffect :: EnergyBall -> World -> World +ebEffect eb = case _ebEff eb of + ElectricalBall -> randSparkExtraVel + (_ebVel eb) + ElectricSpark + (state (randomR (3, 6))) + (state (randomR (0, 2 * pi))) + (_ebPos eb) + _ -> id + energyBallAt :: EnergyBallType -> Point2 -> World -> World energyBallAt ebt p = cWorld . lWorld . energyBalls @@ -53,6 +65,16 @@ energyBallAt ebt p = , _ebEff = ebt } +makeMovingEB :: Point2 -> EnergyBallType -> Point2 -> World -> World +makeMovingEB v ebt p = + cWorld . lWorld . energyBalls + .:~ EnergyBall + { _ebVel = v + , _ebPos = p + , _ebTimer = 20 + , _ebEff = ebt + } + incBallAt :: Point2 -> World -> World incBallAt = energyBallAt (FlameletBall 5 0) diff --git a/src/Dodge/Spark.hs b/src/Dodge/Spark.hs index 47e20c6de..c21fcb280 100644 --- a/src/Dodge/Spark.hs +++ b/src/Dodge/Spark.hs @@ -3,6 +3,7 @@ module Dodge.Spark ( sparkRandDir, randDirSpark, randSpark, + randSparkExtraVel, makeSpark, ) where @@ -14,6 +15,7 @@ import Geometry import LensHelp import System.Random +-- should probably reduce spark speed more if it is very fast updateSpark :: World -> Spark -> (World, Maybe Spark) updateSpark w sk | magV (_skVel sk) < 1 = (w, Nothing) @@ -87,5 +89,29 @@ randSpark dt randspeed randdir pos w = x <- randspeed return (d, x) +randSparkExtraVel :: + Point2 -> + SparkType -> + State StdGen Float -> + State StdGen Float -> + Point2 -> + World -> + World +randSparkExtraVel v dt randspeed randdir pos w = + w + & randGen .~ g + & cWorld . lWorld . sparks + .:~ Spark + { _skVel = v + rotateV dir (V2 speed 0) + , _skPos = pos + , _skOldPos = pos + , _skType = dt + } + where + ((dir, speed), g) = (`runState` _randGen w) $ do + d <- randdir + x <- randspeed + return (d, x) + sparkRandDir :: Float -> Point2 -> Float -> World -> World sparkRandDir a pos dir = randDirSpark (state $ randomR (dir - a, dir + a)) pos diff --git a/tags b/tags index 8c014880b..309873132 100644 --- a/tags +++ b/tags @@ -152,8 +152,8 @@ Base src/Dodge/Zoning/Base.hs 2;" m Base src/Picture/Base.hs 4;" m BaseTriggerType src/Dodge/BaseTriggerType.hs 3;" m BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C -BasicBulletTrajectory src/Dodge/Data/Bullet.hs 46;" C -BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 53;" C +BasicBulletTrajectory src/Dodge/Data/Bullet.hs 45;" C +BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 52;" C BasicFlare src/Dodge/Data/Muzzle.hs 23;" C BatteryGuns src/Dodge/Item/Held/BatteryGuns.hs 1;" m BatteryGuns src/Dodge/Item/Weapon/BatteryGuns.hs 1;" m @@ -169,8 +169,8 @@ BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C BeltBulletAmmo src/Dodge/Data/AmmoType.hs 8;" C Bezier src/Geometry/Bezier.hs 1;" m -BezierTrajectory src/Dodge/Data/Bullet.hs 47;" C -BezierTrajectoryType src/Dodge/Data/Bullet.hs 54;" C +BezierTrajectory src/Dodge/Data/Bullet.hs 46;" C +BezierTrajectoryType src/Dodge/Data/Bullet.hs 53;" C Bind src/Shader/Bind.hs 1;" m Biome src/Dodge/Data/Scenario.hs 71;" t BlBl src/Dodge/Data/BlBl.hs 11;" t @@ -207,7 +207,7 @@ Booster src/Dodge/Item/Equipment/Booster.hs 1;" m Boosting src/Dodge/Data/Creature/Stance.hs 28;" C Boss src/Dodge/Room/Boss.hs 2;" m BottomEscapeMenuOption src/Dodge/Data/Universe.hs 77;" C -BounceBullet src/Dodge/Data/Bullet.hs 33;" C +BounceBullet src/Dodge/Data/Bullet.hs 32;" C Bound src/Bound.hs 1;" m Bound_box_screen src/Dodge/Data/Config.hs 81;" C BoundaryCursor src/Dodge/Data/SelectionList.hs 20;" C @@ -220,26 +220,26 @@ Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C BtInactive src/Dodge/Data/Button.hs 63;" C BtOff src/Dodge/Data/Button.hs 63;" C BtOn src/Dodge/Data/Button.hs 63;" C -BulBall src/Dodge/Data/Bullet.hs 38;" C -BulFlak src/Dodge/Data/Bullet.hs 40;" C -BulFrag src/Dodge/Data/Bullet.hs 41;" C -BulGas src/Dodge/Data/Bullet.hs 42;" C -BulPlain src/Dodge/Data/Bullet.hs 39;" C +BulBall src/Dodge/Data/Bullet.hs 37;" C +BulFlak src/Dodge/Data/Bullet.hs 39;" C +BulFrag src/Dodge/Data/Bullet.hs 40;" C +BulGas src/Dodge/Data/Bullet.hs 41;" C +BulPlain src/Dodge/Data/Bullet.hs 38;" C Bullet src/Dodge/Data/Bullet.hs 18;" 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/AmmoType.hs 7;" C -BulletEffect src/Dodge/Data/Bullet.hs 31;" t +BulletEffect src/Dodge/Data/Bullet.hs 30;" t BulletGun src/Dodge/Item/Held/BulletGun.hs 1;" m BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 3;" m BulletModEffect src/Dodge/Data/Item/BulletMod.hs 12;" C BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C BulletParams src/Dodge/Data/Item/Use.hs 54;" C -BulletPayload src/Dodge/Data/Bullet.hs 37;" t -BulletTrajectory src/Dodge/Data/Bullet.hs 45;" t -BulletTrajectoryType src/Dodge/Data/Bullet.hs 52;" t +BulletPayload src/Dodge/Data/Bullet.hs 36;" t +BulletTrajectory src/Dodge/Data/Bullet.hs 44;" t +BulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" t BurstTrigger src/Dodge/Data/TriggerType.hs 14;" C Button src/Dodge/Data/Button.hs 48;" t Button src/Dodge/Data/Button.hs 6;" m @@ -509,7 +509,7 @@ Delete src/Dodge/Wall/Delete.hs 1;" m Deprecated src/Dodge/LevelGen/StaticWalls/Deprecated.hs 1;" m Destroy src/Dodge/Machine/Destroy.hs 1;" m DestroyBeing src/Dodge/Data/Scenario.hs 8;" C -DestroyBullet src/Dodge/Data/Bullet.hs 32;" C +DestroyBullet src/Dodge/Data/Bullet.hs 31;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 182;" t Dirt src/Dodge/Data/Material.hs 11;" C @@ -698,8 +698,8 @@ FlashBall src/Dodge/Data/EnergyBall/Type.hs 16;" C Flashing src/Dodge/Data/Damage.hs 27;" C FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 15;" C -FlechetteTrajectory src/Dodge/Data/Bullet.hs 48;" C -FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 55;" C +FlechetteTrajectory src/Dodge/Data/Bullet.hs 47;" C +FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 54;" C Flee src/Dodge/Data/ActionPlan.hs 191;" C Flee src/Dodge/Creature/Impulse/Flee.hs 1;" m Flesh src/Dodge/Data/Material.hs 11;" C @@ -1139,8 +1139,8 @@ MagnetBuBu src/Dodge/Data/Magnet.hs 16;" t MagnetBuBu src/Dodge/MagnetBuBu.hs 1;" m MagnetDeflect src/Dodge/Data/Magnet.hs 18;" C MagnetRepulse src/Dodge/Data/Magnet.hs 20;" C -MagnetTrajectory src/Dodge/Data/Bullet.hs 49;" C -MagnetTrajectoryType src/Dodge/Data/Bullet.hs 56;" C +MagnetTrajectory src/Dodge/Data/Bullet.hs 48;" C +MagnetTrajectoryType src/Dodge/Data/Bullet.hs 55;" C MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m @@ -1448,7 +1448,7 @@ PausedTimeFlow src/Dodge/Data/World.hs 76;" C Payload src/Dodge/Data/Payload.hs 11;" t Payload src/Dodge/Data/Payload.hs 6;" m Payload src/Dodge/Payload.hs 2;" m -PenetrateBullet src/Dodge/Data/Bullet.hs 34;" C +PenetrateBullet src/Dodge/Data/Bullet.hs 33;" C Perception src/Dodge/Data/Creature/Perception.hs 32;" t Perception src/Dodge/Creature/Perception.hs 2;" m Perception src/Dodge/Data/Creature/Perception.hs 6;" m @@ -2336,7 +2336,7 @@ _btRot src/Dodge/Data/Button.hs 51;" f _btState src/Dodge/Data/Button.hs 55;" f _btTermMID src/Dodge/Data/Button.hs 56;" f _btText src/Dodge/Data/Button.hs 54;" f -_buDam src/Dodge/Data/Bullet.hs 39;" f +_buDam src/Dodge/Data/Bullet.hs 38;" f _buDrag src/Dodge/Data/Bullet.hs 23;" f _buEffect src/Dodge/Data/Bullet.hs 19;" f _buOldPos src/Dodge/Data/Bullet.hs 25;" f @@ -3094,7 +3094,7 @@ _soundsToInvestigate src/Dodge/Data/Creature/Memory.hs 14;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 112;" f -_spawnEBT src/Dodge/Data/Bullet.hs 38;" f +_spawnEBT src/Dodge/Data/Bullet.hs 37;" f _ssIndent src/Dodge/Data/SelectionList.hs 34;" f _ssItems src/Dodge/Data/SelectionList.hs 30;" f _ssOffset src/Dodge/Data/SelectionList.hs 31;" f @@ -3394,8 +3394,8 @@ applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 47;" f applyInvLock src/Dodge/HeldUse.hs 425;" f -applyMagnetsToBul src/Dodge/Bullet.hs 28;" f -applyPastDamages src/Dodge/Creature/State.hs 143;" f +applyMagnetsToBul src/Dodge/Bullet.hs 29;" f +applyPastDamages src/Dodge/Creature/State.hs 140;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 52;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 457;" f @@ -3534,7 +3534,7 @@ blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f boosterGun src/Dodge/Item/Equipment/Booster.hs 9;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f bossRoom src/Dodge/Room/Boss.hs 60;" f -bounceDir src/Dodge/Bullet.hs 106;" f +bounceDir src/Dodge/Bullet.hs 107;" f bouncePoint src/Dodge/Base/Collide.hs 88;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f @@ -3582,7 +3582,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 275;" f +chainLinkOrientation src/Dodge/Creature/State.hs 271;" f chainPairs src/Geometry.hs 359;" f changeSwapOther src/Dodge/Inventory.hs 144;" f changeSwapSel src/Dodge/Inventory.hs 137;" f @@ -3597,7 +3597,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 64;" f -checkDeath src/Dodge/Creature/State.hs 79;" f +checkDeath src/Dodge/Creature/State.hs 76;" f checkEndGame src/Dodge/Update.hs 709;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3664,7 +3664,7 @@ clusterFunc src/Dodge/Combine/Graph.hs 119;" f cogRaised src/Dodge/Creature/Perception.hs 102;" f colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 18;" f -collectDamageTypes src/Dodge/Damage.hs 48;" f +collectDamageTypes src/Dodge/Damage.hs 49;" f collectInvItems src/Dodge/Update/Input/InGame.hs 298;" f collideCircWalls src/Dodge/Base/Collide.hs 159;" f collidePoint src/Dodge/Base/Collide.hs 50;" f @@ -3716,7 +3716,7 @@ copyItemToFloor src/Dodge/FloorItem.hs 18;" f copyItemToFloorID src/Dodge/FloorItem.hs 22;" f corDoor src/Dodge/Room/Room.hs 376;" f cornerList src/Preload/Render.hs 195;" f -corpseOrGib src/Dodge/Creature/State.hs 109;" f +corpseOrGib src/Dodge/Creature/State.hs 106;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorN src/Dodge/Room/Corridor.hs 52;" f @@ -3757,7 +3757,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 776;" f crStratConMatches src/Dodge/Creature/Test.hs 76;" f crStrength src/Dodge/Creature/Statistics.hs 24;" f -crUpdate src/Dodge/Creature/State.hs 63;" f +crUpdate src/Dodge/Creature/State.hs 60;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f @@ -3830,23 +3830,23 @@ damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damToExpBarrel src/Dodge/Barreloid.hs 56;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f damageCircle src/Dodge/DamageCircle.hs 12;" f -damageCircle src/Dodge/EnergyBall.hs 76;" f +damageCircle src/Dodge/EnergyBall.hs 98;" f damageCodeCommand src/Dodge/Terminal.hs 232;" f damageCrCircle src/Dodge/DamageCircle.hs 33;" f -damageCrCircle src/Dodge/EnergyBall.hs 99;" f -damageCrWl src/Dodge/Damage.hs 25;" f -damageCrWlID src/Dodge/Damage.hs 19;" f -damageDirection src/Dodge/Damage.hs 30;" f +damageCrCircle src/Dodge/EnergyBall.hs 121;" f +damageCrWl src/Dodge/Damage.hs 26;" f +damageCrWlID src/Dodge/Damage.hs 20;" f +damageDirection src/Dodge/Damage.hs 31;" f damageHP src/Dodge/Creature/Damage.hs 63;" f damageMaterial src/Dodge/Material/Damage.hs 7;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f damageStone src/Dodge/Material/Damage.hs 20;" f -damageThingHit src/Dodge/Bullet.hs 175;" f +damageThingHit src/Dodge/Bullet.hs 174;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f damageWall src/Dodge/Wall/Damage.hs 15;" f damageWallEffect src/Dodge/Wall/DamageEffect.hs 12;" f damageWlCircle src/Dodge/DamageCircle.hs 26;" f -damageWlCircle src/Dodge/EnergyBall.hs 96;" f +damageWlCircle src/Dodge/EnergyBall.hs 118;" f dampField src/Dodge/Magnet.hs 8;" f damsToExpBarrel src/Dodge/Barreloid.hs 49;" f dark src/Color.hs 108;" f @@ -4002,11 +4002,11 @@ divideDoorPane src/Dodge/Placement/Instance/Door.hs 59;" f divideLine src/Geometry.hs 247;" f divideLineExact src/Geometry.hs 275;" f divideLineOddNumPoints src/Geometry.hs 260;" f -dmType src/Dodge/Damage.hs 33;" f +dmType src/Dodge/Damage.hs 34;" f doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 140;" f -doAnyEquipmentEffect src/Dodge/Creature/State.hs 191;" f +doAnyEquipmentEffect src/Dodge/Creature/State.hs 188;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBlBl src/Dodge/BlBl.hs 5;" f @@ -4022,7 +4022,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 137;" f +doDamage src/Dodge/Creature/State.hs 134;" f doDeathToggle src/Dodge/WorldEffect.hs 98;" f doDeathTriggers src/Dodge/WorldEffect.hs 93;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f @@ -4050,7 +4050,7 @@ doItemTimeScroll src/Dodge/Update.hs 197;" f doLoop src/Loop.hs 60;" f doMCrAc src/Dodge/CreatureEffect.hs 57;" f doMP2Ac src/Dodge/CreatureEffect.hs 73;" f -doMagnetBuBu src/Dodge/Bullet.hs 31;" f +doMagnetBuBu src/Dodge/Bullet.hs 32;" f doMagnetBuBu src/Dodge/MagnetBuBu.hs 7;" f doMagnetUpdate src/Dodge/Magnet/Update.hs 6;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -4103,7 +4103,7 @@ doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 168;" f -drawARHUD src/Dodge/Creature/State.hs 302;" f +drawARHUD src/Dodge/Creature/State.hs 298;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4229,7 +4229,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 367;" f drawZoneCol src/Dodge/Debug/Picture.hs 142;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropByState src/Dodge/Creature/State.hs 130;" f +dropByState src/Dodge/Creature/State.hs 127;" f dropExcept src/Dodge/Creature/Action.hs 166;" f dropInventoryPath src/Dodge/HeldUse.hs 1356;" f dropItem src/Dodge/Creature/Action.hs 172;" f @@ -4245,9 +4245,10 @@ dtToLRAdjEither src/Dodge/DoubleTree.hs 114;" f dtToRootIntMap' src/Dodge/DoubleTree.hs 92;" f dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f dummyMenuOption src/Dodge/Menu/Option.hs 74;" f -ebColor src/Dodge/EnergyBall.hs 69;" f -ebFlicker src/Dodge/EnergyBall.hs 62;" f -ebtToDamage src/Dodge/EnergyBall.hs 89;" f +ebColor src/Dodge/EnergyBall.hs 91;" f +ebEffect src/Dodge/EnergyBall.hs 48;" f +ebFlicker src/Dodge/EnergyBall.hs 84;" f +ebtToDamage src/Dodge/EnergyBall.hs 111;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f edgeToPic src/Dodge/Debug/Picture.hs 431;" f effectOnEquip src/Dodge/Equipment.hs 32;" f @@ -4266,7 +4267,7 @@ encircleP src/Dodge/Creature/Boid.hs 28;" f endArcPos src/Dodge/Tesla.hs 87;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 267;" f endRegex src/Dodge/Update/Input/InGame.hs 254;" f -energyBallAt src/Dodge/EnergyBall.hs 46;" f +energyBallAt src/Dodge/EnergyBall.hs 58;" f enterCombineInv src/Dodge/DisplayInventory.hs 323;" f epText src/Dodge/Inventory/SelectionList.hs 75;" f eqConstr src/SameConstr.hs 17;" f @@ -4296,7 +4297,7 @@ expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f 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 184;" f +expireAndDamage src/Dodge/Bullet.hs 183;" f explodeShell src/Dodge/Projectile/Update.hs 245;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f @@ -4369,7 +4370,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 107;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 424;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f -foldCr src/Dodge/Creature/State.hs 45;" f +foldCr src/Dodge/Creature/State.hs 46;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 38;" f @@ -4566,7 +4567,7 @@ highBar src/Dodge/Room/Foreground.hs 89;" f highDiagonalMesh src/Dodge/Room/Foreground.hs 35;" f highMesh src/Dodge/Room/Foreground.hs 25;" f hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f -hitEffFromBul src/Dodge/Bullet.hs 150;" f +hitEffFromBul src/Dodge/Bullet.hs 149;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 406;" f holdForm src/Dodge/Creature/Boid.hs 137;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f @@ -4584,7 +4585,7 @@ impulsiveAIBefore src/Dodge/Creature/Impulse.hs 23;" f inLink src/Dodge/RoomLink.hs 113;" f inSegArea src/Geometry/Intersect.hs 298;" f inTextInputFocus src/Dodge/InputFocus.hs 10;" f -incBallAt src/Dodge/EnergyBall.hs 56;" f +incBallAt src/Dodge/EnergyBall.hs 78;" f incidenceToFunction src/Dodge/Graph.hs 26;" f indefiniteExceptions src/StringHelp.hs 29;" f initCrItemLocation src/Dodge/Item/Location/Initialize.hs 41;" f @@ -4623,7 +4624,7 @@ insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 70;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f -internalCreatureUpdate src/Dodge/Creature/State.hs 124;" f +internalCreatureUpdate src/Dodge/Creature/State.hs 121;" f interpWith src/Dodge/Creature/Boid.hs 11;" f intersectCircSeg src/Geometry/Intersect.hs 305;" f intersectCircSegFirst src/Geometry/Intersect.hs 323;" f @@ -4651,16 +4652,16 @@ invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f invHead src/Dodge/Render/HUD.hs 405;" f -invItemLocUpdate src/Dodge/Creature/State.hs 180;" f +invItemLocUpdate src/Dodge/Creature/State.hs 177;" f invLDT src/Dodge/Item/Grammar.hs 279;" f -invRootItemEffs src/Dodge/Creature/State.hs 173;" f +invRootItemEffs src/Dodge/Creature/State.hs 170;" f invRootMap src/Dodge/Item/Grammar.hs 288;" f invRootTrees src/Dodge/Item/Grammar.hs 309;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f -invSideEff src/Dodge/Creature/State.hs 166;" f +invSideEff src/Dodge/Creature/State.hs 163;" f invSize src/Dodge/Inventory/CheckSlots.hs 30;" f inventoryX src/Dodge/Creature.hs 114;" f inverseSelNumPos src/Dodge/SelectionSections.hs 228;" f @@ -4678,7 +4679,7 @@ isAnimate src/Dodge/Creature/Test.hs 142;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f isElectrical src/Dodge/Machine/Update.hs 80;" f -isFrictionless src/Dodge/Creature/State.hs 437;" f +isFrictionless src/Dodge/Creature/State.hs 433;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 191;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4912,14 +4913,15 @@ makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 71;" f makeFlak src/Dodge/Bullet.hs 139;" f makeFlame src/Dodge/Flame.hs 57;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f -makeFlamelet src/Dodge/EnergyBall.hs 21;" f +makeFlamelet src/Dodge/EnergyBall.hs 23;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f -makeFlashBall src/Dodge/EnergyBall.hs 59;" f +makeFlashBall src/Dodge/EnergyBall.hs 81;" f makeFootstepSound src/Dodge/Creature/State/WalkCycle.hs 32;" f -makeFragBullets src/Dodge/Bullet.hs 123;" f +makeFragBullets src/Dodge/Bullet.hs 124;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 76;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 35;" f +makeMovingEB src/Dodge/EnergyBall.hs 68;" f makeMuzzleFlare src/Dodge/HeldUse.hs 649;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f @@ -4935,7 +4937,7 @@ makeShaderVBO src/Shader/Compile.hs 32;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f makeSourcedShader src/Shader/Compile.hs 167;" f -makeSpark src/Dodge/Spark.hs 39;" f +makeSpark src/Dodge/Spark.hs 44;" f makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f makeStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 22;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f @@ -5052,12 +5054,12 @@ modTo src/Geometry/Zone.hs 10;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f mouseCursorType src/Dodge/Render/Picture.hs 86;" f mouseWorldPos' src/Dodge/Base/Coordinate.hs 48;" f -moveBullet src/Dodge/Bullet.hs 193;" f +moveBullet src/Dodge/Bullet.hs 192;" f moveCombineSel src/Dodge/Update/Scroll.hs 115;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 47;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f -movePenBullet src/Dodge/Bullet.hs 203;" f +movePenBullet src/Dodge/Bullet.hs 202;" f moveProjectile src/Dodge/Projectile/Update.hs 221;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 18;" f @@ -5195,7 +5197,7 @@ pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 185;" f peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f -penThing src/Dodge/Bullet.hs 210;" f +penThing src/Dodge/Bullet.hs 209;" f perMat src/MatrixHelper.hs 49;" f perceptionUpdate src/Dodge/Creature/Perception.hs 23;" f performAction src/Dodge/Creature/Action.hs 91;" f @@ -5281,7 +5283,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 14;" f pointerYourRootItem src/Dodge/Item/Location.hs 31;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 25;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/State.hs 121;" f +poisonSPic src/Dodge/Creature/State.hs 118;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f @@ -5429,7 +5431,7 @@ radToDeg src/Geometry/Vector.hs 122;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f -randDirSpark src/Dodge/Spark.hs 49;" f +randDirSpark src/Dodge/Spark.hs 54;" f randEdgeTank src/Dodge/Room/Tanks.hs 33;" f randEdgeTanks src/Dodge/Room/Tanks.hs 63;" f randEnergyBallAt src/Dodge/WorldEvent/SpawnParticle.hs 14;" f @@ -5446,7 +5448,8 @@ randOnUnitSphere src/RandomHelp.hs 90;" f randPeaked src/RandomHelp.hs 138;" f randPeakedParam src/RandomHelp.hs 130;" f randProb src/RandomHelp.hs 68;" f -randSpark src/Dodge/Spark.hs 63;" f +randSpark src/Dodge/Spark.hs 68;" f +randSparkExtraVel src/Dodge/Spark.hs 91;" f randWallReflect src/Dodge/Tesla/Arc.hs 57;" f randWallReflect src/Dodge/Update.hs 580;" f randomChallenges src/Dodge/Room/Start.hs 62;" f @@ -5629,7 +5632,7 @@ scaleSH src/Shape.hs 268;" f scalp src/Dodge/Creature/Picture.hs 98;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 118;" f +scorchSPic src/Dodge/Creature/State.hs 115;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5689,7 +5692,7 @@ setClusterID src/Dodge/Combine/Graph.hs 116;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 127;" f -setFromToDams src/Dodge/Bullet.hs 167;" f +setFromToDams src/Dodge/Bullet.hs 166;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f @@ -5703,7 +5706,7 @@ setOldPos src/Dodge/Update.hs 467;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 406;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 402;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5771,8 +5774,8 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 308;" f -shineTorch src/Dodge/Creature/State.hs 349;" f +shineTargetLaser src/Dodge/Creature/State.hs 304;" f +shineTorch src/Dodge/Creature/State.hs 345;" f shootBullet src/Dodge/HeldUse.hs 938;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootLaser src/Dodge/HeldUse.hs 847;" f @@ -5864,10 +5867,10 @@ spanColLightI src/Dodge/Placement/Instance/LightSource.hs 183;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f spanLSLightI src/Dodge/Placement/Instance/LightSource.hs 168;" f spanLightI src/Dodge/Placement/Instance/LightSource.hs 197;" f -sparkDam src/Dodge/Spark.hs 30;" f +sparkDam src/Dodge/Spark.hs 35;" f sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f -sparkRandDir src/Dodge/Spark.hs 86;" f -sparkToDamage src/Dodge/Spark.hs 33;" f +sparkRandDir src/Dodge/Spark.hs 115;" f +sparkToDamage src/Dodge/Spark.hs 38;" f spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f spawnElectricalSparks src/Dodge/PosEvent.hs 19;" f spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f @@ -5934,7 +5937,7 @@ stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f stoneDebris src/Dodge/Block/Debris.hs 137;" f stoneWallDamage src/Dodge/Wall/DamageEffect.hs 25;" f stopAllSounds src/Sound.hs 125;" f -stopBulletAt src/Dodge/Bullet.hs 196;" f +stopBulletAt src/Dodge/Bullet.hs 195;" f stopPushing src/Dodge/Block.hs 107;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f @@ -6151,8 +6154,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f tryShellBounce src/Dodge/Projectile/Update.hs 103;" f trySpinByCID src/Dodge/Projectile/Update.hs 178;" f -trySynthBullet src/Dodge/Creature/State.hs 205;" f -tryUseParent src/Dodge/Creature/State.hs 198;" f +trySynthBullet src/Dodge/Creature/State.hs 202;" f +tryUseParent src/Dodge/Creature/State.hs 195;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 19;" f @@ -6192,13 +6195,13 @@ updateAimPos src/Dodge/Update.hs 306;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f -updateAttachedItems src/Dodge/Creature/State.hs 265;" f +updateAttachedItems src/Dodge/Creature/State.hs 261;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f updateBarrel src/Dodge/Barreloid.hs 44;" f updateBarreloid src/Dodge/Barreloid.hs 14;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 29;" f updateBounds src/Dodge/Update/Camera.hs 250;" f -updateBulVel src/Dodge/Bullet.hs 53;" f +updateBulVel src/Dodge/Bullet.hs 54;" f updateBullet src/Dodge/Bullet.hs 21;" f updateBullets src/Dodge/Update.hs 540;" f updateCamera src/Dodge/Update/Camera.hs 29;" f @@ -6215,7 +6218,7 @@ updateDelayedEvents src/Dodge/Update.hs 801;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 533;" f -updateEnergyBall src/Dodge/EnergyBall.hs 35;" f +updateEnergyBall src/Dodge/EnergyBall.hs 37;" f updateEnergyBalls src/Dodge/Update.hs 598;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f updateExpBarrel src/Dodge/Barreloid.hs 20;" f @@ -6227,7 +6230,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 357;" f updateGusts src/Dodge/Update.hs 718;" f -updateHeldRootItem src/Dodge/Creature/State.hs 259;" f +updateHeldRootItem src/Dodge/Creature/State.hs 255;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 502;" f updateIMl' src/Dodge/Update.hs 507;" f @@ -6235,8 +6238,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 375;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 285;" f +updateItemTargeting src/Dodge/Creature/State.hs 371;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 281;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6252,7 +6255,7 @@ updateMouseContextGame src/Dodge/Update.hs 328;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 95;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 85;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 158;" f -updateMovement src/Dodge/Creature/State.hs 427;" f +updateMovement src/Dodge/Creature/State.hs 423;" f updateObjCatMaybes src/Dodge/Update.hs 524;" f updateObjMapMaybe src/Dodge/Update.hs 517;" f updatePastWorlds src/Dodge/Update.hs 422;" f @@ -6279,7 +6282,7 @@ updateShockwaves src/Dodge/Update.hs 592;" f updateSingleNodes src/TreeHelp.hs 97;" f updateSound src/Sound.hs 72;" f updateSounds src/Sound.hs 67;" f -updateSpark src/Dodge/Spark.hs 17;" f +updateSpark src/Dodge/Spark.hs 18;" f updateSparks src/Dodge/Update.hs 604;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f @@ -6320,7 +6323,7 @@ upperPrismPolyTS src/Shape.hs 119;" f upperRounded src/Shape.hs 184;" f useBreakL src/Dodge/Item/Grammar.hs 37;" f useBreakListsLinkTest src/Dodge/Item/Grammar.hs 45;" f -useBulletPayload src/Dodge/Bullet.hs 111;" f +useBulletPayload src/Dodge/Bullet.hs 112;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useDelay src/Dodge/Item/UseDelay.hs 13;" f