diff --git a/src/Dodge/Combine.hs b/src/Dodge/Combine.hs index 6d1c41d36..b6bf8f5ac 100644 --- a/src/Dodge/Combine.hs +++ b/src/Dodge/Combine.hs @@ -1,7 +1,5 @@ --{-# LANGUAGE TupleSections #-} -module Dodge.Combine ( - combineList, -) where +module Dodge.Combine (combineList) where import Dodge.Data.CombAmount import Dodge.Item.InvSize diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 2f4dc061a..f654d3239 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -119,11 +119,9 @@ scorchSPic = _1 %~ overColSH (mixColors 0.9 0.1 black . normalizeColor) poisonSPic :: SPic -> SPic poisonSPic = _1 %~ overColSH (mixColors 0.5 0.5 green . normalizeColor) -{- | Drop items according to the creature state. - TODO make sure this doesn't mess up any ItemPosition --} +-- reverse keys, otherwise two or more inv items will cause errors dropAll :: Creature -> World -> World -dropAll cr w = foldl' (flip (dropItem cr)) w $ IM.keys $ _crInv cr +dropAll cr w = foldl' (flip (dropItem cr)) w . reverse . IM.keys $ _crInv cr doDamage :: Creature -> World -> World doDamage cr = applyPastDamages cr . applyCreatureDamage (cr ^. crDamage) cr diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index f61f80102..042952310 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -14,8 +14,19 @@ import Dodge.Humanoid import Dodge.Lampoid import qualified Data.List as List +-- Should separate out creature movement from other parts here + updateCreature :: Creature -> World -> World -updateCreature cr = chasmTest cr . case _crType cr of +updateCreature cr + | _crZ cr < negate 100 = id -- can remove creature and all items + | _crZ cr < 0 = (tocr . crZVel -~ 0.5) + . (tocr . crZ +~ _crZVel cr) + | otherwise = updateCreature' cr + where + tocr = cWorld . lWorld . creatures . ix (_crID cr) + +updateCreature' :: Creature -> World -> World +updateCreature' cr = chasmTest cr . case _crType cr of Avatar{} -> (cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse) . crUpdate yourControl cr LampCrit{} -> updateLampoid cr diff --git a/src/Dodge/EnergyBall.hs b/src/Dodge/EnergyBall.hs index cb8719d1e..d278863be 100644 --- a/src/Dodge/EnergyBall.hs +++ b/src/Dodge/EnergyBall.hs @@ -6,28 +6,27 @@ module Dodge.EnergyBall ( makeMovingEB, ) where -import Dodge.Damage import Data.Maybe import Dodge.Base.Collide +import Dodge.Damage import Dodge.Data.World import Dodge.SoundLogic import Dodge.Spark import Geometry import LensHelp +import Linear.V3 import Picture import RandomHelp -import Linear.V3 makeFlamelet :: Point3 -> Point3 -> Float -> Int -> World -> World -makeFlamelet p v s t w = - w - & cWorld . lWorld . energyBalls - .:~ EnergyBall - { _ebVel = v - , _ebPos = p - , _ebTimer = t - , _ebType = FlameletBall s - } +makeFlamelet p v s t = + cWorld . lWorld . energyBalls + .:~ EnergyBall + { _ebVel = v + , _ebPos = p + , _ebTimer = t + , _ebType = FlameletBall s + } updateEnergyBall :: World -> EnergyBall -> (World, Maybe EnergyBall) updateEnergyBall w eb diff --git a/src/Dodge/Event/Test.hs b/src/Dodge/Event/Test.hs index cde0206a3..7586b4536 100644 --- a/src/Dodge/Event/Test.hs +++ b/src/Dodge/Event/Test.hs @@ -2,16 +2,10 @@ module Dodge.Event.Test ( testEvent, ) where -import Dodge.SoundLogic.ExternallyGeneratedSounds +--import Dodge.Creature.State import Dodge.Data.World -import Control.Lens -import Geometry +--import Control.Lens testEvent :: World -> World testEvent w = w - & cWorld . lWorld . worldEvents .~ SoundStart BackgroundSound (V2 0 0) foamSprayFadeOutS Nothing : - --[MakeStartCloudAt (V3 (cx + x) (cy + y) 5) | x <- [-5, -4 .. 5], y <- [-5, -4 .. 5]] - [MakeStartCloudAt (V3 (cx + x) (cy + y) 200) | x <- [0], y <- [0]] - where - V2 cx cy = w ^?! cWorld . lWorld . creatures . ix 0 . crPos diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index f13624ed9..4f78cf908 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -13,6 +13,7 @@ module Dodge.Inventory ( swapInvItems, scrollAugNextInSection, swapItemWith, + destroyItem, ) where import Dodge.Equipment @@ -60,14 +61,18 @@ destroyInvItem cid invid w = (cWorld . lWorld . imHotkeys . unNIntMap . at itid .~ Nothing) . (cWorld . lWorld . hotkeys . at hk .~ Nothing) --- | after this the item at the inventory position will no longer exist -rmInvItem :: - -- | Creature id - Int -> - -- | Inventory position - Int -> - World -> - World +destroyItem :: Int -> World -> World +destroyItem itid w = case w ^? cWorld . lWorld . itemLocations . ix itid of + Nothing -> error $ "Tried to destroy item that does not exist; item id: "++ show itid + Just (InInv {_ilCrID = cid, _ilInvID = invid}) -> destroyInvItem cid invid w + Just (OnTurret{}) -> error "need to write code for destroying items on turrets" + Just (OnFloor (NInt i)) -> w & cWorld . lWorld . itemLocations . at itid .~ Nothing + & cWorld . lWorld . floorItems . unNIntMap . at i .~ Nothing + Just InVoid -> w & cWorld . lWorld . itemLocations . at itid .~ Nothing + +-- note rmInvItem does not fully destroy the item, other updates to the item +-- location are required +rmInvItem :: Int -> Int -> World -> World rmInvItem cid invid w = w & dounequipfunction --the ordering of these is diff --git a/src/Dodge/Prop/Gib.hs b/src/Dodge/Prop/Gib.hs index 42deb2abd..98d878484 100644 --- a/src/Dodge/Prop/Gib.hs +++ b/src/Dodge/Prop/Gib.hs @@ -1,15 +1,13 @@ -module Dodge.Prop.Gib ( - addCrGibs, -) where +module Dodge.Prop.Gib (addCrGibs) where -import Dodge.WorldEvent.Cloud -import Dodge.Creature.Shape import Color import Control.Monad import Data.Foldable import Data.List (zip4) +import Dodge.Creature.Shape import Dodge.Damage import Dodge.Data.World +import Dodge.WorldEvent.Cloud import Geometry import LensHelp import qualified Quaternion as Q @@ -18,16 +16,16 @@ import RandomHelp addCrGibs :: Creature -> World -> World addCrGibs cr = case damageDirection $ _crDamage cr of Nothing -> - addGibAt 25 (_skinHead skin) cpos + addGibAt 25 (_skinHead skin) cpos . addGibsAtDir pi 0 3 7 (_skinLower skin) cpos . addGibsAtDir pi 0 13 20 (_skinUpper skin) cpos . makeDustAt Flesh 50 (addZ 20 cpos) . makeDustAt Flesh 50 (addZ 20 cpos) . makeDustAt Flesh 50 (addZ 20 cpos) . makeDustAt Flesh 50 (addZ 20 cpos) - Just d -> (testFloat +~ 1) - . addGibsAtDir (pi/4) d 3 7 (_skinLower skin) cpos - . addGibsAtDir (pi/4) d 13 20 (_skinUpper skin) cpos + Just d -> + addGibsAtDir (pi / 4) d 3 7 (_skinLower skin) cpos + . addGibsAtDir (pi / 4) d 13 20 (_skinUpper skin) cpos . addGibAtDir d 25 (_skinHead skin) cpos . makeDustAt Flesh 50 (addZ 20 cpos) . makeDustAt Flesh 50 (addZ 20 cpos) @@ -48,11 +46,11 @@ addGibsAtDir spread dir minh maxh col p w = dirs = unitVectorAtAngle <$> (randsSpread (dir - spread, dir + spread) 4 & evalState $ _randGen w) vels = zipWith (*.*) speeds dirs zspeeds = replicateM 4 (state (randomR (-8, 8))) & evalState $ _randGen w - quats :: [Q.Quaternion Float] quats = replicateM 4 (Q.vToQuat (V3 0 0 1) <$> randOnUnitSphere) & evalState $ _randGen w addGib4 :: Point2 -> Color -> (Point2, Float, QFloat, Float) -> World -> World -addGib4 p col (v, zs, q, h) = cWorld . lWorld . debris +addGib4 p col (v, zs, q, h) = + cWorld . lWorld . debris .:~ DebrisChunk { _dbPos = p `v2z` h , _dbType = Gib 3 col @@ -60,7 +58,7 @@ addGib4 p col (v, zs, q, h) = cWorld . lWorld . debris , _dbRot = q , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) (-0.1) } - + addGibAt :: Float -> Color -> Point2 -> World -> World addGibAt h col p w = addGibAtDir d h col p (w & randGen .~ newg) where @@ -78,10 +76,11 @@ addGibAtDir dir h col p w = zs <- state $ randomR (-4, 4) q <- Q.vToQuat (V3 0 0 1) <$> randOnUnitSphere let v = s *.* unitVectorAtAngle dir - return $ DebrisChunk - { _dbPos = p `v2z` h - , _dbType = Gib 3 col - , _dbVel = v `v2z` zs - , _dbRot = q - , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) (-0.1) - } + return $ + DebrisChunk + { _dbPos = p `v2z` h + , _dbType = Gib 3 col + , _dbVel = v `v2z` zs + , _dbRot = q + , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) (-0.1) + } diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index b6809d58d..627286725 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -33,7 +33,7 @@ import Shader.Poke.Cloud doDrawing :: SDL.Window -> Universe -> IO () doDrawing window u - | SDL.ScancodeT `M.member` (u ^. uvWorld . input . pressedKeys) = doTestDrawing rdata u + | SDL.ScancodeY `M.member` (u ^. uvWorld . input . pressedKeys) = doTestDrawing rdata u | otherwise = doDrawing' window rdata u where rdata = u ^. preloadData . renderData diff --git a/tags b/tags index a8a12f7e2..a369a4298 100644 --- a/tags +++ b/tags @@ -114,8 +114,8 @@ BarrelHiss src/Dodge/Data/SoundOrigin.hs 33;" C BarrelType src/Dodge/Data/Creature/Misc.hs 87;" t Barreloid src/Dodge/Data/Creature/Misc.hs 83;" C BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C -BasicBulletTrajectory src/Dodge/Data/Bullet.hs 44;" C -BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" C +BasicBulletTrajectory src/Dodge/Data/Bullet.hs 43;" C +BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 50;" C BasicFlare src/Dodge/Data/Muzzle.hs 26;" C Beam src/Dodge/Data/Beam.hs 18;" t BeamCombine src/Dodge/Data/Beam.hs 47;" C @@ -126,8 +126,8 @@ BeamSimple src/Dodge/Data/Beam.hs 50;" C BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C BeltBulletAmmo src/Dodge/Data/AmmoType.hs 8;" C -BezierTrajectory src/Dodge/Data/Bullet.hs 45;" C -BezierTrajectoryType src/Dodge/Data/Bullet.hs 52;" C +BezierTrajectory src/Dodge/Data/Bullet.hs 44;" C +BezierTrajectoryType src/Dodge/Data/Bullet.hs 51;" C Biome src/Dodge/Data/Scenario.hs 71;" t BlBl src/Dodge/Data/BlBl.hs 11;" t BlConst src/Dodge/Data/BlBl.hs 13;" C @@ -152,27 +152,27 @@ BloomNoZWrite src/Picture/Data.hs 26;" C Blunt src/Dodge/Data/Damage.hs 21;" C Boosting src/Dodge/Data/Creature/Stance.hs 28;" C BottomEscapeMenuOption src/Dodge/Data/Universe.hs 77;" C -BounceBullet src/Dodge/Data/Bullet.hs 31;" C +BounceBullet src/Dodge/Data/Bullet.hs 30;" C Bound_box_screen src/Dodge/Data/Config.hs 81;" C BoundaryCursor src/Dodge/Data/SelectionList.hs 20;" C Bounds src/Dodge/Data/Bounds.hs 12;" t BrigSS src/Dodge/Data/Scenario.hs 102;" C Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C -BulBall src/Dodge/Data/Bullet.hs 36;" C -BulFlak src/Dodge/Data/Bullet.hs 38;" C -BulFrag src/Dodge/Data/Bullet.hs 39;" C -BulGas src/Dodge/Data/Bullet.hs 40;" C -BulPlain src/Dodge/Data/Bullet.hs 37;" C +BulBall src/Dodge/Data/Bullet.hs 35;" C +BulFlak src/Dodge/Data/Bullet.hs 37;" C +BulFrag src/Dodge/Data/Bullet.hs 38;" C +BulGas src/Dodge/Data/Bullet.hs 39;" C +BulPlain src/Dodge/Data/Bullet.hs 36;" C Bullet src/Dodge/Data/Bullet.hs 18;" t BulletAmmo src/Dodge/Data/AmmoType.hs 7;" C -BulletEffect src/Dodge/Data/Bullet.hs 29;" t +BulletEffect src/Dodge/Data/Bullet.hs 28;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t BulletModEffect src/Dodge/Data/Item/BulletMod.hs 12;" C BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C BulletParams src/Dodge/Data/Item/Use.hs 52;" C -BulletPayload src/Dodge/Data/Bullet.hs 35;" t -BulletTrajectory src/Dodge/Data/Bullet.hs 43;" t -BulletTrajectoryType src/Dodge/Data/Bullet.hs 50;" t +BulletPayload src/Dodge/Data/Bullet.hs 34;" t +BulletTrajectory src/Dodge/Data/Bullet.hs 42;" t +BulletTrajectoryType src/Dodge/Data/Bullet.hs 49;" t BurstTrigger src/Dodge/Data/TriggerType.hs 12;" C Button src/Dodge/Data/Button.hs 30;" t ButtonAccessTerminal src/Dodge/Data/Button.hs 28;" C @@ -340,7 +340,7 @@ DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 13;" C DefaultRoomType src/Dodge/Data/Room.hs 31;" C DefaultTerminal src/Dodge/Data/Terminal.hs 55;" C DestroyBeing src/Dodge/Data/Scenario.hs 8;" C -DestroyBullet src/Dodge/Data/Bullet.hs 30;" C +DestroyBullet src/Dodge/Data/Bullet.hs 29;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 183;" t Dirt src/Dodge/Data/Material.hs 11;" C @@ -461,8 +461,8 @@ FlashBall src/Dodge/Data/EnergyBall/Type.hs 17;" C Flashing src/Dodge/Data/Damage.hs 27;" C FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 16;" C -FlechetteTrajectory src/Dodge/Data/Bullet.hs 46;" C -FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 53;" C +FlechetteTrajectory src/Dodge/Data/Bullet.hs 45;" C +FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 52;" C Flee src/Dodge/Data/ActionPlan.hs 191;" C Flesh src/Dodge/Data/Material.hs 11;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 16;" C @@ -749,8 +749,8 @@ MagnetAttract src/Dodge/Data/Magnet.hs 19;" C MagnetBuBu src/Dodge/Data/Magnet.hs 16;" t MagnetDeflect src/Dodge/Data/Magnet.hs 18;" C MagnetRepulse src/Dodge/Data/Magnet.hs 20;" C -MagnetTrajectory src/Dodge/Data/Bullet.hs 47;" C -MagnetTrajectoryType src/Dodge/Data/Bullet.hs 54;" C +MagnetTrajectory src/Dodge/Data/Bullet.hs 46;" C +MagnetTrajectoryType src/Dodge/Data/Bullet.hs 53;" C MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C MakeAutoSF src/Dodge/Data/ComposedItem.hs 35;" C @@ -1004,7 +1004,7 @@ Pathing src/Dodge/Data/Config.hs 76;" C Patrol src/Dodge/Data/ActionPlan.hs 180;" C PausedTimeFlow src/Dodge/Data/World.hs 77;" C Payload src/Dodge/Data/Payload.hs 11;" t -PenetrateBullet src/Dodge/Data/Bullet.hs 32;" C +PenetrateBullet src/Dodge/Data/Bullet.hs 31;" C Perception src/Dodge/Data/Creature/Perception.hs 32;" t PhysicalDamage src/Dodge/Data/Damage/Type.hs 4;" C PhysicalSensor src/Dodge/Data/Machine/Sensor/Type.hs 14;" C @@ -1629,7 +1629,7 @@ _btOn src/Dodge/Data/Button.hs 26;" f _btPos src/Dodge/Data/Button.hs 31;" f _btRot src/Dodge/Data/Button.hs 32;" f _btTermMID src/Dodge/Data/Button.hs 35;" f -_buDam src/Dodge/Data/Bullet.hs 37;" f +_buDam src/Dodge/Data/Bullet.hs 36;" f _buDrag src/Dodge/Data/Bullet.hs 22;" f _buEffect src/Dodge/Data/Bullet.hs 19;" f _buOldPos src/Dodge/Data/Bullet.hs 24;" f @@ -1861,7 +1861,6 @@ _eboName src/Shader/Data.hs 89;" f _eboPtr src/Shader/Data.hs 90;" f _emoMenuOption src/Dodge/Data/Universe.hs 77;" f _energyBalls src/Dodge/Data/LWorld.hs 111;" f -_fbRot src/Dodge/Data/EnergyBall/Type.hs 14;" f _fbSize src/Dodge/Data/EnergyBall/Type.hs 14;" f _fbo2 src/Data/Preload/Render.hs 29;" f _fbo3 src/Data/Preload/Render.hs 30;" f @@ -2393,7 +2392,7 @@ _soundsToInvestigate src/Dodge/Data/Creature/Memory.hs 14;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 113;" f -_spawnEBT src/Dodge/Data/Bullet.hs 36;" f +_spawnEBT src/Dodge/Data/Bullet.hs 35;" f _ssIndent src/Dodge/Data/SelectionList.hs 34;" f _ssItems src/Dodge/Data/SelectionList.hs 30;" f _ssOffset src/Dodge/Data/SelectionList.hs 31;" f @@ -2786,7 +2785,7 @@ bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f bgunSound src/Dodge/HeldUse.hs 530;" f -bindFBO src/Render.hs 244;" f +bindFBO src/Render.hs 245;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f @@ -3257,7 +3256,7 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f destroyMount src/Dodge/Block.hs 100;" f destroyMounts src/Dodge/Block.hs 97;" f -destroyProjectile src/Dodge/Projectile/Update.hs 162;" f +destroyProjectile src/Dodge/Projectile/Update.hs 161;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 465;" f @@ -3295,7 +3294,7 @@ doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 140;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 223;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f -doBarrelSpin src/Dodge/Projectile/Update.hs 213;" f +doBarrelSpin src/Dodge/Projectile/Update.hs 215;" f doBlBl src/Dodge/BlBl.hs 5;" f doBlSh src/Dodge/Block/Draw.hs 14;" f doBounce src/Dodge/Base/Collide.hs 66;" f @@ -3322,8 +3321,8 @@ doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 48;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 56;" f doDrWdWd src/Dodge/DrWdWd.hs 16;" f doDrag src/Dodge/Update/Input/InGame.hs 107;" f -doDrawing src/Dodge/Render.hs 35;" f -doDrawing' src/Dodge/Render.hs 46;" f +doDrawing src/Dodge/Render.hs 34;" f +doDrawing' src/Dodge/Render.hs 45;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f doGenFloat src/Dodge/HeldUse.hs 1212;" f doGravityPU src/Dodge/Projectile/Update.hs 37;" f @@ -3359,10 +3358,10 @@ doSideEffects appDodge/Main.hs 120;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f doTerminalBootProgram src/Dodge/WorldEffect.hs 94;" f doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f -doTestDrawing src/Dodge/Render.hs 42;" f +doTestDrawing src/Dodge/Render.hs 41;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f -doThrust src/Dodge/Projectile/Update.hs 184;" f +doThrust src/Dodge/Projectile/Update.hs 183;" f doTimeScroll src/Dodge/Update.hs 208;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 99;" f @@ -3538,11 +3537,11 @@ dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 74;" f dustColor src/Shader/Poke/Cloud.hs 71;" f dustSpringVel src/Dodge/Update.hs 880;" f -ebColor src/Dodge/EnergyBall.hs 81;" f -ebDamage src/Dodge/EnergyBall.hs 89;" f -ebEffect src/Dodge/EnergyBall.hs 49;" f -ebFlicker src/Dodge/EnergyBall.hs 74;" f -ebtToDamage src/Dodge/EnergyBall.hs 97;" f +ebColor src/Dodge/EnergyBall.hs 78;" f +ebDamage src/Dodge/EnergyBall.hs 86;" f +ebEffect src/Dodge/EnergyBall.hs 46;" f +ebFlicker src/Dodge/EnergyBall.hs 71;" f +ebtToDamage src/Dodge/EnergyBall.hs 94;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f edgeToPic src/Dodge/Debug/Picture.hs 436;" f effectOnEquip src/Dodge/Equipment.hs 32;" f @@ -3591,7 +3590,7 @@ 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 -explodeShell src/Dodge/Projectile/Update.hs 283;" f +explodeShell src/Dodge/Projectile/Update.hs 285;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -3727,7 +3726,7 @@ getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDamageCoding src/Dodge/Terminal.hs 177;" f -getDistortions src/Dodge/Render.hs 424;" f +getDistortions src/Dodge/Render.hs 435;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1324;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f @@ -4209,7 +4208,7 @@ 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 64;" f +makeMovingEB src/Dodge/EnergyBall.hs 61;" f makeMuzzleFlare src/Dodge/HeldUse.hs 664;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f @@ -4339,10 +4338,10 @@ moveCombineSel src/Dodge/Update/Scroll.hs 114;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f movePenBullet src/Dodge/Bullet.hs 199;" f -moveProjectile src/Dodge/Projectile/Update.hs 261;" f +moveProjectile src/Dodge/Projectile/Update.hs 263;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f -moveStuckGrenade src/Dodge/Projectile/Update.hs 247;" f +moveStuckGrenade src/Dodge/Projectile/Update.hs 249;" f moveToSideFirstOutLink src/Dodge/Room/Warning.hs 55;" f moveWall src/Dodge/Wall/Move.hs 29;" f moveWallID src/Dodge/Wall/Move.hs 24;" f @@ -4501,12 +4500,12 @@ pincerP src/Dodge/Creature/Boid.hs 61;" f pincerP' src/Dodge/Creature/Boid.hs 94;" f pincerP'' src/Dodge/Creature/Boid.hs 104;" f pincerP''' src/Dodge/Creature/Boid.hs 75;" f -pingPongBetween src/Render.hs 220;" f +pingPongBetween src/Render.hs 221;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 12;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 226;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 228;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f @@ -4794,7 +4793,7 @@ renderDataResizeUpdate src/Preload/Update.hs 26;" f renderFlatLighting src/Render.hs 104;" f renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f -renderLayer src/Render.hs 233;" f +renderLayer src/Render.hs 234;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 192;" f renderShadows src/Render.hs 117;" f @@ -5007,7 +5006,7 @@ setTiles src/Dodge/Layout.hs 65;" f setToggle src/Dodge/Prop/Update.hs 44;" f setViewDistance src/Dodge/Update/Camera.hs 229;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 63;" f -setViewport src/Dodge/Render.hs 429;" f +setViewport src/Dodge/Render.hs 440;" f setVol src/Dodge/Config/Update.hs 30;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Euse.hs 35;" f @@ -5037,10 +5036,10 @@ shapeVerxSize src/Shape/Parameters.hs 10;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 324;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f -shellExplosionCheck src/Dodge/Projectile/Update.hs 55;" f -shellHitCreature src/Dodge/Projectile/Update.hs 87;" f -shellHitFloor src/Dodge/Projectile/Update.hs 102;" f -shellHitWall src/Dodge/Projectile/Update.hs 66;" f +shellExplosionCheck src/Dodge/Projectile/Update.hs 57;" f +shellHitCreature src/Dodge/Projectile/Update.hs 85;" f +shellHitFloor src/Dodge/Projectile/Update.hs 101;" f +shellHitWall src/Dodge/Projectile/Update.hs 68;" f shellMag src/Dodge/Item/Ammo.hs 49;" f shellModule src/Dodge/Item/Scope.hs 123;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f @@ -5093,9 +5092,9 @@ showEquipItem src/Dodge/Item/Display.hs 107;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 65;" f +showManObj src/Dodge/TestString.hs 67;" f showTerminalError src/Dodge/Debug/Terminal.hs 78;" f -showTimeFlow src/Dodge/TestString.hs 88;" f +showTimeFlow src/Dodge/TestString.hs 90;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 142;" f shrinkVert src/Geometry/Polygon.hs 146;" f shuffle src/RandomHelp.hs 49;" f @@ -5361,7 +5360,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" f topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 61;" f +topTestPart src/Dodge/TestString.hs 63;" f torch src/Dodge/Item/Held/Utility.hs 23;" f torchShape src/Dodge/Item/Draw/SPic.hs 290;" f torqueAmount src/Dodge/HeldUse.hs 597;" f @@ -5438,9 +5437,9 @@ tryPutFloorItemIDInInv src/Dodge/Inventory/Add.hs 26;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 42;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f -trySpin src/Dodge/Projectile/Update.hs 172;" f +trySpin src/Dodge/Projectile/Update.hs 171;" f trySynthBullet src/Dodge/Creature/State.hs 249;" f -tryThrust src/Dodge/Projectile/Update.hs 178;" f +tryThrust src/Dodge/Projectile/Update.hs 177;" f tryUseParent src/Dodge/Creature/State.hs 227;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f @@ -5505,7 +5504,7 @@ updateDistortions src/Dodge/Update.hs 587;" f updateDoor src/Dodge/Update.hs 326;" f updateDust src/Dodge/Update.hs 850;" f updateDusts src/Dodge/Update.hs 701;" f -updateEnergyBall src/Dodge/EnergyBall.hs 35;" f +updateEnergyBall src/Dodge/EnergyBall.hs 32;" f updateEnergyBalls src/Dodge/Update.hs 689;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f updateExpBarrel src/Dodge/Barreloid.hs 20;" f