diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 616a3a289..a16f24710 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -24,14 +24,6 @@ updateBullet w bu -- have to be slightly carefull not to accelerate bullets using magnets | otherwise = second (Just . updateBulVel) . hitEffFromBul w $ applyMagnetsToBul bu w -buDamages :: Bullet -> [Damage] -buDamages bu = case _buPayload bu of - BulBall {} -> [] - BulPlain x -> [Damage PIERCING x 0 0 0] - BulFlak -> [] - BulFrag -> [] - BulGas -> [] - -- do we want this to drain energy from the deflection source? applyMagnetsToBul :: Bullet -> World -> Bullet applyMagnetsToBul bu = foldl' doMagnetBuBu bu . _oldMagnets . _lWorld . _cWorld @@ -172,8 +164,11 @@ hitEffFromBul w bu = case _buEffect bu of hitstream = thingsHit sp (sp + _buVel bu) w setFromToDams :: Bullet -> Point2 -> [Damage] -setFromToDams bu p = map f (buDamages bu) +setFromToDams bu p = case _bu of + BullPlain x -> [Piercing x p v] + _ -> [] where + v = _buVel bu f = (dmFrom .~ _buPos bu) . (dmAt .~ p) . (dmTo .~ _buPos bu +.+ _buVel bu) damageThingHit :: Bullet -> (Point2, Either Creature Wall) -> World -> World diff --git a/src/Dodge/Creature/Action/Blink.hs b/src/Dodge/Creature/Action/Blink.hs index 1120e9171..62a493543 100644 --- a/src/Dodge/Creature/Action/Blink.hs +++ b/src/Dodge/Creature/Action/Blink.hs @@ -68,7 +68,7 @@ unsafeBlinkAction cr w w & blinkActionFail cr & cWorld . lWorld . creatures . ix cid . crState . csDamage - .:~ Damage ENTERREMENT 10000 mwp mwp mwp + .:~ Enterrement 100000000 where success = fromMaybe True $ do wl <- snd $ collidePointWallsFilter (const True) mwp cpos w diff --git a/src/Dodge/Creature/Damage.hs b/src/Dodge/Creature/Damage.hs index 0ab229aad..6b37f77b1 100644 --- a/src/Dodge/Creature/Damage.hs +++ b/src/Dodge/Creature/Damage.hs @@ -1,7 +1,8 @@ module Dodge.Creature.Damage (applyCreatureDamage) where -import Dodge.Creature.Material import Data.List +import Dodge.Creature.Mass +import Dodge.Creature.Material import Dodge.Creature.Test import Dodge.Data.World import Dodge.Spark @@ -49,14 +50,17 @@ applyIndividualDamage cr w dm = applyIndividualDamage' cr w dm applyIndividualDamage' :: Creature -> World -> Damage -> World applyIndividualDamage' cr w dm = case _dmType dm of - PIERCING -> applyPiercingDamage cr dm w + Piercing{} -> applyPiercingDamage cr dm w _ -> w & damageHP cr (_dmAmount dm) applyPiercingDamage :: Creature -> Damage -> World -> World applyPiercingDamage cr dm - | crIsArmouredFrom p cr = makeSpark NormalSpark p1 (argV (p1 -.- p)) - | otherwise = damageHP cr $ _dmAmount dm + | crIsArmouredFrom p cr = f . makeSpark NormalSpark p1 (argV (p1 -.- p)) + | otherwise = f . (damageHP cr $ _dmAmount dm) where + f = cWorld . lWorld . creatures . ix (_crID cr) . crPos -~ _dmVector dm + / V2 x x + x = crMass (_crType cr) p = _dmAt dm p1 = p +.+ 2 *.* squashNormalizeV (p -.- _crPos cr) diff --git a/src/Dodge/DamageCircle.hs b/src/Dodge/DamageCircle.hs deleted file mode 100644 index 9c93f0f2e..000000000 --- a/src/Dodge/DamageCircle.hs +++ /dev/null @@ -1,38 +0,0 @@ -module Dodge.DamageCircle ( - damageCircle, -) where - -import Data.Foldable -import Dodge.Data.World -import Dodge.WorldEvent.ThingsHit -import Geometry -import qualified IntMapHelp as IM -import LensHelp - -damageCircle :: Float -> Point2 -> DamageType -> Int -> World -> World -damageCircle r sp dt da w = - w - & cWorld . lWorld . wallDamages %~ addwalldamages - & cWorld . lWorld . creatures %~ addcreaturedamages - where - --addwalldamages wlds = runIdentity $ S.fold_ (damageWlCircle wldam) wlds id wlstodam - addwalldamages wlds = foldl' (damageWlCircle wldam) wlds wlstodam - wlstodam = wlsHitRadial sp r w - wldam p = Damage dt da sp p (sp +.+ r *.* normalizeV (p -.- sp)) - addcreaturedamages crs = foldl' (damageCrCircle crdam) crs crstodam - crdam p cr = Damage dt da sp p (_crPos cr) - crstodam = crsHitRadial sp r w - -damageWlCircle :: - (Point2 -> Damage) -> - IM.IntMap [Damage] -> - (Point2, Wall) -> - IM.IntMap [Damage] -damageWlCircle f wldams (p, wl) = IM.insertWith (++) (_wlID wl) [f p] wldams - -damageCrCircle :: - (Point2 -> Creature -> Damage) -> - IM.IntMap Creature -> - (Point2, Creature) -> - IM.IntMap Creature -damageCrCircle crdam crs (p, cr) = crs & ix (_crID cr) . crState . csDamage .:~ crdam p cr diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index efb65b1c0..b4aa81db5 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -8,6 +8,7 @@ module Dodge.Data.Bullet ( module Dodge.Data.Damage, ) where +import Dodge.Data.EnergyBall.Type import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -27,13 +28,6 @@ data Bullet = Bullet } deriving (Show, Eq, Ord, Read) --Generic, Flat) -data EnergyBallType - = IncBall - | TeslaBall - | ConcBall - | FlashBall - deriving (Show, Eq, Ord, Enum, Bounded, Read) --Generic, Flat) - data BulletEffect = DestroyBullet | BounceBullet @@ -64,7 +58,6 @@ data BulletTrajectoryType makeLenses ''Bullet makeLenses ''BulletPayload -deriveJSON defaultOptions ''EnergyBallType deriveJSON defaultOptions ''BulletEffect deriveJSON defaultOptions ''BulletPayload deriveJSON defaultOptions ''BulletTrajectory diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index e0f503f2e..250763ddf 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -9,22 +9,26 @@ creatures. -} module Dodge.Data.Damage ( module Dodge.Data.Damage, - module Dodge.Data.Damage.Type, ) where import Control.Lens import Data.Aeson import Data.Aeson.TH -import Dodge.Data.Damage.Type import Geometry.Data -data Damage = Damage - { _dmType :: DamageType - , _dmAmount :: Int - , _dmFrom :: Point2 - , _dmAt :: Point2 - , _dmTo :: Point2 - } +data Damage + = Piercing {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} + | Blunt {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} + | Sparking {_dmAmount :: Int} + | Crushing {_dmAmount :: Int} + | Shattering {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} + | Flaming {_dmAmount :: Int} + | Lasering {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} + | Flashing {_dmAmount :: Int, _dmPos :: Point2} + | Electrical {_dmAmount :: Int} + | Explosive {_dmAmount :: Int, _dmCenter :: Point2} + | Poison {_dmAmount :: Int} + | Enterrement {_dmAmount :: Int} deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Damage diff --git a/src/Dodge/Data/Damage/Type.hs b/src/Dodge/Data/Damage/Type.hs deleted file mode 100644 index 7bc36f229..000000000 --- a/src/Dodge/Data/Damage/Type.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} - -module Dodge.Data.Damage.Type where - -import Data.Aeson -import Data.Aeson.TH - -data DamageType - = PIERCING - | BLUNT - | CUTTING - | SPARKING - | CRUSHING - | SHATTERING - | FLAMING - | LASERING - | ELECTRICAL - | EXPLOSIVE - | CONCUSSIVE - | POISONDAM - | ENTERREMENT - deriving (Eq, Ord, Show, Enum, Bounded, Read) --Generic, Flat) - -deriveJSON defaultOptions ''DamageType -instance ToJSONKey DamageType - -instance FromJSONKey DamageType - diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index f5e2b892b..17bd591dd 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -1,24 +1,27 @@ -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} -module Dodge.Data.EnergyBall where +module Dodge.Data.EnergyBall ( + module Dodge.Data.EnergyBall, + module Dodge.Data.EnergyBall.Type, +) where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH -import Dodge.Data.Damage.Type +import Dodge.Data.EnergyBall.Type import Geometry.Data data EnergyBall = EnergyBall { _ebVel :: Point2 - , _ebColor :: Color - , _ebPos :: Point2 - , _ebWidth :: Float - , _ebTimer :: Int - , _ebEff :: (DamageType, Int) + , -- , _ebColor :: Color + _ebPos :: Point2 + , -- , _ebWidth :: Float + _ebTimer :: Int + , _ebEff :: EnergyBallType , _ebRot :: Float } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index 728951553..71836d21b 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE LambdaCase #-} module Dodge.EnergyBall ( updateEnergyBall , incBallAt @@ -5,9 +6,11 @@ module Dodge.EnergyBall , makeFlamelet ) where +import Data.List (foldl') +import Dodge.WorldEvent.ThingsHit +import qualified Data.IntMap.Strict as IM import Dodge.Base.Collide import Data.Maybe -import Dodge.DamageCircle import Dodge.Data.World import Geometry import LensHelp @@ -19,24 +22,19 @@ makeFlamelet :: Point2 -> -- | Velocity Point2 -> - -- | Size - Float -> -- | Timer Int -> World -> World -makeFlamelet (V2 x y) vel size time w = +makeFlamelet (V2 x y) vel time w = w & randGen .~ g & cWorld . lWorld . energyBalls .:~ EnergyBall { _ebVel = vel - , _ebColor = red , _ebPos = V2 x y - , _ebWidth = size , _ebTimer = time - , _ebEff = (FLAMING, 1) --- , _ebZ = z + , _ebEff = FlameletBall , _ebRot = rot } where @@ -46,8 +44,7 @@ updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb | _ebTimer eb <= 0 = (w, Nothing) | otherwise = - ( ebFlicker eb $ uncurry (damageCircle 5 (_ebPos eb)) (_ebEff eb) w --- , Just $ eb & ebTimer -~ 1 & ebPos .+.+~ _ebVel eb & ebVel .*.*~ 0.9 + ( ebFlicker eb $ damageCircle (_ebPos eb) (_ebEff eb) w , Just $ eb & ebTimer -~ 1 & ebPos .~ bp & ebVel .~ 0.85 * bv ) where @@ -66,12 +63,9 @@ incBallAt p w = return EnergyBall { _ebVel = 0 - , _ebColor = red , _ebPos = p - , _ebWidth = 3 , _ebTimer = 20 - , _ebEff = (FLAMING, 1) --- , _ebZ = 20 + , _ebEff = FlamingBall , _ebRot = rot } @@ -86,12 +80,9 @@ makeFlashBall p w = return EnergyBall { _ebVel = 0 - , _ebColor = yellow , _ebPos = p - , _ebWidth = 3 , _ebTimer = 20 - , _ebEff = (LASERING, 1) --- , _ebZ = 20 + , _ebEff = FlashBall , _ebRot = rot } @@ -99,5 +90,49 @@ ebFlicker :: EnergyBall -> World -> World ebFlicker pt | _ebTimer pt `mod` 7 == 0 = cWorld . lWorld . lights - .:~ LSParam (addZ 20 $ _ebPos pt) 70 (0.5 *.*.* xyzV4 (_ebColor pt)) + .:~ LSParam (addZ 20 $ _ebPos pt) 70 (0.5 *.*.* xyzV4 (ebColor pt)) | otherwise = id + +ebColor :: EnergyBall -> Color +ebColor eb = case eb ^. ebEff of + FlamingBall -> red + FlameletBall -> red + ElectricalBall -> cyan + ExplosiveBall -> yellow + FlashBall -> white + +damageCircle :: Point2 -> EnergyBallType -> World -> World +damageCircle sp dt w = + w + & cWorld . lWorld . wallDamages %~ addwalldamages + & cWorld . lWorld . creatures %~ addcreaturedamages + where + r = 5 + addwalldamages wlds = foldl' (damageWlCircle wldam) wlds wlstodam + wlstodam = wlsHitRadial sp r w + wldam p = ebtToDamage p dt + addcreaturedamages crs = foldl' (damageCrCircle crdam) crs crstodam + crdam p cr = ebtToDamage sp dt + crstodam = crsHitRadial sp r w + +ebtToDamage :: Point2 -> EnergyBallType -> Damage +ebtToDamage p = \case + FlamingBall -> Flaming 10 + FlameletBall -> Flaming 1 + ElectricalBall -> Electrical 10 + ExplosiveBall -> Explosive 10 p + FlashBall -> Flashing 10 p + +damageWlCircle :: + (Point2 -> Damage) -> + IM.IntMap [Damage] -> + (Point2, Wall) -> + IM.IntMap [Damage] +damageWlCircle f wldams (p, wl) = IM.insertWith (++) (_wlID wl) [f p] wldams + +damageCrCircle :: + (Point2 -> Creature -> Damage) -> + IM.IntMap Creature -> + (Point2, Creature) -> + IM.IntMap Creature +damageCrCircle crdam crs (p, cr) = crs & ix (_crID cr) . crState . csDamage .:~ crdam p cr diff --git a/tags b/tags index dcf684319..dcc5aee58 100644 --- a/tags +++ b/tags @@ -129,7 +129,7 @@ BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 179;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 165;" C BLUE src/Color/Data.hs 17;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 148;" C -BLUNT src/Dodge/Data/Damage/Type.hs 13;" C +BLUNT src/Dodge/Data/Damage/Type.hs 14;" C BQuad src/Geometry/Bezier.hs 9;" t BRAINHAT src/Dodge/Data/Item/Combine.hs 125;" C BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 133;" C @@ -153,8 +153,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 52;" C -BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 59;" C +BasicBulletTrajectory src/Dodge/Data/Bullet.hs 46;" C +BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 53;" 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 @@ -170,8 +170,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 53;" C -BezierTrajectoryType src/Dodge/Data/Bullet.hs 60;" C +BezierTrajectory src/Dodge/Data/Bullet.hs 47;" C +BezierTrajectoryType src/Dodge/Data/Bullet.hs 54;" C Bind src/Shader/Bind.hs 1;" m Biome src/Dodge/Data/Scenario.hs 71;" t BlBl src/Dodge/Data/BlBl.hs 11;" t @@ -202,12 +202,13 @@ BlockPart src/Dodge/Data/Wall/Structure.hs 16;" C BlockedLink src/Dodge/Data/Room.hs 48;" C BloomLayer src/Picture/Data.hs 25;" C BloomNoZWrite src/Picture/Data.hs 26;" C +Blunt src/Dodge/Data/Damage.hs 21;" C Boid src/Dodge/Creature/Boid.hs 1;" m 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 39;" C +BounceBullet src/Dodge/Data/Bullet.hs 33;" 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 +221,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 44;" C -BulFlak src/Dodge/Data/Bullet.hs 46;" C -BulFrag src/Dodge/Data/Bullet.hs 47;" C -BulGas src/Dodge/Data/Bullet.hs 48;" C -BulPlain src/Dodge/Data/Bullet.hs 45;" C -Bullet src/Dodge/Data/Bullet.hs 17;" t +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 +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 37;" t +BulletEffect src/Dodge/Data/Bullet.hs 31;" 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 43;" t -BulletTrajectory src/Dodge/Data/Bullet.hs 51;" t -BulletTrajectoryType src/Dodge/Data/Bullet.hs 58;" t +BulletPayload src/Dodge/Data/Bullet.hs 37;" t +BulletTrajectory src/Dodge/Data/Bullet.hs 45;" t +BulletTrajectoryType src/Dodge/Data/Bullet.hs 52;" 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 @@ -260,13 +261,13 @@ CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C CLICKER src/Dodge/Data/Item/Combine.hs 28;" C CME src/Dodge/Data/MuzzleEffect.hs 14;" C -CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C +CONCUSSIVE src/Dodge/Data/Damage/Type.hs 23;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 184;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 85;" C -CRUSHING src/Dodge/Data/Damage/Type.hs 16;" C -CUTTING src/Dodge/Data/Damage/Type.hs 14;" C +CRUSHING src/Dodge/Data/Damage/Type.hs 17;" C +CUTTING src/Dodge/Data/Damage/Type.hs 15;" C CWGen src/Dodge/Data/CWorld.hs 32;" t CWorld src/Dodge/Data/CWorld.hs 23;" t CWorld src/Dodge/Data/CWorld.hs 6;" m @@ -357,7 +358,6 @@ ComposedItem src/Dodge/Data/ComposedItem.hs 68;" t ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C -ConcBall src/Dodge/Data/Bullet.hs 33;" C Concurrent src/Dodge/Concurrent.hs 1;" m ConcurrentEffect src/Loop/Data.hs 6;" t ConcurrentEffect src/Loop/Data.hs 11;" C @@ -440,6 +440,7 @@ CreaturePart src/Dodge/Data/Wall/Structure.hs 17;" C CreatureShape src/Dodge/Data/Creature/Misc.hs 76;" t CreatureState src/Dodge/Data/Creature/State.hs 16;" t CreatureType src/Dodge/Data/Creature/Misc.hs 60;" t +Crushing src/Dodge/Data/Damage.hs 23;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 33;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C Crystal src/Dodge/Data/Material.hs 11;" C @@ -460,7 +461,7 @@ DTMidAboveNode src/Dodge/Data/DoubleTree.hs 18;" C DTMidBelowNode src/Dodge/Data/DoubleTree.hs 19;" C DTRootNode src/Dodge/Data/DoubleTree.hs 16;" C DTTopNode src/Dodge/Data/DoubleTree.hs 17;" C -Damage src/Dodge/Data/Damage.hs 32;" t +Damage src/Dodge/Data/Damage.hs 19;" t Damage src/Dodge/Creature/Damage.hs 1;" m Damage src/Dodge/Damage.hs 2;" m Damage src/Dodge/Data/Damage.hs 10;" m @@ -469,11 +470,10 @@ Damage src/Dodge/Material/Damage.hs 1;" m Damage src/Dodge/Wall/Damage.hs 4;" m Damage src/Dodge/WorldEvent/Damage.hs 1;" m DamageCircle src/Dodge/DamageCircle.hs 1;" m -DamageEffect src/Dodge/Data/Damage.hs 21;" t DamageEffect src/Dodge/Wall/DamageEffect.hs 1;" m DamageLaser src/Dodge/Data/Laser.hs 17;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 20;" C -DamageType src/Dodge/Data/Damage/Type.hs 11;" t +DamageType src/Dodge/Data/Damage/Type.hs 12;" t Data src/Color/Data.hs 7;" m Data src/Dodge/Annotation/Data.hs 4;" m Data src/Dodge/Data.hs 4;" m @@ -512,7 +512,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 38;" C +DestroyBullet src/Dodge/Data/Bullet.hs 32;" 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 @@ -599,13 +599,13 @@ Dust src/Dodge/Wall/Dust.hs 1;" m EBO src/Shader/Data.hs 88;" t EDoNothing src/Dodge/Data/Item/HeldUse.hs 20;" C EHeadLamp src/Dodge/Data/Item/HeldUse.hs 23;" C -ELECTRICAL src/Dodge/Data/Damage/Type.hs 20;" C +ELECTRICAL src/Dodge/Data/Damage/Type.hs 21;" C ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 157;" C EMagShield src/Dodge/Data/Item/HeldUse.hs 21;" C -ENTERREMENT src/Dodge/Data/Damage/Type.hs 24;" C +ENTERREMENT src/Dodge/Data/Damage/Type.hs 25;" C EQUIP src/Dodge/Data/Item/Combine.hs 18;" C EWristShield src/Dodge/Data/Item/HeldUse.hs 22;" C -EXPLOSIVE src/Dodge/Data/Damage/Type.hs 21;" C +EXPLOSIVE src/Dodge/Data/Damage/Type.hs 22;" C EXPLOSIVES src/Dodge/Data/Item/Combine.hs 116;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C @@ -619,18 +619,21 @@ EffectWhileRoot src/Dodge/Data/Item/Effect.hs 28;" C EighthRes src/Dodge/Data/Config.hs 97;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C -ElectricSpark src/Dodge/Data/Spark.hs 25;" C +ElectricSpark src/Dodge/Data/Spark.hs 22;" C +Electrical src/Dodge/Data/Damage.hs 28;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C +ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 16;" 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 EncircleFlock src/Dodge/Data/Creature/State.hs 30;" C -EnergyBall src/Dodge/Data/EnergyBall.hs 15;" t +EnergyBall src/Dodge/Data/EnergyBall.hs 18;" t EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m -EnergyBall src/Dodge/EnergyBall.hs 1;" m -EnergyBallType src/Dodge/Data/Bullet.hs 30;" t +EnergyBall src/Dodge/EnergyBall.hs 2;" m +EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 13;" t EnergyGeneratorSS src/Dodge/Data/Scenario.hs 109;" C EngineSS src/Dodge/Data/Scenario.hs 88;" C +Enterrement src/Dodge/Data/Damage.hs 31;" C EoffWristShield src/Dodge/Data/Item/Use/Equipment.hs 30;" C EonWristShield src/Dodge/Data/Item/Use/Equipment.hs 29;" C EquipEffect src/Dodge/Data/Item/Use/Equipment.hs 16;" t @@ -657,6 +660,8 @@ Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 37;" C Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m ExplosionPayload src/Dodge/Data/Payload.hs 11;" C +Explosive src/Dodge/Data/Damage.hs 29;" C +ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 17;" C ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 13;" C ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" m @@ -668,7 +673,7 @@ FLAMESPITTER src/Dodge/Data/Item/Combine.hs 161;" C FLAMETHROWER src/Dodge/Data/Item/Combine.hs 162;" C FLAMETORRENT src/Dodge/Data/Item/Combine.hs 163;" C FLAMEWALL src/Dodge/Data/Item/Combine.hs 164;" C -FLAMING src/Dodge/Data/Damage/Type.hs 18;" C +FLAMING src/Dodge/Data/Damage/Type.hs 19;" C FLATSHIELD src/Dodge/Data/Item/Combine.hs 176;" C FRONTARMOUR src/Dodge/Data/Item/Combine.hs 122;" C FUELCELL src/Dodge/Data/Item/Combine.hs 87;" C @@ -678,7 +683,7 @@ Faction src/Dodge/Data/Creature/State.hs 27;" t Factory src/Dodge/Data/Scenario.hs 56;" C FailedResource src/Dodge/Data/Scenario.hs 37;" t FetchItem src/Dodge/Data/Scenario.hs 11;" C -FireSpark src/Dodge/Data/Spark.hs 25;" C +FireSpark src/Dodge/Data/Spark.hs 22;" C Fixated src/Dodge/Data/Creature/Perception.hs 62;" C FixedCoordLayer src/Picture/Data.hs 28;" C FixedRate src/Dodge/Data/Item/HeldDelay.hs 15;" C @@ -690,15 +695,19 @@ Flame src/Dodge/Data/Flame.hs 6;" m Flame src/Dodge/Flame.hs 1;" m FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C FlameSound src/Dodge/Data/SoundOrigin.hs 27;" C +FlameletBall src/Dodge/Data/EnergyBall/Type.hs 15;" C Flamer src/Dodge/Data/SoundOrigin.hs 25;" C FlamerSmokeCloud src/Dodge/Data/Cloud.hs 31;" C +Flaming src/Dodge/Data/Damage.hs 25;" C +FlamingBall src/Dodge/Data/EnergyBall/Type.hs 14;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C FlareType src/Dodge/Data/Muzzle.hs 21;" t -FlashBall src/Dodge/Data/Bullet.hs 34;" C +FlashBall src/Dodge/Data/EnergyBall/Type.hs 18;" 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 54;" C -FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 61;" C +FlechetteTrajectory src/Dodge/Data/Bullet.hs 48;" C +FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 55;" 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 @@ -898,7 +907,6 @@ InVoid src/Dodge/Data/Item/Location.hs 39;" C Inanimate src/Dodge/Data/ActionPlan.hs 17;" C Inanimate src/Dodge/Creature/Inanimate.hs 5;" m InanimateAI src/Dodge/Data/Creature/Misc.hs 41;" C -IncBall src/Dodge/Data/Bullet.hs 31;" C Info src/Dodge/Creature/Info.hs 1;" m Info src/Dodge/Item/Info.hs 3;" m InfoBox src/Dodge/Render/InfoBox.hs 1;" m @@ -991,7 +999,7 @@ Justify src/Justify.hs 1;" m KEYCARD src/Dodge/Data/Item/Combine.hs 177;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C LASER src/Dodge/Data/Item/Combine.hs 168;" C -LASERING src/Dodge/Data/Damage/Type.hs 19;" C +LASERING src/Dodge/Data/Damage/Type.hs 20;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C LDTComb src/Dodge/Item/Grammar.hs 239;" t @@ -1030,6 +1038,7 @@ Laser src/Dodge/Data/Laser.hs 6;" m LaserPath src/Dodge/Item/Weapon/LaserPath.hs 1;" m LaserSensor src/Dodge/Data/Machine/Sensor/Type.hs 11;" C LaserType src/Dodge/Data/Laser.hs 16;" t +Lasering src/Dodge/Data/Damage.hs 26;" C Launcher src/Dodge/Item/Held/Launcher.hs 1;" m LauncherAI src/Dodge/Data/Creature/Misc.hs 45;" C LauncherAmmo src/Dodge/Data/AmmoType.hs 6;" C @@ -1139,8 +1148,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 55;" C -MagnetTrajectoryType src/Dodge/Data/Bullet.hs 62;" C +MagnetTrajectory src/Dodge/Data/Bullet.hs 49;" C +MagnetTrajectoryType src/Dodge/Data/Bullet.hs 56;" C MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m @@ -1281,7 +1290,6 @@ NoConcurrentEffect src/Loop/Data.hs 7;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 24;" C NoCrWdImp src/Dodge/Data/CreatureEffect.hs 14;" C NoCreatureEffect src/Dodge/Data/CreatureEffect.hs 11;" C -NoDamageEffect src/Dodge/Data/Damage.hs 29;" C NoDebugInfo src/Dodge/Data/Universe.hs 58;" C NoDelay src/Dodge/Data/Item/HeldDelay.hs 14;" C NoDelay src/Dodge/Data/UseDelay.hs 12;" C @@ -1318,7 +1326,7 @@ NodeTree src/Dodge/Data/MetaTree.hs 13;" C NodeTree src/Dodge/Tree/Compose/Data.hs 9;" C NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 84;" C NormalOptions src/Dodge/Data/Universe.hs 72;" C -NormalSpark src/Dodge/Data/Spark.hs 25;" C +NormalSpark src/Dodge/Data/Spark.hs 22;" C NormalTimeFlow src/Dodge/Data/World.hs 60;" C North src/Dodge/Data/CardinalPoint.hs 4;" C North8 src/Dodge/Data/CardinalPoint.hs 11;" C @@ -1410,14 +1418,13 @@ P2Ac src/Dodge/Data/CreatureEffect.hs 53;" t P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C -PIERCING src/Dodge/Data/Damage/Type.hs 12;" C PIPE src/Dodge/Data/Item/Combine.hs 50;" C PISTOL src/Dodge/Data/Item/Combine.hs 143;" C PJStabiliser src/Dodge/Projectile/Create.hs 18;" t PLANK src/Dodge/Data/Item/Combine.hs 59;" C PLATE src/Dodge/Data/Item/Combine.hs 69;" C PLUS src/Dodge/Data/GenParams.hs 20;" C -POISONDAM src/Dodge/Data/Damage/Type.hs 23;" C +POISONDAM src/Dodge/Data/Damage/Type.hs 24;" C POISONSPRAYER src/Dodge/Data/Item/Combine.hs 173;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 88;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 128;" C @@ -1451,7 +1458,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 40;" C +PenetrateBullet src/Dodge/Data/Bullet.hs 34;" 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 @@ -1463,6 +1470,8 @@ Picture src/Dodge/Debug/Picture.hs 2;" m Picture src/Dodge/Picture.hs 4;" m Picture src/Dodge/Render/Picture.hs 1;" m Picture src/Picture.hs 3;" m +Piercing src/Dodge/Data/Damage.hs 20;" C +Piercing src/Dodge/Data/Damage/Type.hs 13;" C Pillar src/Dodge/Room/Pillar.hs 1;" m Pipe src/Dodge/Placement/Instance/Pipe.hs 1;" m PistolAI src/Dodge/Data/Creature/Misc.hs 43;" C @@ -1483,6 +1492,7 @@ Playing src/Sound/Data.hs 25;" C Point2 src/Geometry/Data.hs 19;" t Point3 src/Geometry/Data.hs 25;" t Point4 src/Geometry/Data.hs 29;" t +Poison src/Dodge/Data/Damage.hs 30;" C Poke src/Shader/Poke.hs 1;" m PolyShad src/Picture/Data.hs 36;" C Polygon src/Geometry/Polygon.hs 3;" m @@ -1552,8 +1562,6 @@ ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 36;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 27;" C Pulse src/Dodge/Data/Creature/Misc.hs 54;" t PulseStatus src/Dodge/Data/Creature/Misc.hs 54;" C -PushBackDamage src/Dodge/Data/Damage.hs 28;" C -PushDamage src/Dodge/Data/Damage.hs 22;" C PushPop src/Dodge/Menu/PushPop.hs 1;" m PushSource src/Dodge/Data/Door.hs 27;" t PushedBy src/Dodge/Data/Door.hs 29;" C @@ -1693,7 +1701,7 @@ RunningSideEffect src/Dodge/Data/Universe.hs 69;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C SFLink src/Dodge/Data/ComposedItem.hs 35;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C -SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C +SHATTERING src/Dodge/Data/Damage/Type.hs 18;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C SMG src/Dodge/Data/Item/Combine.hs 146;" C @@ -1701,7 +1709,7 @@ SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 100;" C SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 160;" C SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 81;" C SPARKGUN src/Dodge/Data/Item/Combine.hs 166;" C -SPARKING src/Dodge/Data/Damage/Type.hs 15;" C +SPARKING src/Dodge/Data/Damage/Type.hs 16;" C SPEEDLEGS src/Dodge/Data/Item/Combine.hs 129;" C SPRING src/Dodge/Data/Item/Combine.hs 53;" C SPic src/ShapePicture/Data.hs 7;" t @@ -1777,6 +1785,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 +Shattering src/Dodge/Data/Damage.hs 24;" C Shell src/Dodge/Data/Projectile.hs 17;" C ShellSound src/Dodge/Data/SoundOrigin.hs 26;" C ShieldGroup src/Dodge/Data/Creature/State.hs 45;" C @@ -1846,11 +1855,12 @@ SpaceColoniser src/Dodge/Data/Scenario.hs 59;" C SpacePort src/Dodge/Data/Scenario.hs 58;" C SpaceTransport src/Dodge/Data/Scenario.hs 57;" C SpaceshipRoom src/Dodge/Data/Scenario.hs 87;" t -Spark src/Dodge/Data/Spark.hs 15;" t +Spark src/Dodge/Data/Spark.hs 14;" t Spark src/Dodge/Data/Spark.hs 6;" m Spark src/Dodge/Spark.hs 1;" m SparkSpawner src/Dodge/Data/PosEvent.hs 13;" C -SparkType src/Dodge/Data/Spark.hs 25;" t +SparkType src/Dodge/Data/Spark.hs 22;" t +Sparking src/Dodge/Data/Damage.hs 22;" C Spatial src/Dodge/Data/Scenario.hs 73;" C SpatialInfluence src/Dodge/Data/Scenario.hs 81;" t Spawn src/Dodge/Item/Weapon/Spawn.hs 1;" m @@ -1977,7 +1987,6 @@ TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t Tesla src/Dodge/Tesla.hs 1;" m TeslaArc src/Dodge/Data/TeslaArc.hs 17;" t TeslaArc src/Dodge/Data/TeslaArc.hs 6;" m -TeslaBall src/Dodge/Data/Bullet.hs 32;" C TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" C TeslaGunFlare src/Dodge/Data/Muzzle.hs 28;" C Test src/Dodge/Creature/Test.hs 8;" m @@ -2026,7 +2035,6 @@ TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C TopLDT src/Dodge/Data/DoubleTree.hs 49;" C TorpedoBaySS src/Dodge/Data/Scenario.hs 99;" C TorqueCr src/Dodge/Data/WorldEffect.hs 30;" C -TorqueDamage src/Dodge/Data/Damage.hs 27;" C TractorBeam src/Dodge/Data/TractorBeam.hs 13;" t TractorBeam src/Dodge/Data/TractorBeam.hs 6;" m TrainingCamp src/Dodge/Data/Scenario.hs 63;" C @@ -2059,6 +2067,7 @@ TwoHandFlat src/Dodge/Data/AimStance.hs 9;" C TwoHandOver src/Dodge/Data/AimStance.hs 8;" C TwoHandUnder src/Dodge/Data/AimStance.hs 7;" C Type src/Dodge/Data/Damage/Type.hs 6;" m +Type src/Dodge/Data/EnergyBall/Type.hs 6;" m Type src/Dodge/Data/Machine/Sensor/Type.hs 5;" m Type src/Dodge/Terminal/Type.hs 1;" m Typical src/Shape/Data.hs 36;" C @@ -2337,13 +2346,13 @@ _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 -_buDrag src/Dodge/Data/Bullet.hs 22;" f -_buEffect src/Dodge/Data/Bullet.hs 18;" f -_buOldPos src/Dodge/Data/Bullet.hs 24;" f -_buPayload src/Dodge/Data/Bullet.hs 19;" f -_buPos src/Dodge/Data/Bullet.hs 23;" f -_buVel src/Dodge/Data/Bullet.hs 21;" f -_buWidth src/Dodge/Data/Bullet.hs 25;" 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 +_buPayload src/Dodge/Data/Bullet.hs 20;" f +_buPos src/Dodge/Data/Bullet.hs 24;" f +_buVel src/Dodge/Data/Bullet.hs 22;" f +_buWidth src/Dodge/Data/Bullet.hs 26;" f _bullets src/Dodge/Data/LWorld.hs 107;" f _buttons src/Dodge/Data/LWorld.hs 136;" f _cClock src/Dodge/Data/CWorld.hs 26;" f @@ -2465,11 +2474,6 @@ _cwgRoomClipping src/Dodge/Data/CWorld.hs 36;" f _cwgSeed src/Dodge/Data/CWorld.hs 37;" f _cwgWorldBounds src/Dodge/Data/CWorld.hs 34;" f _cylinderSize src/Shape/Data.hs 19;" f -_dePush src/Dodge/Data/Damage.hs 23;" f -_dePushBack src/Dodge/Data/Damage.hs 28;" f -_dePushExp src/Dodge/Data/Damage.hs 24;" f -_dePushRadius src/Dodge/Data/Damage.hs 25;" f -_deTorque src/Dodge/Data/Damage.hs 27;" f _deathDelay src/Dodge/Data/World.hs 59;" f _debugInfo src/Dodge/Data/Universe.hs 54;" f _debugInt src/Dodge/Data/Universe.hs 62;" f @@ -2489,12 +2493,18 @@ _dimAttachPos src/Dodge/Data/Item/Misc.hs 16;" f _dimCenter src/Dodge/Data/Item/Misc.hs 15;" f _dimRad src/Dodge/Data/Item/Misc.hs 14;" f _distortions src/Dodge/Data/LWorld.hs 143;" f -_dmAmount src/Dodge/Data/Damage.hs 34;" f -_dmAt src/Dodge/Data/Damage.hs 36;" f -_dmEffect src/Dodge/Data/Damage.hs 38;" f -_dmFrom src/Dodge/Data/Damage.hs 35;" f -_dmTo src/Dodge/Data/Damage.hs 37;" f -_dmType src/Dodge/Data/Damage.hs 33;" f +_dmAmount src/Dodge/Data/Damage.hs 20;" f +_dmAmount src/Dodge/Data/Damage.hs 23;" f +_dmAmount src/Dodge/Data/Damage.hs 26;" f +_dmAmount src/Dodge/Data/Damage.hs 29;" f +_dmCenter src/Dodge/Data/Damage.hs 29;" f +_dmPos src/Dodge/Data/Damage.hs 20;" f +_dmPos src/Dodge/Data/Damage.hs 24;" f +_dmPos src/Dodge/Data/Damage.hs 27;" f +_dmPos src/Dodge/Data/Damage/Type.hs 13;" f +_dmVector src/Dodge/Data/Damage.hs 20;" f +_dmVector src/Dodge/Data/Damage.hs 24;" f +_dmVector src/Dodge/Data/Damage/Type.hs 13;" f _doActionIfAction src/Dodge/Data/ActionPlan.hs 118;" f _doActionIfCondition src/Dodge/Data/ActionPlan.hs 117;" f _doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 122;" f @@ -2536,13 +2546,11 @@ _drWallIDs src/Dodge/Data/Door.hs 36;" f _dtLeft src/Dodge/Data/DoubleTree.hs 30;" f _dtRight src/Dodge/Data/DoubleTree.hs 30;" f _dtValue src/Dodge/Data/DoubleTree.hs 30;" f -_ebColor src/Dodge/Data/EnergyBall.hs 17;" f -_ebEff src/Dodge/Data/EnergyBall.hs 21;" f -_ebPos src/Dodge/Data/EnergyBall.hs 18;" f -_ebRot src/Dodge/Data/EnergyBall.hs 22;" f -_ebTimer src/Dodge/Data/EnergyBall.hs 20;" f -_ebVel src/Dodge/Data/EnergyBall.hs 16;" f -_ebWidth src/Dodge/Data/EnergyBall.hs 19;" f +_ebEff src/Dodge/Data/EnergyBall.hs 24;" f +_ebPos src/Dodge/Data/EnergyBall.hs 21;" f +_ebRot src/Dodge/Data/EnergyBall.hs 25;" f +_ebTimer src/Dodge/Data/EnergyBall.hs 23;" f +_ebVel src/Dodge/Data/EnergyBall.hs 19;" f _eboName src/Shader/Data.hs 89;" f _eboPtr src/Shader/Data.hs 90;" f _eeUse src/Dodge/Data/Item/Use/Equipment.hs 17;" f @@ -3077,10 +3085,10 @@ _siWidth src/Dodge/Data/SelectionList.hs 56;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f -_skOldPos src/Dodge/Data/Spark.hs 19;" f -_skPos src/Dodge/Data/Spark.hs 18;" f -_skType src/Dodge/Data/Spark.hs 21;" f -_skVel src/Dodge/Data/Spark.hs 16;" f +_skOldPos src/Dodge/Data/Spark.hs 17;" f +_skPos src/Dodge/Data/Spark.hs 16;" f +_skType src/Dodge/Data/Spark.hs 18;" f +_skVel src/Dodge/Data/Spark.hs 15;" f _skinHead src/Dodge/Data/Creature/Misc.hs 78;" f _skinLower src/Dodge/Data/Creature/Misc.hs 80;" f _skinUpper src/Dodge/Data/Creature/Misc.hs 79;" f @@ -3098,9 +3106,9 @@ _soundVolumeFraction src/Sound/Data.hs 52;" f _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 -_sparkDam src/Dodge/Data/Bullet.hs 45;" f +_sparkDam src/Dodge/Data/Bullet.hs 39;" f _sparks src/Dodge/Data/LWorld.hs 112;" f -_spawnEBT src/Dodge/Data/Bullet.hs 44;" f +_spawnEBT src/Dodge/Data/Bullet.hs 38;" 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 @@ -3396,17 +3404,15 @@ annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 247;" f applyCME src/Dodge/HeldUse.hs 366;" f -applyCreatureDamage src/Dodge/Creature/Damage.hs 16;" f -applyDamageEffect src/Dodge/Creature/Damage.hs 33;" f +applyCreatureDamage src/Dodge/Creature/Damage.hs 12;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f -applyIndividualDamage src/Dodge/Creature/Damage.hs 51;" f -applyIndividualDamage' src/Dodge/Creature/Damage.hs 54;" f +applyIndividualDamage src/Dodge/Creature/Damage.hs 47;" f +applyIndividualDamage' src/Dodge/Creature/Damage.hs 51;" f applyInvLock src/Dodge/HeldUse.hs 425;" f -applyMagnetsToBul src/Dodge/Bullet.hs 36;" f -applyNoDamage src/Dodge/Creature/Damage.hs 13;" f +applyMagnetsToBul src/Dodge/Bullet.hs 28;" f applyPastDamages src/Dodge/Creature/State.hs 144;" f -applyPiercingDamage src/Dodge/Creature/Damage.hs 59;" f +applyPiercingDamage src/Dodge/Creature/Damage.hs 56;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 457;" f applyResFactor src/Dodge/Data/Config.hs 110;" f @@ -3544,7 +3550,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 114;" f +bounceDir src/Dodge/Bullet.hs 106;" f bouncePoint src/Dodge/Base/Collide.hs 88;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f @@ -3560,7 +3566,6 @@ branchWith src/Dodge/Room/Room.hs 67;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f btSPic src/Dodge/Render/ShapePicture.hs 114;" f -buDamages src/Dodge/Bullet.hs 27;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f @@ -3609,7 +3614,7 @@ 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 -checkEndGame src/Dodge/Update.hs 713;" f +checkEndGame src/Dodge/Update.hs 712;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f @@ -3638,7 +3643,7 @@ circle src/Picture/Base.hs 180;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f -clClSpringVel src/Dodge/Update.hs 767;" f +clClSpringVel src/Dodge/Update.hs 766;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 166;" f @@ -3664,7 +3669,7 @@ closestCreatureID src/Dodge/Debug.hs 116;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f closestPointOnLineParam src/Geometry/Intersect.hs 267;" f closestPointOnSeg src/Geometry/Intersect.hs 282;" f -cloudEffect src/Dodge/Update.hs 734;" f +cloudEffect src/Dodge/Update.hs 733;" f cloudPoisonDamage src/Dodge/Update/Cloud.hs 10;" f clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f @@ -3737,7 +3742,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 81;" f crBlips src/Dodge/RadarSweep.hs 87;" f crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f -crCrSpring src/Dodge/Update.hs 785;" f +crCrSpring src/Dodge/Update.hs 784;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 57;" f crDexterity src/Dodge/Creature/Statistics.hs 14;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 38;" f @@ -3765,7 +3770,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f crSetRoots src/Dodge/Inventory/Location.hs 48;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 780;" f +crSpring src/Dodge/Update.hs 779;" 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 @@ -3778,7 +3783,7 @@ craftInfo src/Dodge/Item/Info.hs 168;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f createArc src/Dodge/Tesla/Arc.hs 81;" f -createBarrelSpark src/Dodge/Spark.hs 52;" f +createBarrelSpark src/Dodge/Spark.hs 50;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f @@ -3812,7 +3817,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 38;" f crsNearSeg src/Dodge/Zoning/Creature.hs 21;" f crystalDebris src/Dodge/Block/Debris.hs 176;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f -crystalWallDamage src/Dodge/Wall/DamageEffect.hs 79;" f +crystalWallDamage src/Dodge/Wall/DamageEffect.hs 75;" f cubeShape src/Dodge/Block/Debris.hs 196;" f cullPoint src/Dodge/Render/ShapePicture.hs 76;" f cullPretty src/AesonHelp.hs 14;" f @@ -3839,11 +3844,13 @@ cylinderPoly src/Shape.hs 86;" f cylinderRoundIndices src/Shader/Poke.hs 389;" f dShadCol src/Dodge/Render/List.hs 215;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f -damToExpBarrel src/Dodge/Barreloid.hs 57;" f +damToExpBarrel src/Dodge/Barreloid.hs 55;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f damageCircle src/Dodge/DamageCircle.hs 12;" f +damageCircle src/Dodge/EnergyBall.hs 102;" f damageCodeCommand src/Dodge/Terminal.hs 232;" f damageCrCircle src/Dodge/DamageCircle.hs 33;" f +damageCrCircle src/Dodge/EnergyBall.hs 132;" f damageCrWl src/Dodge/Damage.hs 23;" f damageCrWlID src/Dodge/Damage.hs 17;" f damageDirection src/Dodge/Damage.hs 27;" f @@ -3851,13 +3858,14 @@ damageHP src/Dodge/Creature/Damage.hs 67;" 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 179;" 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 11;" f damageWlCircle src/Dodge/DamageCircle.hs 26;" f +damageWlCircle src/Dodge/EnergyBall.hs 125;" f dampField src/Dodge/Magnet.hs 8;" f -damsToExpBarrel src/Dodge/Barreloid.hs 50;" f +damsToExpBarrel src/Dodge/Barreloid.hs 48;" f dark src/Color.hs 108;" f darkenBackground src/Dodge/Render/MenuScreen.hs 52;" f dbArg src/Dodge/Base.hs 165;" f @@ -3900,7 +3908,7 @@ defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 299;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f defaultAimingCrit src/Dodge/Default/Creature.hs 105;" f -defaultApplyDamage src/Dodge/Creature/Damage.hs 22;" f +defaultApplyDamage src/Dodge/Creature/Damage.hs 18;" f defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f defaultAudition src/Dodge/Default/Creature.hs 90;" f @@ -3993,7 +4001,7 @@ dim src/Color.hs 112;" f dirtColor src/Dodge/Block/Debris.hs 160;" f dirtDebris src/Dodge/Block/Debris.hs 154;" f dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f -dirtWallDamage src/Dodge/Wall/DamageEffect.hs 103;" f +dirtWallDamage src/Dodge/Wall/DamageEffect.hs 97;" f disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 496;" f disconnectTerminal src/Dodge/Terminal.hs 217;" f displayConfig src/Dodge/Menu.hs 213;" f @@ -4059,7 +4067,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 39;" f +doMagnetBuBu src/Dodge/Bullet.hs 31;" f doMagnetBuBu src/Dodge/MagnetBuBu.hs 7;" f doMagnetUpdate src/Dodge/Magnet/Update.hs 6;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -4211,7 +4219,7 @@ drawShaderLay src/Shader.hs 16;" f drawShadowsByImportance src/Dodge/Shadows.hs 8;" f drawShell src/Dodge/Projectile/Draw.hs 22;" f drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f -drawSpark src/Dodge/Spark/Draw.hs 6;" f +drawSpark src/Dodge/Spark/Draw.hs 7;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 16;" f drawSubInventory src/Dodge/Render/HUD.hs 161;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f @@ -4254,7 +4262,9 @@ 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 -ebFlicker src/Dodge/EnergyBall.hs 98;" f +ebColor src/Dodge/EnergyBall.hs 94;" f +ebFlicker src/Dodge/EnergyBall.hs 87;" f +ebtToDamage src/Dodge/EnergyBall.hs 117;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f edgeToPic src/Dodge/Debug/Picture.hs 431;" f effectOnEquip src/Dodge/Equipment.hs 32;" f @@ -4302,7 +4312,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 188;" f +expireAndDamage src/Dodge/Bullet.hs 183;" f expireAndDamageFL src/Dodge/Flame.hs 48;" f explodeShell src/Dodge/Projectile/Update.hs 245;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f @@ -4483,7 +4493,7 @@ glassShat3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 350;" f glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 464;" f glassSwitchBack src/Dodge/Room/Room.hs 70;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f -glassWallDamage src/Dodge/Wall/DamageEffect.hs 48;" f +glassWallDamage src/Dodge/Wall/DamageEffect.hs 46;" f glauncherPic src/Dodge/Item/Draw/SPic.hs 393;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f @@ -4573,7 +4583,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 157;" 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 @@ -4591,7 +4601,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 58;" f +incBallAt src/Dodge/EnergyBall.hs 53;" f incidenceToFunction src/Dodge/Graph.hs 26;" f indefiniteExceptions src/StringHelp.hs 29;" f initCrItemLocation src/Dodge/Item/Location/Initialize.hs 41;" f @@ -4684,7 +4694,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 717;" f 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/Data/Damage.hs 42;" f +isElectrical src/Dodge/Machine/Update.hs 80;" f isFrictionless src/Dodge/Creature/State.hs 438;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 191;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f @@ -4916,14 +4926,14 @@ makeDefaultCorpse src/Dodge/Corpse/Make.hs 16;" f makeDoorDebris src/Dodge/Block/Debris.hs 18;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f -makeFlak src/Dodge/Bullet.hs 146;" f +makeFlak src/Dodge/Bullet.hs 138;" f makeFlame src/Dodge/Flame.hs 132;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f -makeFlamelet src/Dodge/EnergyBall.hs 17;" f +makeFlamelet src/Dodge/EnergyBall.hs 18;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f -makeFlashBall src/Dodge/EnergyBall.hs 78;" f +makeFlashBall src/Dodge/EnergyBall.hs 70;" f makeFootstepSound src/Dodge/Creature/State/WalkCycle.hs 32;" f -makeFragBullets src/Dodge/Bullet.hs 130;" f +makeFragBullets src/Dodge/Bullet.hs 122;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 34;" f @@ -4942,7 +4952,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 55;" f +makeSpark src/Dodge/Spark.hs 53;" 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 @@ -4977,21 +4987,21 @@ maybeOpenConsole src/Dodge/Update.hs 126;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f maybeWarmupStatus src/Dodge/Item/Display.hs 44;" f -mcApplyDamage src/Dodge/Machine/Update.hs 109;" f +mcApplyDamage src/Dodge/Machine/Update.hs 114;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f -mcPlaySound src/Dodge/Machine/Update.hs 99;" f -mcProxTest src/Dodge/Machine/Update.hs 147;" f -mcProximitySensorUpdate src/Dodge/Machine/Update.hs 125;" f +mcPlaySound src/Dodge/Machine/Update.hs 104;" f +mcProxTest src/Dodge/Machine/Update.hs 152;" f +mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f mcSPic src/Dodge/Render/ShapePicture.hs 119;" f -mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 88;" f -mcSensorUpdate src/Dodge/Machine/Update.hs 120;" f +mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f +mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f mcShootAuto src/Dodge/HeldUse.hs 1194;" f mcShootLaser src/Dodge/HeldUse.hs 1187;" f -mcTriggerVal src/Dodge/Machine/Update.hs 94;" f +mcTriggerVal src/Dodge/Machine/Update.hs 99;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f mcUseHeld src/Dodge/HeldUse.hs 1113;" f -mcUseItem src/Dodge/Machine/Update.hs 80;" f +mcUseItem src/Dodge/Machine/Update.hs 85;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 54;" f megaShellMag src/Dodge/Item/Ammo.hs 43;" f @@ -5059,12 +5069,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 197;" 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 54;" f +moveInverseShockwave src/Dodge/Shockwave/Update.hs 52;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f -movePenBullet src/Dodge/Bullet.hs 207;" 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 @@ -5087,7 +5097,7 @@ muzFlareAt src/Dodge/HeldUse.hs 677;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f -mvGust src/Dodge/Update.hs 725;" f +mvGust src/Dodge/Update.hs 724;" f mvLS src/Dodge/Placement/PlaceSpot.hs 217;" f mvP src/Dodge/Wall/Move.hs 54;" f mvPP src/Dodge/Placement/PlaceSpot.hs 183;" f @@ -5202,7 +5212,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 214;" 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 @@ -5336,7 +5346,7 @@ polygonCol src/Picture/Base.hs 78;" f polygonWire src/Picture/Base.hs 63;" f polysToPic src/Polyhedra.hs 130;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f -posEventEffect src/Dodge/PosEvent.hs 16;" f +posEventEffect src/Dodge/PosEvent.hs 15;" f posRms src/Dodge/Tree/Shift.hs 44;" f posSelSecYint src/Dodge/SelectionSections.hs 184;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f @@ -5351,7 +5361,7 @@ powlistUpToN src/Multiset.hs 23;" f powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f ppDraw src/Dodge/Render/ShapePicture.hs 104;" f -ppEvents src/Dodge/Update.hs 692;" f +ppEvents src/Dodge/Update.hs 691;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 82;" f preloadRender src/Preload/Render.hs 30;" f @@ -5436,7 +5446,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 64;" f +randDirSpark src/Dodge/Spark.hs 62;" 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 @@ -5453,9 +5463,9 @@ 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 84;" f +randSpark src/Dodge/Spark.hs 82;" f randWallReflect src/Dodge/Tesla/Arc.hs 57;" f -randWallReflect src/Dodge/Update.hs 584;" f +randWallReflect src/Dodge/Update.hs 583;" f randomChallenges src/Dodge/Room/Start.hs 62;" f randomCompass src/Dodge/Layout.hs 59;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 266;" f @@ -5679,13 +5689,13 @@ selectUse src/Dodge/SelectUse.hs 11;" f selectedItemScroll src/Dodge/Update/Scroll.hs 46;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f -senseDamage src/Dodge/Machine/Update.hs 155;" f +senseDamage src/Dodge/Machine/Update.hs 160;" f sensorCommand src/Dodge/Terminal.hs 208;" f sensorInfoMap src/Dodge/Terminal.hs 180;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 48;" f sensorSPic src/Dodge/Machine/Draw.hs 70;" f -sensorTypeDamages src/Dodge/Machine/Update.hs 173;" f +sensorTypeDamages src/Dodge/Machine/Update.hs 178;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f @@ -5696,7 +5706,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 174;" 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 @@ -5813,7 +5823,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 776;" f +simpleCrSprings src/Dodge/Update.hs 775;" f simpleDamFL src/Dodge/Flame.hs 41;" f simpleTermMessage src/Dodge/Terminal.hs 253;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 522;" f @@ -5825,7 +5835,7 @@ singleLDT src/Dodge/DoubleTree.hs 12;" f singleton src/DoubleStack.hs 11;" f singletonTrie src/SimpleTrie.hs 19;" f sizeFBOs src/Framebuffer/Update.hs 22;" f -skColor src/Dodge/Spark/Draw.hs 13;" f +skColor src/Dodge/Spark/Draw.hs 14;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 390;" f slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 456;" f @@ -5872,12 +5882,12 @@ 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 34;" f +sparkDam' src/Dodge/Spark.hs 32;" f sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f -sparkRandDir src/Dodge/Spark.hs 107;" f -sparkToDamage src/Dodge/Spark.hs 46;" f +sparkRandDir src/Dodge/Spark.hs 105;" f +sparkToDamage src/Dodge/Spark.hs 44;" f spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f -spawnElectricalSparks src/Dodge/PosEvent.hs 20;" f +spawnElectricalSparks src/Dodge/PosEvent.hs 19;" f spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f spawnSmokeAtCursor src/Dodge/WorldEvent/Cloud.hs 73;" f spawnerCrit src/Dodge/Creature.hs 56;" f @@ -5942,7 +5952,7 @@ stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f stoneDebris src/Dodge/Block/Debris.hs 137;" f stoneWallDamage src/Dodge/Wall/DamageEffect.hs 24;" f stopAllSounds src/Sound.hs 125;" f -stopBulletAt src/Dodge/Bullet.hs 200;" 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 @@ -6202,39 +6212,39 @@ updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f updateAttachedItems src/Dodge/Creature/State.hs 266;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f -updateBarrel src/Dodge/Barreloid.hs 45;" f +updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 29;" f updateBounds src/Dodge/Update/Camera.hs 250;" f -updateBulVel src/Dodge/Bullet.hs 61;" f +updateBulVel src/Dodge/Bullet.hs 53;" f updateBullet src/Dodge/Bullet.hs 21;" f updateBullets src/Dodge/Update.hs 540;" f updateCamera src/Dodge/Update/Camera.hs 29;" f updateCloseObjects src/Dodge/Inventory.hs 116;" f -updateCloud src/Dodge/Update.hs 742;" f -updateClouds src/Dodge/Update.hs 614;" f +updateCloud src/Dodge/Update.hs 741;" f +updateClouds src/Dodge/Update.hs 613;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 37;" f updateCombineSections src/Dodge/DisplayInventory.hs 44;" f updateCreature src/Dodge/Creature/Update.hs 13;" f updateCreatureGroups src/Dodge/Update.hs 512;" f updateCreatureSoundPositions src/Dodge/Update.hs 488;" f updateDebugMessageOffset src/Dodge/Update.hs 95;" f -updateDelayedEvents src/Dodge/Update.hs 805;" f +updateDelayedEvents src/Dodge/Update.hs 804;" 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 45;" f -updateEnergyBalls src/Dodge/Update.hs 602;" f +updateEnergyBall src/Dodge/EnergyBall.hs 41;" f +updateEnergyBalls src/Dodge/Update.hs 601;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f updateExpBarrel src/Dodge/Barreloid.hs 19;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFlame src/Dodge/Flame.hs 71;" f -updateFlames src/Dodge/Update.hs 599;" f +updateFlames src/Dodge/Update.hs 598;" f 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 722;" f +updateGusts src/Dodge/Update.hs 721;" f updateHeldRootItem src/Dodge/Creature/State.hs 260;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 502;" f @@ -6263,8 +6273,8 @@ updateMovement src/Dodge/Creature/State.hs 428;" f updateObjCatMaybes src/Dodge/Update.hs 524;" f updateObjMapMaybe src/Dodge/Update.hs 517;" f updatePastWorlds src/Dodge/Update.hs 422;" f -updatePosEvent src/Dodge/PosEvent.hs 11;" f -updatePosEvents src/Dodge/Update.hs 611;" f +updatePosEvent src/Dodge/PosEvent.hs 10;" f +updatePosEvents src/Dodge/Update.hs 610;" f updatePreload src/Preload/Update.hs 20;" f updateProjectile src/Dodge/Projectile/Update.hs 27;" f updateProp src/Dodge/Prop/Update.hs 11;" f @@ -6273,7 +6283,7 @@ updateRBList src/Dodge/Inventory/RBList.hs 18;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f updateRadarBlips src/Dodge/Update.hs 536;" f updateRadarSweep src/Dodge/RadarSweep.hs 39;" f -updateRadarSweeps src/Dodge/Update.hs 605;" f +updateRadarSweeps src/Dodge/Update.hs 604;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 108;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f @@ -6282,18 +6292,18 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 264;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 243;" f updateShockwave src/Dodge/Shockwave/Update.hs 13;" f -updateShockwaves src/Dodge/Update.hs 596;" f +updateShockwaves src/Dodge/Update.hs 595;" f updateSingleNodes src/TreeHelp.hs 97;" f updateSound src/Sound.hs 72;" f updateSounds src/Sound.hs 67;" f -updateSpark src/Dodge/Spark.hs 20;" f -updateSparks src/Dodge/Update.hs 608;" f +updateSpark src/Dodge/Spark.hs 19;" f +updateSparks src/Dodge/Update.hs 607;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f updateTeslaArc src/Dodge/Update.hs 550;" f updateTeslaArcs src/Dodge/Update.hs 547;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 593;" f +updateTractorBeams src/Dodge/Update.hs 592;" f updateTurret src/Dodge/Machine/Update.hs 50;" f updateUniverse src/Dodge/Update.hs 74;" f updateUniverseFirst src/Dodge/Update.hs 85;" f @@ -6327,7 +6337,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 119;" f +useBulletPayload src/Dodge/Bullet.hs 111;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useDelay src/Dodge/Item/UseDelay.hs 13;" f