Simplify flames

This commit is contained in:
2025-06-08 12:12:58 +01:00
parent ba9e9278c4
commit 54937fd159
4 changed files with 126 additions and 87 deletions
+1 -3
View File
@@ -13,10 +13,8 @@ import Geometry.Data
data Flame = Flame data Flame = Flame
{ _flVel :: Point2 { _flVel :: Point2
, _flPos :: Point2 , _flPos :: Point2
, _flWidth :: Float
, _flTimer :: Int , _flTimer :: Int
, _flZ :: Float -- , _flOriginalVel :: Point2
, _flOriginalVel :: Point2
} }
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
+50 -13
View File
@@ -4,9 +4,9 @@ module Dodge.Flame (
updateFlame, updateFlame,
) where ) where
import Dodge.Flame.Size
import Data.Foldable import Data.Foldable
import Data.Tuple import Data.Tuple
import Dodge.Creature.Radius
import Dodge.Data.World import Dodge.Data.World
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.WorldEvent.Cloud import Dodge.WorldEvent.Cloud
@@ -31,10 +31,8 @@ aFlameParticle t pos vel =
Flame Flame
{ _flVel = vel { _flVel = vel
, _flPos = pos , _flPos = pos
, _flWidth = 4
, _flTimer = t , _flTimer = t
, _flZ = 20 -- , _flOriginalVel = vel
, _flOriginalVel = vel
} }
expireAndDamageFL :: expireAndDamageFL ::
@@ -63,11 +61,10 @@ updateFlame :: World -> Flame -> (World, Maybe Flame)
updateFlame w pt updateFlame w pt
| time <= 0 = (makeFlamerSmokeAt (addZ 20 ep) w, Nothing) | time <= 0 = (makeFlamerSmokeAt (addZ 20 ep) w, Nothing)
| otherwise = case List.safeHead $ thingsHit sp ep w of | otherwise = case List.safeHead $ thingsHit sp ep w of
Just (_, Left _) -> (doSound $ dodamage w, mvPt' 0.7) Just (_, Left _) -> (doSound $ dodamage, mvPt' 0.7)
Just (p, Right wl) -> (doSound $ dodamage w, rfl wl p) Just (p, Right wl) -> (doSound $ dodamage, rfl wl p)
_ -> (flFlicker pt $ doSound $ dodamage w, mvPt' 0.98) _ -> (flFlicker pt $ doSound $ dodamage, mvPt' 0.98)
where where
rotd = _flOriginalVel pt
time = _flTimer pt time = _flTimer pt
doSound = soundContinue FlameSound (V2 x y) fireLoudS (Just 2) doSound = soundContinue FlameSound (V2 x y) fireLoudS (Just 2)
sp@(V2 x y) = _flPos pt sp@(V2 x y) = _flPos pt
@@ -79,12 +76,15 @@ updateFlame w pt
& flTimer -~ 1 & flTimer -~ 1
& flPos .~ ep & flPos .~ ep
& flVel %~ (drag *.*) & flVel %~ (drag *.*)
dodamage = flDamageInArea closeCrs closeWls pt 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 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) angleCoeff x' = abs $ 1 - abs ((x' * 2 - pi) / pi)
rfl wl p = rfl wl p =
Just $ Just $
@@ -97,6 +97,43 @@ updateFlame w pt
reflV wall = reflV wall =
(0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel) (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel)
+.+ (0.2 *.* 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 flDamageInArea :: (Creature -> Bool) -> (Wall -> Bool) -> Flame -> World -> World
{-# INLINE flDamageInArea #-} {-# INLINE flDamageInArea #-}
+41 -35
View File
@@ -1,40 +1,46 @@
module Dodge.Flame.Draw where module Dodge.Flame.Draw (drawFlame) where
import Dodge.Flame.Size
import Dodge.Data.Flame import Dodge.Data.Flame
import Geometry import Geometry
import Picture import Picture
drawFlame :: drawFlame :: Flame -> Picture
Flame -> drawFlame fl = setLayer BloomLayer . setDepth 25
Picture . uncurryV translate (_flPos fl + rotateV (fromIntegral (_flTimer fl)) (V2 1 0))
drawFlame pt = $ circleSolidCol (V4 1 1 1 0.5) (V4 5 2 0 2) . flameSize $ fl
fold
[ glow
, aPic BloomNoZWrite prot2 25 (V2 (scaleChange + 1) 2) $ V4 2 (-1) (-1) 0.5 --drawFlame :: Flame -> Picture
, aPic BloomNoZWrite prot 22 (V2 (scaleChange + 0.5) 1) $ V4 1 0.5 0 2 --drawFlame pt =
, aPic BloomLayer prot3 20 (V2 scaleChange 0.5) $ V4 1 1 1 1 -- fold
] -- [ glow
where -- , aPic BloomNoZWrite prot2 25 (V2 (scaleChange + 1) 2) $ V4 2 (-1) (-1) 0.5
rotd = _flOriginalVel pt -- rotate direction -- , aPic BloomNoZWrite prot 22 (V2 (scaleChange + 0.5) 1) $ V4 1 0.5 0 2
ep = _flPos pt -- , aPic BloomLayer prot3 20 (V2 scaleChange 0.5) $ V4 1 1 1 1
aPic :: Layer -> (Point2 -> Point2) -> Float -> Point2 -> Color -> Picture -- ]
aPic lay offset depth (V2 scalex scaley) col = -- where
setLayer lay -- rotd = _flOriginalVel pt -- rotate direction
. setDepth depth -- ep = _flPos pt
. uncurryV translate (offset ep) -- aPic :: Layer -> (Point2 -> Point2) -> Float -> Point2 -> Color -> Picture
. rotate (pi * 0.5 + argV rotd) -- aPic lay offset depth (V2 scalex scaley) col =
. scale scalex scaley -- setLayer lay
. color col -- . setDepth depth
$ circleSolid 5 -- . uncurryV translate (offset ep)
glow = -- . rotate (pi * 0.5 + argV rotd)
setLayer BloomNoZWrite $ -- . scale scalex scaley
setDepth 0.3 $ ---- . scale scalex scalex
uncurryV translate ep $ -- . color col
circleSolidCol (withAlpha 0 orange) (withAlpha 0.02 orange) 50 -- $ circleSolid 5
time = _flTimer pt -- glow =
scaleChange -- setLayer BloomNoZWrite $
| time < 80 = 3 -- setDepth 0.3 $
| otherwise = 3 - (fromIntegral time - 80) * 0.2 -- uncurryV translate ep $
prot p' = p' +.+ rotateV (fromIntegral time) (V2 0 1) -- circleSolidCol (withAlpha 0 orange) (withAlpha 0.02 orange) 50
prot2 p' = p' +.+ rotateV (negate $ fromIntegral time) (V2 0 1) -- time = _flTimer pt
prot3 p' = p' +.+ rotateV (2 + fromIntegral time * 0.1) (V2 0 2) -- 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)
+34 -36
View File
@@ -622,15 +622,15 @@ ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C
ElectricSpark src/Dodge/Data/Spark.hs 22;" C ElectricSpark src/Dodge/Data/Spark.hs 22;" C
Electrical src/Dodge/Data/Damage.hs 28;" C Electrical src/Dodge/Data/Damage.hs 28;" C
ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C
ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 16;" C ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 14;" C
Electronics src/Dodge/Data/Material.hs 11;" C Electronics src/Dodge/Data/Material.hs 11;" C
EllShad src/Picture/Data.hs 39;" C EllShad src/Picture/Data.hs 39;" C
Enable_debug src/Dodge/Data/Config.hs 68;" C Enable_debug src/Dodge/Data/Config.hs 68;" C
EncircleFlock src/Dodge/Data/Creature/State.hs 30;" C EncircleFlock src/Dodge/Data/Creature/State.hs 30;" C
EnergyBall src/Dodge/Data/EnergyBall.hs 18;" t EnergyBall src/Dodge/Data/EnergyBall.hs 17;" t
EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m
EnergyBall src/Dodge/EnergyBall.hs 2;" m EnergyBall src/Dodge/EnergyBall.hs 2;" m
EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 13;" t EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 11;" t
EnergyGeneratorSS src/Dodge/Data/Scenario.hs 109;" C EnergyGeneratorSS src/Dodge/Data/Scenario.hs 109;" C
EngineSS src/Dodge/Data/Scenario.hs 88;" C EngineSS src/Dodge/Data/Scenario.hs 88;" C
Enterrement src/Dodge/Data/Damage.hs 31;" C Enterrement src/Dodge/Data/Damage.hs 31;" C
@@ -661,7 +661,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 37;" C
Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m
ExplosionPayload src/Dodge/Data/Payload.hs 11;" C ExplosionPayload src/Dodge/Data/Payload.hs 11;" C
Explosive src/Dodge/Data/Damage.hs 29;" C Explosive src/Dodge/Data/Damage.hs 29;" C
ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 17;" C ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 15;" C
ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C
ExplosivePutty src/Dodge/Data/AmmoType.hs 13;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 13;" C
ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" m ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" m
@@ -690,19 +690,19 @@ FixedRate src/Dodge/Data/Item/HeldDelay.hs 15;" C
FixedRate src/Dodge/Data/UseDelay.hs 13;" C FixedRate src/Dodge/Data/UseDelay.hs 13;" C
FixedSelectionWidth src/Dodge/Data/SelectionList.hs 40;" C FixedSelectionWidth src/Dodge/Data/SelectionList.hs 40;" C
FlIt src/Dodge/Data/FloorItem.hs 16;" C FlIt src/Dodge/Data/FloorItem.hs 16;" C
Flame src/Dodge/Data/Flame.hs 14;" t Flame src/Dodge/Data/Flame.hs 13;" t
Flame src/Dodge/Data/Flame.hs 6;" m Flame src/Dodge/Data/Flame.hs 6;" m
Flame src/Dodge/Flame.hs 1;" m Flame src/Dodge/Flame.hs 1;" m
FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C
FlameSound src/Dodge/Data/SoundOrigin.hs 27;" C FlameSound src/Dodge/Data/SoundOrigin.hs 27;" C
FlameletBall src/Dodge/Data/EnergyBall/Type.hs 15;" C FlameletBall src/Dodge/Data/EnergyBall/Type.hs 13;" C
Flamer src/Dodge/Data/SoundOrigin.hs 25;" C Flamer src/Dodge/Data/SoundOrigin.hs 25;" C
FlamerSmokeCloud src/Dodge/Data/Cloud.hs 31;" C FlamerSmokeCloud src/Dodge/Data/Cloud.hs 31;" C
Flaming src/Dodge/Data/Damage.hs 25;" C Flaming src/Dodge/Data/Damage.hs 25;" C
FlamingBall src/Dodge/Data/EnergyBall/Type.hs 14;" C FlamingBall src/Dodge/Data/EnergyBall/Type.hs 12;" C
Flank src/Dodge/Data/ActionPlan.hs 177;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C
FlareType src/Dodge/Data/Muzzle.hs 21;" t FlareType src/Dodge/Data/Muzzle.hs 21;" t
FlashBall src/Dodge/Data/EnergyBall/Type.hs 18;" C FlashBall src/Dodge/Data/EnergyBall/Type.hs 16;" C
Flashing src/Dodge/Data/Damage.hs 27;" C Flashing src/Dodge/Data/Damage.hs 27;" C
FlatFaces src/Shape/Data.hs 17;" C FlatFaces src/Shape/Data.hs 17;" C
FlatShieldParams src/Dodge/Data/Item/Params.hs 15;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 15;" C
@@ -1821,6 +1821,7 @@ SideEffect src/Dodge/Data/Universe.hs 64;" t
SimpleTrie src/SimpleTrie.hs 4;" m SimpleTrie src/SimpleTrie.hs 4;" m
SixteenthRes src/Dodge/Data/Config.hs 97;" C SixteenthRes src/Dodge/Data/Config.hs 97;" C
Size src/Shape/Data.hs 28;" t Size src/Shape/Data.hs 28;" t
Size src/Dodge/Flame/Size.hs 1;" m
Size src/Dodge/Zone/Size.hs 1;" m Size src/Dodge/Zone/Size.hs 1;" m
SizeInvariant src/Dodge/Picture/SizeInvariant.hs 1;" m SizeInvariant src/Dodge/Picture/SizeInvariant.hs 1;" m
SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C
@@ -2548,11 +2549,11 @@ _drWallIDs src/Dodge/Data/Door.hs 36;" f
_dtLeft src/Dodge/Data/DoubleTree.hs 30;" f _dtLeft src/Dodge/Data/DoubleTree.hs 30;" f
_dtRight src/Dodge/Data/DoubleTree.hs 30;" f _dtRight src/Dodge/Data/DoubleTree.hs 30;" f
_dtValue src/Dodge/Data/DoubleTree.hs 30;" f _dtValue src/Dodge/Data/DoubleTree.hs 30;" f
_ebEff src/Dodge/Data/EnergyBall.hs 24;" f _ebEff src/Dodge/Data/EnergyBall.hs 21;" f
_ebPos src/Dodge/Data/EnergyBall.hs 21;" f _ebPos src/Dodge/Data/EnergyBall.hs 19;" f
_ebRot src/Dodge/Data/EnergyBall.hs 25;" f _ebRot src/Dodge/Data/EnergyBall.hs 22;" f
_ebTimer src/Dodge/Data/EnergyBall.hs 23;" f _ebTimer src/Dodge/Data/EnergyBall.hs 20;" f
_ebVel src/Dodge/Data/EnergyBall.hs 19;" f _ebVel src/Dodge/Data/EnergyBall.hs 18;" f
_eboName src/Shader/Data.hs 89;" f _eboName src/Shader/Data.hs 89;" f
_eboPtr src/Shader/Data.hs 90;" f _eboPtr src/Shader/Data.hs 90;" f
_eeUse src/Dodge/Data/Item/Use/Equipment.hs 17;" f _eeUse src/Dodge/Data/Item/Use/Equipment.hs 17;" f
@@ -2567,17 +2568,13 @@ _fboHalf1 src/Data/Preload/Render.hs 31;" f
_fboHalf2 src/Data/Preload/Render.hs 32;" f _fboHalf2 src/Data/Preload/Render.hs 32;" f
_fboLighting src/Data/Preload/Render.hs 37;" f _fboLighting src/Data/Preload/Render.hs 37;" f
_fboPos src/Data/Preload/Render.hs 36;" f _fboPos src/Data/Preload/Render.hs 36;" f
_flColor src/Dodge/Data/Flame.hs 16;" f
_flIt src/Dodge/Data/FloorItem.hs 16;" f _flIt src/Dodge/Data/FloorItem.hs 16;" f
_flItID src/Dodge/Data/FloorItem.hs 16;" f _flItID src/Dodge/Data/FloorItem.hs 16;" f
_flItPos src/Dodge/Data/FloorItem.hs 16;" f _flItPos src/Dodge/Data/FloorItem.hs 16;" f
_flItRot src/Dodge/Data/FloorItem.hs 16;" f _flItRot src/Dodge/Data/FloorItem.hs 16;" f
_flOriginalVel src/Dodge/Data/Flame.hs 21;" f _flPos src/Dodge/Data/Flame.hs 15;" f
_flPos src/Dodge/Data/Flame.hs 17;" f _flTimer src/Dodge/Data/Flame.hs 16;" f
_flTimer src/Dodge/Data/Flame.hs 19;" f _flVel src/Dodge/Data/Flame.hs 14;" f
_flVel src/Dodge/Data/Flame.hs 15;" f
_flWidth src/Dodge/Data/Flame.hs 18;" f
_flZ src/Dodge/Data/Flame.hs 20;" f
_flames src/Dodge/Data/LWorld.hs 111;" f _flames src/Dodge/Data/LWorld.hs 111;" f
_flankTarget src/Dodge/Data/ActionPlan.hs 177;" f _flankTarget src/Dodge/Data/ActionPlan.hs 177;" f
_flares src/Dodge/Data/LWorld.hs 114;" f _flares src/Dodge/Data/LWorld.hs 114;" f
@@ -3858,7 +3855,7 @@ damageHP src/Dodge/Creature/Damage.hs 67;" f
damageMaterial src/Dodge/Material/Damage.hs 7;" f damageMaterial src/Dodge/Material/Damage.hs 7;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f
damageStone src/Dodge/Material/Damage.hs 20;" f damageStone src/Dodge/Material/Damage.hs 20;" f
damageThingHit src/Dodge/Bullet.hs 174;" f damageThingHit src/Dodge/Bullet.hs 175;" f
damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f
damageWall src/Dodge/Wall/Damage.hs 15;" f damageWall src/Dodge/Wall/Damage.hs 15;" f
damageWallEffect src/Dodge/Wall/DamageEffect.hs 12;" f damageWallEffect src/Dodge/Wall/DamageEffect.hs 12;" f
@@ -4039,7 +4036,7 @@ doCrWdAc src/Dodge/CreatureEffect.hs 77;" f
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
doDamage src/Dodge/Creature/State.hs 138;" f doDamage src/Dodge/Creature/State.hs 138;" f
doDamagesFL src/Dodge/Flame.hs 50;" f doDamagesFL src/Dodge/Flame.hs 47;" f
doDeathToggle src/Dodge/WorldEffect.hs 98;" f doDeathToggle src/Dodge/WorldEffect.hs 98;" f
doDeathTriggers src/Dodge/WorldEffect.hs 93;" f doDeathTriggers src/Dodge/WorldEffect.hs 93;" f
doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f
@@ -4312,8 +4309,8 @@ expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f
expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 183;" f expireAndDamage src/Dodge/Bullet.hs 184;" f
expireAndDamageFL src/Dodge/Flame.hs 41;" f expireAndDamageFL src/Dodge/Flame.hs 38;" f
explodeShell src/Dodge/Projectile/Update.hs 245;" f explodeShell src/Dodge/Projectile/Update.hs 245;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f
@@ -4352,10 +4349,11 @@ firstBreather src/Dodge/Room/Breather.hs 9;" f
firstWorldLoad appDodge/Main.hs 77;" f firstWorldLoad appDodge/Main.hs 77;" f
fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f
fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f
flDamageInArea src/Dodge/Flame.hs 102;" f flDamageInArea src/Dodge/Flame.hs 135;" f
flFlicker src/Dodge/Flame.hs 116;" f flFlicker src/Dodge/Flame.hs 149;" f
flameMuzzles src/Dodge/HeldUse.hs 290;" f flameMuzzles src/Dodge/HeldUse.hs 290;" f
flameShield src/Dodge/Item/Equipment.hs 33;" f flameShield src/Dodge/Item/Equipment.hs 33;" f
flameSize src/Dodge/Flame/Size.hs 5;" f
flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f
flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f
flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f
@@ -4583,7 +4581,7 @@ highBar src/Dodge/Room/Foreground.hs 89;" f
highDiagonalMesh src/Dodge/Room/Foreground.hs 35;" f highDiagonalMesh src/Dodge/Room/Foreground.hs 35;" f
highMesh src/Dodge/Room/Foreground.hs 25;" f highMesh src/Dodge/Room/Foreground.hs 25;" f
hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f
hitEffFromBul src/Dodge/Bullet.hs 149;" f hitEffFromBul src/Dodge/Bullet.hs 150;" f
hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 406;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 406;" f
holdForm src/Dodge/Creature/Boid.hs 137;" f holdForm src/Dodge/Creature/Boid.hs 137;" f
holsterWeapon src/Dodge/Creature/Volition.hs 14;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f
@@ -4926,14 +4924,14 @@ makeDefaultCorpse src/Dodge/Corpse/Make.hs 16;" f
makeDoorDebris src/Dodge/Block/Debris.hs 18;" f makeDoorDebris src/Dodge/Block/Debris.hs 18;" f
makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f
makeFlak src/Dodge/Bullet.hs 138;" f makeFlak src/Dodge/Bullet.hs 139;" f
makeFlame src/Dodge/Flame.hs 124;" f makeFlame src/Dodge/Flame.hs 157;" f
makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f
makeFlamelet src/Dodge/EnergyBall.hs 20;" f makeFlamelet src/Dodge/EnergyBall.hs 20;" f
makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f
makeFlashBall src/Dodge/EnergyBall.hs 74;" f makeFlashBall src/Dodge/EnergyBall.hs 74;" f
makeFootstepSound src/Dodge/Creature/State/WalkCycle.hs 32;" f makeFootstepSound src/Dodge/Creature/State/WalkCycle.hs 32;" f
makeFragBullets src/Dodge/Bullet.hs 122;" f makeFragBullets src/Dodge/Bullet.hs 123;" f
makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 77;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 77;" f
makeGrid src/Grid.hs 46;" f makeGrid src/Grid.hs 46;" f
makeIntInterval src/Dodge/Zoning/Base.hs 34;" f makeIntInterval src/Dodge/Zoning/Base.hs 34;" f
@@ -5069,12 +5067,12 @@ modTo src/Geometry/Zone.hs 10;" f
mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f
mouseCursorType src/Dodge/Render/Picture.hs 86;" f mouseCursorType src/Dodge/Render/Picture.hs 86;" f
mouseWorldPos' src/Dodge/Base/Coordinate.hs 48;" f mouseWorldPos' src/Dodge/Base/Coordinate.hs 48;" f
moveBullet src/Dodge/Bullet.hs 192;" f moveBullet src/Dodge/Bullet.hs 193;" f
moveCombineSel src/Dodge/Update/Scroll.hs 115;" f moveCombineSel src/Dodge/Update/Scroll.hs 115;" f
moveHammerUp src/Dodge/Hammer.hs 5;" f moveHammerUp src/Dodge/Hammer.hs 5;" f
moveInverseShockwave src/Dodge/Shockwave/Update.hs 47;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 47;" f
moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f
movePenBullet src/Dodge/Bullet.hs 202;" f movePenBullet src/Dodge/Bullet.hs 203;" f
moveProjectile src/Dodge/Projectile/Update.hs 221;" f moveProjectile src/Dodge/Projectile/Update.hs 221;" f
moveRoomBy src/Dodge/Room/Link.hs 53;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f
moveShockwave src/Dodge/Shockwave/Update.hs 18;" f moveShockwave src/Dodge/Shockwave/Update.hs 18;" f
@@ -5212,7 +5210,7 @@ pauseSound src/Dodge/SoundLogic.hs 42;" f
pauseTime src/Dodge/Update.hs 185;" f pauseTime src/Dodge/Update.hs 185;" f
peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f
pedestalRoom src/Dodge/Room/Containing.hs 50;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f
penThing src/Dodge/Bullet.hs 209;" f penThing src/Dodge/Bullet.hs 210;" f
perMat src/MatrixHelper.hs 49;" f perMat src/MatrixHelper.hs 49;" f
perceptionUpdate src/Dodge/Creature/Perception.hs 23;" f perceptionUpdate src/Dodge/Creature/Perception.hs 23;" f
performAction src/Dodge/Creature/Action.hs 91;" f performAction src/Dodge/Creature/Action.hs 91;" f
@@ -5706,7 +5704,7 @@ setClusterID src/Dodge/Combine/Graph.hs 116;" f
setDepth src/Picture/Base.hs 128;" f setDepth src/Picture/Base.hs 128;" f
setDirPS src/Dodge/PlacementSpot.hs 49;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f
setFallback src/Dodge/PlacementSpot.hs 127;" f setFallback src/Dodge/PlacementSpot.hs 127;" f
setFromToDams src/Dodge/Bullet.hs 166;" f setFromToDams src/Dodge/Bullet.hs 167;" f
setInLinks src/Dodge/RoomLink.hs 51;" f setInLinks src/Dodge/RoomLink.hs 51;" f
setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f
setInLinksPD src/Dodge/RoomLink.hs 74;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f
@@ -5951,7 +5949,7 @@ stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f
stoneDebris src/Dodge/Block/Debris.hs 137;" f stoneDebris src/Dodge/Block/Debris.hs 137;" f
stoneWallDamage src/Dodge/Wall/DamageEffect.hs 25;" f stoneWallDamage src/Dodge/Wall/DamageEffect.hs 25;" f
stopAllSounds src/Sound.hs 125;" f stopAllSounds src/Sound.hs 125;" f
stopBulletAt src/Dodge/Bullet.hs 195;" f stopBulletAt src/Dodge/Bullet.hs 196;" f
stopPushing src/Dodge/Block.hs 107;" f stopPushing src/Dodge/Block.hs 107;" f
stopSoundFrom src/Dodge/SoundLogic.hs 220;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f
strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f
@@ -6238,7 +6236,7 @@ updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f
updateExpBarrel src/Dodge/Barreloid.hs 20;" f updateExpBarrel src/Dodge/Barreloid.hs 20;" f
updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO src/Framebuffer/Update.hs 97;" f
updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f
updateFlame src/Dodge/Flame.hs 63;" f updateFlame src/Dodge/Flame.hs 60;" f
updateFlames src/Dodge/Update.hs 595;" f updateFlames src/Dodge/Update.hs 595;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f