diff --git a/src/Dodge/BaseTriggerType.hs b/src/Dodge/BaseTriggerType.hs index 6ae24b36e..5d0be2695 100644 --- a/src/Dodge/BaseTriggerType.hs +++ b/src/Dodge/BaseTriggerType.hs @@ -6,6 +6,7 @@ module Dodge.BaseTriggerType ( module Dodge.Data.TriggerType, ) where +import Dodge.PulseLaser import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Control.Lens @@ -13,7 +14,9 @@ import Dodge.Data.Item import Dodge.Data.TriggerType itemTriggerType :: LocationDT OItem -> TriggerType -itemTriggerType loc = baseItemTriggerType $ loc ^. locDT . dtValue . _1 +itemTriggerType loc + | isPulseLaser loc = HammerTrigger 9 + | otherwise = baseItemTriggerType $ loc ^. locDT . dtValue . _1 baseItemTriggerType :: Item -> TriggerType baseItemTriggerType itm = case itm ^. itType of diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 3cc13171c..77aa006fd 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -329,8 +329,9 @@ stackedInventory = , remoteScreen , megaShellMag , laser - , makeTypeCraft TRANSFORMER + , megaBattery , makeTypeCraft CAPACITOR + , makeTypeCraft TRANSFORMER , teslaGun , megaBattery , flameThrower diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 63f822cd8..831080e42 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -38,6 +38,7 @@ data ItemSF -- Structural Function | ToggleSF | MapperSF | LaserWeaponSF + | CapacitorSF deriving (Eq, Ord, Show, Read) type CItem = (Item, ItemSF) diff --git a/src/Dodge/Data/Muzzle.hs b/src/Dodge/Data/Muzzle.hs index 4809f19fb..9bcc6d9b0 100644 --- a/src/Dodge/Data/Muzzle.hs +++ b/src/Dodge/Data/Muzzle.hs @@ -31,6 +31,7 @@ data FlareType data MuzzleEffect = MuzzleShootBullet | MuzzleLaser + | MuzzlePulseLaser | MuzzleTesla | MuzzleTractor | MuzzleRLauncher diff --git a/src/Dodge/Data/TriggerType.hs b/src/Dodge/Data/TriggerType.hs index 7baf4adc6..c2bb75969 100644 --- a/src/Dodge/Data/TriggerType.hs +++ b/src/Dodge/Data/TriggerType.hs @@ -4,14 +4,10 @@ module Dodge.Data.TriggerType where import Control.Lens ---import Data.Aeson ---import Data.Aeson.TH - data TriggerType = AutoTrigger Int | HammerTrigger Int | NoTrigger --- | AlwaysSingleTrigger Int | BurstTrigger {_burstFrames :: [Int], _burstRate :: Int} | VolleyGunTrigger {_volleyNumBarrels::Int, _volleyRate :: Int} | WarmUpCoolDown @@ -19,9 +15,7 @@ data TriggerType , _coolStart :: Int , _coolEnd :: Int } - | WarmUpNoDelay - { _warmMax :: Int - } + | WarmUpNoDelay { _warmMax :: Int } deriving (Eq, Show, Read) makeLenses ''TriggerType diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 1376ace44..510669285 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -8,6 +8,7 @@ module Dodge.HeldUse ( heldEffectMuzzles, ) where +import Dodge.PulseLaser import Color import Control.Applicative import Control.Monad @@ -134,12 +135,23 @@ heldEffectMuzzles loc cr w = $ loadedmuzzles where t = loc ^. locDT - (_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. dtValue . _1 + (_, loadedmuzzles) = mapAccumR loadMuzzle t . locMuzzles $ loc setusetime = cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed .~ w ^. cWorld . lWorld . lClock itid = t ^?! dtValue . _1 . itLocation . ilInvID +locMuzzles :: LocationDT OItem -> [Muzzle] +locMuzzles loc + | isPulseLaser loc = + dbwMuzzles + & ix 0 . mzPos .~ V2 6 0 + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzFlareType .~ TeslaGunFlare + & ix 0 . mzEffect .~ MuzzlePulseLaser + & ix 0 . mzAmmoPerShot .~ UseExactly 100 + | otherwise = itemMuzzles $ loc ^. locDT . dtValue . _1 + itemMuzzles :: Item -> [Muzzle] itemMuzzles itm = case itm ^. itType of HELD ALTERIFLE -> @@ -686,10 +698,10 @@ flareCircleAt col alphax tranv = ) -- previous phaseV parameters: 0.2, 1, 5 -getLaserPhaseV :: DTree Item -> Float +getLaserPhaseV :: LocationDT OItem -> Float getLaserPhaseV = const 1 -getLaserDamage :: DTree Item -> LaserType +getLaserDamage :: LocationDT OItem -> LaserType getLaserDamage = const (DamageLaser 11) getLaserColor :: LocationDT OItem -> Color @@ -719,6 +731,7 @@ useLoadedAmmo loc cr (_, w) (Just (mz, x, magtree)) = (,) True $ removeAmmoFromMag x mid cr . makeMuzzleFlare mz loc cr $ case _mzEffect mz of MuzzleShootBullet -> shootBullets loc cr (mz, x, magtree) w MuzzleLaser -> creatureShootLaser loc cr mz w + MuzzlePulseLaser -> creatureShootPulseLaser loc cr mz w MuzzleTesla -> shootTeslaArc loc cr mz w MuzzleTractor -> shootTractorBeam cr w MuzzleRLauncher -> createProjectileR loc magtree mz cr w @@ -816,14 +829,12 @@ creatureShootLaser loc cr mz w = & randGen .~ g & shootLaser (CrWeaponSound (_crID cr) 0) - (getLaserDamage istree) - (getLaserPhaseV istree) + (getLaserDamage loc) + (getLaserPhaseV loc) pos dir (getLaserColor loc) where - itmtree = loc ^. locDT - istree = fmap (\(i, _, _) -> i) itmtree (V3 x y _, q) = locOrient loc cr `Q.comp` ((_mzPos mz + V2 0 offset) `v2z` 0, Q.axisAngle (V3 0 0 1) (_mzRot mz)) @@ -856,6 +867,39 @@ shootLaser so lt pv p dir col w = } & soundContinue so p tone440sawtoothquietS (Just 2) +creatureShootPulseLaser :: LocationDT OItem -> Creature -> Muzzle -> World -> World +creatureShootPulseLaser loc cr mz w = + w + & randGen .~ g + & shootPulseLaser + (CrWeaponSound (_crID cr) 0) + pos + dir + where + (V3 x y _, q) = + locOrient loc cr + `Q.comp` ((_mzPos mz + V2 0 offset) `v2z` 0, Q.axisAngle (V3 0 0 1) (_mzRot mz)) + pos = _crPos cr + rotateV (_crDir cr) (V2 x y) + dir = _crDir cr + Q.qToAng q + a + (a, g) = randomR (- inacc, inacc) $ _randGen w + inacc = _mzInaccuracy mz + offset = case mz ^. mzRandomOffset of + 0 -> 0 + i -> fst . randomR (- i, i) $ _randGen w + +shootPulseLaser :: SoundOrigin -> Point2 -> Float -> World -> World +shootPulseLaser so p dir w = + w + & cWorld . lWorld . pulseLasers + .:~ PulseLaser + { _pzPhaseV = 1 + , _pzPos = p + , _pzDir = dir + , _pzDamage = 101 + , _pzTimer = 5 + } + & soundContinue so p tone440sawtoothquietS (Just 2) + removeAmmoFromMag :: Int -> Maybe Int -> Creature -> World -> World removeAmmoFromMag x mid cr = fromMaybe id $ do magid <- mid diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 9206eb5fb..1616c050b 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -47,6 +47,7 @@ itemAboveAttachables (itm,sf) = case (itm ^. itType, sf) of itemBelowAttachables :: CItem -> [ItemSF] itemBelowAttachables (itm,sf) = case (itm ^. itType, sf) of + (HELD LASER, _) -> getAmmoLinks itm <> [CapacitorSF] (HELD TORCH, _) -> getAmmoLinks itm (ATTACH UNDERBARRELSLOT, _) -> [UnderBarrelPlatformSF] (_, HeldPlatformSF) -> getAmmoLinks itm <> extraWeaponLinksBelow itm @@ -128,6 +129,7 @@ itemToFunction itm = case itm ^. itType of ATTACH SHELLPAYLOAD{} -> AmmoPayloadSF LauncherAmmo DROPPER{} -> GadgetPlatformSF CLICKER{} -> GadgetPlatformSF + CRAFT CAPACITOR -> CapacitorSF _ -> NoSF treeToPotentialFunction :: DTree CItem -> S.Set ItemSF diff --git a/src/Dodge/Item/InventoryColor.hs b/src/Dodge/Item/InventoryColor.hs index 42d2e4f57..30607f44f 100644 --- a/src/Dodge/Item/InventoryColor.hs +++ b/src/Dodge/Item/InventoryColor.hs @@ -36,6 +36,7 @@ itemInvColor ci = case ci ^. _2 of UnderBarrelPlatformSF -> white UnderBarrelSlotSF -> white LaserWeaponSF -> white + CapacitorSF -> yellow --ammoTypeColor :: AmmoType -> Color --ammoTypeColor = \case diff --git a/tags b/tags index 892dd8820..eabad9a1c 100644 --- a/tags +++ b/tags @@ -63,7 +63,7 @@ AmmoMagType src/Dodge/Data/Item/Combine.hs 106;" t AmmoModifierSF src/Dodge/Data/ComposedItem.hs 30;" C AmmoParams src/Dodge/Data/Item/Use.hs 51;" t AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 32;" C -AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t +AmmoPerShot src/Dodge/Data/Muzzle.hs 53;" t AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 3;" m @@ -245,7 +245,7 @@ CHARTREUSE src/Color/Data.hs 25;" C CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 112;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C -CItem src/Dodge/Data/ComposedItem.hs 43;" t +CItem src/Dodge/Data/ComposedItem.hs 44;" t CLICKER src/Dodge/Data/Item/Combine.hs 28;" C CME src/Dodge/Data/MuzzleEffect.hs 14;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C @@ -270,6 +270,7 @@ Camera src/Dodge/Update/Camera.hs 5;" m CameraScrollTimeFlow src/Dodge/Data/World.hs 68;" C CamouflageStatus src/Dodge/Data/CamouflageStatus.hs 3;" m Cane src/Dodge/Item/Held/Cane.hs 1;" m +CapacitorSF src/Dodge/Data/ComposedItem.hs 41;" C CardinalCover src/Dodge/Data/CardinalPoint.hs 21;" t CardinalEightPoint src/Dodge/Data/CardinalPoint.hs 10;" t CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m @@ -435,7 +436,7 @@ DRUMMAG src/Dodge/Data/Item/Combine.hs 108;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 31;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 21;" C -DTComb src/Dodge/Item/Grammar.hs 148;" t +DTComb src/Dodge/Item/Grammar.hs 150;" t DTMidAboveNode src/Dodge/Data/DoubleTree.hs 19;" C DTMidBelowNode src/Dodge/Data/DoubleTree.hs 20;" C DTRootNode src/Dodge/Data/DoubleTree.hs 17;" C @@ -1210,22 +1211,23 @@ MusicData src/Music.hs 7;" t Mute src/Dodge/Data/Creature/Misc.hs 21;" C Muzzle src/Dodge/Data/Muzzle.hs 9;" t Muzzle src/Dodge/Data/Muzzle.hs 3;" m -MuzzleBlink src/Dodge/Data/Muzzle.hs 45;" C -MuzzleDetector src/Dodge/Data/Muzzle.hs 44;" C +MuzzleBlink src/Dodge/Data/Muzzle.hs 46;" C +MuzzleDetector src/Dodge/Data/Muzzle.hs 45;" C MuzzleEffect src/Dodge/Data/Muzzle.hs 31;" t MuzzleEffect src/Dodge/Data/MuzzleEffect.hs 6;" m -MuzzleGLauncher src/Dodge/Data/Muzzle.hs 37;" C +MuzzleGLauncher src/Dodge/Data/Muzzle.hs 38;" C MuzzleLaser src/Dodge/Data/Muzzle.hs 33;" C -MuzzleNozzle src/Dodge/Data/Muzzle.hs 38;" C -MuzzleRLauncher src/Dodge/Data/Muzzle.hs 36;" C -MuzzleRewind src/Dodge/Data/Muzzle.hs 47;" C -MuzzleScroller src/Dodge/Data/Muzzle.hs 49;" C -MuzzleShatter src/Dodge/Data/Muzzle.hs 43;" C +MuzzleNozzle src/Dodge/Data/Muzzle.hs 39;" C +MuzzlePulseLaser src/Dodge/Data/Muzzle.hs 34;" C +MuzzleRLauncher src/Dodge/Data/Muzzle.hs 37;" C +MuzzleRewind src/Dodge/Data/Muzzle.hs 48;" C +MuzzleScroller src/Dodge/Data/Muzzle.hs 50;" C +MuzzleShatter src/Dodge/Data/Muzzle.hs 44;" C MuzzleShootBullet src/Dodge/Data/Muzzle.hs 32;" C -MuzzleStopper src/Dodge/Data/Muzzle.hs 48;" C -MuzzleTesla src/Dodge/Data/Muzzle.hs 34;" C -MuzzleTractor src/Dodge/Data/Muzzle.hs 35;" C -MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 46;" C +MuzzleStopper src/Dodge/Data/Muzzle.hs 49;" C +MuzzleTesla src/Dodge/Data/Muzzle.hs 35;" C +MuzzleTractor src/Dodge/Data/Muzzle.hs 36;" C +MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 47;" C MvForward src/Dodge/Data/ActionPlan.hs 35;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 34;" C MvWalking src/Dodge/Data/Creature/Misc.hs 30;" C @@ -1325,7 +1327,7 @@ NumShadowCasters6 src/Dodge/Data/Config.hs 21;" C NumShadowCasters7 src/Dodge/Data/Config.hs 22;" C NumShadowCasters8 src/Dodge/Data/Config.hs 23;" C NumShadowCasters9 src/Dodge/Data/Config.hs 24;" C -OItem src/Dodge/Data/ComposedItem.hs 45;" t +OItem src/Dodge/Data/ComposedItem.hs 46;" t ORANGE src/Color/Data.hs 26;" C ObButton src/Dodge/Data/ObjectType.hs 17;" C ObCreature src/Dodge/Data/ObjectType.hs 13;" C @@ -1529,6 +1531,7 @@ Pulse src/Dodge/Data/Creature/Misc.hs 54;" t PulseBall src/Dodge/Data/PulseLaser.hs 20;" t PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t PulseLaser src/Dodge/Data/PulseLaser.hs 4;" m +PulseLaser src/Dodge/PulseLaser.hs 1;" m PulseStatus src/Dodge/Data/Creature/Misc.hs 54;" C PushPop src/Dodge/Menu/PushPop.hs 1;" m PushSource src/Dodge/Data/Door.hs 27;" t @@ -2072,7 +2075,7 @@ UseCondition src/Dodge/Data/UseCondition.hs 2;" m UseDelay src/Dodge/Data/Item/HeldDelay.hs 13;" t UseDelay src/Dodge/Data/UseDelay.hs 6;" m UseDelay src/Dodge/Item/UseDelay.hs 3;" m -UseExactly src/Dodge/Data/Muzzle.hs 53;" C +UseExactly src/Dodge/Data/Muzzle.hs 54;" C UseFocus src/Dodge/Data/UseCondition.hs 11;" t UseFromLocation src/Dodge/Data/UseCondition.hs 13;" C UseFromRoot src/Dodge/Data/UseCondition.hs 12;" C @@ -2089,7 +2092,7 @@ UseScope src/Dodge/Data/Item/Use.hs 36;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C UseToggle src/Dodge/Data/Item/Use.hs 38;" C -UseUpTo src/Dodge/Data/Muzzle.hs 54;" C +UseUpTo src/Dodge/Data/Muzzle.hs 55;" C UseValue src/Dodge/Data/Item/Use.hs 35;" C UseableAnytime src/Dodge/Data/UseCondition.hs 7;" C UseableWhenAimed src/Dodge/Data/UseCondition.hs 5;" C @@ -2805,9 +2808,9 @@ _numLinkEW src/Dodge/Data/Room.hs 33;" f _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 29;" f _nzAngle src/Dodge/Data/Item/Params.hs 18;" f -_nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 40;" f -_nzPressure src/Dodge/Data/Muzzle.hs 39;" f -_nzWalkSpeed src/Dodge/Data/Muzzle.hs 41;" f +_nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 41;" f +_nzPressure src/Dodge/Data/Muzzle.hs 40;" f +_nzWalkSpeed src/Dodge/Data/Muzzle.hs 42;" f _offPathFromEdges src/Dodge/Data/Room.hs 74;" f _oldMagnets src/Dodge/Data/LWorld.hs 127;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f @@ -3200,14 +3203,14 @@ _unfiredBarrels src/Dodge/Data/Item/Params.hs 19;" f _unpauseClock src/Dodge/Data/World.hs 55;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f -_useExactly src/Dodge/Data/Muzzle.hs 53;" f +_useExactly src/Dodge/Data/Muzzle.hs 54;" f _useMapperLines src/Dodge/Data/Item/Use.hs 40;" f _useMapperPoints src/Dodge/Data/Item/Use.hs 41;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f _useToggle src/Dodge/Data/Item/Use.hs 38;" f -_useUpTo src/Dodge/Data/Muzzle.hs 54;" f +_useUpTo src/Dodge/Data/Muzzle.hs 55;" f _uvCanContinue src/Dodge/Data/Universe.hs 39;" f _uvConfig src/Dodge/Data/Universe.hs 37;" f _uvDebug src/Dodge/Data/Universe.hs 44;" f @@ -3375,21 +3378,21 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 247;" f -applyCME src/Dodge/HeldUse.hs 351;" f +applyCME src/Dodge/HeldUse.hs 363;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 13;" f 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 418;" f +applyInvLock src/Dodge/HeldUse.hs 430;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f applyPastDamages src/Dodge/Creature/State.hs 132;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f -applyRecoil src/Dodge/HeldUse.hs 449;" f +applyRecoil src/Dodge/HeldUse.hs 461;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 551;" f -applySoundCME src/Dodge/HeldUse.hs 439;" f +applySidePush src/Dodge/HeldUse.hs 563;" f +applySoundCME src/Dodge/HeldUse.hs 451;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -3397,7 +3400,7 @@ 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 562;" f +applyTorqueCME src/Dodge/HeldUse.hs 574;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -3460,18 +3463,18 @@ barrel src/Dodge/Creature/Inanimate.hs 17;" f barrelShape src/Dodge/Render/ShapePicture.hs 46;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 419;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f -baseCI src/Dodge/Item/Grammar.hs 145;" f +baseCI src/Dodge/Item/Grammar.hs 147;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 336;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseItemTriggerType src/Dodge/BaseTriggerType.hs 18;" f +baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 339;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 416;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 404;" f baseShoulder src/Dodge/Creature/Picture.hs 125;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 313;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 305;" f -baseStickSpread src/Dodge/HeldUse.hs 293;" f +baseStickSpread src/Dodge/HeldUse.hs 305;" f baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 38;" f @@ -3481,7 +3484,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 698;" f +basicMuzFlare src/Dodge/HeldUse.hs 710;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 62;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f @@ -3490,7 +3493,7 @@ beltMag src/Dodge/Item/Ammo.hs 38;" f 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 505;" f +bgunSound src/Dodge/HeldUse.hs 517;" f bindFBO src/Render.hs 244;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -3780,14 +3783,14 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 1253;" f -createProjectileR src/Dodge/HeldUse.hs 1202;" f +createProjectile src/Dodge/HeldUse.hs 1266;" f +createProjectileR src/Dodge/HeldUse.hs 1215;" f createShell src/Dodge/Projectile/Create.hs 22;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 11;" f -creatureShootLaser src/Dodge/HeldUse.hs 813;" f +creatureShootLaser src/Dodge/HeldUse.hs 826;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f @@ -3858,7 +3861,7 @@ dark src/Color.hs 108;" f darkenBackground src/Dodge/Render/MenuScreen.hs 52;" f dbArg src/Dodge/Base.hs 165;" f dbArgChain src/Dodge/Base.hs 170;" f -dbwMuzzles src/Dodge/HeldUse.hs 296;" f +dbwMuzzles src/Dodge/HeldUse.hs 308;" f deZoneIX src/Dodge/Zoning/Base.hs 89;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f deadEndRoom src/Dodge/Room/Room.hs 235;" f @@ -3976,7 +3979,7 @@ detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 466;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 225;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1173;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1186;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 204;" f @@ -4041,9 +4044,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" 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 1129;" f +doGenFloat src/Dodge/HeldUse.hs 1142;" f doGravityPU src/Dodge/Projectile/Update.hs 50;" f -doHeldUseEffect src/Dodge/HeldUse.hs 327;" f +doHeldUseEffect src/Dodge/HeldUse.hs 339;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f @@ -4235,7 +4238,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f dropAll src/Dodge/Creature/State.hs 125;" f dropExcept src/Dodge/Creature/Action.hs 166;" f -dropInventoryPath src/Dodge/HeldUse.hs 1346;" f +dropInventoryPath src/Dodge/HeldUse.hs 1359;" f dropItem src/Dodge/Creature/Action.hs 172;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 33;" f @@ -4319,8 +4322,8 @@ extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extraPics src/Dodge/Render/ShapePicture.hs 73;" f -extraWeaponLinks src/Dodge/Item/Grammar.hs 83;" f -extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 92;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 84;" f +extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 93;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4352,7 +4355,7 @@ firstWorldLoad appDodge/Main.hs 77;" f fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f flFlicker src/Dodge/Flame.hs 38;" f -flameMuzzles src/Dodge/HeldUse.hs 299;" f +flameMuzzles src/Dodge/HeldUse.hs 311;" 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 @@ -4360,7 +4363,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 48;" f flamerPic src/Dodge/Item/Draw/SPic.hs 407;" f -flareCircleAt src/Dodge/HeldUse.hs 679;" f +flareCircleAt src/Dodge/HeldUse.hs 691;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 39;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f @@ -4420,14 +4423,14 @@ fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 33;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gRandify src/Dodge/Randify.hs 11;" f -gadgetEffect src/Dodge/HeldUse.hs 45;" f +gadgetEffect src/Dodge/HeldUse.hs 46;" f gameOverMenu src/Dodge/Menu.hs 187;" f gameRoomFromRoom src/Dodge/Layout.hs 161;" f gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 134;" f gameplayMenuOptions src/Dodge/Menu.hs 137;" f -gasType src/Dodge/HeldUse.hs 1085;" f +gasType src/Dodge/HeldUse.hs 1098;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4439,14 +4442,14 @@ geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 135;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 97;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 98;" f getArguments src/Dodge/Update/Scroll.hs 178;" f getArguments' src/Dodge/Update/Scroll.hs 166;" f -getAttachedSFLink src/Dodge/HeldUse.hs 753;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 78;" f +getAttachedSFLink src/Dodge/HeldUse.hs 766;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 79;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 171;" f -getBulletType src/Dodge/HeldUse.hs 871;" f +getBulletType src/Dodge/HeldUse.hs 884;" f getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -4454,17 +4457,17 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 411;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1241;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1254;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 144;" f -getLaserColor src/Dodge/HeldUse.hs 695;" f -getLaserDamage src/Dodge/HeldUse.hs 692;" f -getLaserPhaseV src/Dodge/HeldUse.hs 689;" f +getLaserColor src/Dodge/HeldUse.hs 707;" f +getLaserDamage src/Dodge/HeldUse.hs 704;" f +getLaserPhaseV src/Dodge/HeldUse.hs 701;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 394;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1228;" f +getPJStabiliser src/Dodge/HeldUse.hs 1241;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 95;" f @@ -4474,7 +4477,7 @@ getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 126;" f getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f -getVolleyBurst src/Dodge/HeldUse.hs 124;" f +getVolleyBurst src/Dodge/HeldUse.hs 125;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f gimbal src/Dodge/Item/Scope.hs 153;" f @@ -4524,7 +4527,7 @@ 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 38;" f -hammerCheck src/Dodge/HeldUse.hs 60;" f +hammerCheck src/Dodge/HeldUse.hs 61;" f handHandleOrient src/Dodge/Item/HeldOffset.hs 61;" f handOrient src/Dodge/Item/HeldOffset.hs 37;" f handleEvent src/Dodge/Event.hs 27;" f @@ -4557,21 +4560,21 @@ healthTest src/Dodge/Room/LasTurret.hs 95;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 23;" f heldAimZoom src/Dodge/Update/Camera.hs 140;" f -heldEffect src/Dodge/HeldUse.hs 57;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 129;" f +heldEffect src/Dodge/HeldUse.hs 58;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 130;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 88;" f heldInfo src/Dodge/Item/Info.hs 90;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f -heldItemInvLock src/Dodge/HeldUse.hs 432;" f -heldItemMuzVel src/Dodge/HeldUse.hs 968;" f -heldItemMuzzles src/Dodge/HeldUse.hs 158;" f -heldItemRifling src/Dodge/HeldUse.hs 1012;" f +heldItemInvLock src/Dodge/HeldUse.hs 444;" f +heldItemMuzVel src/Dodge/HeldUse.hs 981;" f +heldItemMuzzles src/Dodge/HeldUse.hs 170;" f +heldItemRifling src/Dodge/HeldUse.hs 1025;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 247;" f heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f -heldTorqueAmount src/Dodge/HeldUse.hs 578;" f -heldTriggerType src/Dodge/BaseTriggerType.hs 23;" f +heldTorqueAmount src/Dodge/HeldUse.hs 590;" f +heldTriggerType src/Dodge/BaseTriggerType.hs 26;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 217;" f @@ -4658,18 +4661,18 @@ interweave src/Justify.hs 17;" f introScan src/Dodge/Item/Scope.hs 57;" f introScanValue src/Dodge/Inventory/SelectionList.hs 80;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 214;" f +invAdj src/Dodge/Item/Grammar.hs 216;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f -invDT src/Dodge/Item/Grammar.hs 191;" f -invDT' src/Dodge/Item/Grammar.hs 196;" f +invDT src/Dodge/Item/Grammar.hs 193;" f +invDT' src/Dodge/Item/Grammar.hs 198;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f invHead src/Dodge/Render/HUD.hs 404;" f -invIMDT src/Dodge/Item/Grammar.hs 224;" f -invIndents src/Dodge/Item/Grammar.hs 231;" f +invIMDT src/Dodge/Item/Grammar.hs 226;" f +invIndents src/Dodge/Item/Grammar.hs 233;" f invItemLocUpdate src/Dodge/Creature/State.hs 153;" f invRootItemEffs src/Dodge/Creature/State.hs 146;" f -invRootMap src/Dodge/Item/Grammar.hs 203;" f +invRootMap src/Dodge/Item/Grammar.hs 205;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f @@ -4686,7 +4689,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 705;" f +isAmmoIntLink src/Dodge/HeldUse.hs 717;" f isAnimate src/Dodge/Creature/Test.hs 144;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f @@ -4701,6 +4704,7 @@ isNothing' src/MaybeHelp.hs 33;" f isOnSeg src/Geometry.hs 236;" f isOutLnk src/Dodge/PlacementSpot.hs 164;" f isOverTerminalScreen src/Dodge/Update.hs 405;" f +isPulseLaser src/Dodge/PulseLaser.hs 8;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f @@ -4725,7 +4729,7 @@ itemBlips src/Dodge/RadarSweep.hs 93;" f itemBulkiness src/Dodge/Creature/YourControl.hs 172;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f -itemDetectorEffect src/Dodge/HeldUse.hs 759;" f +itemDetectorEffect src/Dodge/HeldUse.hs 772;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f itemEquipPict src/Dodge/Item/Draw.hs 19;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f @@ -4737,8 +4741,8 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 34;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 427;" f -itemMuzzles src/Dodge/HeldUse.hs 143;" f +itemInvLock src/Dodge/HeldUse.hs 439;" f +itemMuzzles src/Dodge/HeldUse.hs 155;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f @@ -4746,11 +4750,11 @@ itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 52;" f itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 121;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 148;" f -itemSidePush src/Dodge/HeldUse.hs 374;" f +itemSidePush src/Dodge/HeldUse.hs 386;" f itemString src/Dodge/Item/Display.hs 56;" f -itemToFunction src/Dodge/Item/Grammar.hs 100;" f +itemToFunction src/Dodge/Item/Grammar.hs 101;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f -itemTriggerType src/Dodge/BaseTriggerType.hs 15;" f +itemTriggerType src/Dodge/BaseTriggerType.hs 16;" f itemWeight src/Dodge/Creature/Statistics.hs 66;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f @@ -4760,7 +4764,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 25;" f itmUsageInfo src/Dodge/Item/Info.hs 231;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 181;" f +joinItemsInList src/Dodge/Item/Grammar.hs 183;" f joystick src/Dodge/Item/Scope.hs 149;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f @@ -4810,10 +4814,10 @@ ldtToIM src/Dodge/DoubleTree.hs 218;" f ldtToIndentList src/Dodge/DoubleTree.hs 221;" f ldtToLoc src/Dodge/DoubleTree.hs 267;" f left src/DoubleStack.hs 16;" f -leftChildList src/Dodge/Item/Grammar.hs 160;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 150;" f +leftChildList src/Dodge/Item/Grammar.hs 162;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 152;" f leftPad src/Padding.hs 15;" f -leftRightCombine src/Dodge/Item/Grammar.hs 172;" f +leftRightCombine src/Dodge/Item/Grammar.hs 174;" f legsSPic src/Dodge/Item/Draw/SPic.hs 481;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f @@ -4847,7 +4851,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 393;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f -loadMuzzle src/Dodge/HeldUse.hs 622;" f +loadMuzzle src/Dodge/HeldUse.hs 634;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4865,6 +4869,7 @@ locGoLeft src/Dodge/DoubleTree.hs 318;" f locGoRight src/Dodge/DoubleTree.hs 323;" f locLDTToLocDT src/Dodge/DoubleTree.hs 19;" f locLeftmost src/Dodge/DoubleTree.hs 305;" f +locMuzzles src/Dodge/HeldUse.hs 144;" f locOrient src/Dodge/Item/HeldOffset.hs 56;" f locRightmost src/Dodge/DoubleTree.hs 308;" f locToTop src/Dodge/DoubleTree.hs 300;" f @@ -4898,7 +4903,7 @@ machineAddSound src/Dodge/Machine.hs 49;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f -magAmmoParams src/Dodge/HeldUse.hs 892;" f +magAmmoParams src/Dodge/HeldUse.hs 905;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 171;" f @@ -4913,7 +4918,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 949;" f +makeBullet src/Dodge/HeldUse.hs 962;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4939,7 +4944,7 @@ 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 -makeMuzzleFlare src/Dodge/HeldUse.hs 639;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 651;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4994,11 +4999,11 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f mcSPic src/Dodge/Render/ShapePicture.hs 111;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f -mcShootAuto src/Dodge/HeldUse.hs 1140;" f -mcShootLaser src/Dodge/HeldUse.hs 1133;" f +mcShootAuto src/Dodge/HeldUse.hs 1153;" f +mcShootLaser src/Dodge/HeldUse.hs 1146;" f mcTriggerVal src/Dodge/Machine/Update.hs 99;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f -mcUseHeld src/Dodge/HeldUse.hs 1056;" f +mcUseHeld src/Dodge/HeldUse.hs 1069;" f mcUseItem src/Dodge/Machine/Update.hs 85;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 54;" f @@ -5091,7 +5096,7 @@ multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 34;" f multiLookupTrieI src/SimpleTrie.hs 43;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 665;" f +muzFlareAt src/Dodge/HeldUse.hs 677;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f @@ -5486,7 +5491,7 @@ randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 195;" f readSaveSlot src/Dodge/Save.hs 45;" f -recoilAmount src/Dodge/HeldUse.hs 457;" f +recoilAmount src/Dodge/HeldUse.hs 469;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -5514,7 +5519,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 147;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 859;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 872;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f @@ -5559,8 +5564,8 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f right src/DoubleStack.hs 16;" f -rightChildList src/Dodge/Item/Grammar.hs 166;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 155;" f +rightChildList src/Dodge/Item/Grammar.hs 168;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 157;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5795,15 +5800,15 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 293;" f shineTorch src/Dodge/Creature/State.hs 332;" f -shootBullet src/Dodge/HeldUse.hs 934;" f -shootBullets src/Dodge/HeldUse.hs 924;" f +shootBullet src/Dodge/HeldUse.hs 947;" f +shootBullets src/Dodge/HeldUse.hs 937;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 838;" f +shootLaser src/Dodge/HeldUse.hs 851;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 1156;" f +shootTeslaArc src/Dodge/HeldUse.hs 1169;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 792;" f +shootTractorBeam src/Dodge/HeldUse.hs 805;" f shootersRoom src/Dodge/Room/Room.hs 315;" f shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f @@ -6100,12 +6105,12 @@ topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 57;" f torch src/Dodge/Item/Held/Utility.hs 23;" f torchShape src/Dodge/Item/Draw/SPic.hs 291;" f -torqueAmount src/Dodge/HeldUse.hs 573;" f +torqueAmount src/Dodge/HeldUse.hs 585;" f torqueCr src/Dodge/WorldEffect.hs 67;" f torso src/Dodge/Creature/Picture.hs 99;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 804;" f +tractorBeamAt src/Dodge/HeldUse.hs 817;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 450;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -6150,7 +6155,7 @@ treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 21;" f treePath src/Dodge/Tree/GenerateStructure.hs 13;" f treePaths src/TreeHelp.hs 138;" f treePost src/TreeHelp.hs 45;" f -treeToPotentialFunction src/Dodge/Item/Grammar.hs 133;" f +treeToPotentialFunction src/Dodge/Item/Grammar.hs 135;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f @@ -6345,24 +6350,24 @@ upperRounded src/Shape.hs 185;" f useBulletPayload src/Dodge/Bullet.hs 113;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f -useGasParams src/Dodge/HeldUse.hs 1061;" f +useGasParams src/Dodge/HeldUse.hs 1074;" f useHotkey src/Dodge/Creature/YourControl.hs 70;" f -useInventoryPath src/Dodge/HeldUse.hs 1377;" f +useInventoryPath src/Dodge/HeldUse.hs 1390;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 711;" f +useLoadedAmmo src/Dodge/HeldUse.hs 723;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1337;" f +useRewindGun src/Dodge/HeldUse.hs 1350;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useStopWatch src/Dodge/HeldUse.hs 1318;" f +useStopWatch src/Dodge/HeldUse.hs 1331;" f useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1326;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1339;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f @@ -6386,7 +6391,7 @@ verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f -vgunMuzzles src/Dodge/HeldUse.hs 316;" f +vgunMuzzles src/Dodge/HeldUse.hs 328;" f viewBoundaries src/Dodge/Debug/Picture.hs 304;" f viewClipBounds src/Dodge/Debug/Picture.hs 313;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 186;" f @@ -6398,7 +6403,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 370;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 774;" f +walkNozzle src/Dodge/HeldUse.hs 787;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f @@ -6406,7 +6411,7 @@ wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f -warmupSound src/Dodge/HeldUse.hs 1371;" f +warmupSound src/Dodge/HeldUse.hs 1384;" f warningRooms src/Dodge/Room/Warning.hs 28;" f wasdAim src/Dodge/Creature/YourControl.hs 126;" f wasdDir src/Dodge/WASD.hs 17;" f