From 5b1e4fba4eb0311a127e36c56fdd89348ebe8ff9 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 8 Jun 2025 14:16:59 +0100 Subject: [PATCH] Fix bug in flame wall damages, cleanup --- src/Dodge/Base/Wall.hs | 2 +- src/Dodge/Bullet.hs | 2 +- src/Dodge/Creature.hs | 2 +- src/Dodge/Data/EnergyBall.hs | 1 - src/Dodge/Data/EnergyBall/Type.hs | 4 +- src/Dodge/Data/Flame.hs | 5 +- src/Dodge/EnergyBall.hs | 82 ++++++------- src/Dodge/EnergyBall/Draw.hs | 9 +- src/Dodge/Flame.hs | 162 +++++--------------------- src/Dodge/Flame/Draw.hs | 44 +------ src/Dodge/Flame/Size.hs | 1 + src/Dodge/TestString.hs | 2 +- src/Dodge/WorldEvent/Explosion.hs | 3 +- src/Dodge/WorldEvent/SpawnParticle.hs | 1 - src/Geometry.hs | 2 +- tags | 24 ++-- 16 files changed, 93 insertions(+), 253 deletions(-) diff --git a/src/Dodge/Base/Wall.hs b/src/Dodge/Base/Wall.hs index 8441f9673..f3c2f783d 100644 --- a/src/Dodge/Base/Wall.hs +++ b/src/Dodge/Base/Wall.hs @@ -16,7 +16,7 @@ wlIsSeeThrough wl = case _wlOpacity wl of reflDirWall :: Point2 -> Point2 -> Wall -> Float reflDirWall sp ep wl = argV (reflectIn (uncurry (-.-) (_wlLine wl)) (ep -.- sp)) --- point free nonsense +-- point free nonsense. 0 for no damping, 1 for full damping reflVelWallDamp :: Float -> Wall -> Point2 -> Point2 reflVelWallDamp x = reflectInParam x . uncurry (-.-) . _wlLine diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 35848f145..7b4362249 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -118,7 +118,7 @@ useBulletPayload bu = case _buPayload bu of BulBall ExplosiveBall -> \p -> cWorld . lWorld . shockwaves .:~ concBall p BulBall ElectricalBall -> makeStaticBall BulBall FlashBall -> makeFlashBall - BulBall (FlameletBall x) -> \p -> makeFlamelet p 0 x 10 + BulBall (FlameletBall x _) -> \p -> makeFlamelet p 0 x 10 makeFragBullets :: Point2 -> World -> World makeFragBullets p w = w & cWorld . lWorld . bullets .++~ bus diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 1e1a53116..a09a13744 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -282,7 +282,7 @@ inventoryX c = case c of ] <> -- [bulletTargetingModule btt | btt <- [minBound .. maxBound]] [bulletModule (BulletModPayload (BulBall x)) | x <- [ FlamingBall - , FlameletBall 5 + , FlameletBall 5 0 , ElectricalBall , ExplosiveBall , FlashBall ]] diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index 5de64eefc..03219f318 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -19,7 +19,6 @@ data EnergyBall = EnergyBall , _ebPos :: Point2 , _ebTimer :: Int , _ebEff :: EnergyBallType - , _ebRot :: Float } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Data/EnergyBall/Type.hs b/src/Dodge/Data/EnergyBall/Type.hs index 190a86fe5..abdf112ef 100644 --- a/src/Dodge/Data/EnergyBall/Type.hs +++ b/src/Dodge/Data/EnergyBall/Type.hs @@ -5,15 +5,17 @@ module Dodge.Data.EnergyBall.Type where +import Control.Lens import Data.Aeson import Data.Aeson.TH data EnergyBallType = FlamingBall - | FlameletBall Float + | FlameletBall {_fbSize :: Float, _fbRot :: Float} | ElectricalBall | ExplosiveBall | FlashBall deriving (Eq, Ord, Show, Read) --Generic, Flat) +makeLenses ''EnergyBallType deriveJSON defaultOptions ''EnergyBallType diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index 68b0e09db..9be0dbe3a 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -11,10 +11,9 @@ import Data.Aeson.TH import Geometry.Data data Flame = Flame - { _flVel :: Point2 + { _flTimer :: Int , _flPos :: Point2 - , _flTimer :: Int --- , _flOriginalVel :: Point2 + , _flVel :: Point2 } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index 3199f20e0..98f001bf5 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -1,17 +1,18 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.EnergyBall - ( updateEnergyBall - , incBallAt - , makeFlashBall - , makeFlamelet - ) where -import Data.List (foldl') -import Dodge.WorldEvent.ThingsHit +module Dodge.EnergyBall ( + updateEnergyBall, + incBallAt, + makeFlashBall, + makeFlamelet, +) where + import qualified Data.IntMap.Strict as IM -import Dodge.Base.Collide +import Data.List (foldl') import Data.Maybe +import Dodge.Base.Collide import Dodge.Data.World +import Dodge.WorldEvent.ThingsHit import Geometry import LensHelp import Picture @@ -28,19 +29,18 @@ makeFlamelet :: Int -> World -> World -makeFlamelet (V2 x y) vel s t w = +makeFlamelet p v s t w = w & randGen .~ g & cWorld . lWorld . energyBalls .:~ EnergyBall - { _ebVel = vel - , _ebPos = V2 x y + { _ebVel = v + , _ebPos = p , _ebTimer = t - , _ebEff = FlameletBall s - , _ebRot = rot + , _ebEff = FlameletBall s a } where - (rot, g) = randomR (0, 3) $ _randGen w + (a, g) = randomR (0, 3) $ _randGen w updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb @@ -51,42 +51,26 @@ updateEnergyBall w eb ) where p = eb ^. ebPos + eb ^. ebVel - (bp,bv) = fromMaybe (p,eb^.ebVel) $ bouncePoint (const True) 0 (eb ^. ebPos) p w --- (bp,bv) = fromMaybe (p,eb^.ebVel) $ bouncePoint (const True) 0.5 (eb ^. ebPos) p w + (bp, bv) = fromMaybe (p, eb ^. ebVel) $ bouncePoint (const True) 0 (eb ^. ebPos) p w incBallAt :: Point2 -> World -> World -incBallAt p w = - w & cWorld . lWorld . energyBalls .:~ theincball - & randGen .~ g - where - (theincball, g) = runState thestate (_randGen w) - thestate = do - rot <- state $ randomR (0, 3) - return - EnergyBall - { _ebVel = 0 - , _ebPos = p - , _ebTimer = 20 - , _ebEff = FlamingBall - , _ebRot = rot - } +incBallAt p = cWorld . lWorld . energyBalls + .:~ EnergyBall + { _ebVel = 0 + , _ebPos = p + , _ebTimer = 20 + , _ebEff = FlamingBall + } makeFlashBall :: Point2 -> World -> World -makeFlashBall p w = - w & cWorld . lWorld . energyBalls .:~ theincball - & randGen .~ g - where - (theincball, g) = runState thestate (_randGen w) - thestate = do - rot <- state $ randomR (0, 3) - return - EnergyBall - { _ebVel = 0 - , _ebPos = p - , _ebTimer = 20 - , _ebEff = FlashBall - , _ebRot = rot - } +makeFlashBall p = + cWorld . lWorld . energyBalls + .:~ EnergyBall + { _ebVel = 0 + , _ebPos = p + , _ebTimer = 20 + , _ebEff = FlashBall + } ebFlicker :: EnergyBall -> World -> World ebFlicker pt @@ -98,7 +82,7 @@ ebFlicker pt ebColor :: EnergyBall -> Color ebColor eb = case eb ^. ebEff of FlamingBall -> red - FlameletBall {} -> red + FlameletBall{} -> red ElectricalBall -> cyan ExplosiveBall -> yellow FlashBall -> white @@ -120,7 +104,7 @@ damageCircle sp dt w = ebtToDamage :: Point2 -> EnergyBallType -> Damage ebtToDamage p = \case FlamingBall -> Flaming 10 - FlameletBall _ -> Flaming 1 + FlameletBall {} -> Flaming 1 ElectricalBall -> Electrical 10 ExplosiveBall -> Explosive 10 p FlashBall -> Flashing 10 p diff --git a/src/Dodge/EnergyBall/Draw.hs b/src/Dodge/EnergyBall/Draw.hs index d9053b6fb..4e33ced6d 100644 --- a/src/Dodge/EnergyBall/Draw.hs +++ b/src/Dodge/EnergyBall/Draw.hs @@ -8,8 +8,8 @@ import Picture drawEnergyBall :: EnergyBall -> Picture drawEnergyBall eb = case _ebEff eb of - FlamingBall -> drawFlamelet 5 eb - FlameletBall x -> drawFlamelet x eb + FlamingBall -> drawFlamelet 5 0 eb + FlameletBall x a -> drawFlamelet x a eb ElectricalBall -> drawStaticBall eb ExplosiveBall -> mempty FlashBall -> mempty @@ -24,8 +24,8 @@ drawStaticBall pt = . uncurryV translate (_ebPos pt) $ circleSolidCol blue (withAlpha 0.5 white) 8 -drawFlamelet :: Float -> EnergyBall -> Picture -drawFlamelet size pt = +drawFlamelet :: Float -> Float -> EnergyBall -> Picture +drawFlamelet size rot pt = fold [ setLayer BloomLayer pic , setLayer BloomNoZWrite piu @@ -89,4 +89,3 @@ drawFlamelet size pt = sc = (*) 2 $ log $ 1 + fromIntegral time / 20 s1 = (*) 2 $ log $ 2 + fromIntegral time / 40 s2 = 0.5 * (sc + s1) - rot = _ebRot pt diff --git a/src/Dodge/Flame.hs b/src/Dodge/Flame.hs index b8b1e8c27..5fc71c203 100644 --- a/src/Dodge/Flame.hs +++ b/src/Dodge/Flame.hs @@ -1,166 +1,62 @@ module Dodge.Flame ( - aFlameParticle, makeFlame, updateFlame, ) where -import Dodge.Flame.Size import Data.Foldable -import Data.Tuple +import Dodge.Base.Wall import Dodge.Data.World +import Dodge.Flame.Size import Dodge.SoundLogic import Dodge.WorldEvent.Cloud import Dodge.WorldEvent.ThingsHit -import Dodge.Zoning.Wall import Geometry -import qualified IntMapHelp as IM import LensHelp import qualified ListHelp as List import Picture import RandomHelp -aFlameParticle :: - -- | Timer - Int -> - -- | Position - Point2 -> - -- | Velocity - Point2 -> - Flame -aFlameParticle t pos vel = - Flame - { _flVel = vel - , _flPos = pos - , _flTimer = t --- , _flOriginalVel = vel - } - -expireAndDamageFL :: - Flame -> - [(Point2, Either Creature Wall)] -> - World -> - (World, Maybe Flame) -expireAndDamageFL bt things w = case List.safeHead things of - Nothing -> (w, Just $ bt & flTimer -~ 1) - Just (_,x) -> (doDamagesFL x w, Nothing) - -doDamagesFL :: - Either Creature Wall -> --- Flame -> - World -> - World -doDamagesFL thhit = case thhit of - Left cr -> - cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage - .:~ Flaming 1 - --Right wl -> cWorld . lWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) dams - Right wl -> cWorld . lWorld . wallDamages . ix (_wlID wl) .:~ Flaming 1 - -{- TODO: add generalised area damage particles/hiteffects. -} updateFlame :: World -> Flame -> (World, Maybe Flame) updateFlame w pt | time <= 0 = (makeFlamerSmokeAt (addZ 20 ep) w, Nothing) - | otherwise = case List.safeHead $ thingsHit sp ep w of - Just (_, Left _) -> (doSound $ dodamage, mvPt' 0.7) - Just (p, Right wl) -> (doSound $ dodamage, rfl wl p) - _ -> (flFlicker pt $ doSound $ dodamage, mvPt' 0.98) + | Just (_, Right wl) <- thit = (doupdate, Just $ reflame wl) + -- might want to move differently if we hit a creature? + | otherwise = (flFlicker pt doupdate, Just mvflame) where + reflame wl = pt & flTimer -~ 1 & flVel %~ reflVelWallDamp 0.9 wl + doupdate = soundContinue FlameSound sp fireLoudS (Just 2) dodamage + thit = List.safeHead $ thingsHit sp ep w time = _flTimer pt - doSound = soundContinue FlameSound (V2 x y) fireLoudS (Just 2) - sp@(V2 x y) = _flPos pt - vel = _flVel pt - ep = sp +.+ vel - mvPt' drag = - Just $ - pt - & flTimer -~ 1 - & flPos .~ ep - & flVel %~ (drag *.*) - dodamage :: World - dodamage = foldl' damcr - (foldl' damwl w (wlsHitRadial ep r w)) (crsHitRadial ep r w) - r = flameSize pt - damcr w' (_,cr) = w' & cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage - .:~ Flaming 1 - damwl w' (_,wl) = w' & cWorld . lWorld . wallDamages . ix (_wlID wl) - .:~ Flaming 1 - closeWls wl = uncurry segOnCirc (_wlLine wl) ep 5 - angleCoeff x' = abs $ 1 - abs ((x' * 2 - pi) / pi) - rfl wl p = - Just $ - pt - { _flTimer = time - 1 - , _flPos = pOut p - , _flVel = reflV wl - } - pOut p = p +.+ squashNormalizeV (sp -.- p) - reflV wall = - (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel) - +.+ (0.2 *.* vel) ---updateFlame w pt --- | time <= 0 = (makeFlamerSmokeAt (addZ 20 ep) w, Nothing) --- | otherwise = case List.safeHead $ thingsHit sp ep w of --- Just (_, Left _) -> (doSound $ dodamage w, mvPt' 0.7) --- Just (p, Right wl) -> (doSound $ dodamage w, rfl wl p) --- _ -> (flFlicker pt $ doSound $ dodamage w, mvPt' 0.98) --- where --- rotd = _flOriginalVel pt --- time = _flTimer pt --- doSound = soundContinue FlameSound (V2 x y) fireLoudS (Just 2) --- sp@(V2 x y) = _flPos pt --- vel = _flVel pt --- ep = sp +.+ vel --- mvPt' drag = --- Just $ --- pt --- & flTimer -~ 1 --- & flPos .~ ep --- & flVel %~ (drag *.*) --- dodamage = flDamageInArea closeCrs closeWls pt --- closeWls wl = uncurry segOnCirc (_wlLine wl) ep 5 --- closeCrs cr = --- dist ep (_crPos cr) --- < crRad (cr ^. crType) + 10 - min 9 (max 0 (fromIntegral time - 80)) --- + 5 * angleCoeff (angleVV (ep -.- _crPos cr) rotd) --- angleCoeff x' = abs $ 1 - abs ((x' * 2 - pi) / pi) --- rfl wl p = --- Just $ --- pt --- { _flTimer = time - 1 --- , _flPos = pOut p --- , _flVel = reflV wl --- } --- pOut p = p +.+ squashNormalizeV (sp -.- p) --- reflV wall = --- (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel) --- +.+ (0.2 *.* vel) - -flDamageInArea :: (Creature -> Bool) -> (Wall -> Bool) -> Flame -> World -> World -{-# INLINE flDamageInArea #-} -flDamageInArea crt wlt pt w = damwls damcrs - where - p = _flPos pt - damcrs = foldl' (flip $ \cr -> fst . hiteff [(p, Left cr)]) w $ IM.filter crt $ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w) - damwls w' = + sp = _flPos pt + ep = sp +.+ _flVel pt + mvflame = + pt + & flTimer -~ 1 + & flPos .~ ep + & flVel *~ 0.98 + dodamage = foldl' - (flip $ \wl -> fst . hiteff [(p, Right wl)]) - w' - . filter wlt - $ wlsNearPoint p w' - hiteff = expireAndDamageFL pt + damcr + (foldl' damwl w (wlsHitRadial ep r w)) + (crsHitRadial ep r w) + r = flameSize pt + damcr w' (_, cr) = + w' & cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage + .:~ Flaming 1 + damwl w' (_, wl) = + w' & cWorld . lWorld . wallDamages . at (_wlID wl) + . non [] <>~ [Flaming 1] flFlicker :: Flame -> World -> World flFlicker pt | _flTimer pt `mod` 7 == 0 = cWorld . lWorld . lights .:~ LSParam (addZ 10 $ _flPos pt) 70 (0.5 *.*.* xyzV4 red) - -- .:~ tlsTimeRadColPos 1 70 (0.5 *.*.* xyzV4 (_flColor pt)) (addZ 10 $ _flPos pt) | otherwise = id makeFlame :: Point2 -> Point2 -> World -> World -makeFlame pos vel w = - w - & cWorld . lWorld . flames .:~ aFlameParticle t pos vel +makeFlame pos vel w = w + & cWorld . lWorld . flames .:~ Flame t pos vel & randGen .~ g where - (t, g) = randomR (99, 101) (_randGen w) + (t, g) = randomR (99, 102) (_randGen w) diff --git a/src/Dodge/Flame/Draw.hs b/src/Dodge/Flame/Draw.hs index 1077e9b65..079a2cc4f 100644 --- a/src/Dodge/Flame/Draw.hs +++ b/src/Dodge/Flame/Draw.hs @@ -1,46 +1,12 @@ module Dodge.Flame.Draw (drawFlame) where -import Dodge.Flame.Size import Dodge.Data.Flame +import Dodge.Flame.Size import Geometry import Picture drawFlame :: Flame -> Picture -drawFlame fl = setLayer BloomLayer . setDepth 25 - . uncurryV translate (_flPos fl + rotateV (fromIntegral (_flTimer fl)) (V2 1 0)) - $ circleSolidCol (V4 1 1 1 0.5) (V4 5 2 0 2) . flameSize $ fl - - ---drawFlame :: Flame -> Picture ---drawFlame pt = --- fold --- [ glow --- , aPic BloomNoZWrite prot2 25 (V2 (scaleChange + 1) 2) $ V4 2 (-1) (-1) 0.5 --- , aPic BloomNoZWrite prot 22 (V2 (scaleChange + 0.5) 1) $ V4 1 0.5 0 2 --- , aPic BloomLayer prot3 20 (V2 scaleChange 0.5) $ V4 1 1 1 1 --- ] --- where --- rotd = _flOriginalVel pt -- rotate direction --- ep = _flPos pt --- aPic :: Layer -> (Point2 -> Point2) -> Float -> Point2 -> Color -> Picture --- aPic lay offset depth (V2 scalex scaley) col = --- setLayer lay --- . setDepth depth --- . uncurryV translate (offset ep) --- . rotate (pi * 0.5 + argV rotd) --- . scale scalex scaley ----- . scale scalex scalex --- . color col --- $ circleSolid 5 --- glow = --- setLayer BloomNoZWrite $ --- setDepth 0.3 $ --- uncurryV translate ep $ --- circleSolidCol (withAlpha 0 orange) (withAlpha 0.02 orange) 50 --- time = _flTimer pt --- scaleChange --- | time < 80 = 3 --- | otherwise = 3 - (fromIntegral time - 80) * 0.2 --- prot p' = p' +.+ rotateV (fromIntegral time) (V2 0 1) --- prot2 p' = p' +.+ rotateV (negate $ fromIntegral time) (V2 0 1) --- prot3 p' = p' +.+ rotateV (2 + fromIntegral time * 0.1) (V2 0 2) +drawFlame fl = + setLayer BloomLayer . setDepth 25 + . uncurryV translate (_flPos fl + rotateV (fromIntegral (_flTimer fl)) (V2 1 0)) + $ circleSolidCol (V4 1 1 1 0.5) (V4 5 2 0 2) . flameSize $ fl diff --git a/src/Dodge/Flame/Size.hs b/src/Dodge/Flame/Size.hs index 18d29643e..d458b0f8a 100644 --- a/src/Dodge/Flame/Size.hs +++ b/src/Dodge/Flame/Size.hs @@ -6,6 +6,7 @@ flameSize :: Flame -> Float flameSize fl | x > 95 = x - 95 | x > 80 = 95.1 - x + | x < 15 = x | otherwise = 15 where x = fromIntegral (_flTimer fl) diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 85a196794..e6fac64ff 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -26,7 +26,7 @@ import qualified IntMapHelp as IM import qualified Data.Map.Strict as M testStringInit :: Universe -> [String] -testStringInit _ = [] +testStringInit u = fmap show $ u ^.. uvWorld . cWorld . lWorld . terminals . each . tmID -- foldMap prettyShort $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crTwist -- prettyShort $ u ^.. uvWorld . cWorld . lWorld . teslaArcs . ix 0 . taArcSteps . each . asObject --testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 51829a944..f58910589 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -12,7 +12,6 @@ import Control.Monad import Data.List import Dodge.Data.World import Dodge.EnergyBall -import Dodge.Flame import Dodge.SoundLogic import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.SpawnParticle @@ -62,7 +61,7 @@ makeFlameExplosionAt p w = & cWorld . lWorld . flames .++~ newFlames where newFlames = zipWith makeFlameWithVelAndTime velocities timers - makeFlameWithVelAndTime vel time = aFlameParticle time p vel + makeFlameWithVelAndTime vel time = Flame time vel p velocities = replicateM 15 (randInCirc 1) & evalState $ _randGen w timers = randomRs (80, 100) $ _randGen w diff --git a/src/Dodge/WorldEvent/SpawnParticle.hs b/src/Dodge/WorldEvent/SpawnParticle.hs index 071d2ecf9..acdb095fe 100644 --- a/src/Dodge/WorldEvent/SpawnParticle.hs +++ b/src/Dodge/WorldEvent/SpawnParticle.hs @@ -46,7 +46,6 @@ aStaticBall p = , _ebPos = p , _ebTimer = 20 , _ebEff = ElectricalBall - , _ebRot = 0 } {- | Note damgeInRadius by itself never destroys the particle diff --git a/src/Geometry.hs b/src/Geometry.hs index f4510a7a1..dcb27a6d0 100644 --- a/src/Geometry.hs +++ b/src/Geometry.hs @@ -225,7 +225,7 @@ heron x y z area = sqrt (s * (s - a) * (s - b) * (s - c)) in 2 * area / a --- | Multiplies reflection in normal by factor. +-- | Multiplies reflection in normal by factor. With 0 same as reflectAngle reflectInParam :: Float -> Point2 -> Point2 -> Point2 reflectInParam x line vec = let angle = 2 * angleBetween line vec diff --git a/tags b/tags index 0b1801d2f..76660b932 100644 --- a/tags +++ b/tags @@ -2573,8 +2573,8 @@ _flItID src/Dodge/Data/FloorItem.hs 16;" f _flItPos src/Dodge/Data/FloorItem.hs 16;" f _flItRot src/Dodge/Data/FloorItem.hs 16;" f _flPos src/Dodge/Data/Flame.hs 15;" f -_flTimer src/Dodge/Data/Flame.hs 16;" f -_flVel src/Dodge/Data/Flame.hs 14;" f +_flTimer src/Dodge/Data/Flame.hs 14;" f +_flVel src/Dodge/Data/Flame.hs 16;" f _flames src/Dodge/Data/LWorld.hs 111;" f _flankTarget src/Dodge/Data/ActionPlan.hs 177;" f _flares src/Dodge/Data/LWorld.hs 114;" f @@ -3320,7 +3320,6 @@ _xNum src/Dodge/Data/Item/Combine.hs 149;" f _xNum src/Dodge/Data/Item/Combine.hs 171;" f aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f -aFlameParticle src/Dodge/Flame.hs 22;" f aGasCloud src/Dodge/Gas.hs 13;" f aGib src/Dodge/Prop/Gib.hs 18;" f aRadarPulse src/Dodge/RadarSweep.hs 19;" f @@ -4036,7 +4035,6 @@ doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f doDamage src/Dodge/Creature/State.hs 138;" f -doDamagesFL src/Dodge/Flame.hs 47;" f doDeathToggle src/Dodge/WorldEffect.hs 98;" f doDeathTriggers src/Dodge/WorldEffect.hs 93;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f @@ -4155,7 +4153,7 @@ drawEnergyBall src/Dodge/EnergyBall/Draw.hs 9;" f drawEquipment src/Dodge/Creature/Picture.hs 144;" f drawExamineInventory src/Dodge/Render/HUD.hs 196;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 264;" f -drawFlame src/Dodge/Flame/Draw.hs 7;" f +drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 27;" f drawFooterText src/Dodge/Render/MenuScreen.hs 72;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f @@ -4310,7 +4308,6 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 184;" f -expireAndDamageFL src/Dodge/Flame.hs 38;" f explodeShell src/Dodge/Projectile/Update.hs 245;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f @@ -4349,8 +4346,7 @@ firstBreather src/Dodge/Room/Breather.hs 9;" f firstWorldLoad appDodge/Main.hs 77;" f fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f -flDamageInArea src/Dodge/Flame.hs 135;" f -flFlicker src/Dodge/Flame.hs 149;" f +flFlicker src/Dodge/Flame.hs 50;" f flameMuzzles src/Dodge/HeldUse.hs 290;" f flameShield src/Dodge/Item/Equipment.hs 33;" f flameSize src/Dodge/Flame/Size.hs 5;" f @@ -4923,10 +4919,10 @@ makeDebrisToHeight src/Dodge/Block/Debris.hs 39;" f makeDefaultCorpse src/Dodge/Corpse/Make.hs 16;" f makeDoorDebris src/Dodge/Block/Debris.hs 18;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f -makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f +makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 71;" f makeFlak src/Dodge/Bullet.hs 139;" f -makeFlame src/Dodge/Flame.hs 157;" f -makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f +makeFlame src/Dodge/Flame.hs 57;" f +makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f makeFlamelet src/Dodge/EnergyBall.hs 20;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlashBall src/Dodge/EnergyBall.hs 74;" f @@ -4939,7 +4935,7 @@ makeMuzzleFlare src/Dodge/HeldUse.hs 649;" 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 24;" f +makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 23;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 65;" f makeShaderEBO src/Shader/Compile.hs 53;" f @@ -4961,7 +4957,7 @@ makeTermPara src/Dodge/Terminal.hs 123;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f makeTeslaArc src/Dodge/Tesla/Arc.hs 65;" f makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f -makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 39;" f +makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 38;" f makeThickSmokeAt src/Dodge/WorldEvent/Cloud.hs 54;" f makeThinSmokeAt src/Dodge/WorldEvent/Cloud.hs 57;" f makeTileFromPoly src/Tile.hs 34;" f @@ -6236,7 +6232,7 @@ updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f updateExpBarrel src/Dodge/Barreloid.hs 20;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f -updateFlame src/Dodge/Flame.hs 60;" f +updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 595;" f updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f