From 694bc2b0603db9cc45dfbbacafab3fc8e3251d62 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 18 Dec 2024 15:39:04 +0000 Subject: [PATCH] Allow triggering items using an ECG --- src/Dodge/Creature/State.hs | 22 ++- src/Dodge/HeldUse.hs | 6 +- tags | 262 +++++++++++++++++++----------------- 3 files changed, 161 insertions(+), 129 deletions(-) diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index b7b86c4aa..404dd1dce 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -3,6 +3,7 @@ module Dodge.Creature.State ( doDamage, ) where +import Dodge.HeldUse import Control.Monad import qualified Data.Map.Strict as M import Data.Maybe @@ -176,7 +177,24 @@ invRootItemEffs cr = invItemLocUpdate :: LocationLDT ItemLink ComposedItem -> World -> World invItemLocUpdate loc w = case itm ^. itType of - ATTACH BULLETSYNTH -> fromMaybe w $ do + ATTACH BULLETSYNTH -> trySynthBullet loc w + EQUIP WRIST_ECG | haspulse -> tryUseParent loc w + _ -> w + where + haspulse = + w ^? cWorld . lWorld . creatures . ix 0 . crType . avatarPulse . pulseProgress + == Just 0 + itm = loc ^. locLDT . ldtValue . _1 + +tryUseParent :: LocationLDT ItemLink ComposedItem -> World -> World +tryUseParent loc w = fromMaybe w $ do + t <- locUp loc + let t' = bimap (_iatType) (^. _1) $ t ^. locLDT + cr <- w ^? cWorld . lWorld . creatures . ix 0 + return $ heldEffectNoHammerCheck t' cr w + +trySynthBullet :: LocationLDT ItemLink ComposedItem -> World -> World +trySynthBullet loc w = fromMaybe w $ do i <- itm ^? itLocation . ilInvID x <- itm ^? itUse . uaParams . apInt if x < 100 @@ -227,9 +245,9 @@ invItemLocUpdate loc w = case itm ^. itType of . amagLoadStatus . iaLoaded +~ 1 - _ -> w where itm = loc ^. locLDT . ldtValue . _1 + updateHeldRootItem :: Creature -> World -> World updateHeldRootItem cr = fromMaybe id $ do diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index db0b42e36..b0cc6a2b5 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -3,6 +3,7 @@ module Dodge.HeldUse ( heldEffect, + heldEffectNoHammerCheck, mcUseHeld, ) where @@ -32,7 +33,10 @@ import RandomHelp import qualified SDL heldEffect :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World -heldEffect = hammerCheck $ useTimeCheck heldEffectMuzzles +heldEffect = hammerCheck $ heldEffectNoHammerCheck + +heldEffectNoHammerCheck :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World +heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles hammerCheck :: ChainEffect hammerCheck f it cr w = case it ^? ldtValue . itUse . heldTriggerType of diff --git a/tags b/tags index d22fd4a79..205a7992b 100644 --- a/tags +++ b/tags @@ -47,7 +47,7 @@ AesonHelp src/AesonHelp.hs 1;" m AimAt src/Dodge/Data/ActionPlan.hs 84;" C AimParams src/Dodge/Data/Item/Use.hs 120;" t AimParams src/Dodge/Default/Item/Use/AimParams.hs 1;" m -AimStance src/Dodge/Data/Item/Use.hs 175;" t +AimStance src/Dodge/Data/Item/Use.hs 181;" t Aiming src/Dodge/Data/Creature/Stance.hs 39;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C Airlock src/Dodge/Room/Airlock.hs 4;" m @@ -56,18 +56,19 @@ AllRoomClipBoundaries src/Dodge/Data/Config.hs 105;" C Ambush src/Dodge/Data/ActionPlan.hs 178;" C Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 6;" m Ammo src/Dodge/Item/Ammo.hs 1;" m -AmmoEffectLink src/Dodge/Data/ComposedItem.hs 20;" C -AmmoEffectSF src/Dodge/Data/ComposedItem.hs 41;" C +AmmoEffectLink src/Dodge/Data/ComposedItem.hs 21;" C +AmmoEffectSF src/Dodge/Data/ComposedItem.hs 43;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 16;" C -AmmoMagSF src/Dodge/Data/ComposedItem.hs 35;" C +AmmoMagSF src/Dodge/Data/ComposedItem.hs 37;" C AmmoMagType src/Dodge/Data/Item/Combine.hs 86;" t -AmmoModLink src/Dodge/Data/ComposedItem.hs 17;" C -AmmoModifierSF src/Dodge/Data/ComposedItem.hs 38;" C +AmmoModLink src/Dodge/Data/ComposedItem.hs 18;" C +AmmoModifierSF src/Dodge/Data/ComposedItem.hs 40;" C AmmoParams src/Dodge/Data/Item/Use.hs 114;" t -AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 19;" C -AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 40;" C -AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 18;" C -AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 39;" C +AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 20;" C +AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 42;" C +AmmoPerShot src/Dodge/Data/Item/Use.hs 156;" t +AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 19;" C +AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 41;" C AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 39;" t AnRoom src/Dodge/Annotation/Data.hs 18;" C AnTree src/Dodge/Annotation/Data.hs 19;" C @@ -98,8 +99,8 @@ AttachType src/Dodge/Data/Item/Combine.hs 78;" t Attention src/Dodge/Data/Creature/Perception.hs 60;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" C Audition src/Dodge/Data/Creature/Perception.hs 47;" t -AugmentedHUDLink src/Dodge/Data/ComposedItem.hs 24;" C -AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 34;" C +AugmentedHUDLink src/Dodge/Data/ComposedItem.hs 25;" C +AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 36;" C AutoAI src/Dodge/Data/Creature/Misc.hs 56;" C AutoCrit src/Dodge/Creature/AutoCrit.hs 1;" m AutoDoorObstacle src/Dodge/Data/PathGraph.hs 51;" C @@ -340,7 +341,7 @@ Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m Compose src/Dodge/Tree/Compose.hs 4;" m ComposeLinkType src/Dodge/Data/ComposedItem.hs 15;" t -ComposedItem src/Dodge/Data/ComposedItem.hs 45;" t +ComposedItem src/Dodge/Data/ComposedItem.hs 47;" t ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C @@ -648,7 +649,7 @@ Equipment src/Dodge/Default/Item/Use/Equipment.hs 1;" m Equipment src/Dodge/Equipment.hs 1;" m Equipment src/Dodge/Item/Equipment.hs 1;" m EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 18;" t -EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 30;" C +EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 31;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 72;" t Essential src/Shape/Data.hs 34;" C @@ -744,8 +745,8 @@ FullRes src/Dodge/Data/Config.hs 95;" C FullShadowFidelity src/Shape/Data.hs 24;" C FullSize src/Dodge/Data/Item/Params.hs 31;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 12;" C -FunctionChangeLink src/Dodge/Data/ComposedItem.hs 25;" C -FunctionChangeSF src/Dodge/Data/ComposedItem.hs 42;" C +FunctionChangeLink src/Dodge/Data/ComposedItem.hs 26;" C +FunctionChangeSF src/Dodge/Data/ComposedItem.hs 44;" C GASINJECTOR src/Dodge/Data/Item/Combine.hs 69;" C GEqC src/SameConstr.hs 20;" c GLASSSHARD src/Dodge/Data/Item/Combine.hs 38;" C @@ -753,7 +754,7 @@ GLHelp src/GLHelp.hs 1;" m GRAPECANNON src/Dodge/Data/Item/Combine.hs 138;" C GRAVITYMODULE src/Dodge/Data/Item/Combine.hs 75;" C GREEN src/Color/Data.hs 16;" C -GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 31;" C +GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 32;" C GameOverOptions src/Dodge/Data/Universe.hs 68;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m @@ -832,7 +833,7 @@ HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m HeldItemType src/Dodge/Data/Item/Combine.hs 130;" t HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m HeldParams src/Dodge/Data/Item/Use.hs 81;" t -HeldPlatformSF src/Dodge/Data/ComposedItem.hs 29;" C +HeldPlatformSF src/Dodge/Data/ComposedItem.hs 30;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/HeldUse.hs 4;" m @@ -859,7 +860,7 @@ Huge src/Shape/Data.hs 28;" C Humanoid src/Dodge/Data/Creature/Misc.hs 76;" C Humanoid src/Dodge/Humanoid.hs 1;" m HumanoidAI src/Dodge/Data/Creature/Misc.hs 48;" t -ILink src/Dodge/Data/ComposedItem.hs 47;" C +ILink src/Dodge/Data/ComposedItem.hs 49;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 105;" C IRONBAR src/Dodge/Data/Item/Combine.hs 57;" C @@ -935,19 +936,19 @@ ItEffect src/Dodge/ItEffect.hs 1;" m ItID src/Dodge/Data/Item.hs 29;" t ItInvEffect src/Dodge/Data/Item/Effect.hs 19;" t ItTargeting src/Dodge/Data/Item.hs 43;" C -ItZoom src/Dodge/Data/Item/Use.hs 182;" t +ItZoom src/Dodge/Data/Item/Use.hs 188;" t Item src/Dodge/Data/Item.hs 31;" t Item src/Dodge/Data/Item.hs 4;" m Item src/Dodge/Default/Item.hs 1;" m Item src/Dodge/Item.hs 3;" m ItemClust src/Dodge/Combine/Graph.hs 20;" C ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t -ItemLink src/Dodge/Data/ComposedItem.hs 47;" t +ItemLink src/Dodge/Data/ComposedItem.hs 49;" t ItemLocation src/Dodge/Data/Item/Location.hs 27;" t ItemParams src/Dodge/Data/Item/Params.hs 13;" t ItemParams src/Dodge/Tesla/ItemParams.hs 1;" m ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C -ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 28;" t +ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 29;" t ItemTargeting src/Dodge/Data/Item.hs 42;" t ItemType src/Dodge/Data/Item/Combine.hs 15;" t ItemUse src/Dodge/Data/Item/Use.hs 35;" t @@ -968,7 +969,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 43;" C LBoost src/Dodge/Data/Item/HeldUse.hs 45;" C LDT src/Dodge/Data/DoubleTree.hs 39;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C -LDTComb src/Dodge/Item/Grammar.hs 135;" t +LDTComb src/Dodge/Item/Grammar.hs 141;" t LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C @@ -982,11 +983,11 @@ LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 58;" C LRewind src/Dodge/Data/Item/HeldUse.hs 40;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t -LTest src/Dodge/Data/ComposedItem.hs 52;" C +LTest src/Dodge/Data/ComposedItem.hs 54;" C LTimePause src/Dodge/Data/Item/HeldUse.hs 41;" C LTimeScroll src/Dodge/Data/Item/HeldUse.hs 42;" C LUnsafeBlink src/Dodge/Data/Item/HeldUse.hs 44;" C -LUpdate src/Dodge/Data/ComposedItem.hs 57;" C +LUpdate src/Dodge/Data/ComposedItem.hs 59;" C LWorld src/Dodge/Data/LWorld.hs 96;" t LWorld src/Dodge/Data/LWorld.hs 6;" m LabLink src/Dodge/Data/Room.hs 45;" C @@ -1044,8 +1045,8 @@ LimitedWater src/Dodge/Data/Scenario.hs 40;" C LinearShockwave src/Dodge/Data/LinearShockwave.hs 13;" t LinearShockwave src/Dodge/Data/LinearShockwave.hs 6;" m Link src/Dodge/Room/Link.hs 6;" m -LinkTest src/Dodge/Data/ComposedItem.hs 52;" t -LinkUpdate src/Dodge/Data/ComposedItem.hs 57;" t +LinkTest src/Dodge/Data/ComposedItem.hs 54;" t +LinkUpdate src/Dodge/Data/ComposedItem.hs 59;" t List src/Dodge/Combine/List.hs 1;" m List src/Dodge/Render/List.hs 3;" m ListDisplayParams src/Dodge/Data/SelectionList.hs 13;" t @@ -1203,7 +1204,7 @@ Multiset src/Multiset.hs 4;" m Music src/Music.hs 1;" m MusicData src/Music.hs 7;" t Mute src/Dodge/Data/Creature/Misc.hs 28;" C -Muzzle src/Dodge/Data/Item/Use.hs 156;" t +Muzzle src/Dodge/Data/Item/Use.hs 161;" t MuzzleDetector src/Dodge/Data/Item/Use.hs 153;" C MuzzleEffect src/Dodge/Data/Item/Use.hs 140;" t MuzzleEffect src/Dodge/Data/MuzzleEffect.hs 5;" m @@ -1333,7 +1334,7 @@ OnSpecial src/Dodge/Data/Equipment/Misc.hs 27;" C OnTurret src/Dodge/Data/Item/Location.hs 35;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneArgument src/Dodge/Data/Terminal.hs 96;" C -OneHand src/Dodge/Data/Item/Use.hs 179;" C +OneHand src/Dodge/Data/Item/Use.hs 185;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C OnwardList src/Dodge/Annotation/Data.hs 16;" C Opacity src/Dodge/Data/Wall.hs 38;" t @@ -1577,8 +1578,8 @@ Religion src/Dodge/Data/Scenario.hs 47;" C Reload src/Dodge/Data/ActionPlan.hs 190;" C ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 32;" C -RemoteScreenLink src/Dodge/Data/ComposedItem.hs 23;" C -RemoteScreenSF src/Dodge/Data/ComposedItem.hs 36;" C +RemoteScreenLink src/Dodge/Data/ComposedItem.hs 24;" C +RemoteScreenSF src/Dodge/Data/ComposedItem.hs 38;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C RemoveShieldWall src/Dodge/Data/Item/Effect.hs 26;" C Remove_LOS src/Dodge/Data/Config.hs 77;" C @@ -1966,6 +1967,8 @@ TreeHelp src/TreeHelp.hs 12;" m Triangulate src/Geometry/Triangulate.hs 3;" m Trie src/SimpleTrie.hs 9;" t TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m +TriggerLink src/Dodge/Data/ComposedItem.hs 17;" C +TriggerSF src/Dodge/Data/ComposedItem.hs 35;" C TriggerType src/Dodge/Data/Item/Use.hs 69;" t TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C @@ -1979,13 +1982,13 @@ Turret src/Dodge/Data/Machine.hs 57;" t Turret src/Dodge/Placement/Instance/Turret.hs 1;" m TurretInt src/Dodge/Data/Item/Location.hs 20;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C -TwoHandFlat src/Dodge/Data/Item/Use.hs 178;" C -TwoHandOver src/Dodge/Data/Item/Use.hs 177;" C -TwoHandUnder src/Dodge/Data/Item/Use.hs 176;" C +TwoHandFlat src/Dodge/Data/Item/Use.hs 184;" C +TwoHandOver src/Dodge/Data/Item/Use.hs 183;" C +TwoHandUnder src/Dodge/Data/Item/Use.hs 182;" C Type src/Dodge/Data/Damage/Type.hs 6;" m Type src/Dodge/Terminal/Type.hs 1;" m Typical src/Shape/Data.hs 36;" C -UncomposableIsolateSF src/Dodge/Data/ComposedItem.hs 37;" C +UncomposableIsolateSF src/Dodge/Data/ComposedItem.hs 39;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C UnderRoof src/Dodge/Data/Scenario.hs 79;" C UnderSea src/Dodge/Data/Scenario.hs 77;" C @@ -2019,6 +2022,7 @@ UseConsume src/Dodge/Data/Item/Use.hs 51;" C UseCraft src/Dodge/Data/Item/Use.hs 53;" C UseDelay src/Dodge/Data/Item/HeldDelay.hs 13;" t UseEquip src/Dodge/Data/Item/Use.hs 52;" C +UseExactly src/Dodge/Data/Item/Use.hs 157;" C UseHeld src/Dodge/Data/Item/Use.hs 36;" C UseHotkey src/Dodge/Data/Item/Use.hs 44;" C UseItem src/Dodge/Data/ActionPlan.hs 37;" C @@ -2028,6 +2032,7 @@ UseMvTargetPos src/Dodge/Data/ActionPlan.hs 163;" C UseScope src/Dodge/Data/Item/Use.hs 60;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C +UseUpTo src/Dodge/Data/Item/Use.hs 158;" C UsedInLink src/Dodge/Data/Room.hs 61;" C UsedOutLink src/Dodge/Data/Room.hs 56;" C Utility src/Dodge/Item/Held/Utility.hs 1;" m @@ -2112,10 +2117,10 @@ WdWdFromItCrixWdWd src/Dodge/Data/WorldEffect.hs 33;" C WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 32;" C WdYouPos src/Dodge/Data/WorldEffect.hs 40;" C Weapon src/Dodge/Item/Weapon.hs 2;" m -WeaponScopeLink src/Dodge/Data/ComposedItem.hs 21;" C -WeaponScopeSF src/Dodge/Data/ComposedItem.hs 32;" C -WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 22;" C -WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 33;" C +WeaponScopeLink src/Dodge/Data/ComposedItem.hs 22;" C +WeaponScopeSF src/Dodge/Data/ComposedItem.hs 33;" C +WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 23;" C +WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 34;" C Weapons src/Dodge/Item/Held/Weapons.hs 1;" m West src/Dodge/Data/CardinalPoint.hs 7;" C West8 src/Dodge/Data/CardinalPoint.hs 17;" C @@ -2585,8 +2590,8 @@ _hudElement src/Dodge/Data/HUD.hs 46;" f _humanoidAI src/Dodge/Data/Creature/Misc.hs 80;" f _iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 22;" f _iaMax src/Dodge/Data/Item/Use/Consumption.hs 21;" f -_iatOrient src/Dodge/Data/ComposedItem.hs 49;" f -_iatType src/Dodge/Data/ComposedItem.hs 48;" f +_iatOrient src/Dodge/Data/ComposedItem.hs 51;" f +_iatType src/Dodge/Data/ComposedItem.hs 50;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 22;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 21;" f _ibtBulletMod src/Dodge/Data/Item/Combine.hs 24;" f @@ -2635,9 +2640,9 @@ _itTgPos src/Dodge/Data/Item.hs 44;" f _itType src/Dodge/Data/Item.hs 33;" f _itUse src/Dodge/Data/Item.hs 32;" f _itemLocations src/Dodge/Data/LWorld.hs 99;" f -_izFac src/Dodge/Data/Item/Use.hs 185;" f -_izMax src/Dodge/Data/Item/Use.hs 183;" f -_izMin src/Dodge/Data/Item/Use.hs 184;" f +_izFac src/Dodge/Data/Item/Use.hs 191;" f +_izMax src/Dodge/Data/Item/Use.hs 189;" f +_izMin src/Dodge/Data/Item/Use.hs 190;" f _killTarget src/Dodge/Data/ActionPlan.hs 198;" f _lClock src/Dodge/Data/LWorld.hs 141;" f _lTestInt src/Dodge/Data/LWorld.hs 143;" f @@ -2685,9 +2690,9 @@ _lsID src/Dodge/Data/LightSource.hs 24;" f _lsParam src/Dodge/Data/LightSource.hs 25;" f _lsPos src/Dodge/Data/LightSource.hs 17;" f _lsRad src/Dodge/Data/LightSource.hs 18;" f -_luChildUpdate src/Dodge/Data/ComposedItem.hs 60;" f -_luLinkType src/Dodge/Data/ComposedItem.hs 58;" f -_luParentUpdate src/Dodge/Data/ComposedItem.hs 59;" f +_luChildUpdate src/Dodge/Data/ComposedItem.hs 62;" f +_luLinkType src/Dodge/Data/ComposedItem.hs 60;" f +_luParentUpdate src/Dodge/Data/ComposedItem.hs 61;" f _lwID src/Dodge/Data/LinearShockwave.hs 15;" f _lwPoints src/Dodge/Data/LinearShockwave.hs 16;" f _lwPos src/Dodge/Data/LinearShockwave.hs 14;" f @@ -2771,12 +2776,13 @@ _mvSpeed src/Dodge/Data/Creature/Misc.hs 39;" f _mvToPoint src/Dodge/Data/Creature.hs 97;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 43;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 42;" f -_mzAmmoSlot src/Dodge/Data/Item/Use.hs 160;" f -_mzEffect src/Dodge/Data/Item/Use.hs 162;" f -_mzFlareType src/Dodge/Data/Item/Use.hs 161;" f -_mzInaccuracy src/Dodge/Data/Item/Use.hs 159;" f -_mzPos src/Dodge/Data/Item/Use.hs 157;" f -_mzRot src/Dodge/Data/Item/Use.hs 158;" f +_mzAmmoPerShot src/Dodge/Data/Item/Use.hs 168;" f +_mzAmmoSlot src/Dodge/Data/Item/Use.hs 165;" f +_mzEffect src/Dodge/Data/Item/Use.hs 167;" f +_mzFlareType src/Dodge/Data/Item/Use.hs 166;" f +_mzInaccuracy src/Dodge/Data/Item/Use.hs 164;" f +_mzPos src/Dodge/Data/Item/Use.hs 162;" f +_mzRot src/Dodge/Data/Item/Use.hs 163;" f _newArcStep src/Dodge/Data/Item/Params.hs 25;" f _nodeMetaTree src/Dodge/Data/MetaTree.hs 14;" f _nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f @@ -3157,8 +3163,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 118;" f _trieChildren src/SimpleTrie.hs 11;" f _trieMVal src/SimpleTrie.hs 10;" f _triggers src/Dodge/Data/LWorld.hs 127;" f -_tryLeftLink src/Dodge/Data/ComposedItem.hs 53;" f -_tryRightLink src/Dodge/Data/ComposedItem.hs 54;" f +_tryLeftLink src/Dodge/Data/ComposedItem.hs 55;" f +_tryRightLink src/Dodge/Data/ComposedItem.hs 56;" f _ttDeathEffect src/Dodge/Data/Terminal.hs 84;" f _ttTriggerID src/Dodge/Data/Terminal.hs 83;" f _tuDir src/Dodge/Data/Machine.hs 61;" f @@ -3184,9 +3190,11 @@ _unST src/Dodge/Tree/Compose/Data.hs 12;" f _unTO src/Shader/Data.hs 59;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f +_useExactly src/Dodge/Data/Item/Use.hs 157;" 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 +_useUpTo src/Dodge/Data/Item/Use.hs 158;" f _uvCanContinue src/Dodge/Data/Universe.hs 38;" f _uvConfig src/Dodge/Data/Universe.hs 36;" f _uvDebug src/Dodge/Data/Universe.hs 43;" f @@ -3340,7 +3348,7 @@ airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f airlockSimple src/Dodge/Room/Airlock.hs 66;" f airlockZ src/Dodge/Room/Airlock.hs 91;" f allHotkeys src/Dodge/Creature/YourControl.hs 50;" f -allInvLocs src/Dodge/Item/Grammar.hs 216;" f +allInvLocs src/Dodge/Item/Grammar.hs 222;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f ammoMagSPic src/Dodge/Item/Draw/SPic.hs 46;" f @@ -3420,8 +3428,8 @@ autoCrit src/Dodge/Creature/AutoCrit.hs 13;" 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 514;" f -autoPistol src/Dodge/Item/Held/Stick.hs 46;" f -autoRifle src/Dodge/Item/Held/Cane.hs 65;" f +autoPistol src/Dodge/Item/Held/Stick.hs 47;" f +autoRifle src/Dodge/Item/Held/Cane.hs 66;" f awakeLevelPerception src/Dodge/Creature/Perception.hs 162;" f axisInt src/Geometry/Intersect.hs 227;" f azure src/Color.hs 22;" f @@ -3443,14 +3451,14 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 257;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -basePCI src/Dodge/Item/Grammar.hs 101;" f +basePCI src/Dodge/Item/Grammar.hs 107;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 260;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 344;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 327;" f baseShoulder src/Dodge/Creature/Picture.hs 128;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 234;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 229;" f -baseStickSpread src/Dodge/Item/Held/Stick.hs 27;" f +baseStickSpread src/Dodge/Item/Held/Stick.hs 28;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 37;" f basicBulDams src/Dodge/Item/Weapon/Bullet.hs 25;" f @@ -3460,7 +3468,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 34;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 210;" f +basicMuzFlare src/Dodge/HeldUse.hs 214;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 96;" f batteryPack src/Dodge/Item/Equipment.hs 57;" f @@ -3493,7 +3501,7 @@ blood7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f blood8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 342;" f blowTorch src/Dodge/Item/Held/SprayGuns.hs 51;" f blue src/Color.hs 16;" f -blunderbuss src/Dodge/Item/Held/Cone.hs 25;" f +blunderbuss src/Dodge/Item/Held/Cone.hs 26;" f boostSelfL src/Dodge/Luse.hs 55;" f boosterGun src/Dodge/Item/Equipment/Booster.hs 9;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f @@ -3525,7 +3533,7 @@ bulletPayloadModule src/Dodge/Item/Scope.hs 44;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 124;" f bulletTargetingModule src/Dodge/Item/Scope.hs 41;" f bulletWeapons src/Dodge/Combine/Combinations.hs 246;" f -burstRifle src/Dodge/Item/Held/Cane.hs 71;" f +burstRifle src/Dodge/Item/Held/Cane.hs 72;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 520;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f @@ -3545,7 +3553,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 250;" f +chainLinkOrientation src/Dodge/Creature/State.hs 263;" f chainPairs src/Geometry.hs 363;" f changeSwapOther src/Dodge/Inventory.hs 150;" f changeSwapSel src/Dodge/Inventory.hs 142;" f @@ -3727,7 +3735,7 @@ createItemYou src/Dodge/Inventory/Add.hs 94;" 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 514;" f +createProjectile src/Dodge/HeldUse.hs 518;" f createShell src/Dodge/Projectile/Create.hs 19;" f createShieldWall src/Dodge/Euse.hs 133;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f @@ -3884,7 +3892,7 @@ defaultInput src/Dodge/Default/World.hs 14;" f defaultIntention src/Dodge/Default/Creature.hs 105;" f defaultInvSize src/Dodge/Default/Creature.hs 79;" f defaultItEffect src/Dodge/Default/Item.hs 46;" f -defaultItZoom src/Dodge/Default/Item/Use/AimParams.hs 30;" f +defaultItZoom src/Dodge/Default/Item/Use/AimParams.hs 31;" f defaultLS src/Dodge/Default/LightSource.hs 8;" f defaultLWorld src/Dodge/Default/World.hs 94;" f defaultLeftItem src/Dodge/Default/Item.hs 29;" f @@ -3930,7 +3938,7 @@ detV src/Geometry/Vector.hs 93;" f detectorColor src/Dodge/Item/Draw/SPic.hs 393;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 192;" f -determineProjectileTracking src/Dodge/HeldUse.hs 503;" f +determineProjectileTracking src/Dodge/HeldUse.hs 507;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 53;" f diffAngles src/Geometry.hs 196;" f @@ -3985,7 +3993,7 @@ doDrag src/Dodge/Update/Input/InGame.hs 98;" 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 458;" f +doGenFloat src/Dodge/HeldUse.hs 462;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f @@ -4050,7 +4058,7 @@ doublePairSet src/Geometry.hs 153;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 156;" f drawAllShadows src/Dodge/Shadows.hs 5;" f -drawAugmentedHUD src/Dodge/Creature/State.hs 277;" f +drawAugmentedHUD src/Dodge/Creature/State.hs 290;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBlip src/Dodge/RadarBlip.hs 13;" f @@ -4272,7 +4280,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 72;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 40;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 56;" f flamerPic src/Dodge/Item/Draw/SPic.hs 330;" f -flareCircleAt src/Dodge/HeldUse.hs 191;" f +flareCircleAt src/Dodge/HeldUse.hs 195;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 49;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 9;" f @@ -4339,7 +4347,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 455;" f +gasCreate src/Dodge/HeldUse.hs 459;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4350,12 +4358,12 @@ geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 77;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 81;" f getArguments src/Dodge/Update/Scroll.hs 152;" f getArguments' src/Dodge/Update/Scroll.hs 140;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulletTrajectory src/Dodge/HeldUse.hs 360;" f -getBulletType src/Dodge/HeldUse.hs 334;" f +getBulletTrajectory src/Dodge/HeldUse.hs 364;" f +getBulletType src/Dodge/HeldUse.hs 338;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f getCrDexterity src/Dodge/Creature/Statistics.hs 13;" f @@ -4364,9 +4372,9 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 16;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 383;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getLaserColor src/Dodge/HeldUse.hs 207;" f -getLaserDamage src/Dodge/HeldUse.hs 204;" f -getLaserPhaseV src/Dodge/HeldUse.hs 201;" f +getLaserColor src/Dodge/HeldUse.hs 211;" f +getLaserDamage src/Dodge/HeldUse.hs 208;" f +getLaserPhaseV src/Dodge/HeldUse.hs 205;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 367;" f @@ -4403,7 +4411,7 @@ goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f gotoTerminal src/Dodge/Update.hs 128;" f grahamEliminate src/Geometry/Polygon.hs 125;" f grahamScan src/Geometry/Polygon.hs 116;" f -grapeCannon src/Dodge/Item/Held/Cone.hs 34;" f +grapeCannon src/Dodge/Item/Held/Cone.hs 35;" f graphToEdges src/Dodge/Graph.hs 35;" f graphToIncidence src/Dodge/Graph.hs 40;" f graphicsMenu src/Dodge/Menu.hs 162;" f @@ -4552,16 +4560,16 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 315;" f interweave src/Justify.hs 17;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 197;" f +invAdj src/Dodge/Item/Grammar.hs 203;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 219;" f invHead src/Dodge/Render/HUD.hs 391;" f invItemLocUpdate src/Dodge/Creature/State.hs 177;" f -invLDT src/Dodge/Item/Grammar.hs 177;" f +invLDT src/Dodge/Item/Grammar.hs 183;" f invRootItemEffs src/Dodge/Creature/State.hs 170;" f -invRootMap src/Dodge/Item/Grammar.hs 186;" f -invRootTrees src/Dodge/Item/Grammar.hs 207;" f +invRootMap src/Dodge/Item/Grammar.hs 192;" f +invRootTrees src/Dodge/Item/Grammar.hs 213;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 164;" f @@ -4577,12 +4585,12 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 56;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 218;" f +isAmmoIntLink src/Dodge/HeldUse.hs 222;" f isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 90;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFrictionless src/Dodge/Creature/State.hs 431;" f +isFrictionless src/Dodge/Creature/State.hs 444;" f isGas src/Dodge/Euse.hs 63;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 169;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f @@ -4607,12 +4615,12 @@ isotriBWH src/Geometry/Polygon.hs 20;" f itDim src/Dodge/Item/InvSize.hs 20;" f itInvHeight src/Dodge/Item/InvSize.hs 11;" f itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 82;" f -itemBaseConnections src/Dodge/Item/Grammar.hs 105;" f +itemBaseConnections src/Dodge/Item/Grammar.hs 111;" f itemBaseName src/Dodge/Item/Display.hs 45;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 54;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f -itemDetectorEffect src/Dodge/HeldUse.hs 243;" f +itemDetectorEffect src/Dodge/HeldUse.hs 247;" f itemDisplay src/Dodge/Item/Display.hs 16;" f itemDisplayPad src/Dodge/Item/Display.hs 29;" f itemEquipPict src/Dodge/Item/Draw.hs 17;" f @@ -4631,9 +4639,9 @@ itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f itemString src/Dodge/Item/Display.hs 42;" f itemToBreakLists src/Dodge/Item/Grammar.hs 50;" f -itemToFunction src/Dodge/Item/Grammar.hs 83;" f +itemToFunction src/Dodge/Item/Grammar.hs 87;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f -itemUpdate src/Dodge/Creature/State.hs 403;" f +itemUpdate src/Dodge/Creature/State.hs 416;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 23;" f @@ -4642,7 +4650,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 18;" f itmUsageInfo src/Dodge/Item/Info.hs 198;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 167;" f +joinItemsInList src/Dodge/Item/Grammar.hs 173;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f @@ -4669,13 +4677,13 @@ lampCrSPic src/Dodge/Render/ShapePicture.hs 58;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 353;" f -lasRayAt src/Dodge/HeldUse.hs 311;" f +lasRayAt src/Dodge/HeldUse.hs 315;" 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 lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f laser src/Dodge/Item/Held/BatteryGuns.hs 38;" f -laserLinkTest src/Dodge/Item/Grammar.hs 110;" f +laserLinkTest src/Dodge/Item/Grammar.hs 116;" f lastMap src/Dodge/DoubleTree.hs 174;" f latchkey src/Dodge/Item/Held/Utility.hs 22;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f @@ -4695,10 +4703,10 @@ ldtToIndentList src/Dodge/DoubleTree.hs 146;" f ldtToLoc src/Dodge/DoubleTree.hs 187;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 94;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 137;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 143;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 99;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 151;" f +leftRightCombine src/Dodge/Item/Grammar.hs 157;" f legsSPic src/Dodge/Item/Draw/SPic.hs 417;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f @@ -4726,8 +4734,8 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 345;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f -llleft src/Dodge/Item/Grammar.hs 113;" f -llright src/Dodge/Item/Grammar.hs 119;" f +llleft src/Dodge/Item/Grammar.hs 119;" f +llright src/Dodge/Item/Grammar.hs 125;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 380;" f @@ -4772,7 +4780,7 @@ lsPosRad src/Dodge/LightSource.hs 17;" f ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 13;" f m src/ShortShow.hs 34;" f machineAddSound src/Dodge/Machine.hs 49;" f -machinePistol src/Dodge/Item/Held/Stick.hs 53;" f +machinePistol src/Dodge/Item/Held/Stick.hs 54;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f magShield src/Dodge/Item/Equipment.hs 28;" f @@ -4789,7 +4797,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 393;" f +makeBullet src/Dodge/HeldUse.hs 397;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4815,7 +4823,7 @@ makeFragBullets src/Dodge/Bullet.hs 107;" 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 149;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 153;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4870,10 +4878,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 124;" f mcSPic src/Dodge/Render/ShapePicture.hs 132;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 87;" f mcSensorUpdate src/Dodge/Machine/Update.hs 119;" f -mcShootLaser src/Dodge/HeldUse.hs 482;" f +mcShootLaser src/Dodge/HeldUse.hs 486;" f mcTriggerVal src/Dodge/Machine/Update.hs 93;" f mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f -mcUseHeld src/Dodge/HeldUse.hs 419;" f +mcUseHeld src/Dodge/HeldUse.hs 423;" f mcUseItem src/Dodge/Machine/Update.hs 79;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 84;" f @@ -4912,7 +4920,7 @@ minCrIXOn src/Dodge/Zoning/Creature.hs 45;" f minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f miniGunCrit src/Dodge/Creature.hs 62;" f -miniGunX src/Dodge/Item/Held/Cane.hs 80;" f +miniGunX src/Dodge/Item/Held/Cane.hs 81;" f miniGunXPict src/Dodge/Item/Draw/SPic.hs 308;" f miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 303;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f @@ -4966,7 +4974,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 177;" f +muzFlareAt src/Dodge/HeldUse.hs 181;" 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 @@ -5111,7 +5119,7 @@ pincerP'' src/Dodge/Creature/Boid.hs 103;" f pincerP''' src/Dodge/Creature/Boid.hs 74;" f pingPongBetween src/Render.hs 220;" f pipe src/Dodge/Item/Craftable.hs 41;" f -pistol src/Dodge/Item/Held/Stick.hs 30;" f +pistol src/Dodge/Item/Held/Stick.hs 31;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 13;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 113;" f @@ -5373,7 +5381,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteScreen src/Dodge/Item/Scope.hs 50;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 321;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 325;" f removeDot src/ShortShow.hs 30;" f removeHotkey src/Dodge/Hotkey.hs 41;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -5415,9 +5423,9 @@ rezInvBox src/Dodge/Room/RezBox.hs 134;" f rezText src/Dodge/Story.hs 4;" f rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 72;" f -rifle src/Dodge/Item/Held/Cane.hs 49;" f +rifle src/Dodge/Item/Held/Cane.hs 50;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 144;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 150;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5583,7 +5591,7 @@ setOldPos src/Dodge/Update.hs 462;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 382;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 395;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 316;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 85;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5650,17 +5658,17 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 282;" f -shineTorch src/Dodge/Creature/State.hs 324;" f -shootBullet src/Dodge/HeldUse.hs 380;" f +shineTargetLaser src/Dodge/Creature/State.hs 295;" f +shineTorch src/Dodge/Creature/State.hs 337;" f +shootBullet src/Dodge/HeldUse.hs 384;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootL src/Dodge/Item/Weapon/TriggerType.hs 165;" f -shootLaser src/Dodge/HeldUse.hs 291;" f +shootLaser src/Dodge/HeldUse.hs 295;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 491;" f +shootTeslaArc src/Dodge/HeldUse.hs 495;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 270;" f +shootTractorBeam src/Dodge/HeldUse.hs 274;" 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 @@ -5716,7 +5724,7 @@ smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 384;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 346;" f smallPillar src/Dodge/Room/Pillar.hs 32;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f -smg src/Dodge/Item/Held/Stick.hs 60;" f +smg src/Dodge/Item/Held/Stick.hs 61;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f @@ -5919,7 +5927,7 @@ toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f toFloatVAs src/Shader/Compile.hs 211;" f toLabel src/Dodge/Cleat.hs 16;" f -toLasgunUpdate src/Dodge/Item/Grammar.hs 124;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 130;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f @@ -5946,7 +5954,7 @@ torqueCr src/Dodge/WorldEffect.hs 63;" 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 280;" f +tractorBeamAt src/Dodge/HeldUse.hs 284;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 377;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -6017,6 +6025,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f trySiphonFuel src/Dodge/Euse.hs 45;" f trySpinByCID src/Dodge/Projectile/Update.hs 95;" f +trySynthBullet src/Dodge/Creature/State.hs 191;" f +tryUseParent src/Dodge/Creature/State.hs 188;" f turnTo src/Dodge/Movement/Turn.hs 4;" f turnToAmount src/Dodge/Movement/Turn.hs 15;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 16;" f @@ -6050,8 +6060,8 @@ upHammer src/Dodge/Default.hs 75;" f upProjectile src/Dodge/Projectile/Update.hs 26;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f -updateAttachedItems src/Dodge/Creature/State.hs 240;" f -updateAutoRecharge src/Dodge/Creature/State.hs 414;" f +updateAttachedItems src/Dodge/Creature/State.hs 253;" f +updateAutoRecharge src/Dodge/Creature/State.hs 427;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f @@ -6085,7 +6095,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 346;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 339;" f updateGusts src/Dodge/Update.hs 704;" f -updateHeldRootItem src/Dodge/Creature/State.hs 234;" f +updateHeldRootItem src/Dodge/Creature/State.hs 247;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 498;" f updateIMl' src/Dodge/Update.hs 503;" f @@ -6094,8 +6104,8 @@ updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 399;" f updateInstantBullets src/Dodge/Update.hs 642;" f updateInv src/Dodge/Creature/State.hs 154;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 89;" f -updateItemTargeting src/Dodge/Creature/State.hs 351;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 260;" f +updateItemTargeting src/Dodge/Creature/State.hs 364;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 273;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 393;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 381;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6111,7 +6121,7 @@ updateMouseContextGame src/Dodge/Update.hs 315;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 87;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 79;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 142;" f -updateMovement src/Dodge/Creature/State.hs 421;" f +updateMovement src/Dodge/Creature/State.hs 434;" f updateObjCatMaybes src/Dodge/Update.hs 520;" f updateObjMapMaybe src/Dodge/Update.hs 513;" f updatePastWorlds src/Dodge/Update.hs 415;" f @@ -6187,13 +6197,13 @@ useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 23;" f useEquipment src/Dodge/Creature/State.hs 148;" f -useGasParams src/Dodge/HeldUse.hs 430;" f +useGasParams src/Dodge/HeldUse.hs 434;" f useHotKey src/Dodge/Creature/YourControl.hs 47;" f useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 116;" f useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 92;" f useL src/Dodge/Luse.hs 11;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 222;" f +useLoadedAmmo src/Dodge/HeldUse.hs 226;" f useMagShield src/Dodge/Euse.hs 68;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 7;" f @@ -6205,7 +6215,7 @@ useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f -useUpdate src/Dodge/Creature/State.hs 406;" f +useUpdate src/Dodge/Creature/State.hs 419;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f v2z src/Geometry/Vector3D.hs 93;" f @@ -6237,7 +6247,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 30;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 291;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 248;" f +walkNozzle src/Dodge/HeldUse.hs 252;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 80;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f