diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 84edef996..80b383c3f 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -1,5 +1,6 @@ module Dodge.Bullet (updateBullet) where +import Dodge.Damage import Data.Bifunctor import Data.Foldable import Data.Maybe @@ -167,21 +168,20 @@ hitEffFromBul w bu = case _buEffect bu of sp = _buPos bu hitstream = thingsHit sp (sp + _buVel bu) w -setFromToDams :: Bullet -> Point2 -> [Damage] -setFromToDams bu p = case _buPayload bu of +getBulHitDams :: Bullet -> Point2 -> [Damage] +getBulHitDams bu p = case _buPayload bu of BulPlain x -> [Piercing x p v] _ -> [] where v = _buVel bu --- f = (dmFrom .~ _buPos bu) . (dmAt .~ p) . (dmTo .~ _buPos bu +.+ _buVel bu) - damageThingHit :: Bullet -> (Point2, Either Creature Wall) -> World -> World -damageThingHit bu (p, crwl) = case crwl of - Left cr -> cWorld . lWorld . creatures . ix (_crID cr) . crDamage <>~ dams - Right wl -> cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty <>~ dams - where - dams = setFromToDams bu p +damageThingHit bu (p, crwl) = damageCrWl (getBulHitDams bu p) crwl +-- case crwl of +-- Left cr -> cWorld . lWorld . creatures . ix (_crID cr) . crDamage <>~ dams +-- Right wl -> cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty <>~ dams +-- where +-- dams = setFromToDams bu p expireAndDamage :: Bullet -> diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index 6df4b5250..84f0d19eb 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -20,13 +20,13 @@ import Geometry.Vector import LensHelp import ListHelp -damageCrWlID :: Damage -> CrWlID -> World -> World +damageCrWlID :: [Damage] -> CrWlID -> World -> World damageCrWlID dam = \case NothingID -> id - CrID cid -> cWorld . lWorld . creatures . ix cid . crDamage .:~ dam - WlID wlid -> cWorld . lWorld . wallDamages . at wlid . non mempty .:~ dam + CrID cid -> cWorld . lWorld . creatures . ix cid . crDamage <>~ dam + WlID wlid -> cWorld . lWorld . wallDamages . at wlid . non mempty <>~ dam -damageCrWl :: Damage -> Either Creature Wall -> World -> World +damageCrWl :: [Damage] -> Either Creature Wall -> World -> World damageCrWl dam = \case Left cr -> damageCrWlID dam (CrID (_crID cr)) Right wl -> damageCrWlID dam (WlID (_wlID wl)) diff --git a/src/Dodge/Data/Cloud.hs b/src/Dodge/Data/Cloud.hs index 6a7c90558..6bfb2be36 100644 --- a/src/Dodge/Data/Cloud.hs +++ b/src/Dodge/Data/Cloud.hs @@ -12,14 +12,14 @@ import Data.Aeson.TH import Geometry data CloudDraw - = CloudColor Float Float Color -- radius-multiply fade-time color + = CloudColor Float-- Color -- radius-multiply fade-time color deriving (Eq, Ord, Show, Read) --Generic, Flat) data Cloud = Cloud { _clPos :: Point3 , _clVel :: Point3 - , _clPict :: CloudDraw - , _clRad :: Float +-- , _clPict :: CloudDraw +-- , _clRad :: Float , _clAlt :: Float , _clTimer :: Int , _clType :: CloudType diff --git a/src/Dodge/Material/Damage.hs b/src/Dodge/Material/Damage.hs index 800fa9d6c..af4486632 100644 --- a/src/Dodge/Material/Damage.hs +++ b/src/Dodge/Material/Damage.hs @@ -29,10 +29,10 @@ damageStone dm ecw w = Lasering _ p t -> makeSpark FireSpark (outTo p t) (rdir p t) Piercing _ p t -> makeSpark NormalSpark (outTo p t) (rdir p t) - . smokeCloudAt white 20 200 1 (addZ 20 (outTo p t)) + . smokeCloudAt white 200 1 (addZ 20 (outTo p t)) . randsound p [slapS, slap1S] - Blunt _ p t -> smokeCloudAt white 20 200 1 (addZ 20 (outTo p t)) - Shattering _ p t -> smokeCloudAt white 20 200 1 (addZ 20 (outTo p t)) + Blunt _ p t -> smokeCloudAt white 200 1 (addZ 20 (outTo p t)) + Shattering _ p t -> smokeCloudAt white 200 1 (addZ 20 (outTo p t)) Crushing{} -> id Explosive{} -> id Sparking{} -> id @@ -101,7 +101,7 @@ damageFlesh dm _ w = w & case dm of , bloodShort7S , bloodShort8S ] - . smokeCloudAt red 20 200 1 (addZ 20 (outTo p t)) + . smokeCloudAt red 200 1 (addZ 20 (outTo p t)) Blunt _ p _ -> randsound p [hitS] Shattering _ _ _ -> id Crushing{} -> id @@ -124,10 +124,10 @@ damageDirt dm ecw w = w & case dm of Lasering _ p t -> makeSpark FireSpark (outTo p t) (rdir p t) Piercing _ p t -> - smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t)) + smokeCloudAt orange 200 1 (addZ 20 (outTo p t)) . randsound p [slapS, slap1S] - Blunt _ p t -> smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t)) - Shattering _ p t -> smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t)) + Blunt _ p t -> smokeCloudAt orange 200 1 (addZ 20 (outTo p t)) + Shattering _ p t -> smokeCloudAt orange 200 1 (addZ 20 (outTo p t)) Crushing{} -> id Explosive{} -> id Sparking{} -> id diff --git a/src/Dodge/Spark.hs b/src/Dodge/Spark.hs index c21fcb280..35f826c68 100644 --- a/src/Dodge/Spark.hs +++ b/src/Dodge/Spark.hs @@ -36,11 +36,11 @@ updateSpark w sk sparkDam :: Spark -> Either Creature Wall -> World -> World sparkDam = damageCrWl . sparkToDamage -sparkToDamage :: Spark -> Damage +sparkToDamage :: Spark -> [Damage] sparkToDamage sp = case _skType sp of - ElectricSpark -> Electrical 10 - FireSpark -> Flaming 1 - NormalSpark -> Sparking 10 + ElectricSpark -> [Electrical 10] + FireSpark -> [Flaming 1] + NormalSpark -> [Sparking 10] makeSpark :: SparkType -> Point2 -> Float -> World -> World makeSpark st p d = diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index f74b90cd0..d029fd225 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -577,7 +577,7 @@ updateTeslaArc w pt , randWallReflect ld' wl ) | ArcStep lp' ld' _ <- last thearc = (lp', rp ld') - damthings (ArcStep _ _ crwl) = damageCrWlID (Electrical 50) crwl + damthings (ArcStep _ _ crwl) = damageCrWlID [Electrical 50] crwl randWallReflect :: RandomGen g => Float -> Wall -> State g Float randWallReflect a wl = randPeaked a1 outa a2 @@ -766,7 +766,8 @@ clClSpringVel a v b where pa = _clPos a pb = _clPos b - radDist = (_clRad a + _clRad b) / 2 + radDist = 10 + --radDist = (_clRad a + _clRad b) / 2 simpleCrSprings :: World -> World simpleCrSprings w = IM.foldl' (flip crSpring) w $ w ^. cWorld . lWorld . creatures diff --git a/src/Dodge/Update/Cloud.hs b/src/Dodge/Update/Cloud.hs index 9ffbfe5e7..fc98f6bb5 100644 --- a/src/Dodge/Update/Cloud.hs +++ b/src/Dodge/Update/Cloud.hs @@ -12,5 +12,5 @@ cloudPoisonDamage c w = foldl' (flip doDam) w (filter f $ crsNearPoint clpos w) where doDam cr = cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ Poison 1 - f cr = dist3 (addZ 20 $ _crPos cr) (_clPos c) < crRad (cr ^. crType) + _clRad c + 10 + f cr = dist3 (addZ 20 $ _crPos cr) (_clPos c) < crRad (cr ^. crType) + 20 clpos = stripZ $ _clPos c diff --git a/src/Dodge/Wall/Dust.hs b/src/Dodge/Wall/Dust.hs index 17cc02ef8..c0713897c 100644 --- a/src/Dodge/Wall/Dust.hs +++ b/src/Dodge/Wall/Dust.hs @@ -8,7 +8,7 @@ import Geometry import RandomHelp wlDustAt :: Wall -> Point2 -> World -> World -wlDustAt wl = smokeCloudAt dustcol 20 200 1 . addZ 20 +wlDustAt wl = smokeCloudAt dustcol 200 1 . addZ 20 where dustcol = _wlColor wl & _4 .~ 1 @@ -17,7 +17,7 @@ muchWlDustAt wl p = flip (foldl' f) [10, 20 .. 100] where f w h = w - & smokeCloudAt dustcol 20 200 1 (addZ h (p +.+ off)) + & smokeCloudAt dustcol 200 1 (addZ h (p +.+ off)) & randGen .~ g where (off, g) = runState (randInCirc 1) (_randGen w) diff --git a/src/Dodge/WorldEvent/Cloud.hs b/src/Dodge/WorldEvent/Cloud.hs index 10dd496f7..ed6899a60 100644 --- a/src/Dodge/WorldEvent/Cloud.hs +++ b/src/Dodge/WorldEvent/Cloud.hs @@ -1,8 +1,8 @@ module Dodge.WorldEvent.Cloud ( makeFlamerSmokeAt, smokeCloudAt, - makeThinSmokeAt, - makeThickSmokeAt, +-- makeThinSmokeAt, +-- makeThickSmokeAt, shellTrailCloud, spawnSmokeAtCursor, makeStartCloudAt, @@ -13,12 +13,12 @@ import Dodge.Data.World import Geometry.Data import LensHelp import Picture -import System.Random +--import System.Random makeCloudAt :: - CloudDraw -> - -- | radius - Float -> +-- CloudDraw -> +-- -- | radius +-- Float -> -- | timer Int -> -- | resting altitude @@ -26,13 +26,13 @@ makeCloudAt :: Point3 -> -- start position World -> World -makeCloudAt drawFunc rad t alt p = +makeCloudAt t alt p = cWorld . lWorld . clouds .:~ Cloud { _clPos = p , _clVel = V3 0 0 0 - , _clPict = drawFunc - , _clRad = rad +-- , _clPict = drawFunc +-- , _clRad = rad , _clAlt = alt , _clTimer = t , _clType = SmokeCloud @@ -41,7 +41,7 @@ makeCloudAt drawFunc rad t alt p = smokeCloudAt :: Color -> -- | radius - Float -> +-- Float -> -- | timer Int -> -- | resting altitude @@ -49,26 +49,26 @@ smokeCloudAt :: Point3 -> -- start position World -> World -smokeCloudAt col = makeCloudAt (CloudColor (4 / 3) 800 col) +smokeCloudAt col = makeCloudAt -makeThickSmokeAt :: Point3 -> World -> World -makeThickSmokeAt = makeCloudAt (CloudColor 4 50 black) 3 50 30 - -makeThinSmokeAt :: Point3 -> World -> World -makeThinSmokeAt = makeCloudAt (CloudColor 4 400 (withAlpha 0.05 black)) 5 400 50 +--makeThickSmokeAt :: Point3 -> World -> World +--makeThickSmokeAt = makeCloudAt 50 30 +-- +--makeThinSmokeAt :: Point3 -> World -> World +--makeThinSmokeAt = makeCloudAt 400 50 makeStartCloudAt :: Point3 -> World -> World --makeStartCloudAt = makeCloudAt (CloudColor 2 800 white) 10 400 5 --makeStartCloudAt = makeCloudAt (CloudColor 2 200 white) 10 400 50 -makeStartCloudAt = makeCloudAt (CloudColor 2 200 white) 10 400 50 +makeStartCloudAt = makeCloudAt 400 50 shellTrailCloud :: Int -> Float -> Point3 -> World -> World -shellTrailCloud age fadet = makeCloudAt (CloudColor (3 / 2) fadet (greyN 0.5)) 15 age 30 +shellTrailCloud age fadet = makeCloudAt age 30 makeFlamerSmokeAt :: Point3 -> World -> World -makeFlamerSmokeAt p w = makeCloudAt (CloudColor 4 300 (greyN x)) 6 200 40 p w - where - x = fst $ randomR (0.5, 0.8) (_randGen w) +makeFlamerSmokeAt p w = makeCloudAt 200 40 p w +-- where +-- x = fst $ randomR (0.5, 0.8) (_randGen w) spawnSmokeAtCursor :: World -> World spawnSmokeAtCursor w = shellTrailCloud 400 100 (V3 x y 20) w diff --git a/src/Dodge/WorldEvent/SpawnParticle.hs b/src/Dodge/WorldEvent/SpawnParticle.hs index caadff489..409ef015a 100644 --- a/src/Dodge/WorldEvent/SpawnParticle.hs +++ b/src/Dodge/WorldEvent/SpawnParticle.hs @@ -1,13 +1,11 @@ -- | Creation of particles in the world. -module Dodge.WorldEvent.SpawnParticle ( - makeGasCloud, -) where +module Dodge.WorldEvent.SpawnParticle (makeGasCloud) where import Dodge.Data.World import Geometry import LensHelp -import Picture -import RandomHelp +--import Picture +--import RandomHelp -- | At writing the radius is half the size of the effect area makeGasCloud :: @@ -20,18 +18,19 @@ makeGasCloud :: makeGasCloud pos vel w = w & cWorld . lWorld . clouds .:~ theCloud - & randGen .~ g where + -- & randGen .~ g + theCloud = Cloud { _clPos = addZ 20 pos , _clVel = addZ 0 vel - , _clPict = CloudColor 3 50 (withAlpha 0.5 col) - , _clRad = 10 +-- , _clPict = CloudColor 50 -- (withAlpha 0.5 col) , _clAlt = 25 , _clTimer = 400 , _clType = GasCloud } - (col, g) = runState (takeOne [green, yellow]) $ _randGen w + +-- (col, g) = runState (takeOne [green, yellow]) $ _randGen w {- Attach poison cloud damage to creatures near cloud. -} diff --git a/src/Shader/Poke/Cloud.hs b/src/Shader/Poke/Cloud.hs index 0dd4a428f..0e40dd654 100644 --- a/src/Shader/Poke/Cloud.hs +++ b/src/Shader/Poke/Cloud.hs @@ -1,7 +1,9 @@ -module Shader.Poke.Cloud ( - pokeCloud, -) where +{-# LANGUAGE LambdaCase #-} +module Shader.Poke.Cloud (pokeCloud) where + +import Color +import Control.Lens import qualified Data.Vector.Unboxed as UV import Dodge.Data.Cloud import Foreign @@ -9,7 +11,7 @@ import Geometry import Graphics.GL.Core45 pokeCloud :: Ptr Float -> Ptr GLushort -> (Int, Int) -> Cloud -> IO (Int, Int) -pokeCloud vptr iptr (nv,ni) cl = do +pokeCloud vptr iptr (nv, ni) cl = do UV.imapM_ (pokeCloudVerx vptr cl nv) $ UV.fromList [(1, 1), (-1, 1), (-1, -1), (1, -1)] UV.imapM_ (pokeCloudIndex iptr nv ni) $ UV.fromList [0, 1, 2, 2, 0, 3] return (nv + 4, ni + 6) @@ -17,14 +19,26 @@ pokeCloud vptr iptr (nv,ni) cl = do pokeCloudVerx :: Ptr Float -> Cloud -> Int -> Int -> (Float, Float) -> IO () {-# INLINE pokeCloudVerx #-} pokeCloudVerx ptr cl nv i (dx, dy) = - UV.imapM_ (pokeCloudFloat ptr (nv + i)) $ UV.fromList - [x, y, cz, 1, r, g, b, a, cx, cy, cz, rad, dx, dy, 0, 0] + UV.imapM_ (pokeCloudFloat ptr (nv + i)) $ + UV.fromList + [x, y, cz, 1, r, g, b, a, cx, cy, cz, rad, dx, dy, 0, 0] where V3 cx cy cz = _clPos cl V2 x y = V2 cx cy - rad *.* V2 dx dy - CloudColor rad' fadet col = _clPict cl - (rad,V4 r g b a') = (rad'*_clRad cl, col) - a = a' * min 1 (fromIntegral (_clTimer cl) / fadet) + --CloudColor fadet col = _clPict cl +-- CloudColor fadet = _clPict cl + (rad, V4 r g b a') = (20, clColor $ cl ^. clType) + -- (rad,V4 r g b a') = (_clRad cl*rad', col) + a = a' * min 1 (fromIntegral (_clTimer cl) / 100) + +clColor :: CloudType -> Color +clColor = \case + SmokeCloud -> white + FlamerSmokeCloud -> black + RocketCloud -> greyN 0.5 + CryoReleaseCloud -> blue + GasCloud -> green + StoneDust -> white pokeCloudFloat :: Ptr Float -> Int -> Int -> Float -> IO () {-# INLINE pokeCloudFloat #-} diff --git a/tags b/tags index 32de43609..9eab5c8e3 100644 --- a/tags +++ b/tags @@ -317,7 +317,7 @@ Cloud src/Dodge/Data/Cloud.hs 6;" m Cloud src/Dodge/Update/Cloud.hs 1;" m Cloud src/Dodge/WorldEvent/Cloud.hs 1;" m Cloud src/Dodge/Zoning/Cloud.hs 1;" m -Cloud src/Shader/Poke/Cloud.hs 1;" m +Cloud src/Shader/Poke/Cloud.hs 3;" m CloudColor src/Dodge/Data/Cloud.hs 15;" C CloudDraw src/Dodge/Data/Cloud.hs 14;" t CloudType src/Dodge/Data/Cloud.hs 29;" t @@ -2371,7 +2371,6 @@ _cigType src/Dodge/Data/Camera.hs 19;" f _clAlt src/Dodge/Data/Cloud.hs 23;" f _clPict src/Dodge/Data/Cloud.hs 21;" f _clPos src/Dodge/Data/Cloud.hs 19;" f -_clRad src/Dodge/Data/Cloud.hs 22;" f _clTimer src/Dodge/Data/Cloud.hs 24;" f _clType src/Dodge/Data/Cloud.hs 25;" f _clVel src/Dodge/Data/Cloud.hs 20;" f @@ -2531,10 +2530,10 @@ _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 21;" f _ebID src/Dodge/Data/EnergyBall/Type.hs 15;" f _ebPos src/Dodge/Data/EnergyBall.hs 19;" f _ebTimer src/Dodge/Data/EnergyBall.hs 20;" f +_ebType src/Dodge/Data/EnergyBall.hs 21;" f _ebVel src/Dodge/Data/EnergyBall.hs 18;" f _eboName src/Shader/Data.hs 89;" f _eboPtr src/Shader/Data.hs 90;" f @@ -3388,7 +3387,7 @@ applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f applyInvLock src/Dodge/HeldUse.hs 423;" f -applyMagnetsToBul src/Dodge/Bullet.hs 29;" f +applyMagnetsToBul src/Dodge/Bullet.hs 30;" f applyPastDamages src/Dodge/Creature/State.hs 131;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f @@ -3537,7 +3536,7 @@ blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f boosterGun src/Dodge/Item/Equipment/Booster.hs 9;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f bossRoom src/Dodge/Room/Boss.hs 60;" f -bounceDir src/Dodge/Bullet.hs 107;" f +bounceDir src/Dodge/Bullet.hs 108;" f bouncePoint src/Dodge/Base/Collide.hs 88;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f @@ -3631,6 +3630,7 @@ circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f clClSpringVel src/Dodge/Update.hs 762;" f +clColor src/Shader/Poke/Cloud.hs 34;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 166;" f @@ -3731,7 +3731,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 81;" f crBlips src/Dodge/RadarSweep.hs 87;" f crCamouflage src/Dodge/Creature/Picture.hs 31;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f -crCrSpring src/Dodge/Update.hs 780;" f +crCrSpring src/Dodge/Update.hs 781;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 57;" f crDexterity src/Dodge/Creature/Statistics.hs 14;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 38;" f @@ -3759,7 +3759,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f crSetRoots src/Dodge/Inventory/Location.hs 48;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 775;" f +crSpring src/Dodge/Update.hs 776;" f crStratConMatches src/Dodge/Creature/Test.hs 76;" f crStrength src/Dodge/Creature/Statistics.hs 24;" f crUpdate src/Dodge/Creature/State.hs 62;" f @@ -3847,7 +3847,7 @@ damageInCircle src/Dodge/Damage.hs 61;" f damageMetal src/Dodge/Material/Damage.hs 56;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f damageStone src/Dodge/Material/Damage.hs 26;" f -damageThingHit src/Dodge/Bullet.hs 179;" f +damageThingHit src/Dodge/Bullet.hs 178;" 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 @@ -4053,7 +4053,7 @@ doItemTimeScroll src/Dodge/Update.hs 196;" f doLoop src/Loop.hs 60;" f doMCrAc src/Dodge/CreatureEffect.hs 57;" f doMP2Ac src/Dodge/CreatureEffect.hs 73;" f -doMagnetBuBu src/Dodge/Bullet.hs 32;" f +doMagnetBuBu src/Dodge/Bullet.hs 33;" f doMagnetBuBu src/Dodge/MagnetBuBu.hs 7;" f doMagnetUpdate src/Dodge/Magnet/Update.hs 6;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -4437,6 +4437,7 @@ getArguments' src/Dodge/Update/Scroll.hs 167;" f getAttachedSFLink src/Dodge/HeldUse.hs 759;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 121;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f +getBulHitDams src/Dodge/Bullet.hs 171;" f getBulletType src/Dodge/HeldUse.hs 878;" f getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f getCommands src/Dodge/Terminal.hs 117;" f @@ -4572,7 +4573,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 512;" f -hitEffFromBul src/Dodge/Bullet.hs 153;" f +hitEffFromBul src/Dodge/Bullet.hs 154;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 468;" f holdForm src/Dodge/Creature/Boid.hs 137;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f @@ -4910,14 +4911,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 71;" f -makeFlak src/Dodge/Bullet.hs 142;" f +makeFlak src/Dodge/Bullet.hs 143;" f makeFlame src/Dodge/Flame.hs 43;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlashBall src/Dodge/EnergyBall.hs 84;" f -makeFragBullets src/Dodge/Bullet.hs 127;" f -makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 13;" 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 @@ -5051,7 +5052,7 @@ mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 163;" f 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 +mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f moveBullet src/Dodge/Bullet.hs 195;" f moveCombineSel src/Dodge/Update/Scroll.hs 115;" f moveHammerUp src/Dodge/Hammer.hs 5;" f @@ -5286,10 +5287,10 @@ poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f pokeBox src/Shader/Poke.hs 227;" f pokeBoxSurface src/Shader/Poke.hs 262;" f -pokeCloud src/Shader/Poke/Cloud.hs 11;" f -pokeCloudFloat src/Shader/Poke/Cloud.hs 29;" f -pokeCloudIndex src/Shader/Poke/Cloud.hs 33;" f -pokeCloudVerx src/Shader/Poke/Cloud.hs 17;" f +pokeCloud src/Shader/Poke/Cloud.hs 13;" f +pokeCloudFloat src/Shader/Poke/Cloud.hs 43;" f +pokeCloudIndex src/Shader/Poke/Cloud.hs 47;" f +pokeCloudVerx src/Shader/Poke/Cloud.hs 19;" f pokeCylinder src/Shader/Poke.hs 172;" f pokeCylinderCaps src/Shader/Poke.hs 215;" f pokeF src/Shader/Poke.hs 67;" f @@ -5634,7 +5635,7 @@ screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f -screenToWorldPos src/Dodge/Base/Coordinate.hs 54;" f +screenToWorldPos src/Dodge/Base/Coordinate.hs 51;" f scrollAugInvSel src/Dodge/Inventory.hs 204;" f scrollAugNextInSection src/Dodge/Inventory.hs 217;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 162;" f @@ -5689,7 +5690,6 @@ 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 170;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f @@ -5806,7 +5806,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 771;" f +simpleCrSprings src/Dodge/Update.hs 772;" f simpleTermMessage src/Dodge/Terminal.hs 253;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 610;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f @@ -6204,8 +6204,8 @@ updateBarrel src/Dodge/Barreloid.hs 41;" f updateBarreloid src/Dodge/Barreloid.hs 15;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 29;" f updateBounds src/Dodge/Update/Camera.hs 250;" f -updateBulVel src/Dodge/Bullet.hs 54;" f -updateBullet src/Dodge/Bullet.hs 19;" f +updateBulVel src/Dodge/Bullet.hs 55;" f +updateBullet src/Dodge/Bullet.hs 20;" f updateBullets src/Dodge/Update.hs 542;" f updateCamera src/Dodge/Update/Camera.hs 29;" f updateCloseObjects src/Dodge/Inventory.hs 116;" f @@ -6217,7 +6217,7 @@ updateCreature src/Dodge/Creature/Update.hs 13;" f updateCreatureGroups src/Dodge/Update.hs 514;" f updateCreatureSoundPositions src/Dodge/Update.hs 490;" f updateDebugMessageOffset src/Dodge/Update.hs 94;" f -updateDelayedEvents src/Dodge/Update.hs 800;" f +updateDelayedEvents src/Dodge/Update.hs 801;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 535;" f @@ -6325,7 +6325,7 @@ upperPrismPolyTS src/Shape.hs 120;" f upperRounded src/Shape.hs 185;" f useBreakL src/Dodge/Item/Grammar.hs 37;" f useBreakListsLinkTest src/Dodge/Item/Grammar.hs 45;" f -useBulletPayload src/Dodge/Bullet.hs 112;" f +useBulletPayload src/Dodge/Bullet.hs 113;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useDelay src/Dodge/Item/UseDelay.hs 13;" f