From 54937fd159a54804034b3dcf443cd8b83429b2a4 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 8 Jun 2025 12:12:58 +0100 Subject: [PATCH] Simplify flames --- src/Dodge/Data/Flame.hs | 4 +-- src/Dodge/Flame.hs | 63 +++++++++++++++++++++++++++------- src/Dodge/Flame/Draw.hs | 76 ++++++++++++++++++++++------------------- tags | 70 ++++++++++++++++++------------------- 4 files changed, 126 insertions(+), 87 deletions(-) diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index fdc45e1bc..68b0e09db 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -13,10 +13,8 @@ import Geometry.Data data Flame = Flame { _flVel :: Point2 , _flPos :: Point2 - , _flWidth :: Float , _flTimer :: Int - , _flZ :: Float - , _flOriginalVel :: Point2 +-- , _flOriginalVel :: Point2 } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Flame.hs b/src/Dodge/Flame.hs index a5f261ccc..b8b1e8c27 100644 --- a/src/Dodge/Flame.hs +++ b/src/Dodge/Flame.hs @@ -4,9 +4,9 @@ module Dodge.Flame ( updateFlame, ) where +import Dodge.Flame.Size import Data.Foldable import Data.Tuple -import Dodge.Creature.Radius import Dodge.Data.World import Dodge.SoundLogic import Dodge.WorldEvent.Cloud @@ -31,10 +31,8 @@ aFlameParticle t pos vel = Flame { _flVel = vel , _flPos = pos - , _flWidth = 4 , _flTimer = t - , _flZ = 20 - , _flOriginalVel = vel +-- , _flOriginalVel = vel } expireAndDamageFL :: @@ -63,11 +61,10 @@ 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 w, mvPt' 0.7) - Just (p, Right wl) -> (doSound $ dodamage w, rfl wl p) - _ -> (flFlicker pt $ doSound $ dodamage w, mvPt' 0.98) + Just (_, Left _) -> (doSound $ dodamage, mvPt' 0.7) + Just (p, Right wl) -> (doSound $ dodamage, rfl wl p) + _ -> (flFlicker pt $ doSound $ dodamage, 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 @@ -79,12 +76,15 @@ updateFlame w pt & flTimer -~ 1 & flPos .~ ep & 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 - 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 $ @@ -97,6 +97,43 @@ updateFlame w pt 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 #-} diff --git a/src/Dodge/Flame/Draw.hs b/src/Dodge/Flame/Draw.hs index 4359d5f73..1077e9b65 100644 --- a/src/Dodge/Flame/Draw.hs +++ b/src/Dodge/Flame/Draw.hs @@ -1,40 +1,46 @@ -module Dodge.Flame.Draw where +module Dodge.Flame.Draw (drawFlame) where +import Dodge.Flame.Size import Dodge.Data.Flame import Geometry import Picture -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 - . 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 :: 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) diff --git a/tags b/tags index 1b727eb8e..0b1801d2f 100644 --- a/tags +++ b/tags @@ -622,15 +622,15 @@ ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C ElectricSpark src/Dodge/Data/Spark.hs 22;" C Electrical src/Dodge/Data/Damage.hs 28;" 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 EllShad src/Picture/Data.hs 39;" C Enable_debug src/Dodge/Data/Config.hs 68;" 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/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 EngineSS src/Dodge/Data/Scenario.hs 88;" 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 ExplosionPayload src/Dodge/Data/Payload.hs 11;" 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 ExplosivePutty src/Dodge/Data/AmmoType.hs 13;" C 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 FixedSelectionWidth src/Dodge/Data/SelectionList.hs 40;" 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/Flame.hs 1;" m FlameBeamCombine src/Dodge/Data/Beam.hs 39;" 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 FlamerSmokeCloud src/Dodge/Data/Cloud.hs 31;" 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 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 FlatFaces src/Shape/Data.hs 17;" 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 SixteenthRes src/Dodge/Data/Config.hs 97;" C Size src/Shape/Data.hs 28;" t +Size src/Dodge/Flame/Size.hs 1;" m Size src/Dodge/Zone/Size.hs 1;" m SizeInvariant src/Dodge/Picture/SizeInvariant.hs 1;" m 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 _dtRight src/Dodge/Data/DoubleTree.hs 30;" f _dtValue src/Dodge/Data/DoubleTree.hs 30;" f -_ebEff src/Dodge/Data/EnergyBall.hs 24;" f -_ebPos src/Dodge/Data/EnergyBall.hs 21;" f -_ebRot src/Dodge/Data/EnergyBall.hs 25;" f -_ebTimer src/Dodge/Data/EnergyBall.hs 23;" f -_ebVel src/Dodge/Data/EnergyBall.hs 19;" f +_ebEff src/Dodge/Data/EnergyBall.hs 21;" f +_ebPos src/Dodge/Data/EnergyBall.hs 19;" f +_ebRot src/Dodge/Data/EnergyBall.hs 22;" f +_ebTimer src/Dodge/Data/EnergyBall.hs 20;" f +_ebVel src/Dodge/Data/EnergyBall.hs 18;" f _eboName src/Shader/Data.hs 89;" f _eboPtr src/Shader/Data.hs 90;" 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 _fboLighting src/Data/Preload/Render.hs 37;" 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 _flItID src/Dodge/Data/FloorItem.hs 16;" f _flItPos 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 17;" f -_flTimer src/Dodge/Data/Flame.hs 19;" 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 +_flPos src/Dodge/Data/Flame.hs 15;" f +_flTimer src/Dodge/Data/Flame.hs 16;" f +_flVel src/Dodge/Data/Flame.hs 14;" 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 @@ -3858,7 +3855,7 @@ damageHP src/Dodge/Creature/Damage.hs 67;" f damageMaterial src/Dodge/Material/Damage.hs 7;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" 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 damageWall src/Dodge/Wall/Damage.hs 15;" 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 doCrWdWd src/Dodge/CreatureEffect.hs 20;" 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 doDeathTriggers src/Dodge/WorldEffect.hs 93;" 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 expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f -expireAndDamage src/Dodge/Bullet.hs 183;" f -expireAndDamageFL src/Dodge/Flame.hs 41;" 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 @@ -4352,10 +4349,11 @@ 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 102;" f -flFlicker src/Dodge/Flame.hs 116;" f +flDamageInArea src/Dodge/Flame.hs 135;" f +flFlicker src/Dodge/Flame.hs 149;" f flameMuzzles src/Dodge/HeldUse.hs 290;" 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 flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" 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 highMesh src/Dodge/Room/Foreground.hs 25;" 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 holdForm src/Dodge/Creature/Boid.hs 137;" 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 makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f -makeFlak src/Dodge/Bullet.hs 138;" f -makeFlame src/Dodge/Flame.hs 124;" f +makeFlak src/Dodge/Bullet.hs 139;" f +makeFlame src/Dodge/Flame.hs 157;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f makeFlamelet src/Dodge/EnergyBall.hs 20;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlashBall src/Dodge/EnergyBall.hs 74;" 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 makeGrid src/Grid.hs 46;" 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 mouseCursorType src/Dodge/Render/Picture.hs 86;" 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 moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 47;" 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 moveRoomBy src/Dodge/Room/Link.hs 53;" 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 peZoneSize src/Dodge/Zoning/Pathing.hs 46;" 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 perceptionUpdate src/Dodge/Creature/Perception.hs 23;" 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 setDirPS src/Dodge/PlacementSpot.hs 49;" 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 setInLinksByType src/Dodge/RoomLink.hs 54;" 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 stoneWallDamage src/Dodge/Wall/DamageEffect.hs 25;" 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 stopSoundFrom src/Dodge/SoundLogic.hs 220;" 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 updateFBOTO src/Framebuffer/Update.hs 97;" 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 updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f