Fix bug in flame wall damages, cleanup

This commit is contained in:
2025-06-08 14:16:59 +01:00
parent 4c3a3d83da
commit 5b1e4fba4e
16 changed files with 93 additions and 253 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 ]]
-1
View File
@@ -19,7 +19,6 @@ data EnergyBall = EnergyBall
, _ebPos :: Point2
, _ebTimer :: Int
, _ebEff :: EnergyBallType
, _ebRot :: Float
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
+3 -1
View File
@@ -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
+2 -3
View File
@@ -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)
+33 -49
View File
@@ -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
+4 -5
View File
@@ -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
+29 -133
View File
@@ -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)
+5 -39
View File
@@ -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
+1
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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
-1
View File
@@ -46,7 +46,6 @@ aStaticBall p =
, _ebPos = p
, _ebTimer = 20
, _ebEff = ElectricalBall
, _ebRot = 0
}
{- | Note damgeInRadius by itself never destroys the particle
+1 -1
View File
@@ -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
+10 -14
View File
@@ -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