diff --git a/src/Dodge/Barreloid.hs b/src/Dodge/Barreloid.hs index 42404556e..e7452acae 100644 --- a/src/Dodge/Barreloid.hs +++ b/src/Dodge/Barreloid.hs @@ -29,7 +29,7 @@ updateExpBarrel ps cr w = case cr ^. crHP of & flip (foldl' f) ps HP _ -> w - & makeExplosionAt ((cr ^. crPos) & _z +~ 20) 0 + & makeExplosionAt (CrIndirectO (cr ^. crID)) ((cr ^. crPos) & _z +~ 20) 0 & cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ CrDestroyed Gibbed _ -> w where @@ -51,7 +51,7 @@ damsToExpBarrel = flip $ foldl' damToExpBarrel damToExpBarrel :: Creature -> Damage -> Creature damToExpBarrel cr dm = case dm of - Piercing x p _ -> + Piercing x p _ _ -> cr & crHP . _HP -~ div x 200 & crType . barrelType . piercedPoints .:~ (p - cr ^. crPos . _xy) Poison{} -> cr diff --git a/src/Dodge/Base/Collide.hs b/src/Dodge/Base/Collide.hs index eb0b6c194..449a4c373 100644 --- a/src/Dodge/Base/Collide.hs +++ b/src/Dodge/Base/Collide.hs @@ -36,6 +36,7 @@ module Dodge.Base.Collide ( crHeight, ) where +import AesonHelp import Control.Applicative import Data.Foldable import qualified Data.IntMap.Strict as IM @@ -195,7 +196,8 @@ crHeight cr = case cr ^. crHP of SlimeCrit {_slimeRad = r} -> min 15 r BeeCrit {} -> 10 HiveCrit {} -> 25 - _ -> error "Need to define crHeight for this crType" + BarrelCrit{} -> 20 + _ -> error $ "Need to define crHeight for this crType:\n" <> unlines (prettyShort (cr ^. crType)) CrIsCorpse{} -> Just 5 CrDestroyed{} -> Nothing diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index a2d286332..4388e5aa2 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -119,15 +119,17 @@ useBulletPayload bu = case _buPayload bu of BulPlain _ -> const id BulFlak -> makeFlak bu BulFrag -> makeFragBullets - BulGas -> (`makeGasCloud` V2 0 0) - BulBall ExplosiveBall -> makeMovingEB (_buVel bu) ExplosiveBall + BulGas -> (\p -> makeGasCloud o p (V2 0 0)) + BulBall eb@ExplosiveBall{} -> makeMovingEB (_buVel bu) eb o BulBall ElectricalBall{} -> makeMovingEB (_buVel bu) - (ElectricalBall (round $ bu ^. buPos . _1)) - BulBall FlashBall -> makeMovingEB (_buVel bu) FlashBall - BulBall (FlameletBall x) -> makeMovingEB (_buVel bu) (FlameletBall x) - BulBall IncendiaryBall -> makeMovingEB (_buVel bu) IncendiaryBall + (ElectricalBall (round $ bu ^. buPos . _1)) o + BulBall eb@FlashBall{} -> makeMovingEB (_buVel bu) eb o + BulBall eb@FlameletBall{} -> makeMovingEB (_buVel bu) eb o + BulBall eb@IncendiaryBall{} -> makeMovingEB (_buVel bu) eb o + where + o = bu ^. buOrigin makeFragBullets :: Point2 -> World -> World makeFragBullets p w = w & cWorld . lWorld . bullets .++~ bus @@ -172,8 +174,8 @@ hitEffFromBul w bu = case _buEffect bu of getBulHitDams :: Bullet -> Point2 -> [Damage] getBulHitDams bu p = case _buPayload bu of - BulPlain x -> [Piercing x p v - ,Inertial 0 p v] + BulPlain x -> [Piercing x p v (bu ^. buOrigin) + ,Inertial 0 p v (bu ^. buOrigin)] _ -> [] where v = _buVel bu diff --git a/src/Dodge/Creature/Action/Blink.hs b/src/Dodge/Creature/Action/Blink.hs index ea98f6902..c78cff66d 100644 --- a/src/Dodge/Creature/Action/Blink.hs +++ b/src/Dodge/Creature/Action/Blink.hs @@ -29,7 +29,7 @@ blinkActionMousePos cr w = & blinkDistortions cpos p3 & cWorld . lWorld . creatures . ix cid . crPos . _xy .~ p3 & blinkShockwave cid p3 - & inverseShockwaveAt (cpos `v2z` 20) 40 2 2 + & inverseShockwaveAt (cpos `v2z` 20) 40 2 2 (CrIndirectO cid) where cid = _crID cr p1 = w ^. cWorld . lWorld . lAimPos @@ -63,11 +63,11 @@ unsafeBlinkAction cr w . blinkDistortions cpos mwp . set (cWorld . lWorld . creatures . ix cid . crPos . _xy) mwp . blinkShockwave cid mwp - $ inverseShockwaveAt (cpos `v2z` 20) 40 2 2 w + $ inverseShockwaveAt (cpos `v2z` 20) 40 2 2 (CrIndirectO cid) w | otherwise = w & blinkActionFail cr - & cWorld . lWorld . creatures . ix cid . crDamage .:~ Enterrement 100000000 + & cWorld . lWorld . creatures . ix cid . crDamage .:~ Enterrement 100000000 (CrIndirectO cid) where success = fromMaybe True $ do wl <- snd $ collidePointWallsFilter (const True) mwp cpos w @@ -82,7 +82,7 @@ blinkShockwave :: Point2 -> World -> World -blinkShockwave i p = makeShockwaveAt [i] (p `v2z` 20) 60 1 2 cyan +blinkShockwave i p = makeShockwaveAt [i] (p `v2z` 20) 60 1 2 cyan (CrIndirectO i) -- | Like a blink action, but no ingoing distortion blinkActionFail :: Creature -> World -> World @@ -91,7 +91,7 @@ blinkActionFail cr w = & soundMultiFrom [TeleSound 0, TeleSound 1] p3 teleS Nothing -- & cWorld . lWorld . distortions .:~ distortionBulge & cWorld . lWorld . creatures . ix cid . crPos . _xy .~ p3 - & inverseShockwaveAt (cpos `v2z` 20) 40 2 2 + & inverseShockwaveAt (cpos `v2z` 20) 40 2 2 (CrIndirectO cid) where -- distR = 120 -- distortionBulge = RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 1.9 diff --git a/src/Dodge/Creature/Damage.hs b/src/Dodge/Creature/Damage.hs index 68083110b..51d714579 100644 --- a/src/Dodge/Creature/Damage.hs +++ b/src/Dodge/Creature/Damage.hs @@ -16,7 +16,7 @@ applyCreatureDamage :: [Damage] -> Creature -> World -> World applyCreatureDamage dms cr w = foldl' (applyIndividualDamage cr) w dms applyIndividualDamage :: Creature -> World -> Damage -> World -applyIndividualDamage cr w (Inertial _ _ v) = w +applyIndividualDamage cr w (Inertial _ _ v _) = w & cWorld . lWorld . creatures . ix (_crID cr) . crPos . _xy +~ fmap (/ crMass (cr ^. crType)) v applyIndividualDamage cr w dm = let (i,w') = damMatSideEffect dm (crMaterial (_crType cr)) (Left cr) w diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index 2e51394a4..fd7d2a168 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -91,9 +91,9 @@ followImpulse cid w = \case rr a = randomR (- a, a) $ _randGen w hitCr i = cWorld . lWorld . creatures . ix i . crDamage - .:~ Blunt 100 (posFromID i) (posFromID i - cpos) + .:~ Blunt 100 (posFromID i) (posFromID i - cpos) (CrMeleeO cid) hitCrd a i = cWorld . lWorld . creatures . ix i . crDamage - <>~ [Blunt 100 (posFromID i) (posFromID i - cpos) - , Inertial 0 (posFromID i) (50 * unitVectorAtAngle (cr ^. crDir + a)) + <>~ [Blunt 100 (posFromID i) (posFromID i - cpos) (CrMeleeO cid) + , Inertial 0 (posFromID i) (50 * unitVectorAtAngle (cr ^. crDir + a)) (CrMeleeO cid) ] diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 39b8ee904..fdb599942 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -225,6 +225,7 @@ shineTargetLaser cr loc w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ d , _lpPos = pos -- , _lpColor = col , _lpType = TargetingLaser (_itID itm) + , _lpOrigin = CrWeaponO $ cr ^. crID } where o = locOrient loc cr diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index 74745957d..7b9842d99 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -20,6 +20,7 @@ data Bullet = Bullet , _buDrag :: Float , _buPos :: Point2 , _buOldPos :: Point2 + , _buOrigin :: DamageOrigin } deriving (Show, Eq, Ord, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Cloud.hs b/src/Dodge/Data/Cloud.hs index 46c40aa5b..eaa36a0f1 100644 --- a/src/Dodge/Data/Cloud.hs +++ b/src/Dodge/Data/Cloud.hs @@ -3,6 +3,7 @@ module Dodge.Data.Cloud where +import Dodge.Data.Damage import Dodge.Data.Material import Control.Lens import Data.Aeson @@ -36,6 +37,7 @@ data Gas = Gas , _gsVel :: Point3 , _gsTimer :: Int , _gsType :: GasType + , _gsOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index e63e1d053..5b2de2e2f 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -13,20 +13,32 @@ import Data.Aeson.TH import Geometry.Data data Damage - = Piercing {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} - | Blunt {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} - | Sparking {_dmAmount :: Int} - | Crushing {_dmAmount :: Int, _dmVector :: Point2} - | 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} - | Inertial {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2} + = Piercing {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + | Blunt {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + | Sparking {_dmAmount :: Int, _dmOrigin :: DamageOrigin} + | Crushing {_dmAmount :: Int, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + | Shattering {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + | Flaming {_dmAmount :: Int, _dmOrigin :: DamageOrigin} + | Lasering {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + | Flashing {_dmAmount :: Int, _dmPos :: Point2, _dmOrigin :: DamageOrigin} + | Electrical {_dmAmount :: Int, _dmOrigin :: DamageOrigin} + | Explosive {_dmAmount :: Int, _dmOrigin :: DamageOrigin, _dmCenter :: Point2} + | Poison {_dmAmount :: Int, _dmOrigin :: DamageOrigin} + | Enterrement {_dmAmount :: Int, _dmOrigin :: DamageOrigin} + | Inertial {_dmAmount :: Int, _dmPos :: Point2, _dmVector :: Point2, _dmOrigin :: DamageOrigin} + deriving (Eq, Ord, Show, Read) --Generic, Flat) + +data DamageOrigin + = CrMeleeO { _doCID :: Int} + | CrWeaponO { _doCID :: Int} + | CrIndirectO {_doCID :: Int} + | McMeleeO { _doMID :: Int} + | McWeaponO { _doMID :: Int} + | McIndirectO {_doMID :: Int} + | UnassignedO deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Damage +makeLenses ''DamageOrigin +deriveJSON defaultOptions ''DamageOrigin deriveJSON defaultOptions ''Damage diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index 8a675120c..1a3f4e676 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -6,6 +6,7 @@ module Dodge.Data.EnergyBall ( module Dodge.Data.EnergyBall.Type, ) where +import Dodge.Data.Damage import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -17,6 +18,7 @@ data EnergyBall = EnergyBall , _ebPos :: Point3 , _ebTimer :: Int , _ebType :: EnergyBallType + , _ebOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/EnergyBall/Type.hs b/src/Dodge/Data/EnergyBall/Type.hs index f923b8267..f084f079f 100644 --- a/src/Dodge/Data/EnergyBall/Type.hs +++ b/src/Dodge/Data/EnergyBall/Type.hs @@ -8,11 +8,11 @@ import Data.Aeson import Data.Aeson.TH data EnergyBallType - = IncendiaryBall + = IncendiaryBall{} | FlameletBall {_fbSize :: Float} | ElectricalBall {_ebID :: Int} - | ExplosiveBall - | FlashBall + | ExplosiveBall{} + | FlashBall{} deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''EnergyBallType diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index 48d58a856..67de82d5d 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -3,6 +3,7 @@ module Dodge.Data.Flame where +import Dodge.Data.Damage import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -12,6 +13,7 @@ data Flame = Flame { _flTimer :: Int , _flPos :: Point2 , _flVel :: Point2 + , _flOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Laser.hs b/src/Dodge/Data/Laser.hs index 58b588511..77789330f 100644 --- a/src/Dodge/Data/Laser.hs +++ b/src/Dodge/Data/Laser.hs @@ -3,6 +3,7 @@ module Dodge.Data.Laser where +import Dodge.Data.Damage import NewInt import Dodge.Data.Item.Location --import Color @@ -21,6 +22,7 @@ data Laser = Laser , _lpPos :: Point2 , _lpDir :: Float , _lpType :: LaserType + , _lpOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/PlasmaBall.hs b/src/Dodge/Data/PlasmaBall.hs index 511a16cf6..b908d7c2c 100644 --- a/src/Dodge/Data/PlasmaBall.hs +++ b/src/Dodge/Data/PlasmaBall.hs @@ -1,10 +1,9 @@ {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} -module Dodge.Data.PlasmaBall ( - module Dodge.Data.PlasmaBall -) where +module Dodge.Data.PlasmaBall (module Dodge.Data.PlasmaBall) where +import Dodge.Data.Damage import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -14,6 +13,7 @@ data PlasmaBall = PBall { _pbType :: PlasmaBallType , _pbVel :: Point2 , _pbPos :: Point2 + , _pbOrigin :: DamageOrigin } deriving (Show, Eq, Ord, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Projectile.hs b/src/Dodge/Data/Projectile.hs index 5d816e28f..370e3ad4f 100644 --- a/src/Dodge/Data/Projectile.hs +++ b/src/Dodge/Data/Projectile.hs @@ -3,6 +3,7 @@ module Dodge.Data.Projectile where +import Dodge.Data.Damage import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -24,6 +25,7 @@ data Projectile = Shell , _pjType :: ProjectileType , _pjDetonatorID :: Maybe (NewInt ItmInt) , _pjScreenID :: Maybe (NewInt ItmInt) + , _pjOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/PulseLaser.hs b/src/Dodge/Data/PulseLaser.hs index 35393d0a0..9bd70d236 100644 --- a/src/Dodge/Data/PulseLaser.hs +++ b/src/Dodge/Data/PulseLaser.hs @@ -3,6 +3,7 @@ module Dodge.Data.PulseLaser where +import Dodge.Data.Damage import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -14,6 +15,7 @@ data PulseLaser = PulseLaser , _pzDir :: Float , _pzDamage :: Int , _pzTimer :: Int + , _pzOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) @@ -22,6 +24,7 @@ data PulseBall = PulseBall , _pzbPos :: Point2 , _pzbTimer :: Int , _pzbID :: Int + , _pzbOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/Shockwave.hs b/src/Dodge/Data/Shockwave.hs index 7de1f2b12..eb99f561e 100644 --- a/src/Dodge/Data/Shockwave.hs +++ b/src/Dodge/Data/Shockwave.hs @@ -3,6 +3,7 @@ module Dodge.Data.Shockwave where +import Dodge.Data.Damage import Color import Control.Lens import Data.Aeson @@ -22,6 +23,7 @@ data Shockwave = Shockwave , _swPush :: Float , _swMaxTime :: Int , _swTimer :: Int + , _swOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/TeslaArc.hs b/src/Dodge/Data/TeslaArc.hs index 07d943a33..2e22f60ee 100644 --- a/src/Dodge/Data/TeslaArc.hs +++ b/src/Dodge/Data/TeslaArc.hs @@ -6,6 +6,7 @@ module Dodge.Data.TeslaArc ( module Dodge.Data.ArcStep, ) where +import Dodge.Data.Damage import Color import Control.Lens import Data.Aeson @@ -16,6 +17,7 @@ data TeslaArc = TeslaArc { _taTimer :: Int , _taArcSteps :: [ArcStep] , _taColor :: Color + , _taOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index d278863be..b96a3127b 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -18,33 +18,34 @@ import Linear.V3 import Picture import RandomHelp -makeFlamelet :: Point3 -> Point3 -> Float -> Int -> World -> World -makeFlamelet p v s t = +makeFlamelet :: DamageOrigin -> Point3 -> Point3 -> Float -> Int -> World -> World +makeFlamelet o p v s t = cWorld . lWorld . energyBalls .:~ EnergyBall { _ebVel = v , _ebPos = p , _ebTimer = t , _ebType = FlameletBall s + , _ebOrigin = o } updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb | _ebTimer eb <= 0 = (w, Nothing) | otherwise = - ( ebEffect eb . ebFlicker eb $ ebDamage (eb ^. ebPos) (_ebType eb) w + ( ebEffect eb . ebFlicker eb $ ebDamage eb w , Just $ eb & ebTimer -~ 1 & ebPos . _xy .~ bp & ebVel . _xy .~ drag * bv ) where drag = case eb ^. ebType of - ExplosiveBall -> 0.9 + ExplosiveBall{} -> 0.9 _ -> 0.85 p = (eb ^. ebPos + eb ^. ebVel) ^. _xy (bp, bv) = fromMaybe (p, eb ^. ebVel . _xy) $ bouncePoint (const True) 0 (eb ^. ebPos . _xy) p w ebEffect :: EnergyBall -> World -> World ebEffect eb = case _ebType eb of - ElectricalBall i -> + ElectricalBall {_ebID = i} -> soundContinue (EBSound i) (eb ^. ebPos . _xy) elecCrackleS (Just 2) . randSparkExtraVel (eb ^. ebVel . _xy) @@ -57,14 +58,15 @@ ebEffect eb = case _ebType eb of soundStart (EBSound (-1)) (eb ^. ebPos . _xy) fireFadeS Nothing _ -> id -makeMovingEB :: Point2 -> EnergyBallType -> Point2 -> World -> World -makeMovingEB v ebt p = +makeMovingEB :: Point2 -> EnergyBallType -> DamageOrigin -> Point2 -> World -> World +makeMovingEB v ebt o p = cWorld . lWorld . energyBalls .:~ EnergyBall { _ebVel = v `v2z` 0 , _ebPos = p `v2z` 20 , _ebTimer = 20 , _ebType = ebt + , _ebOrigin = o } ebFlicker :: EnergyBall -> World -> World @@ -79,21 +81,24 @@ ebColor eb = case eb ^. ebType of IncendiaryBall{} -> red FlameletBall{} -> red ElectricalBall{} -> cyan - ExplosiveBall -> white - FlashBall -> white + ExplosiveBall{} -> white + FlashBall{} -> white -ebDamage :: Point3 -> EnergyBallType -> World -> World -ebDamage sp dt - | z > 0 && z < 25 = damageInCircle (const $ ebtToDamage (sp ^. _xy) dt) (sp ^. _xy) r +ebDamage :: EnergyBall -> World -> World +ebDamage eb + | z > 0 && z < 25 = damageInCircle (const $ ebtToDamage (sp ^. _xy) o dt) (sp ^. _xy) r | otherwise = id where + sp = eb ^. ebPos + dt = eb ^. ebType + o = eb ^. ebOrigin z = sp ^. _z r = fromMaybe 5 $ dt ^? fbSize -ebtToDamage :: Point2 -> EnergyBallType -> Damage -ebtToDamage p = \case - FlameletBall{} -> Flaming 1 - IncendiaryBall{} -> Flaming 10 - ElectricalBall{} -> Electrical 10 - ExplosiveBall -> Explosive 10 p - FlashBall -> Flashing 10 p +ebtToDamage :: Point2 -> DamageOrigin -> EnergyBallType -> Damage +ebtToDamage p o = \case + FlameletBall{} -> Flaming 1 o + IncendiaryBall{} -> Flaming 10 o + ElectricalBall{} -> Electrical 10 o + ExplosiveBall{} -> Explosive 10 o p + FlashBall{} -> Flashing 10 p o diff --git a/src/Dodge/EnergyBall/Draw.hs b/src/Dodge/EnergyBall/Draw.hs index f9f746b26..6a66a3cb6 100644 --- a/src/Dodge/EnergyBall/Draw.hs +++ b/src/Dodge/EnergyBall/Draw.hs @@ -6,11 +6,11 @@ import Picture drawEnergyBall :: EnergyBall -> Picture drawEnergyBall eb = case _ebType eb of - FlameletBall x -> drawFlamelet x eb - IncendiaryBall -> drawFlamelet 5 eb + FlameletBall {_fbSize=x} -> drawFlamelet x eb + IncendiaryBall{} -> drawFlamelet 5 eb ElectricalBall{} -> drawStaticBall eb - ExplosiveBall -> drawExplosiveBall eb - FlashBall -> mempty + ExplosiveBall{} -> drawExplosiveBall eb + FlashBall{} -> mempty drawExplosiveBall :: EnergyBall -> Picture drawExplosiveBall eb = diff --git a/src/Dodge/Flame.hs b/src/Dodge/Flame.hs index 4e636445b..b3857dda1 100644 --- a/src/Dodge/Flame.hs +++ b/src/Dodge/Flame.hs @@ -29,7 +29,7 @@ updateFlame w pt reflame wl = pt & flTimer -~ 1 & flVel %~ reflVelWallDamp 0.9 wl doupdate = soundContinue FlameSound sp fireLoudS (Just 2) $ - damageInCircle (const $ Flaming 1) ep r w + damageInCircle (const $ Flaming 1 (pt ^. flOrigin)) ep r w thit = List.safeHead $ thingsHit sp ep w sp = _flPos pt ep = sp + _flVel pt @@ -43,10 +43,10 @@ flFlicker pt .:~ LSParam (addZ 10 $ _flPos pt) 70 (0.5 *.*.* xyzV4 red) | otherwise = id -makeFlame :: Point2 -> Point2 -> World -> World -makeFlame pos vel w = +makeFlame :: Point2 -> Point2 -> DamageOrigin -> World -> World +makeFlame pos vel d w = w - & cWorld . lWorld . flames .:~ Flame t pos vel + & cWorld . lWorld . flames .:~ Flame t pos vel d & randGen .~ g where (t, g) = randomR (99, 102) (_randGen w) diff --git a/src/Dodge/Gas.hs b/src/Dodge/Gas.hs index 415d0d1e1..29ebe458c 100644 --- a/src/Dodge/Gas.hs +++ b/src/Dodge/Gas.hs @@ -14,11 +14,11 @@ createGas gc = case gc of aGasCloud :: Float -> Point2 -> Float -> Creature -> World -> World aGasCloud pressure pos dir cr = - makeGasCloud pos $ + makeGasCloud (CrWeaponO (cr ^. crID)) pos $ (cr ^. crPos . _xy - cr ^. crOldPos . _xy) + pressure *^ unitVectorAtAngle dir aFlame :: Float -> Point2 -> Float -> Creature -> World -> World -aFlame pressure pos dir cr = makeFlame pos vel +aFlame pressure pos dir cr = makeFlame pos vel (CrWeaponO (cr ^. crID)) where --w & instantParticles .:~ aFlameParticle t pos vel Nothing -- (Just $ _crID cr) diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 05ad12743..758878778 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -743,11 +743,11 @@ useLoadedAmmo useLoadedAmmo loc cr mz m w = makeMuzzleFlare pq loc (mz ^. mzFlareType) $ case _mzEffect mz of MuzzleShootBullet -> shootBullets loc cr (mz, x, magtree) w - MuzzleLaser -> creatureShootLaser pq' loc (w & randGen .~ g) + MuzzleLaser -> creatureShootLaser (CrWeaponO (cr ^. crID)) pq' loc (w & randGen .~ g) MuzzlePulseLaser -> creatureShootPulseLaser pq' cr (w & randGen .~ g) - MuzzlePulseBall -> shootPulseBall pq' (w & randGen .~ g) - MuzzlePlasmaBall -> shootPlasmaBall pq' (w & randGen .~ g) - MuzzleTesla -> shootTeslaArc pq' loc (w & randGen .~ g) + MuzzlePulseBall -> shootPulseBall o pq' (w & randGen .~ g) + MuzzlePlasmaBall -> shootPlasmaBall o pq' (w & randGen .~ g) + MuzzleTesla -> shootTeslaArc o pq' loc (w & randGen .~ g) MuzzleTractor -> shootTractorBeam cr w MuzzleRLauncher -> createProjectileR pq loc magtree cr w MuzzleGLauncher -> @@ -776,6 +776,7 @@ useLoadedAmmo loc cr mz m w = MuzzleStopper -> useStopWatch itm cr w MuzzleScroller -> useTimeScrollGun itm cr w where + o = CrWeaponO $ cr ^. crID pq = muzzlePos loc cr mz (pq', g) = muzzleRandPos loc cr mz `runState` (w ^. randGen) itmtree = loc ^. locDT @@ -856,9 +857,10 @@ tractorBeamAt pos outpos dir power = , _tbTime = 10 } -creatureShootLaser :: Point3Q -> LocationDT OItem -> World -> World -creatureShootLaser (p, q) loc = +creatureShootLaser :: DamageOrigin -> Point3Q -> LocationDT OItem -> World -> World +creatureShootLaser o (p, q) loc = shootLaser + o (ItemSound (loc ^. locDT . dtValue . _1 . itID . unNInt) 0) (getLaserDamage loc) (getLaserPhaseV loc) @@ -866,6 +868,7 @@ creatureShootLaser (p, q) loc = (Q.qToAng q) shootLaser :: + DamageOrigin -> SoundOrigin -> LaserType -> Float -> @@ -873,13 +876,14 @@ shootLaser :: Float -> World -> World -shootLaser so lt pv p dir = +shootLaser o so lt pv p dir = ( cWorld . lWorld . lasers .:~ Laser { _lpType = lt , _lpPhaseV = pv , _lpPos = p , _lpDir = dir + , _lpOrigin = o } ) . soundContinue so p tone440sawtoothquietS (Just 2) @@ -887,12 +891,13 @@ shootLaser so lt pv p dir = creatureShootPulseLaser :: Point3Q -> Creature -> World -> World creatureShootPulseLaser (p, q) cr = shootPulseLaser + (CrWeaponO $ cr ^. crID) (CrWeaponSound (_crID cr) 0) (p ^. _xy) (Q.qToAng q) -shootPulseLaser :: SoundOrigin -> Point2 -> Float -> World -> World -shootPulseLaser so p dir w = +shootPulseLaser :: DamageOrigin -> SoundOrigin -> Point2 -> Float -> World -> World +shootPulseLaser o so p dir w = w & cWorld . lWorld . pulseLasers .:~ PulseLaser @@ -901,23 +906,25 @@ shootPulseLaser so p dir w = , _pzDir = dir , _pzDamage = 101 , _pzTimer = 5 + , _pzOrigin = o } & soundStart so p lasPulseS Nothing -shootPlasmaBall :: Point3Q -> World -> World -shootPlasmaBall (p, q) w = +shootPlasmaBall :: DamageOrigin -> Point3Q -> World -> World +shootPlasmaBall o (p, q) w = w & cWorld . lWorld . plasmaBalls .:~ PBall { _pbPos = p ^. _xy , _pbVel = 6 * unitVectorAtAngle (Q.qToAng q) , _pbType = DefaultPlasma + , _pbOrigin = o } -- & soundStart (PBSound i) (p ^. _xy) energyReleaseS Nothing -shootPulseBall :: Point3Q -> World -> World -shootPulseBall (p, q) w = +shootPulseBall :: DamageOrigin -> Point3Q -> World -> World +shootPulseBall o (p, q) w = w & cWorld . lWorld . pulseBalls . at i ?~ PulseBall @@ -925,6 +932,7 @@ shootPulseBall (p, q) w = , _pzbVel = 3.5 * unitVectorAtAngle (Q.qToAng q) , _pzbTimer = 200 , _pzbID = i + , _pzbOrigin = o } & soundStart (PBSound i) (p ^. _xy) energyReleaseS Nothing where @@ -990,7 +998,8 @@ shootBullets :: LocationDT OItem -> Creature -> (Muzzle, Int, DTree OItem) -> World -> World shootBullets loc cr (mz, x, magtree) w = fromMaybe w $ do thebullet <- getBulletType magtree - return $ foldl' (&) w (replicate x (shootBullet thebullet loc cr mz)) + let bu = thebullet & buOrigin .~ CrWeaponO (cr ^. crID) + return $ foldl' (&) w (replicate x (shootBullet bu loc cr mz)) shootBullet :: Bullet -> LocationDT OItem -> Creature -> Muzzle -> World -> World shootBullet bu loc cr mz w = makeBullet bu itm pq . (randGen .~ g) $ w @@ -1180,7 +1189,7 @@ doGenFloat (UniRandFloat x y) g = randomR (x, y) g mcShootLaser :: Item -> Machine -> World -> World mcShootLaser _ mc = - shootLaser (MachinePrimarySound (_mcID mc)) (DamageLaser 11) 1 pos dir + shootLaser (McWeaponO (mc ^. mcID)) (MachinePrimarySound (_mcID mc)) (DamageLaser 11) 1 pos dir where pos = _mcPos mc +.+ 20 *.* unitVectorAtAngle dir dir = (mc ^?! mcType . mctTurret . tuDir) @@ -1203,14 +1212,14 @@ mcShootAuto itm mc w -- dir = mc ^?! mcType . _McTurret . tuDir -- | assumes that the item is held -shootTeslaArc :: Point3Q -> LocationDT OItem -> World -> World -shootTeslaArc (p, q) loc w = +shootTeslaArc :: DamageOrigin -> Point3Q -> LocationDT OItem -> World -> World +shootTeslaArc o (p, q) loc w = w' & cWorld . lWorld . items . ix itid . itParams .~ ip & soundContinue (ItemSound itid 0) pos elecCrackleS (Just 2) where itm = loc ^. locDT . dtValue . _1 itid = itm ^. itID . unNInt - (w', ip) = makeTeslaArc (itm ^. itParams) pos (Q.qToAng q) w + (w', ip) = makeTeslaArc o (itm ^. itParams) pos (Q.qToAng q) w pos = p ^. _xy determineProjectileTracking :: DTree OItem -> DTree OItem -> RocketHoming diff --git a/src/Dodge/Item/Weapon/Bullet.hs b/src/Dodge/Item/Weapon/Bullet.hs index a054d04b5..6659a9629 100644 --- a/src/Dodge/Item/Weapon/Bullet.hs +++ b/src/Dodge/Item/Weapon/Bullet.hs @@ -16,6 +16,7 @@ defaultBullet = , _buDrag = 1 , _buPos = 0 , _buOldPos = 0 + , _buOrigin = UnassignedO } --basicBulDams :: [Damage] diff --git a/src/Dodge/Laser/Update.hs b/src/Dodge/Laser/Update.hs index 14495a3a6..8ff61767e 100644 --- a/src/Dodge/Laser/Update.hs +++ b/src/Dodge/Laser/Update.hs @@ -14,7 +14,7 @@ updateLaser w pt = ( case _lpType pt of DamageLaser dam -> damThingHitWith - (\p2 -> Lasering dam p2 (xp - sp)) + (\p2 -> Lasering dam p2 (xp - sp) (pt ^. lpOrigin)) thHit w TargetingLaser itid -> w & pointerToItemID itid . itTargeting . itTgPos ?~ last ps diff --git a/src/Dodge/Machine/Destroy.hs b/src/Dodge/Machine/Destroy.hs index e49dd90d4..d000bc35c 100644 --- a/src/Dodge/Machine/Destroy.hs +++ b/src/Dodge/Machine/Destroy.hs @@ -16,7 +16,7 @@ destroyMachine mc = (cWorld . lWorld . machines %~ IM.delete (_mcID mc)) . deleteWallIDs (IM.keysSet $ _mcFootPrint mc) . makeMachineDebris mc - . makeSmallExplosionAt (20 & _xy .~ _mcPos mc) 0 + . makeSmallExplosionAt (McIndirectO (mc ^. mcID)) (20 & _xy .~ _mcPos mc) 0 . mcKillTerm mc . mcKillBut mc . destroyMcType (mc ^. mcType) mc diff --git a/src/Dodge/Material/Damage.hs b/src/Dodge/Material/Damage.hs index 8cc28a07f..478ce1623 100644 --- a/src/Dodge/Material/Damage.hs +++ b/src/Dodge/Material/Damage.hs @@ -40,14 +40,14 @@ laserSpark = makeSpark FireSpark damageStone :: Damage -> ECW -> World -> (Int,World) damageStone dm ecw w = case dm of - Lasering _ p t -> f 0 $ laserSpark (outTo p t) (rdir p t) - Piercing _ p t -> + Lasering _ p t _ -> f 0 $ laserSpark (outTo p t) (rdir p t) + Piercing _ p t _ -> f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t) . makeDustAt Stone 200 (addZ 20 (outTo p t)) -- . randsound p [slapS, slap1S,slap2S,slap3S,slap4S,slap5S,slap6S,slap7S] . randsound p [slapS, slap1S, slap2S] - Blunt _ p t -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) - Shattering _ p t -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) + Blunt _ p t _ -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) + Shattering _ p t _ -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) Crushing{} -> f dmam id Explosive{} -> f dmam id Sparking{} -> f 0 id @@ -91,14 +91,14 @@ damagePiezoelectric = damageStone damagePhotovoltaic :: Damage -> ECW -> World -> (Int,World) damagePhotovoltaic dm ecw w = case dm of - Lasering _ p t -> f (10*dmam) $ laserSpark (outTo p t) (rdir p t) - Piercing _ p t -> + Lasering _ p t _ -> f (10*dmam) $ laserSpark (outTo p t) (rdir p t) + Piercing _ p t _ -> f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t) . makeDustAt Stone 200 (addZ 20 (outTo p t)) -- . randsound p [slapS, slap1S,slap2S,slap3S,slap4S,slap5S,slap6S,slap7S] . randsound p [slapS, slap1S, slap2S] - Blunt _ p t -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) - Shattering _ p t -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) + Blunt _ p t _ -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) + Shattering _ p t _ -> f dmam $ makeDustAt Stone 200 (addZ 20 (outTo p t)) Crushing{} -> f dmam id Explosive{} -> f dmam id Sparking{} -> f 0 id @@ -124,11 +124,11 @@ damagePhotovoltaic dm ecw w = case dm of damageMetal :: Damage -> ECW -> World -> (Int,World) damageMetal dm ecw w = case dm of - Lasering _ p t -> f 0 $ laserSpark (outTo p t) (rdir p t) - Piercing _ p t -> f dmam $ + Lasering _ p t _ -> f 0 $ laserSpark (outTo p t) (rdir p t) + Piercing _ p t _ -> f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t) . randsound p [tingS, ting1S, ting2S, ting3S, ting4S, ting5S] - Blunt _ p t -> f dmam $ + Blunt _ p t _ -> f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t) . randsound p [clangS,clang1S,clang2S] Shattering {} -> f dmam id @@ -158,7 +158,7 @@ damageMetal dm ecw w = case dm of damageFlesh :: Damage -> ECW -> World -> (Int,World) damageFlesh dm _ w = (dm ^. dmAmount,) $ w & case dm of Lasering {} -> id - Piercing _ p t -> + Piercing _ p t _ -> randsound p [ bloodShort1S @@ -171,7 +171,7 @@ damageFlesh dm _ w = (dm ^. dmAmount,) $ w & case dm of , bloodShort8S ] . makeDustAt Flesh 50 (addZ 20 (outTo p t)) - Blunt _ p _ -> randsound p [hitS] + Blunt _ p _ _ -> randsound p [hitS] Shattering {} -> id Crushing{} -> id Explosive{} -> id @@ -192,14 +192,14 @@ damageFlesh dm _ w = (dm ^. dmAmount,) $ w & case dm of damageDirt :: Damage -> ECW -> World -> (Int,World) damageDirt dm _ w = (dm^. dmAmount,) $ w & case dm of - Lasering _ p t -> -- makeSpark FireSpark (outTo p t) (rdir p t) + Lasering _ p t _ -> -- makeSpark FireSpark (outTo p t) (rdir p t) makeDustAt Dirt 200 (addZ 20 (outTo p t)) - Piercing _ p t -> + Piercing _ p t _ -> makeDustAt Dirt 200 (addZ 20 (outTo p t)) -- . randsound p [slapS, slap1S] . randsound p [slapS, slap1S,slap2S,slap3S,slap4S,slap5S,slap6S,slap7S] - Blunt _ p t -> makeDustAt Dirt 200 (addZ 20 (outTo p t)) - Shattering _ p t -> makeDustAt Dirt 200 (addZ 20 (outTo p t)) + Blunt _ p t _ -> makeDustAt Dirt 200 (addZ 20 (outTo p t)) + Shattering _ p t _ -> makeDustAt Dirt 200 (addZ 20 (outTo p t)) Crushing{} -> id Explosive{} -> id Sparking{} -> id @@ -219,16 +219,16 @@ damageDirt dm _ w = damageGlass :: Damage -> ECW -> World -> (Int,World) damageGlass dm ecw w = case dm of Lasering {} -> f 0 id - Piercing _ p t -> + Piercing _ p t _ -> f dmam $ makeSpark NormalSpark (outTo p t) (rdir p t) -- . makeDustAt Stone 200 (addZ 20 (outTo p t)) . randsound p [smallGlass1S, smallGlass2S, smallGlass3S, smallGlass4S] - Blunt _ p _ -> f dmam $ -- makeDustAt Stone 200 (addZ 20 (outTo p t)) + Blunt _ p _ _ -> f dmam $ -- makeDustAt Stone 200 (addZ 20 (outTo p t)) randsound p [smallGlass1S, smallGlass2S, smallGlass3S, smallGlass4S] - Shattering _ p t -> f dmam $ makeDustAt Glass 200 (addZ 20 (outTo p t)) + Shattering _ p t _ -> f dmam $ makeDustAt Glass 200 (addZ 20 (outTo p t)) . randsound p [smallGlass1S, smallGlass2S, smallGlass3S, smallGlass4S] Crushing{} -> f dmam id - Explosive _ p -> f dmam -- the sound comes from the explosion center, which is not correct... + Explosive _ _ p -> f dmam -- the sound comes from the explosion center, which is not correct... $ randsound p [smallGlass1S, smallGlass2S, smallGlass3S, smallGlass4S] Sparking{} -> f 0 id Flaming{} -> f 0 id @@ -286,14 +286,14 @@ damageGlass dm ecw w = case dm of damageCrystal :: Damage -> ECW -> World -> (Int,World) damageCrystal dm ecw w = case dm of Lasering {} -> f id - Piercing _ p t -> + Piercing _ p t _ -> f $ makeSpark NormalSpark (outTo p t) (rdir p t) . randsound p [marimbaC5S,marimbaE5S,marimbaG5S,marimbaB6S] - Blunt _ p _ -> f $ -- makeDustAt Stone 200 (addZ 20 (outTo p t)) + Blunt _ p _ _ -> f $ -- makeDustAt Stone 200 (addZ 20 (outTo p t)) randsound p [marimbaC5S,marimbaE5S,marimbaG5S,marimbaB6S] - Shattering _ p _ -> f $ randsound p [marimbaC5S,marimbaE5S,marimbaG5S,marimbaB6S] + Shattering _ p _ _ -> f $ randsound p [marimbaC5S,marimbaE5S,marimbaG5S,marimbaB6S] Crushing{} -> f id - Explosive _ p -> f -- the sound comes from the explosion center, which is not correct... + Explosive _ _ p -> f -- the sound comes from the explosion center, which is not correct... $ randsound p [smallGlass1S, smallGlass2S, smallGlass3S, smallGlass4S] Sparking{} -> f id Flaming{} -> f id diff --git a/src/Dodge/Payload.hs b/src/Dodge/Payload.hs index d31315298..404fca66d 100644 --- a/src/Dodge/Payload.hs +++ b/src/Dodge/Payload.hs @@ -15,19 +15,20 @@ import Geometry.Data import LensHelp import Linear.V3 -usePayload :: Payload -> Point3 -> Point3 -> World -> World +usePayload :: Payload -> DamageOrigin -> Point3 -> Point3 -> World -> World usePayload = \case ExplosionPayload -> makeExplosionAt ShrapnelBomb -> makeShrapnelAt - DudPayload -> const (const id) + DudPayload -> const (const (const id)) -makeShrapnelAt :: Point3 -> Point3 -> World -> World -makeShrapnelAt p' vel' w = +-- potential turn the origin indirect? +makeShrapnelAt :: DamageOrigin -> Point3 -> Point3 -> World -> World +makeShrapnelAt o p' vel' w = w & soundMultiFrom [Explosion 0, Explosion 1] p bangS Nothing & cWorld . lWorld . worldEvents .:~ MakeTempLight (LSParam p' 150 (V3 0.8 0.8 0.8)) 20 - & makeShockwaveAt [] p' 50 5 0 white + & makeShockwaveAt [] p' 50 5 0 white o & cWorld . lWorld . bullets .++~ buls where p = p' ^. _xy @@ -43,3 +44,4 @@ makeShrapnelAt p' vel' w = & buDrag .~ drag & buPos .~ (p - v) & buOldPos .~ (p - v) + & buOrigin .~ o diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index 4b807e68a..881d65f36 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -45,6 +45,7 @@ createShell (p, q) mdetonator mscreen stab pjtype payload cr w = , _pjType = pjtype , _pjDetonatorID = mdetonator , _pjScreenID = mscreen + , _pjOrigin = CrWeaponO $ cr ^. crID } where dir = Q.qToAng q diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index b30bffda6..9850c41e4 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -143,6 +143,7 @@ doThrust pj smoke w = %~ (\v -> accel + frict *^ v) & soundContinue (ShellSound i) (ep ^. _xy) missileLaunchS (Just 1) & makeFlamelet + (pj ^. pjOrigin) (sp - 0.5 *^ vel) (vel + rotateV (pi + sparkD) accel `v2z` 0) 3 @@ -283,7 +284,7 @@ explodeShell pj w = & pjlens . pjTimer .~ 30 - & usePayload (_pjPayload pj) (pj ^. pjPos) (pj ^. pjVel) + & usePayload (_pjPayload pj) (pj ^. pjOrigin) (pj ^. pjPos) (pj ^. pjVel) & stopSoundFrom (ShellSound pjid) & updatedetonator where diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 9bb952dd1..3793114fe 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -57,6 +57,8 @@ tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor + , tToBTree "" . return . cleatOnward <$> slowDoorRoom + , corDoor --, tToBTree "" . return . cleatOnward <$> (xChasm 200 200 , tToBTree "" . return . cleatOnward <$> ((putSingleLight =<< roomRectAutoLights 300 300) <&> rmPmnts <>~ [sps0 (PutCrit slimeCrit) & plSpot . psPos .~ V2 150 100 diff --git a/src/Dodge/Shockwave/Update.hs b/src/Dodge/Shockwave/Update.hs index 4fde91027..6d210130c 100644 --- a/src/Dodge/Shockwave/Update.hs +++ b/src/Dodge/Shockwave/Update.hs @@ -25,7 +25,7 @@ moveShockwave w sw doDams | (p ^. _z >= 0) && (p ^. _z < 25) && t > 5 - = damageInCircle (Explosive dam) (p ^. _xy) rad + = damageInCircle (Explosive dam (sw ^. swOrigin)) (p ^. _xy) rad | otherwise = id moveInverseShockwave :: diff --git a/src/Dodge/Spark.hs b/src/Dodge/Spark.hs index efc0029d0..60a937378 100644 --- a/src/Dodge/Spark.hs +++ b/src/Dodge/Spark.hs @@ -39,9 +39,9 @@ sparkDam = damageCrWl . sparkToDamage sparkToDamage :: Spark -> [Damage] sparkToDamage sp = case _skType sp of - ElectricSpark -> [Electrical 10] - FireSpark -> [Flaming 1] - NormalSpark -> [Sparking 10] + ElectricSpark -> [Electrical 10 UnassignedO] + FireSpark -> [Flaming 1 UnassignedO] + NormalSpark -> [Sparking 10 UnassignedO] makeSpark :: SparkType -> Point2 -> Float -> World -> World makeSpark st p d = diff --git a/src/Dodge/Tesla.hs b/src/Dodge/Tesla.hs index af3c92b74..3980f77ed 100644 --- a/src/Dodge/Tesla.hs +++ b/src/Dodge/Tesla.hs @@ -25,14 +25,15 @@ import Picture import RandomHelp --import Shape -makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams) -makeTeslaArc ip pos dir w = +makeTeslaArc :: DamageOrigin -> ItemParams -> Point2 -> Float -> World -> (World, ItemParams) +makeTeslaArc o ip pos dir w = ( w & randGen .~ g & cWorld . lWorld . teslaArcs .:~ TeslaArc { _taArcSteps = newarc , _taTimer = 2 , _taColor = brightX 100 1.5 col + , _taOrigin = o } , ip & currentArc .~ newarc ) diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 020dd21fd..b90496896 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -540,7 +540,7 @@ updatePlasmaBall w pb dodam = \case Left cr -> creatures . ix (_crID cr) . crDamage .:~ thedam Right wl -> wallDamages . at (_wlID wl) . non mempty .:~ thedam - thedam = Lasering 100 ep (pb ^. pbVel) + thedam = Lasering 100 ep (pb ^. pbVel) (pb ^. pbOrigin) sp = pb ^. pbPos ep = sp + pb ^. pbVel thit = thingHit sp ep w @@ -560,7 +560,7 @@ updatePulseBall pb w dodam = \case Left cr -> creatures . ix (_crID cr) . crDamage .:~ thedam Right wl -> wallDamages . at (_wlID wl) . non mempty .:~ thedam - thedam = Lasering 100 ep (pb ^. pzbVel) + thedam = Lasering 100 ep (pb ^. pzbVel) (pb ^. pzbOrigin) sp = pb ^. pzbPos ep = sp + pb ^. pzbVel thit = listToMaybe $ thingsHitZ 20 sp ep w @@ -718,7 +718,7 @@ updateTeslaArc w pt , randWallReflect ld' wl ) | ArcStep lp' ld' _ <- last thearc = (lp', rp ld') - damthings (ArcStep _ _ crwl) = damageCrWlID [Electrical 50] crwl + damthings (ArcStep _ _ crwl) = damageCrWlID [Electrical 50 (pt ^. taOrigin)] crwl updatePulseLaser :: PulseLaser -> (Endo World, [PulseLaser]) updatePulseLaser pz = case pz ^. pzTimer of @@ -734,14 +734,14 @@ updatePulseLaser pz = case pz ^. pzTimer of dodam thit = case thit of ((p, OCreature cr) : _) -> cWorld . lWorld . creatures . ix (_crID cr) . crDamage - .:~ Lasering (pz ^. pzDamage) p (xp - sp) + .:~ Lasering (pz ^. pzDamage) p (xp - sp) (pz ^. pzOrigin) ((p, OWall wl) : _) -> cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty - .:~ Lasering (pz ^. pzDamage) p (xp - sp) + .:~ Lasering (pz ^. pzDamage) p (xp - sp) (pz ^. pzOrigin) ((_, OPulseBall pb) : xs) -> dodam xs . (cWorld . lWorld . pulseBalls . ix (_pzbID pb) . pzbTimer .~ 0) - . makeExplosionAt (_pzbPos pb `v2z` 20) 0 + . makeExplosionAt (pb ^. pzbOrigin) (_pzbPos pb `v2z` 20) 0 _ -> id phasev = _pzPhaseV pz sp = _pzPos pz diff --git a/src/Dodge/Update/Cloud.hs b/src/Dodge/Update/Cloud.hs index 9b6d0e0a5..44d8ee7a2 100644 --- a/src/Dodge/Update/Cloud.hs +++ b/src/Dodge/Update/Cloud.hs @@ -14,7 +14,7 @@ cloudPoisonDamage :: Gas -> World -> World cloudPoisonDamage c w = foldl' (flip doDam) w (filter f $ crsNearPoint clpos w) where doDam cr = - cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ Poison 1 + cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ Poison 1 (c ^. gsOrigin) f cr = dist3 (_crPos cr & _z +~ 20) (_gsPos c) < crRad (cr ^. crType) + 20 && isJust (cr ^? crHP . _HP) clpos = stripZ $ _gsPos c diff --git a/src/Dodge/Wall/Damage.hs b/src/Dodge/Wall/Damage.hs index e1c759bd0..8e9d74392 100644 --- a/src/Dodge/Wall/Damage.hs +++ b/src/Dodge/Wall/Damage.hs @@ -50,7 +50,7 @@ damageMachine dam x mcid w = case w ^? cWorld . lWorld . machines . ix mcid of , sensorTypeDamages (se ^. sensType) dam -> (mempty,mcDamSensorUpdate' (_dmAmount dam) se mc w) Just mc | McTurret{} <- mc ^. mcType - , Electrical edam <- dam + , Electrical {_dmAmount=edam} <- dam -> (mempty, w & cWorld . lWorld . machines . ix mcid . mcType . mctTurretStun %~ (min 100 . (+ edam))) Just mc | _mcHP mc < x -> destroyMachine' mc w _ -> (mempty, w & cWorld . lWorld . machines . ix mcid . mcHP -~ x) diff --git a/src/Dodge/WallCreatureCollisions.hs b/src/Dodge/WallCreatureCollisions.hs index cfb654d38..3c93bd3d1 100644 --- a/src/Dodge/WallCreatureCollisions.hs +++ b/src/Dodge/WallCreatureCollisions.hs @@ -45,7 +45,7 @@ pushCr w wls cr -- || wlsCrush' w (cr ^. crPos . _xy) twls = | wlsCrush' w (cr ^. crPos . _xy) twls = ecr - & crDamage <>~ [Crushing 1000 0] + & crDamage <>~ [Crushing 1000 0 UnassignedO] & crPos . _xy .~ ap -- | Just s <- wlsCrush w (cr ^. crPos . _xy) twls = -- ecr diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 75dcc9111..419908bd5 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -22,14 +22,10 @@ import Linear import Picture import RandomHelp -makePoisonExplosionAt :: - -- | Position - Point2 -> - World -> - World -makePoisonExplosionAt p w = +makePoisonExplosionAt :: DamageOrigin -> Point2 -> World -> World +makePoisonExplosionAt o p w = soundMultiFrom [Explosion 0, Explosion 1] p bangS Nothing $ - foldl' (flip $ makeGasCloud p) w $ + foldl' (flip $ makeGasCloud o p) w $ replicateM 25 (randInCirc 2) & evalState $ _randGen w -- just change the number after replicateM to get more or less clouds @@ -53,47 +49,44 @@ makeTeslaExplosionAt = undefined -- (\i -> over projectiles (IM.insert (pks!!i) (makeTeslaArcAt (pks!!i) pos (xs!!i)))) -- [1 .. 29] -makeFlameExplosionAt :: - Point2 -> - World -> - World -makeFlameExplosionAt p w = +makeFlameExplosionAt :: DamageOrigin -> Point2 -> World -> World +makeFlameExplosionAt o p w = soundMultiFrom [Explosion 0, Explosion 1] p bangS Nothing w & cWorld . lWorld . flames .++~ newFlames where newFlames = zipWith makeFlameWithVelAndTime velocities timers - makeFlameWithVelAndTime vel time = Flame time vel p + makeFlameWithVelAndTime vel time = Flame time vel p o velocities = replicateM 15 (randInCirc 1) & evalState $ _randGen w timers = randomRs (80, 100) $ _randGen w -makeExplosionAt :: Point3 -> Point3 -> World -> World -makeExplosionAt p vel w = +makeExplosionAt :: DamageOrigin -> Point3 -> Point3 -> World -> World +makeExplosionAt o p vel w = w & soundStart (Explosion (w ^. cWorld . lWorld . lClock)) (p ^. _xy) bangS Nothing & addFlames & cWorld . lWorld . worldEvents .:~ MakeTempLight (LSParam p 150 (V3 1 0.5 0)) 20 - & makeShockwaveAt [] p 50 100 1 white + & makeShockwaveAt [] p 50 100 1 white o where fVs = fmap (`v2z` 0) $ replicateM 100 (randInCirc 8) & evalState $ _randGen w fdamps = replicateM 100 (state $ randomR (0, 1)) & evalState $ _randGen w sizes = randomRs (2, 9) $ _randGen w times = randomRs (15, 20) $ _randGen w - mF v damp = makeFlamelet p (v + damp *^ vel) + mF v damp = makeFlamelet o p (v + damp *^ vel) newFs = zipWith4 mF fVs fdamps sizes times addFlames w' = foldl' (&) w' newFs -makeSmallExplosionAt :: Point3 -> Point3 -> World -> World -makeSmallExplosionAt p vel w = +makeSmallExplosionAt :: DamageOrigin -> Point3 -> Point3 -> World -> World +makeSmallExplosionAt o p vel w = w & soundStart (Explosion (w ^. cWorld . lWorld . lClock)) (p ^. _xy) bangS Nothing & addFlames & cWorld . lWorld . worldEvents .:~ MakeTempLight (LSParam p 150 (V3 1 0.5 0)) 20 - & makeShockwaveAt [] p 40 100 1 white + & makeShockwaveAt [] p 40 100 1 white o where fVs = fmap (`v2z` 0) $ replicateM 5 (randInCirc 2) & evalState $ _randGen w fdamps = replicateM 100 (state $ randomR (0, 1)) & evalState $ _randGen w sizes = randomRs (2, 9) $ _randGen w times = randomRs (15, 20) $ _randGen w - mF v damp = makeFlamelet p (v + damp *^ vel) + mF v damp = makeFlamelet o p (v + damp *^ vel) newFs = zipWith4 mF fVs fdamps sizes times addFlames w' = foldl' (&) w' newFs diff --git a/src/Dodge/WorldEvent/Shockwave.hs b/src/Dodge/WorldEvent/Shockwave.hs index 089401b0f..01da863c2 100644 --- a/src/Dodge/WorldEvent/Shockwave.hs +++ b/src/Dodge/WorldEvent/Shockwave.hs @@ -22,9 +22,10 @@ makeShockwaveAt :: -- | Color of shockwave. Color -> -- | Start world. + DamageOrigin -> World -> World -makeShockwaveAt is p rad dam push col = +makeShockwaveAt is p rad dam push col d = cWorld . lWorld . shockwaves .:~ Shockwave { _swInvulnerableCrs = is @@ -36,6 +37,7 @@ makeShockwaveAt is p rad dam push col = , _swPush = push , _swMaxTime = 10 , _swTimer = 10 + , _swOrigin = d } {- Create a shockwave going from an outside circle into a center point. -} @@ -44,9 +46,10 @@ inverseShockwaveAt :: Float -> -- Radius Int -> -- Damage Float -> -- Push amount + DamageOrigin -> World -> World -inverseShockwaveAt p rad dam push = +inverseShockwaveAt p rad dam push d = cWorld . lWorld . shockwaves .:~ Shockwave { _swDirection = InwardShockwave @@ -58,4 +61,5 @@ inverseShockwaveAt p rad dam push = , _swPush = push , _swMaxTime = 10 , _swTimer = 10 + , _swOrigin = d } diff --git a/src/Dodge/WorldEvent/SpawnParticle.hs b/src/Dodge/WorldEvent/SpawnParticle.hs index a679ada55..df5318f21 100644 --- a/src/Dodge/WorldEvent/SpawnParticle.hs +++ b/src/Dodge/WorldEvent/SpawnParticle.hs @@ -9,17 +9,19 @@ import LensHelp -- | At writing the radius is half the size of the effect area makeGasCloud :: + DamageOrigin -> -- | Position Point2 -> -- | Velocity Point2 -> World -> World -makeGasCloud pos vel = cWorld . lWorld . gasses .:~ Gas +makeGasCloud o pos vel = cWorld . lWorld . gasses .:~ Gas { _gsPos = addZ 20 pos , _gsVel = addZ 0 vel , _gsTimer = 400 , _gsType = PoisonGas + , _gsOrigin = o } {- Attach poison cloud damage to creatures near cloud. -} diff --git a/tags b/tags index 3e1ef9b2c..4520e32ba 100644 --- a/tags +++ b/tags @@ -74,11 +74,11 @@ AttachType src/Dodge/Data/Item/Combine.hs 92;" t Attention src/Dodge/Data/Creature/Perception.hs 58;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" C Audition src/Dodge/Data/Creature/Perception.hs 45;" t -AutoCrit src/Dodge/Data/Creature/Misc.hs 93;" C +AutoCrit src/Dodge/Data/Creature/Misc.hs 94;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C -AvPosture src/Dodge/Data/Creature/Misc.hs 97;" C +AvPosture src/Dodge/Data/Creature/Misc.hs 98;" C Avatar src/Dodge/Data/Creature/Misc.hs 48;" C -AvatarPosture src/Dodge/Data/Creature/Misc.hs 97;" t +AvatarPosture src/Dodge/Data/Creature/Misc.hs 98;" t Awareness src/Dodge/Data/Creature/Perception.hs 63;" t BANGCONE src/Dodge/Data/Item/Combine.hs 150;" C BANGROD src/Dodge/Data/Item/Combine.hs 159;" C @@ -94,7 +94,7 @@ BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 180;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 168;" C BLUE src/Color/Data.hs 14;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 151;" C -BPheremone src/Dodge/Data/Cloud.hs 45;" C +BPheremone src/Dodge/Data/Cloud.hs 47;" C BQuad src/Geometry/Bezier.hs 9;" t BRAINHAT src/Dodge/Data/Item/Combine.hs 128;" C BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 136;" C @@ -105,13 +105,13 @@ BURSTRIFLE src/Dodge/Data/Item/Combine.hs 158;" C BackdropCurs src/Dodge/Data/SelectionList.hs 23;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C Bark src/Dodge/Data/ActionPlan.hs 41;" C -BarrelCrit src/Dodge/Data/Creature/Misc.hs 94;" C +BarrelCrit src/Dodge/Data/Creature/Misc.hs 95;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 34;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 109;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 105;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 110;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 106;" C BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C -BasicBulletTrajectory src/Dodge/Data/Bullet.hs 41;" C -BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" C +BasicBulletTrajectory src/Dodge/Data/Bullet.hs 42;" C +BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 49;" C BasicFlare src/Dodge/Data/Muzzle.hs 30;" C Beam src/Dodge/Data/Beam.hs 16;" t BeamCombine src/Dodge/Data/Beam.hs 45;" C @@ -123,10 +123,10 @@ BeamSplitterSF src/Dodge/Data/ComposedItem.hs 50;" C BeamType src/Dodge/Data/Beam.hs 44;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C BeeCrit src/Dodge/Data/Creature/Misc.hs 83;" C -BeePheremone src/Dodge/Data/Cloud.hs 45;" t +BeePheremone src/Dodge/Data/Cloud.hs 47;" t BeltBulletAmmo src/Dodge/Data/AmmoType.hs 11;" C -BezierTrajectory src/Dodge/Data/Bullet.hs 42;" C -BezierTrajectoryType src/Dodge/Data/Bullet.hs 49;" C +BezierTrajectory src/Dodge/Data/Bullet.hs 43;" C +BezierTrajectoryType src/Dodge/Data/Bullet.hs 50;" C Biome src/Dodge/Data/Scenario.hs 71;" t BlBl src/Dodge/Data/BlBl.hs 9;" t BlConst src/Dodge/Data/BlBl.hs 11;" C @@ -142,27 +142,27 @@ BloomLayer src/Picture/Data.hs 21;" C Blunt src/Dodge/Data/Damage.hs 17;" C Boosting src/Dodge/Data/Creature/Stance.hs 28;" C BottomMenuOption src/Dodge/Data/Universe.hs 77;" C -BounceBullet src/Dodge/Data/Bullet.hs 28;" C +BounceBullet src/Dodge/Data/Bullet.hs 29;" C BoundCurs src/Dodge/Data/SelectionList.hs 22;" C Bound_box_screen src/Dodge/Data/Config.hs 95;" C Bounds src/Dodge/Data/Bounds.hs 10;" t BrigSS src/Dodge/Data/Scenario.hs 102;" C Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C -BulBall src/Dodge/Data/Bullet.hs 33;" C -BulFlak src/Dodge/Data/Bullet.hs 35;" C -BulFrag src/Dodge/Data/Bullet.hs 36;" C -BulGas src/Dodge/Data/Bullet.hs 37;" C -BulPlain src/Dodge/Data/Bullet.hs 34;" C +BulBall src/Dodge/Data/Bullet.hs 34;" C +BulFlak src/Dodge/Data/Bullet.hs 36;" C +BulFrag src/Dodge/Data/Bullet.hs 37;" C +BulGas src/Dodge/Data/Bullet.hs 38;" C +BulPlain src/Dodge/Data/Bullet.hs 35;" C Bullet src/Dodge/Data/Bullet.hs 16;" t BulletAmmo src/Dodge/Data/AmmoType.hs 10;" C -BulletEffect src/Dodge/Data/Bullet.hs 26;" t +BulletEffect src/Dodge/Data/Bullet.hs 27;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t 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 50;" C -BulletPayload src/Dodge/Data/Bullet.hs 32;" t -BulletTrajectory src/Dodge/Data/Bullet.hs 40;" t -BulletTrajectoryType src/Dodge/Data/Bullet.hs 47;" t +BulletPayload src/Dodge/Data/Bullet.hs 33;" t +BulletTrajectory src/Dodge/Data/Bullet.hs 41;" t +BulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" t BurstTrigger src/Dodge/Data/TriggerType.hs 12;" C Button src/Dodge/Data/Button.hs 29;" t ButtonAccessTerminal src/Dodge/Data/Button.hs 27;" C @@ -217,8 +217,8 @@ Circ_collision_test src/Dodge/Data/Config.hs 99;" C Climate src/Dodge/Data/Scenario.hs 32;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 146;" C Close_shape_culling src/Dodge/Data/Config.hs 93;" C -Cloud src/Dodge/Data/Cloud.hs 12;" t -CloudType src/Dodge/Data/Cloud.hs 20;" t +Cloud src/Dodge/Data/Cloud.hs 13;" t +CloudType src/Dodge/Data/Cloud.hs 21;" t ClusterLink src/Dodge/Data/RoomCluster.hs 13;" t ClusterStatus src/Dodge/Data/RoomCluster.hs 9;" t Cognizant src/Dodge/Data/Creature/Perception.hs 65;" C @@ -263,10 +263,12 @@ CrHP src/Dodge/Data/Creature.hs 63;" t CrHitSound src/Dodge/Data/SoundOrigin.hs 33;" C CrID src/Dodge/Data/CrWlID.hs 10;" C CrImp src/Dodge/Data/CreatureEffect.hs 9;" t +CrIndirectO src/Dodge/Data/Damage.hs 34;" C CrInt src/Dodge/Data/Item/Location.hs 22;" t CrIsAiming src/Dodge/Data/CreatureEffect.hs 20;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 20;" C CrIsCorpse src/Dodge/Data/Creature.hs 65;" C +CrMeleeO src/Dodge/Data/Damage.hs 32;" C CrMouth src/Dodge/Data/SoundOrigin.hs 17;" C CrMvType src/Dodge/Data/Creature/Misc.hs 25;" t CrOpenAutoDoor src/Dodge/Data/CreatureEffect.hs 21;" C @@ -275,6 +277,7 @@ CrTurnAround src/Dodge/Data/CreatureEffect.hs 24;" C CrWdAc src/Dodge/Data/CreatureEffect.hs 27;" t CrWdBFSThenReturn src/Dodge/Data/CreatureEffect.hs 28;" C CrWeaponFailSound src/Dodge/Data/SoundOrigin.hs 21;" C +CrWeaponO src/Dodge/Data/Damage.hs 33;" C CrWeaponSound src/Dodge/Data/SoundOrigin.hs 19;" C CrWlID src/Dodge/Data/CrWlID.hs 10;" t Cr_awareness src/Dodge/Data/Config.hs 85;" C @@ -286,10 +289,10 @@ CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C Creature src/Dodge/Data/Creature.hs 35;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C -CreatureShape src/Dodge/Data/Creature/Misc.hs 99;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 100;" t CreatureType src/Dodge/Data/Creature/Misc.hs 47;" t Crushing src/Dodge/Data/Damage.hs 19;" C -CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C +CryoReleaseCloud src/Dodge/Data/Cloud.hs 24;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C Crystal src/Dodge/Data/Material.hs 16;" C Cull_more_lights src/Dodge/Data/Config.hs 92;" C @@ -310,7 +313,8 @@ DTree src/Dodge/Data/DoubleTree.hs 16;" t DamSensor src/Dodge/Data/Machine/Sensor.hs 19;" C Damage src/Dodge/Data/Damage.hs 15;" t DamageHitSound src/Dodge/Data/SoundOrigin.hs 42;" C -DamageLaser src/Dodge/Data/Laser.hs 15;" C +DamageLaser src/Dodge/Data/Laser.hs 16;" C +DamageOrigin src/Dodge/Data/Damage.hs 31;" t DamageSensor src/Dodge/Data/Machine/Sensor.hs 19;" t DamageType src/Dodge/Data/Damage/Type.hs 3;" t DeathType src/Dodge/Data/Creature.hs 70;" t @@ -329,7 +333,7 @@ DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 11;" C DefaultPlasma src/Dodge/Data/PlasmaBall.hs 20;" C DefaultRoomType src/Dodge/Data/Room.hs 32;" C DestroyBeing src/Dodge/Data/Scenario.hs 8;" C -DestroyBullet src/Dodge/Data/Bullet.hs 27;" C +DestroyBullet src/Dodge/Data/Bullet.hs 28;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 183;" t Dirt src/Dodge/Data/Material.hs 12;" C @@ -365,7 +369,7 @@ DropItem src/Dodge/Data/ActionPlan.hs 40;" C DropShadowSI src/Dodge/Data/SelectionList.hs 59;" C DudPayload src/Dodge/Data/Payload.hs 11;" C Dungeon src/Dodge/Data/Scenario.hs 66;" C -Dust src/Dodge/Data/Cloud.hs 26;" t +Dust src/Dodge/Data/Cloud.hs 27;" t EBSound src/Dodge/Data/SoundOrigin.hs 41;" C ECW src/Dodge/Material/Damage.hs 14;" t ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 160;" C @@ -381,12 +385,12 @@ ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C ElectricSpark src/Dodge/Data/Spark.hs 19;" C Electrical src/Dodge/Data/Damage.hs 24;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 12;" C -ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 13;" C +ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 14;" C Electronics src/Dodge/Data/Material.hs 18;" C EllShad src/Picture/Data.hs 34;" C EncircleFlock src/Dodge/Data/Creature/State.hs 15;" C -EnergyBall src/Dodge/Data/EnergyBall.hs 15;" t -EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 10;" t +EnergyBall src/Dodge/Data/EnergyBall.hs 16;" t +EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 11;" t EnergyGeneratorSS src/Dodge/Data/Scenario.hs 109;" C EngineSS src/Dodge/Data/Scenario.hs 88;" C Enterrement src/Dodge/Data/Damage.hs 27;" C @@ -404,8 +408,8 @@ Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 39;" C ExplosionPayload src/Dodge/Data/Payload.hs 9;" C Explosive src/Dodge/Data/Damage.hs 25;" C -ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C -ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 111;" C +ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 15;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 112;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 16;" C ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t Eyes src/Dodge/Data/Creature/Perception.hs 39;" C @@ -431,20 +435,20 @@ Fixated src/Dodge/Data/Creature/Perception.hs 60;" C FixedCoordLayer src/Picture/Data.hs 23;" C FixedSelectionWidth src/Dodge/Data/SelectionList.hs 43;" C FlIt src/Dodge/Data/FloorItem.hs 11;" C -Flame src/Dodge/Data/Flame.hs 11;" t +Flame src/Dodge/Data/Flame.hs 12;" t FlameBeamCombine src/Dodge/Data/Beam.hs 37;" C FlameSound src/Dodge/Data/SoundOrigin.hs 29;" C -FlameletBall src/Dodge/Data/EnergyBall/Type.hs 12;" C +FlameletBall src/Dodge/Data/EnergyBall/Type.hs 13;" C Flamer src/Dodge/Data/SoundOrigin.hs 27;" C Flaming src/Dodge/Data/Damage.hs 21;" C Flank src/Dodge/Data/ActionPlan.hs 135;" C FlareType src/Dodge/Data/Muzzle.hs 28;" t -FlashBall src/Dodge/Data/EnergyBall/Type.hs 15;" C +FlashBall src/Dodge/Data/EnergyBall/Type.hs 16;" C Flashing src/Dodge/Data/Damage.hs 23;" C FlatFaces src/Shape/Data.hs 12;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 14;" C -FlechetteTrajectory src/Dodge/Data/Bullet.hs 43;" C -FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 50;" C +FlechetteTrajectory src/Dodge/Data/Bullet.hs 44;" C +FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 51;" C Flee src/Dodge/Data/ActionPlan.hs 150;" C Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C @@ -471,26 +475,26 @@ FullShadowFidelity src/Shape/Data.hs 20;" C FullSize src/Dodge/Data/Item/Params.hs 26;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C FunctionChangeSF src/Dodge/Data/ComposedItem.hs 35;" C -GBounce src/Dodge/Data/Projectile.hs 46;" C +GBounce src/Dodge/Data/Projectile.hs 48;" C GEqC src/SameConstr.hs 20;" c GIMBAL src/Dodge/Data/Item/Combine.hs 97;" C GLASSSHARD src/Dodge/Data/Item/Combine.hs 61;" C GLAUNCHER src/Dodge/Data/Item/Combine.hs 173;" C GRAPECANNON src/Dodge/Data/Item/Combine.hs 152;" C GREEN src/Color/Data.hs 13;" C -GStick src/Dodge/Data/Projectile.hs 47;" C -GStuckCreature src/Dodge/Data/Projectile.hs 48;" C -GStuckWall src/Dodge/Data/Projectile.hs 49;" C +GStick src/Dodge/Data/Projectile.hs 49;" C +GStuckCreature src/Dodge/Data/Projectile.hs 50;" C +GStuckWall src/Dodge/Data/Projectile.hs 51;" C GYROSCOPE src/Dodge/Data/Item/Combine.hs 98;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 19;" C GameOverOptions src/Dodge/Data/Universe.hs 72;" C GameRoom src/Dodge/GameRoom.hs 12;" t -Gas src/Dodge/Data/Cloud.hs 34;" t +Gas src/Dodge/Data/Cloud.hs 35;" t GasAmmo src/Dodge/Data/AmmoType.hs 14;" C GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" t GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" t GasParams src/Dodge/Data/Item/Use.hs 52;" C -GasType src/Dodge/Data/Cloud.hs 42;" t +GasType src/Dodge/Data/Cloud.hs 44;" t GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t @@ -512,8 +516,8 @@ GoesOnLeg src/Dodge/Data/Equipment/Misc.hs 14;" C GoesOnWrist src/Dodge/Data/Equipment/Misc.hs 13;" C Government src/Dodge/Data/Scenario.hs 43;" C GovernmentScope src/Dodge/Data/Scenario.hs 49;" t -Grenade src/Dodge/Data/Projectile.hs 31;" C -GrenadeHitEffect src/Dodge/Data/Projectile.hs 45;" t +Grenade src/Dodge/Data/Projectile.hs 33;" C +GrenadeHitEffect src/Dodge/Data/Projectile.hs 47;" t GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 38;" C Gust src/Dodge/Data/Gust.hs 11;" t GymSS src/Dodge/Data/Scenario.hs 104;" C @@ -537,9 +541,9 @@ HeldItemType src/Dodge/Data/Item/Combine.hs 141;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 15;" C HiddenGoal src/Dodge/Data/Scenario.hs 14;" C HighlightSI src/Dodge/Data/SelectionList.hs 58;" C -HiveCrit src/Dodge/Data/Creature/Misc.hs 88;" C -HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 41;" C -HomeUsingTargeting src/Dodge/Data/Projectile.hs 42;" C +HiveCrit src/Dodge/Data/Creature/Misc.hs 89;" C +HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 43;" C +HomeUsingTargeting src/Dodge/Data/Projectile.hs 44;" C Hospital src/Dodge/Data/Scenario.hs 69;" C Hotkey src/Dodge/Data/Equipment/Misc.hs 31;" t Hotkey0 src/Dodge/Data/Equipment/Misc.hs 48;" C @@ -561,7 +565,7 @@ HotkeyX src/Dodge/Data/Equipment/Misc.hs 36;" C HotkeyZ src/Dodge/Data/Equipment/Misc.hs 35;" C HoverCrit src/Dodge/Data/Creature/Misc.hs 69;" C Huge src/Shape/Data.hs 24;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 100;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 101;" C IMSI src/Dodge/Data/SelectionList.hs 41;" t IMSS src/Dodge/Data/SelectionList.hs 39;" t INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C @@ -585,7 +589,7 @@ InRealWorld src/Dodge/Data/Scenario.hs 18;" C InSimulation src/Dodge/Data/Scenario.hs 20;" C InVoid src/Dodge/Data/Item/Location.hs 39;" C Inanimate src/Dodge/Data/ActionPlan.hs 15;" C -IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 11;" C +IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 12;" C Inertial src/Dodge/Data/Damage.hs 28;" C InheritFloor src/Data/Tile.hs 12;" C Input src/Dodge/Data/Input.hs 33;" t @@ -608,7 +612,7 @@ InventoryPathing src/Dodge/Data/Item/Combine.hs 39;" t InventorySound src/Dodge/Data/SoundOrigin.hs 11;" C Investigate src/Dodge/Data/ActionPlan.hs 142;" C Invisible src/Dodge/Data/CamouflageStatus.hs 7;" C -InwardShockwave src/Dodge/Data/Shockwave.hs 12;" C +InwardShockwave src/Dodge/Data/Shockwave.hs 13;" C IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C ItCrWdItemHeldEffect src/Dodge/Data/WorldEffect.hs 17;" C ItCrWdItemHeldEffectNoHammer src/Dodge/Data/WorldEffect.hs 18;" C @@ -650,14 +654,14 @@ LabLink src/Dodge/Data/Room.hs 50;" C LabSS src/Dodge/Data/Scenario.hs 97;" C LabelCluster src/Dodge/Data/RoomCluster.hs 13;" C Laboratory src/Dodge/Data/Scenario.hs 61;" C -LampCrit src/Dodge/Data/Creature/Misc.hs 95;" C +LampCrit src/Dodge/Data/Creature/Misc.hs 96;" C Large src/Shape/Data.hs 25;" C LasBeamCombine src/Dodge/Data/Beam.hs 38;" C LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C LasSound src/Dodge/Data/SoundOrigin.hs 30;" C -Laser src/Dodge/Data/Laser.hs 19;" t +Laser src/Dodge/Data/Laser.hs 20;" t LaserSensor src/Dodge/Data/Machine/Sensor.hs 13;" C -LaserType src/Dodge/Data/Laser.hs 14;" t +LaserType src/Dodge/Data/Laser.hs 15;" t LaserWeaponXSF src/Dodge/Data/ComposedItem.hs 42;" C Lasering src/Dodge/Data/Damage.hs 22;" C LauncherAmmo src/Dodge/Data/AmmoType.hs 9;" C @@ -723,8 +727,8 @@ MagnetAttract src/Dodge/Data/Magnet.hs 17;" C MagnetBuBu src/Dodge/Data/Magnet.hs 14;" t MagnetDeflect src/Dodge/Data/Magnet.hs 16;" C MagnetRepulse src/Dodge/Data/Magnet.hs 18;" C -MagnetTrajectory src/Dodge/Data/Bullet.hs 44;" C -MagnetTrajectoryType src/Dodge/Data/Bullet.hs 51;" C +MagnetTrajectory src/Dodge/Data/Bullet.hs 45;" C +MagnetTrajectoryType src/Dodge/Data/Bullet.hs 52;" C MagnetUpdate src/Dodge/Data/Magnet.hs 11;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 11;" C MakeAutoSF src/Dodge/Data/ComposedItem.hs 36;" C @@ -742,11 +746,14 @@ MaterialSound src/Dodge/Data/SoundOrigin.hs 36;" C Maybe' src/MaybeHelp.hs 11;" t McDamSensor src/Dodge/Data/Machine.hs 46;" C McDistributer src/Dodge/Data/Machine.hs 50;" C +McIndirectO src/Dodge/Data/Damage.hs 37;" C +McMeleeO src/Dodge/Data/Damage.hs 35;" C McProxSensor src/Dodge/Data/Machine.hs 47;" C McStorage src/Dodge/Data/Machine.hs 49;" C McTerminal src/Dodge/Data/Machine.hs 45;" C McTrigger src/Dodge/Data/Machine.hs 51;" C McTurret src/Dodge/Data/Machine.hs 48;" C +McWeaponO src/Dodge/Data/Damage.hs 36;" C MdFlickerUpdate src/Dodge/Data/WorldEffect.hs 53;" C MdSetLSCol src/Dodge/Data/WorldEffect.hs 52;" C MdTrigIf src/Dodge/Data/WorldEffect.hs 51;" C @@ -833,11 +840,11 @@ NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 41;" C NoConcurrentEffect src/Loop/Data.hs 7;" C NoCrImp src/Dodge/Data/CreatureEffect.hs 9;" C -NoCreatureShape src/Dodge/Data/Creature/Misc.hs 106;" C +NoCreatureShape src/Dodge/Data/Creature/Misc.hs 107;" C NoExtraMenuOption src/Dodge/Data/Universe.hs 79;" C NoFaction src/Dodge/Data/Creature/State.hs 18;" C NoFlare src/Dodge/Data/Muzzle.hs 29;" C -NoHoming src/Dodge/Data/Projectile.hs 40;" C +NoHoming src/Dodge/Data/Projectile.hs 42;" C NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C @@ -949,7 +956,7 @@ OptionScreen src/Dodge/Data/Universe.hs 82;" C OptionScreenFlag src/Dodge/Data/Universe.hs 70;" t OutLink src/Dodge/Data/Room.hs 48;" C OutsideTerminal src/Dodge/Data/Input.hs 28;" C -OutwardShockwave src/Dodge/Data/Shockwave.hs 12;" C +OutwardShockwave src/Dodge/Data/Shockwave.hs 13;" C OverCombCombine src/Dodge/Data/Input.hs 23;" C OverCombEscape src/Dodge/Data/Input.hs 25;" C OverCombFiltInv src/Dodge/Data/Input.hs 21;" C @@ -964,7 +971,7 @@ OverTerminalBar src/Dodge/Data/Input.hs 27;" C OverreachingAI src/Dodge/Data/Scenario.hs 31;" C Overstrung src/Dodge/Data/Creature/Perception.hs 55;" C PBSound src/Dodge/Data/SoundOrigin.hs 43;" C -PBall src/Dodge/Data/PlasmaBall.hs 13;" C +PBall src/Dodge/Data/PlasmaBall.hs 12;" C PIPE src/Dodge/Data/Item/Combine.hs 51;" C PISTOL src/Dodge/Data/Item/Combine.hs 146;" C PJStabiliser src/Dodge/Projectile/Create.hs 16;" t @@ -992,7 +999,7 @@ Patrol src/Dodge/Data/ActionPlan.hs 138;" C PauseTimeMessage src/Dodge/Data/World.hs 88;" C PausedTimeFlow src/Dodge/Data/World.hs 84;" C Payload src/Dodge/Data/Payload.hs 9;" t -PenetrateBullet src/Dodge/Data/Bullet.hs 29;" C +PenetrateBullet src/Dodge/Data/Bullet.hs 30;" C Perception src/Dodge/Data/Creature/Perception.hs 30;" t Photovoltaic src/Dodge/Data/Material.hs 20;" C PhysicalDamage src/Dodge/Data/Damage/Type.hs 4;" C @@ -1003,10 +1010,10 @@ Piezoelectric src/Dodge/Data/Material.hs 23;" C Pitted src/Dodge/Data/Creature.hs 68;" C Placement src/Dodge/Data/GenWorld.hs 113;" t PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t -PlainBarrel src/Dodge/Data/Creature/Misc.hs 110;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 111;" C PlainDeath src/Dodge/Data/Creature.hs 70;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C -PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t +PlasmaBall src/Dodge/Data/PlasmaBall.hs 12;" t PlasmaBallType src/Dodge/Data/PlasmaBall.hs 20;" t PlasmaSF src/Dodge/Data/ComposedItem.hs 47;" C PlayStatus src/Sound/Data.hs 21;" t @@ -1021,7 +1028,7 @@ Point4 src/Geometry/Data.hs 41;" t Poison src/Dodge/Data/Damage.hs 26;" C PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C PoisonDeath src/Dodge/Data/Creature.hs 70;" C -PoisonGas src/Dodge/Data/Cloud.hs 42;" C +PoisonGas src/Dodge/Data/Cloud.hs 44;" C PolyEdge src/Dodge/Data/Room.hs 51;" C PolyShad src/Picture/Data.hs 31;" C Polyhedra src/Polyhedra/Data.hs 13;" t @@ -1032,19 +1039,19 @@ Posture src/Dodge/Data/Creature/Stance.hs 38;" t PreloadData src/Data/Preload.hs 10;" t PrintMaterial src/Dodge/Data/AmmoType.hs 15;" C Prison src/Dodge/Data/Scenario.hs 65;" C -Projectile src/Dodge/Data/Projectile.hs 15;" t +Projectile src/Dodge/Data/Projectile.hs 16;" t ProjectileParams src/Dodge/Data/Item/Use.hs 51;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 37;" C -ProjectileType src/Dodge/Data/Projectile.hs 30;" t +ProjectileType src/Dodge/Data/Projectile.hs 32;" t Prop src/Dodge/Data/Prop.hs 14;" t ProxSensor src/Dodge/Data/Machine/Sensor.hs 24;" C ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 33;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 24;" t ProximitySensorType src/Dodge/Data/Machine/Sensor.hs 29;" t Pulse src/Dodge/Data/Creature/Misc.hs 41;" t -PulseBall src/Dodge/Data/PulseLaser.hs 20;" t +PulseBall src/Dodge/Data/PulseLaser.hs 23;" t PulseBallSF src/Dodge/Data/ComposedItem.hs 46;" C -PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t +PulseLaser src/Dodge/Data/PulseLaser.hs 13;" t PulseLaserSF src/Dodge/Data/ComposedItem.hs 43;" C PulseStatus src/Dodge/Data/Creature/Misc.hs 41;" C PumpSF src/Dodge/Data/ComposedItem.hs 49;" C @@ -1104,7 +1111,7 @@ ReactorSS src/Dodge/Data/Scenario.hs 111;" C RecCommands src/Dodge/Terminal.hs 164;" t RecRoomSS src/Dodge/Data/Scenario.hs 103;" C RectRoomType src/Dodge/Data/Room.hs 33;" C -ReducedRocketSmoke src/Dodge/Data/Projectile.hs 52;" C +ReducedRocketSmoke src/Dodge/Data/Projectile.hs 54;" C ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C Religion src/Dodge/Data/Scenario.hs 47;" C RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 28;" C @@ -1121,17 +1128,17 @@ ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 66;" C RetailFacility src/Dodge/Data/Scenario.hs 67;" C -RetiredProjectile src/Dodge/Data/Projectile.hs 36;" C +RetiredProjectile src/Dodge/Data/Projectile.hs 38;" C Revenge src/Dodge/Data/Scenario.hs 6;" C RewindLeftClick src/Dodge/Data/World.hs 80;" C RezBaySS src/Dodge/Data/Scenario.hs 105;" C RightButtonState src/Dodge/Data/RightButtonOptions.hs 13;" t RightForward src/Dodge/Data/Creature/Stance.hs 35;" C RightwardDT src/Dodge/Data/DoubleTree.hs 34;" C -Rocket src/Dodge/Data/Projectile.hs 32;" C -RocketHoming src/Dodge/Data/Projectile.hs 39;" t -RocketSmoke src/Dodge/Data/Projectile.hs 52;" t -RocketSmoke src/Dodge/Data/Cloud.hs 22;" C +Rocket src/Dodge/Data/Projectile.hs 34;" C +RocketHoming src/Dodge/Data/Projectile.hs 41;" t +RocketSmoke src/Dodge/Data/Projectile.hs 54;" t +RocketSmoke src/Dodge/Data/Cloud.hs 23;" C Room src/Dodge/Data/GenWorld.hs 128;" t RoomClipping src/Dodge/Data/Config.hs 123;" t RoomInt src/Dodge/Tree/Shift.hs 27;" t @@ -1204,11 +1211,11 @@ Shape src/Shape/Data.hs 50;" t ShapeProp src/Dodge/Data/Prop.hs 14;" C ShapeType src/Shape/Data.hs 11;" t Shattering src/Dodge/Data/Damage.hs 20;" C -Shell src/Dodge/Data/Projectile.hs 15;" C +Shell src/Dodge/Data/Projectile.hs 16;" C ShellSound src/Dodge/Data/SoundOrigin.hs 28;" C ShieldGroup src/Dodge/Data/Creature/State.hs 30;" C -Shockwave src/Dodge/Data/Shockwave.hs 15;" t -ShockwaveDirection src/Dodge/Data/Shockwave.hs 12;" t +Shockwave src/Dodge/Data/Shockwave.hs 16;" t +ShockwaveDirection src/Dodge/Data/Shockwave.hs 13;" t ShootAt src/Dodge/Data/ActionPlan.hs 139;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t @@ -1240,7 +1247,7 @@ SlimeCrit src/Dodge/Data/Creature/Misc.hs 75;" C SlimeIntelligence src/Dodge/Data/ActionPlan.hs 16;" C SlinkCrit src/Dodge/Data/Creature/Misc.hs 70;" C Small src/Shape/Data.hs 27;" C -Smoke src/Dodge/Data/Cloud.hs 21;" C +Smoke src/Dodge/Data/Cloud.hs 22;" C SmokeReducerSF src/Dodge/Data/ComposedItem.hs 29;" C SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C @@ -1292,7 +1299,7 @@ Suspicious src/Dodge/Data/Creature/Perception.hs 64;" C Swallowed src/Dodge/Data/Creature.hs 68;" C SwapEquipment src/Dodge/Data/RightButtonOptions.hs 24;" C Swarm src/Dodge/Data/Creature/State.hs 25;" C -SwarmCrit src/Dodge/Data/Creature/Misc.hs 92;" C +SwarmCrit src/Dodge/Data/Creature/Misc.hs 93;" C TAPE src/Dodge/Data/Item/Combine.hs 56;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C TCBase src/Dodge/Data/Terminal.hs 49;" C @@ -1331,7 +1338,7 @@ Tap src/Dodge/Data/SoundOrigin.hs 40;" C TargetCursor src/Dodge/Data/Item/Targeting.hs 12;" C TargetRBCreature src/Dodge/Data/Item/Targeting.hs 11;" C TargetRBPress src/Dodge/Data/Item/Targeting.hs 10;" C -TargetingLaser src/Dodge/Data/Laser.hs 16;" C +TargetingLaser src/Dodge/Data/Laser.hs 17;" C TargetingType src/Dodge/Data/Item/Targeting.hs 9;" t TeleSound src/Dodge/Data/SoundOrigin.hs 37;" C TermSignal src/Dodge/Data/Input.hs 56;" t @@ -1349,7 +1356,7 @@ TerminalTextInput src/Dodge/Data/Terminal/Status.hs 14;" C TerminalToggle src/Dodge/Data/Terminal.hs 42;" t Terrestrial src/Dodge/Data/Scenario.hs 72;" C TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t -TeslaArc src/Dodge/Data/TeslaArc.hs 15;" t +TeslaArc src/Dodge/Data/TeslaArc.hs 16;" t TeslaBeamCombine src/Dodge/Data/Beam.hs 39;" C TeslaGunFlare src/Dodge/Data/Muzzle.hs 35;" C TextShad src/Picture/Data.hs 32;" C @@ -1404,6 +1411,7 @@ Typical src/Shape/Data.hs 32;" C UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 99;" C UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C UintBO src/Shader/Data.hs 91;" t +UnassignedO src/Dodge/Data/Damage.hs 38;" C UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 17;" C UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 16;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C @@ -1570,7 +1578,7 @@ _avStrength src/Dodge/Data/Creature/Misc.hs 51;" f _avatarMaterial src/Dodge/Data/Creature/Misc.hs 50;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 49;" f _barrelShader src/Data/Preload/Render.hs 27;" f -_barrelType src/Dodge/Data/Creature/Misc.hs 94;" f +_barrelType src/Dodge/Data/Creature/Misc.hs 95;" f _bdColor src/Dodge/Data/Prop.hs 23;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f @@ -1578,6 +1586,7 @@ _bdMinX src/Dodge/Data/Bounds.hs 11;" f _bdMinY src/Dodge/Data/Bounds.hs 13;" f _bdsTrigger src/Dodge/Data/Button.hs 26;" f _beamCombine src/Dodge/Data/Beam.hs 46;" f +_beeAggro src/Dodge/Data/Creature/Misc.hs 87;" f _beeHive src/Dodge/Data/Creature/Misc.hs 85;" f _beePheremones src/Dodge/Data/LWorld.hs 99;" f _beeSlime src/Dodge/Data/Creature/Misc.hs 84;" f @@ -1607,11 +1616,11 @@ _bmRange src/Dodge/Data/Beam.hs 24;" f _bmType src/Dodge/Data/Beam.hs 27;" f _boffEff src/Dodge/Data/Button.hs 21;" f _bonEff src/Dodge/Data/Button.hs 20;" f -_bounceTolerance src/Dodge/Data/Projectile.hs 46;" f +_bounceTolerance src/Dodge/Data/Projectile.hs 48;" f _bpColor src/Dodge/Data/Button.hs 17;" f _bpEff src/Dodge/Data/Button.hs 16;" f -_bpPos src/Dodge/Data/Cloud.hs 46;" f -_bpTimer src/Dodge/Data/Cloud.hs 47;" f +_bpPos src/Dodge/Data/Cloud.hs 48;" f +_bpTimer src/Dodge/Data/Cloud.hs 49;" f _bsColor1 src/Dodge/Data/Button.hs 22;" f _bsColor2 src/Dodge/Data/Button.hs 23;" f _btEvent src/Dodge/Data/Button.hs 32;" f @@ -1621,10 +1630,11 @@ _btOn src/Dodge/Data/Button.hs 24;" f _btPos src/Dodge/Data/Button.hs 30;" f _btRot src/Dodge/Data/Button.hs 31;" f _btTermID src/Dodge/Data/Button.hs 27;" f -_buDam src/Dodge/Data/Bullet.hs 34;" f +_buDam src/Dodge/Data/Bullet.hs 35;" f _buDrag src/Dodge/Data/Bullet.hs 20;" f _buEffect src/Dodge/Data/Bullet.hs 17;" f _buOldPos src/Dodge/Data/Bullet.hs 22;" f +_buOrigin src/Dodge/Data/Bullet.hs 23;" f _buPayload src/Dodge/Data/Bullet.hs 18;" f _buPos src/Dodge/Data/Bullet.hs 21;" f _buVel src/Dodge/Data/Bullet.hs 19;" f @@ -1669,10 +1679,10 @@ _ciItem src/Dodge/Data/Combine.hs 10;" f _ciSections src/Dodge/Data/HUD.hs 23;" f _ciSelection src/Dodge/Data/HUD.hs 24;" f _cigType src/Dodge/Data/Camera.hs 18;" f -_clPos src/Dodge/Data/Cloud.hs 13;" f -_clTimer src/Dodge/Data/Cloud.hs 15;" f -_clType src/Dodge/Data/Cloud.hs 16;" f -_clVel src/Dodge/Data/Cloud.hs 14;" f +_clPos src/Dodge/Data/Cloud.hs 14;" f +_clTimer src/Dodge/Data/Cloud.hs 16;" f +_clType src/Dodge/Data/Cloud.hs 17;" f +_clVel src/Dodge/Data/Cloud.hs 15;" f _clZoning src/Dodge/Data/World.hs 50;" f _clickPos src/Dodge/Data/Input.hs 42;" f _clickWorldPos src/Dodge/Data/Input.hs 44;" f @@ -1762,6 +1772,11 @@ _dmAmount src/Dodge/Data/Damage.hs 22;" f _dmAmount src/Dodge/Data/Damage.hs 25;" f _dmAmount src/Dodge/Data/Damage.hs 28;" f _dmCenter src/Dodge/Data/Damage.hs 25;" f +_dmOrigin src/Dodge/Data/Damage.hs 16;" f +_dmOrigin src/Dodge/Data/Damage.hs 19;" f +_dmOrigin src/Dodge/Data/Damage.hs 22;" f +_dmOrigin src/Dodge/Data/Damage.hs 25;" f +_dmOrigin src/Dodge/Data/Damage.hs 28;" f _dmPos src/Dodge/Data/Damage.hs 16;" f _dmPos src/Dodge/Data/Damage.hs 20;" f _dmPos src/Dodge/Data/Damage.hs 23;" f @@ -1785,7 +1800,9 @@ _doActionWhilePartial src/Dodge/Data/ActionPlan.hs 89;" f _doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 104;" f _doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 103;" f _doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 105;" f +_doCID src/Dodge/Data/Damage.hs 32;" f _doImpulsesList src/Dodge/Data/ActionPlan.hs 79;" f +_doMID src/Dodge/Data/Damage.hs 35;" f _doReplicateAction src/Dodge/Data/ActionPlan.hs 114;" f _doReplicateAction src/Dodge/Data/ActionPlan.hs 119;" f _doReplicateTimes src/Dodge/Data/ActionPlan.hs 113;" f @@ -1806,24 +1823,25 @@ _drPushes src/Dodge/Data/Door.hs 40;" f _drTrigger src/Dodge/Data/Door.hs 31;" f _drUpdate src/Dodge/Data/Door.hs 32;" f _drZeroPos src/Dodge/Data/Door.hs 33;" f -_dsPos src/Dodge/Data/Cloud.hs 27;" f -_dsTimer src/Dodge/Data/Cloud.hs 29;" f -_dsType src/Dodge/Data/Cloud.hs 30;" f -_dsVel src/Dodge/Data/Cloud.hs 28;" f +_dsPos src/Dodge/Data/Cloud.hs 28;" f +_dsTimer src/Dodge/Data/Cloud.hs 30;" f +_dsType src/Dodge/Data/Cloud.hs 31;" f +_dsVel src/Dodge/Data/Cloud.hs 29;" f _dsZoning src/Dodge/Data/World.hs 52;" f _dtLeft src/Dodge/Data/DoubleTree.hs 16;" f _dtRight src/Dodge/Data/DoubleTree.hs 16;" f _dtValue src/Dodge/Data/DoubleTree.hs 16;" f _dusts src/Dodge/Data/LWorld.hs 100;" f -_ebID src/Dodge/Data/EnergyBall/Type.hs 13;" f -_ebPos src/Dodge/Data/EnergyBall.hs 17;" f -_ebTimer src/Dodge/Data/EnergyBall.hs 18;" f -_ebType src/Dodge/Data/EnergyBall.hs 19;" f -_ebVel src/Dodge/Data/EnergyBall.hs 16;" f +_ebID src/Dodge/Data/EnergyBall/Type.hs 14;" f +_ebOrigin src/Dodge/Data/EnergyBall.hs 21;" f +_ebPos src/Dodge/Data/EnergyBall.hs 18;" f +_ebTimer src/Dodge/Data/EnergyBall.hs 19;" f +_ebType src/Dodge/Data/EnergyBall.hs 20;" f +_ebVel src/Dodge/Data/EnergyBall.hs 17;" f _emoMenuOption src/Dodge/Data/Universe.hs 77;" f _energyBalls src/Dodge/Data/LWorld.hs 109;" f _fallRot src/Dodge/Data/Creature/Stance.hs 29;" f -_fbSize src/Dodge/Data/EnergyBall/Type.hs 12;" f +_fbSize src/Dodge/Data/EnergyBall/Type.hs 13;" f _fboBase src/Data/Preload/Render.hs 35;" f _fboBloom src/Data/Preload/Render.hs 38;" f _fboCloud src/Data/Preload/Render.hs 36;" f @@ -1835,9 +1853,10 @@ _fboQuarter src/Data/Preload/Render.hs 34;" f _fboWindow src/Data/Preload/Render.hs 37;" f _flItPos src/Dodge/Data/FloorItem.hs 11;" f _flItRot src/Dodge/Data/FloorItem.hs 11;" f -_flPos src/Dodge/Data/Flame.hs 13;" f -_flTimer src/Dodge/Data/Flame.hs 12;" f -_flVel src/Dodge/Data/Flame.hs 14;" f +_flOrigin src/Dodge/Data/Flame.hs 16;" f +_flPos src/Dodge/Data/Flame.hs 14;" f +_flTimer src/Dodge/Data/Flame.hs 13;" f +_flVel src/Dodge/Data/Flame.hs 15;" f _flames src/Dodge/Data/LWorld.hs 110;" f _flankTarget src/Dodge/Data/ActionPlan.hs 135;" f _flares src/Dodge/Data/LWorld.hs 113;" f @@ -1872,7 +1891,7 @@ _gfMax src/Dodge/Data/GenFloat.hs 10;" f _gfMin src/Dodge/Data/GenFloat.hs 10;" f _gibColor src/Dodge/Data/Prop.hs 22;" f _gibSize src/Dodge/Data/Prop.hs 22;" f -_gnHitEffect src/Dodge/Data/Projectile.hs 31;" f +_gnHitEffect src/Dodge/Data/Projectile.hs 33;" f _grBound src/Dodge/GameRoom.hs 15;" f _grDir src/Dodge/GameRoom.hs 18;" f _grLinkDirs src/Dodge/GameRoom.hs 19;" f @@ -1889,10 +1908,11 @@ _gr_shadow_size src/Dodge/Data/Config.hs 58;" f _gr_shadows_on_clouds src/Dodge/Data/Config.hs 57;" f _gr_upscale_filter src/Dodge/Data/Config.hs 52;" f _gr_world_res src/Dodge/Data/Config.hs 60;" f -_gsPos src/Dodge/Data/Cloud.hs 35;" f -_gsTimer src/Dodge/Data/Cloud.hs 37;" f -_gsType src/Dodge/Data/Cloud.hs 38;" f -_gsVel src/Dodge/Data/Cloud.hs 36;" f +_gsOrigin src/Dodge/Data/Cloud.hs 40;" f +_gsPos src/Dodge/Data/Cloud.hs 36;" f +_gsTimer src/Dodge/Data/Cloud.hs 38;" f +_gsType src/Dodge/Data/Cloud.hs 39;" f +_gsVel src/Dodge/Data/Cloud.hs 37;" f _gsZoning src/Dodge/Data/World.hs 58;" f _guID src/Dodge/Data/Gust.hs 12;" f _guPos src/Dodge/Data/Gust.hs 13;" f @@ -1904,8 +1924,8 @@ _harvestTarget src/Dodge/Data/ActionPlan.hs 153;" f _heldPos src/Dodge/Data/Input.hs 43;" f _heldWorldPos src/Dodge/Data/Input.hs 45;" f _highlightItems src/Dodge/Data/CWorld.hs 36;" f -_hiveChildren src/Dodge/Data/Creature/Misc.hs 89;" f -_hiveGestation src/Dodge/Data/Creature/Misc.hs 90;" f +_hiveChildren src/Dodge/Data/Creature/Misc.hs 90;" f +_hiveGestation src/Dodge/Data/Creature/Misc.hs 91;" f _hotkeys src/Dodge/Data/LWorld.hs 146;" f _hud src/Dodge/Data/World.hs 47;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f @@ -1969,12 +1989,12 @@ _lInvLock src/Dodge/Data/LWorld.hs 149;" f _lTestInt src/Dodge/Data/LWorld.hs 145;" f _lTestString src/Dodge/Data/LWorld.hs 144;" f _lWorld src/Dodge/Data/CWorld.hs 24;" f -_lampColor src/Dodge/Data/Creature/Misc.hs 95;" f -_lampHeight src/Dodge/Data/Creature/Misc.hs 95;" f -_lampLSID src/Dodge/Data/Creature/Misc.hs 95;" f +_lampColor src/Dodge/Data/Creature/Misc.hs 96;" f +_lampHeight src/Dodge/Data/Creature/Misc.hs 96;" f +_lampLSID src/Dodge/Data/Creature/Misc.hs 96;" f _lasWepXSF src/Dodge/Data/ComposedItem.hs 42;" f -_laserEmmiter src/Dodge/Data/Laser.hs 16;" f -_laserTypeDamage src/Dodge/Data/Laser.hs 15;" f +_laserEmmiter src/Dodge/Data/Laser.hs 17;" f +_laserTypeDamage src/Dodge/Data/Laser.hs 16;" f _lasers src/Dodge/Data/LWorld.hs 118;" f _ldpPos src/Dodge/Data/SelectionList.hs 15;" f _ldpScale src/Dodge/Data/SelectionList.hs 16;" f @@ -1993,10 +2013,11 @@ _linkGapEW src/Dodge/Data/Room.hs 36;" f _linkGapNS src/Dodge/Data/Room.hs 37;" f _locDT src/Dodge/Data/DoubleTree.hs 44;" f _locDtContext src/Dodge/Data/DoubleTree.hs 43;" f -_lpDir src/Dodge/Data/Laser.hs 22;" f -_lpPhaseV src/Dodge/Data/Laser.hs 20;" f -_lpPos src/Dodge/Data/Laser.hs 21;" f -_lpType src/Dodge/Data/Laser.hs 23;" f +_lpDir src/Dodge/Data/Laser.hs 23;" f +_lpOrigin src/Dodge/Data/Laser.hs 25;" f +_lpPhaseV src/Dodge/Data/Laser.hs 21;" f +_lpPos src/Dodge/Data/Laser.hs 22;" f +_lpType src/Dodge/Data/Laser.hs 24;" f _lsCol src/Dodge/Data/LightSource.hs 17;" f _lsID src/Dodge/Data/LightSource.hs 22;" f _lsParam src/Dodge/Data/LightSource.hs 23;" f @@ -2128,26 +2149,28 @@ _pathFailAction src/Dodge/Data/ActionPlan.hs 75;" f _pathToPoint src/Dodge/Data/ActionPlan.hs 75;" f _pauseTimeMesage src/Dodge/Data/World.hs 89;" f _pauseTimeMesageColor src/Dodge/Data/World.hs 90;" f -_pbPos src/Dodge/Data/PlasmaBall.hs 16;" f -_pbType src/Dodge/Data/PlasmaBall.hs 14;" f -_pbVel src/Dodge/Data/PlasmaBall.hs 15;" f -_phRemoteID src/Dodge/Data/Projectile.hs 41;" f -_phTargetingID src/Dodge/Data/Projectile.hs 42;" f +_pbOrigin src/Dodge/Data/PlasmaBall.hs 16;" f +_pbPos src/Dodge/Data/PlasmaBall.hs 15;" f +_pbType src/Dodge/Data/PlasmaBall.hs 13;" f +_pbVel src/Dodge/Data/PlasmaBall.hs 14;" f +_phRemoteID src/Dodge/Data/Projectile.hs 43;" f +_phTargetingID src/Dodge/Data/Projectile.hs 44;" f _pickUpLevel src/Dodge/Layout/Generate.hs 15;" f _pickUps src/Dodge/Layout/Generate.hs 16;" f _pictureShaders src/Data/Preload/Render.hs 31;" f -_piercedPoints src/Dodge/Data/Creature/Misc.hs 111;" f -_pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f -_pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f -_pjDir src/Dodge/Data/Projectile.hs 18;" f -_pjID src/Dodge/Data/Projectile.hs 20;" f -_pjPayload src/Dodge/Data/Projectile.hs 21;" f -_pjPos src/Dodge/Data/Projectile.hs 16;" f -_pjScreenID src/Dodge/Data/Projectile.hs 26;" f -_pjSpin src/Dodge/Data/Projectile.hs 19;" f -_pjTimer src/Dodge/Data/Projectile.hs 22;" f -_pjType src/Dodge/Data/Projectile.hs 24;" f -_pjVel src/Dodge/Data/Projectile.hs 17;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 112;" f +_pjBarrelSpin src/Dodge/Data/Projectile.hs 24;" f +_pjDetonatorID src/Dodge/Data/Projectile.hs 26;" f +_pjDir src/Dodge/Data/Projectile.hs 19;" f +_pjID src/Dodge/Data/Projectile.hs 21;" f +_pjOrigin src/Dodge/Data/Projectile.hs 28;" f +_pjPayload src/Dodge/Data/Projectile.hs 22;" f +_pjPos src/Dodge/Data/Projectile.hs 17;" f +_pjScreenID src/Dodge/Data/Projectile.hs 27;" f +_pjSpin src/Dodge/Data/Projectile.hs 20;" f +_pjTimer src/Dodge/Data/Projectile.hs 23;" f +_pjType src/Dodge/Data/Projectile.hs 25;" f +_pjVel src/Dodge/Data/Projectile.hs 18;" f _plExternalID src/Dodge/Data/GenWorld.hs 117;" f _plIDCont src/Dodge/Data/GenWorld.hs 118;" f _plMID src/Dodge/Data/GenWorld.hs 116;" f @@ -2205,15 +2228,17 @@ _putWidth src/Dodge/Data/GenWorld.hs 49;" f _pwPoly src/Dodge/Data/GenWorld.hs 53;" f _pwWall src/Dodge/Data/GenWorld.hs 53;" f _pyFaces src/Polyhedra/Data.hs 14;" f -_pzDamage src/Dodge/Data/PulseLaser.hs 15;" f -_pzDir src/Dodge/Data/PulseLaser.hs 14;" f -_pzPhaseV src/Dodge/Data/PulseLaser.hs 12;" f -_pzPos src/Dodge/Data/PulseLaser.hs 13;" f -_pzTimer src/Dodge/Data/PulseLaser.hs 16;" f -_pzbID src/Dodge/Data/PulseLaser.hs 24;" f -_pzbPos src/Dodge/Data/PulseLaser.hs 22;" f -_pzbTimer src/Dodge/Data/PulseLaser.hs 23;" f -_pzbVel src/Dodge/Data/PulseLaser.hs 21;" f +_pzDamage src/Dodge/Data/PulseLaser.hs 17;" f +_pzDir src/Dodge/Data/PulseLaser.hs 16;" f +_pzOrigin src/Dodge/Data/PulseLaser.hs 19;" f +_pzPhaseV src/Dodge/Data/PulseLaser.hs 14;" f +_pzPos src/Dodge/Data/PulseLaser.hs 15;" f +_pzTimer src/Dodge/Data/PulseLaser.hs 18;" f +_pzbID src/Dodge/Data/PulseLaser.hs 27;" f +_pzbOrigin src/Dodge/Data/PulseLaser.hs 28;" f +_pzbPos src/Dodge/Data/PulseLaser.hs 25;" f +_pzbTimer src/Dodge/Data/PulseLaser.hs 26;" f +_pzbVel src/Dodge/Data/PulseLaser.hs 24;" f _rCommands src/Dodge/Terminal.hs 165;" f _rFootPos src/Dodge/Data/Creature/Misc.hs 67;" f _radarBlips src/Dodge/Data/LWorld.hs 112;" f @@ -2239,8 +2264,8 @@ _respawnPos src/Dodge/Data/LWorld.hs 150;" f _reverseAmount src/Dodge/Data/World.hs 71;" f _reverseAmount src/Dodge/Data/World.hs 77;" f _reverseAmount src/Dodge/Data/World.hs 81;" f -_rkHoming src/Dodge/Data/Projectile.hs 33;" f -_rkSmoke src/Dodge/Data/Projectile.hs 34;" f +_rkHoming src/Dodge/Data/Projectile.hs 35;" f +_rkSmoke src/Dodge/Data/Projectile.hs 36;" f _rlDir src/Dodge/Data/Room.hs 27;" f _rlPos src/Dodge/Data/Room.hs 26;" f _rlType src/Dodge/Data/Room.hs 25;" f @@ -2347,9 +2372,9 @@ _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f _skType src/Dodge/Data/Spark.hs 15;" f _skVel src/Dodge/Data/Spark.hs 12;" f -_skinHead src/Dodge/Data/Creature/Misc.hs 101;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 103;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 102;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 102;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 104;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 103;" f _slInt src/Dodge/Data/HUD.hs 39;" f _slSec src/Dodge/Data/HUD.hs 39;" f _slSet src/Dodge/Data/HUD.hs 39;" f @@ -2376,7 +2401,7 @@ _soundsToInvestigate src/Dodge/Data/Creature.hs 80;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 111;" f -_spawnEBT src/Dodge/Data/Bullet.hs 33;" f +_spawnEBT src/Dodge/Data/Bullet.hs 34;" f _ssIndent src/Dodge/Data/SelectionList.hs 36;" f _ssItems src/Dodge/Data/SelectionList.hs 32;" f _ssOffset src/Dodge/Data/SelectionList.hs 33;" f @@ -2387,24 +2412,26 @@ _ssboPtr src/Shader/Data.hs 98;" f _startStopMv src/Dodge/Data/Creature/Misc.hs 86;" f _strideAmount src/Dodge/Data/Creature/Misc.hs 56;" f _strideAmount src/Dodge/Data/Creature/Misc.hs 60;" f -_stuckCrID src/Dodge/Data/Projectile.hs 48;" f -_stuckCrOffset src/Dodge/Data/Projectile.hs 48;" f -_stuckCrRot src/Dodge/Data/Projectile.hs 48;" f -_stuckWlID src/Dodge/Data/Projectile.hs 49;" f +_stuckCrID src/Dodge/Data/Projectile.hs 50;" f +_stuckCrOffset src/Dodge/Data/Projectile.hs 50;" f +_stuckCrRot src/Dodge/Data/Projectile.hs 50;" f +_stuckWlID src/Dodge/Data/Projectile.hs 51;" f _subInventory src/Dodge/Data/HUD.hs 30;" f -_swColor src/Dodge/Data/Shockwave.hs 16;" f -_swDam src/Dodge/Data/Shockwave.hs 21;" f -_swDirection src/Dodge/Data/Shockwave.hs 17;" f -_swInvulnerableCrs src/Dodge/Data/Shockwave.hs 18;" f -_swMaxTime src/Dodge/Data/Shockwave.hs 23;" f -_swPos src/Dodge/Data/Shockwave.hs 19;" f -_swPush src/Dodge/Data/Shockwave.hs 22;" f -_swRad src/Dodge/Data/Shockwave.hs 20;" f -_swTimer src/Dodge/Data/Shockwave.hs 24;" f +_swColor src/Dodge/Data/Shockwave.hs 17;" f +_swDam src/Dodge/Data/Shockwave.hs 22;" f +_swDirection src/Dodge/Data/Shockwave.hs 18;" f +_swInvulnerableCrs src/Dodge/Data/Shockwave.hs 19;" f +_swMaxTime src/Dodge/Data/Shockwave.hs 24;" f +_swOrigin src/Dodge/Data/Shockwave.hs 26;" f +_swPos src/Dodge/Data/Shockwave.hs 20;" f +_swPush src/Dodge/Data/Shockwave.hs 23;" f +_swRad src/Dodge/Data/Shockwave.hs 21;" f +_swTimer src/Dodge/Data/Shockwave.hs 25;" f _swarm src/Dodge/Data/Creature/State.hs 26;" f -_taArcSteps src/Dodge/Data/TeslaArc.hs 17;" f -_taColor src/Dodge/Data/TeslaArc.hs 18;" f -_taTimer src/Dodge/Data/TeslaArc.hs 16;" f +_taArcSteps src/Dodge/Data/TeslaArc.hs 18;" f +_taColor src/Dodge/Data/TeslaArc.hs 19;" f +_taOrigin src/Dodge/Data/TeslaArc.hs 20;" f +_taTimer src/Dodge/Data/TeslaArc.hs 17;" f _targetCr src/Dodge/Data/Creature.hs 73;" f _targetID src/Dodge/Data/ActionPlan.hs 72;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 73;" f @@ -2691,7 +2718,7 @@ argV src/Geometry/Vector.hs 89;" f armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f armouredChasers src/Dodge/Room/Boss.hs 58;" f armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f -arms src/Dodge/Creature/Picture.hs 346;" f +arms src/Dodge/Creature/Picture.hs 348;" f arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f assignHotkey src/Dodge/AssignHotkey.hs 9;" f @@ -2734,7 +2761,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 890;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 231;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Creature/Picture.hs 397;" f +barrelShape src/Dodge/Creature/Picture.hs 399;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 411;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f baseCI src/Dodge/Item/Grammar.hs 167;" f @@ -2743,7 +2770,7 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 325;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 408;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 396;" f -baseShoulder src/Dodge/Creature/Picture.hs 384;" f +baseShoulder src/Dodge/Creature/Picture.hs 386;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 302;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 294;" f baseStickSpread src/Dodge/HeldUse.hs 346;" f @@ -2868,11 +2895,11 @@ changeSwapWith src/Dodge/Inventory.hs 283;" f charToTuple src/Picture/Base.hs 312;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f -chaseCorpse src/Dodge/Creature/Picture.hs 295;" f +chaseCorpse src/Dodge/Creature/Picture.hs 297;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 35;" f chaseCritInternal src/Dodge/Humanoid.hs 12;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 194;" f -chaseUpperBody src/Dodge/Creature/Picture.hs 172;" f +chaseUpperBody src/Dodge/Creature/Picture.hs 174;" f chasmRotate src/Dodge/Creature/State/WalkCycle.hs 142;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 409;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 342;" f @@ -2880,8 +2907,8 @@ chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 124;" f chasmWallToSurface src/Dodge/Base/Collide.hs 132;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f -checkDeath src/Dodge/Creature/Update.hs 316;" f -checkDeath' src/Dodge/Creature/Update.hs 319;" f +checkDeath src/Dodge/Creature/Update.hs 343;" f +checkDeath' src/Dodge/Creature/Update.hs 346;" f checkEndGame src/Dodge/Update.hs 891;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3006,7 +3033,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 136;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 411;" f cornerList src/Preload/Render.hs 236;" f -corpseOrGib src/Dodge/Creature/Update.hs 361;" f +corpseOrGib src/Dodge/Creature/Update.hs 388;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -3018,7 +3045,7 @@ crCamouflage src/Dodge/Creature/Picture.hs 79;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f crCrSpring src/Dodge/Update.hs 1012;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 68;" f -crDeathEffects src/Dodge/Creature/Update.hs 340;" f +crDeathEffects src/Dodge/Creature/Update.hs 367;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 40;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f @@ -3057,7 +3084,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 1000;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 309;" f +crUpdate src/Dodge/Creature/Update.hs 336;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f crVocalResetTime src/Dodge/Creature/Vocalization.hs 69;" f @@ -3068,12 +3095,12 @@ crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 71;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 81;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 124;" f -crabCorpse src/Dodge/Creature/Picture.hs 314;" f +crabCorpse src/Dodge/Creature/Picture.hs 316;" f crabCrit src/Dodge/Creature/ChaseCrit.hs 42;" f crabCritInternal src/Dodge/Humanoid.hs 29;" f -crabFeet src/Dodge/Creature/Picture.hs 224;" f +crabFeet src/Dodge/Creature/Picture.hs 226;" f crabRoom src/Dodge/Room/Tutorial.hs 463;" f -crabUpperBody src/Dodge/Creature/Picture.hs 148;" f +crabUpperBody src/Dodge/Creature/Picture.hs 150;" f craftInfo src/Dodge/Item/Info.hs 168;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 41;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f @@ -3082,15 +3109,15 @@ createGas src/Dodge/Gas.hs 10;" f createHeadLamp src/Dodge/Euse.hs 64;" f createItemYou src/Dodge/Inventory/Add.hs 62;" f createLightMap src/Render.hs 26;" f -createProjectile src/Dodge/HeldUse.hs 1296;" f -createProjectileR src/Dodge/HeldUse.hs 1245;" f +createProjectile src/Dodge/HeldUse.hs 1304;" f +createProjectileR src/Dodge/HeldUse.hs 1253;" f createShell src/Dodge/Projectile/Create.hs 21;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 53;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 130;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 12;" f -creatureShootLaser src/Dodge/HeldUse.hs 859;" f -creatureShootPulseLaser src/Dodge/HeldUse.hs 887;" f +creatureShootLaser src/Dodge/HeldUse.hs 860;" f +creatureShootPulseLaser src/Dodge/HeldUse.hs 891;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 88;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 109;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 98;" f @@ -3140,7 +3167,7 @@ damThingHitWith src/Dodge/Damage.hs 73;" f damToExpBarrel src/Dodge/Barreloid.hs 52;" f damageBlock src/Dodge/Wall/Damage.hs 121;" f damageCodeCommand src/Dodge/Terminal.hs 67;" f -damageCorpse src/Dodge/Creature/Update.hs 56;" f +damageCorpse src/Dodge/Creature/Update.hs 57;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f damageCrystal src/Dodge/Material/Damage.hs 286;" f @@ -3159,7 +3186,7 @@ damagePiezoelectric src/Dodge/Material/Damage.hs 88;" f damagePyroelectric src/Dodge/Material/Damage.hs 79;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f damageStone src/Dodge/Material/Damage.hs 41;" f -damageThingHit src/Dodge/Bullet.hs 181;" f +damageThingHit src/Dodge/Bullet.hs 183;" f damageTypeThreshold src/Dodge/Machine/Update.hs 128;" f damageTypeThreshold' src/Dodge/Wall/Damage.hs 85;" f damageWall src/Dodge/Wall/Damage.hs 31;" f @@ -3173,10 +3200,10 @@ deZoneIX src/Dodge/Zoning/Base.hs 91;" f deZoneWall src/Dodge/Zoning/Wall.hs 69;" f deadEndPSType src/Dodge/Room/Room.hs 264;" f deadEndRoom src/Dodge/Room/Room.hs 267;" f -deadFeet src/Dodge/Creature/Picture.hs 342;" f -deadRot src/Dodge/Creature/Picture.hs 360;" f -deadScalp src/Dodge/Creature/Picture.hs 355;" f -deadUpperBody src/Dodge/Creature/Picture.hs 381;" f +deadFeet src/Dodge/Creature/Picture.hs 344;" f +deadRot src/Dodge/Creature/Picture.hs 362;" f +deadScalp src/Dodge/Creature/Picture.hs 357;" f +deadUpperBody src/Dodge/Creature/Picture.hs 383;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 778;" f debrisSPic src/Dodge/Prop/Draw.hs 17;" f debrisSize src/Dodge/Block/Debris.hs 131;" f @@ -3277,7 +3304,7 @@ detV src/Geometry/Vector.hs 102;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 436;" f detectorInfo src/Dodge/Item/Info.hs 224;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1216;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1224;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 205;" f @@ -3309,7 +3336,7 @@ dmType src/Dodge/Damage.hs 38;" f doAimTwist src/Dodge/Creature/YourControl.hs 132;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 146;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f -doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f +doBarrelSpin src/Dodge/Projectile/Update.hs 169;" f doBlBl src/Dodge/BlBl.hs 5;" f doBounce src/Dodge/Base/Collide.hs 80;" f doButtonEvent src/Dodge/Button/Event.hs 9;" f @@ -3339,7 +3366,7 @@ doDrag src/Dodge/Update/Input/InGame.hs 148;" f doDrawing src/Dodge/Render.hs 33;" f doDrawing' src/Dodge/Render.hs 44;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1177;" f +doGenFloat src/Dodge/HeldUse.hs 1185;" f doGravityPU src/Dodge/Projectile/Update.hs 35;" f doHeldUseEffect src/Dodge/HeldUse.hs 379;" f doInPlacements src/Dodge/Layout.hs 106;" f @@ -3360,7 +3387,7 @@ doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f doSectionSize src/Dodge/DisplayInventory.hs 215;" f doSideEffects appDodge/Main.hs 118;" f -doSlimeRadChange src/Dodge/Creature/Update.hs 219;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 246;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 272;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f @@ -3401,7 +3428,7 @@ drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f drawBullet src/Dodge/Render/ShapePicture.hs 156;" f drawButton src/Dodge/Button/Draw.hs 11;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChaseCrit src/Dodge/Creature/Picture.hs 139;" f +drawChaseCrit src/Dodge/Creature/Picture.hs 141;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f @@ -3412,7 +3439,7 @@ drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f drawCrInfo src/Dodge/Debug.hs 215;" f drawCrInfo' src/Dodge/Debug.hs 210;" f -drawCrabCrit src/Dodge/Creature/Picture.hs 131;" f +drawCrabCrit src/Dodge/Creature/Picture.hs 133;" f drawCreature src/Dodge/Creature/Picture.hs 36;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCross src/Dodge/Render/Label.hs 25;" f @@ -3431,7 +3458,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f drawEmptySet src/Dodge/Render/Picture.hs 153;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f -drawEquipment src/Dodge/Creature/Picture.hs 393;" f +drawEquipment src/Dodge/Creature/Picture.hs 395;" f drawExamineInventory src/Dodge/Render/HUD.hs 199;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f @@ -3524,8 +3551,8 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f -dropAll src/Dodge/Creature/Update.hs 399;" f -dropInventoryPath src/Dodge/HeldUse.hs 1371;" f +dropAll src/Dodge/Creature/Update.hs 426;" f +dropInventoryPath src/Dodge/HeldUse.hs 1379;" f dropItem src/Dodge/Creature/Action.hs 178;" f dropper src/Dodge/Item/Scope.hs 82;" f drumMag src/Dodge/Item/Ammo.hs 31;" f @@ -3547,11 +3574,11 @@ dtToRootIntMap' src/Dodge/DoubleTree.hs 52;" f dtToUpDownAdj src/Dodge/DoubleTree.hs 57;" f dummyMenuOption src/Dodge/Menu/Option.hs 72;" f dustColor src/Shader/Poke/Cloud.hs 55;" f -ebColor src/Dodge/EnergyBall.hs 77;" f -ebDamage src/Dodge/EnergyBall.hs 85;" f -ebEffect src/Dodge/EnergyBall.hs 45;" f -ebFlicker src/Dodge/EnergyBall.hs 70;" f -ebtToDamage src/Dodge/EnergyBall.hs 93;" f +ebColor src/Dodge/EnergyBall.hs 79;" f +ebDamage src/Dodge/EnergyBall.hs 87;" f +ebEffect src/Dodge/EnergyBall.hs 46;" f +ebFlicker src/Dodge/EnergyBall.hs 72;" f +ebtToDamage src/Dodge/EnergyBall.hs 98;" f edgeToPic src/Dodge/Debug/Picture.hs 426;" f effectOnEquip src/Dodge/Euse.hs 84;" f effectOnRemove src/Dodge/Euse.hs 74;" f @@ -3565,7 +3592,7 @@ encircle src/Dodge/Creature/Boid.hs 118;" f encircleCloseP src/Dodge/Creature/Boid.hs 38;" f encircleDistP src/Dodge/Creature/Boid.hs 24;" f encircleP src/Dodge/Creature/Boid.hs 30;" f -endArcPos src/Dodge/Tesla.hs 86;" f +endArcPos src/Dodge/Tesla.hs 87;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 310;" f endRegex src/Dodge/Update/Input/InGame.hs 304;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f @@ -3600,8 +3627,8 @@ 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 189;" f -explodeShell src/Dodge/Projectile/Update.hs 274;" f +expireAndDamage src/Dodge/Bullet.hs 191;" f +explodeShell src/Dodge/Projectile/Update.hs 275;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 746;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 79;" f @@ -3615,7 +3642,7 @@ facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f fdiv src/ShortShow.hs 41;" f feedSlime src/Dodge/Update.hs 1079;" f -feet src/Dodge/Creature/Picture.hs 210;" f +feet src/Dodge/Creature/Picture.hs 212;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f findBlips src/Dodge/RadarSweep.hs 63;" f @@ -3706,7 +3733,7 @@ gameRoomsFromRooms src/Dodge/Layout.hs 170;" f gameplayMenu src/Dodge/Menu.hs 152;" f gameplayMenuOptions src/Dodge/Menu.hs 155;" f gasEffect src/Dodge/Update.hs 916;" f -gasType src/Dodge/HeldUse.hs 1135;" f +gasType src/Dodge/HeldUse.hs 1143;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f generateGraphs src/Dodge/Menu.hs 147;" f @@ -3720,11 +3747,11 @@ geometryUnitTests test/Spec.hs 25;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 152;" f getAmmoLinks src/Dodge/Item/Grammar.hs 109;" f -getAttachedSFLink src/Dodge/HeldUse.hs 805;" f +getAttachedSFLink src/Dodge/HeldUse.hs 806;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 90;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulHitDams src/Dodge/Bullet.hs 173;" f -getBulletType src/Dodge/HeldUse.hs 937;" f +getBulHitDams src/Dodge/Bullet.hs 175;" f +getBulletType src/Dodge/HeldUse.hs 945;" f getCloseObj src/Dodge/Update/Input/InGame.hs 543;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f @@ -3734,7 +3761,7 @@ getCrsFromRooms' src/Dodge/Room/Tutorial.hs 607;" f getDebugMouseOver src/Dodge/Update.hs 473;" f getDistortions src/Dodge/Render.hs 448;" f getEdgesCrossing src/Dodge/Path.hs 39;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1284;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1292;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 160;" f getLaserDamage src/Dodge/HeldUse.hs 728;" f @@ -3743,7 +3770,7 @@ getLinksOfType src/Dodge/RoomLink.hs 40;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMenuMouseContext src/Dodge/Update.hs 485;" f getNodePos src/Dodge/Path.hs 36;" f -getPJStabiliser src/Dodge/HeldUse.hs 1271;" f +getPJStabiliser src/Dodge/HeldUse.hs 1279;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f @@ -3846,9 +3873,9 @@ heldInfo src/Dodge/Item/Info.hs 92;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 165;" f heldItemInvLock src/Dodge/HeldUse.hs 469;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f +heldItemMuzVel src/Dodge/HeldUse.hs 1030;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f -heldItemRifling src/Dodge/HeldUse.hs 1064;" f +heldItemRifling src/Dodge/HeldUse.hs 1072;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 236;" f heldItemWeight src/Dodge/Creature/Statistics.hs 86;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f @@ -3860,7 +3887,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 660;" f -hitEffFromBul src/Dodge/Bullet.hs 156;" f +hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 812;" f hiveCrit src/Dodge/Creature/ChaseCrit.hs 98;" f holdForm src/Dodge/Creature/Boid.hs 139;" f @@ -3871,7 +3898,7 @@ hotkeyToChar src/Dodge/Inventory/SelectionList.hs 201;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 198;" f hoverCrit src/Dodge/Creature/ChaseCrit.hs 80;" f -hoverCritHoverSound src/Dodge/Creature/Update.hs 286;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 313;" f hoverCritInternal src/Dodge/Humanoid.hs 46;" f hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f hoverDeathSounds src/Dodge/Creature/Vocalization.hs 62;" f @@ -3960,7 +3987,7 @@ inventoryX src/Dodge/Creature.hs 105;" f inverseSelNumPos src/Dodge/SelectionSections.hs 211;" f inverseSelSecYint src/Dodge/SelectionSections.hs 179;" f inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 192;" f -inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 42;" f +inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 44;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 16;" f invertIntMap src/IntMapHelp.hs 100;" f invertIntMap src/Multiset.hs 67;" f @@ -4011,7 +4038,7 @@ itemBelowAttachables src/Dodge/Item/Grammar.hs 54;" f itemBlips src/Dodge/RadarSweep.hs 94;" f itemBulkiness src/Dodge/Creature/YourControl.hs 159;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f -itemDetectorEffect src/Dodge/HeldUse.hs 811;" f +itemDetectorEffect src/Dodge/HeldUse.hs 812;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 54;" f itemEquipPict src/Dodge/Item/Draw.hs 18;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 83;" f @@ -4074,7 +4101,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f lamp src/Dodge/Creature/Lamp.hs 18;" f -lampCrSPic src/Dodge/Creature/Picture.hs 402;" f +lampCrSPic src/Dodge/Creature/Picture.hs 404;" f lasCenRunClose' src/Dodge/Room/LasTurret.hs 308;" f lasCenRunClose1 src/Dodge/Room/LasTurret.hs 397;" f lasCenRunClose2 src/Dodge/Room/LasTurret.hs 470;" f @@ -4183,7 +4210,7 @@ ltToCol src/Dodge/Laser/Update.hs 37;" f m src/ShortShow.hs 48;" f mAT src/Dodge/Item/MagAmmoType.hs 17;" f machinePistol src/Dodge/Item/Held/Stick.hs 24;" f -magAmmoParams src/Dodge/HeldUse.hs 957;" f +magAmmoParams src/Dodge/HeldUse.hs 965;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 9;" f magShield src/Dodge/Item/Equipment.hs 26;" f magV src/Geometry/Vector.hs 180;" f @@ -4196,12 +4223,12 @@ main test/Spec.hs 12;" f makeArc src/Picture/Base.hs 149;" f makeBlip src/Dodge/RadarSweep.hs 70;" f makeBlockDebris src/Dodge/Block/Debris.hs 57;" f -makeBullet src/Dodge/HeldUse.hs 1001;" f +makeBullet src/Dodge/HeldUse.hs 1009;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 124;" f makeColorTermPara src/Dodge/Terminal.hs 121;" f -makeCorpse src/Dodge/Creature/Picture.hs 276;" f +makeCorpse src/Dodge/Creature/Picture.hs 278;" f makeCrGibs src/Dodge/Prop/Gib.hs 19;" f makeDebris src/Dodge/Block/Debris.hs 75;" f makeDebrisDirected src/Dodge/Block/Debris.hs 101;" f @@ -4210,16 +4237,16 @@ makeDebrisZ src/Dodge/Block/Debris.hs 78;" f makeDoorDebris src/Dodge/Block/Debris.hs 41;" f makeDumbSwitch src/Dodge/Room/LongDoor.hs 145;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f -makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 69;" f -makeFlak src/Dodge/Bullet.hs 146;" f +makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 62;" f +makeFlak src/Dodge/Bullet.hs 148;" f makeFlame src/Dodge/Flame.hs 46;" f -makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 56;" f +makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 52;" f makeFlamelet src/Dodge/EnergyBall.hs 21;" f -makeFragBullets src/Dodge/Bullet.hs 132;" f +makeFragBullets src/Dodge/Bullet.hs 134;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeIntInterval src/Dodge/Zoning/Base.hs 37;" f makeMachineDebris src/Dodge/Block/Debris.hs 29;" f -makeMovingEB src/Dodge/EnergyBall.hs 60;" f +makeMovingEB src/Dodge/EnergyBall.hs 61;" f makeMuzzleFlare src/Dodge/HeldUse.hs 680;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 80;" f @@ -4233,8 +4260,8 @@ makeSelectionListPictures src/Dodge/Render/List.hs 67;" f makeShaderProgram src/Shader/Compile.hs 74;" f makeShaderVBO src/Shader/Compile.hs 24;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f -makeShrapnelAt src/Dodge/Payload.hs 24;" f -makeSmallExplosionAt src/Dodge/WorldEvent/Explosion.hs 85;" f +makeShrapnelAt src/Dodge/Payload.hs 25;" f +makeSmallExplosionAt src/Dodge/WorldEvent/Explosion.hs 78;" f makeSourcedShader src/Shader/Compile.hs 54;" f makeSpark src/Dodge/Spark.hs 46;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 23;" f @@ -4242,7 +4269,7 @@ makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeTermLine src/Dodge/Terminal.hs 109;" f makeTermPara src/Dodge/Terminal.hs 118;" f makeTeslaArc src/Dodge/Tesla.hs 28;" f -makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f +makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 36;" f makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 15;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 12;" f @@ -4253,7 +4280,7 @@ marimbaE5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 670;" f marimbaG5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 658;" f materialColor src/Dodge/Material/Color.hs 8;" f materialGib src/Dodge/Prop/Gib.hs 95;" f -materialPenetrable src/Dodge/Bullet.hs 212;" f +materialPenetrable src/Dodge/Bullet.hs 214;" f maxAmmo src/Dodge/Item/MaxAmmo.hs 6;" f maxDamageType src/Dodge/Damage.hs 59;" f maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f @@ -4282,10 +4309,10 @@ mcProxSensorUpdate src/Dodge/Machine/Update.hs 165;" f mcProxTest src/Dodge/Machine/Update.hs 246;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 207;" f mcSPic src/Dodge/Render/ShapePicture.hs 153;" f -mcShootAuto src/Dodge/HeldUse.hs 1189;" f -mcShootLaser src/Dodge/HeldUse.hs 1181;" f +mcShootAuto src/Dodge/HeldUse.hs 1197;" f +mcShootLaser src/Dodge/HeldUse.hs 1189;" f mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f -mcUseHeld src/Dodge/HeldUse.hs 1106;" f +mcUseHeld src/Dodge/HeldUse.hs 1114;" f mcUseItem src/Dodge/Machine/Update.hs 107;" f megaBattery src/Dodge/Item/Ammo.hs 54;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f @@ -4359,14 +4386,14 @@ mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 70;" f mouseCursorType src/Dodge/Render/Picture.hs 90;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 39;" f mouseWorldPosW src/Dodge/Base/Coordinate.hs 42;" f -moveBullet src/Dodge/Bullet.hs 198;" f +moveBullet src/Dodge/Bullet.hs 200;" f moveCombineSel src/Dodge/Update/Scroll.hs 119;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 31;" f -movePenBullet src/Dodge/Bullet.hs 204;" f -moveProjectile src/Dodge/Projectile/Update.hs 249;" f +movePenBullet src/Dodge/Bullet.hs 206;" f +moveProjectile src/Dodge/Projectile/Update.hs 250;" f moveRoomBy src/Dodge/Room/Link.hs 57;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f -moveStuckGrenade src/Dodge/Projectile/Update.hs 228;" f +moveStuckGrenade src/Dodge/Projectile/Update.hs 229;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 106;" f moveWall src/Dodge/Wall/Move.hs 23;" f moveWallID src/Dodge/Wall/Move.hs 18;" f @@ -4384,8 +4411,8 @@ multiSelScroll src/Dodge/Inventory.hs 222;" f multiSelScroll' src/Dodge/Inventory.hs 229;" f muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 702;" f -muzzlePos src/Dodge/HeldUse.hs 786;" f -muzzleRandPos src/Dodge/HeldUse.hs 795;" f +muzzlePos src/Dodge/HeldUse.hs 787;" f +muzzleRandPos src/Dodge/HeldUse.hs 796;" f muzzleWallCheck src/Dodge/Update.hs 349;" f mvButton src/Dodge/Placement/PlaceSpot.hs 170;" f mvCr src/Dodge/Placement/PlaceSpot.hs 173;" f @@ -4413,7 +4440,7 @@ newKey src/IntMapHelp.hs 61;" f newSounds src/Dodge/Creature/Perception.hs 179;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f -nextArc src/Dodge/Tesla.hs 60;" f +nextArc src/Dodge/Tesla.hs 61;" f nextInSectionSS src/Dodge/SelectionSections.hs 34;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f @@ -4448,7 +4475,7 @@ oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f onEquipWristShield src/Dodge/Euse.hs 89;" f onRemoveWristShield src/Dodge/Euse.hs 79;" f oneH src/Dodge/Creature/Test.hs 95;" f -oneSmooth src/Dodge/Creature/Picture.hs 207;" f +oneSmooth src/Dodge/Creature/Picture.hs 209;" f openConsole src/Dodge/Update.hs 140;" f optionMenu src/Dodge/Menu.hs 110;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f @@ -4511,7 +4538,7 @@ pbFlicker src/Dodge/Update.hs 568;" f pbsHit src/Dodge/WorldEvent/ThingsHit.hs 143;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f -penThing src/Dodge/Bullet.hs 215;" f +penThing src/Dodge/Bullet.hs 217;" f perMat src/MatrixHelper.hs 60;" f perceptionUpdate src/Dodge/Creature/Perception.hs 25;" f performAction src/Dodge/Creature/Action.hs 56;" f @@ -4530,7 +4557,7 @@ pincerP''' src/Dodge/Creature/Boid.hs 77;" f pipe src/Dodge/Item/Craftable.hs 29;" f pistol src/Dodge/Item/Held/Stick.hs 18;" f pistolerRoom src/Dodge/Room/Room.hs 351;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 196;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 197;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f @@ -4569,7 +4596,7 @@ pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointsToPoly src/Geometry/ConvexPoly.hs 37;" f -poisonSPic src/Dodge/Creature/Update.hs 395;" f +poisonSPic src/Dodge/Creature/Update.hs 422;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4800,7 +4827,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 570;" f rememberSounds src/Dodge/Creature/Perception.hs 186;" f remoteDetonator src/Dodge/Item/Scope.hs 152;" f remoteScreen src/Dodge/Item/Scope.hs 146;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 941;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeLights src/Dodge/Room/Modify.hs 34;" f @@ -4941,10 +4968,10 @@ scaleAlong src/Dodge/Creature/Picture.hs 72;" f scaleMat src/MatrixHelper.hs 71;" f scaleMatrix src/MatrixHelper.hs 68;" f scaleSH src/Shape.hs 271;" f -scalp src/Dodge/Creature/Picture.hs 369;" f +scalp src/Dodge/Creature/Picture.hs 371;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 392;" f +scorchSPic src/Dodge/Creature/Update.hs 419;" f screenBox src/Dodge/Base/Window.hs 54;" f screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f @@ -4972,7 +4999,7 @@ sectionsSizes src/Dodge/DisplayInventory.hs 205;" f seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f -segmentArea src/Dodge/Creature/Update.hs 267;" f +segmentArea src/Dodge/Creature/Update.hs 294;" f selNumPos src/Dodge/Render/HUD.hs 475;" f selNumPosCardinal src/Dodge/Render/HUD.hs 492;" f selSecDrawCursor src/Dodge/Render/List.hs 101;" f @@ -5013,12 +5040,12 @@ setOutLinks src/Dodge/RoomLink.hs 49;" f setOutLinksByType src/Dodge/RoomLink.hs 76;" f setOutLinksPD src/Dodge/RoomLink.hs 96;" f setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 137;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 294;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 295;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 360;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f -setSlimeDir src/Dodge/Creature/Update.hs 198;" f +setSlimeDir src/Dodge/Creature/Update.hs 225;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f @@ -5075,18 +5102,18 @@ shiftSetDown src/Dodge/Inventory.hs 174;" f shiftSetUp src/Dodge/Inventory.hs 168;" f shiftTile src/Dodge/Room/Link.hs 49;" f shineTargetLaser src/Dodge/Creature/State.hs 206;" f -shineTorch src/Dodge/Creature/State.hs 242;" f -shootBullet src/Dodge/HeldUse.hs 995;" f -shootBullets src/Dodge/HeldUse.hs 989;" f +shineTorch src/Dodge/Creature/State.hs 243;" f +shootBullet src/Dodge/HeldUse.hs 1003;" f +shootBullets src/Dodge/HeldUse.hs 997;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 868;" f -shootPlasmaBall src/Dodge/HeldUse.hs 907;" f -shootPulseBall src/Dodge/HeldUse.hs 919;" f -shootPulseLaser src/Dodge/HeldUse.hs 894;" f +shootLaser src/Dodge/HeldUse.hs 870;" f +shootPlasmaBall src/Dodge/HeldUse.hs 913;" f +shootPulseBall src/Dodge/HeldUse.hs 926;" f +shootPulseLaser src/Dodge/HeldUse.hs 899;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f -shootTeslaArc src/Dodge/HeldUse.hs 1206;" f +shootTeslaArc src/Dodge/HeldUse.hs 1214;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 838;" f +shootTractorBeam src/Dodge/HeldUse.hs 839;" f shootersRoom src/Dodge/Room/Room.hs 345;" f shootersRoom' src/Dodge/Room/Room.hs 312;" f shootersRoom1 src/Dodge/Room/Room.hs 335;" f @@ -5140,12 +5167,12 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f slideWindow src/ListHelp.hs 81;" f slimeCrit src/Dodge/Creature/ChaseCrit.hs 68;" f -slimeCritUpdate src/Dodge/Creature/Update.hs 163;" f +slimeCritUpdate src/Dodge/Creature/Update.hs 190;" f slimeEatSound src/Dodge/Update.hs 1117;" f slimeFood src/Dodge/Update.hs 1072;" f slimeSuck src/Dodge/Update.hs 1056;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 56;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 270;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 297;" f slowCrush90 src/Dodge/Room/LongDoor.hs 263;" f slowCrushRoom src/Dodge/Room/LongDoor.hs 148;" f slowDoorRoom src/Dodge/Room/LongDoor.hs 309;" f @@ -5205,15 +5232,15 @@ spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 49;" f spawnerRoom src/Dodge/Room/Room.hs 390;" f speedLegs src/Dodge/Item/Equipment.hs 74;" f -spiderJoint src/Dodge/Creature/Picture.hs 258;" f +spiderJoint src/Dodge/Creature/Picture.hs 260;" f splashMenu src/Dodge/Menu.hs 31;" f splashMenuOptions src/Dodge/Menu.hs 36;" f splashScreen src/Dodge/Initialisation.hs 10;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitLookupTrie src/SimpleTrie.hs 39;" f -splitSlimeCrit src/Dodge/Creature/Update.hs 236;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 226;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 263;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 253;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5251,7 +5278,7 @@ stackText src/Picture/Base.hs 180;" f stackedInventory src/Dodge/Creature.hs 320;" f startCr src/Dodge/Creature.hs 85;" f startCrafts src/Dodge/Room/Start.hs 94;" f -startDeathTimer src/Dodge/Creature/Update.hs 349;" f +startDeathTimer src/Dodge/Creature/Update.hs 376;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f startInvList src/Dodge/Creature.hs 99;" f startInventory src/Dodge/Creature.hs 102;" f @@ -5269,7 +5296,7 @@ stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 576;" f stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 582;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 706;" f stopAllSounds src/Sound.hs 127;" f -stopBulletAt src/Dodge/Bullet.hs 201;" f +stopBulletAt src/Dodge/Bullet.hs 203;" f stopPushing src/Dodge/Wall/Damage.hs 172;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f storageShape src/Dodge/Machine/Draw.hs 31;" f @@ -5403,7 +5430,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 154;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 158;" f -toDeathCarriage src/Dodge/Creature/Update.hs 354;" f +toDeathCarriage src/Dodge/Creature/Update.hs 381;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5431,10 +5458,10 @@ topTestPart src/Dodge/TestString.hs 107;" f torchShape src/Dodge/Item/Draw/SPic.hs 278;" f torqueAmount src/Dodge/HeldUse.hs 606;" f torqueCr src/Dodge/WorldEffect.hs 85;" f -torso src/Dodge/Creature/Picture.hs 374;" f +torso src/Dodge/Creature/Picture.hs 376;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 850;" f +tractorBeamAt src/Dodge/HeldUse.hs 851;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 42;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 420;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5537,20 +5564,23 @@ unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 133;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 121;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 203;" f +updateAggroBee src/Dodge/Creature/Update.hs 118;" f updateAimPos src/Dodge/Update.hs 398;" f updateAllNodes src/TreeHelp.hs 88;" f -updateArc src/Dodge/Tesla.hs 43;" f +updateArc src/Dodge/Tesla.hs 44;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f -updateBeeCrit src/Dodge/Creature/Update.hs 105;" f +updateBeeCrit src/Dodge/Creature/Update.hs 113;" f +updateBeeFromPheremones src/Dodge/Creature/Update.hs 106;" f updateBeePheremone src/Dodge/Update.hs 786;" f updateBeePheremones src/Dodge/Update.hs 783;" f updateBounds src/Dodge/Update/Camera.hs 262;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f updateBullets src/Dodge/Update.hs 669;" f +updateCalmBee src/Dodge/Creature/Update.hs 132;" f updateCamera src/Dodge/Update/Camera.hs 33;" f updateCarriage src/Dodge/Creature/State/WalkCycle.hs 20;" f updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 25;" f @@ -5559,7 +5589,7 @@ updateCloud src/Dodge/Update.hs 920;" f updateClouds src/Dodge/Update.hs 780;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f -updateCreature src/Dodge/Creature/Update.hs 45;" f +updateCreature src/Dodge/Creature/Update.hs 46;" f updateCreatureGroups src/Dodge/Update.hs 641;" f updateCreatureSoundPositions src/Dodge/Update.hs 620;" f updateCreatureStride src/Dodge/Update.hs 377;" f @@ -5579,7 +5609,7 @@ updateEdge src/Dodge/Path.hs 45;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f -updateEnergyBall src/Dodge/EnergyBall.hs 31;" f +updateEnergyBall src/Dodge/EnergyBall.hs 32;" f updateEnergyBalls src/Dodge/Update.hs 771;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 515;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f @@ -5591,14 +5621,14 @@ updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f updateGas src/Dodge/Update.hs 942;" f updateGasses src/Dodge/Update.hs 792;" f updateGusts src/Dodge/Update.hs 904;" f -updateHiveCrit src/Dodge/Creature/Update.hs 84;" f +updateHiveCrit src/Dodge/Creature/Update.hs 85;" f updateIMl src/Dodge/Update.hs 635;" f updateIMl' src/Dodge/Update.hs 638;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 438;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 264;" f +updateItemTargeting src/Dodge/Creature/State.hs 265;" f updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 405;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 432;" f updateKeysInGame src/Dodge/Update/Input/InGame.hs 87;" f @@ -5609,7 +5639,7 @@ updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 514;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLivingCreature src/Dodge/Creature/Update.hs 59;" f +updateLivingCreature src/Dodge/Creature/Update.hs 60;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 406;" f @@ -5626,7 +5656,7 @@ updatePlasmaBall src/Dodge/Update.hs 528;" f updatePlasmaBalls src/Dodge/Update.hs 676;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 407;" f +updatePulse src/Dodge/Creature/Update.hs 434;" f updatePulseBall src/Dodge/Update.hs 548;" f updatePulseLaser src/Dodge/Update.hs 723;" f updatePulseLasers src/Dodge/Update.hs 523;" f @@ -5668,7 +5698,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 493;" f updateWorldEventFlag src/Dodge/Update.hs 129;" f updateWorldEventFlags src/Dodge/Update.hs 117;" f -upperBody src/Dodge/Creature/Picture.hs 389;" f +upperBody src/Dodge/Creature/Picture.hs 391;" f upperBox src/Shape.hs 149;" f upperBoxHalf src/Shape.hs 224;" f upperBoxMT src/Shape.hs 140;" f @@ -5688,9 +5718,9 @@ upperPrismPolyScale src/Shape.hs 209;" f upperPrismPolyTS src/Shape.hs 112;" f upperRounded src/Shape.hs 178;" f useBulletPayload src/Dodge/Bullet.hs 117;" f -useGasParams src/Dodge/HeldUse.hs 1111;" f +useGasParams src/Dodge/HeldUse.hs 1119;" f useHotkey src/Dodge/Creature/YourControl.hs 57;" f -useInventoryPath src/Dodge/HeldUse.hs 1402;" f +useInventoryPath src/Dodge/HeldUse.hs 1410;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 262;" f @@ -5698,11 +5728,11 @@ useLoadedAmmo src/Dodge/HeldUse.hs 741;" f useMagShield src/Dodge/Euse.hs 33;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1362;" f +useRewindGun src/Dodge/HeldUse.hs 1370;" f useRoomPosCond src/Dodge/PlacementSpot.hs 187;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 190;" f -useStopWatch src/Dodge/HeldUse.hs 1343;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1351;" f +useStopWatch src/Dodge/HeldUse.hs 1351;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1359;" f useUnusedLnk src/Dodge/PlacementSpot.hs 178;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 209;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 216;" f @@ -5737,7 +5767,7 @@ visionCheck src/Dodge/Creature/Perception.hs 162;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 356;" f walkCliffPush src/Dodge/Creature/State/WalkCycle.hs 84;" f -walkNozzle src/Dodge/HeldUse.hs 826;" f +walkNozzle src/Dodge/HeldUse.hs 827;" f walkableNodeNear src/Dodge/Path.hs 90;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 99;" f @@ -5746,7 +5776,7 @@ wallMovement src/Dodge/WallCreatureCollisions.hs 68;" f wallToSurface src/Dodge/Base/Collide.hs 202;" f wallsFromRooms src/Dodge/Layout.hs 158;" f wallsToDraw src/Dodge/Render/Walls.hs 18;" f -warmupSound src/Dodge/HeldUse.hs 1396;" f +warmupSound src/Dodge/HeldUse.hs 1404;" f warningRooms src/Dodge/Room/Warning.hs 34;" f warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 910;" f wasdAim src/Dodge/Creature/YourControl.hs 116;" f @@ -5846,7 +5876,7 @@ zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f zeroOneSmooth src/Dodge/Creature/HandPos.hs 61;" f zeroZ src/Geometry/Vector.hs 9;" f -zipArcs src/Dodge/Tesla.hs 51;" f +zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 142;" f zonableCreature src/Dodge/Update.hs 614;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f