From 48ddb94623a4c2d42865bb031f6f4f1f61187d02 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 29 Dec 2024 11:52:15 +0000 Subject: [PATCH] Allow item structure to determine if subtree is attachable --- src/Dodge/Data/ComposedItem.hs | 7 +- src/Dodge/Item/Grammar.hs | 30 ++- tags | 428 +++++++++++++++++---------------- 3 files changed, 234 insertions(+), 231 deletions(-) diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 7dc84e04d..b461dbe9e 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -5,6 +5,7 @@ module Dodge.Data.ComposedItem where +import Dodge.Data.DoubleTree import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -59,9 +60,11 @@ data ItemLink = ILink , _iatOrient :: Item -> ComposeLinkType -> Item -> (Point3, Quaternion Float) } +-- this should possibly use a full item structure tree rather than a +-- ComposedItem as arguments data LinkTest = LTest - { _tryLeftLink :: ComposedItem -> Maybe LinkUpdate - , _tryRightLink :: ComposedItem -> Maybe LinkUpdate + { _tryLeftLink :: LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate + , _tryRightLink :: LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate } data LinkUpdate = LUpdate diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 42417fff9..a80704ee3 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -17,7 +17,7 @@ import Dodge.DoubleTree import Dodge.Item.Orientation import LensHelp import ListHelp -import qualified Data.Set as S +--import qualified Data.Set as S tryAttachItems :: LabelDoubleTree ItemLink ComposedItem -> @@ -39,11 +39,11 @@ useBreakListsLinkTest :: LinkTest useBreakListsLinkTest llist rlist = LTest ltest rtest where - ltest (_, sf, _) = do + ltest (LDT (_, sf, _) _ _) = do let xs = dropWhile ((/= sf) . fst) llist (_, linktype) <- safeHead xs return $ LUpdate linktype (set _3 (useBreakListsLinkTest (tail xs) rlist)) id - rtest (_, sf, _) = do + rtest (LDT (_, sf, _) _ _) = do let xs = dropWhile ((/= sf) . fst) rlist (_, linktype) <- safeHead xs return $ LUpdate linktype (set _3 (useBreakListsLinkTest llist (tail xs))) id @@ -127,10 +127,10 @@ itemToFunction itm = case itm ^. itType of ATTACH SHELLPAYLOAD{} -> AmmoPayloadSF LauncherAmmo _ -> NoSF -structureToPotentialFunction - :: LabelDoubleTree ComposedItem ItemLink - -> S.Set ItemStructuralFunction -structureToPotentialFunction _ = mempty +--structureToPotentialFunction +-- :: LabelDoubleTree ComposedItem ItemLink +-- -> S.Set ItemStructuralFunction +--structureToPotentialFunction _ = mempty baseCI :: Item -> ComposedItem baseCI itm = (itm, itemToFunction itm, itemBaseConnections itm) @@ -144,14 +144,14 @@ itemBaseConnections itm = case _itType itm of laserLinkTest :: Item -> LinkTest laserLinkTest itm = LTest (llleft itm) (llright itm) -llleft :: Item -> ComposedItem -> Maybe LinkUpdate +llleft :: Item -> LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate llleft itm = _tryLeftLink . uncurry useBreakL $ itemToBreakLists itm WeaponTargetingSF -llright :: Item -> ComposedItem -> Maybe LinkUpdate -llright itm pci = case pci ^. _1 . itType of +llright :: Item -> LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate +llright itm pci = case pci ^. ldtValue . _1 . itType of CRAFT TRANSFORMER -> Just (toLasgunUpdate itm) _ -> _tryRightLink (uncurry useBreakL $ itemToBreakLists itm WeaponTargetingSF) pci @@ -164,7 +164,7 @@ toLasgunUpdate itm = springLinkTest :: LinkTest springLinkTest = LTest (const Nothing) $ - \ci -> case ci ^. _1 . itType of + \ci -> case ci ^. ldtValue . _1 . itType of CRAFT HARDWARE -> Just ( LUpdate @@ -182,14 +182,14 @@ type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDou leftIsParentCombine :: LDTComb ComposedItem ItemLink leftIsParentCombine ltree rtree = do - lu <- (ltree ^. ldtValue . _3 . tryRightLink) (rtree ^. ldtValue) + lu <- (ltree ^. ldtValue . _3 . tryRightLink) rtree --(rtree ^. ldtValue) return $ ltree & ldtValue %~ (lu ^. luParentUpdate) & ldtRight %~ (++ [(lu ^. luLinkType, rtree & ldtValue %~ (lu ^. luChildUpdate))]) rightIsParentCombine :: LDTComb ComposedItem ItemLink rightIsParentCombine ltree rtree = do - lu <- (rtree ^. ldtValue . _3 . tryLeftLink) (ltree ^. ldtValue) + lu <- (rtree ^. ldtValue . _3 . tryLeftLink) ltree -- (ltree ^. ldtValue) return $ rtree & ldtValue %~ (lu ^. luParentUpdate) & ldtLeft .:~ (lu ^. luLinkType, ltree & ldtValue %~ (lu ^. luChildUpdate)) @@ -200,9 +200,7 @@ leftRightCombine :: LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a) -leftRightCombine f f' t1 t2 = - f t1 t2 - <|> checkdepth t1 t2 +leftRightCombine f f' t1 t2 = f t1 t2 <|> checkdepth t1 t2 where checkdepth t t'@(LDT x ls rs) = fromMaybe (checktop t t') $ do (lab, t'') <- safeHead ls diff --git a/tags b/tags index a339da507..e0b0951e1 100644 --- a/tags +++ b/tags @@ -19,21 +19,21 @@ <$> src/Dodge/Data/Creature.hs 91;" o <$> src/Dodge/Data/LWorld.hs 159;" o <$> src/Dodge/Data/Terminal.hs 131;" o -AIUNIT src/Dodge/Data/Item/Combine.hs 52;" C -ALTERIFLE src/Dodge/Data/Item/Combine.hs 135;" C +AIUNIT src/Dodge/Data/Item/Combine.hs 53;" C +ALTERIFLE src/Dodge/Data/Item/Combine.hs 136;" C AMMOMAG src/Dodge/Data/Item/Combine.hs 22;" C -AMR src/Dodge/Data/Item/Combine.hs 140;" C -ANTIMATTER src/Dodge/Data/Item/Combine.hs 46;" C +AMR src/Dodge/Data/Item/Combine.hs 141;" 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 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 77;" C -AUTOAMR src/Dodge/Data/Item/Combine.hs 141;" C -AUTOPISTOL src/Dodge/Data/Item/Combine.hs 127;" C -AUTORIFLE src/Dodge/Data/Item/Combine.hs 136;" 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 AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 27;" C Action src/Dodge/Data/ActionPlan.hs 78;" t @@ -61,7 +61,7 @@ AmmoEffectSF src/Dodge/Data/ComposedItem.hs 50;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 16;" C AmmoMag src/Dodge/Data/Item.hs 34;" C AmmoMagSF src/Dodge/Data/ComposedItem.hs 41;" C -AmmoMagType src/Dodge/Data/Item/Combine.hs 81;" t +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 AmmoParams src/Dodge/Data/Item/Use.hs 112;" t @@ -97,7 +97,7 @@ AtEase src/Dodge/Data/Creature/Stance.hs 40;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C Attach src/Dodge/Item/Attach.hs 1;" m AttachParams src/Dodge/Data/Item/Use.hs 70;" t -AttachType src/Dodge/Data/Item/Combine.hs 69;" t +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 @@ -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 129;" C -BANGROD src/Dodge/Data/Item/Combine.hs 138;" C -BANGSTICK src/Dodge/Data/Item/Combine.hs 121;" C -BATTERY src/Dodge/Data/Item/Combine.hs 86;" C -BATTERYPACK src/Dodge/Data/Item/Combine.hs 110;" C -BELTMAG src/Dodge/Data/Item/Combine.hs 84;" C +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 BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 161;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 162;" C -BLOWTORCH src/Dodge/Data/Item/Combine.hs 147;" 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 BLUE src/Color/Data.hs 17;" C -BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 130;" C +BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 131;" C BLUNT src/Dodge/Data/Damage/Type.hs 13;" C BQuad src/Geometry/Bezier.hs 9;" t -BRAINHAT src/Dodge/Data/Item/Combine.hs 101;" C -BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 109;" C -BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 108;" C +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 BULLETMOD src/Dodge/Data/Item/Combine.hs 24;" C -BULLETSYNTH src/Dodge/Data/Item/Combine.hs 71;" C -BURSTRIFLE src/Dodge/Data/Item/Combine.hs 137;" C +BULLETSYNTH src/Dodge/Data/Item/Combine.hs 72;" C +BURSTRIFLE src/Dodge/Data/Item/Combine.hs 138;" 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 @@ -226,8 +226,8 @@ BulletEffect src/Dodge/Data/Bullet.hs 35;" t BulletGun src/Dodge/Item/Held/BulletGun.hs 1;" m BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 3;" m -BulletModEffect src/Dodge/Data/Item/BulletMod.hs 13;" C -BulletModPayload src/Dodge/Data/Item/BulletMod.hs 12;" C +BulletModEffect src/Dodge/Data/Item/BulletMod.hs 12;" C +BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C BulletParams src/Dodge/Data/Item/Use.hs 113;" C BulletPayload src/Dodge/Data/Bullet.hs 41;" t BulletShooterParams src/Dodge/Data/Item/Use.hs 97;" C @@ -243,18 +243,18 @@ ButtonEvent src/Dodge/Data/Button.hs 22;" t ButtonPress src/Dodge/Data/Button.hs 24;" C ButtonSimpleSwith src/Dodge/Data/Button.hs 40;" C ButtonState src/Dodge/Data/Button.hs 63;" t -CAMERA src/Dodge/Data/Item/Combine.hs 53;" C -CAN src/Dodge/Data/Item/Combine.hs 34;" C +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 87;" C +CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 88;" 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 167;" C -CREATURESENSOR src/Dodge/Data/Item/Combine.hs 63;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 168;" 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 CWGen src/Dodge/Data/CWorld.hs 35;" t @@ -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 90;" t +ConsumableItemType src/Dodge/Data/Item/Combine.hs 91;" 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 @@ -407,7 +407,7 @@ CrWlID src/Dodge/Data/CrWlID.hs 6;" m Cr_awareness src/Dodge/Data/Config.hs 72;" C Cr_status src/Dodge/Data/Config.hs 71;" C CraftClust src/Dodge/Combine/Graph.hs 19;" C -CraftType src/Dodge/Data/Item/Combine.hs 27;" t +CraftType src/Dodge/Data/Item/Combine.hs 28;" t Craftable src/Dodge/Item/Craftable.hs 1;" m Create src/Dodge/Projectile/Create.hs 1;" m Create src/Dodge/Prop/Create.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 160;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 161;" C DPoint2 src/Geometry/Data.hs 34;" t -DRUMMAG src/Dodge/Data/Item/Combine.hs 83;" C +DRUMMAG src/Dodge/Data/Item/Combine.hs 84;" 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 165;" t +Detector src/Dodge/Data/Item/Combine.hs 166;" 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 139;" C +ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 140;" 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 92;" C +EXPLOSIVES src/Dodge/Data/Item/Combine.hs 93;" 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 95;" t +EquipItemType src/Dodge/Data/Item/Combine.hs 96;" 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 @@ -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 97;" C -FLAMESPITTER src/Dodge/Data/Item/Combine.hs 143;" C -FLAMETHROWER src/Dodge/Data/Item/Combine.hs 144;" C -FLAMETORRENT src/Dodge/Data/Item/Combine.hs 145;" C -FLAMEWALL src/Dodge/Data/Item/Combine.hs 146;" C +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 FLAMING src/Dodge/Data/Damage/Type.hs 18;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 158;" C -FRONTARMOUR src/Dodge/Data/Item/Combine.hs 98;" C -FUELCELL src/Dodge/Data/Item/Combine.hs 65;" C -FUELPACK src/Dodge/Data/Item/Combine.hs 107;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 159;" C +FRONTARMOUR src/Dodge/Data/Item/Combine.hs 99;" C +FUELCELL src/Dodge/Data/Item/Combine.hs 66;" C +FUELPACK src/Dodge/Data/Item/Combine.hs 108;" 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 @@ -735,10 +735,10 @@ FunctionChangeLink src/Dodge/Data/ComposedItem.hs 29;" C FunctionChangeSF src/Dodge/Data/ComposedItem.hs 51;" C GBounce src/Dodge/Data/Projectile.hs 52;" C GEqC src/SameConstr.hs 20;" c -GLASSSHARD src/Dodge/Data/Item/Combine.hs 38;" C -GLAUNCHER src/Dodge/Data/Item/Combine.hs 154;" C +GLASSSHARD src/Dodge/Data/Item/Combine.hs 39;" C +GLAUNCHER src/Dodge/Data/Item/Combine.hs 155;" C GLHelp src/GLHelp.hs 1;" m -GRAPECANNON src/Dodge/Data/Item/Combine.hs 131;" C +GRAPECANNON src/Dodge/Data/Item/Combine.hs 132;" C GREEN src/Color/Data.hs 16;" C GStick src/Dodge/Data/Projectile.hs 53;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 36;" C @@ -792,14 +792,14 @@ Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m GymSS src/Dodge/Data/Scenario.hs 104;" C -HARDDRIVE src/Dodge/Data/Item/Combine.hs 50;" C -HARDWARE src/Dodge/Data/Item/Combine.hs 30;" C -HAT src/Dodge/Data/Item/Combine.hs 102;" C -HEADLAMP src/Dodge/Data/Item/Combine.hs 103;" C -HEATSENSOR src/Dodge/Data/Item/Combine.hs 60;" 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 +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 76;" C -HOSE src/Dodge/Data/Item/Combine.hs 32;" C +HOMINGMODULE src/Dodge/Data/Item/Combine.hs 77;" 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 HUD src/Dodge/Render/HUD.hs 3;" m @@ -819,7 +819,7 @@ 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 120;" t +HeldItemType src/Dodge/Data/Item/Combine.hs 121;" 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 @@ -852,9 +852,9 @@ Humanoid src/Dodge/Humanoid.hs 1;" m HumanoidAI src/Dodge/Data/Creature/Misc.hs 48;" t ILink src/Dodge/Data/ComposedItem.hs 57;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t -INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 100;" C -IRONBAR src/Dodge/Data/Item/Combine.hs 57;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 166;" C +INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 101;" C +IRONBAR src/Dodge/Data/Item/Combine.hs 58;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 167;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t Important src/Shape/Data.hs 35;" C @@ -946,29 +946,29 @@ ItmCrWdWd src/Dodge/Data/Item/Use/Equipment.hs 28;" t 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 73;" C -JUMPLEGS src/Dodge/Data/Item/Combine.hs 106;" C +JOYSTICK src/Dodge/Data/Item/Combine.hs 74;" C +JUMPLEGS src/Dodge/Data/Item/Combine.hs 107;" 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 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 159;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 160;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C -LASER src/Dodge/Data/Item/Combine.hs 150;" C +LASER src/Dodge/Data/Item/Combine.hs 151;" 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 175;" t +LDTComb src/Dodge/Item/Grammar.hs 181;" 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 LDTTopNode src/Dodge/Data/DoubleTree.hs 25;" C -LED src/Dodge/Data/Item/Combine.hs 55;" C +LED src/Dodge/Data/Item/Combine.hs 56;" C LHS src/Geometry/LHS.hs 1;" m -LIGHTER src/Dodge/Data/Item/Combine.hs 44;" C -LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 58;" C +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 @@ -1065,23 +1065,23 @@ 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 126;" C +MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 127;" C MAGENTA src/Color/Data.hs 20;" C -MAGNET src/Dodge/Data/Item/Combine.hs 45;" C -MAGSHIELD src/Dodge/Data/Item/Combine.hs 96;" C +MAGNET src/Dodge/Data/Item/Combine.hs 46;" C +MAGSHIELD src/Dodge/Data/Item/Combine.hs 97;" 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 91;" C -MICROCHIP src/Dodge/Data/Item/Combine.hs 49;" C -MICROPHONE src/Dodge/Data/Item/Combine.hs 61;" C -MINIDISPLAY src/Dodge/Data/Item/Combine.hs 54;" C -MINIGUNX src/Dodge/Data/Item/Combine.hs 132;" C +MEDKIT src/Dodge/Data/Item/Combine.hs 92;" 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 MODBlockedString src/Dodge/Data/Universe.hs 98;" C MODString src/Dodge/Data/Universe.hs 97;" C MODStringOption src/Dodge/Data/Universe.hs 99;" C -MOTOR src/Dodge/Data/Item/Combine.hs 41;" C +MOTOR src/Dodge/Data/Item/Combine.hs 42;" C MP2Ac src/Dodge/Data/CreatureEffect.hs 56;" t MP2NoAction src/Dodge/Data/CreatureEffect.hs 56;" C MTRS src/Dodge/Annotation/Data.hs 12;" t @@ -1212,7 +1212,7 @@ MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 156;" C MvForward src/Dodge/Data/ActionPlan.hs 35;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 34;" C MvWalking src/Dodge/Data/Creature/Misc.hs 39;" C -NAILBOX src/Dodge/Data/Item/Combine.hs 56;" C +NAILBOX src/Dodge/Data/Item/Combine.hs 57;" C NInt src/NewInt.hs 15;" C NIntMap src/NewInt.hs 18;" C NS src/Dodge/Data/CardinalPoint.hs 25;" C @@ -1264,6 +1264,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 NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C NoSubInventory src/Dodge/Data/HUD.hs 35;" C @@ -1366,23 +1367,23 @@ P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t 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 28;" C -PISTOL src/Dodge/Data/Item/Combine.hs 125;" C -PLANK src/Dodge/Data/Item/Combine.hs 37;" C -PLATE src/Dodge/Data/Item/Combine.hs 47;" C +PIPE src/Dodge/Data/Item/Combine.hs 29;" C +PISTOL src/Dodge/Data/Item/Combine.hs 126;" C +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 155;" C -PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 66;" C -POWERLEGS src/Dodge/Data/Item/Combine.hs 104;" C +POISONSPRAYER src/Dodge/Data/Item/Combine.hs 156;" C +PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 67;" C +POWERLEGS src/Dodge/Data/Item/Combine.hs 105;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C -PRISM src/Dodge/Data/Item/Combine.hs 43;" C +PRISM src/Dodge/Data/Item/Combine.hs 44;" C PS src/Dodge/Data/GenWorld.hs 62;" C PSNoShiftCont src/Dodge/Data/GenWorld.hs 63;" C PSPos src/Dodge/Data/GenWorld.hs 64;" C PSRoomRand src/Dodge/Data/GenWorld.hs 69;" C PSType src/Dodge/Data/GenWorld.hs 30;" t -PUMP src/Dodge/Data/Item/Combine.hs 40;" C +PUMP src/Dodge/Data/Item/Combine.hs 41;" C Padding src/Padding.hs 2;" m Pair src/FoldlHelp.hs 10;" t PaletteColor src/Color/Data.hs 14;" t @@ -1536,16 +1537,16 @@ PutWorldUpdate src/Dodge/Data/GenWorld.hs 54;" C QuarterRes src/Dodge/Data/Config.hs 97;" C Quaternion src/Quaternion.hs 12;" m QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C -RAM src/Dodge/Data/Item/Combine.hs 51;" 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 74;" C -REMOTESCREEN src/Dodge/Data/Item/Combine.hs 72;" C -REWINDER src/Dodge/Data/Item/Combine.hs 122;" C +REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 75;" C +REMOTESCREEN src/Dodge/Data/Item/Combine.hs 73;" C +REWINDER src/Dodge/Data/Item/Combine.hs 123;" C RGBA src/Color/Data.hs 31;" t -RIFLE src/Dodge/Data/Item/Combine.hs 134;" C -RLAUNCHER src/Dodge/Data/Item/Combine.hs 152;" C -RLAUNCHERX src/Dodge/Data/Item/Combine.hs 153;" C +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 ROSE src/Color/Data.hs 21;" C RPLinkStatus src/Dodge/Data/Room.hs 55;" t RProps src/Dodge/Layout/Generate.hs 13;" C @@ -1640,25 +1641,26 @@ RoomWire src/Dodge/Data/Room.hs 51;" t 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 39;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 156;" C +SCRAPMETAL src/Dodge/Data/Item/Combine.hs 40;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 157;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C -SHELLMAG src/Dodge/Data/Item/Combine.hs 85;" C -SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 78;" C -SMG src/Dodge/Data/Item/Combine.hs 128;" C -SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 75;" C -SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 142;" C -SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 59;" C -SPARKGUN src/Dodge/Data/Item/Combine.hs 148;" 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 +SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 60;" C +SPARKGUN src/Dodge/Data/Item/Combine.hs 149;" C SPARKING src/Dodge/Data/Damage/Type.hs 15;" C -SPEEDLEGS src/Dodge/Data/Item/Combine.hs 105;" C -SPRING src/Dodge/Data/Item/Combine.hs 31;" C +SPEEDLEGS src/Dodge/Data/Item/Combine.hs 106;" 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 SQUARE src/Dodge/Data/GenParams.hs 20;" C ST src/Dodge/Data/MetaTree.hs 18;" C ST src/Dodge/Tree/Compose/Data.hs 12;" C -STEELDRUM src/Dodge/Data/Item/Combine.hs 36;" C +STEELDRUM src/Dodge/Data/Item/Combine.hs 37;" C +STICKYMOD src/Dodge/Data/Item/Combine.hs 25;" C SameConstr src/SameConstr.hs 5;" m Save src/Dodge/Save.hs 1;" m SaveSlot src/Dodge/Data/SaveSlot.hs 9;" t @@ -1843,20 +1845,20 @@ SwarmPlacement src/Dodge/LevelGen/SwarmPlacement.hs 1;" m Switch src/Dodge/LevelGen/Switch.hs 1;" m SwitchAlteRifle src/Dodge/Data/Item/Use.hs 54;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C -TAPE src/Dodge/Data/Item/Combine.hs 33;" 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 149;" C -THERMOMETER src/Dodge/Data/Item/Combine.hs 62;" C +TESLAGUN src/Dodge/Data/Item/Combine.hs 150;" 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 124;" C -TIMESTOPPER src/Dodge/Data/Item/Combine.hs 123;" C -TIN src/Dodge/Data/Item/Combine.hs 35;" C -TINMAG src/Dodge/Data/Item/Combine.hs 82;" C +TIMESCROLLER src/Dodge/Data/Item/Combine.hs 125;" C +TIMESTOPPER src/Dodge/Data/Item/Combine.hs 124;" C +TIN src/Dodge/Data/Item/Combine.hs 36;" C +TINMAG src/Dodge/Data/Item/Combine.hs 83;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 157;" C -TRACTORGUN src/Dodge/Data/Item/Combine.hs 151;" C -TRANSFORMER src/Dodge/Data/Item/Combine.hs 42;" C -TRANSMITTER src/Dodge/Data/Item/Combine.hs 48;" C +TORCH src/Dodge/Data/Item/Combine.hs 158;" C +TRACTORGUN src/Dodge/Data/Item/Combine.hs 152;" 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 TSdelete src/Dodge/Data/Input.hs 63;" C TSdown src/Dodge/Data/Input.hs 68;" C @@ -1866,7 +1868,7 @@ TSreturn src/Dodge/Data/Input.hs 61;" C TSright src/Dodge/Data/Input.hs 66;" C TStab src/Dodge/Data/Input.hs 64;" C TSup src/Dodge/Data/Input.hs 67;" C -TUBE src/Dodge/Data/Item/Combine.hs 29;" C +TUBE src/Dodge/Data/Item/Combine.hs 30;" C Tank src/Dodge/Placement/Instance/Tank.hs 1;" m Tanks src/Dodge/Room/Tanks.hs 1;" m Tap src/Dodge/Data/SoundOrigin.hs 38;" C @@ -1997,7 +1999,6 @@ TwoHandUnder src/Dodge/Data/Item/Use.hs 189;" 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 46;" 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 @@ -2052,7 +2053,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 133;" C +VOLLEYGUN src/Dodge/Data/Item/Combine.hs 134;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2067,12 +2068,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 168;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 169;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C -WIRE src/Dodge/Data/Item/Combine.hs 64;" C -WRISTARMOUR src/Dodge/Data/Item/Combine.hs 99;" C -WRIST_ECG src/Dodge/Data/Item/Combine.hs 111;" 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 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 @@ -2156,7 +2157,7 @@ WorldPos src/Dodge/WorldPos.hs 1;" m YELLOW src/Color/Data.hs 18;" C You src/Dodge/Base/You.hs 1;" m YourControl src/Dodge/Creature/YourControl.hs 1;" m -ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 70;" C +ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 71;" C ZombieFaction src/Dodge/Data/Creature/State.hs 36;" C Zone src/Dodge/Wall/Zone.hs 1;" m Zone src/Geometry/Zone.hs 1;" m @@ -2230,10 +2231,10 @@ _bmColor src/Dodge/Data/Beam.hs 23;" f _bmDamage src/Dodge/Data/Beam.hs 22;" f _bmDir src/Dodge/Data/Beam.hs 21;" f _bmDraw src/Dodge/Data/Beam.hs 19;" f -_bmEffect src/Dodge/Data/Item/BulletMod.hs 13;" f +_bmEffect src/Dodge/Data/Item/BulletMod.hs 12;" f _bmFirstPoints src/Dodge/Data/Beam.hs 25;" f _bmOrigin src/Dodge/Data/Beam.hs 28;" f -_bmPayload src/Dodge/Data/Item/BulletMod.hs 12;" f +_bmPayload src/Dodge/Data/Item/BulletMod.hs 11;" f _bmPhaseV src/Dodge/Data/Beam.hs 27;" f _bmPoints src/Dodge/Data/Beam.hs 24;" f _bmPos src/Dodge/Data/Beam.hs 20;" f @@ -3021,7 +3022,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 78;" f +_shellPayload src/Dodge/Data/Item/Combine.hs 79;" 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 @@ -3271,9 +3272,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 121;" f -_xNum src/Dodge/Data/Item/Combine.hs 131;" f -_xNum src/Dodge/Data/Item/Combine.hs 153;" 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 aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 21;" f @@ -3341,11 +3342,11 @@ 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 256;" f +allInvLocs src/Dodge/Item/Grammar.hs 262;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f alteRifle src/Dodge/Item/Held/Cane.hs 65;" f -ammoMagSPic src/Dodge/Item/Draw/SPic.hs 112;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 113;" f amr src/Dodge/Item/Held/Rod.hs 44;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 76;" f @@ -3416,7 +3417,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 56;" f +augmentedHUD src/Dodge/Item/Scope.hs 64;" 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 @@ -3431,28 +3432,28 @@ azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f backpackCombinations src/Dodge/Combine/Combinations.hs 26;" f -backpackShape src/Dodge/Item/Draw/SPic.hs 161;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 162;" f backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f bangCone src/Dodge/Item/Held/Cone.hs 11;" f -bangConeShape src/Dodge/Item/Draw/SPic.hs 275;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 276;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 382;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 496;" f bangStick src/Dodge/Item/Held/Stick.hs 16;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 388;" 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 129;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 295;" f +baseCI src/Dodge/Item/Grammar.hs 135;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 296;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 298;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 385;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 365;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 299;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 386;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 366;" f baseShoulder src/Dodge/Creature/Picture.hs 131;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 272;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 267;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 273;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 268;" f baseStickSpread src/Dodge/Item/Held/Stick.hs 39;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 37;" f @@ -3522,8 +3523,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 39;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 53;" f +bulletModule src/Dodge/Item/Scope.hs 47;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 61;" 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 @@ -3716,7 +3717,7 @@ crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f craftInfo src/Dodge/Item/Info.hs 125;" f -craftItemSPic src/Dodge/Item/Draw/SPic.hs 44;" f +craftItemSPic src/Dodge/Item/Draw/SPic.hs 45;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 434;" f createArc src/Dodge/Tesla/Arc.hs 81;" f createBarrelSpark src/Dodge/Spark.hs 44;" f @@ -3824,7 +3825,7 @@ debugMenuOptions src/Dodge/Menu.hs 119;" f debugOn src/Dodge/Data/Config.hs 151;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f -decTimMvVel src/Dodge/Projectile/Update.hs 184;" f +decTimMvVel src/Dodge/Projectile/Update.hs 185;" f decodedtmap src/Dodge/Terminal.hs 205;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f @@ -3840,7 +3841,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 462;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 328;" f defDamageMaterial src/Dodge/Material/Damage.hs 17;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 281;" f +defSPic src/Dodge/Item/Draw/SPic.hs 282;" f defaultAimMvType src/Dodge/Default/Creature.hs 117;" f defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f defaultAimingCrit src/Dodge/Default/Creature.hs 126;" f @@ -3927,10 +3928,10 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 21;" f destroyMount src/Dodge/Block.hs 104;" f destroyMounts src/Dodge/Block.hs 101;" f -destroyProjectile src/Dodge/Projectile/Update.hs 112;" f +destroyProjectile src/Dodge/Projectile/Update.hs 113;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 41;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 434;" 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 @@ -3952,7 +3953,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 106;" f +displayPulse src/Dodge/Item/Display.hs 107;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f displayTerminalLineString src/Dodge/Update.hs 447;" f dist src/Geometry/Vector.hs 179;" f @@ -4041,7 +4042,7 @@ doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f -doThrust src/Dodge/Projectile/Update.hs 124;" f +doThrust src/Dodge/Projectile/Update.hs 125;" f doTimeScroll src/Dodge/Update.hs 205;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 101;" f @@ -4226,7 +4227,7 @@ eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 76;" f equipAllocString src/Dodge/Render/HUD.hs 295;" f equipInfo src/Dodge/Item/Info.hs 98;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 132;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 133;" f equipPosition src/Dodge/Item/Draw.hs 28;" f equipSiteInfo src/Dodge/Item/Info.hs 209;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f @@ -4248,7 +4249,7 @@ expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 195;" f expireAndDamageFL src/Dodge/Flame.hs 47;" f -explodeShell src/Dodge/Projectile/Update.hs 192;" f +explodeShell src/Dodge/Projectile/Update.hs 193;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 410;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -4291,12 +4292,12 @@ flameSpitter src/Dodge/Item/Held/SprayGuns.hs 29;" f 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 368;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 369;" f flareCircleAt src/Dodge/HeldUse.hs 259;" 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 -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 421;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 422;" f fleeFrom src/Dodge/CreatureEffect.hs 120;" f fleeFromTarget src/Dodge/CreatureEffect.hs 66;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f @@ -4333,7 +4334,7 @@ forceFoldable src/StrictHelp.hs 7;" f forceSpine src/StrictHelp.hs 4;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f fpsText src/Dodge/Render/Picture.hs 47;" f -fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 125;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 126;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 370;" f @@ -4371,10 +4372,10 @@ 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 95;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 96;" f getArguments src/Dodge/Update/Scroll.hs 215;" f getArguments' src/Dodge/Update/Scroll.hs 203;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 90;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 91;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulletType src/Dodge/HeldUse.hs 410;" f getCommands src/Dodge/Terminal.hs 117;" f @@ -4417,7 +4418,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 450;" f glassSwitchBack src/Dodge/Room/Room.hs 70;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f glassWallDamage src/Dodge/Wall/DamageEffect.hs 48;" f -glauncherPic src/Dodge/Item/Draw/SPic.hs 374;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 375;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f @@ -4468,7 +4469,7 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 218;" f hat src/Dodge/Item/Equipment.hs 134;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 140;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 424;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 425;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4483,7 +4484,7 @@ heldInfo src/Dodge/Item/Info.hs 47;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 78;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 26;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 31;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 208;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 209;" f heldPositionInfo src/Dodge/Item/Info.hs 196;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f @@ -4497,7 +4498,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 36;" f +homingModule src/Dodge/Item/Scope.hs 37;" 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 @@ -4570,16 +4571,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 237;" f +invAdj src/Dodge/Item/Grammar.hs 243;" 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 217;" f +invLDT src/Dodge/Item/Grammar.hs 223;" f invRootItemEffs src/Dodge/Creature/State.hs 172;" f -invRootMap src/Dodge/Item/Grammar.hs 226;" f -invRootTrees src/Dodge/Item/Grammar.hs 247;" f +invRootMap src/Dodge/Item/Grammar.hs 232;" f +invRootTrees src/Dodge/Item/Grammar.hs 253;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 166;" f @@ -4623,7 +4624,7 @@ 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 132;" f +itemBaseConnections src/Dodge/Item/Grammar.hs 138;" f itemBaseName src/Dodge/Item/Display.hs 56;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 55;" f @@ -4632,21 +4633,21 @@ itemDetectorEffect src/Dodge/HeldUse.hs 316;" 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 28;" f -itemFromAttachType src/Dodge/Item.hs 37;" 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 50;" f +itemFromEquipType src/Dodge/Item.hs 51;" 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 89;" f +itemNumberDisplay src/Dodge/Item/Display.hs 90;" 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 50;" f -itemToFunction src/Dodge/Item/Grammar.hs 101;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 51;" f +itemToFunction src/Dodge/Item/Grammar.hs 102;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f itemUpdate src/Dodge/Creature/State.hs 429;" f iterateUntil src/MonadHelp.hs 23;" f @@ -4657,8 +4658,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 207;" f -joystick src/Dodge/Item/Scope.hs 67;" f +joinItemsInList src/Dodge/Item/Grammar.hs 213;" f +joystick src/Dodge/Item/Scope.hs 75;" 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 @@ -4672,7 +4673,7 @@ keyCard src/Dodge/Item/Held/Utility.hs 30;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 70;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 58;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f -keyPic src/Dodge/Item/Draw/SPic.hs 440;" f +keyPic src/Dodge/Item/Draw/SPic.hs 441;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4684,14 +4685,14 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f 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 394;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 395;" f lasRayAt src/Dodge/HeldUse.hs 387;" 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 138;" f +laserLinkTest src/Dodge/Item/Grammar.hs 144;" f lastMap src/Dodge/DoubleTree.hs 174;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f @@ -4706,10 +4707,10 @@ 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 177;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 183;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 191;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 458;" f +leftRightCombine src/Dodge/Item/Grammar.hs 197;" 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 lightSensByDoor src/Dodge/Room/LasTurret.hs 45;" f @@ -4736,8 +4737,8 @@ 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 141;" f -llright src/Dodge/Item/Grammar.hs 147;" f +llleft src/Dodge/Item/Grammar.hs 147;" f +llright src/Dodge/Item/Grammar.hs 153;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 381;" f @@ -4873,7 +4874,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 112;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 113;" 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 @@ -4928,8 +4929,8 @@ 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 96;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 346;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 341;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 347;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 342;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 12;" f @@ -5129,7 +5130,7 @@ pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 42;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 12;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 169;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 170;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f @@ -5393,8 +5394,8 @@ 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 63;" f -remoteScreen src/Dodge/Item/Scope.hs 59;" f +remoteDetonator src/Dodge/Item/Scope.hs 71;" f +remoteScreen src/Dodge/Item/Scope.hs 67;" f removeAmmoFromMag src/Dodge/HeldUse.hs 397;" f removeDot src/ShortShow.hs 30;" f removeHotkey src/Dodge/Hotkey.hs 40;" f @@ -5440,11 +5441,11 @@ 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 184;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 190;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f -rlauncherPic src/Dodge/Item/Draw/SPic.hs 371;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 372;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 55;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5645,11 +5646,11 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f -shatterGunSPic src/Dodge/Item/Draw/SPic.hs 284;" f +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 45;" f +shellModule src/Dodge/Item/Scope.hs 53;" f shellShape src/Dodge/Projectile/Draw.hs 34;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f shieldWall src/Dodge/Euse.hs 87;" f @@ -5693,8 +5694,8 @@ shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f 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 69;" f -showEquipItem src/Dodge/Item/Display.hs 81;" f +showAttachItem src/Dodge/Item/Display.hs 70;" f +showEquipItem src/Dodge/Item/Display.hs 82;" f showInt src/Dodge/Item/Info.hs 30;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showManObj src/Dodge/TestString.hs 79;" f @@ -5737,7 +5738,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 71;" f +smokeReducer src/Dodge/Item/Scope.hs 79;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5784,7 +5785,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 159;" f +springLinkTest src/Dodge/Item/Grammar.hs 165;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f square src/Geometry/Polygon.hs 46;" f @@ -5821,6 +5822,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 stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f @@ -5878,7 +5880,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 26;" f +targetingScope src/Dodge/Item/Scope.hs 27;" 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 @@ -5892,7 +5894,7 @@ terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 141;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 391;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 392;" f 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 @@ -5942,7 +5944,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 152;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 158;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f @@ -5964,14 +5966,14 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 75;" f torch src/Dodge/Item/Held/Utility.hs 33;" f -torchShape src/Dodge/Item/Draw/SPic.hs 253;" f +torchShape src/Dodge/Item/Draw/SPic.hs 254;" f 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 tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 418;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 419;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6023,7 +6025,7 @@ truncFaces src/Polyhedra/Geodesic.hs 53;" f truncate src/Polyhedra/Geodesic.hs 38;" f trunkDepth src/TreeHelp.hs 161;" f tryAssignHotkey src/Dodge/Creature/YourControl.hs 94;" f -tryAttachItems src/Dodge/Item/Grammar.hs 21;" f +tryAttachItems src/Dodge/Item/Grammar.hs 22;" f tryCombine src/Dodge/Update/Input/InGame.hs 578;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 115;" f tryGetChannel src/Sound.hs 96;" f @@ -6037,7 +6039,7 @@ tryPutItemInInv src/Dodge/Inventory/Add.hs 42;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f tryShellBounce src/Dodge/Projectile/Update.hs 99;" f -trySpinByCID src/Dodge/Projectile/Update.hs 151;" f +trySpinByCID src/Dodge/Projectile/Update.hs 152;" f trySynthBullet src/Dodge/Creature/State.hs 204;" f tryUseParent src/Dodge/Creature/State.hs 197;" f turnTo src/Dodge/Movement/Turn.hs 4;" f @@ -6205,8 +6207,8 @@ upperPrismPolyST src/Shape.hs 107;" f upperPrismPolySU src/Shape.hs 113;" f upperPrismPolyTS src/Shape.hs 119;" f upperRounded src/Shape.hs 184;" f -useBreakL src/Dodge/Item/Grammar.hs 27;" f -useBreakListsLinkTest src/Dodge/Item/Grammar.hs 35;" f +useBreakL src/Dodge/Item/Grammar.hs 28;" f +useBreakListsLinkTest src/Dodge/Item/Grammar.hs 36;" f useBulletPayload src/Dodge/Bullet.hs 118;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f @@ -6262,7 +6264,7 @@ visibleWalls src/Dodge/Base/Collide.hs 123;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 31;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 329;" 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 walkableNodeNear src/Dodge/Path.hs 48;" f @@ -6382,5 +6384,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 21;" f +zoomScope src/Dodge/Item/Scope.hs 22;" f zoomSpeed src/Dodge/Update/Scroll.hs 101;" f