diff --git a/src/Dodge/Barreloid.hs b/src/Dodge/Barreloid.hs index ff494dde5..6808b01f5 100644 --- a/src/Dodge/Barreloid.hs +++ b/src/Dodge/Barreloid.hs @@ -29,7 +29,7 @@ updateExpBarrel ps cr w & flip (foldl' f) ps | otherwise = w - & makeExplosionAt (cr ^. crPos) 0 + & makeExplosionAt ((cr ^. crPos) `v2z` 20) 0 & cWorld . lWorld . creatures . at (_crID cr) .~ Nothing where f w' p = makeSpark NormalSpark (p + normalizeV p + cr ^. crPos) (argV p) w' diff --git a/src/Dodge/Bullet/Draw.hs b/src/Dodge/Bullet/Draw.hs index 36d5d9343..23c208457 100644 --- a/src/Dodge/Bullet/Draw.hs +++ b/src/Dodge/Bullet/Draw.hs @@ -1,14 +1,13 @@ module Dodge.Bullet.Draw ( - drawBul, + drawBullet, ) where import Dodge.Data.Bullet import Linear import Picture -drawBul :: Bullet -> Picture -drawBul pt = - --setLayer BloomNoZWrite +drawBullet :: Bullet -> Picture +drawBullet pt = setLayer BloomLayer . setDepth 20 . color (V4 200 200 200 2) diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index 45a308866..dd9721711 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -18,8 +18,7 @@ import Geometry.Data data Bullet = Bullet { _buEffect :: BulletEffect , _buPayload :: BulletPayload - , -- , _buTrajectory :: BulletTrajectory - _buVel :: Point2 + , _buVel :: Point2 , _buDrag :: Float , _buPos :: Point2 , _buOldPos :: Point2 diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index 72d16b739..a95012758 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -15,8 +15,8 @@ import Dodge.Data.EnergyBall.Type import Geometry.Data data EnergyBall = EnergyBall - { _ebVel :: Point2 - , _ebPos :: Point2 + { _ebVel :: Point3 + , _ebPos :: Point3 , _ebTimer :: Int , _ebType :: EnergyBallType } diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index 36db8b0c8..9b12cb4f3 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -17,8 +17,9 @@ import Geometry import LensHelp import Picture import RandomHelp +import Linear.V3 -makeFlamelet :: Point2 -> Point2 -> Float -> Int -> World -> World +makeFlamelet :: Point3 -> Point3 -> Float -> Int -> World -> World makeFlamelet p v s t w = w & randGen .~ g @@ -36,29 +37,29 @@ updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb | _ebTimer eb <= 0 = (w, Nothing) | otherwise = - ( ebEffect eb . ebFlicker eb $ ebDamage (_ebPos eb) (_ebType eb) w - , Just $ eb & ebTimer -~ 1 & ebPos .~ bp & ebVel .~ drag * bv + ( ebEffect eb . ebFlicker eb $ ebDamage (eb ^. ebPos) (_ebType eb) w + , Just $ eb & ebTimer -~ 1 & ebPos . _xy .~ bp & ebVel . _xy .~ drag * bv ) where drag = case eb ^. ebType of ExplosiveBall -> 0.9 _ -> 0.85 - p = eb ^. ebPos + eb ^. ebVel - (bp, bv) = fromMaybe (p, eb ^. ebVel) $ bouncePoint (const True) 0 (eb ^. ebPos) p w + 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 -> - soundContinue (EBSound i) (_ebPos eb) elecCrackleS (Just 2) + soundContinue (EBSound i) (eb ^. ebPos . _xy) elecCrackleS (Just 2) . randSparkExtraVel - (_ebVel eb) + (eb ^. ebVel . _xy) ElectricSpark (state (randomR (3, 6))) (state (randomR (0, 2 * pi))) - (_ebPos eb) + (eb ^. ebPos . _xy) IncendiaryBall{} | _ebTimer eb == 20 -> - soundStart (EBSound (-1)) (_ebPos eb) fireFadeS Nothing + soundStart (EBSound (-1)) (eb ^. ebPos . _xy) fireFadeS Nothing _ -> id energyBallAt :: EnergyBallType -> Point2 -> World -> World @@ -66,7 +67,7 @@ energyBallAt ebt p = cWorld . lWorld . energyBalls .:~ EnergyBall { _ebVel = 0 - , _ebPos = p + , _ebPos = p `v2z` 20 , _ebTimer = 20 , _ebType = ebt } @@ -75,8 +76,8 @@ makeMovingEB :: Point2 -> EnergyBallType -> Point2 -> World -> World makeMovingEB v ebt p = cWorld . lWorld . energyBalls .:~ EnergyBall - { _ebVel = v - , _ebPos = p + { _ebVel = v `v2z` 0 + , _ebPos = p `v2z` 20 , _ebTimer = 20 , _ebType = ebt } @@ -88,7 +89,7 @@ ebFlicker :: EnergyBall -> World -> World ebFlicker pt | _ebTimer pt `mod` 7 == 0 = cWorld . lWorld . lights - .:~ LSParam (addZ 5 $ _ebPos pt) 70 (0.5 * xyzV4 (ebColor pt)) + .:~ LSParam (pt ^. ebPos) 70 (0.5 * xyzV4 (ebColor pt)) | otherwise = id ebColor :: EnergyBall -> Color @@ -99,9 +100,12 @@ ebColor eb = case eb ^. ebType of ExplosiveBall -> white FlashBall -> white -ebDamage :: Point2 -> EnergyBallType -> World -> World -ebDamage sp dt = damageInCircle (const $ ebtToDamage sp dt) sp r +ebDamage :: Point3 -> EnergyBallType -> World -> World +ebDamage sp dt + | z > 0 && z < 25 = damageInCircle (const $ ebtToDamage (sp ^. _xy) dt) (sp ^. _xy) r + | otherwise = id where + z = sp ^. _z r = fromMaybe 5 $ dt ^? fbSize ebtToDamage :: Point2 -> EnergyBallType -> Damage diff --git a/src/Dodge/EnergyBall/Draw.hs b/src/Dodge/EnergyBall/Draw.hs index 8d64d6c07..4877a213c 100644 --- a/src/Dodge/EnergyBall/Draw.hs +++ b/src/Dodge/EnergyBall/Draw.hs @@ -15,8 +15,9 @@ drawEnergyBall eb = case _ebType eb of drawExplosiveBall :: EnergyBall -> Picture drawExplosiveBall eb = setLayer BloomLayer - . setDepth 20 - . uncurryV translate (_ebPos eb) +-- . setDepth 20 +-- . uncurryV translate (_ebPos eb) + . translate3 (_ebPos eb) . color white $ thickCircle r x where @@ -27,9 +28,10 @@ drawExplosiveBall eb = drawStaticBall :: EnergyBall -> Picture drawStaticBall pt = setLayer BloomNoZWrite - . setDepth 20 - -- . setDepth (_ebZ pt + 20) - . uncurryV translate (_ebPos pt) +-- . setDepth 20 +-- -- . setDepth (_ebZ pt + 20) +-- . uncurryV translate (_ebPos pt) + . translate3 (_ebPos pt) $ circleSolidCol blue (withAlpha 0.5 white) 8 drawFlamelet :: Float -> Float -> EnergyBall -> Picture @@ -40,13 +42,13 @@ drawFlamelet size rot pt = , setLayer BloomNoZWrite pi2 ] where - z = 20 sp = _ebPos pt siz2 = size + 0.2 time = _ebTimer pt piu = - setDepth (z + 5) - . uncurryV translate sp + translate3 sp +-- setDepth (z + 5) +-- . uncurryV translate sp . color ( mixColors (fromIntegral (max 0 (time -2))) @@ -61,8 +63,9 @@ drawFlamelet size rot pt = . polygon $ reverse (rectNSWE siz2 (- siz2) (- siz2) siz2) pi2 = - setDepth (z + 5) - . uncurryV translate sp + translate3 sp + --setDepth (z + 5) + -- . uncurryV translate sp . color ( mixColors (fromIntegral (max 0 (time -2))) @@ -78,8 +81,9 @@ drawFlamelet size rot pt = . reverse $ rectNSWE siz2 (- siz2) (- siz2) siz2 pic = - setDepth (z + 2) - . uncurryV translate sp + translate3 sp + --setDepth (z + 2) + -- . uncurryV translate sp . color ( mixColors (fromIntegral (max 0 (time -2))) diff --git a/src/Dodge/Machine/Destroy.hs b/src/Dodge/Machine/Destroy.hs index 9ad032144..f0cc995ff 100644 --- a/src/Dodge/Machine/Destroy.hs +++ b/src/Dodge/Machine/Destroy.hs @@ -1,5 +1,6 @@ module Dodge.Machine.Destroy where +import Geometry.Vector3D import Dodge.FloorItem import Data.Maybe import Dodge.Data.World @@ -13,7 +14,7 @@ destroyMachine :: Machine -> World -> World destroyMachine mc = (cWorld . lWorld . machines %~ IM.delete (_mcID mc)) . deleteWallIDs (_mcWallIDs mc) - . makeExplosionAt (_mcPos mc) 0 + . makeExplosionAt (_mcPos mc `v2z` 20) 0 . mcKillTerm mc . mcKillBut mc . destroyMcType (mc ^. mcType) mc diff --git a/src/Dodge/Payload.hs b/src/Dodge/Payload.hs index 70b568ef9..6fbb45da5 100644 --- a/src/Dodge/Payload.hs +++ b/src/Dodge/Payload.hs @@ -14,15 +14,16 @@ import Dodge.SoundLogic import Dodge.WorldEvent.Explosion import Geometry.Data import LensHelp +import Linear.V3 -usePayload :: Payload -> Point2 -> Point2 -> World -> World +usePayload :: Payload -> Point3 -> Point3 -> World -> World usePayload = \case ExplosionPayload -> makeExplosionAt ShrapnelBomb -> makeShrapnelAt DudPayload -> const (const id) -makeShrapnelAt :: Point2 -> Point2 -> World -> World -makeShrapnelAt p v w = +makeShrapnelAt :: Point3 -> Point3 -> World -> World +makeShrapnelAt p' vel' w = w & soundMultiFrom [Explosion 0, Explosion 1] p bangS Nothing & cWorld . lWorld . worldEvents @@ -30,6 +31,8 @@ makeShrapnelAt p v w = & makeShockwaveAt [] p 50 5 0 white & cWorld . lWorld . bullets .++~ buls where + p = p' ^. _xy + v = vel' ^. _xy vs = replicateM 75 (randInCirc 10) & evalState $ _randGen w drags :: [Float] drags = replicateM 75 (state $ randomR (0.85,0.9)) & evalState $ _randGen w diff --git a/src/Dodge/PressPlate.hs b/src/Dodge/PressPlate.hs index b6e58a7b7..6848a38ed 100644 --- a/src/Dodge/PressPlate.hs +++ b/src/Dodge/PressPlate.hs @@ -12,5 +12,5 @@ doPressPlateEvent ppe = case ppe of ppLevelReset :: PressPlate -> World -> World ppLevelReset pp w - | dist (_crPos $ you w) (_ppPos pp) < 20 = makeExplosionAt (_ppPos pp) 0 w + | dist (_crPos $ you w) (_ppPos pp) < 20 = makeExplosionAt (_ppPos pp `v2z` 20) 0 w | otherwise = w diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index 72ac95a9f..c926a5c44 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -187,7 +187,8 @@ doThrust pj smoke w = & randGen .~ g & cWorld . lWorld . projectiles . ix i . pjVel . _xy %~ (\v -> accel +.+ frict *.* v) & soundContinue (ShellSound i) newPos missileLaunchS (Just 1) - & makeFlamelet (oldPos -.- vel) (vel +.+ rotateV (pi + sparkD) accel) 3 10 + & makeFlamelet ((oldPos -.- vel) `v2z` 20) + ((vel +.+ rotateV (pi + sparkD) accel) `v2z` 0) 3 10 & makeCloudAt RocketSmoke lifetime @@ -285,7 +286,7 @@ explodeShell pj w = & cWorld . lWorld . projectiles . ix pjid . pjType .~ RetiredProjectile & cWorld . lWorld . projectiles . ix pjid . pjVel .~ 0 & cWorld . lWorld . projectiles . ix pjid . pjTimer .~ 30 - & usePayload (_pjPayload pj) (pj ^. pjPos . _xy) (pj ^. pjVel . _xy) + & usePayload (_pjPayload pj) (pj ^. pjPos) (pj ^. pjVel) & stopSoundFrom (ShellSound pjid) & updatedetonator where diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index 52cddc165..fb1c4a408 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -102,7 +102,7 @@ extraPics cfig u = <> foldMap drawFlame (_flames lw) <> foldMap drawEnergyBall (_energyBalls lw) <> foldMap drawSpark (_sparks lw) - <> foldMap drawBul (_bullets lw) + <> foldMap drawBullet (_bullets lw) <> foldMap drawBlip (_radarBlips lw) <> _flares lw <> foldMap drawLightSource (_lightSources lw) diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 69afa3c95..3edf42ab9 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -659,7 +659,7 @@ updatePulseLaser pz = case pz ^. pzTimer of ((_, OPulseBall pb):xs) -> dodam xs . (cWorld . lWorld . pulseBalls . ix (_pbID pb) . pbTimer .~ 0) - . makeExplosionAt (_pbPos pb) 0 + . makeExplosionAt (_pbPos pb `v2z` 20) 0 _ -> id phasev = _pzPhaseV pz sp = _pzPos pz diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 015c0da3b..75332da5c 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -19,6 +19,8 @@ import Geometry import LensHelp import Picture import RandomHelp +import Linear.V3 +import Linear.Metric makePoisonExplosionAt :: -- | Position @@ -68,8 +70,8 @@ makeFlameExplosionAt p w = -- the ( Nthing :: Maybe Int ) here is "maybe" a creature id that the -- particle passes through for the first frame of its existence -makeExplosionAt :: Point2 -> Point2 -> World -> World -makeExplosionAt p vel w = +makeExplosionAt :: Point3 -> Point3 -> World -> World +makeExplosionAt p' vel' w = w & soundStart (Explosion (w ^. cWorld . lWorld . lClock)) (p) bangS Nothing & addFlames @@ -77,13 +79,15 @@ makeExplosionAt p vel w = .:~ MakeTempLight (LSParam (addZ 20 p) 150 (V3 1 0.5 0)) 20 & makeShockwaveAt [] p 50 50 1 white where - fVs = replicateM 100 (randInCirc 1) & evalState $ _randGen w - fPs' = replicateM 100 (randInCirc 5) & evalState $ _randGen w + p = p' ^. _xy + fVs = fmap (`v2z` 0) $ replicateM 100 (randInCirc 1) & evalState $ _randGen w + fPs' = fmap (`v2z` 0) $ replicateM 100 (randInCirc 5) & evalState $ _randGen w fdamps = replicateM 100 (state $ randomR (0,1)) & evalState $ _randGen w - inversePushOut v = (15 - magV v) * 0.01 *.* v - fVs' = zipWith (+.+) fVs $ map inversePushOut fPs' + inversePushOut v = (15 - norm v) * 0.01 *.*.* v + fVs' = zipWith (+.+.+) fVs $ map inversePushOut fPs' sizes = randomRs (2, 9) $ _randGen w times = randomRs (15, 20) $ _randGen w - mF q v damp size time = makeFlamelet (q - (2*v + 2* vel)) (v + damp *.* vel) size time - newFs = zipWith4 (mF p) (zipWith (+) fPs' (fmap (3 *.*) fVs')) fdamps sizes times + mF q v damp size time = makeFlamelet + (q - (2*v + 2* vel')) (v + damp *.*.* vel') size time + newFs = zipWith4 (mF p') (zipWith (+) fPs' (fmap (3 *.*.*) fVs')) fdamps sizes times addFlames w' = foldl' (flip ($)) w' newFs diff --git a/tags b/tags index 8ff63a8e1..835242a87 100644 --- a/tags +++ b/tags @@ -114,8 +114,8 @@ BarrelHiss src/Dodge/Data/SoundOrigin.hs 33;" C BarrelType src/Dodge/Data/Creature/Misc.hs 87;" t Barreloid src/Dodge/Data/Creature/Misc.hs 83;" C BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C -BasicBulletTrajectory src/Dodge/Data/Bullet.hs 45;" C -BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 52;" C +BasicBulletTrajectory src/Dodge/Data/Bullet.hs 44;" C +BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" C BasicFlare src/Dodge/Data/Muzzle.hs 26;" C Beam src/Dodge/Data/Beam.hs 18;" t BeamCombine src/Dodge/Data/Beam.hs 47;" C @@ -126,8 +126,8 @@ BeamSimple src/Dodge/Data/Beam.hs 50;" C BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C BeltBulletAmmo src/Dodge/Data/AmmoType.hs 8;" C -BezierTrajectory src/Dodge/Data/Bullet.hs 46;" C -BezierTrajectoryType src/Dodge/Data/Bullet.hs 53;" C +BezierTrajectory src/Dodge/Data/Bullet.hs 45;" C +BezierTrajectoryType src/Dodge/Data/Bullet.hs 52;" C Biome src/Dodge/Data/Scenario.hs 71;" t BlBl src/Dodge/Data/BlBl.hs 11;" t BlConst src/Dodge/Data/BlBl.hs 13;" C @@ -152,27 +152,27 @@ BloomNoZWrite src/Picture/Data.hs 26;" C Blunt src/Dodge/Data/Damage.hs 21;" C Boosting src/Dodge/Data/Creature/Stance.hs 28;" C BottomEscapeMenuOption src/Dodge/Data/Universe.hs 77;" C -BounceBullet src/Dodge/Data/Bullet.hs 32;" C +BounceBullet src/Dodge/Data/Bullet.hs 31;" C Bound_box_screen src/Dodge/Data/Config.hs 81;" C BoundaryCursor src/Dodge/Data/SelectionList.hs 20;" C Bounds src/Dodge/Data/Bounds.hs 12;" 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 37;" C -BulFlak src/Dodge/Data/Bullet.hs 39;" C -BulFrag src/Dodge/Data/Bullet.hs 40;" C -BulGas src/Dodge/Data/Bullet.hs 41;" C -BulPlain src/Dodge/Data/Bullet.hs 38;" C +BulBall src/Dodge/Data/Bullet.hs 36;" C +BulFlak src/Dodge/Data/Bullet.hs 38;" C +BulFrag src/Dodge/Data/Bullet.hs 39;" C +BulGas src/Dodge/Data/Bullet.hs 40;" C +BulPlain src/Dodge/Data/Bullet.hs 37;" C Bullet src/Dodge/Data/Bullet.hs 18;" t BulletAmmo src/Dodge/Data/AmmoType.hs 7;" C -BulletEffect src/Dodge/Data/Bullet.hs 30;" t +BulletEffect src/Dodge/Data/Bullet.hs 29;" 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 52;" C -BulletPayload src/Dodge/Data/Bullet.hs 36;" t -BulletTrajectory src/Dodge/Data/Bullet.hs 44;" t -BulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" t +BulletPayload src/Dodge/Data/Bullet.hs 35;" t +BulletTrajectory src/Dodge/Data/Bullet.hs 43;" t +BulletTrajectoryType src/Dodge/Data/Bullet.hs 50;" t BurstTrigger src/Dodge/Data/TriggerType.hs 12;" C Button src/Dodge/Data/Button.hs 30;" t ButtonAccessTerminal src/Dodge/Data/Button.hs 28;" C @@ -340,7 +340,7 @@ DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 13;" C DefaultRoomType src/Dodge/Data/Room.hs 31;" C DefaultTerminal src/Dodge/Data/Terminal.hs 55;" C DestroyBeing src/Dodge/Data/Scenario.hs 8;" C -DestroyBullet src/Dodge/Data/Bullet.hs 31;" C +DestroyBullet src/Dodge/Data/Bullet.hs 30;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 183;" t Dirt src/Dodge/Data/Material.hs 11;" C @@ -461,8 +461,8 @@ FlashBall src/Dodge/Data/EnergyBall/Type.hs 17;" C Flashing src/Dodge/Data/Damage.hs 27;" C FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 16;" C -FlechetteTrajectory src/Dodge/Data/Bullet.hs 47;" C -FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 54;" C +FlechetteTrajectory src/Dodge/Data/Bullet.hs 46;" C +FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 53;" C Flee src/Dodge/Data/ActionPlan.hs 191;" C Flesh src/Dodge/Data/Material.hs 11;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 16;" C @@ -749,8 +749,8 @@ MagnetAttract src/Dodge/Data/Magnet.hs 19;" C MagnetBuBu src/Dodge/Data/Magnet.hs 16;" t MagnetDeflect src/Dodge/Data/Magnet.hs 18;" C MagnetRepulse src/Dodge/Data/Magnet.hs 20;" C -MagnetTrajectory src/Dodge/Data/Bullet.hs 48;" C -MagnetTrajectoryType src/Dodge/Data/Bullet.hs 55;" C +MagnetTrajectory src/Dodge/Data/Bullet.hs 47;" C +MagnetTrajectoryType src/Dodge/Data/Bullet.hs 54;" C MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C MakeAutoSF src/Dodge/Data/ComposedItem.hs 35;" C @@ -1004,7 +1004,7 @@ Pathing src/Dodge/Data/Config.hs 76;" C Patrol src/Dodge/Data/ActionPlan.hs 180;" C PausedTimeFlow src/Dodge/Data/World.hs 77;" C Payload src/Dodge/Data/Payload.hs 11;" t -PenetrateBullet src/Dodge/Data/Bullet.hs 33;" C +PenetrateBullet src/Dodge/Data/Bullet.hs 32;" C Perception src/Dodge/Data/Creature/Perception.hs 32;" t PhysicalDamage src/Dodge/Data/Damage/Type.hs 4;" C PhysicalSensor src/Dodge/Data/Machine/Sensor/Type.hs 14;" C @@ -1629,14 +1629,14 @@ _btOn src/Dodge/Data/Button.hs 26;" f _btPos src/Dodge/Data/Button.hs 31;" f _btRot src/Dodge/Data/Button.hs 32;" f _btTermMID src/Dodge/Data/Button.hs 35;" f -_buDam src/Dodge/Data/Bullet.hs 38;" f -_buDrag src/Dodge/Data/Bullet.hs 23;" f +_buDam src/Dodge/Data/Bullet.hs 37;" f +_buDrag src/Dodge/Data/Bullet.hs 22;" f _buEffect src/Dodge/Data/Bullet.hs 19;" f -_buOldPos src/Dodge/Data/Bullet.hs 25;" f +_buOldPos src/Dodge/Data/Bullet.hs 24;" f _buPayload src/Dodge/Data/Bullet.hs 20;" f -_buPos src/Dodge/Data/Bullet.hs 24;" f -_buVel src/Dodge/Data/Bullet.hs 22;" f -_buWidth src/Dodge/Data/Bullet.hs 26;" f +_buPos src/Dodge/Data/Bullet.hs 23;" f +_buVel src/Dodge/Data/Bullet.hs 21;" f +_buWidth src/Dodge/Data/Bullet.hs 25;" f _bullets src/Dodge/Data/LWorld.hs 109;" f _burstFrames src/Dodge/Data/TriggerType.hs 12;" f _burstRate src/Dodge/Data/TriggerType.hs 12;" f @@ -2394,7 +2394,7 @@ _soundsToInvestigate src/Dodge/Data/Creature/Memory.hs 14;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 113;" f -_spawnEBT src/Dodge/Data/Bullet.hs 37;" f +_spawnEBT src/Dodge/Data/Bullet.hs 36;" f _ssIndent src/Dodge/Data/SelectionList.hs 34;" f _ssItems src/Dodge/Data/SelectionList.hs 30;" f _ssOffset src/Dodge/Data/SelectionList.hs 31;" f @@ -3253,12 +3253,12 @@ destroyDoor src/Dodge/Block.hs 80;" f destroyInvItem src/Dodge/Inventory.hs 43;" f destroyLS src/Dodge/LightSource.hs 32;" f destroyLSFlashAt src/Dodge/LightSource.hs 42;" f -destroyMachine src/Dodge/Machine/Destroy.hs 12;" f +destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f -destroyMcType src/Dodge/Machine/Destroy.hs 21;" f +destroyMcType src/Dodge/Machine/Destroy.hs 22;" f destroyMount src/Dodge/Block.hs 100;" f destroyMounts src/Dodge/Block.hs 97;" f -destroyProjectile src/Dodge/Projectile/Update.hs 163;" f +destroyProjectile src/Dodge/Projectile/Update.hs 162;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 465;" f @@ -3363,7 +3363,7 @@ doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f -doThrust src/Dodge/Projectile/Update.hs 185;" f +doThrust src/Dodge/Projectile/Update.hs 184;" f doTimeScroll src/Dodge/Update.hs 208;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 99;" f @@ -3395,7 +3395,7 @@ drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlock src/Dodge/Block/Draw.hs 7;" f drawBoundingBox src/Dodge/Debug/Picture.hs 336;" f -drawBul src/Dodge/Bullet/Draw.hs 9;" f +drawBullet src/Dodge/Bullet/Draw.hs 9;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawChasm src/Dodge/Render/ShapePicture.hs 44;" f @@ -3429,7 +3429,7 @@ drawExamineInventory src/Dodge/Render/HUD.hs 195;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 269;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f -drawFlamelet src/Dodge/EnergyBall/Draw.hs 35;" f +drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawFooterText src/Dodge/Render/MenuScreen.hs 72;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f drawGapPlus src/Dodge/Render/Picture.hs 255;" f @@ -3490,7 +3490,7 @@ drawShadowsByImportance src/Dodge/Shadows.hs 8;" f drawShell src/Dodge/Projectile/Draw.hs 22;" f drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 7;" f -drawStaticBall src/Dodge/EnergyBall/Draw.hs 27;" f +drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f drawSubInventory src/Dodge/Render/HUD.hs 161;" f drawSwitch src/Dodge/Button/Draw.hs 17;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f @@ -3539,11 +3539,11 @@ dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 74;" f dustColor src/Shader/Poke/Cloud.hs 71;" f dustSpringVel src/Dodge/Update.hs 880;" f -ebColor src/Dodge/EnergyBall.hs 94;" f -ebDamage src/Dodge/EnergyBall.hs 102;" f -ebEffect src/Dodge/EnergyBall.hs 49;" f -ebFlicker src/Dodge/EnergyBall.hs 87;" f -ebtToDamage src/Dodge/EnergyBall.hs 107;" f +ebColor src/Dodge/EnergyBall.hs 95;" f +ebDamage src/Dodge/EnergyBall.hs 103;" f +ebEffect src/Dodge/EnergyBall.hs 50;" f +ebFlicker src/Dodge/EnergyBall.hs 88;" f +ebtToDamage src/Dodge/EnergyBall.hs 111;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f edgeToPic src/Dodge/Debug/Picture.hs 436;" f effectOnEquip src/Dodge/Equipment.hs 32;" f @@ -3561,7 +3561,7 @@ encircleP src/Dodge/Creature/Boid.hs 28;" f endArcPos src/Dodge/Tesla.hs 87;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 267;" f endRegex src/Dodge/Update/Input/InGame.hs 254;" f -energyBallAt src/Dodge/EnergyBall.hs 64;" f +energyBallAt src/Dodge/EnergyBall.hs 65;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 592;" f enterCombineInv src/Dodge/DisplayInventory.hs 323;" f epText src/Dodge/Inventory/SelectionList.hs 76;" f @@ -3593,7 +3593,7 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 186;" f -explodeShell src/Dodge/Projectile/Update.hs 282;" f +explodeShell src/Dodge/Projectile/Update.hs 283;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -4202,22 +4202,22 @@ makeDefaultCorpse src/Dodge/Corpse/Make.hs 16;" f makeDoorDebris src/Dodge/Block/Debris.hs 24;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f -makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 71;" f +makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 73;" f makeFlak src/Dodge/Bullet.hs 143;" f makeFlame src/Dodge/Flame.hs 45;" f -makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f -makeFlamelet src/Dodge/EnergyBall.hs 21;" f -makeFlashBall src/Dodge/EnergyBall.hs 84;" f +makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 56;" f +makeFlamelet src/Dodge/EnergyBall.hs 22;" f +makeFlashBall src/Dodge/EnergyBall.hs 85;" f makeFragBullets src/Dodge/Bullet.hs 128;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 35;" f -makeMovingEB src/Dodge/EnergyBall.hs 74;" f +makeMovingEB src/Dodge/EnergyBall.hs 75;" f makeMuzzleFlare src/Dodge/HeldUse.hs 664;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f -makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 23;" f +makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 65;" f makeShaderEBO src/Shader/Compile.hs 53;" f @@ -4226,7 +4226,7 @@ makeShaderUsingVAO src/Shader/Compile.hs 146;" f makeShaderUsingVBO src/Shader/Compile.hs 69;" f makeShaderVBO src/Shader/Compile.hs 32;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f -makeShrapnelAt src/Dodge/Payload.hs 24;" f +makeShrapnelAt src/Dodge/Payload.hs 25;" f makeSourcedShader src/Shader/Compile.hs 167;" f makeSpark src/Dodge/Spark.hs 45;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f @@ -4234,7 +4234,7 @@ makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeTermLine src/Dodge/Terminal.hs 120;" f makeTermPara src/Dodge/Terminal.hs 123;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f -makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 38;" f +makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 18;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 12;" f @@ -4258,8 +4258,8 @@ maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f mcApplyDamage src/Dodge/Machine/Update.hs 114;" f -mcKillBut src/Dodge/Machine/Destroy.hs 34;" f -mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f +mcKillBut src/Dodge/Machine/Destroy.hs 35;" f +mcKillTerm src/Dodge/Machine/Destroy.hs 27;" f mcPlaySound src/Dodge/Machine/Update.hs 104;" f mcProxTest src/Dodge/Machine/Update.hs 152;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f @@ -4342,7 +4342,7 @@ moveCombineSel src/Dodge/Update/Scroll.hs 114;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f movePenBullet src/Dodge/Bullet.hs 201;" f -moveProjectile src/Dodge/Projectile/Update.hs 250;" f +moveProjectile src/Dodge/Projectile/Update.hs 261;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 15;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 247;" f @@ -5042,7 +5042,7 @@ shatterGunSPic src/Dodge/Item/Draw/SPic.hs 324;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellExplosionCheck src/Dodge/Projectile/Update.hs 55;" f shellHitCreature src/Dodge/Projectile/Update.hs 87;" f -shellHitFloor src/Dodge/Projectile/Update.hs 104;" f +shellHitFloor src/Dodge/Projectile/Update.hs 102;" f shellHitWall src/Dodge/Projectile/Update.hs 66;" f shellMag src/Dodge/Item/Ammo.hs 49;" f shellModule src/Dodge/Item/Scope.hs 123;" f @@ -5441,9 +5441,9 @@ tryPutFloorItemIDInInv src/Dodge/Inventory/Add.hs 26;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 42;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f -trySpin src/Dodge/Projectile/Update.hs 173;" f +trySpin src/Dodge/Projectile/Update.hs 172;" f trySynthBullet src/Dodge/Creature/State.hs 249;" f -tryThrust src/Dodge/Projectile/Update.hs 179;" f +tryThrust src/Dodge/Projectile/Update.hs 178;" f tryUseParent src/Dodge/Creature/State.hs 227;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f @@ -5508,7 +5508,7 @@ updateDistortions src/Dodge/Update.hs 587;" f updateDoor src/Dodge/Update.hs 326;" f updateDust src/Dodge/Update.hs 850;" f updateDusts src/Dodge/Update.hs 701;" f -updateEnergyBall src/Dodge/EnergyBall.hs 35;" f +updateEnergyBall src/Dodge/EnergyBall.hs 36;" f updateEnergyBalls src/Dodge/Update.hs 689;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f updateExpBarrel src/Dodge/Barreloid.hs 20;" f @@ -5619,7 +5619,7 @@ useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f useLoadedAmmo src/Dodge/HeldUse.hs 736;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f -usePayload src/Dodge/Payload.hs 18;" f +usePayload src/Dodge/Payload.hs 19;" f useRewindGun src/Dodge/HeldUse.hs 1420;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f