From ce2f13ade300d4ade1d65a93f6bca1ddc2bab584 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 3 Oct 2024 11:39:12 +0100 Subject: [PATCH] Cleanup/remove trigger types code --- ghcidOutput | 3 +- src/Dodge/ChainEffect.hs | 9 -- src/Dodge/Creature/State.hs | 2 +- src/Dodge/Debug/Terminal.hs | 3 +- src/Dodge/HeldUse.hs | 9 ++ src/Dodge/Inventory.hs | 4 +- src/Dodge/Item/Weapon/TriggerType.hs | 199 ++++++-------------------- tags | 203 +++++++++++++-------------- 8 files changed, 157 insertions(+), 275 deletions(-) delete mode 100644 src/Dodge/ChainEffect.hs diff --git a/ghcidOutput b/ghcidOutput index b1aa0ee03..0ad20713a 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1,2 @@ -All good (602 modules, at 11:19:44) +: error: + module ‘Dodge.ChainEffect’ cannot be found locally diff --git a/src/Dodge/ChainEffect.hs b/src/Dodge/ChainEffect.hs deleted file mode 100644 index 8866c29b3..000000000 --- a/src/Dodge/ChainEffect.hs +++ /dev/null @@ -1,9 +0,0 @@ -module Dodge.ChainEffect where -import Dodge.Data.World - -type ChainEffect = - (Item -> Creature -> World -> World) - -> Item - -> Creature - -> World - -> World diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index f92eb130d..61bc1efba 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -114,7 +114,7 @@ internalCreatureUpdate cr = TODO make sure this doesn't mess up any ItemPosition -} dropByState :: Creature -> World -> World -dropByState cr w = foldr (dropItem cr) w $ case cr ^. crState . csDropsOnDeath of +dropByState cr w = foldl' (flip (dropItem cr)) w $ case cr ^. crState . csDropsOnDeath of DropAll -> IM.keys $ _crInv cr DropSpecific xs -> xs DropAmount n -> take n $ evalState (shuffle $ IM.keys $ _crInv cr) (_randGen w) diff --git a/src/Dodge/Debug/Terminal.hs b/src/Dodge/Debug/Terminal.hs index caacea9c2..7b93d5f5c 100644 --- a/src/Dodge/Debug/Terminal.hs +++ b/src/Dodge/Debug/Terminal.hs @@ -2,6 +2,7 @@ module Dodge.Debug.Terminal where +import Data.Foldable import Dodge.Item.Location.Initialize import Control.Applicative import Control.Lens @@ -40,7 +41,7 @@ applyTerminalCommandArguments :: String -> [String] -> Universe -> Universe applyTerminalCommandArguments command args u = case command of "IT" -> fromMaybe u $ do (ibt, n) <- parseItem args - return $ u & uvWorld %~ flip (foldr ($)) (replicate n (snd . createItemYou (itemFromBase ibt))) + return $ u & uvWorld %~ flip (foldl' (&)) (replicate n (snd . createItemYou (itemFromBase ibt))) "DEX" -> fromMaybe u $ do x <- readMaybe =<< args ^? _head return $ u & ypoint . crStatistics . dexterity .~ x diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 5b223e85c..0145abc6b 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -5,6 +5,7 @@ module Dodge.HeldUse ( mcUseHeld, ) where +import Dodge.ChainEffect import Color import Data.Maybe import Dodge.Base.Collide @@ -33,6 +34,14 @@ import qualified SDL heldEffect :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World heldEffect = hammerCheck $ useTimeCheck heldEffectMuzzles +hammerCheck :: ChainEffect +hammerCheck f it cr w = case it ^? ldtValue . itUse . heldTriggerType of + Just HammerTrigger -> case w ^? input . mouseButtons . ix SDL.ButtonLeft of + Just 0 -> f it cr w + _ -> w + _ -> f it cr w + + heldEffectMuzzles :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World heldEffectMuzzles t cr w = uncurry (applyCME (_ldtValue t) cr) cmew diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index 7abcf9232..445e693b0 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -141,8 +141,8 @@ updateCloseObjects w = changeSwapSel :: Int -> World -> World changeSwapSel yi w | yi == 0 = w - | yi > 0 = foldr ($) w $ replicate yi (changeSwapWith $ f IM.cycleLT) - | otherwise = foldr ($) w $ replicate (negate yi) (changeSwapWith $ f IM.cycleGT) + | yi > 0 = foldl' (&) w $ replicate yi (changeSwapWith $ f IM.cycleLT) + | otherwise = foldl' (&) w $ replicate (negate yi) (changeSwapWith $ f IM.cycleGT) where f g i m = fst <$> g i m diff --git a/src/Dodge/Item/Weapon/TriggerType.hs b/src/Dodge/Item/Weapon/TriggerType.hs index eb3e787f9..6b97ad901 100644 --- a/src/Dodge/Item/Weapon/TriggerType.hs +++ b/src/Dodge/Item/Weapon/TriggerType.hs @@ -5,40 +5,36 @@ Weapon effects when pulling the trigger. -} module Dodge.Item.Weapon.TriggerType ( lockInvFor, - withFlare, - withMuzFlare, - withCrPos, - withCrPosShift, - withOldDir, - trigDoAlso, - withTempLight, - withItem, - withSoundStart, - withSoundItemChoiceStart, - withSoundContinue, - withSoundForI, - withSoundForVol, - withSmoke, - withThickSmokeI, - withThinSmokeI, - withPositionOffset, - withPositionWallCheck, - withPosDirWallCheck, +-- withCrPos, +-- withCrPosShift, +-- withOldDir, +-- trigDoAlso, +-- withTempLight, +-- withItem, +-- withSoundStart, +-- withSoundItemChoiceStart, +-- withSoundContinue, +-- withSoundForI, +-- withSoundForVol, +-- withSmoke, +-- withThickSmokeI, +-- withThinSmokeI, +-- withPositionOffset, +-- withPositionWallCheck, +-- withPosDirWallCheck, --withWarmUp, hammerCheckL, - hammerCheck, shootL, useTimeCheck, -- ammoCheckI, - modClock, - blCheck, - repeatTransformed, +-- modClock, +-- blCheck, + ChainEffect, ) where import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Dodge.Creature.HandPos -import Data.Foldable import Data.Maybe import Dodge.Base --import Dodge.Creature.Test @@ -50,9 +46,7 @@ import Dodge.WorldEvent import Geometry --import qualified IntMapHelp as IM import LensHelp -import RandomHelp import qualified SDL -import Sound.Data type ChainEffect = (LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World) -> @@ -66,52 +60,32 @@ lockInvFor i f it cr = f it cr . (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv (_crID cr))) . lockInv (_crID cr) -repeatTransformed :: - [(Item -> Item,Creature -> Creature)] -> - ChainEffect -repeatTransformed xs f itm cr w = foldr g w xs - where - g (fit,fcr) = f (over ldtValue fit itm) (fcr cr) - -trigDoAlso :: - (Item -> Item) -> - (Creature -> Creature) -> - (Item -> Creature -> World -> World) -> - ChainEffect -trigDoAlso fit fcr f g itm cr = g itm cr . f (fit $ itm ^. ldtValue) (fcr cr) - --- Note that this uses the "base" creature and item values ---trigDoAlso :: --- (Item -> Creature -> World -> World) -> --- ChainEffect ---trigDoAlso afterEff eff item cr = afterEff item cr . eff item cr - -withSmoke :: Int -> Point4 -> Float -> Int -> Float -> ChainEffect -withSmoke num col rad t alt eff item cr w = - eff item cr $ - foldl' (flip $ smokeCloudAt col rad t alt . (+.+.+ pos) . (* 8)) w ps - where - dir = _crDir cr - pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 15) *.* unitVectorAtAngle dir - ps = replicateM num randOnUnitSphere & evalState $ _randGen w - -withThinSmokeI :: ChainEffect -withThinSmokeI eff item cr w = - eff item cr $ - foldl' (flip $ makeThinSmokeAt . (+.+.+ pos) . (* 8)) w ps - where - dir = _crDir cr - pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 0.5) *.* unitVectorAtAngle dir - ps = replicateM 5 randOnUnitSphere & evalState $ _randGen w - -withThickSmokeI :: ChainEffect -withThickSmokeI eff item cr w = - eff item cr $ - foldl' (flip $ makeThickSmokeAt . (+.+.+ pos) . (* 8)) w ps - where - dir = _crDir cr - pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 15) *.* unitVectorAtAngle dir - ps = replicateM 20 randOnUnitSphere & evalState $ _randGen w +--withSmoke :: Int -> Point4 -> Float -> Int -> Float -> ChainEffect +--withSmoke num col rad t alt eff item cr w = +-- eff item cr $ +-- foldl' (flip $ smokeCloudAt col rad t alt . (+.+.+ pos) . (* 8)) w ps +-- where +-- dir = _crDir cr +-- pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 15) *.* unitVectorAtAngle dir +-- ps = replicateM num randOnUnitSphere & evalState $ _randGen w +-- +--withThinSmokeI :: ChainEffect +--withThinSmokeI eff item cr w = +-- eff item cr $ +-- foldl' (flip $ makeThinSmokeAt . (+.+.+ pos) . (* 8)) w ps +-- where +-- dir = _crDir cr +-- pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 0.5) *.* unitVectorAtAngle dir +-- ps = replicateM 5 randOnUnitSphere & evalState $ _randGen w +-- +--withThickSmokeI :: ChainEffect +--withThickSmokeI eff item cr w = +-- eff item cr $ +-- foldl' (flip $ makeThickSmokeAt . (+.+.+ pos) . (* 8)) w ps +-- where +-- dir = _crDir cr +-- pos = addZ 0 $ _crPos cr +.+ (_crRad cr + 15) *.* unitVectorAtAngle dir +-- ps = replicateM 20 randOnUnitSphere & evalState $ _randGen w -- TODO create a trigger that does different things on first and continued -- fire. @@ -173,73 +147,6 @@ itUseCharge x = itUse . leftConsumption . arLoaded %~ (max 0 . subtract x) -- repeatFire = crWeaponReady cr && _rateTime (_heldDelay (_itUse item')) == 1 -- firstFire = crWeaponReady cr && _rateTime (_heldDelay (_itUse item')) == 0 -withSoundItemChoiceStart :: - (Item -> SoundID) -> - ChainEffect -withSoundItemChoiceStart soundf f it cr = - soundMultiFrom - [CrWeaponSound cid 0, CrWeaponSound cid 1, CrWeaponSound cid 2] - (_crPos cr) - (soundf $ _ldtValue it) - Nothing - . f it cr - where - cid = _crID cr - -{- | Adds a sound to a creature based world effect. -The sound is emitted from the creature's position. --} -withSoundStart :: - -- | Sound id - SoundID -> - ChainEffect -withSoundStart soundid f item cr = - soundMultiFrom [CrWeaponSound cid j | j <- [0..3]] (_crPos cr) soundid Nothing - . f item cr - where - cid = _crID cr - -{- | Adds a sound to a creature based world effect. -The sound is emitted from the creature's position. --} -withSoundContinue :: - -- | Sound id - SoundID -> - ChainEffect -withSoundContinue soundid f item cr = - soundContinue (CrWeaponSound cid 0) (_crPos cr) soundid Nothing - . f item cr - where - cid = _crID cr - -{- | Adds a sound to a creature based world effect. -The sound is emitted from the creature's position. --} -withSoundForI :: - -- | Sound id - SoundID -> - -- | Frames to play - Int -> - ChainEffect -withSoundForI soundid playTime f item cr = - soundContinue (CrWeaponSound (_crID cr) 0) (_crPos cr) soundid (Just playTime) - . f item cr - -{- | Adds a sound to a creature based world effect. -The sound is emitted from the creature's position. --} -withSoundForVol :: - -- | volume - Float -> - -- | Sound id - SoundID -> - -- | Frames to play - Int -> - ChainEffect -withSoundForVol vol soundid playTime f item cr = - soundContinueVol vol (CrWeaponSound (_crID cr) 0) (_crPos cr) soundid (Just playTime) - . f item cr - {- | Applies a world effect after an item use cooldown check. -} @@ -264,20 +171,6 @@ useTimeCheck f item cr w = case item ^? ldtValue . itUse . heldDelay of itRef = item ^?! ldtValue . itLocation . ilInvID userate = fromMaybe 0 $ item ^? ldtValue . itUse . heldDelay . rateMax --- | Applies a world effect after a hammer position check. -blCheck :: ChainEffect -blCheck f it cr w = case w ^? input . mouseButtons . ix SDL.ButtonLeft of - Just 0 -> f it cr w - _ -> w - -hammerCheck :: ChainEffect -hammerCheck f it cr w = case it ^? ldtValue . itUse . heldTriggerType of - Just HammerTrigger -> case w ^? input . mouseButtons . ix SDL.ButtonLeft of - Just 0 -> f it cr w - _ -> w - _ -> f it cr w - - {- | Applies a world effect after a hammer position check. Arbitrary inventory position. -} diff --git a/tags b/tags index 0cee2d811..4497205d7 100644 --- a/tags +++ b/tags @@ -278,8 +278,7 @@ CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m CardinalPoint src/Dodge/Data/CardinalPoint.hs 1;" m Carriage src/Dodge/Data/Creature/Stance.hs 20;" t Carte src/Dodge/Render/HUD/Carte.hs 1;" m -ChainEffect src/Dodge/ChainEffect.hs 4;" t -ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 57;" t +ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 50;" t ChainEffect src/Dodge/ChainEffect.hs 1;" m ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C @@ -2476,7 +2475,6 @@ _emoMenuOption src/Dodge/Data/Universe.hs 73;" f _energyBalls src/Dodge/Data/LWorld.hs 109;" f _eparamID src/Dodge/Data/Item/Use/Equipment.hs 30;" f _eparamInt src/Dodge/Data/Item/Use/Equipment.hs 31;" f -_equipEffect src/Dodge/Data/Item/Use.hs 49;" f _euseAmmoAmount src/Dodge/Data/Item/HeldUse.hs 41;" f _euseAmmoLink src/Dodge/Data/Item/HeldUse.hs 43;" f _euseAmmoMax src/Dodge/Data/Item/HeldUse.hs 42;" f @@ -3153,6 +3151,7 @@ _tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f _tuWeapon src/Dodge/Data/Machine.hs 58;" f _turnToPoint src/Dodge/Data/ActionPlan.hs 92;" f _uaParams src/Dodge/Data/Item/Use.hs 55;" f +_uequipEffect src/Dodge/Data/Item/Use.hs 49;" f _uequipEffect src/Dodge/Data/Item/Use.hs 53;" f _unCombEdge src/Dodge/Combine/Graph.hs 28;" f _unCombNode src/Dodge/Combine/Graph.hs 21;" f @@ -3267,7 +3266,7 @@ aStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 41;" f aTeslaArcAt src/Dodge/Tesla/Arc.hs 20;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 37;" f accessTerminal src/Dodge/WorldEffect.hs 54;" f -activeTargetCursorPic src/Dodge/Targeting/Draw.hs 27;" f +activeTargetCursorPic src/Dodge/Targeting/Draw.hs 24;" f addArmour src/Dodge/Creature.hs 83;" f addBoostShockwave src/Dodge/Luse.hs 119;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 17;" f @@ -3341,31 +3340,31 @@ annoToRoomTree src/Dodge/Annotation.hs 17;" f anyTargeting src/Dodge/Render/ShapePicture.hs 78;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 242;" f -applyCME src/Dodge/HeldUse.hs 56;" f +applyCME src/Dodge/HeldUse.hs 65;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f -applyInvLock src/Dodge/HeldUse.hs 66;" f +applyInvLock src/Dodge/HeldUse.hs 75;" f applyMagnetsToBul src/Dodge/Bullet.hs 46;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f applyPastDamages src/Dodge/Creature/State.hs 128;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 85;" f +applyRecoil src/Dodge/HeldUse.hs 94;" f applyResFactor src/Dodge/Data/Config.hs 108;" f -applySetTerminalString src/Dodge/Debug/Terminal.hs 78;" f -applySidePush src/Dodge/HeldUse.hs 92;" f -applySoundCME src/Dodge/HeldUse.hs 76;" f -applyTerminalCommand src/Dodge/Debug/Terminal.hs 27;" f -applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 39;" f -applyTerminalString src/Dodge/Debug/Terminal.hs 21;" f +applySetTerminalString src/Dodge/Debug/Terminal.hs 79;" f +applySidePush src/Dodge/HeldUse.hs 101;" f +applySoundCME src/Dodge/HeldUse.hs 85;" f +applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f +applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 40;" f +applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 103;" f +applyTorqueCME src/Dodge/HeldUse.hs 112;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arc src/Picture/Base.hs 287;" f @@ -3403,7 +3402,7 @@ augmentedHUD src/Dodge/Item/Scope.hs 46;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 350;" f autoCrit src/Dodge/Creature/AutoCrit.hs 13;" f -autoDetector src/Dodge/Item/Weapon/Radar.hs 8;" f +autoDetector src/Dodge/Item/Weapon/Radar.hs 11;" f autoEffect src/Dodge/Item/Weapon/ExtraEffect.hs 18;" f autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 496;" f autoPistol src/Dodge/Item/Held/Stick.hs 51;" f @@ -3448,7 +3447,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 48;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 166;" f +basicMuzFlare src/Dodge/HeldUse.hs 175;" f basicTerminal src/Dodge/Terminal.hs 32;" f battery src/Dodge/Item/Ammo.hs 74;" f batteryPack src/Dodge/Item/Equipment.hs 56;" f @@ -3457,7 +3456,6 @@ beltMag src/Dodge/Item/Ammo.hs 42;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 216;" f bindFBO src/Render.hs 244;" f -blCheck src/Dodge/Item/Weapon/TriggerType.hs 268;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f @@ -3499,7 +3497,7 @@ boxSurfaces src/Shader/Poke.hs 269;" f boxSurfacesIndices src/Shader/Poke.hs 282;" f boxXYZ src/Polyhedra.hs 93;" f boxXYZnobase src/Polyhedra.hs 79;" f -brainHat src/Dodge/Item/Equipment.hs 90;" f +brainHat src/Dodge/Item/Equipment.hs 88;" f branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 69;" f bright src/Color.hs 116;" f @@ -3508,7 +3506,7 @@ btSPic src/Dodge/Render/ShapePicture.hs 175;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f -bulletBeltBracer src/Dodge/Item/Equipment.hs 81;" f +bulletBeltBracer src/Dodge/Item/Equipment.hs 80;" f bulletBeltPack src/Dodge/Item/Equipment.hs 72;" f bulletCombinations src/Dodge/Combine/Graph.hs 34;" f bulletModule src/Dodge/Item/Scope.hs 34;" f @@ -3535,10 +3533,10 @@ centroidNum src/Geometry/Polygon.hs 116;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainLinkOrientation src/Dodge/Creature/State.hs 183;" f chainPairs src/Geometry.hs 363;" f -changeSwapClose src/Dodge/Inventory.hs 230;" f -changeSwapInv src/Dodge/Inventory.hs 246;" f -changeSwapSel src/Dodge/Inventory.hs 222;" f -changeSwapWith src/Dodge/Inventory.hs 281;" f +changeSwapClose src/Dodge/Inventory.hs 149;" f +changeSwapInv src/Dodge/Inventory.hs 165;" f +changeSwapSel src/Dodge/Inventory.hs 141;" f +changeSwapWith src/Dodge/Inventory.hs 200;" f charToTuple src/Picture/Base.hs 317;" f charToTupleGrad src/Picture/Text.hs 18;" f chargeIfEquipped src/Dodge/ItEffect.hs 54;" f @@ -3641,7 +3639,7 @@ combineTree src/Dodge/Tree/Compose.hs 66;" f commandColor src/Dodge/Terminal.hs 130;" f commandFutureLines src/Dodge/Terminal.hs 252;" f commandsCommand src/Dodge/Terminal.hs 91;" f -commonPrefix src/Dodge/Debug/Terminal.hs 142;" f +commonPrefix src/Dodge/Debug/Terminal.hs 143;" f compactDraw src/Dodge/LevelGen.hs 91;" f compactDraw' src/Dodge/LevelGen.hs 102;" f compactDrawTree src/Dodge/LevelGen.hs 85;" f @@ -3710,7 +3708,7 @@ createItemYou src/Dodge/Inventory/Add.hs 77;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 76;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 457;" f +createProjectile src/Dodge/HeldUse.hs 466;" f createShell src/Dodge/Projectile/Create.hs 19;" f createShieldWall src/Dodge/Euse.hs 134;" f createTorchLightOffset src/Dodge/LightSource/Torch.hs 11;" f @@ -3915,7 +3913,7 @@ denormalEdges src/Polyhedra.hs 135;" f destroyAt src/Dodge/Bullet.hs 201;" f destroyBlock src/Dodge/Block.hs 51;" f destroyDoor src/Dodge/Block.hs 79;" f -destroyInvItem src/Dodge/Inventory.hs 41;" f +destroyInvItem src/Dodge/Inventory.hs 40;" f destroyLS src/Dodge/LightSource.hs 91;" f destroyLSFlashAt src/Dodge/LightSource.hs 101;" f destroyMachine src/Dodge/Machine/Destroy.hs 12;" f @@ -3926,10 +3924,10 @@ destroyMounts src/Dodge/Block.hs 95;" f destroyProjectile src/Dodge/Projectile/Update.hs 62;" f detV src/Geometry/Vector.hs 93;" f detectorColor src/Dodge/Item/Draw/SPic.hs 402;" f -detectorEffect src/Dodge/Item/Weapon/Radar.hs 19;" f +detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 194;" f determineInvSelCursorWidth src/Dodge/ListDisplayParams.hs 54;" f -determineProjectileTracking src/Dodge/HeldUse.hs 446;" f +determineProjectileTracking src/Dodge/HeldUse.hs 455;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f diffAngles src/Geometry.hs 196;" f difference src/Geometry.hs 130;" f @@ -3979,7 +3977,7 @@ doDrWdWd src/Dodge/DrWdWd.hs 16;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 402;" f +doGenFloat src/Dodge/HeldUse.hs 411;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 25;" f @@ -4028,7 +4026,7 @@ doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f doWdP2f src/Dodge/WdP2f.hs 8;" f doWdWd src/Dodge/WorldEffect.hs 26;" f -doWeaponRepetitions src/Dodge/HeldUse.hs 47;" f +doWeaponRepetitions src/Dodge/HeldUse.hs 56;" f doWorldEvents src/Dodge/Update.hs 309;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f @@ -4128,7 +4126,7 @@ drawSweep src/Dodge/Render/ShapePicture.hs 57;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f -drawTargeting src/Dodge/Targeting/Draw.hs 16;" f +drawTargeting src/Dodge/Targeting/Draw.hs 13;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawText src/Picture/Base.hs 220;" f drawTitle src/Dodge/Render/MenuScreen.hs 48;" f @@ -4313,7 +4311,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 131;" f gameplayMenuOptions src/Dodge/Menu.hs 134;" f -gasCreate src/Dodge/HeldUse.hs 399;" f +gasCreate src/Dodge/HeldUse.hs 408;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4328,8 +4326,8 @@ getAmmoLinks src/Dodge/Item/Grammar.hs 60;" f getArguments src/Dodge/Update/Scroll.hs 151;" f getArguments' src/Dodge/Update/Scroll.hs 139;" f getAvailableListLines src/Dodge/SelectionList.hs 11;" f -getBulletTrajectory src/Dodge/HeldUse.hs 308;" f -getBulletType src/Dodge/HeldUse.hs 282;" f +getBulletTrajectory src/Dodge/HeldUse.hs 317;" f +getBulletType src/Dodge/HeldUse.hs 291;" f getCommands src/Dodge/Terminal.hs 115;" f getCommandsHelp src/Dodge/Terminal.hs 73;" f getCrDexterity src/Dodge/Creature/Statistics.hs 13;" f @@ -4340,9 +4338,9 @@ getDistortions src/Dodge/Render.hs 382;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getItem src/Dodge/Item/Location.hs 15;" f getLDPWidth src/Dodge/Render/List.hs 70;" f -getLaserColor src/Dodge/HeldUse.hs 163;" f -getLaserDamage src/Dodge/HeldUse.hs 160;" f -getLaserPhaseV src/Dodge/HeldUse.hs 157;" f +getLaserColor src/Dodge/HeldUse.hs 172;" f +getLaserDamage src/Dodge/HeldUse.hs 169;" f +getLaserPhaseV src/Dodge/HeldUse.hs 166;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f @@ -4350,7 +4348,7 @@ getPrettyShort src/AesonHelp.hs 10;" f getSensor src/Dodge/Terminal.hs 187;" f getShownItems src/Dodge/SelectionList.hs 21;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f -getSplitString src/Dodge/Debug/Terminal.hs 122;" f +getSplitString src/Dodge/Debug/Terminal.hs 123;" f getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f @@ -4402,8 +4400,8 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 37;" f -hammerCheck src/Dodge/Item/Weapon/TriggerType.hs 273;" f -hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 284;" f +hammerCheck src/Dodge/HeldUse.hs 37;" f +hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 176;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 41;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -4418,9 +4416,9 @@ hasButtonLOS src/Dodge/Base/Collide.hs 207;" f hasFrontArmour src/Dodge/Creature/Test.hs 112;" f hasLOS src/Dodge/Base/Collide.hs 200;" f hasLOSIndirect src/Dodge/Base/Collide.hs 214;" f -hat src/Dodge/Item/Equipment.hs 96;" f +hat src/Dodge/Item/Equipment.hs 94;" f head src/DoubleStack.hs 14;" f -headLamp src/Dodge/Item/Equipment.hs 109;" f +headLamp src/Dodge/Item/Equipment.hs 100;" f headLampShape src/Dodge/Item/Draw/SPic.hs 392;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f @@ -4430,8 +4428,8 @@ healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f healthTest src/Dodge/Room/LasTurret.hs 93;" f heavyBulDams src/Dodge/Item/Weapon/Bullet.hs 38;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f -heldEffect src/Dodge/HeldUse.hs 33;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 36;" f +heldEffect src/Dodge/HeldUse.hs 34;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 45;" f heldInfo src/Dodge/Item/Info.hs 48;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 66;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 28;" f @@ -4542,7 +4540,7 @@ invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 160;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f invTrees src/Dodge/Item/Grammar.hs 164;" f -invTrees' src/Dodge/Item/Grammar.hs 173;" f +invTrees' src/Dodge/Item/Grammar.hs 168;" f inventoryExtra src/Dodge/Render/HUD.hs 184;" f inventoryExtraH src/Dodge/Render/HUD.hs 195;" f inventoryX src/Dodge/Creature.hs 115;" f @@ -4553,7 +4551,7 @@ invertIntMap src/Multiset.hs 61;" f invertInventoryToMap src/Dodge/Combine.hs 53;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 174;" f +isAmmoIntLink src/Dodge/HeldUse.hs 183;" f isAnimate src/Dodge/Creature/Test.hs 138;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isElectrical src/Dodge/Data/Damage.hs 42;" f @@ -4572,17 +4570,17 @@ isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f isUnusedLnkType src/Dodge/PlacementSpot.hs 186;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 172;" f -isValidCommand src/Dodge/Debug/Terminal.hs 127;" f +isValidCommand src/Dodge/Debug/Terminal.hs 128;" f isVowel src/StringHelp.hs 8;" f isWalkable src/Dodge/Base/Collide.hs 221;" f isoMatrix src/MatrixHelper.hs 30;" f isotriBWH src/Geometry/Polygon.hs 25;" f -itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 131;" f +itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 104;" f itemBaseName src/Dodge/Item/Display.hs 60;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 54;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 54;" f -itemDetectorEffect src/Dodge/HeldUse.hs 199;" f +itemDetectorEffect src/Dodge/HeldUse.hs 208;" f itemDisplay src/Dodge/Item/Display.hs 31;" f itemDisplayPad src/Dodge/Item/Display.hs 43;" f itemEquipPict src/Dodge/Item/Draw.hs 19;" f @@ -4621,7 +4619,7 @@ jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f jsps0 src/Dodge/LevelGen/PlacementHelper.hs 39;" f jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f -jumpLegs src/Dodge/Item/Equipment.hs 125;" f +jumpLegs src/Dodge/Item/Equipment.hs 116;" f justify src/Justify.hs 9;" f k src/ShortShow.hs 34;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f @@ -4642,7 +4640,7 @@ lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGun src/Dodge/Item/Held/BatteryGuns.hs 40;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 358;" f -lasRayAt src/Dodge/HeldUse.hs 266;" f +lasRayAt src/Dodge/HeldUse.hs 275;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f lasTunnel src/Dodge/Room/LasTurret.hs 124;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f @@ -4703,15 +4701,15 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 255;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f -loadMuzzle src/Dodge/HeldUse.hs 120;" f +loadMuzzle src/Dodge/HeldUse.hs 129;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f loadSounds src/Dodge/SoundLogic/LoadSound.hs 16;" f loadingScreen src/Dodge/Menu/Loading.hs 7;" f -loadme src/Dodge/Debug/Terminal.hs 135;" f +loadme src/Dodge/Debug/Terminal.hs 136;" f lockInv src/Dodge/Inventory/Lock.hs 6;" f -lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 64;" f +lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 57;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 14;" f lockedStart src/Dodge/Room/RunPast.hs 34;" f @@ -4720,7 +4718,7 @@ longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f longCrit src/Dodge/Creature.hs 69;" f longRoom src/Dodge/Room/LongRoom.hs 21;" f longRoomRunPast src/Dodge/Room/LongRoom.hs 47;" f -longestCommonPrefix src/Dodge/Debug/Terminal.hs 138;" f +longestCommonPrefix src/Dodge/Debug/Terminal.hs 139;" f lookupTrie src/SimpleTrie.hs 28;" f loopPairs src/ListHelp.hs 30;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f @@ -4752,7 +4750,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 51;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 340;" f +makeBullet src/Dodge/HeldUse.hs 349;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4778,7 +4776,7 @@ makeFragBullets src/Dodge/Bullet.hs 116;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 33;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 136;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 145;" f makeOptionsSelectionList src/Dodge/Menu/Option.hs 46;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f @@ -4836,10 +4834,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 104;" f mcSPic src/Dodge/Render/ShapePicture.hs 180;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 69;" f mcSensorUpdate src/Dodge/Machine/Update.hs 99;" f -mcShootLaser src/Dodge/HeldUse.hs 426;" f +mcShootLaser src/Dodge/HeldUse.hs 435;" f mcTriggerVal src/Dodge/Machine/Update.hs 75;" f mcTypeUpdate src/Dodge/Machine/Update.hs 24;" f -mcUseHeld src/Dodge/HeldUse.hs 365;" f +mcUseHeld src/Dodge/HeldUse.hs 374;" f mcUseItem src/Dodge/Machine/Update.hs 61;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 69;" f @@ -4905,7 +4903,7 @@ mntLSLampCol src/Dodge/Placement/Instance/LightSource.hs 130;" f mntLSOn src/Dodge/Placement/Instance/LightSource.hs 55;" f mntLight src/Dodge/Placement/Instance/LightSource.hs 154;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 159;" f -modClock src/Dodge/Item/Weapon/TriggerType.hs 343;" f +modClock src/Dodge/Item/Weapon/TriggerType.hs 235;" f modTo src/Geometry/Zone.hs 10;" f mouseActionsCr src/Dodge/Creature/YourControl.hs 153;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 58;" f @@ -5045,8 +5043,8 @@ pairsToGraph src/Dodge/Path.hs 110;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f -parseItem src/Dodge/Debug/Terminal.hs 57;" f -parseNum src/Dodge/Debug/Terminal.hs 72;" f +parseItem src/Dodge/Debug/Terminal.hs 58;" f +parseNum src/Dodge/Debug/Terminal.hs 73;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f @@ -5201,7 +5199,7 @@ postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f postWorldLoad src/Dodge/WorldLoad.hs 14;" f powerFakeout src/Dodge/Room/Start.hs 37;" f powerFakeout' src/Dodge/Room/Start.hs 34;" f -powerLegs src/Dodge/Item/Equipment.hs 116;" f +powerLegs src/Dodge/Item/Equipment.hs 107;" f powlist src/Multiset.hs 55;" f powlistUpToN src/Multiset.hs 20;" f powlistUpToN' src/Multiset.hs 9;" f @@ -5344,7 +5342,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 426;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteScreen src/Dodge/Item/Scope.hs 49;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 276;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 285;" f removeDot src/ShortShow.hs 30;" f removeHotkey src/Dodge/Hotkey.hs 41;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -5358,7 +5356,6 @@ renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 160;" f renderShadows src/Render.hs 117;" f -repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 69;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 13;" f @@ -5394,10 +5391,9 @@ rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f rmInLinks src/Dodge/RoomLink.hs 138;" f -rmInvItem src/Dodge/Inventory.hs 54;" f +rmInvItem src/Dodge/Inventory.hs 53;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f rmOutLinks src/Dodge/RoomLink.hs 138;" f -rmSelectedInvItem src/Dodge/Inventory.hs 187;" f roomC src/Dodge/Room/Room.hs 39;" f roomCCrits src/Dodge/Room/Room.hs 262;" f roomCenterPillar src/Dodge/Room/Room.hs 121;" f @@ -5488,7 +5484,7 @@ 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 53;" f -scrollAugInvSel src/Dodge/Inventory.hs 287;" f +scrollAugInvSel src/Dodge/Inventory.hs 206;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 134;" f scrollCommands src/Dodge/Update/Scroll.hs 131;" f scrollDebugInfoInt src/Dodge/Debug.hs 46;" f @@ -5517,7 +5513,7 @@ selSecSelSize src/Dodge/SelectionSections.hs 124;" f selSecYint src/Dodge/SelectionSections.hs 127;" f selectCreatureDebugItem src/Dodge/Debug.hs 38;" f selectUse src/Dodge/SelectUse.hs 11;" f -selectedCloseObject src/Dodge/Inventory.hs 297;" f +selectedCloseObject src/Dodge/Inventory.hs 216;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f senseDamage src/Dodge/Machine/Update.hs 134;" f @@ -5618,15 +5614,15 @@ shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTorch src/Dodge/Creature/State.hs 206;" f -shootBullet src/Dodge/HeldUse.hs 327;" f +shootBullet src/Dodge/HeldUse.hs 336;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootL src/Dodge/Item/Weapon/TriggerType.hs 298;" f -shootLaser src/Dodge/HeldUse.hs 247;" f +shootL src/Dodge/Item/Weapon/TriggerType.hs 190;" f +shootLaser src/Dodge/HeldUse.hs 256;" f shootOutPassage src/Dodge/Room/RezBox.hs 72;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f -shootTeslaArc src/Dodge/HeldUse.hs 435;" f +shootTeslaArc src/Dodge/HeldUse.hs 444;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 226;" f +shootTractorBeam src/Dodge/HeldUse.hs 235;" f shootersRoom src/Dodge/Room/Room.hs 317;" f shootersRoom' src/Dodge/Room/Room.hs 282;" f shootersRoom1 src/Dodge/Room/Room.hs 307;" f @@ -5644,7 +5640,7 @@ showEquipmentNumber src/Dodge/Item/Display.hs 128;" f showInt src/Dodge/Item/Info.hs 31;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showManObj src/Dodge/TestString.hs 40;" f -showTerminalError src/Dodge/Debug/Terminal.hs 75;" f +showTerminalError src/Dodge/Debug/Terminal.hs 76;" f showTimeFlow src/Dodge/TestString.hs 87;" f shrinkGun src/Dodge/Item/Weapon/Utility.hs 44;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 119;" f @@ -5668,7 +5664,7 @@ singleton src/DoubleStack.hs 11;" f singletonTrie src/SimpleTrie.hs 18;" f sizeFBOs src/Framebuffer/Update.hs 22;" f sizeModule src/Dodge/Item/Craftable.hs 37;" f -sizeSelf src/Dodge/Creature/Action.hs 204;" f +sizeSelf src/Dodge/Creature/Action.hs 200;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 366;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f slideWindow src/ListHelp.hs 80;" f @@ -5717,7 +5713,7 @@ spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f spawnSmokeAtCursor src/Dodge/WorldEvent/Cloud.hs 73;" f spawnerCrit src/Dodge/Creature.hs 55;" f spawnerRoom src/Dodge/Room/Room.hs 362;" f -speedLegs src/Dodge/Item/Equipment.hs 122;" f +speedLegs src/Dodge/Item/Equipment.hs 113;" f splashMenu src/Dodge/Menu.hs 27;" f splashMenuOptions src/Dodge/Menu.hs 32;" f splashScreen src/Dodge/Initialisation.hs 11;" f @@ -5814,8 +5810,8 @@ tap2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f tap3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 434;" f tap4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 506;" f tapQuietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 328;" f -targCorner src/Dodge/Targeting/Draw.hs 41;" f -targetCursorPic src/Dodge/Targeting/Draw.hs 47;" f +targCorner src/Dodge/Targeting/Draw.hs 28;" f +targetCursorPic src/Dodge/Targeting/Draw.hs 34;" f targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 194;" f @@ -5908,7 +5904,7 @@ torqueCr src/Dodge/WorldEffect.hs 70;" f torso src/Dodge/Creature/Picture.hs 102;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 236;" f +tractorBeamAt src/Dodge/HeldUse.hs 245;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 67;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 386;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5954,7 +5950,6 @@ treePath src/Dodge/Tree/GenerateStructure.hs 12;" f treePaths src/TreeHelp.hs 138;" f treePost src/TreeHelp.hs 45;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f -trigDoAlso src/Dodge/Item/Weapon/TriggerType.hs 76;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitchSPic src/Dodge/Placement/Instance/Button.hs 14;" f @@ -5996,7 +5991,7 @@ unitVectorAtAngle src/Geometry/Vector.hs 100;" f unlockInv src/Dodge/Inventory/Lock.hs 9;" f unpause src/Dodge/Menu.hs 192;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 52;" f -unsafeBlinkGun src/Dodge/Item/Weapon/Utility.hs 62;" f +unsafeBlinkGun src/Dodge/Item/Weapon/Utility.hs 61;" f unsafeSwapKeys src/IntMapHelp.hs 76;" f unshadowBlock src/Dodge/Block.hs 38;" f untilJust src/MonadHelp.hs 7;" f @@ -6018,7 +6013,7 @@ updateBulVel src/Dodge/Bullet.hs 50;" f updateBullet src/Dodge/Bullet.hs 28;" f updateBullets src/Dodge/Update.hs 429;" f updateCamera src/Dodge/Update/Camera.hs 32;" f -updateCloseObjects src/Dodge/Inventory.hs 193;" f +updateCloseObjects src/Dodge/Inventory.hs 112;" f updateCloud src/Dodge/Update.hs 612;" f updateClouds src/Dodge/Update.hs 458;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 37;" f @@ -6141,14 +6136,14 @@ useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 24;" f useEquipment src/Dodge/Creature/State.hs 144;" f -useGasParams src/Dodge/HeldUse.hs 376;" f +useGasParams src/Dodge/HeldUse.hs 385;" f useHotKey src/Dodge/Creature/YourControl.hs 48;" f useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 126;" f useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 100;" f useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 113;" f useL src/Dodge/Luse.hs 13;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 178;" f +useLoadedAmmo src/Dodge/HeldUse.hs 187;" f useMagShield src/Dodge/Euse.hs 69;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 7;" f @@ -6158,7 +6153,7 @@ useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f useRootItem src/Dodge/Creature/Impulse/UseItem.hs 26;" f useShrinkGun src/Dodge/Luse.hs 59;" f useStopWatch src/Dodge/Luse.hs 24;" f -useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 246;" f +useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 152;" f useTimeScrollGun src/Dodge/Luse.hs 32;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 298;" f @@ -6172,7 +6167,7 @@ vNormaly src/Geometry/Vector3D.hs 72;" f vShape src/Dodge/Placement/Instance/LightSource.hs 114;" f vToL src/MatrixHelper.hs 46;" f vToQuat src/Quaternion.hs 41;" f -validTerminalCommands src/Dodge/Debug/Terminal.hs 130;" f +validTerminalCommands src/Dodge/Debug/Terminal.hs 131;" f vasTightStride src/Shader/Compile.hs 297;" f vecBetweenSpeed src/Dodge/Base.hs 124;" f vecTurnTo src/Dodge/Movement/Turn.hs 26;" f @@ -6193,7 +6188,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 32;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 289;" f waistSP src/Dodge/Creature/HandPos.hs 199;" f -walkNozzle src/Dodge/HeldUse.hs 204;" f +walkNozzle src/Dodge/HeldUse.hs 213;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 80;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f @@ -6230,24 +6225,16 @@ windowXFloat src/Dodge/Data/Config.hs 61;" f windowYFloat src/Dodge/Data/Config.hs 63;" f withAlpha src/Color.hs 10;" f withByteString src/Shader/Compile.hs 324;" f -withCrPos src/Dodge/Item/Weapon/TriggerType.hs 381;" f -withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 384;" f -withFlare src/Dodge/Item/Weapon/TriggerType.hs 348;" f -withItem src/Dodge/Item/Weapon/TriggerType.hs 321;" f -withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 360;" f -withOldDir src/Dodge/Item/Weapon/TriggerType.hs 389;" f -withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 412;" f -withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 396;" f -withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 403;" f -withSmoke src/Dodge/Item/Weapon/TriggerType.hs 89;" f -withSoundContinue src/Dodge/Item/Weapon/TriggerType.hs 205;" f -withSoundForI src/Dodge/Item/Weapon/TriggerType.hs 218;" f -withSoundForVol src/Dodge/Item/Weapon/TriggerType.hs 231;" f -withSoundItemChoiceStart src/Dodge/Item/Weapon/TriggerType.hs 176;" f -withSoundStart src/Dodge/Item/Weapon/TriggerType.hs 192;" f -withTempLight src/Dodge/Item/Weapon/TriggerType.hs 335;" f -withThickSmokeI src/Dodge/Item/Weapon/TriggerType.hs 107;" f -withThinSmokeI src/Dodge/Item/Weapon/TriggerType.hs 98;" f +withCrPos src/Dodge/Item/Weapon/TriggerType.hs 273;" f +withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 276;" f +withFlare src/Dodge/Item/Weapon/TriggerType.hs 240;" f +withItem src/Dodge/Item/Weapon/TriggerType.hs 213;" f +withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 252;" f +withOldDir src/Dodge/Item/Weapon/TriggerType.hs 281;" f +withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 304;" f +withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 288;" f +withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 295;" f +withTempLight src/Dodge/Item/Weapon/TriggerType.hs 227;" f wlDustAt src/Dodge/Wall/Dust.hs 10;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f @@ -6271,7 +6258,7 @@ worldSPic src/Dodge/Render/ShapePicture.hs 30;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 134;" f wristArmour src/Dodge/Item/Equipment.hs 47;" f -wristInvisibility src/Dodge/Item/Equipment.hs 128;" f +wristInvisibility src/Dodge/Item/Equipment.hs 119;" f writeConfig src/Dodge/Menu.hs 159;" f writeSaveSlot src/Dodge/Save.hs 34;" f xCylinder src/Shape.hs 134;" f @@ -6284,7 +6271,7 @@ yIntercepts' src/Dodge/Zoning/Base.hs 74;" f yV2 src/Geometry/Vector.hs 203;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 18;" f -youDropItem src/Dodge/Creature/Action.hs 188;" f +youDropItem src/Dodge/Creature/Action.hs 184;" f yourAugmentedItem src/Dodge/Render/HUD.hs 126;" f yourControl src/Dodge/Creature/YourControl.hs 22;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f