From 87f068f01a8f0039222356b96fcc2f4aab61069d Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 30 Dec 2024 11:41:20 +0000 Subject: [PATCH] Add gimbal and gyroscope, allowing more fine tuned projectile control --- src/Dodge/Creature.hs | 4 +- src/Dodge/Data/ComposedItem.hs | 2 + src/Dodge/Data/Item/Combine.hs | 2 + src/Dodge/HeldUse.hs | 18 +- src/Dodge/Item.hs | 2 + src/Dodge/Item/Display.hs | 2 + src/Dodge/Item/Grammar.hs | 25 +- src/Dodge/Item/InventoryColor.hs | 1 + src/Dodge/Item/Scope.hs | 8 + src/Dodge/Projectile/Create.hs | 26 +- tags | 457 ++++++++++++++++--------------- 11 files changed, 308 insertions(+), 239 deletions(-) diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 139cf96de..b034d23a3 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -240,7 +240,9 @@ inventoryX c = case c of 'U' -> [targetingScope tt | tt <- [minBound .. maxBound]] <> - [ battery + [ gyroscope + , gimbal + , battery , laser , augmentedHUD , rLauncher diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 844ae58d1..e2927e18e 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -29,6 +29,7 @@ data ComposeLinkType | AugmentedHUDLink | FunctionChangeLink | MakeAutoLink + | ProjectileStabiliserLink deriving (Eq, Ord, Show, Read) data ItemStructuralFunction @@ -52,6 +53,7 @@ data ItemStructuralFunction | AmmoEffectSF AmmoType | FunctionChangeSF | MakeAutoSF + | ProjectileStabiliserSF deriving (Eq, Ord, Show, Read) type ComposedItem = (Item, ItemStructuralFunction, LinkTest) diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index d030cfa6a..e1ea0d0ca 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -72,6 +72,8 @@ data AttachType | BULLETSYNTH | REMOTESCREEN | JOYSTICK + | GIMBAL + | GYROSCOPE | REMOTEDETONATOR | SMOKEREDUCER | HOMINGMODULE diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index d168cc769..657d6cefa 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -300,7 +300,8 @@ useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cme MuzzleTesla -> shootTeslaArc itm cr mz w MuzzleTractor -> shootTractorBeam cr w MuzzleRLauncher -> createProjectileR itmtree magtree mz cr w - MuzzleGLauncher -> createProjectile (Grenade (GBounce 2)) magtree mz cr w + MuzzleGLauncher -> createProjectile (Grenade (GBounce 2)) magtree + (getPJStabiliser itmtree) mz cr w MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w MuzzleShatter -> shootShatter itm cr w MuzzleDetector -> itemDetectorEffect itm cr w @@ -619,19 +620,30 @@ createProjectileR itmtree magtree = (determineProjectileTracking magtree itmtree) smoke ) magtree + (getPJStabiliser itmtree) where smoke | isJust $ lookup SmokeReducerLink (magtree ^. ldtLeft) = Just ReducedRocketSmoke | otherwise = Nothing + +getPJStabiliser :: LabelDoubleTree ComposeLinkType Item -> Maybe PJStabiliser +getPJStabiliser ldt = case lookup ProjectileStabiliserLink (ldt ^. ldtRight) of + Just ldt' -> case ldt' ^? ldtValue . itType . ibtAttach of + Just GIMBAL -> Just StabOrthReduce + Just GYROSCOPE -> Just StabSpinIncrease + _ -> Nothing + _ -> Nothing + createProjectile :: ProjectileType -> LabelDoubleTree ComposeLinkType Item -> + Maybe PJStabiliser -> Muzzle -> Creature -> World -> World -createProjectile pjtype magtree muz cr = fromMaybe failsound $ do +createProjectile pjtype magtree stab muz cr = fromMaybe failsound $ do magid <- magtree ^? ldtValue . itLocation . ilInvID ammoitem <- cr ^? crInv . ix magid let rdetonate = (^. ldtValue . itID) <$> @@ -641,7 +653,7 @@ createProjectile pjtype magtree muz cr = fromMaybe failsound $ do aparams <- ((magtree ^? ldtLeft) >>= lookup AmmoPayloadLink >>= (^? ldtValue . itType . ibtAttach . shellPayload)) <|> ammoitem ^? itConsumables . magParams . ampPayload return $ - createShell rdetonate rscreen pjtype aparams muz cr + createShell rdetonate rscreen stab pjtype aparams muz cr . startthesound where -- the sound should be moved to the projectile firing diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index 8fe67daf3..41ddc0966 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -41,6 +41,8 @@ itemFromAttachType at = case at of BULLETSYNTH -> bulletSynthesizer REMOTESCREEN -> remoteScreen JOYSTICK -> joystick + GIMBAL -> gimbal + GYROSCOPE -> gyroscope REMOTEDETONATOR -> remoteDetonator SMOKEREDUCER -> smokeReducer -- ROCKETHOMER -> rocketHomer diff --git a/src/Dodge/Item/Display.hs b/src/Dodge/Item/Display.hs index 90125499b..759e2662d 100644 --- a/src/Dodge/Item/Display.hs +++ b/src/Dodge/Item/Display.hs @@ -78,6 +78,8 @@ showAttachItem t = case t of HOMINGMODULE -> "HOMING MOD" AUGMENTEDHUD -> "AUGMENTED HUD" SHELLPAYLOAD x -> show x + GIMBAL -> "GIMBAL" + GYROSCOPE -> "GYROSCOPE" showEquipItem :: EquipItemType -> String showEquipItem eit = case eit of diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index c30635f7f..e1e57ee81 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -44,15 +44,17 @@ useBreakListsLinkTest llist rlist = LTest ltest rtest dropWhile ((\s -> not $ S.member s (structureToPotentialFunction ldt)) . fst) llist - (_, linktype) <- safeHead xs - return $ LUpdate linktype (set _3 (useBreakListsLinkTest (tail xs) rlist)) id + (sf, linktype) <- safeHead xs + return $ LUpdate linktype (set _3 (useBreakListsLinkTest (tail xs) rlist)) + (_2 .~ sf) rtest ldt = do let xs = dropWhile ((\s -> not $ S.member s (structureToPotentialFunction ldt)) . fst) rlist - (_, linktype) <- safeHead xs - return $ LUpdate linktype (set _3 (useBreakListsLinkTest llist (tail xs))) id + (sf, linktype) <- safeHead xs + return $ LUpdate linktype (set _3 (useBreakListsLinkTest llist (tail xs))) + (_2 .~ sf) itemToBreakLists :: Item -> @@ -64,6 +66,7 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of ( getAmmoLinks itm , [(WeaponTargetingSF, WeaponTargetingLink), (WeaponScopeSF, WeaponScopeLink)] <> getAutoSpringLinks itm + <> extraWeaponLinks itm ) (_, GadgetPlatformSF) -> ( getAmmoLinks itm @@ -101,6 +104,15 @@ getAutoSpringLinks itm = case itm ^? itUse . heldTriggerType of Just HammerTrigger -> [(MakeAutoSF, MakeAutoLink)] _ -> [] +extraWeaponLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] +extraWeaponLinks itm = case itm ^. itType of + HELD GLAUNCHER -> launcherlinks + HELD RLAUNCHER -> launcherlinks + HELD RLAUNCHERX{} -> launcherlinks + _ -> [] + where + launcherlinks = [(ProjectileStabiliserSF,ProjectileStabiliserLink)] + getAmmoLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] getAmmoLinks itm = map @@ -139,7 +151,10 @@ itemToFunction itm = case itm ^. itType of structureToPotentialFunction :: LabelDoubleTree ItemLink ComposedItem -> S.Set ItemStructuralFunction -structureToPotentialFunction = S.singleton . (^. ldtValue . _2) +structureToPotentialFunction ldt = case ldt ^. ldtValue . _1 . itType of + ATTACH GIMBAL -> S.singleton ProjectileStabiliserSF + ATTACH GYROSCOPE -> S.singleton ProjectileStabiliserSF + _ -> S.singleton (ldt ^. ldtValue . _2) baseCI :: Item -> ComposedItem baseCI itm = (itm, itemToFunction itm, itemBaseConnections itm) diff --git a/src/Dodge/Item/InventoryColor.hs b/src/Dodge/Item/InventoryColor.hs index ff7bccd0b..d07df9b77 100644 --- a/src/Dodge/Item/InventoryColor.hs +++ b/src/Dodge/Item/InventoryColor.hs @@ -28,6 +28,7 @@ itemInvColor ci = case ci ^. _2 of AmmoPayloadSF{} -> violet AmmoEffectSF{} -> aquamarine FunctionChangeSF -> yellow + ProjectileStabiliserSF -> white --ammoTypeColor :: AmmoType -> Color --ammoTypeColor = \case diff --git a/src/Dodge/Item/Scope.hs b/src/Dodge/Item/Scope.hs index 7141c5821..3a0f27404 100644 --- a/src/Dodge/Item/Scope.hs +++ b/src/Dodge/Item/Scope.hs @@ -1,4 +1,6 @@ module Dodge.Item.Scope ( + gimbal, + gyroscope, stickyMod, shellModule, zoomScope, @@ -75,6 +77,12 @@ remoteDetonator = makeAttach REMOTEDETONATOR joystick :: Item joystick = makeAttach JOYSTICK -- & itUse . uaParams .~ APLinkProjectile Nothing +-- +gimbal :: Item +gimbal = makeAttach GIMBAL + +gyroscope :: Item +gyroscope = makeAttach GYROSCOPE smokeReducer :: Item smokeReducer = makeAttach SMOKEREDUCER diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index 8e23b07b1..40515f358 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -1,5 +1,6 @@ module Dodge.Projectile.Create ( createShell, + PJStabiliser (..), ) where import NewInt @@ -12,12 +13,18 @@ import Geometry import qualified IntMapHelp as IM import LensHelp +data PJStabiliser + = StabOrthReduce + | StabSpinIncrease + + -- assumes the mscreen is in your inventory createShell ::Maybe (NewInt ItmInt) -> Maybe (NewInt ItmInt) + -> Maybe PJStabiliser -> ProjectileType -> Payload -> Muzzle -> Creature -> World -> World -createShell mdetonator mscreen pjtype payload muz cr w = w +createShell mdetonator mscreen stab pjtype payload muz cr w = w & updatescreen & updatedetonator & cWorld . lWorld . projectiles . at i @@ -25,23 +32,28 @@ createShell mdetonator mscreen pjtype payload muz cr w = w { _pjPos = pos , _pjZ = 20 , _pjZVel = 5 - , _pjVel = rotateV dir (V2 speed 0) + cr ^. crPos - cr ^. crOldPos + , _pjVel = rotateV dir (V2 speed 0) + crvelcomponent , _pjID = i , _pjDir = dir , _pjSpin = 0 , _pjPayload = payload , _pjTimer = lifespan , _pjUpdates = - [-- TimePU - StartSpinPU (lifespan - 15) (_crID cr) spinamount - , RemoteDirectionPU (lifespan - thrustdelay) 0 --- , ReduceSpinPU (1 - spindrag * 2 / 200) + anyspin <> + [ RemoteDirectionPU (lifespan - thrustdelay) 0 ] <> thrustorgrav , _pjType = pjtype , _pjDetonatorID = mdetonator , _pjScreenID = mscreen } where + crvelcomponent = case stab of + Just StabOrthReduce -> projV (cr ^. crPos - cr ^. crOldPos) (unitVectorAtAngle dir) + _ -> cr ^. crPos - cr ^. crOldPos + anyspin = case stab of + Just StabOrthReduce -> [] + Just StabSpinIncrease -> [StartSpinPU (lifespan - 15) (_crID cr) 4] + _ -> [StartSpinPU (lifespan - 15) (_crID cr) 2] speed = case pjtype of Grenade {} -> 4 Rocket{} -> 1 @@ -51,8 +63,6 @@ createShell mdetonator mscreen pjtype payload muz cr w = w Grenade {}-> [ApplyGravityPU] Rocket{} -> [ThrustPU (lifespan - thrustdelay) 0] RetiredProjectile -> [] --- spindrag = 1 - spinamount = 2 thrustdelay = 20 updatedetonator = fromMaybe id $ do screenid <- mdetonator diff --git a/tags b/tags index e0b0951e1..074f818c2 100644 --- a/tags +++ b/tags @@ -20,9 +20,9 @@ <$> src/Dodge/Data/LWorld.hs 159;" o <$> src/Dodge/Data/Terminal.hs 131;" o AIUNIT src/Dodge/Data/Item/Combine.hs 53;" C -ALTERIFLE src/Dodge/Data/Item/Combine.hs 136;" C +ALTERIFLE src/Dodge/Data/Item/Combine.hs 138;" C AMMOMAG src/Dodge/Data/Item/Combine.hs 22;" C -AMR src/Dodge/Data/Item/Combine.hs 141;" C +AMR src/Dodge/Data/Item/Combine.hs 143;" C ANTIMATTER src/Dodge/Data/Item/Combine.hs 47;" C APInt src/Dodge/Data/Item/Use.hs 75;" C APLinkProjectile src/Dodge/Data/Item/Use.hs 71;" C @@ -30,10 +30,10 @@ APNothing src/Dodge/Data/Item/Use.hs 76;" C APProjectiles src/Dodge/Data/Item/Use.hs 73;" C AQUAMARINE src/Color/Data.hs 24;" C ATTACH src/Dodge/Data/Item/Combine.hs 21;" C -AUGMENTEDHUD src/Dodge/Data/Item/Combine.hs 78;" C -AUTOAMR src/Dodge/Data/Item/Combine.hs 142;" C -AUTOPISTOL src/Dodge/Data/Item/Combine.hs 128;" C -AUTORIFLE src/Dodge/Data/Item/Combine.hs 137;" C +AUGMENTEDHUD src/Dodge/Data/Item/Combine.hs 80;" C +AUTOAMR src/Dodge/Data/Item/Combine.hs 144;" C +AUTOPISTOL src/Dodge/Data/Item/Combine.hs 130;" C +AUTORIFLE src/Dodge/Data/Item/Combine.hs 139;" C AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 27;" C Action src/Dodge/Data/ActionPlan.hs 78;" t @@ -56,20 +56,20 @@ AllRoomClipBoundaries src/Dodge/Data/Config.hs 107;" 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 21;" C -AmmoEffectSF src/Dodge/Data/ComposedItem.hs 50;" C -AmmoInLink src/Dodge/Data/ComposedItem.hs 16;" C +AmmoEffectLink src/Dodge/Data/ComposedItem.hs 22;" C +AmmoEffectSF src/Dodge/Data/ComposedItem.hs 53;" C +AmmoInLink src/Dodge/Data/ComposedItem.hs 17;" C AmmoMag src/Dodge/Data/Item.hs 34;" C -AmmoMagSF src/Dodge/Data/ComposedItem.hs 41;" C -AmmoMagType src/Dodge/Data/Item/Combine.hs 82;" t -AmmoModLink src/Dodge/Data/ComposedItem.hs 18;" C -AmmoModifierSF src/Dodge/Data/ComposedItem.hs 47;" C +AmmoMagSF src/Dodge/Data/ComposedItem.hs 44;" C +AmmoMagType src/Dodge/Data/Item/Combine.hs 84;" t +AmmoModLink src/Dodge/Data/ComposedItem.hs 19;" C +AmmoModifierSF src/Dodge/Data/ComposedItem.hs 50;" C AmmoParams src/Dodge/Data/Item/Use.hs 112;" t -AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 20;" C -AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 49;" C +AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 21;" C +AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 52;" C AmmoPerShot src/Dodge/Data/Item/Use.hs 162;" t -AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 19;" C -AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 48;" C +AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 20;" C +AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 51;" C AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 25;" t AnRoom src/Dodge/Annotation/Data.hs 18;" C AnTree src/Dodge/Annotation/Data.hs 19;" C @@ -101,8 +101,8 @@ AttachType src/Dodge/Data/Item/Combine.hs 70;" 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 28;" C -AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 40;" C +AugmentedHUDLink src/Dodge/Data/ComposedItem.hs 29;" C +AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 43;" 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 @@ -112,26 +112,26 @@ AuxAddition src/Shader/AuxAddition.hs 1;" m Avatar src/Dodge/Data/Creature/Misc.hs 70;" C Awareness src/Dodge/Data/Creature/Perception.hs 65;" t Awareness src/Dodge/Creature/Picture/Awareness.hs 1;" m -BANGCONE src/Dodge/Data/Item/Combine.hs 130;" C -BANGROD src/Dodge/Data/Item/Combine.hs 139;" C -BANGSTICK src/Dodge/Data/Item/Combine.hs 122;" C -BATTERY src/Dodge/Data/Item/Combine.hs 87;" C -BATTERYPACK src/Dodge/Data/Item/Combine.hs 111;" C -BELTMAG src/Dodge/Data/Item/Combine.hs 85;" C +BANGCONE src/Dodge/Data/Item/Combine.hs 132;" C +BANGROD src/Dodge/Data/Item/Combine.hs 141;" C +BANGSTICK src/Dodge/Data/Item/Combine.hs 124;" C +BATTERY src/Dodge/Data/Item/Combine.hs 89;" C +BATTERYPACK src/Dodge/Data/Item/Combine.hs 113;" C +BELTMAG src/Dodge/Data/Item/Combine.hs 87;" C BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 162;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 163;" C -BLOWTORCH src/Dodge/Data/Item/Combine.hs 148;" C +BLINKER src/Dodge/Data/Item/Combine.hs 164;" C +BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 165;" C +BLOWTORCH src/Dodge/Data/Item/Combine.hs 150;" C BLUE src/Color/Data.hs 17;" C -BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 131;" C +BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 133;" C BLUNT src/Dodge/Data/Damage/Type.hs 13;" C BQuad src/Geometry/Bezier.hs 9;" t -BRAINHAT src/Dodge/Data/Item/Combine.hs 102;" C -BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 110;" C -BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 109;" C +BRAINHAT src/Dodge/Data/Item/Combine.hs 104;" C +BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 112;" C +BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 111;" C BULLETMOD src/Dodge/Data/Item/Combine.hs 24;" C BULLETSYNTH src/Dodge/Data/Item/Combine.hs 72;" C -BURSTRIFLE src/Dodge/Data/Item/Combine.hs 138;" C +BURSTRIFLE src/Dodge/Data/Item/Combine.hs 140;" C BackdropCursor src/Dodge/Data/SelectionList.hs 21;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 15;" C Ball src/Dodge/Tesla/Ball.hs 1;" m @@ -247,13 +247,13 @@ CAMERA src/Dodge/Data/Item/Combine.hs 54;" C CAN src/Dodge/Data/Item/Combine.hs 35;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 15;" C CHARTREUSE src/Color/Data.hs 25;" C -CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 88;" C +CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 90;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C CME src/Dodge/Data/MuzzleEffect.hs 11;" C CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C CRAFT src/Dodge/Data/Item/Combine.hs 20;" C -CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 168;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 64;" C CRUSHING src/Dodge/Data/Damage/Type.hs 16;" C CUTTING src/Dodge/Data/Damage/Type.hs 14;" C @@ -282,7 +282,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/HeldUse.hs 45;" t +ChainEffect src/Dodge/HeldUse.hs 46;" t ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 43;" t ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C @@ -339,8 +339,8 @@ CombineInventoryChange src/Dodge/Data/World.hs 34;" C 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 55;" t +ComposeLinkType src/Dodge/Data/ComposedItem.hs 16;" t +ComposedItem src/Dodge/Data/ComposedItem.hs 59;" t ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C @@ -354,7 +354,7 @@ Configuration src/Dodge/Data/Config.hs 38;" t Connectors src/Dodge/Render/Connectors.hs 3;" m ConstFloat src/Dodge/Data/GenFloat.hs 11;" C Consumable src/Dodge/Item/Consumable.hs 1;" m -ConsumableItemType src/Dodge/Data/Item/Combine.hs 91;" t +ConsumableItemType src/Dodge/Data/Item/Combine.hs 93;" t Consumables src/Dodge/Data/Item.hs 32;" t Consumption src/Dodge/Data/Item/Use/Consumption.hs 8;" m Consumption src/Dodge/Default/Item/Use/Consumption.hs 1;" m @@ -437,9 +437,9 @@ CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cuse src/Dodge/Data/Item/HeldUse.hs 14;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C -DETECTOR src/Dodge/Data/Item/Combine.hs 161;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 163;" C DPoint2 src/Geometry/Data.hs 34;" t -DRUMMAG src/Dodge/Data/Item/Combine.hs 84;" C +DRUMMAG src/Dodge/Data/Item/Combine.hs 86;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 30;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 20;" C @@ -503,7 +503,7 @@ Destroy src/Dodge/Machine/Destroy.hs 1;" m DestroyBeing src/Dodge/Data/Scenario.hs 8;" C DestroyBullet src/Dodge/Data/Bullet.hs 36;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C -Detector src/Dodge/Data/Item/Combine.hs 166;" t +Detector src/Dodge/Data/Item/Combine.hs 168;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t Display src/Dodge/Item/Display.hs 2;" m @@ -593,13 +593,13 @@ EBO src/Shader/Data.hs 88;" t EDoNothing src/Dodge/Data/Item/HeldUse.hs 20;" C EHeadLamp src/Dodge/Data/Item/HeldUse.hs 23;" C ELECTRICAL src/Dodge/Data/Damage/Type.hs 20;" C -ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 140;" C +ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 142;" C EMagShield src/Dodge/Data/Item/HeldUse.hs 21;" C ENTERREMENT src/Dodge/Data/Damage/Type.hs 24;" C EQUIP src/Dodge/Data/Item/Combine.hs 19;" C EWristShield src/Dodge/Data/Item/HeldUse.hs 22;" C EXPLOSIVE src/Dodge/Data/Damage/Type.hs 21;" C -EXPLOSIVES src/Dodge/Data/Item/Combine.hs 93;" C +EXPLOSIVES src/Dodge/Data/Item/Combine.hs 95;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C East8 src/Dodge/Data/CardinalPoint.hs 13;" C @@ -628,7 +628,7 @@ EonWristShield src/Dodge/Data/Item/Use/Equipment.hs 31;" C EquipCounter src/Dodge/Data/Item/Use/Equipment.hs 38;" C EquipEffect src/Dodge/Data/Item/Use/Equipment.hs 17;" t EquipID src/Dodge/Data/Item/Use/Equipment.hs 37;" C -EquipItemType src/Dodge/Data/Item/Combine.hs 96;" t +EquipItemType src/Dodge/Data/Item/Combine.hs 98;" t EquipOptions src/Dodge/Data/RightButtonOptions.hs 15;" C EquipParams src/Dodge/Data/Item/Use/Equipment.hs 35;" t EquipSite src/Dodge/Data/Equipment/Misc.hs 21;" t @@ -638,7 +638,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 35;" C +EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 38;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 74;" t Essential src/Shape/Data.hs 34;" C @@ -657,16 +657,16 @@ ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" ExtraEffect src/Dodge/Item/Weapon/ExtraEffect.hs 6;" m Eyes src/Dodge/Data/Creature/Perception.hs 41;" C FBO src/Shader/Data.hs 57;" t -FLAMESHIELD src/Dodge/Data/Item/Combine.hs 98;" C -FLAMESPITTER src/Dodge/Data/Item/Combine.hs 144;" C -FLAMETHROWER src/Dodge/Data/Item/Combine.hs 145;" C -FLAMETORRENT src/Dodge/Data/Item/Combine.hs 146;" C -FLAMEWALL src/Dodge/Data/Item/Combine.hs 147;" C +FLAMESHIELD src/Dodge/Data/Item/Combine.hs 100;" C +FLAMESPITTER src/Dodge/Data/Item/Combine.hs 146;" C +FLAMETHROWER src/Dodge/Data/Item/Combine.hs 147;" C +FLAMETORRENT src/Dodge/Data/Item/Combine.hs 148;" C +FLAMEWALL src/Dodge/Data/Item/Combine.hs 149;" C FLAMING src/Dodge/Data/Damage/Type.hs 18;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 159;" C -FRONTARMOUR src/Dodge/Data/Item/Combine.hs 99;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 161;" C +FRONTARMOUR src/Dodge/Data/Item/Combine.hs 101;" C FUELCELL src/Dodge/Data/Item/Combine.hs 66;" C -FUELPACK src/Dodge/Data/Item/Combine.hs 108;" C +FUELPACK src/Dodge/Data/Item/Combine.hs 110;" C FacilityType src/Dodge/Data/Scenario.hs 55;" t Faction src/Dodge/Data/Creature/State.hs 34;" t Factory src/Dodge/Data/Scenario.hs 56;" C @@ -731,17 +731,19 @@ FullRes src/Dodge/Data/Config.hs 97;" 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 29;" C -FunctionChangeSF src/Dodge/Data/ComposedItem.hs 51;" C +FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C +FunctionChangeSF src/Dodge/Data/ComposedItem.hs 54;" C GBounce src/Dodge/Data/Projectile.hs 52;" C GEqC src/SameConstr.hs 20;" c +GIMBAL src/Dodge/Data/Item/Combine.hs 75;" C GLASSSHARD src/Dodge/Data/Item/Combine.hs 39;" C -GLAUNCHER src/Dodge/Data/Item/Combine.hs 155;" C +GLAUNCHER src/Dodge/Data/Item/Combine.hs 157;" C GLHelp src/GLHelp.hs 1;" m -GRAPECANNON src/Dodge/Data/Item/Combine.hs 132;" C +GRAPECANNON src/Dodge/Data/Item/Combine.hs 134;" C GREEN src/Color/Data.hs 16;" C GStick src/Dodge/Data/Projectile.hs 53;" C -GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 36;" C +GYROSCOPE src/Dodge/Data/Item/Combine.hs 76;" C +GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C GameOverOptions src/Dodge/Data/Universe.hs 70;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m @@ -794,11 +796,11 @@ Gust src/Dodge/Data/Gust.hs 6;" m GymSS src/Dodge/Data/Scenario.hs 104;" C HARDDRIVE src/Dodge/Data/Item/Combine.hs 51;" C HARDWARE src/Dodge/Data/Item/Combine.hs 31;" C -HAT src/Dodge/Data/Item/Combine.hs 103;" C -HEADLAMP src/Dodge/Data/Item/Combine.hs 104;" C +HAT src/Dodge/Data/Item/Combine.hs 105;" C +HEADLAMP src/Dodge/Data/Item/Combine.hs 106;" C HEATSENSOR src/Dodge/Data/Item/Combine.hs 61;" C HELD src/Dodge/Data/Item/Combine.hs 17;" C -HOMINGMODULE src/Dodge/Data/Item/Combine.hs 77;" C +HOMINGMODULE src/Dodge/Data/Item/Combine.hs 79;" C HOSE src/Dodge/Data/Item/Combine.hs 33;" C HUD src/Dodge/Data/HUD.hs 45;" t HUD src/Dodge/Data/HUD.hs 6;" m @@ -819,10 +821,10 @@ HasHammer src/Dodge/Data/Hammer.hs 14;" C HeavySmokeFlare src/Dodge/Data/Item/Use.hs 135;" C Held src/Dodge/Item/Held.hs 1;" m HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m -HeldItemType src/Dodge/Data/Item/Combine.hs 121;" t +HeldItemType src/Dodge/Data/Item/Combine.hs 123;" t HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m HeldParams src/Dodge/Data/Item/Use.hs 79;" t -HeldPlatformSF src/Dodge/Data/ComposedItem.hs 34;" C +HeldPlatformSF src/Dodge/Data/ComposedItem.hs 37;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/HeldUse.hs 4;" m @@ -850,11 +852,11 @@ 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 57;" C +ILink src/Dodge/Data/ComposedItem.hs 61;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t -INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 101;" C +INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 103;" C IRONBAR src/Dodge/Data/Item/Combine.hs 58;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 167;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 169;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t Important src/Shape/Data.hs 35;" C @@ -933,12 +935,12 @@ 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 57;" t +ItemLink src/Dodge/Data/ComposedItem.hs 61;" t ItemLocation src/Dodge/Data/Item/Location.hs 28;" 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 33;" t +ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 35;" t ItemTargeting src/Dodge/Data/Item.hs 55;" t ItemType src/Dodge/Data/Item/Combine.hs 16;" t ItemUse src/Dodge/Data/Item/Use.hs 34;" t @@ -947,20 +949,20 @@ ItmCrWdWdDoNothing src/Dodge/Data/Item/Use/Equipment.hs 29;" C ItmInt src/Dodge/Data/Item/Location.hs 25;" t JGK src/Control/Foldl/JGK.hs 1;" m JOYSTICK src/Dodge/Data/Item/Combine.hs 74;" C -JUMPLEGS src/Dodge/Data/Item/Combine.hs 107;" C +JUMPLEGS src/Dodge/Data/Item/Combine.hs 109;" C JoinClust src/Dodge/Combine/Graph.hs 21;" C -JoystickLink src/Dodge/Data/ComposedItem.hs 24;" C -JoystickSF src/Dodge/Data/ComposedItem.hs 43;" C +JoystickLink src/Dodge/Data/ComposedItem.hs 25;" C +JoystickSF src/Dodge/Data/ComposedItem.hs 46;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 25;" C Justify src/Justify.hs 1;" m -KEYCARD src/Dodge/Data/Item/Combine.hs 160;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 162;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C -LASER src/Dodge/Data/Item/Combine.hs 151;" C +LASER src/Dodge/Data/Item/Combine.hs 153;" C LASERING src/Dodge/Data/Damage/Type.hs 19;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C -LDTComb src/Dodge/Item/Grammar.hs 181;" t +LDTComb src/Dodge/Item/Grammar.hs 205;" t LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 26;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 27;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 24;" C @@ -971,8 +973,8 @@ LIGHTER src/Dodge/Data/Item/Combine.hs 45;" C LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 59;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t -LTest src/Dodge/Data/ComposedItem.hs 62;" C -LUpdate src/Dodge/Data/ComposedItem.hs 67;" C +LTest src/Dodge/Data/ComposedItem.hs 68;" C +LUpdate src/Dodge/Data/ComposedItem.hs 73;" C LWorld src/Dodge/Data/LWorld.hs 97;" t LWorld src/Dodge/Data/LWorld.hs 6;" m LabLink src/Dodge/Data/Room.hs 45;" C @@ -1029,8 +1031,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 62;" t -LinkUpdate src/Dodge/Data/ComposedItem.hs 67;" t +LinkTest src/Dodge/Data/ComposedItem.hs 68;" t +LinkUpdate src/Dodge/Data/ComposedItem.hs 73;" 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 @@ -1065,19 +1067,19 @@ LtAutoAI src/Dodge/Data/Creature/Misc.hs 53;" C LtAutoCrit src/Dodge/Creature/LtAutoCrit.hs 1;" m Lure src/Dodge/Data/ActionPlan.hs 179;" C Luse src/Dodge/Luse.hs 2;" m -MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 127;" C +MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 129;" C MAGENTA src/Color/Data.hs 20;" C MAGNET src/Dodge/Data/Item/Combine.hs 46;" C -MAGSHIELD src/Dodge/Data/Item/Combine.hs 97;" C +MAGSHIELD src/Dodge/Data/Item/Combine.hs 99;" C MBranch src/Dodge/Data/MetaTree.hs 16;" C MBranch src/Dodge/Tree/Compose/Data.hs 10;" C MCrAc src/Dodge/Data/CreatureEffect.hs 45;" t MCrNoAction src/Dodge/Data/CreatureEffect.hs 45;" C -MEDKIT src/Dodge/Data/Item/Combine.hs 92;" C +MEDKIT src/Dodge/Data/Item/Combine.hs 94;" C MICROCHIP src/Dodge/Data/Item/Combine.hs 50;" C MICROPHONE src/Dodge/Data/Item/Combine.hs 62;" C MINIDISPLAY src/Dodge/Data/Item/Combine.hs 55;" C -MINIGUNX src/Dodge/Data/Item/Combine.hs 133;" C +MINIGUNX src/Dodge/Data/Item/Combine.hs 135;" C MODBlockedString src/Dodge/Data/Universe.hs 98;" C MODString src/Dodge/Data/Universe.hs 97;" C MODStringOption src/Dodge/Data/Universe.hs 99;" C @@ -1110,8 +1112,8 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m Make src/Dodge/Corpse/Make.hs 1;" m -MakeAutoLink src/Dodge/Data/ComposedItem.hs 30;" C -MakeAutoSF src/Dodge/Data/ComposedItem.hs 52;" C +MakeAutoLink src/Dodge/Data/ComposedItem.hs 31;" C +MakeAutoSF src/Dodge/Data/ComposedItem.hs 55;" C MakeDefaultCorpse src/Dodge/Data/Creature.hs 75;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 30;" C @@ -1264,7 +1266,7 @@ NoPreviousArcEffect src/Dodge/Data/Item/Params.hs 34;" C NoResurrection src/Dodge/Data/Corpse.hs 14;" C NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C -NoSF src/Dodge/Data/ComposedItem.hs 46;" C +NoSF src/Dodge/Data/ComposedItem.hs 49;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C NoSubInventory src/Dodge/Data/HUD.hs 35;" C @@ -1368,14 +1370,15 @@ P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C PIERCING src/Dodge/Data/Damage/Type.hs 12;" C PIPE src/Dodge/Data/Item/Combine.hs 29;" C -PISTOL src/Dodge/Data/Item/Combine.hs 126;" C +PISTOL src/Dodge/Data/Item/Combine.hs 128;" C +PJStabiliser src/Dodge/Projectile/Create.hs 15;" t PLANK src/Dodge/Data/Item/Combine.hs 38;" C PLATE src/Dodge/Data/Item/Combine.hs 48;" C PLUS src/Dodge/Data/GenParams.hs 20;" C POISONDAM src/Dodge/Data/Damage/Type.hs 23;" C -POISONSPRAYER src/Dodge/Data/Item/Combine.hs 156;" C +POISONSPRAYER src/Dodge/Data/Item/Combine.hs 158;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 67;" C -POWERLEGS src/Dodge/Data/Item/Combine.hs 105;" C +POWERLEGS src/Dodge/Data/Item/Combine.hs 107;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C PRISM src/Dodge/Data/Item/Combine.hs 44;" C PS src/Dodge/Data/GenWorld.hs 62;" C @@ -1473,6 +1476,8 @@ Projectile src/Dodge/Data/Projectile.hs 16;" t Projectile src/Dodge/Data/Projectile.hs 6;" m Projectile src/Dodge/Projectile.hs 1;" m ProjectileParams src/Dodge/Data/Item/Use.hs 114;" C +ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 32;" C +ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 56;" C ProjectileType src/Dodge/Data/Projectile.hs 34;" t ProjectileUpdate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 18;" t Prop src/Dodge/Data/Prop.hs 18;" t @@ -1540,13 +1545,13 @@ QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C RAM src/Dodge/Data/Item/Combine.hs 52;" C RBList src/Dodge/Inventory/RBList.hs 1;" m RED src/Color/Data.hs 15;" C -REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 75;" C +REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 77;" C REMOTESCREEN src/Dodge/Data/Item/Combine.hs 73;" C -REWINDER src/Dodge/Data/Item/Combine.hs 123;" C +REWINDER src/Dodge/Data/Item/Combine.hs 125;" C RGBA src/Color/Data.hs 31;" t -RIFLE src/Dodge/Data/Item/Combine.hs 135;" C -RLAUNCHER src/Dodge/Data/Item/Combine.hs 153;" C -RLAUNCHERX src/Dodge/Data/Item/Combine.hs 154;" C +RIFLE src/Dodge/Data/Item/Combine.hs 137;" C +RLAUNCHER src/Dodge/Data/Item/Combine.hs 155;" C +RLAUNCHERX src/Dodge/Data/Item/Combine.hs 156;" C ROSE src/Color/Data.hs 21;" C RPLinkStatus src/Dodge/Data/Room.hs 55;" t RProps src/Dodge/Layout/Generate.hs 13;" C @@ -1580,11 +1585,11 @@ ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C 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 -RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 26;" C -RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 44;" C +RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 27;" C +RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 47;" C RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 21;" C -RemoteScreenLink src/Dodge/Data/ComposedItem.hs 25;" C -RemoteScreenSF src/Dodge/Data/ComposedItem.hs 42;" C +RemoteScreenLink src/Dodge/Data/ComposedItem.hs 26;" C +RemoteScreenSF src/Dodge/Data/ComposedItem.hs 45;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C RemoveShieldWall src/Dodge/Data/Item/Effect.hs 23;" C Remove_LOS src/Dodge/Data/Config.hs 77;" C @@ -1642,17 +1647,17 @@ RoundedFaces src/Shape/Data.hs 18;" C RunPast src/Dodge/Room/RunPast.hs 1;" m RunningSideEffect src/Dodge/Data/Universe.hs 67;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 40;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 157;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 159;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C -SHELLMAG src/Dodge/Data/Item/Combine.hs 86;" C -SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 79;" C -SMG src/Dodge/Data/Item/Combine.hs 129;" C -SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 76;" C -SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 143;" C +SHELLMAG src/Dodge/Data/Item/Combine.hs 88;" C +SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 81;" C +SMG src/Dodge/Data/Item/Combine.hs 131;" C +SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 78;" C +SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 145;" C SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 60;" C -SPARKGUN src/Dodge/Data/Item/Combine.hs 149;" C +SPARKGUN src/Dodge/Data/Item/Combine.hs 151;" C SPARKING src/Dodge/Data/Damage/Type.hs 15;" C -SPEEDLEGS src/Dodge/Data/Item/Combine.hs 106;" C +SPEEDLEGS src/Dodge/Data/Item/Combine.hs 108;" C SPRING src/Dodge/Data/Item/Combine.hs 32;" C SPic src/ShapePicture/Data.hs 7;" t SPic src/Dodge/Item/Draw/SPic.hs 3;" m @@ -1766,8 +1771,8 @@ SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C Small src/Shape/Data.hs 31;" C SmokeCloud src/Dodge/Data/Cloud.hs 30;" C -SmokeReducerLink src/Dodge/Data/ComposedItem.hs 27;" C -SmokeReducerSF src/Dodge/Data/ComposedItem.hs 45;" C +SmokeReducerLink src/Dodge/Data/ComposedItem.hs 28;" C +SmokeReducerSF src/Dodge/Data/ComposedItem.hs 48;" C SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C @@ -1809,6 +1814,8 @@ SplitBeamCombine src/Dodge/Data/Beam.hs 42;" C SprayGuns src/Dodge/Item/Held/SprayGuns.hs 1;" m SpreadGunAI src/Dodge/Data/Creature/Misc.hs 51;" C SpreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 1;" m +StabOrthReduce src/Dodge/Projectile/Create.hs 16;" C +StabSpinIncrease src/Dodge/Projectile/Create.hs 17;" C Stance src/Dodge/Data/Creature/Stance.hs 13;" t Stance src/Dodge/Data/Creature/Stance.hs 6;" m StandaloneWall src/Dodge/Data/Wall.hs 49;" C @@ -1847,16 +1854,16 @@ SwitchAlteRifle src/Dodge/Data/Item/Use.hs 54;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C TAPE src/Dodge/Data/Item/Combine.hs 34;" C TARGETING src/Dodge/Data/Item/Combine.hs 23;" C -TESLAGUN src/Dodge/Data/Item/Combine.hs 150;" C +TESLAGUN src/Dodge/Data/Item/Combine.hs 152;" C THERMOMETER src/Dodge/Data/Item/Combine.hs 63;" C THREELINES src/Dodge/Data/GenParams.hs 20;" C -TIMESCROLLER src/Dodge/Data/Item/Combine.hs 125;" C -TIMESTOPPER src/Dodge/Data/Item/Combine.hs 124;" C +TIMESCROLLER src/Dodge/Data/Item/Combine.hs 127;" C +TIMESTOPPER src/Dodge/Data/Item/Combine.hs 126;" C TIN src/Dodge/Data/Item/Combine.hs 36;" C -TINMAG src/Dodge/Data/Item/Combine.hs 83;" C +TINMAG src/Dodge/Data/Item/Combine.hs 85;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 158;" C -TRACTORGUN src/Dodge/Data/Item/Combine.hs 152;" C +TORCH src/Dodge/Data/Item/Combine.hs 160;" C +TRACTORGUN src/Dodge/Data/Item/Combine.hs 154;" C TRANSFORMER src/Dodge/Data/Item/Combine.hs 43;" C TRANSMITTER src/Dodge/Data/Item/Combine.hs 49;" C TSbackspace src/Dodge/Data/Input.hs 62;" C @@ -1978,8 +1985,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 39;" C +TriggerLink src/Dodge/Data/ComposedItem.hs 18;" C +TriggerSF src/Dodge/Data/ComposedItem.hs 42;" C TriggerType src/Dodge/Data/Item/Use.hs 67;" t TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C @@ -2006,6 +2013,7 @@ UniRandFloat src/Dodge/Data/GenFloat.hs 12;" C Unimportant src/Shape/Data.hs 37;" C Universe src/Dodge/Data/Universe.hs 30;" t Universe src/Dodge/Data/Universe.hs 6;" m +UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 36;" C UnlockInv src/Dodge/Data/WorldEffect.hs 28;" C UnusedLink src/Dodge/Data/Room.hs 65;" C Update src/Dodge/Config/Update.hs 4;" m @@ -2053,7 +2061,7 @@ VAO src/Shader/Data.hs 64;" t VBO src/Shader/Data.hs 81;" t VF src/Polyhedra/Data.hs 21;" t VIOLET src/Color/Data.hs 22;" C -VOLLEYGUN src/Dodge/Data/Item/Combine.hs 134;" C +VOLLEYGUN src/Dodge/Data/Item/Combine.hs 136;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2068,12 +2076,12 @@ Vision src/Dodge/Data/Creature/Perception.hs 41;" t Vocalization src/Dodge/Data/Creature/Misc.hs 27;" t Vocalization src/Dodge/Creature/Vocalization.hs 1;" m Volition src/Dodge/Creature/Volition.hs 2;" m -WALLDETECTOR src/Dodge/Data/Item/Combine.hs 169;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 171;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C WIRE src/Dodge/Data/Item/Combine.hs 65;" C -WRISTARMOUR src/Dodge/Data/Item/Combine.hs 100;" C -WRIST_ECG src/Dodge/Data/Item/Combine.hs 112;" C +WRISTARMOUR src/Dodge/Data/Item/Combine.hs 102;" C +WRIST_ECG src/Dodge/Data/Item/Combine.hs 114;" C WaitThen src/Dodge/Data/ActionPlan.hs 103;" C WalkCycle src/Dodge/Creature/State/WalkCycle.hs 1;" m Walking src/Dodge/Data/Creature/Stance.hs 21;" C @@ -2129,10 +2137,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 22;" C -WeaponScopeSF src/Dodge/Data/ComposedItem.hs 37;" C -WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 23;" C -WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 38;" C +WeaponScopeLink src/Dodge/Data/ComposedItem.hs 23;" C +WeaponScopeSF src/Dodge/Data/ComposedItem.hs 40;" C +WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 24;" C +WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 41;" 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 @@ -2582,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 59;" f -_iatType src/Dodge/Data/ComposedItem.hs 58;" f +_iatOrient src/Dodge/Data/ComposedItem.hs 63;" f +_iatType src/Dodge/Data/ComposedItem.hs 62;" 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 @@ -2679,9 +2687,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 70;" f -_luLinkType src/Dodge/Data/ComposedItem.hs 68;" f -_luParentUpdate src/Dodge/Data/ComposedItem.hs 69;" f +_luChildUpdate src/Dodge/Data/ComposedItem.hs 76;" f +_luLinkType src/Dodge/Data/ComposedItem.hs 74;" f +_luParentUpdate src/Dodge/Data/ComposedItem.hs 75;" 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 @@ -3022,7 +3030,7 @@ _shaderVAO src/Shader/Data.hs 54;" f _shapeEBO src/Data/Preload/Render.hs 26;" f _shapeHalfSize src/Shape/Data.hs 18;" f _shapeShader src/Data/Preload/Render.hs 25;" f -_shellPayload src/Dodge/Data/Item/Combine.hs 79;" f +_shellPayload src/Dodge/Data/Item/Combine.hs 81;" f _shockwaves src/Dodge/Data/LWorld.hs 115;" f _shrinkGunStatus src/Dodge/Data/Item/Params.hs 18;" f _siColor src/Dodge/Data/SelectionList.hs 49;" f @@ -3156,8 +3164,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 119;" f _trieChildren src/SimpleTrie.hs 11;" f _trieMVal src/SimpleTrie.hs 10;" f _triggers src/Dodge/Data/LWorld.hs 129;" f -_tryLeftLink src/Dodge/Data/ComposedItem.hs 63;" f -_tryRightLink src/Dodge/Data/ComposedItem.hs 64;" f +_tryLeftLink src/Dodge/Data/ComposedItem.hs 69;" f +_tryRightLink src/Dodge/Data/ComposedItem.hs 70;" 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 @@ -3272,9 +3280,9 @@ _wpMaxCharge src/Dodge/Data/Item/Use/Consumption.hs 34;" f _wsBlock src/Dodge/Data/Wall.hs 52;" f _wsDoor src/Dodge/Data/Wall.hs 50;" f _wsMachine src/Dodge/Data/Wall.hs 51;" f -_xNum src/Dodge/Data/Item/Combine.hs 122;" f -_xNum src/Dodge/Data/Item/Combine.hs 132;" f -_xNum src/Dodge/Data/Item/Combine.hs 154;" f +_xNum src/Dodge/Data/Item/Combine.hs 124;" f +_xNum src/Dodge/Data/Item/Combine.hs 134;" f +_xNum src/Dodge/Data/Item/Combine.hs 156;" f aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 21;" f @@ -3342,7 +3350,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 60;" f -allInvLocs src/Dodge/Item/Grammar.hs 262;" f +allInvLocs src/Dodge/Item/Grammar.hs 284;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f alteRifle src/Dodge/Item/Held/Cane.hs 65;" f @@ -3357,24 +3365,24 @@ 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 246;" f -applyCME src/Dodge/HeldUse.hs 126;" f +applyCME src/Dodge/HeldUse.hs 127;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 50;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f -applyInvLock src/Dodge/HeldUse.hs 141;" f +applyInvLock src/Dodge/HeldUse.hs 142;" f applyMagnetsToBul src/Dodge/Bullet.hs 36;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f applyPastDamages src/Dodge/Creature/State.hs 145;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 160;" f +applyRecoil src/Dodge/HeldUse.hs 161;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 79;" f -applySidePush src/Dodge/HeldUse.hs 167;" f -applySoundCME src/Dodge/HeldUse.hs 151;" f +applySidePush src/Dodge/HeldUse.hs 168;" f +applySoundCME src/Dodge/HeldUse.hs 152;" 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 @@ -3382,7 +3390,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 178;" f +applyTorqueCME src/Dodge/HeldUse.hs 179;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arc src/Picture/Base.hs 287;" f @@ -3417,7 +3425,7 @@ attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attribSize src/Shader/Compile.hs 306;" f augInvDirectSelect src/Dodge/Inventory.hs 191;" f -augmentedHUD src/Dodge/Item/Scope.hs 64;" f +augmentedHUD src/Dodge/Item/Scope.hs 66;" f autoAmr src/Dodge/Item/Held/Rod.hs 49;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f autoCrit src/Dodge/Creature/AutoCrit.hs 12;" f @@ -3444,7 +3452,7 @@ barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 389;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f -baseCI src/Dodge/Item/Grammar.hs 135;" f +baseCI src/Dodge/Item/Grammar.hs 159;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 296;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f @@ -3464,7 +3472,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 44;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 278;" f +basicMuzFlare src/Dodge/HeldUse.hs 279;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 92;" f batteryPack src/Dodge/Item/Equipment.hs 56;" f @@ -3523,8 +3531,8 @@ bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 110;" f bulletBeltPack src/Dodge/Item/Equipment.hs 92;" f -bulletModule src/Dodge/Item/Scope.hs 47;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 61;" f +bulletModule src/Dodge/Item/Scope.hs 49;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 63;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 122;" f bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f burstRifle src/Dodge/Item/Held/Cane.hs 83;" f @@ -3730,9 +3738,9 @@ createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla.hs 81;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 627;" f -createProjectileR src/Dodge/HeldUse.hs 609;" f -createShell src/Dodge/Projectile/Create.hs 16;" f +createProjectile src/Dodge/HeldUse.hs 639;" f +createProjectileR src/Dodge/HeldUse.hs 611;" f +createShell src/Dodge/Projectile/Create.hs 21;" f createShieldWall src/Dodge/Euse.hs 107;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f @@ -3934,7 +3942,7 @@ detector src/Dodge/Item/Held/Utility.hs 41;" f detectorColor src/Dodge/Item/Draw/SPic.hs 435;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 180;" f -determineProjectileTracking src/Dodge/HeldUse.hs 593;" f +determineProjectileTracking src/Dodge/HeldUse.hs 595;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 210;" f @@ -3953,7 +3961,7 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 226;" f displayIndents src/Dodge/DisplayInventory.hs 123;" f -displayPulse src/Dodge/Item/Display.hs 107;" f +displayPulse src/Dodge/Item/Display.hs 109;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f displayTerminalLineString src/Dodge/Update.hs 447;" f dist src/Geometry/Vector.hs 179;" f @@ -4000,8 +4008,8 @@ doDrag src/Dodge/Update/Input/InGame.hs 99;" 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 534;" f -doHeldUseEffect src/Dodge/HeldUse.hs 99;" f +doGenFloat src/Dodge/HeldUse.hs 536;" f +doHeldUseEffect src/Dodge/HeldUse.hs 100;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f @@ -4052,7 +4060,7 @@ doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f doWdP2f src/Dodge/WdP2f.hs 12;" f doWdWd src/Dodge/WorldEffect.hs 25;" f -doWeaponRepetitions src/Dodge/HeldUse.hs 115;" f +doWeaponRepetitions src/Dodge/HeldUse.hs 116;" f doWorldEvents src/Dodge/Update.hs 429;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f @@ -4256,6 +4264,7 @@ 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 84;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 107;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4293,7 +4302,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 369;" f -flareCircleAt src/Dodge/HeldUse.hs 259;" f +flareCircleAt src/Dodge/HeldUse.hs 260;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 50;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 20;" f @@ -4361,7 +4370,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 531;" f +gasCreate src/Dodge/HeldUse.hs 533;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4372,12 +4381,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 96;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 116;" f getArguments src/Dodge/Update/Scroll.hs 215;" f getArguments' src/Dodge/Update/Scroll.hs 203;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 91;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 102;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulletType src/Dodge/HeldUse.hs 410;" f +getBulletType src/Dodge/HeldUse.hs 412;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f getCrDexterity src/Dodge/Creature/Statistics.hs 11;" f @@ -4386,13 +4395,14 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 14;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 383;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" f -getLaserColor src/Dodge/HeldUse.hs 275;" f -getLaserDamage src/Dodge/HeldUse.hs 272;" f -getLaserPhaseV src/Dodge/HeldUse.hs 269;" f +getLaserColor src/Dodge/HeldUse.hs 276;" f +getLaserDamage src/Dodge/HeldUse.hs 273;" f +getLaserPhaseV src/Dodge/HeldUse.hs 270;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 376;" f getNodePos src/Dodge/Path.hs 31;" f +getPJStabiliser src/Dodge/HeldUse.hs 631;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 93;" f @@ -4403,6 +4413,7 @@ getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f +gimbal src/Dodge/Item/Scope.hs 81;" f girder src/Dodge/Room/Foreground.hs 211;" f girderV src/Dodge/Room/Foreground.hs 182;" f girderV' src/Dodge/Room/Foreground.hs 157;" f @@ -4446,11 +4457,12 @@ gut3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 348;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 508;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 476;" f +gyroscope src/Dodge/Item/Scope.hs 84;" f 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/HeldUse.hs 52;" f +hammerCheck src/Dodge/HeldUse.hs 53;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 44;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -4477,9 +4489,9 @@ healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 366;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 73;" f healthTest src/Dodge/Room/LasTurret.hs 94;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f -heldEffect src/Dodge/HeldUse.hs 38;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 88;" f -heldEffectNoHammerCheck src/Dodge/HeldUse.hs 41;" f +heldEffect src/Dodge/HeldUse.hs 39;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 89;" f +heldEffectNoHammerCheck src/Dodge/HeldUse.hs 42;" f heldInfo src/Dodge/Item/Info.hs 47;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 78;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 26;" f @@ -4498,7 +4510,7 @@ hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f -homingModule src/Dodge/Item/Scope.hs 37;" f +homingModule src/Dodge/Item/Scope.hs 39;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 63;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 41;" f @@ -4571,16 +4583,16 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 329;" f interweave src/Justify.hs 17;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 243;" f +invAdj src/Dodge/Item/Grammar.hs 265;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 220;" f invHead src/Dodge/Render/HUD.hs 392;" f invItemLocUpdate src/Dodge/Creature/State.hs 179;" f -invLDT src/Dodge/Item/Grammar.hs 223;" f +invLDT src/Dodge/Item/Grammar.hs 245;" f invRootItemEffs src/Dodge/Creature/State.hs 172;" f -invRootMap src/Dodge/Item/Grammar.hs 232;" f -invRootTrees src/Dodge/Item/Grammar.hs 253;" f +invRootMap src/Dodge/Item/Grammar.hs 254;" f +invRootTrees src/Dodge/Item/Grammar.hs 275;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 166;" f @@ -4596,7 +4608,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 56;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 23;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 285;" f +isAmmoIntLink src/Dodge/HeldUse.hs 286;" f isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 95;" f @@ -4624,30 +4636,30 @@ isoMatrix src/MatrixHelper.hs 30;" f isotriBWH src/Geometry/Polygon.hs 20;" f itDim src/Dodge/Item/InvSize.hs 21;" f itInvHeight src/Dodge/Item/InvSize.hs 11;" f -itemBaseConnections src/Dodge/Item/Grammar.hs 138;" f +itemBaseConnections src/Dodge/Item/Grammar.hs 162;" f itemBaseName src/Dodge/Item/Display.hs 56;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 55;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f -itemDetectorEffect src/Dodge/HeldUse.hs 316;" f +itemDetectorEffect src/Dodge/HeldUse.hs 318;" f itemDisplay src/Dodge/Item/Display.hs 21;" f itemDisplayPad src/Dodge/Item/Display.hs 39;" f itemEquipPict src/Dodge/Item/Draw.hs 16;" f itemFromAmmoMag src/Dodge/Item.hs 29;" f itemFromAttachType src/Dodge/Item.hs 38;" f itemFromBase src/Dodge/Item.hs 17;" f -itemFromEquipType src/Dodge/Item.hs 51;" f +itemFromEquipType src/Dodge/Item.hs 53;" f itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 13;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemNumberDisplay src/Dodge/Item/Display.hs 90;" f +itemNumberDisplay src/Dodge/Item/Display.hs 92;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f itemScroll src/Dodge/Update/Scroll.hs 66;" f itemString src/Dodge/Item/Display.hs 52;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 51;" f -itemToFunction src/Dodge/Item/Grammar.hs 102;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 59;" f +itemToFunction src/Dodge/Item/Grammar.hs 122;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f itemUpdate src/Dodge/Creature/State.hs 429;" f iterateUntil src/MonadHelp.hs 23;" f @@ -4658,8 +4670,8 @@ itmSpaceInfo src/Dodge/Item/Info.hs 18;" f itmUsageInfo src/Dodge/Item/Info.hs 186;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 213;" f -joystick src/Dodge/Item/Scope.hs 75;" f +joinItemsInList src/Dodge/Item/Grammar.hs 235;" f +joystick src/Dodge/Item/Scope.hs 77;" 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 @@ -4686,13 +4698,13 @@ lampCrSPic src/Dodge/Render/ShapePicture.hs 58;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 113;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 395;" f -lasRayAt src/Dodge/HeldUse.hs 387;" f +lasRayAt src/Dodge/HeldUse.hs 389;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 106;" f lasTunnel src/Dodge/Room/LasTurret.hs 125;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 166;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f laser src/Dodge/Item/Held/BatteryGuns.hs 48;" f -laserLinkTest src/Dodge/Item/Grammar.hs 144;" f +laserLinkTest src/Dodge/Item/Grammar.hs 168;" f lastMap src/Dodge/DoubleTree.hs 174;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f @@ -4707,9 +4719,9 @@ ldtToIM src/Dodge/DoubleTree.hs 143;" f ldtToIndentList src/Dodge/DoubleTree.hs 146;" f ldtToLoc src/Dodge/DoubleTree.hs 187;" f left src/DoubleStack.hs 16;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 183;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 207;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 197;" f +leftRightCombine src/Dodge/Item/Grammar.hs 221;" f legsSPic src/Dodge/Item/Draw/SPic.hs 459;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f @@ -4737,15 +4749,15 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 346;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f -llleft src/Dodge/Item/Grammar.hs 147;" f -llright src/Dodge/Item/Grammar.hs 153;" f +llleft src/Dodge/Item/Grammar.hs 171;" f +llright src/Dodge/Item/Grammar.hs 177;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 381;" 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 195;" f +loadMuzzle src/Dodge/HeldUse.hs 196;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4800,8 +4812,8 @@ 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 482;" f -makeBullet' src/Dodge/HeldUse.hs 468;" f +makeBullet src/Dodge/HeldUse.hs 484;" f +makeBullet' src/Dodge/HeldUse.hs 470;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4827,7 +4839,7 @@ makeFragBullets src/Dodge/Bullet.hs 129;" 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 217;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 218;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4874,7 +4886,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 592;" f maybeOpenTerminal src/Dodge/Update.hs 122;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 113;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 115;" f mcApplyDamage src/Dodge/Machine/Update.hs 108;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f @@ -4884,11 +4896,11 @@ 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 -mcShootAuto src/Dodge/HeldUse.hs 566;" f -mcShootLaser src/Dodge/HeldUse.hs 558;" f +mcShootAuto src/Dodge/HeldUse.hs 568;" f +mcShootLaser src/Dodge/HeldUse.hs 560;" f mcTriggerVal src/Dodge/Machine/Update.hs 93;" f mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f -mcUseHeld src/Dodge/HeldUse.hs 501;" f +mcUseHeld src/Dodge/HeldUse.hs 503;" f mcUseItem src/Dodge/Machine/Update.hs 79;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 80;" f @@ -4982,7 +4994,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 245;" f +muzFlareAt src/Dodge/HeldUse.hs 246;" 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 @@ -5394,9 +5406,9 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteDetonator src/Dodge/Item/Scope.hs 71;" f -remoteScreen src/Dodge/Item/Scope.hs 67;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 397;" f +remoteDetonator src/Dodge/Item/Scope.hs 73;" f +remoteScreen src/Dodge/Item/Scope.hs 69;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 399;" f removeDot src/ShortShow.hs 30;" f removeHotkey src/Dodge/Hotkey.hs 40;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -5441,7 +5453,7 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 55;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 190;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 214;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5650,7 +5662,7 @@ shatterGunSPic src/Dodge/Item/Draw/SPic.hs 285;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 79;" f shellMag src/Dodge/Item/Ammo.hs 61;" f -shellModule src/Dodge/Item/Scope.hs 53;" f +shellModule src/Dodge/Item/Scope.hs 55;" f shellShape src/Dodge/Projectile/Draw.hs 34;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f shieldWall src/Dodge/Euse.hs 87;" f @@ -5676,14 +5688,14 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 308;" f shineTorch src/Dodge/Creature/State.hs 350;" f -shootBullet src/Dodge/HeldUse.hs 457;" f +shootBullet src/Dodge/HeldUse.hs 459;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 367;" f +shootLaser src/Dodge/HeldUse.hs 369;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 581;" f +shootTeslaArc src/Dodge/HeldUse.hs 583;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 346;" f +shootTractorBeam src/Dodge/HeldUse.hs 348;" 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 @@ -5695,7 +5707,7 @@ shoulderHeight src/Dodge/Item/HeldOffset.hs 81;" f shoulderSH src/Dodge/Creature/Picture.hs 139;" f shoulderSP src/Dodge/Creature/HandPos.hs 170;" f showAttachItem src/Dodge/Item/Display.hs 70;" f -showEquipItem src/Dodge/Item/Display.hs 82;" f +showEquipItem src/Dodge/Item/Display.hs 84;" f showInt src/Dodge/Item/Info.hs 30;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showManObj src/Dodge/TestString.hs 79;" f @@ -5738,7 +5750,7 @@ smallPillar src/Dodge/Room/Pillar.hs 32;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f smg src/Dodge/Item/Held/Stick.hs 72;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f -smokeReducer src/Dodge/Item/Scope.hs 79;" f +smokeReducer src/Dodge/Item/Scope.hs 87;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5785,7 +5797,7 @@ spreadCenter src/Dodge/Base.hs 165;" f spreadFromCenter src/Dodge/Base.hs 154;" f spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 12;" f spreadOut src/Dodge/Creature/Boid.hs 157;" f -springLinkTest src/Dodge/Item/Grammar.hs 165;" f +springLinkTest src/Dodge/Item/Grammar.hs 189;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f square src/Geometry/Polygon.hs 46;" f @@ -5811,7 +5823,7 @@ ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 98;" f stackPicturesAtOff src/Dodge/Render/List.hs 101;" f stackText src/Picture/Base.hs 188;" f -stackedInventory src/Dodge/Creature.hs 300;" f +stackedInventory src/Dodge/Creature.hs 302;" f startCr src/Dodge/Creature.hs 91;" f startCrafts src/Dodge/Room/Start.hs 92;" f startDrag src/Dodge/Update/Input/InGame.hs 257;" f @@ -5822,7 +5834,7 @@ startRoom src/Dodge/Room/Start.hs 52;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f startSeedGameConc src/Dodge/StartNewGame.hs 27;" f statsModifier src/Dodge/Creature/Info.hs 14;" f -stickyMod src/Dodge/Item/Scope.hs 40;" f +stickyMod src/Dodge/Item/Scope.hs 42;" f stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f @@ -5841,6 +5853,7 @@ strideRot src/Dodge/Item/HeldOffset.hs 84;" f stringToList src/Picture/Base.hs 313;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f +structureToPotentialFunction src/Dodge/Item/Grammar.hs 151;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f subMap src/TreeHelp.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f @@ -5880,7 +5893,7 @@ targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 194;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f -targetingScope src/Dodge/Item/Scope.hs 27;" f +targetingScope src/Dodge/Item/Scope.hs 29;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 390;" f termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f @@ -5899,7 +5912,7 @@ teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 10;" f -testInventory src/Dodge/Creature.hs 281;" f +testInventory src/Dodge/Creature.hs 283;" f testStringInit src/Dodge/TestString.hs 28;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f @@ -5944,7 +5957,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 158;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 182;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f @@ -5971,7 +5984,7 @@ torqueCr src/Dodge/WorldEffect.hs 63;" f torso src/Dodge/Creature/Picture.hs 105;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 356;" f +tractorBeamAt src/Dodge/HeldUse.hs 358;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 419;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -6213,24 +6226,24 @@ useBulletPayload src/Dodge/Bullet.hs 118;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 34;" f -useGasParams src/Dodge/HeldUse.hs 506;" f +useGasParams src/Dodge/HeldUse.hs 508;" f useHotkey src/Dodge/Creature/YourControl.hs 54;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 289;" f +useLoadedAmmo src/Dodge/HeldUse.hs 290;" f useLocation src/Dodge/Creature/Impulse/UseItem.hs 57;" f useMagShield src/Dodge/Euse.hs 46;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 17;" f -useRewindGun src/Dodge/HeldUse.hs 692;" f +useRewindGun src/Dodge/HeldUse.hs 705;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f useSelectedItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f -useStopWatch src/Dodge/HeldUse.hs 673;" f +useStopWatch src/Dodge/HeldUse.hs 686;" f useStopWatch src/Dodge/Luse.hs 21;" f -useTimeCheck src/Dodge/HeldUse.hs 63;" f +useTimeCheck src/Dodge/HeldUse.hs 64;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 681;" f +useTimeScrollGun src/Dodge/HeldUse.hs 694;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 433;" f @@ -6266,7 +6279,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 31;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 330;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 324;" f +walkNozzle src/Dodge/HeldUse.hs 326;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 80;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f @@ -6384,5 +6397,5 @@ zoomFloatingCamera src/Dodge/Update/Camera.hs 64;" f zoomFromItem src/Dodge/Update/Camera.hs 172;" f zoomInLongGun src/Dodge/Update/Scroll.hs 104;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 112;" f -zoomScope src/Dodge/Item/Scope.hs 22;" f +zoomScope src/Dodge/Item/Scope.hs 24;" f zoomSpeed src/Dodge/Update/Scroll.hs 101;" f