diff --git a/data/dodge.config.json b/data/dodge.config.json index 9520bc0f1..f890021b0 100644 --- a/data/dodge.config.json +++ b/data/dodge.config.json @@ -9,7 +9,7 @@ "_graphics_cloud_shadows": true, "_graphics_distortion_resolution": "FullRes", "_graphics_distortions": true, - "_graphics_downsize_resolution": "EighthRes", + "_graphics_downsize_resolution": "SixteenthRes", "_graphics_num_shadow_casters": "NumShadowCasters20", "_graphics_shadow_rendering": "GeoObjShads", "_graphics_shadow_size": "Typical", diff --git a/src/Dodge/Base/You.hs b/src/Dodge/Base/You.hs index dd7eab068..d1c45556c 100644 --- a/src/Dodge/Base/You.hs +++ b/src/Dodge/Base/You.hs @@ -1,19 +1,13 @@ module Dodge.Base.You (you --- , yourScopeInvID , yourInv --- , yourScrollAttachment , yourSelectedItem , yourRootItem )where import Dodge.Data.World ---import Dodge.HeldScroll import qualified IntMapHelp as IM ---import qualified Data.Map.Strict as M import Control.Lens ---import Control.Monad ---import Data.Maybe you :: World -> Creature you w = w ^?! cWorld . lWorld . creatures . ix 0 @@ -28,23 +22,6 @@ yourRootItem w = do i <- you w ^? crManipulation . manObject . imRootSelectedItem _crInv (you w) IM.!? i ---yourScrollAttachment :: World -> Maybe (Int,ScrollAttachParams) ---yourScrollAttachment w = do --- i <- you w ^? crManipulation . manObject . inInventory . ispItem --- itm <- _crInv (you w) IM.!? i --- atparams <- you w ^? crInv . ix (i - 1) . itUse . attachParams . scrollAttachParams --- guard (canHeldScrollAttach itm atparams) --- return (i - 1, atparams) - ---yourScopeInvID :: World -> Maybe Int ---yourScopeInvID w = do --- (i, params) <- yourScrollAttachment w --- _ <- params ^? opticPos --- return i - yourInv :: World -> IM.IntMap Item yourInv = _crInv . you - ---yourInvSel :: World -> Int ---yourInvSel = crSel . you diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 42d710865..c32f8763d 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -245,7 +245,7 @@ inventoryX c = case c of , gimbal , battery , laser - , augmentedHUD + , arHUD , rLauncher , megaShellMag , homingModule @@ -269,7 +269,7 @@ inventoryX c = case c of <> [ battery , zoomScope - , augmentedHUD + , arHUD , makeTypeCraft SPRING , makeTypeCraft HARDWARE , autoRifle @@ -307,7 +307,7 @@ stackedInventory = , magShield , bangCone , megaTinMag 100 - , augmentedHUD + , arHUD , smallBattery , makeTypeCraft TRANSFORMER , remoteScreen diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index dd518477d..896d97e1c 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -36,7 +36,7 @@ useItemLoc cr loc pt w , cr ^. crStance . posture == Aiming = return $ heldEffect pt (bimap _iatType (^. _1) ldt) cr w | GadgetPlatformSF <- sf = - return $ heldEffect pt (bimap _iatType (^. _1) ldt) cr w + return $ gadgetEffect pt loc cr w | UnderBarrelPlatformSF <- sf , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsAttached , cr ^. crStance . posture == Aiming = @@ -79,6 +79,8 @@ structureUseAtLoc :: ItemStructuralFunction -> Bool structureUseAtLoc = \case HeldPlatformSF -> True UnderBarrelPlatformSF -> True + GadgetPlatformSF -> True + MapperSF -> True _ -> False activateDetonator :: diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 1b45f359c..e822b87ab 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -3,6 +3,7 @@ module Dodge.Creature.State ( doDamage, ) where +import Control.Applicative import Dodge.HeldUse import Control.Monad import qualified Data.Map.Strict as M @@ -291,16 +292,17 @@ updateItemWithOrientation cr m loc@(LocLDT _ itmtree) = (HELD TORCH, _) -> shineTorch cr itmtree m (HELD LASER, WeaponTargetingSF) -> shineTargetLaser cr itmtree m (TARGETING tt, _) -> updateItemTargeting tt cr itm - (ATTACH AUGMENTEDHUD, _) -> drawAugmentedHUD loc + (ARHUD, _) -> drawARHUD loc _ -> id where ci = itmtree ^. ldtValue itm = ci ^. _1 -drawAugmentedHUD :: LocationLDT ItemLink ComposedItem -> World -> World -drawAugmentedHUD (LocLDT con _) w = fromMaybe w $ do +drawARHUD :: LocationLDT ItemLink ComposedItem -> World -> World +drawARHUD (LocLDT con _) w = fromMaybe w $ do itm <- con ^? cldtParent . _1 - return $ w & cWorld . lWorld . flares <>~ drawTargeting itm w + return $ w & cWorld . lWorld . flares <>~ fold + (drawTargetingAR itm w <|> drawMapperAR itm w) shineTargetLaser :: Creature -> diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 8768493c9..62f839897 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -26,7 +26,7 @@ data ComposeLinkType | RemoteScreenLink | RemoteDetonatorLink | SmokeReducerLink - | AugmentedHUDLink +-- | AugmentedHUDLink | FunctionChangeLink | MakeAutoLink | ProjectileStabiliserLink @@ -47,7 +47,7 @@ data ItemStructuralFunction | WeaponTargetingSF | IntroScanSF | TriggerSF - | AugmentedHUDSF + | ARHUDSF | AmmoMagSF AmmoType | RemoteScreenSF | JoystickSF diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 9ed432d48..68bcfafaf 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -23,8 +23,16 @@ data ItemType | STICKYMOD | ITEMSCAN | MAPPER + | DROPPER InventoryPathing | INTROSCAN {_ibtIntroScanType :: IntroScanType} | DETECTOR {_ibtDetector :: Detector} + | ARHUD + deriving (Eq, Ord, Show, Read) + +data InventoryPathing + = ABSOLUTE + | RELCURS + | RELITEM deriving (Eq, Ord, Show, Read) data IntroScanType @@ -85,7 +93,6 @@ data AttachType | REMOTEDETONATOR | SMOKEREDUCER | HOMINGMODULE - | AUGMENTEDHUD | SHELLPAYLOAD {_shellPayload :: Payload} deriving (Eq, Ord, Show, Read) @@ -175,6 +182,7 @@ data Detector makeLenses ''ItemType makeLenses ''HeldItemType makeLenses ''AttachType +deriveJSON defaultOptions ''InventoryPathing deriveJSON defaultOptions ''IntroScanType deriveJSON defaultOptions ''CraftType deriveJSON defaultOptions ''ConsumableItemType diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index 1d669e3c1..19e4cb6c0 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -41,6 +41,7 @@ data ItemUse } | UseEquip {_uequipEffect :: EquipEffect} | UseAttach {_uaParams :: AttachParams} + | UseInt {_uInt :: Int} | UseNothing | UseScope {_uScope :: Scope} | UseBulletMod {_ubMod :: BulletMod} @@ -223,8 +224,6 @@ deriveJSON defaultOptions ''HeldParams deriveJSON defaultOptions ''AmmoPerShot deriveJSON defaultOptions ''Muzzle deriveJSON defaultOptions ''AimStance - ---deriveJSON defaultOptions ''ScrollAttachParams deriveJSON defaultOptions ''AttachParams deriveJSON defaultOptions ''ItZoom deriveJSON defaultOptions ''AimParams diff --git a/src/Dodge/Data/RadarSweep.hs b/src/Dodge/Data/RadarSweep.hs index 34b0bda5c..f92c20f51 100644 --- a/src/Dodge/Data/RadarSweep.hs +++ b/src/Dodge/Data/RadarSweep.hs @@ -22,6 +22,8 @@ data RadarSweep = RadarSweep , _rsObject :: ObjectType , _rsTimer :: Int , _rsMapper :: Maybe (NewInt ItmInt) + , _rsAR :: Maybe (NewInt ItmInt) + , _rsSource :: NewInt ItmInt } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index c7759ac90..7ee092fff 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -3,17 +3,18 @@ module Dodge.HeldUse ( heldEffect, + gadgetEffect, heldEffectNoHammerCheck, mcUseHeld, ) where +import qualified Data.IntMap.Strict as IM +import Dodge.Creature.Action import Color import Control.Applicative import Control.Monad import Data.Maybe import Dodge.Base.Collide ---import Dodge.Base.Coordinate -import Dodge.Creature.Action.Blink import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Dodge.Data.MuzzleEffect @@ -35,6 +36,20 @@ import Picture.Base import RandomHelp import qualified SDL +gadgetEffect :: + PressType -> + LocationLDT ItemLink ComposedItem -> + Creature -> + World -> + World +gadgetEffect pt loc + | UseHeld {} <- loc ^. locLDT . ldtValue . _1 . itUse = heldEffect pt + (bimap _iatType (^. _1) (loc ^. locLDT)) + | DROPPER x <- loc ^. locLDT . ldtValue . _1 . itType + , Just i <- loc ^? locLDT . ldtValue . _1 . itUse . uInt + , pt == InitialPress = dropInventoryPath i x loc + | otherwise = const id + heldEffect :: PressType -> LabelDoubleTree ComposeLinkType Item -> @@ -329,7 +344,8 @@ useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cme w MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w MuzzleShatter -> shootShatter itm cr w - MuzzleDetector -> itemDetectorEffect itm (getAttachedMapper itmtree) cr w + MuzzleDetector -> itemDetectorEffect itm (getAttachedSFLink MapperSF itmtree) + (getAttachedSFLink ARHUDSF itmtree) cr w MuzzleBlink -> unsafeBlinkAction cr w MuzzleUnsafeBlink -> blinkActionMousePos cr w MuzzleRewind -> useRewindGun (itm ^. itID) w @@ -339,18 +355,20 @@ useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cme mid = magtree ^? ldtValue . itLocation . ilInvID itm = itmtree ^. ldtValue +getAttachedSFLink :: ItemStructuralFunction + -> LabelDoubleTree ComposeLinkType Item -> Maybe (NewInt ItmInt) +getAttachedSFLink sf = (^? ldtRight . folding (lookup (SFLink sf)) . ldtValue . itID) -getAttachedMapper :: LabelDoubleTree ComposeLinkType Item -> Maybe (NewInt ItmInt) -getAttachedMapper = - (^? ldtRight . folding (lookup (SFLink MapperSF)) . ldtValue . itID) - -itemDetectorEffect :: Item -> Maybe (NewInt ItmInt) -> Creature -> World -> World -itemDetectorEffect itm itid cr w = fromMaybe w $ do +itemDetectorEffect :: Item -> Maybe (NewInt ItmInt) + -> Maybe (NewInt ItmInt) -> Creature -> World -> World +itemDetectorEffect itm mitid armitid cr w = fromMaybe w $ do DETECTOR dt <- itm ^? itType - return $ case dt of - ITEMDETECTOR -> aRadarPulse itid ObItem cr w - CREATUREDETECTOR -> aRadarPulse itid ObCreature cr w - WALLDETECTOR -> aRadarPulse itid ObWall cr w + return $ aRadarPulse (itm ^. itID) mitid armitid (f dt) cr w + where + f ITEMDETECTOR = ObItem + f CREATUREDETECTOR = ObCreature + f WALLDETECTOR = ObWall + walkNozzle :: Int -> Muzzle -> Item -> Creature -> World -> World walkNozzle mzid mz itm cr w = fromMaybe w $ do @@ -759,6 +777,22 @@ useRewindGun i = , _scrollItemID = i } +dropInventoryPath :: Int -> InventoryPathing -> LocationLDT ItemLink ComposedItem + -> Creature + -> World -> World +dropInventoryPath i ip loc cr w = case ip of + ABSOLUTE -> fromMaybe w $ do + guard $ i `IM.member` (cr ^. crInv) + return $ dropItem cr i w + RELCURS -> fromMaybe w $ do + j <- cr ^? crManipulation . manObject . imSelectedItem + guard $ (i + j) `IM.member` (cr ^. crInv) + return $ dropItem cr (i + j) w + RELITEM -> fromMaybe w $ do + j <- loc ^? locLDT . ldtValue . _1 . itLocation . ilInvID + guard $ (i + j) `IM.member` (cr ^. crInv) + return $ dropItem cr (i + j) w + --useRewindGun _ _ w = case w ^. cwTime . rewindWorlds of -- [w'] -> w & cwTime . maybeWorld .~ Just' w' -- (w' : ws) -> w diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index c2e33a2ef..785f003fd 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -29,6 +29,8 @@ itemFromBase = \case INTROSCAN t -> introScan t MAPPER -> mapper DETECTOR d -> detector d + ARHUD -> arHUD + DROPPER x -> dropper x itemFromAmmoMag :: AmmoMagType -> Item itemFromAmmoMag at = case at of @@ -52,7 +54,6 @@ itemFromAttachType at = case at of SMOKEREDUCER -> smokeReducer -- ROCKETHOMER -> rocketHomer HOMINGMODULE -> homingModule - AUGMENTEDHUD -> augmentedHUD SHELLPAYLOAD p -> shellModule p itemFromEquipType :: EquipItemType -> Item diff --git a/src/Dodge/Item/Display.hs b/src/Dodge/Item/Display.hs index 4d5f9f2b8..43d433efc 100644 --- a/src/Dodge/Item/Display.hs +++ b/src/Dodge/Item/Display.hs @@ -70,6 +70,14 @@ itemBaseName = \case INTROSCAN t -> show t MAPPER -> "MAPPER" DETECTOR t -> show t + ARHUD -> "AR-HUD" + DROPPER x -> "DROPPER-" ++ showInventoryPathing x + +showInventoryPathing :: InventoryPathing -> String +showInventoryPathing = \case + ABSOLUTE -> "ABS" + RELCURS -> "CURS" + RELITEM -> "HERE" showAttachItem :: AttachType -> String showAttachItem t = case t of @@ -81,7 +89,6 @@ showAttachItem t = case t of REMOTEDETONATOR -> "REM.DETONATR" SMOKEREDUCER -> "SMOKE.REDUCR" HOMINGMODULE -> "HOMING MOD" - AUGMENTEDHUD -> "AUGMENTED HUD" SHELLPAYLOAD x -> show x GIMBAL -> "GIMBAL" GYROSCOPE -> "GYROSCOPE" @@ -96,6 +103,7 @@ showEquipItem eit = case eit of -- that is to say, it should not change based on functional positioning itemNumberDisplay :: World -> Creature -> ComposedItem -> [String] itemNumberDisplay w cr ci + | Just x <- ci ^? _1 . itUse . uInt = [show x] | Just x <- ci ^? _1 . itUse . useToggle = [show x] | ITEMSCAN <- ci ^. _1 . itType , Just ExamineInventory <- w ^? hud . hudElement . subInventory diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index 409580ff8..23d1bcbdc 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -43,8 +43,10 @@ itemSPic it = case it ^. itType of STICKYMOD -> defSPic ITEMSCAN -> defSPic MAPPER -> defSPic + ARHUD -> defSPic INTROSCAN {} -> defSPic DETECTOR dt -> noPic (colorSH (detectorColor dt) $ upperPrismPolySU 3 $ rectWH 2 2) + DROPPER{} -> defSPic craftItemSPic :: CraftType -> Shape craftItemSPic = \case diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 012dab234..375842325 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -72,7 +72,11 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of ) (DETECTOR {}, _) -> ( getAmmoLinks itm - , [(TriggerSF, TriggerLink),(MapperSF,SFLink MapperSF)] + , [(ARHUDSF,SFLink ARHUDSF),(TriggerSF, TriggerLink),(MapperSF,SFLink MapperSF)] + ) + (MAPPER, _) -> + ( [] + , [(ARHUDSF,SFLink ARHUDSF)] ) (_, GadgetPlatformSF) -> ( getAmmoLinks itm @@ -100,7 +104,7 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of ( [(JoystickSF, JoystickLink)] , [] ) - (_, WeaponTargetingSF) -> (getAmmoLinks itm ++ [(AugmentedHUDSF, AugmentedHUDLink)], []) + (_, WeaponTargetingSF) -> (getAmmoLinks itm ++ [(ARHUDSF, SFLink ARHUDSF)], []) (ATTACH BULLETSYNTH, _) -> ([(AmmoMagSF ElectricalAmmo, AmmoInLink 0 ElectricalAmmo)], []) _ -> ([], []) @@ -154,7 +158,7 @@ itemToFunction itm = case itm ^. itType of ATTACH BULLETSYNTH -> AmmoModifierSF BulletAmmo ATTACH ZOOMSCOPE -> WeaponScopeSF ATTACH HOMINGMODULE -> AmmoTargetingSF LauncherAmmo - ATTACH AUGMENTEDHUD -> AugmentedHUDSF + ARHUD -> ARHUDSF ATTACH UNDERBARRELSLOT -> UnderBarrelSlotSF BULLETMOD BulletModPayload{} -> AmmoPayloadSF BulletAmmo BULLETMOD BulletModEffect{} -> AmmoEffectSF BulletAmmo @@ -162,6 +166,7 @@ itemToFunction itm = case itm ^. itType of EQUIP WRIST_ECG -> TriggerSF EQUIP{} -> EquipmentPlatformSF ATTACH SHELLPAYLOAD{} -> AmmoPayloadSF LauncherAmmo + DROPPER{} -> GadgetPlatformSF _ -> NoSF structureToPotentialFunction :: diff --git a/src/Dodge/Item/Info.hs b/src/Dodge/Item/Info.hs index 8908583b2..175fea783 100644 --- a/src/Dodge/Item/Info.hs +++ b/src/Dodge/Item/Info.hs @@ -28,8 +28,26 @@ itmBaseInfo itm = case itm ^. itType of CRAFT fit -> craftInfo fit DETECTOR d -> "A device that detects " ++ detectorInfo d ++ " in an expanding radius." ATTACH t -> attachInfo t + AMMOMAG t -> ammoMagInfo t +-- TARGETING {_ibtTargeting :: TargetingType} +-- BULLETMOD {_ibtBulletMod :: BulletMod} +-- STICKYMOD +-- ITEMSCAN +-- MAPPER +-- INTROSCAN {_ibtIntroScanType :: IntroScanType} +-- DETECTOR {_ibtDetector :: Detector} +-- ARHUD _ -> "THIS SHOULD NOT BE DISPLAYED" +ammoMagInfo :: AmmoMagType -> String +ammoMagInfo = \case + TINMAG -> "A small tin magazine for containing bullets. " + DRUMMAG -> "A mid-sized magazine for containing bullets. " + BELTMAG -> "A belt with attachable bullets. " + SHELLMAG -> "A container for a projectile. " + BATTERY -> "A store of electrical potential energy. " + CHEMFUELPOUCH -> "A small tank for containing flammable liquids. " + attachInfo :: AttachType -> String attachInfo = \case ZOOMSCOPE -> "An optical zoom. " diff --git a/src/Dodge/Item/InventoryColor.hs b/src/Dodge/Item/InventoryColor.hs index 35c93567c..21d539d5e 100644 --- a/src/Dodge/Item/InventoryColor.hs +++ b/src/Dodge/Item/InventoryColor.hs @@ -20,7 +20,7 @@ itemInvColor ci = case ci ^. _2 of TriggerSF -> yellow WeaponScopeSF -> chartreuse WeaponTargetingSF -> green - AugmentedHUDSF -> rose + ARHUDSF -> rose AmmoMagSF{} -> red RemoteScreenSF -> azure JoystickSF -> azure diff --git a/src/Dodge/Item/Scope.hs b/src/Dodge/Item/Scope.hs index 002d0438a..8a0748548 100644 --- a/src/Dodge/Item/Scope.hs +++ b/src/Dodge/Item/Scope.hs @@ -10,14 +10,14 @@ module Dodge.Item.Scope ( joystick, remoteDetonator, homingModule, --- bulletTargetingModule, - augmentedHUD, + arHUD, bulletModule, bulletPayloadModule, smokeReducer, itemScan, introScan, mapper, + dropper, ) where import Dodge.Item.Attach @@ -68,6 +68,12 @@ mapper = & itType .~ MAPPER & itUse .~ UseMapper mempty mempty +dropper :: InventoryPathing -> Item +dropper x = + defaultHeldItem + & itType .~ DROPPER x + & itUse .~ UseInt 0 + bulletModule :: BulletMod -> Item bulletModule bm = defaultHeldItem @@ -85,8 +91,10 @@ shellModule p = defaultHeldItem bulletPayloadModule :: BulletPayload -> Item bulletPayloadModule = bulletModule . BulletModPayload -augmentedHUD :: Item -augmentedHUD = makeAttach AUGMENTEDHUD +arHUD :: Item +arHUD = defaultHeldItem + & itType .~ ARHUD + & itUse .~ UseNothing remoteScreen :: Item remoteScreen = makeAttach REMOTESCREEN diff --git a/src/Dodge/RadarBlip.hs b/src/Dodge/RadarBlip.hs index b9adb9cff..e29bdf238 100644 --- a/src/Dodge/RadarBlip.hs +++ b/src/Dodge/RadarBlip.hs @@ -1,4 +1,7 @@ -module Dodge.RadarBlip where +module Dodge.RadarBlip ( + updateRadarBlip, + drawBlip, +) where import Dodge.Data.RadarBlip import Geometry.Data diff --git a/src/Dodge/RadarSweep.hs b/src/Dodge/RadarSweep.hs index a78ad4280..f4707d8a8 100644 --- a/src/Dodge/RadarSweep.hs +++ b/src/Dodge/RadarSweep.hs @@ -1,29 +1,39 @@ {-# LANGUAGE TupleSections #-} + module Dodge.RadarSweep ( aRadarPulse, updateRadarSweep, ) where -import Data.Maybe -import Dodge.Item.Location -import qualified Data.Set as S import Color +import Data.Maybe +import qualified Data.Set as S import Dodge.Data.World +import Dodge.Item.Location import Dodge.Zoning.Wall import Geometry import qualified IntMapHelp as IM import LensHelp import NewInt -aRadarPulse :: Maybe (NewInt ItmInt) -> ObjectType -> Creature -> World -> World -aRadarPulse itid ob cr = +aRadarPulse :: + NewInt ItmInt -> + Maybe (NewInt ItmInt) -> + Maybe (NewInt ItmInt) -> + ObjectType -> + Creature -> + World -> + World +aRadarPulse itid mitid armitid ob cr = cWorld . lWorld . radarSweeps .:~ RadarSweep { _rsTimer = 50 , _rsRad = 0 , _rsPos = _crPos cr , _rsObject = ob - , _rsMapper = itid + , _rsMapper = mitid + , _rsAR = armitid + , _rsSource = itid } updateRadarSweep :: World -> RadarSweep -> (World, Maybe RadarSweep) @@ -40,13 +50,16 @@ updateRadarSweep w pt p = _rsPos pt ob = _rsObject pt x = _rsTimer pt - putBlips = cWorld . lWorld . radarBlips .++~ map - (makeBlip ob) - blips - (blips,wps) = findBlips ob p r w + putBlips + | isJust (pt ^. rsAR) = cWorld . lWorld . radarBlips + .++~ map + (makeBlip ob) + blips + | otherwise = id + (blips, wps) = findBlips ob p r w r = fromIntegral (400 - x * 8) -findBlips :: ObjectType -> Point2 -> Float -> World -> ([Point2],S.Set (Point2,Point2)) +findBlips :: ObjectType -> Point2 -> Float -> World -> ([Point2], S.Set (Point2, Point2)) findBlips ob = case ob of ObCreature -> crBlips ObItem -> itemBlips @@ -71,20 +84,20 @@ blipAt r col i p = , _rbPos = p } -crBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2,Point2)) +crBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2, Point2)) crBlips p r = (,mempty) . IM.elems . IM.filter f . fmap _crPos . IM.filter g . _creatures . _lWorld . _cWorld where f q = dist p q <= r && dist p q > r - 100 g cr = _crID cr /= 0 -itemBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2,Point2)) +itemBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2, Point2)) itemBlips p r = (,mempty) . IM.elems . IM.filter f . fmap _flItPos . _unNIntMap . _floorItems . _lWorld . _cWorld where f q = dist p q <= r && dist p q > r - 4 -wallBlips :: Point2 -> Float -> World -> ([Point2],S.Set (Point2,Point2)) +wallBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2, Point2)) wallBlips p r = foldMap f . wlsNearCirc p r where f wl = case uncurry (intersectCircSeg p r) $ _wlLine wl of [] -> mempty - xs -> (xs,S.singleton (wl ^. wlLine)) + xs -> (xs, S.singleton (wl ^. wlLine)) diff --git a/src/Dodge/RadarSweep/Draw.hs b/src/Dodge/RadarSweep/Draw.hs index baa63974e..12a9fb774 100644 --- a/src/Dodge/RadarSweep/Draw.hs +++ b/src/Dodge/RadarSweep/Draw.hs @@ -1,15 +1,26 @@ -module Dodge.RadarSweep.Draw where +module Dodge.RadarSweep.Draw ( + drawRadarSweep, +) where +import Control.Lens +import Data.Maybe import Dodge.Data.RadarSweep import Geometry import Picture +-- I have taken shortcuts in determining whether this is drawn or not wrt to the +-- linked ARHUD: it needs to have existed at the sweeps original creation, then +-- the sweep is drawn drawRadarSweep :: RadarSweep -> Picture -drawRadarSweep pt = setLayer DebugLayer $ fold - [ colHelper 0.1 $ uncurryV translate p $ thickCircle r 15 - , colHelper 0.06 $ uncurryV translate p $ thickCircle (r -5) 5 - , colHelper 0.03 $ uncurryV translate p $ thickCircle (r -10) 5 - ] +drawRadarSweep pt + | isJust (pt ^. rsAR) = + setLayer DebugLayer $ + fold + [ colHelper 0.1 $ uncurryV translate p $ thickCircle r 15 + , colHelper 0.06 $ uncurryV translate p $ thickCircle (r -5) 5 + , colHelper 0.03 $ uncurryV translate p $ thickCircle (r -10) 5 + ] + | otherwise = mempty where col = rsObjectColor $ _rsObject pt p = _rsPos pt diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 2c6ac1662..2a26a1c50 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -164,13 +164,13 @@ drawSubInventory subinv cfig w = case subinv of ExamineInventory -> drawExamineInventory cfig w DisplayTerminal tid -> drawTerminalDisplay tid cfig (w ^. cWorld . lWorld) CombineInventory{_ciSections = sss} -> drawCombineInventory cfig sss w - MapperInventory p z itid -> drawMapperInventory p z itid cfig w + MapperInventory _ _ itid -> drawMapperInventory itid w -drawMapperInventory :: Point2 -> Float -> NewInt ItmInt -> Configuration -> World -> Picture -drawMapperInventory p z itid _ w = fold $ do +drawMapperInventory :: NewInt ItmInt -> World -> Picture +drawMapperInventory itid w = fold $ do itm <- w ^? pointerToItemID itid ls <- itm ^? itUse . useMapperLines - let r = w ^. wCam . camRot + let _ = w ^. wCam . camRot return . color red $ foldMap (\(x,y) -> line [f x,f y]) ls where diff --git a/src/Dodge/ScrollValue.hs b/src/Dodge/ScrollValue.hs index c637f5112..02fa5eb16 100644 --- a/src/Dodge/ScrollValue.hs +++ b/src/Dodge/ScrollValue.hs @@ -1,11 +1,12 @@ -module Dodge.ScrollValue where +module Dodge.ScrollValue (updateScrollTestValue) where import Dodge.Data.Input import LensHelp updateScrollTestValue :: Input -> Input -updateScrollTestValue theinput = theinput & scrollTestFloat +~ theamount - & scrollTestInt +~ i +updateScrollTestValue theinput = + theinput & scrollTestFloat +~ theamount + & scrollTestInt +~ i where i = theinput ^. scrollAmount theamount = fromIntegral i / 100 diff --git a/src/Dodge/SmoothScroll.hs b/src/Dodge/SmoothScroll.hs index ae8f9be0e..cff6f1904 100644 --- a/src/Dodge/SmoothScroll.hs +++ b/src/Dodge/SmoothScroll.hs @@ -1,4 +1,8 @@ -module Dodge.SmoothScroll where +module Dodge.SmoothScroll ( + getSmoothScrollValue, + calcSmoothScroll, + advanceSmoothScroll, +) where import Control.Lens import Dodge.Data.Input @@ -33,5 +37,5 @@ advanceSmoothScroll y | y > 0 = y - 1 | y == 0 = 0 | y > (-10) = y + 1 - | y > (-20) = y+2 - | otherwise = y+3 + | y > (-20) = y + 2 + | otherwise = y + 3 diff --git a/src/Dodge/Targeting/Draw.hs b/src/Dodge/Targeting/Draw.hs index 51db41662..ad51305fe 100644 --- a/src/Dodge/Targeting/Draw.hs +++ b/src/Dodge/Targeting/Draw.hs @@ -1,17 +1,24 @@ module Dodge.Targeting.Draw ( - drawTargeting, + drawTargetingAR, + drawMapperAR, ) where import Control.Lens -import Data.Maybe import Dodge.Base.Coordinate import Dodge.Data.Universe import Geometry.Data import Picture --- it would be nice to get rid of some redundant checks here -drawTargeting :: Item -> World -> Picture -drawTargeting itm w = fromMaybe mempty $ do +drawMapperAR :: Item -> World -> Maybe Picture +drawMapperAR itm w = do + ls <- itm ^? itUse . useMapperLines + let _ = w ^. wCam . camRot + return . setLayer FixedCoordLayer . color red $ foldMap (\(x,y) -> line [f x,f y]) ls + where + f = worldPosToScreen (w ^. wCam) + +drawTargetingAR :: Item -> World -> Maybe Picture +drawTargetingAR itm w = do p <- itm ^? itTargeting . itTgPos . _Just let thepic = case itm ^? itTargeting . itTgActive of Just True -> activeTargetCursorPic diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 0cd61dbe5..30cb3cb74 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -96,32 +96,6 @@ showManObj (SelCloseButton x) = "CloseButton " ++ show x -- ] --- getPrettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crHotkeys) --- <> ["---"] --- <> getPrettyShort ( u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInvHotkeys) - --- [show $ u ^. uvWorld . input . smoothScrollAmount --- , show $ getSmoothScrollValue (u ^. uvWorld . input) --- , show (u ^. uvConfig . windowX) ++ " " ++ show (u ^. uvConfig . windowY) --- ] --- [show $ length $ lightsToRender (u ^. uvConfig) (u ^. uvWorld . wCam) --- (u ^. uvWorld . cWorld . lWorld) --- , show a --- , show $ u ^. uvWorld . input . mousePos --- , show $ u ^. uvConfig . windowX --- , show $ u ^. uvConfig . windowY --- , show $ u ^. uvWorld . input . scrollTestInt --- ] --- where --- w = u ^. uvWorld --- a = fromMaybe 0 $ do --- cpos <- w ^? cWorld . lWorld . creatures . ix 0 . crPos --- return . toClosestMultiple (pi/ 8) $ argV (mouseWorldPos (w ^. input) (w ^. wCam) -.- cpos) --- - w ^. wCam . camRot - - --[show $ u ^? uvWorld . hud . hudElement . diSections . sssExtra . sssSelPos . _Just] --- [show $ fmap IM.keys $ u ^? uvWorld . hud . hudElement . subInventory . ciSections . sssSections] - showTimeFlow :: TimeFlowStatus -> String showTimeFlow tfs = case tfs of DeathTime i -> "DeathTime"++show i diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index 7e1639ef5..2dc153f93 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -18,7 +18,7 @@ updateWheelEvent :: Int -> World -> World updateWheelEvent yi w = case w ^. hud . hudElement . subInventory of NoSubInventory -> updateBaseWheelEvent yi w ExamineInventory -> updateBaseWheelEvent yi w - MapperInventory {} -> updateBaseWheelEvent yi w + MapperInventory{} -> updateBaseWheelEvent yi w CombineInventory{} -> moveCombineSel yi w DisplayTerminal tmid -> terminalWheelEvent yi tmid w @@ -27,7 +27,7 @@ updateBaseWheelEvent yi w | Just True <- w ^? cWorld . lWorld . creatures . ix 0 . crInvLock = w | bdown ButtonRight = case _rbOptions w of EquipOptions{} -> w & rbOptions . opSel %~ scrollRBOption yi rbscrollmax - NoRightButtonOptions -> selectedItemScroll yi w + NoRightButtonOptions -> fromMaybe w (selectedItemScroll yi w) | bdown ButtonLeft = w & wCam . camZoom +~ fromIntegral yi | ScancodeCapsLock `M.member` _pressedKeys (_input w) = changeSwapSel yi w | otherwise = scrollAugInvSel yi w @@ -38,37 +38,41 @@ updateBaseWheelEvent yi w esite <- you w ^? crInv . ix invid . itUse . uequipEffect . eeType return . length $ eqSiteToPositions esite -selectedItemScroll :: Int -> World -> World -selectedItemScroll scrollamount w = fromMaybe w $ do +selectedItemScroll :: Int -> World -> Maybe World +selectedItemScroll yi w = do i <- you w ^? crManipulation . manObject . imSelectedItem itm <- you w ^? crInv . ix i - return $ itemScroll scrollamount i itm w + return $ itemScroll yi i itm w itemScroll :: Int -> Int -> Item -> World -> World -itemScroll yi invid itm w = case itm ^. itType of - ATTACH ZOOMSCOPE -> updateScopeZoom w - HELD ALTERIFLE - | yi /= 0 -> - w - & cWorld . lWorld . creatures . ix 0 . crInv . ix invid - . itUse - . heldAim - . aimMuzzles - . ix 0 - . mzAmmoSlot - %~ ((`mod` 2) . (+ 1)) - _ -> w +itemScroll yi invid itm w + | isJust $ itm ^? itUse . uInt = + w + & cWorld . lWorld . creatures . ix 0 . crInv . ix invid + . itUse + . uInt + +~ yi + | ATTACH ZOOMSCOPE <- itm ^. itType = updateScopeZoom invid w + | HELD ALTERIFLE <- itm ^. itType + , yi /= 0 = + w + & cWorld . lWorld . creatures . ix 0 . crInv . ix invid + . itUse + . heldAim + . aimMuzzles + . ix 0 + . mzAmmoSlot + %~ ((`mod` 2) . (+ 1)) + | otherwise = w -- note that your _crInvLock does not apply to this TODO check that this is what -- is wanted -updateScopeZoom :: World -> World -updateScopeZoom w = fromMaybe w $ do - i <- you w ^? crManipulation . manObject . imSelectedItem - return $ updateScopeZoom' i w - -updateScopeZoom' :: Int -> World -> World -updateScopeZoom' i w - | SDL.ButtonRight `M.member` _mouseButtons (_input w) = +updateScopeZoom :: Int -> World -> World +updateScopeZoom i w + | Just 0 <- w ^. input . mouseButtons . at SDL.ButtonRight = + w + & wppointer %~ resetscope + | Just _ <- w ^. input . mouseButtons . at SDL.ButtonRight = w & wppointer %~ doScopeZoom (w ^. input . smoothScrollAmount) (w ^. input . mousePos) | otherwise = w & wppointer %~ resetscope where @@ -118,10 +122,10 @@ moveCombineSel yi = terminalWheelEvent :: Int -> Int -> World -> World terminalWheelEvent yi tmid w | w & has (input . mouseButtons . ix ButtonRight) - , Just TerminalReady <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus = - w & cWorld . lWorld . terminals . ix tmid %~ updatetermsubsel + , Just TerminalReady <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus = + w & cWorld . lWorld . terminals . ix tmid %~ updatetermsubsel | Just TerminalReady <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus = - w & cWorld . lWorld . terminals . ix tmid %~ updatetermsel + w & cWorld . lWorld . terminals . ix tmid %~ updatetermsel | otherwise = w where updatetermsel tm = case tm ^? tmInput . tiSel of diff --git a/tags b/tags index ce4324d5b..a5e6583f0 100644 --- a/tags +++ b/tags @@ -19,20 +19,22 @@ <$> src/Dodge/Data/Creature.hs 88;" o <$> src/Dodge/Data/LWorld.hs 159;" o <$> src/Dodge/Data/Terminal.hs 127;" o -AIUNIT src/Dodge/Data/Item/Combine.hs 60;" C -ALTERIFLE src/Dodge/Data/Item/Combine.hs 140;" C +ABSOLUTE src/Dodge/Data/Item/Combine.hs 33;" C +AIUNIT src/Dodge/Data/Item/Combine.hs 68;" C +ALTERIFLE src/Dodge/Data/Item/Combine.hs 147;" C AMMOMAG src/Dodge/Data/Item/Combine.hs 20;" C -AMR src/Dodge/Data/Item/Combine.hs 145;" C -ANTIMATTER src/Dodge/Data/Item/Combine.hs 54;" C -APInt src/Dodge/Data/Item/Use.hs 75;" C -APNothing src/Dodge/Data/Item/Use.hs 76;" C -APProjectiles src/Dodge/Data/Item/Use.hs 73;" C +AMR src/Dodge/Data/Item/Combine.hs 152;" C +ANTIMATTER src/Dodge/Data/Item/Combine.hs 62;" C +APInt src/Dodge/Data/Item/Use.hs 77;" C +APNothing src/Dodge/Data/Item/Use.hs 78;" C +APProjectiles src/Dodge/Data/Item/Use.hs 75;" C AQUAMARINE src/Color/Data.hs 24;" C +ARHUD src/Dodge/Data/Item/Combine.hs 29;" C +ARHUDSF src/Dodge/Data/ComposedItem.hs 50;" C ATTACH src/Dodge/Data/Item/Combine.hs 19;" C -AUGMENTEDHUD src/Dodge/Data/Item/Combine.hs 88;" C -AUTOAMR src/Dodge/Data/Item/Combine.hs 146;" C -AUTOPISTOL src/Dodge/Data/Item/Combine.hs 132;" C -AUTORIFLE src/Dodge/Data/Item/Combine.hs 141;" C +AUTOAMR src/Dodge/Data/Item/Combine.hs 153;" C +AUTOPISTOL src/Dodge/Data/Item/Combine.hs 139;" C +AUTORIFLE src/Dodge/Data/Item/Combine.hs 148;" C AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 27;" C Action src/Dodge/Data/ActionPlan.hs 78;" t @@ -44,9 +46,9 @@ Add src/Dodge/Inventory/Add.hs 1;" m AddGoal src/Dodge/Data/ActionPlan.hs 45;" C AesonHelp src/AesonHelp.hs 1;" m AimAt src/Dodge/Data/ActionPlan.hs 84;" C -AimParams src/Dodge/Data/Item/Use.hs 119;" t +AimParams src/Dodge/Data/Item/Use.hs 121;" t AimParams src/Dodge/Default/Item/Use/AimParams.hs 1;" m -AimStance src/Dodge/Data/Item/Use.hs 188;" t +AimStance src/Dodge/Data/Item/Use.hs 190;" t Aiming src/Dodge/Data/Creature/Stance.hs 39;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C Airlock src/Dodge/Room/Airlock.hs 4;" m @@ -56,19 +58,19 @@ 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 22;" C -AmmoEffectSF src/Dodge/Data/ComposedItem.hs 59;" C +AmmoEffectSF src/Dodge/Data/ComposedItem.hs 60;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 17;" C AmmoMag src/Dodge/Data/Item.hs 34;" C -AmmoMagSF src/Dodge/Data/ComposedItem.hs 50;" C -AmmoMagType src/Dodge/Data/Item/Combine.hs 92;" t +AmmoMagSF src/Dodge/Data/ComposedItem.hs 51;" C +AmmoMagType src/Dodge/Data/Item/Combine.hs 99;" t AmmoModLink src/Dodge/Data/ComposedItem.hs 19;" C -AmmoModifierSF src/Dodge/Data/ComposedItem.hs 56;" C -AmmoParams src/Dodge/Data/Item/Use.hs 112;" t +AmmoModifierSF src/Dodge/Data/ComposedItem.hs 57;" C +AmmoParams src/Dodge/Data/Item/Use.hs 114;" t AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 21;" C -AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 58;" C -AmmoPerShot src/Dodge/Data/Item/Use.hs 162;" t +AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 59;" C +AmmoPerShot src/Dodge/Data/Item/Use.hs 164;" t AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 20;" C -AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 57;" C +AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 58;" C AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 24;" t AnRoom src/Dodge/Annotation/Data.hs 18;" C AnTree src/Dodge/Annotation/Data.hs 19;" C @@ -94,42 +96,40 @@ AsteroidStrike src/Dodge/Data/Scenario.hs 33;" C 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 72;" t -AttachType src/Dodge/Data/Item/Combine.hs 77;" t +AttachParams src/Dodge/Data/Item/Use.hs 74;" t +AttachType src/Dodge/Data/Item/Combine.hs 85;" 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 29;" C -AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 49;" 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 AutoRecharging src/Dodge/Data/Item/Use/Consumption.hs 27;" C -AutoTrigger src/Dodge/Data/Item/Use.hs 69;" C +AutoTrigger src/Dodge/Data/Item/Use.hs 71;" C 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 134;" C -BANGROD src/Dodge/Data/Item/Combine.hs 143;" C -BANGSTICK src/Dodge/Data/Item/Combine.hs 126;" C -BATTERY src/Dodge/Data/Item/Combine.hs 97;" C -BATTERYPACK src/Dodge/Data/Item/Combine.hs 121;" C -BELTMAG src/Dodge/Data/Item/Combine.hs 95;" C +BANGCONE src/Dodge/Data/Item/Combine.hs 141;" C +BANGROD src/Dodge/Data/Item/Combine.hs 150;" C +BANGSTICK src/Dodge/Data/Item/Combine.hs 133;" C +BATTERY src/Dodge/Data/Item/Combine.hs 104;" C +BATTERYPACK src/Dodge/Data/Item/Combine.hs 128;" C +BELTMAG src/Dodge/Data/Item/Combine.hs 102;" C BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 165;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 166;" C -BLOWTORCH src/Dodge/Data/Item/Combine.hs 152;" C +BLINKER src/Dodge/Data/Item/Combine.hs 172;" C +BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 173;" C +BLOWTORCH src/Dodge/Data/Item/Combine.hs 159;" C BLUE src/Color/Data.hs 17;" C -BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 135;" C +BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 142;" C BLUNT src/Dodge/Data/Damage/Type.hs 13;" C BQuad src/Geometry/Bezier.hs 9;" t -BRAINHAT src/Dodge/Data/Item/Combine.hs 112;" C -BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 120;" C -BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 119;" C +BRAINHAT src/Dodge/Data/Item/Combine.hs 119;" C +BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 127;" C +BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 126;" C BULLETMOD src/Dodge/Data/Item/Combine.hs 22;" C -BULLETSYNTH src/Dodge/Data/Item/Combine.hs 79;" C -BURSTRIFLE src/Dodge/Data/Item/Combine.hs 142;" C +BULLETSYNTH src/Dodge/Data/Item/Combine.hs 87;" C +BURSTRIFLE src/Dodge/Data/Item/Combine.hs 149;" 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 @@ -145,7 +145,7 @@ Base src/Picture/Base.hs 4;" m BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 50;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 57;" C -BasicFlare src/Dodge/Data/Item/Use.hs 132;" C +BasicFlare src/Dodge/Data/Item/Use.hs 134;" C BatteryGuns src/Dodge/Item/Held/BatteryGuns.hs 1;" m BatteryGuns src/Dodge/Item/Weapon/BatteryGuns.hs 1;" m Beam src/Dodge/Data/Beam.hs 18;" t @@ -155,7 +155,7 @@ BeamCombine src/Dodge/Data/Beam.hs 47;" C BeamCombineType src/Dodge/Data/Beam.hs 38;" t BeamDraw src/Dodge/Data/Beam.hs 33;" t BeamDrawColor src/Dodge/Data/Beam.hs 35;" C -BeamShooterParams src/Dodge/Data/Item/Use.hs 93;" C +BeamShooterParams src/Dodge/Data/Item/Use.hs 95;" C BeamSimple src/Dodge/Data/Beam.hs 50;" C BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C @@ -227,9 +227,9 @@ 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 12;" C BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C -BulletParams src/Dodge/Data/Item/Use.hs 113;" C +BulletParams src/Dodge/Data/Item/Use.hs 115;" C BulletPayload src/Dodge/Data/Bullet.hs 41;" t -BulletShooterParams src/Dodge/Data/Item/Use.hs 97;" C +BulletShooterParams src/Dodge/Data/Item/Use.hs 99;" C BulletTrajectory src/Dodge/Data/Bullet.hs 49;" t BulletTrajectoryType src/Dodge/Data/Bullet.hs 56;" t Button src/Dodge/Data/Button.hs 48;" t @@ -242,18 +242,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 61;" C -CAN src/Dodge/Data/Item/Combine.hs 42;" C +CAMERA src/Dodge/Data/Item/Combine.hs 69;" C +CAN src/Dodge/Data/Item/Combine.hs 50;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 15;" C CHARTREUSE src/Color/Data.hs 25;" C -CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 98;" C +CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 105;" 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 18;" C -CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 171;" C -CREATURESENSOR src/Dodge/Data/Item/Combine.hs 71;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 178;" C +CREATURESENSOR src/Dodge/Data/Item/Combine.hs 79;" 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 @@ -281,7 +281,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 50;" t +ChainEffect src/Dodge/HeldUse.hs 63;" 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,7 +339,7 @@ Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m Compose src/Dodge/Tree/Compose.hs 4;" m ComposeLinkType src/Dodge/Data/ComposedItem.hs 16;" t -ComposedItem src/Dodge/Data/ComposedItem.hs 67;" t +ComposedItem src/Dodge/Data/ComposedItem.hs 69;" t ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C @@ -353,7 +353,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 101;" t +ConsumableItemType src/Dodge/Data/Item/Combine.hs 108;" 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 @@ -406,7 +406,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 35;" t +CraftType src/Dodge/Data/Item/Combine.hs 43;" 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 @@ -436,9 +436,10 @@ 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 27;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 28;" C DPoint2 src/Geometry/Data.hs 34;" t -DRUMMAG src/Dodge/Data/Item/Combine.hs 94;" C +DROPPER src/Dodge/Data/Item/Combine.hs 26;" C +DRUMMAG src/Dodge/Data/Item/Combine.hs 101;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 30;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 20;" C @@ -492,7 +493,7 @@ DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" C DefaultDrawButton src/Dodge/Data/Button.hs 17;" C DefaultDrawSwitch src/Dodge/Data/Button.hs 18;" C DefaultForceField src/Dodge/Data/Item/Use/Consumption/Ammo.hs 35;" C -DefaultHeldParams src/Dodge/Data/Item/Use.hs 80;" C +DefaultHeldParams src/Dodge/Data/Item/Use.hs 82;" C DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 13;" C DefaultRoomType src/Dodge/Data/Room.hs 31;" C DefaultTerminal src/Dodge/Data/Terminal.hs 55;" C @@ -502,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 169;" t +Detector src/Dodge/Data/Item/Combine.hs 176;" 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 @@ -591,13 +592,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 144;" C +ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 151;" 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 17;" 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 103;" C +EXPLOSIVES src/Dodge/Data/Item/Combine.hs 110;" 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 @@ -626,7 +627,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 106;" t +EquipItemType src/Dodge/Data/Item/Combine.hs 113;" 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 @@ -636,7 +637,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 43;" C +EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 44;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 74;" t Essential src/Shape/Data.hs 34;" C @@ -655,16 +656,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 108;" C -FLAMESPITTER src/Dodge/Data/Item/Combine.hs 148;" C -FLAMETHROWER src/Dodge/Data/Item/Combine.hs 149;" C -FLAMETORRENT src/Dodge/Data/Item/Combine.hs 150;" C -FLAMEWALL src/Dodge/Data/Item/Combine.hs 151;" C +FLAMESHIELD src/Dodge/Data/Item/Combine.hs 115;" C +FLAMESPITTER src/Dodge/Data/Item/Combine.hs 155;" C +FLAMETHROWER src/Dodge/Data/Item/Combine.hs 156;" C +FLAMETORRENT src/Dodge/Data/Item/Combine.hs 157;" C +FLAMEWALL src/Dodge/Data/Item/Combine.hs 158;" C FLAMING src/Dodge/Data/Damage/Type.hs 18;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 163;" C -FRONTARMOUR src/Dodge/Data/Item/Combine.hs 109;" C -FUELCELL src/Dodge/Data/Item/Combine.hs 73;" C -FUELPACK src/Dodge/Data/Item/Combine.hs 118;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 170;" C +FRONTARMOUR src/Dodge/Data/Item/Combine.hs 116;" C +FUELCELL src/Dodge/Data/Item/Combine.hs 81;" C +FUELPACK src/Dodge/Data/Item/Combine.hs 125;" 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 @@ -682,7 +683,7 @@ FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C FlameSound src/Dodge/Data/SoundOrigin.hs 27;" C Flamer src/Dodge/Data/SoundOrigin.hs 25;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C -FlareType src/Dodge/Data/Item/Use.hs 130;" t +FlareType src/Dodge/Data/Item/Use.hs 132;" t FlashBall src/Dodge/Data/Bullet.hs 32;" C FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 17;" C @@ -730,20 +731,20 @@ FullShadowFidelity src/Shape/Data.hs 24;" C FullSize src/Dodge/Data/Item/Params.hs 29;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 12;" C FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C -FunctionChangeSF src/Dodge/Data/ComposedItem.hs 60;" C +FunctionChangeSF src/Dodge/Data/ComposedItem.hs 61;" C GBounce src/Dodge/Data/Projectile.hs 53;" C GEqC src/SameConstr.hs 20;" c -GIMBAL src/Dodge/Data/Item/Combine.hs 82;" C -GLASSSHARD src/Dodge/Data/Item/Combine.hs 46;" C -GLAUNCHER src/Dodge/Data/Item/Combine.hs 159;" C +GIMBAL src/Dodge/Data/Item/Combine.hs 90;" C +GLASSSHARD src/Dodge/Data/Item/Combine.hs 54;" C +GLAUNCHER src/Dodge/Data/Item/Combine.hs 166;" C GLHelp src/GLHelp.hs 1;" m -GRAPECANNON src/Dodge/Data/Item/Combine.hs 136;" C +GRAPECANNON src/Dodge/Data/Item/Combine.hs 143;" C GREEN src/Color/Data.hs 16;" C GStick src/Dodge/Data/Projectile.hs 54;" C GStuckCreature src/Dodge/Data/Projectile.hs 55;" C GStuckWall src/Dodge/Data/Projectile.hs 56;" C -GYROSCOPE src/Dodge/Data/Item/Combine.hs 83;" C -GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 44;" C +GYROSCOPE src/Dodge/Data/Item/Combine.hs 91;" C +GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 45;" C GameOverOptions src/Dodge/Data/Universe.hs 70;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m @@ -752,8 +753,8 @@ GasAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" C GasCloud src/Dodge/Data/Cloud.hs 31;" C GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 41;" t GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 38;" t -GasParams src/Dodge/Data/Item/Use.hs 115;" C -GasSprayParams src/Dodge/Data/Item/Use.hs 81;" C +GasParams src/Dodge/Data/Item/Use.hs 117;" C +GasSprayParams src/Dodge/Data/Item/Use.hs 83;" C GenCr src/Dodge/Data/Creature/State.hs 31;" C GenFloat src/Dodge/Data/GenFloat.hs 11;" t GenFloat src/Dodge/Data/GenFloat.hs 5;" m @@ -791,20 +792,20 @@ GraphVizHelp src/GraphVizHelp.hs 2;" m Grenade src/Dodge/Data/Projectile.hs 36;" C GrenadeHitEffect src/Dodge/Data/Projectile.hs 52;" t GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 35;" C -GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 63;" C +GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 64;" C 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 58;" C -HARDWARE src/Dodge/Data/Item/Combine.hs 38;" C -HAT src/Dodge/Data/Item/Combine.hs 113;" C -HEADLAMP src/Dodge/Data/Item/Combine.hs 114;" C -HEALTH src/Dodge/Data/Item/Combine.hs 31;" C -HEATSENSOR src/Dodge/Data/Item/Combine.hs 68;" C +HARDDRIVE src/Dodge/Data/Item/Combine.hs 66;" C +HARDWARE src/Dodge/Data/Item/Combine.hs 46;" C +HAT src/Dodge/Data/Item/Combine.hs 120;" C +HEADLAMP src/Dodge/Data/Item/Combine.hs 121;" C +HEALTH src/Dodge/Data/Item/Combine.hs 39;" C +HEATSENSOR src/Dodge/Data/Item/Combine.hs 76;" C HELD src/Dodge/Data/Item/Combine.hs 16;" C -HOMINGMODULE src/Dodge/Data/Item/Combine.hs 87;" C -HOSE src/Dodge/Data/Item/Combine.hs 40;" C +HOMINGMODULE src/Dodge/Data/Item/Combine.hs 95;" C +HOSE src/Dodge/Data/Item/Combine.hs 48;" C HUD src/Dodge/Data/HUD.hs 44;" t HUD src/Dodge/Data/HUD.hs 6;" m HUD src/Dodge/Render/HUD.hs 3;" m @@ -815,23 +816,23 @@ Hammer src/Dodge/Hammer.hs 1;" m HammerDown src/Dodge/Data/Hammer.hs 18;" C HammerPosition src/Dodge/Data/Hammer.hs 17;" t HammerReleased src/Dodge/Data/Hammer.hs 19;" C -HammerTrigger src/Dodge/Data/Item/Use.hs 69;" C +HammerTrigger src/Dodge/Data/Item/Use.hs 71;" C HammerType src/Dodge/Data/Hammer.hs 12;" t HammerUp src/Dodge/Data/Hammer.hs 20;" C HandPos src/Dodge/Creature/HandPos.hs 1;" m HardQuit src/Dodge/Data/Universe.hs 68;" C HasHammer src/Dodge/Data/Hammer.hs 14;" C -HeavySmokeFlare src/Dodge/Data/Item/Use.hs 135;" C +HeavySmokeFlare src/Dodge/Data/Item/Use.hs 137;" 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 125;" t +HeldItemType src/Dodge/Data/Item/Combine.hs 132;" t HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m -HeldParams src/Dodge/Data/Item/Use.hs 79;" t -HeldPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C +HeldParams src/Dodge/Data/Item/Use.hs 81;" t +HeldPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/HeldUse.hs 4;" m -HeldUseEffect src/Dodge/Data/Item/Use.hs 53;" t +HeldUseEffect src/Dodge/Data/Item/Use.hs 55;" t HelpNum src/HelpNum.hs 1;" m HiddenGoal src/Dodge/Data/Scenario.hs 14;" C HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 48;" C @@ -860,12 +861,12 @@ 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 69;" C +ILink src/Dodge/Data/ComposedItem.hs 71;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t -INTROSCAN src/Dodge/Data/Item/Combine.hs 26;" C -INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 111;" C -IRONBAR src/Dodge/Data/Item/Combine.hs 65;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C +INTROSCAN src/Dodge/Data/Item/Combine.hs 27;" C +INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 118;" C +IRONBAR src/Dodge/Data/Item/Combine.hs 73;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 177;" C ITEMSCAN src/Dodge/Data/Item/Combine.hs 24;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t @@ -917,14 +918,15 @@ Intention src/Dodge/Data/Creature.hs 76;" t Intention src/Dodge/Creature/Intention.hs 1;" m Intersect src/Geometry/Intersect.hs 5;" m IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C -IntroScanSF src/Dodge/Data/ComposedItem.hs 47;" C -IntroScanType src/Dodge/Data/Item/Combine.hs 30;" t +IntroScanSF src/Dodge/Data/ComposedItem.hs 48;" C +IntroScanType src/Dodge/Data/Item/Combine.hs 38;" t InvInt src/Dodge/Data/Item/Location.hs 19;" t InvSize src/Dodge/Item/InvSize.hs 2;" m Inventory src/Dodge/Inventory.hs 2;" m InventoryChange src/Dodge/Data/World.hs 31;" C InventoryColor src/Dodge/Item/InventoryColor.hs 1;" m InventoryConnectSound src/Dodge/Data/SoundOrigin.hs 14;" C +InventoryPathing src/Dodge/Data/Item/Combine.hs 32;" t InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C Investigate src/Dodge/Data/ActionPlan.hs 184;" C Invisible src/Dodge/Data/CamouflageStatus.hs 13;" C @@ -940,7 +942,7 @@ ItEffect src/Dodge/ItEffect.hs 2;" m ItID src/Dodge/Data/Item.hs 29;" t ItInvEffect src/Dodge/Data/Item/Effect.hs 23;" t ItTargeting src/Dodge/Data/Item.hs 55;" C -ItZoom src/Dodge/Data/Item/Use.hs 195;" t +ItZoom src/Dodge/Data/Item/Use.hs 197;" t Item src/Dodge/Data/Item.hs 41;" t Item src/Dodge/Data/Item.hs 4;" m Item src/Dodge/Default/Item.hs 1;" m @@ -948,12 +950,12 @@ Item src/Dodge/Item.hs 3;" m ItemCancelExamineInventory src/Dodge/Data/Item/Effect.hs 31;" C ItemClust src/Dodge/Combine/Graph.hs 20;" C ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t -ItemLink src/Dodge/Data/ComposedItem.hs 69;" t +ItemLink src/Dodge/Data/ComposedItem.hs 71;" 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 60;" C -ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 38;" t +ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 39;" t ItemTargeting src/Dodge/Data/Item.hs 54;" t ItemType src/Dodge/Data/Item/Combine.hs 15;" t ItemUse src/Dodge/Data/Item/Use.hs 33;" t @@ -962,33 +964,33 @@ 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 81;" C -JUMPLEGS src/Dodge/Data/Item/Combine.hs 117;" C +JOYSTICK src/Dodge/Data/Item/Combine.hs 89;" C +JUMPLEGS src/Dodge/Data/Item/Combine.hs 124;" C JoinClust src/Dodge/Combine/Graph.hs 21;" C JoystickLink src/Dodge/Data/ComposedItem.hs 25;" C -JoystickSF src/Dodge/Data/ComposedItem.hs 52;" C +JoystickSF src/Dodge/Data/ComposedItem.hs 53;" 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 164;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 171;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C -LASER src/Dodge/Data/Item/Combine.hs 155;" C +LASER src/Dodge/Data/Item/Combine.hs 162;" 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 219;" t +LDTComb src/Dodge/Item/Grammar.hs 228;" 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 63;" C +LED src/Dodge/Data/Item/Combine.hs 71;" C LHS src/Geometry/LHS.hs 1;" m -LIGHTER src/Dodge/Data/Item/Combine.hs 52;" C -LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 66;" C +LIGHTER src/Dodge/Data/Item/Combine.hs 60;" C +LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 74;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t -LTest src/Dodge/Data/ComposedItem.hs 76;" C -LUpdate src/Dodge/Data/ComposedItem.hs 81;" C +LTest src/Dodge/Data/ComposedItem.hs 78;" C +LUpdate src/Dodge/Data/ComposedItem.hs 83;" 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 @@ -1004,7 +1006,7 @@ Lampoid src/Dodge/Data/Creature/Misc.hs 83;" C Lampoid src/Dodge/Lampoid.hs 1;" m Large src/Shape/Data.hs 29;" C LasBeamCombine src/Dodge/Data/Beam.hs 40;" C -LasGunFlare src/Dodge/Data/Item/Use.hs 136;" C +LasGunFlare src/Dodge/Data/Item/Use.hs 138;" C LasSound src/Dodge/Data/SoundOrigin.hs 28;" C LasTurret src/Dodge/Room/LasTurret.hs 1;" m Laser src/Dodge/Data/Laser.hs 30;" t @@ -1045,8 +1047,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 76;" t -LinkUpdate src/Dodge/Data/ComposedItem.hs 81;" t +LinkTest src/Dodge/Data/ComposedItem.hs 78;" t +LinkUpdate src/Dodge/Data/ComposedItem.hs 83;" 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 @@ -1080,25 +1082,25 @@ 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 131;" C +MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 138;" C MAGENTA src/Color/Data.hs 20;" C -MAGNET src/Dodge/Data/Item/Combine.hs 53;" C -MAGSHIELD src/Dodge/Data/Item/Combine.hs 107;" C +MAGNET src/Dodge/Data/Item/Combine.hs 61;" C +MAGSHIELD src/Dodge/Data/Item/Combine.hs 114;" C MAPPER src/Dodge/Data/Item/Combine.hs 25;" C -MAXHEALTH src/Dodge/Data/Item/Combine.hs 32;" C +MAXHEALTH src/Dodge/Data/Item/Combine.hs 40;" 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 102;" C -MICROCHIP src/Dodge/Data/Item/Combine.hs 57;" C -MICROPHONE src/Dodge/Data/Item/Combine.hs 69;" C -MINIDISPLAY src/Dodge/Data/Item/Combine.hs 62;" C -MINIGUNX src/Dodge/Data/Item/Combine.hs 137;" C +MEDKIT src/Dodge/Data/Item/Combine.hs 109;" C +MICROCHIP src/Dodge/Data/Item/Combine.hs 65;" C +MICROPHONE src/Dodge/Data/Item/Combine.hs 77;" C +MINIDISPLAY src/Dodge/Data/Item/Combine.hs 70;" C +MINIGUNX src/Dodge/Data/Item/Combine.hs 144;" 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 49;" C +MOTOR src/Dodge/Data/Item/Combine.hs 57;" 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 @@ -1127,7 +1129,7 @@ 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 31;" C -MakeAutoSF src/Dodge/Data/ComposedItem.hs 61;" C +MakeAutoSF src/Dodge/Data/ComposedItem.hs 62;" C MakeDefaultCorpse src/Dodge/Data/Creature.hs 72;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 30;" C @@ -1136,6 +1138,7 @@ ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C MapperInventory src/Dodge/Data/HUD.hs 31;" C +MapperSF src/Dodge/Data/ComposedItem.hs 66;" C Material src/Dodge/Data/Material.hs 11;" t Material src/Dodge/Data/Material.hs 6;" m Material src/Dodge/Material.hs 1;" m @@ -1175,7 +1178,7 @@ Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C Mine src/Dodge/Data/Scenario.hs 64;" C MiniGunAI src/Dodge/Data/Creature/Misc.hs 58;" C -MiniGunFlare src/Dodge/Data/Item/Use.hs 134;" C +MiniGunFlare src/Dodge/Data/Item/Use.hs 136;" C Misc src/Dodge/Data/Creature/Misc.hs 6;" m Misc src/Dodge/Data/Equipment/Misc.hs 6;" m Misc src/Dodge/Data/Item/Misc.hs 6;" m @@ -1208,27 +1211,27 @@ Multiset src/Multiset.hs 4;" m Music src/Music.hs 1;" m MusicData src/Music.hs 7;" t Mute src/Dodge/Data/Creature/Misc.hs 28;" C -Muzzle src/Dodge/Data/Item/Use.hs 167;" t -MuzzleBlink src/Dodge/Data/Item/Use.hs 155;" C -MuzzleDetector src/Dodge/Data/Item/Use.hs 154;" C -MuzzleEffect src/Dodge/Data/Item/Use.hs 140;" t +Muzzle src/Dodge/Data/Item/Use.hs 169;" t +MuzzleBlink src/Dodge/Data/Item/Use.hs 157;" C +MuzzleDetector src/Dodge/Data/Item/Use.hs 156;" C +MuzzleEffect src/Dodge/Data/Item/Use.hs 142;" t MuzzleEffect src/Dodge/Data/MuzzleEffect.hs 5;" m -MuzzleGLauncher src/Dodge/Data/Item/Use.hs 146;" C -MuzzleLaser src/Dodge/Data/Item/Use.hs 142;" C -MuzzleNozzle src/Dodge/Data/Item/Use.hs 147;" C -MuzzleRLauncher src/Dodge/Data/Item/Use.hs 145;" C -MuzzleRewind src/Dodge/Data/Item/Use.hs 157;" C -MuzzleScroller src/Dodge/Data/Item/Use.hs 159;" C -MuzzleShatter src/Dodge/Data/Item/Use.hs 153;" C -MuzzleShootBullet src/Dodge/Data/Item/Use.hs 141;" C -MuzzleStopper src/Dodge/Data/Item/Use.hs 158;" C -MuzzleTesla src/Dodge/Data/Item/Use.hs 143;" C -MuzzleTractor src/Dodge/Data/Item/Use.hs 144;" C -MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 156;" C +MuzzleGLauncher src/Dodge/Data/Item/Use.hs 148;" C +MuzzleLaser src/Dodge/Data/Item/Use.hs 144;" C +MuzzleNozzle src/Dodge/Data/Item/Use.hs 149;" C +MuzzleRLauncher src/Dodge/Data/Item/Use.hs 147;" C +MuzzleRewind src/Dodge/Data/Item/Use.hs 159;" C +MuzzleScroller src/Dodge/Data/Item/Use.hs 161;" C +MuzzleShatter src/Dodge/Data/Item/Use.hs 155;" C +MuzzleShootBullet src/Dodge/Data/Item/Use.hs 143;" C +MuzzleStopper src/Dodge/Data/Item/Use.hs 160;" C +MuzzleTesla src/Dodge/Data/Item/Use.hs 145;" C +MuzzleTractor src/Dodge/Data/Item/Use.hs 146;" C +MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 158;" 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 64;" C +NAILBOX src/Dodge/Data/Item/Combine.hs 72;" C NInt src/NewInt.hs 15;" C NIntMap src/NewInt.hs 18;" C NS src/Dodge/Data/CardinalPoint.hs 25;" C @@ -1247,7 +1250,7 @@ NewSideEffect src/Dodge/Data/Universe.hs 63;" C NextArcStep src/Dodge/Data/ArcStep.hs 21;" t Ngon src/Dodge/Room/Ngon.hs 1;" m NoAction src/Dodge/Data/ActionPlan.hs 152;" C -NoAmmoParams src/Dodge/Data/Item/Use.hs 116;" C +NoAmmoParams src/Dodge/Data/Item/Use.hs 118;" C NoArguments src/Dodge/Data/Terminal.hs 91;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -1262,14 +1265,14 @@ NoDropEffect src/Dodge/Data/Item/Effect.hs 34;" C NoEquipParams src/Dodge/Data/Item/Use/Equipment.hs 36;" C NoEscapeMenuOption src/Dodge/Data/Universe.hs 77;" C NoFaction src/Dodge/Data/Creature/State.hs 40;" C -NoFlare src/Dodge/Data/Item/Use.hs 131;" C +NoFlare src/Dodge/Data/Item/Use.hs 133;" C NoHammer src/Dodge/Data/Hammer.hs 13;" C -NoHeldUseEffect src/Dodge/Data/Item/Use.hs 54;" C +NoHeldUseEffect src/Dodge/Data/Item/Use.hs 56;" C NoHoming src/Dodge/Data/Projectile.hs 47;" C NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoInvEffect src/Dodge/Data/Item/Effect.hs 24;" C NoItTargeting src/Dodge/Data/Item.hs 54;" C -NoLightFlare src/Dodge/Data/Item/Use.hs 133;" C +NoLightFlare src/Dodge/Data/Item/Use.hs 135;" C NoLighting src/Dodge/Data/Config.hs 104;" C NoMouseContext src/Dodge/Data/Input.hs 20;" C NoMvType src/Dodge/Data/Creature/Misc.hs 38;" C @@ -1280,7 +1283,7 @@ NoPreviousArcEffect src/Dodge/Data/Item/Params.hs 32;" 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 55;" C +NoSF src/Dodge/Data/ComposedItem.hs 56;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C NoSubInventory src/Dodge/Data/HUD.hs 29;" C @@ -1350,7 +1353,7 @@ OnSpecial src/Dodge/Data/Equipment/Misc.hs 28;" C OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneArgument src/Dodge/Data/Terminal.hs 92;" C -OneHand src/Dodge/Data/Item/Use.hs 192;" C +OneHand src/Dodge/Data/Item/Use.hs 194;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C OnwardList src/Dodge/Annotation/Data.hs 16;" C Opacity src/Dodge/Data/Wall.hs 40;" t @@ -1383,24 +1386,24 @@ 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 36;" C -PISTOL src/Dodge/Data/Item/Combine.hs 130;" C +PIPE src/Dodge/Data/Item/Combine.hs 44;" C +PISTOL src/Dodge/Data/Item/Combine.hs 137;" C PJStabiliser src/Dodge/Projectile/Create.hs 17;" t -PLANK src/Dodge/Data/Item/Combine.hs 45;" C -PLATE src/Dodge/Data/Item/Combine.hs 55;" C +PLANK src/Dodge/Data/Item/Combine.hs 53;" C +PLATE src/Dodge/Data/Item/Combine.hs 63;" 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 160;" C -PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 74;" C -POWERLEGS src/Dodge/Data/Item/Combine.hs 115;" C +POISONSPRAYER src/Dodge/Data/Item/Combine.hs 167;" C +PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 82;" C +POWERLEGS src/Dodge/Data/Item/Combine.hs 122;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C -PRISM src/Dodge/Data/Item/Combine.hs 51;" C +PRISM src/Dodge/Data/Item/Combine.hs 59;" 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 48;" C +PUMP src/Dodge/Data/Item/Combine.hs 56;" C Padding src/Padding.hs 2;" m Pair src/FoldlHelp.hs 10;" t PaletteColor src/Color/Data.hs 14;" t @@ -1488,9 +1491,9 @@ Procedural src/Dodge/Room/Procedural.hs 2;" m Projectile src/Dodge/Data/Projectile.hs 17;" 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 +ProjectileParams src/Dodge/Data/Item/Use.hs 116;" C ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 32;" C -ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 62;" C +ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 63;" C ProjectileType src/Dodge/Data/Projectile.hs 35;" t ProjectileUpdate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 18;" t Prop src/Dodge/Data/Prop.hs 18;" t @@ -1555,16 +1558,18 @@ 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 59;" C +RAM src/Dodge/Data/Item/Combine.hs 67;" C RBList src/Dodge/Inventory/RBList.hs 1;" m RED src/Color/Data.hs 15;" C -REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 85;" C -REMOTESCREEN src/Dodge/Data/Item/Combine.hs 80;" C -REWINDER src/Dodge/Data/Item/Combine.hs 127;" C +RELCURS src/Dodge/Data/Item/Combine.hs 34;" C +RELITEM src/Dodge/Data/Item/Combine.hs 35;" C +REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 93;" C +REMOTESCREEN src/Dodge/Data/Item/Combine.hs 88;" C +REWINDER src/Dodge/Data/Item/Combine.hs 134;" C RGBA src/Color/Data.hs 31;" t -RIFLE src/Dodge/Data/Item/Combine.hs 139;" C -RLAUNCHER src/Dodge/Data/Item/Combine.hs 157;" C -RLAUNCHERX src/Dodge/Data/Item/Combine.hs 158;" C +RIFLE src/Dodge/Data/Item/Combine.hs 146;" C +RLAUNCHER src/Dodge/Data/Item/Combine.hs 164;" C +RLAUNCHERX src/Dodge/Data/Item/Combine.hs 165;" C ROSE src/Color/Data.hs 21;" C RPLinkStatus src/Dodge/Data/Room.hs 55;" t RProps src/Dodge/Layout/Generate.hs 13;" C @@ -1572,9 +1577,9 @@ Radar src/Dodge/Item/Weapon/Radar.hs 1;" m RadarBlip src/Dodge/Data/RadarBlip.hs 14;" t RadarBlip src/Dodge/Data/RadarBlip.hs 6;" m RadarBlip src/Dodge/RadarBlip.hs 1;" m -RadarSweep src/Dodge/Data/RadarSweep.hs 17;" t +RadarSweep src/Dodge/Data/RadarSweep.hs 19;" t RadarSweep src/Dodge/Data/RadarSweep.hs 6;" m -RadarSweep src/Dodge/RadarSweep.hs 1;" m +RadarSweep src/Dodge/RadarSweep.hs 3;" m RadialDistortion src/Dodge/Data/Distortion.hs 13;" C RandImpulse src/Dodge/Data/ActionPlan.hs 62;" t RandImpulse src/Dodge/RandImpulse.hs 1;" m @@ -1588,7 +1593,7 @@ RandomHelp src/RandomHelp.hs 3;" m RandomImpulse src/Dodge/Data/ActionPlan.hs 32;" C RandomPlacement src/Dodge/Data/GenWorld.hs 84;" C RandomTurn src/Dodge/Data/ActionPlan.hs 31;" C -RandomiseMuzzleFrames src/Dodge/Data/Item/Use.hs 55;" C +RandomiseMuzzleFrames src/Dodge/Data/Item/Use.hs 57;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C ReaderUpdate src/Dodge/Creature/ReaderUpdate.hs 1;" m RecRoomSS src/Dodge/Data/Scenario.hs 103;" C @@ -1599,10 +1604,10 @@ 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 27;" C -RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 53;" C +RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 54;" C RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 21;" C RemoteScreenLink src/Dodge/Data/ComposedItem.hs 26;" C -RemoteScreenSF src/Dodge/Data/ComposedItem.hs 51;" C +RemoteScreenSF src/Dodge/Data/ComposedItem.hs 52;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C RemoveShieldWall src/Dodge/Data/Item/Effect.hs 27;" C Remove_LOS src/Dodge/Data/Config.hs 77;" C @@ -1659,25 +1664,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 47;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 161;" C +SCRAPMETAL src/Dodge/Data/Item/Combine.hs 55;" C +SFLink src/Dodge/Data/ComposedItem.hs 36;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 168;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C -SHELLMAG src/Dodge/Data/Item/Combine.hs 96;" C -SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 89;" C -SMG src/Dodge/Data/Item/Combine.hs 133;" C -SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 86;" C -SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 147;" C -SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 67;" C -SPARKGUN src/Dodge/Data/Item/Combine.hs 153;" C +SHELLMAG src/Dodge/Data/Item/Combine.hs 103;" C +SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 96;" C +SMG src/Dodge/Data/Item/Combine.hs 140;" C +SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 94;" C +SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 154;" C +SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 75;" C +SPARKGUN src/Dodge/Data/Item/Combine.hs 160;" C SPARKING src/Dodge/Data/Damage/Type.hs 15;" C -SPEEDLEGS src/Dodge/Data/Item/Combine.hs 116;" C -SPRING src/Dodge/Data/Item/Combine.hs 39;" C +SPEEDLEGS src/Dodge/Data/Item/Combine.hs 123;" C +SPRING src/Dodge/Data/Item/Combine.hs 47;" 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 44;" C +STEELDRUM src/Dodge/Data/Item/Combine.hs 52;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 23;" C SameConstr src/SameConstr.hs 5;" m Save src/Dodge/Save.hs 1;" m @@ -1785,7 +1791,7 @@ 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 28;" C -SmokeReducerSF src/Dodge/Data/ComposedItem.hs 54;" C +SmokeReducerSF src/Dodge/Data/ComposedItem.hs 55;" C SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C @@ -1864,22 +1870,22 @@ SwarmAI src/Dodge/Data/Creature/Misc.hs 55;" C SwarmCrit src/Dodge/Creature/SwarmCrit.hs 1;" m SwarmPlacement src/Dodge/LevelGen/SwarmPlacement.hs 1;" m Switch src/Dodge/LevelGen/Switch.hs 1;" m -SwitchAlteRifle src/Dodge/Data/Item/Use.hs 56;" C +SwitchAlteRifle src/Dodge/Data/Item/Use.hs 58;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C -TAPE src/Dodge/Data/Item/Combine.hs 41;" C +TAPE src/Dodge/Data/Item/Combine.hs 49;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C -TESLAGUN src/Dodge/Data/Item/Combine.hs 154;" C -THERMOMETER src/Dodge/Data/Item/Combine.hs 70;" C +TESLAGUN src/Dodge/Data/Item/Combine.hs 161;" C +THERMOMETER src/Dodge/Data/Item/Combine.hs 78;" C THREELINES src/Dodge/Data/GenParams.hs 20;" C -TIMESCROLLER src/Dodge/Data/Item/Combine.hs 129;" C -TIMESTOPPER src/Dodge/Data/Item/Combine.hs 128;" C -TIN src/Dodge/Data/Item/Combine.hs 43;" C -TINMAG src/Dodge/Data/Item/Combine.hs 93;" C +TIMESCROLLER src/Dodge/Data/Item/Combine.hs 136;" C +TIMESTOPPER src/Dodge/Data/Item/Combine.hs 135;" C +TIN src/Dodge/Data/Item/Combine.hs 51;" C +TINMAG src/Dodge/Data/Item/Combine.hs 100;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 162;" C -TRACTORGUN src/Dodge/Data/Item/Combine.hs 156;" C -TRANSFORMER src/Dodge/Data/Item/Combine.hs 50;" C -TRANSMITTER src/Dodge/Data/Item/Combine.hs 56;" C +TORCH src/Dodge/Data/Item/Combine.hs 169;" C +TRACTORGUN src/Dodge/Data/Item/Combine.hs 163;" C +TRANSFORMER src/Dodge/Data/Item/Combine.hs 58;" C +TRANSMITTER src/Dodge/Data/Item/Combine.hs 64;" 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 @@ -1889,7 +1895,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 37;" C +TUBE src/Dodge/Data/Item/Combine.hs 45;" 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 @@ -1944,7 +1950,7 @@ TeslaArc src/Dodge/Data/TeslaArc.hs 15;" t TeslaArc src/Dodge/Data/TeslaArc.hs 6;" m TeslaBall src/Dodge/Data/Bullet.hs 31;" C TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" C -TeslaGunFlare src/Dodge/Data/Item/Use.hs 137;" C +TeslaGunFlare src/Dodge/Data/Item/Use.hs 139;" C Test src/Dodge/Creature/Test.hs 8;" m Test src/Dodge/Event/Test.hs 1;" m Test src/Picture/Test.hs 1;" m @@ -1983,7 +1989,7 @@ ToStop src/Sound/Data.hs 29;" C Toggle src/Dodge/Data/Universe.hs 102;" C Toggle2 src/Dodge/Data/Universe.hs 106;" C ToggleExamine src/Dodge/ToggleExamine.hs 1;" m -ToggleSF src/Dodge/Data/ComposedItem.hs 64;" C +ToggleSF src/Dodge/Data/ComposedItem.hs 65;" C TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m TopEscapeMenuOption src/Dodge/Data/Universe.hs 76;" C TopLDT src/Dodge/Data/DoubleTree.hs 49;" C @@ -2002,8 +2008,8 @@ 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 18;" C -TriggerSF src/Dodge/Data/ComposedItem.hs 48;" C -TriggerType src/Dodge/Data/Item/Use.hs 69;" t +TriggerSF src/Dodge/Data/ComposedItem.hs 49;" C +TriggerType src/Dodge/Data/Item/Use.hs 71;" t TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C Turn src/Dodge/Data/ActionPlan.hs 30;" C @@ -2016,17 +2022,17 @@ Turret src/Dodge/Data/Machine.hs 57;" t Turret src/Dodge/Placement/Instance/Turret.hs 1;" m TurretInt src/Dodge/Data/Item/Location.hs 21;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C -TwoHandFlat src/Dodge/Data/Item/Use.hs 191;" C -TwoHandOver src/Dodge/Data/Item/Use.hs 190;" C -TwoHandUnder src/Dodge/Data/Item/Use.hs 189;" C +TwoHandFlat src/Dodge/Data/Item/Use.hs 193;" C +TwoHandOver src/Dodge/Data/Item/Use.hs 192;" C +TwoHandUnder src/Dodge/Data/Item/Use.hs 191;" 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 -UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 84;" C +UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 92;" C UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 34;" C -UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 42;" C +UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 43;" C UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 33;" C -UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 41;" C +UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 42;" 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 @@ -2034,7 +2040,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 39;" C +UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 40;" 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 @@ -2055,28 +2061,29 @@ Use src/Dodge/Data/Item/Use.hs 6;" m Use src/Dodge/Default/Item/Use.hs 1;" m UseAheadPos src/Dodge/Data/ActionPlan.hs 160;" C UseAttach src/Dodge/Data/Item/Use.hs 43;" C -UseBulletMod src/Dodge/Data/Item/Use.hs 46;" C -UseCondition src/Dodge/Data/Item/Use.hs 64;" t +UseBulletMod src/Dodge/Data/Item/Use.hs 47;" C +UseCondition src/Dodge/Data/Item/Use.hs 66;" t UseDelay src/Dodge/Data/Item/HeldDelay.hs 13;" t UseEquip src/Dodge/Data/Item/Use.hs 42;" C -UseExactly src/Dodge/Data/Item/Use.hs 163;" C -UseFocus src/Dodge/Data/Item/Use.hs 59;" t -UseFromLocation src/Dodge/Data/Item/Use.hs 61;" C -UseFromRoot src/Dodge/Data/Item/Use.hs 60;" C +UseExactly src/Dodge/Data/Item/Use.hs 165;" C +UseFocus src/Dodge/Data/Item/Use.hs 61;" t +UseFromLocation src/Dodge/Data/Item/Use.hs 63;" C +UseFromRoot src/Dodge/Data/Item/Use.hs 62;" C UseHeld src/Dodge/Data/Item/Use.hs 34;" C +UseInt src/Dodge/Data/Item/Use.hs 44;" C UseItem src/Dodge/Data/ActionPlan.hs 37;" C UseItem src/Dodge/Creature/Impulse/UseItem.hs 3;" m UseItemWidth src/Dodge/Data/SelectionList.hs 41;" C -UseMapper src/Dodge/Data/Item/Use.hs 48;" C +UseMapper src/Dodge/Data/Item/Use.hs 49;" C UseMvTargetPos src/Dodge/Data/ActionPlan.hs 163;" C -UseNothing src/Dodge/Data/Item/Use.hs 44;" C -UseScope src/Dodge/Data/Item/Use.hs 45;" C +UseNothing src/Dodge/Data/Item/Use.hs 45;" C +UseScope src/Dodge/Data/Item/Use.hs 46;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C -UseToggle src/Dodge/Data/Item/Use.hs 47;" C -UseUpTo src/Dodge/Data/Item/Use.hs 164;" C -UseableAnytime src/Dodge/Data/Item/Use.hs 66;" C -UseableWhenAimed src/Dodge/Data/Item/Use.hs 65;" C +UseToggle src/Dodge/Data/Item/Use.hs 48;" C +UseUpTo src/Dodge/Data/Item/Use.hs 166;" C +UseableAnytime src/Dodge/Data/Item/Use.hs 68;" C +UseableWhenAimed src/Dodge/Data/Item/Use.hs 67;" C UsedInLink src/Dodge/Data/Room.hs 61;" C UsedOutLink src/Dodge/Data/Room.hs 56;" C Utility src/Dodge/Item/Held/Utility.hs 1;" m @@ -2085,7 +2092,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 138;" C +VOLLEYGUN src/Dodge/Data/Item/Combine.hs 145;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2100,12 +2107,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 172;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 179;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C -WIRE src/Dodge/Data/Item/Combine.hs 72;" C -WRISTARMOUR src/Dodge/Data/Item/Combine.hs 110;" C -WRIST_ECG src/Dodge/Data/Item/Combine.hs 122;" C +WIRE src/Dodge/Data/Item/Combine.hs 80;" C +WRISTARMOUR src/Dodge/Data/Item/Combine.hs 117;" C +WRIST_ECG src/Dodge/Data/Item/Combine.hs 129;" 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 @@ -2162,9 +2169,9 @@ 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 23;" C -WeaponScopeSF src/Dodge/Data/ComposedItem.hs 45;" C +WeaponScopeSF src/Dodge/Data/ComposedItem.hs 46;" C WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 24;" C -WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 46;" C +WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 47;" 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 @@ -2189,7 +2196,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 78;" C +ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 86;" 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 @@ -2197,13 +2204,13 @@ Zoning src/Dodge/Zoning.hs 1;" m __Just' src/MaybeHelp.hs 13;" f _actAction src/Dodge/Data/ActionPlan.hs 81;" f _actLabel src/Dodge/Data/ActionPlan.hs 80;" f -_aimHandlePos src/Dodge/Data/Item/Use.hs 125;" f -_aimMuzzles src/Dodge/Data/Item/Use.hs 126;" f -_aimRange src/Dodge/Data/Item/Use.hs 122;" f -_aimStance src/Dodge/Data/Item/Use.hs 124;" f -_aimTurnSpeed src/Dodge/Data/Item/Use.hs 121;" f -_aimWeight src/Dodge/Data/Item/Use.hs 120;" f -_aimZoom src/Dodge/Data/Item/Use.hs 123;" f +_aimHandlePos src/Dodge/Data/Item/Use.hs 127;" f +_aimMuzzles src/Dodge/Data/Item/Use.hs 128;" f +_aimRange src/Dodge/Data/Item/Use.hs 124;" f +_aimStance src/Dodge/Data/Item/Use.hs 126;" f +_aimTurnSpeed src/Dodge/Data/Item/Use.hs 123;" f +_aimWeight src/Dodge/Data/Item/Use.hs 122;" f +_aimZoom src/Dodge/Data/Item/Use.hs 125;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 21;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 24;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 28;" f @@ -2215,14 +2222,14 @@ _allocRemoveID src/Dodge/Data/RightButtonOptions.hs 34;" f _allocSwapID src/Dodge/Data/RightButtonOptions.hs 30;" f _alphaDivideShader src/Data/Preload/Render.hs 18;" f _ambushTarget src/Dodge/Data/ActionPlan.hs 178;" f -_ampBullet src/Dodge/Data/Item/Use.hs 113;" f -_ampCreateGas src/Dodge/Data/Item/Use.hs 115;" f -_ampPayload src/Dodge/Data/Item/Use.hs 114;" f +_ampBullet src/Dodge/Data/Item/Use.hs 115;" f +_ampCreateGas src/Dodge/Data/Item/Use.hs 117;" f +_ampPayload src/Dodge/Data/Item/Use.hs 116;" f _apAction src/Dodge/Data/ActionPlan.hs 20;" f _apGoal src/Dodge/Data/ActionPlan.hs 22;" f _apImpulse src/Dodge/Data/ActionPlan.hs 19;" f -_apInt src/Dodge/Data/Item/Use.hs 75;" f -_apProjectiles src/Dodge/Data/Item/Use.hs 74;" f +_apInt src/Dodge/Data/Item/Use.hs 77;" f +_apProjectiles src/Dodge/Data/Item/Use.hs 76;" f _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f _arLoaded src/Dodge/Data/Item/Use/Consumption.hs 28;" f _arMax src/Dodge/Data/Item/Use/Consumption.hs 29;" f @@ -2296,9 +2303,9 @@ _buPayload src/Dodge/Data/Bullet.hs 19;" f _buPos src/Dodge/Data/Bullet.hs 23;" f _buVel src/Dodge/Data/Bullet.hs 21;" f _buWidth src/Dodge/Data/Bullet.hs 25;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 87;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 94;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 104;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 89;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 96;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 106;" f _bullets src/Dodge/Data/LWorld.hs 106;" f _buttons src/Dodge/Data/LWorld.hs 135;" f _cClock src/Dodge/Data/CWorld.hs 28;" f @@ -2561,7 +2568,7 @@ _fullscreenShader src/Data/Preload/Render.hs 20;" f _futureWorlds src/Dodge/Data/World.hs 63;" f _futureWorlds src/Dodge/Data/World.hs 69;" f _gameplay_rotate_to_wall src/Dodge/Data/Config.hs 55;" f -_gasCreation src/Dodge/Data/Item/Use.hs 82;" f +_gasCreation src/Dodge/Data/Item/Use.hs 84;" f _genPlacements src/Dodge/Data/GenWorld.hs 25;" f _genRooms src/Dodge/Data/GenWorld.hs 26;" f _getAttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" f @@ -2610,16 +2617,16 @@ _hudElement src/Dodge/Data/HUD.hs 45;" 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 71;" f -_iatType src/Dodge/Data/ComposedItem.hs 70;" f +_iatOrient src/Dodge/Data/ComposedItem.hs 73;" f +_iatType src/Dodge/Data/ComposedItem.hs 72;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 19;" f _ibtBulletMod src/Dodge/Data/Item/Combine.hs 22;" f _ibtCraft src/Dodge/Data/Item/Combine.hs 18;" f -_ibtDetector src/Dodge/Data/Item/Combine.hs 27;" f +_ibtDetector src/Dodge/Data/Item/Combine.hs 28;" f _ibtEquip src/Dodge/Data/Item/Combine.hs 17;" f _ibtHeld src/Dodge/Data/Item/Combine.hs 16;" f -_ibtIntroScanType src/Dodge/Data/Item/Combine.hs 26;" f +_ibtIntroScanType src/Dodge/Data/Item/Combine.hs 27;" f _ibtTargeting src/Dodge/Data/Item/Combine.hs 21;" f _ieInv src/Dodge/Data/Item/Effect.hs 17;" f _ieOnDrop src/Dodge/Data/Item/Effect.hs 19;" f @@ -2663,9 +2670,9 @@ _itType src/Dodge/Data/Item.hs 45;" f _itUse src/Dodge/Data/Item.hs 42;" f _itUseCondition src/Dodge/Data/Item.hs 43;" f _itemLocations src/Dodge/Data/LWorld.hs 100;" f -_izFac src/Dodge/Data/Item/Use.hs 198;" f -_izMax src/Dodge/Data/Item/Use.hs 196;" f -_izMin src/Dodge/Data/Item/Use.hs 197;" f +_izFac src/Dodge/Data/Item/Use.hs 200;" f +_izMax src/Dodge/Data/Item/Use.hs 198;" f +_izMin src/Dodge/Data/Item/Use.hs 199;" f _killTarget src/Dodge/Data/ActionPlan.hs 198;" f _lClock src/Dodge/Data/LWorld.hs 143;" f _lTestInt src/Dodge/Data/LWorld.hs 145;" f @@ -2709,9 +2716,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 84;" f -_luLinkType src/Dodge/Data/ComposedItem.hs 82;" f -_luParentUpdate src/Dodge/Data/ComposedItem.hs 83;" f +_luChildUpdate src/Dodge/Data/ComposedItem.hs 86;" f +_luLinkType src/Dodge/Data/ComposedItem.hs 84;" f +_luParentUpdate src/Dodge/Data/ComposedItem.hs 85;" 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 @@ -2793,20 +2800,20 @@ _mtLabel src/Dodge/Tree/Compose/Data.hs 8;" f _mtTree src/Dodge/Data/MetaTree.hs 10;" f _mtTree src/Dodge/Tree/Compose/Data.hs 8;" f _musicData src/Data/Preload.hs 13;" f -_muzVel src/Dodge/Data/Item/Use.hs 98;" f +_muzVel src/Dodge/Data/Item/Use.hs 100;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 44;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 39;" f _mvToPoint src/Dodge/Data/Creature.hs 78;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 43;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 42;" f -_mzAmmoPerShot src/Dodge/Data/Item/Use.hs 174;" f -_mzAmmoSlot src/Dodge/Data/Item/Use.hs 171;" f -_mzEffect src/Dodge/Data/Item/Use.hs 173;" f -_mzFlareType src/Dodge/Data/Item/Use.hs 172;" f -_mzFrame src/Dodge/Data/Item/Use.hs 175;" f -_mzInaccuracy src/Dodge/Data/Item/Use.hs 170;" f -_mzPos src/Dodge/Data/Item/Use.hs 168;" f -_mzRot src/Dodge/Data/Item/Use.hs 169;" f +_mzAmmoPerShot src/Dodge/Data/Item/Use.hs 176;" f +_mzAmmoSlot src/Dodge/Data/Item/Use.hs 173;" f +_mzEffect src/Dodge/Data/Item/Use.hs 175;" f +_mzFlareType src/Dodge/Data/Item/Use.hs 174;" f +_mzFrame src/Dodge/Data/Item/Use.hs 177;" f +_mzInaccuracy src/Dodge/Data/Item/Use.hs 172;" f +_mzPos src/Dodge/Data/Item/Use.hs 170;" f +_mzRot src/Dodge/Data/Item/Use.hs 171;" f _newArcStep src/Dodge/Data/Item/Params.hs 23;" f _nodeMetaTree src/Dodge/Data/MetaTree.hs 14;" f _nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f @@ -2816,10 +2823,10 @@ _nodesSearched src/Dodge/Data/Creature/Memory.hs 15;" f _numLinkEW src/Dodge/Data/Room.hs 33;" f _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 32;" f -_nzCurrentWalkAngle src/Dodge/Data/Item/Use.hs 150;" f -_nzMaxWalkAngle src/Dodge/Data/Item/Use.hs 149;" f -_nzPressure src/Dodge/Data/Item/Use.hs 148;" f -_nzWalkSpeed src/Dodge/Data/Item/Use.hs 151;" f +_nzCurrentWalkAngle src/Dodge/Data/Item/Use.hs 152;" f +_nzMaxWalkAngle src/Dodge/Data/Item/Use.hs 151;" f +_nzPressure src/Dodge/Data/Item/Use.hs 150;" f +_nzWalkSpeed src/Dodge/Data/Item/Use.hs 153;" f _offPathFromEdges src/Dodge/Data/Room.hs 74;" f _oldMagnets src/Dodge/Data/LWorld.hs 125;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f @@ -2945,8 +2952,8 @@ _pyFaces src/Polyhedra/Data.hs 14;" f _radarBlips src/Dodge/Data/LWorld.hs 112;" f _radarSweeps src/Dodge/Data/LWorld.hs 107;" f _randGen src/Dodge/Data/World.hs 39;" f -_randomOffset src/Dodge/Data/Item/Use.hs 85;" f -_randomOffset src/Dodge/Data/Item/Use.hs 102;" f +_randomOffset src/Dodge/Data/Item/Use.hs 87;" f +_randomOffset src/Dodge/Data/Item/Use.hs 104;" f _rateMax src/Dodge/Data/Item/HeldDelay.hs 16;" f _rateTime src/Dodge/Data/Item/HeldDelay.hs 17;" f _rbColor src/Dodge/Data/RadarBlip.hs 15;" f @@ -2956,13 +2963,13 @@ _rbPos src/Dodge/Data/RadarBlip.hs 19;" f _rbRad src/Dodge/Data/RadarBlip.hs 18;" f _rbTime src/Dodge/Data/RadarBlip.hs 16;" f _rboBaseBloom src/Data/Preload/Render.hs 38;" f -_recoil src/Dodge/Data/Item/Use.hs 83;" f -_recoil src/Dodge/Data/Item/Use.hs 100;" f +_recoil src/Dodge/Data/Item/Use.hs 85;" f +_recoil src/Dodge/Data/Item/Use.hs 102;" f _renderData src/Data/Preload.hs 11;" f _reverseAmount src/Dodge/Data/World.hs 62;" f _reverseAmount src/Dodge/Data/World.hs 68;" f _reverseAmount src/Dodge/Data/World.hs 72;" f -_rifling src/Dodge/Data/Item/Use.hs 99;" f +_rifling src/Dodge/Data/Item/Use.hs 101;" f _rkHoming src/Dodge/Data/Projectile.hs 40;" f _rkSmoke src/Dodge/Data/Projectile.hs 41;" f _rlDir src/Dodge/Data/Room.hs 26;" f @@ -3003,10 +3010,13 @@ _rplsOutRoomID src/Dodge/Data/Room.hs 59;" f _rplsType src/Dodge/Data/Room.hs 57;" f _rplsType src/Dodge/Data/Room.hs 62;" f _rplsType src/Dodge/Data/Room.hs 65;" f -_rsObject src/Dodge/Data/RadarSweep.hs 20;" f -_rsPos src/Dodge/Data/RadarSweep.hs 18;" f -_rsRad src/Dodge/Data/RadarSweep.hs 19;" f -_rsTimer src/Dodge/Data/RadarSweep.hs 21;" f +_rsAR src/Dodge/Data/RadarSweep.hs 25;" f +_rsMapper src/Dodge/Data/RadarSweep.hs 24;" f +_rsObject src/Dodge/Data/RadarSweep.hs 22;" f +_rsPos src/Dodge/Data/RadarSweep.hs 20;" f +_rsRad src/Dodge/Data/RadarSweep.hs 21;" f +_rsSource src/Dodge/Data/RadarSweep.hs 26;" f +_rsTimer src/Dodge/Data/RadarSweep.hs 23;" f _scAvailableLines src/Dodge/Data/Universe.hs 87;" f _scDisplayTime src/Dodge/Data/Universe.hs 89;" f _scFooter src/Dodge/Data/Universe.hs 93;" f @@ -3043,6 +3053,7 @@ _sensorCoding src/Dodge/Data/GenParams.hs 16;" f _sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f _sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f _sfColor src/Shape/Data.hs 44;" f +_sfLink src/Dodge/Data/ComposedItem.hs 36;" f _sfShadowImportance src/Shape/Data.hs 45;" f _sfSize src/Shape/Data.hs 46;" f _sfType src/Shape/Data.hs 42;" f @@ -3053,7 +3064,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 89;" f +_shellPayload src/Dodge/Data/Item/Combine.hs 96;" f _shockwaves src/Dodge/Data/LWorld.hs 115;" f _siColor src/Dodge/Data/SelectionList.hs 49;" f _siColor src/Dodge/Data/SelectionList.hs 58;" f @@ -3070,8 +3081,8 @@ _siWidth src/Dodge/Data/SelectionList.hs 47;" f _siWidth src/Dodge/Data/SelectionList.hs 56;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f -_sidePush src/Dodge/Data/Item/Use.hs 86;" f -_sidePush src/Dodge/Data/Item/Use.hs 103;" f +_sidePush src/Dodge/Data/Item/Use.hs 88;" f +_sidePush src/Dodge/Data/Item/Use.hs 105;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f _skColor src/Dodge/Data/Spark.hs 17;" f _skDamageType src/Dodge/Data/Spark.hs 21;" f @@ -3184,14 +3195,14 @@ _toPlaySoundVolume src/Sound/Data.hs 43;" f _toPlaySoundVolumeFraction src/Sound/Data.hs 44;" f _toPlaySounds src/Dodge/Data/World.hs 40;" f _topBoxSize src/Shape/Data.hs 17;" f -_torqueAfter src/Dodge/Data/Item/Use.hs 84;" f -_torqueAfter src/Dodge/Data/Item/Use.hs 101;" f +_torqueAfter src/Dodge/Data/Item/Use.hs 86;" f +_torqueAfter src/Dodge/Data/Item/Use.hs 103;" f _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 77;" f -_tryRightLink src/Dodge/Data/ComposedItem.hs 78;" f +_tryLeftLink src/Dodge/Data/ComposedItem.hs 79;" f +_tryRightLink src/Dodge/Data/ComposedItem.hs 80;" f _ttDeathEffect src/Dodge/Data/Terminal.hs 85;" f _ttTriggerID src/Dodge/Data/Terminal.hs 84;" f _tuDir src/Dodge/Data/Machine.hs 61;" f @@ -3199,9 +3210,10 @@ _tuFireTime src/Dodge/Data/Machine.hs 60;" f _tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f _tuWeapon src/Dodge/Data/Machine.hs 58;" f _turnToPoint src/Dodge/Data/ActionPlan.hs 92;" f -_uScope src/Dodge/Data/Item/Use.hs 45;" f +_uInt src/Dodge/Data/Item/Use.hs 44;" f +_uScope src/Dodge/Data/Item/Use.hs 46;" f _uaParams src/Dodge/Data/Item/Use.hs 43;" f -_ubMod src/Dodge/Data/Item/Use.hs 46;" f +_ubMod src/Dodge/Data/Item/Use.hs 47;" f _uequipEffect src/Dodge/Data/Item/Use.hs 42;" f _unCombEdge src/Dodge/Combine/Graph.hs 31;" f _unCombNode src/Dodge/Combine/Graph.hs 24;" f @@ -3216,14 +3228,14 @@ _unST src/Dodge/Tree/Compose/Data.hs 12;" f _unTO src/Shader/Data.hs 59;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f -_useExactly src/Dodge/Data/Item/Use.hs 163;" f -_useMapperLines src/Dodge/Data/Item/Use.hs 48;" f -_useMapperPoints src/Dodge/Data/Item/Use.hs 49;" f +_useExactly src/Dodge/Data/Item/Use.hs 165;" f +_useMapperLines src/Dodge/Data/Item/Use.hs 50;" f +_useMapperPoints src/Dodge/Data/Item/Use.hs 51;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f -_useToggle src/Dodge/Data/Item/Use.hs 47;" f -_useUpTo src/Dodge/Data/Item/Use.hs 164;" f +_useToggle src/Dodge/Data/Item/Use.hs 48;" f +_useUpTo src/Dodge/Data/Item/Use.hs 166;" f _uvCanContinue src/Dodge/Data/Universe.hs 38;" f _uvConfig src/Dodge/Data/Universe.hs 36;" f _uvDebug src/Dodge/Data/Universe.hs 43;" f @@ -3275,10 +3287,10 @@ _walls src/Dodge/Data/LWorld.hs 120;" f _warmMax src/Dodge/Data/Item/HeldDelay.hs 27;" f _warmSound src/Dodge/Data/Item/HeldDelay.hs 28;" f _warmTime src/Dodge/Data/Item/HeldDelay.hs 26;" f -_weaponInvLock src/Dodge/Data/Item/Use.hs 90;" f -_weaponInvLock src/Dodge/Data/Item/Use.hs 107;" f -_weaponRepeat src/Dodge/Data/Item/Use.hs 91;" f -_weaponRepeat src/Dodge/Data/Item/Use.hs 108;" f +_weaponInvLock src/Dodge/Data/Item/Use.hs 92;" f +_weaponInvLock src/Dodge/Data/Item/Use.hs 109;" f +_weaponRepeat src/Dodge/Data/Item/Use.hs 93;" f +_weaponRepeat src/Dodge/Data/Item/Use.hs 110;" f _windowPosX src/Dodge/Data/Config.hs 53;" f _windowPosY src/Dodge/Data/Config.hs 54;" f _windowShader src/Data/Preload/Render.hs 19;" f @@ -3309,22 +3321,22 @@ _wpMaxCharge src/Dodge/Data/Item/Use/Consumption.hs 34;" f _wsBlock src/Dodge/Data/Wall/Structure.hs 16;" f _wsDoor src/Dodge/Data/Wall/Structure.hs 14;" f _wsMachine src/Dodge/Data/Wall/Structure.hs 15;" f -_xNum src/Dodge/Data/Item/Combine.hs 126;" f -_xNum src/Dodge/Data/Item/Combine.hs 136;" f -_xNum src/Dodge/Data/Item/Combine.hs 158;" f +_xNum src/Dodge/Data/Item/Combine.hs 133;" f +_xNum src/Dodge/Data/Item/Combine.hs 143;" f +_xNum src/Dodge/Data/Item/Combine.hs 165;" f aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 21;" f aGasCloud src/Dodge/Gas.hs 13;" f aGib src/Dodge/Prop/Gib.hs 17;" f -aRadarPulse src/Dodge/RadarSweep.hs 15;" f +aRadarPulse src/Dodge/RadarSweep.hs 19;" f aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f aSound src/Dodge/SoundLogic.hs 68;" f aStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 41;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f accessTerminal src/Dodge/WorldEffect.hs 50;" f -activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 81;" f -activeTargetCursorPic src/Dodge/Targeting/Draw.hs 24;" f +activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 86;" f +activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f addArmour src/Dodge/Creature.hs 83;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f @@ -3363,10 +3375,10 @@ addWarningTerminal src/Dodge/Room/Warning.hs 35;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 77;" f advanceScrollAmount src/Dodge/Update.hs 418;" f -advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f +advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f aimDelaySweep src/Dodge/Render/Picture.hs 239;" f -aimStanceInfo src/Dodge/Item/Info.hs 217;" f +aimStanceInfo src/Dodge/Item/Info.hs 235;" f aimTurn src/Dodge/Creature/YourControl.hs 162;" f aimingWeaponHandlePos src/Dodge/Item/HeldOffset.hs 69;" f aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 63;" f @@ -3378,11 +3390,12 @@ airlockDoor src/Dodge/Room/Airlock.hs 51;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f airlockSimple src/Dodge/Room/Airlock.hs 66;" f airlockZ src/Dodge/Room/Airlock.hs 91;" f -allInvLocs src/Dodge/Item/Grammar.hs 298;" f +allInvLocs src/Dodge/Item/Grammar.hs 307;" 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 117;" f +ammoMagInfo src/Dodge/Item/Info.hs 42;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 119;" 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 @@ -3393,34 +3406,35 @@ 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 145;" f +applyCME src/Dodge/HeldUse.hs 158;" 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 57;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f -applyInvLock src/Dodge/HeldUse.hs 160;" f +applyInvLock src/Dodge/HeldUse.hs 173;" f applyMagnetsToBul src/Dodge/Bullet.hs 36;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f -applyPastDamages src/Dodge/Creature/State.hs 142;" f +applyPastDamages src/Dodge/Creature/State.hs 143;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 179;" f +applyRecoil src/Dodge/HeldUse.hs 192;" f applyResFactor src/Dodge/Data/Config.hs 110;" f -applySetTerminalString src/Dodge/Debug/Terminal.hs 79;" f -applySidePush src/Dodge/HeldUse.hs 186;" f -applySoundCME src/Dodge/HeldUse.hs 170;" f +applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f +applySidePush src/Dodge/HeldUse.hs 199;" f +applySoundCME src/Dodge/HeldUse.hs 183;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f -applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 40;" f +applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 197;" f +applyTorqueCME src/Dodge/HeldUse.hs 210;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f +arHUD src/Dodge/Item/Scope.hs 94;" f arc src/Picture/Base.hs 287;" f arcFull src/Picture/Arc.hs 11;" f arcPart src/Picture/Arc.hs 24;" f @@ -3445,7 +3459,7 @@ atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 229;" f atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 214;" f atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 232;" f attachBranch src/Dodge/Tree/Compose.hs 83;" f -attachInfo src/Dodge/Item/Info.hs 33;" f +attachInfo src/Dodge/Item/Info.hs 51;" f attachList' src/Dodge/Tree/Compose.hs 80;" f attachOnward src/Dodge/Tree/Compose.hs 95;" f attachOnward' src/Dodge/Tree/Compose.hs 98;" f @@ -3453,7 +3467,6 @@ 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 179;" f -augmentedHUD src/Dodge/Item/Scope.hs 89;" f autoAmr src/Dodge/Item/Held/Rod.hs 49;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f autoCrit src/Dodge/Creature/AutoCrit.hs 12;" f @@ -3468,28 +3481,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 166;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 168;" 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 279;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 281;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 388;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" 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 392;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 394;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f -baseCI src/Dodge/Item/Grammar.hs 173;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 299;" f +baseCI src/Dodge/Item/Grammar.hs 182;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 301;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 302;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 389;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 369;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 304;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 391;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 371;" f baseShoulder src/Dodge/Creature/Picture.hs 131;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 276;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 271;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 278;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 273;" 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 @@ -3500,7 +3513,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 297;" f +basicMuzFlare src/Dodge/HeldUse.hs 310;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 92;" f batteryPack src/Dodge/Item/Equipment.hs 55;" f @@ -3518,7 +3531,7 @@ blinkDistortions src/Dodge/Creature/Action/Blink.hs 43;" f blinkShockwave src/Dodge/Creature/Action/Blink.hs 79;" f blinker src/Dodge/Item/Held/Utility.hs 54;" f blinker src/Dodge/Item/Weapon/Utility.hs 14;" f -blipAt src/Dodge/RadarSweep.hs 59;" f +blipAt src/Dodge/RadarSweep.hs 77;" f blockLine src/Dodge/Placement/Instance/Wall.hs 41;" f blockPillar src/Dodge/Room/Pillar.hs 17;" f blockedCorridor src/Dodge/Room/RoadBlock.hs 71;" f @@ -3559,15 +3572,15 @@ bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 109;" f bulletBeltPack src/Dodge/Item/Equipment.hs 91;" f -bulletModule src/Dodge/Item/Scope.hs 72;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 86;" f +bulletModule src/Dodge/Item/Scope.hs 77;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 91;" 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 buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 530;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f -calcSmoothScroll src/Dodge/SmoothScroll.hs 7;" f +calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f canSee src/Dodge/Base/Collide.hs 232;" f canSeeIndirect src/Dodge/Base/Collide.hs 239;" f @@ -3584,7 +3597,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 273;" f +chainLinkOrientation src/Dodge/Creature/State.hs 274;" f chainPairs src/Geometry.hs 377;" f changeSwapOther src/Dodge/Inventory.hs 138;" f changeSwapSel src/Dodge/Inventory.hs 131;" f @@ -3599,7 +3612,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 43;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 105;" f checkConnection src/Dodge/Inventory/Swap.hs 64;" f -checkDeath src/Dodge/Creature/State.hs 77;" f +checkDeath src/Dodge/Creature/State.hs 78;" f checkEndGame src/Dodge/Update.hs 704;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3649,7 +3662,7 @@ clockCycle src/Dodge/Clock.hs 9;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 78;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 63;" f closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 92;" f -closeObjectInfo src/Dodge/Render/HUD.hs 219;" f +closeObjectInfo src/Dodge/Render/HUD.hs 223;" f closestCreatureID src/Dodge/Debug.hs 116;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f closestPointOnLineParam src/Geometry/Intersect.hs 267;" f @@ -3683,7 +3696,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 43;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineFloors src/Dodge/Room/Procedural.hs 172;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 335;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 339;" f combineItemListYouX src/Dodge/Combine.hs 35;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f @@ -3692,7 +3705,7 @@ combineTree src/Dodge/Tree/Compose.hs 66;" f commandColor src/Dodge/Terminal.hs 132;" f commandFutureLines src/Dodge/Terminal.hs 256;" f commandsCommand src/Dodge/Terminal.hs 93;" f -commonPrefix src/Dodge/Debug/Terminal.hs 143;" f +commonPrefix src/Dodge/Debug/Terminal.hs 145;" f compactDraw src/Dodge/LevelGen.hs 91;" f compactDraw' src/Dodge/LevelGen.hs 102;" f compactDrawTree src/Dodge/LevelGen.hs 85;" f @@ -3716,14 +3729,14 @@ copyItemToFloor src/Dodge/FloorItem.hs 18;" f copyItemToFloorID src/Dodge/FloorItem.hs 22;" f corDoor src/Dodge/Room/Room.hs 376;" f cornerList src/Preload/Render.hs 195;" f -corpseOrGib src/Dodge/Creature/State.hs 106;" f +corpseOrGib src/Dodge/Creature/State.hs 107;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorN src/Dodge/Room/Corridor.hs 52;" f corridorWallN src/Dodge/Room/Corridor.hs 71;" f crAdd src/Dodge/Room/RezBox.hs 104;" f crAwayFromPost src/Dodge/Creature/Test.hs 77;" f -crBlips src/Dodge/RadarSweep.hs 69;" f +crBlips src/Dodge/RadarSweep.hs 87;" f crCamouflage src/Dodge/Creature/Picture.hs 31;" f crCanSeeCr src/Dodge/Creature/Test.hs 48;" f crCrSpring src/Dodge/Update.hs 775;" f @@ -3748,12 +3761,12 @@ crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f crSetRoots src/Dodge/Inventory/Location.hs 48;" f crSpring src/Dodge/Update.hs 770;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f -crUpdate src/Dodge/Creature/State.hs 61;" f +crUpdate src/Dodge/Creature/State.hs 62;" f 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 143;" f -craftItemSPic src/Dodge/Item/Draw/SPic.hs 49;" f +craftInfo src/Dodge/Item/Info.hs 161;" f +craftItemSPic src/Dodge/Item/Draw/SPic.hs 51;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f createArc src/Dodge/Tesla/Arc.hs 81;" f createBarrelSpark src/Dodge/Spark.hs 44;" f @@ -3766,8 +3779,8 @@ 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 679;" f -createProjectileR src/Dodge/HeldUse.hs 643;" f +createProjectile src/Dodge/HeldUse.hs 700;" f +createProjectileR src/Dodge/HeldUse.hs 664;" f createShell src/Dodge/Projectile/Create.hs 22;" f createShieldWall src/Dodge/Euse.hs 107;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f @@ -3876,7 +3889,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f defDamageMaterial src/Dodge/Material/Damage.hs 17;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 285;" f +defSPic src/Dodge/Item/Draw/SPic.hs 287;" 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 @@ -3966,10 +3979,10 @@ destroyMounts src/Dodge/Block.hs 99;" f destroyProjectile src/Dodge/Projectile/Update.hs 143;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 41;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 438;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 440;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f -detectorInfo src/Dodge/Item/Info.hs 198;" f -determineProjectileTracking src/Dodge/HeldUse.hs 626;" f +detectorInfo src/Dodge/Item/Info.hs 216;" f +determineProjectileTracking src/Dodge/HeldUse.hs 647;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 210;" f @@ -3988,7 +4001,7 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 225;" f displayIndents src/Dodge/DisplayInventory.hs 123;" f -displayPulse src/Dodge/Item/Display.hs 124;" f +displayPulse src/Dodge/Item/Display.hs 132;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f displayTerminalLineString src/Dodge/Update.hs 447;" f dist src/Geometry/Vector.hs 179;" f @@ -4001,7 +4014,7 @@ divideLineExact src/Geometry.hs 293;" f divideLineOddNumPoints src/Geometry.hs 278;" f doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacements src/Dodge/Layout.hs 83;" f -doAnyEquipmentEffect src/Dodge/Creature/State.hs 187;" f +doAnyEquipmentEffect src/Dodge/Creature/State.hs 188;" f doArcStep src/Dodge/Tesla.hs 128;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f @@ -4018,7 +4031,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 136;" f +doDamage src/Dodge/Creature/State.hs 137;" f doDamagesFL src/Dodge/Flame.hs 57;" f doDeathToggle src/Dodge/WorldEffect.hs 89;" f doDeathTriggers src/Dodge/WorldEffect.hs 84;" f @@ -4035,9 +4048,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 105;" 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 560;" f +doGenFloat src/Dodge/HeldUse.hs 581;" f doGravityPU src/Dodge/Projectile/Update.hs 51;" f -doHeldUseEffect src/Dodge/HeldUse.hs 110;" f +doHeldUseEffect src/Dodge/HeldUse.hs 123;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f @@ -4068,7 +4081,7 @@ doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f doRoomShift src/Dodge/Room/Link.hs 33;" f -doScopeZoom src/Dodge/Update/Scroll.hs 77;" f +doScopeZoom src/Dodge/Update/Scroll.hs 82;" f doSectionSize src/Dodge/DisplayInventory.hs 247;" f doSideEffects appDodge/Main.hs 120;" f doStep src/Dodge/ArcStep.hs 9;" f @@ -4088,7 +4101,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 27;" f -doWeaponRepetitions src/Dodge/HeldUse.hs 134;" f +doWeaponRepetitions src/Dodge/HeldUse.hs 147;" f doWorldEvents src/Dodge/Update.hs 429;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f @@ -4103,11 +4116,11 @@ doublePair src/Geometry.hs 163;" f doublePairSet src/Geometry.hs 167;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 170;" f +drawARHUD src/Dodge/Creature/State.hs 301;" f drawAllShadows src/Dodge/Shadows.hs 5;" f -drawAugmentedHUD src/Dodge/Creature/State.hs 300;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f -drawBlip src/Dodge/RadarBlip.hs 13;" f +drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlock src/Dodge/Block/Draw.hs 7;" f drawBoundingBox src/Dodge/Debug/Picture.hs 331;" f drawBul src/Dodge/Bullet/Draw.hs 9;" f @@ -4117,7 +4130,7 @@ drawCarte src/Dodge/Render/HUD/Carte.hs 14;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 111;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 220;" f -drawCombineInventory src/Dodge/Render/HUD.hs 175;" f +drawCombineInventory src/Dodge/Render/HUD.hs 179;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 62;" f drawCoord src/Dodge/Debug/Picture.hs 359;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f @@ -4139,7 +4152,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 149;" f drawEmptySet src/Dodge/Render/Picture.hs 117;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 10;" f drawEquipment src/Dodge/Creature/Picture.hs 142;" f -drawExamineInventory src/Dodge/Render/HUD.hs 191;" f +drawExamineInventory src/Dodge/Render/HUD.hs 195;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 264;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 26;" f @@ -4152,8 +4165,8 @@ drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f drawInspectWall src/Dodge/Debug/Picture.hs 239;" f drawInspectWalls src/Dodge/Debug/Picture.hs 227;" f drawInventory src/Dodge/Render/HUD.hs 55;" f -drawItemChildrenConnect src/Dodge/Render/HUD.hs 322;" f -drawItemConnections src/Dodge/Render/HUD.hs 312;" f +drawItemChildrenConnect src/Dodge/Render/HUD.hs 326;" f +drawItemConnections src/Dodge/Render/HUD.hs 316;" f drawJumpDown src/Dodge/Render/Picture.hs 163;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLampCover src/Dodge/Prop/Draw.hs 44;" f @@ -4166,6 +4179,7 @@ drawListYgapScaleYoff src/Dodge/Render/List.hs 95;" f drawListYoff src/Dodge/Render/List.hs 92;" f drawMachine src/Dodge/Machine/Draw.hs 17;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f +drawMapperAR src/Dodge/Targeting/Draw.hs 12;" f drawMapperInventory src/Dodge/Render/HUD.hs 169;" f drawMenuClick src/Dodge/Render/Picture.hs 137;" f drawMenuCursor src/Dodge/Render/Picture.hs 150;" f @@ -4185,8 +4199,8 @@ drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 15;" f drawProp' src/Dodge/Prop/Draw.hs 12;" f -drawRBOptions src/Dodge/Render/HUD.hs 245;" f -drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f +drawRBOptions src/Dodge/Render/HUD.hs 249;" f +drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 37;" f drawReturn src/Dodge/Render/Picture.hs 123;" f drawRootCursor src/Dodge/Render/HUD.hs 71;" f @@ -4208,8 +4222,8 @@ drawSubInventory src/Dodge/Render/HUD.hs 160;" f drawSweep src/Dodge/Render/Picture.hs 246;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f -drawTargeting src/Dodge/Targeting/Draw.hs 13;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 359;" f +drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f +drawTerminalDisplay src/Dodge/Render/HUD.hs 363;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f drawText src/Picture/Base.hs 220;" f @@ -4229,9 +4243,11 @@ drawWlIDs src/Dodge/Debug/Picture.hs 367;" f drawZoneCol src/Dodge/Debug/Picture.hs 142;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropByState src/Dodge/Creature/State.hs 130;" f +dropByState src/Dodge/Creature/State.hs 131;" f dropExcept src/Dodge/Creature/Action.hs 167;" f +dropInventoryPath src/Dodge/HeldUse.hs 778;" f dropItem src/Dodge/Creature/Action.hs 173;" f +dropper src/Dodge/Item/Scope.hs 71;" f drumMag src/Dodge/Item/Ammo.hs 42;" f dtIL src/Dodge/DoubleTree.hs 75;" f dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f @@ -4262,11 +4278,11 @@ enterCombineInv src/Dodge/DisplayInventory.hs 355;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 75;" f -equipAllocString src/Dodge/Render/HUD.hs 303;" f -equipInfo src/Dodge/Item/Info.hs 116;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 137;" f +equipAllocString src/Dodge/Render/HUD.hs 307;" f +equipInfo src/Dodge/Item/Info.hs 134;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 139;" f equipPosition src/Dodge/Item/Draw.hs 28;" f -equipSiteInfo src/Dodge/Item/Info.hs 227;" f +equipSiteInfo src/Dodge/Item/Info.hs 245;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 20;" f errorAngleVV src/Geometry.hs 62;" f @@ -4293,8 +4309,8 @@ extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extraPics src/Dodge/Render/ShapePicture.hs 84;" f -extraWeaponLinks src/Dodge/Item/Grammar.hs 111;" f -extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 120;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 117;" f +extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 126;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4308,7 +4324,7 @@ feet src/Dodge/Creature/Picture.hs 53;" f ffoldM src/Framebuffer/Update.hs 79;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 192;" f -findBlips src/Dodge/RadarSweep.hs 44;" f +findBlips src/Dodge/RadarSweep.hs 62;" f findBoundDists src/Dodge/Update/Camera.hs 205;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f @@ -4331,12 +4347,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 372;" f -flareCircleAt src/Dodge/HeldUse.hs 278;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 374;" f +flareCircleAt src/Dodge/HeldUse.hs 291;" 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 425;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 427;" 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 @@ -4352,12 +4368,12 @@ flockPointTarget src/Dodge/Creature/Boid.hs 199;" f flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 224;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 228;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 418;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 414;" f -foldCr src/Dodge/Creature/State.hs 43;" f +foldCr src/Dodge/Creature/State.hs 44;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 37;" f @@ -4373,7 +4389,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 130;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 132;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 376;" f @@ -4394,13 +4410,14 @@ fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 33;" f gLauncher src/Dodge/Item/Held/Launcher.hs 30;" f gRandify src/Dodge/Randify.hs 8;" f +gadgetEffect src/Dodge/HeldUse.hs 38;" f gameOverMenu src/Dodge/Menu.hs 184;" f gameRoomFromRoom src/Dodge/Layout.hs 161;" f gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 131;" f gameplayMenuOptions src/Dodge/Menu.hs 134;" f -gasCreate src/Dodge/HeldUse.hs 557;" f +gasCreate src/Dodge/HeldUse.hs 578;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4411,12 +4428,13 @@ 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 126;" f -getArguments src/Dodge/Update/Scroll.hs 171;" f -getArguments' src/Dodge/Update/Scroll.hs 159;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 106;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 132;" f +getArguments src/Dodge/Update/Scroll.hs 176;" f +getArguments' src/Dodge/Update/Scroll.hs 164;" f +getAttachedSFLink src/Dodge/HeldUse.hs 356;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 112;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulletType src/Dodge/HeldUse.hs 436;" f +getBulletType src/Dodge/HeldUse.hs 457;" f getCloseObj src/Dodge/Update/Input/InGame.hs 549;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -4426,27 +4444,27 @@ 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 -getGrenadeHitEffect src/Dodge/HeldUse.hs 671;" f -getLaserColor src/Dodge/HeldUse.hs 294;" f -getLaserDamage src/Dodge/HeldUse.hs 291;" f -getLaserPhaseV src/Dodge/HeldUse.hs 288;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 692;" f +getLaserColor src/Dodge/HeldUse.hs 307;" f +getLaserDamage src/Dodge/HeldUse.hs 304;" f +getLaserPhaseV src/Dodge/HeldUse.hs 301;" 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 663;" f +getPJStabiliser src/Dodge/HeldUse.hs 684;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 94;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 15;" f getSensor src/Dodge/Terminal.hs 189;" f -getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f -getSplitString src/Dodge/Debug/Terminal.hs 123;" f +getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f +getSplitString src/Dodge/Debug/Terminal.hs 125;" f 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 106;" f +gimbal src/Dodge/Item/Scope.hs 113;" 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 @@ -4462,7 +4480,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 458;" 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 378;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 380;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f @@ -4489,12 +4507,12 @@ gut3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 374;" f gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f -gyroscope src/Dodge/Item/Scope.hs 109;" f +gyroscope src/Dodge/Item/Scope.hs 116;" 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 57;" f +hammerCheck src/Dodge/HeldUse.hs 70;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 42;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -4513,7 +4531,7 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 218;" f hat src/Dodge/Item/Equipment.hs 133;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 139;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 428;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 430;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4521,15 +4539,15 @@ healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 372;" 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 99;" f -heldEffectNoHammerCheck src/Dodge/HeldUse.hs 46;" f -heldInfo src/Dodge/Item/Info.hs 66;" f +heldEffect src/Dodge/HeldUse.hs 51;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 112;" f +heldEffectNoHammerCheck src/Dodge/HeldUse.hs 59;" f +heldInfo src/Dodge/Item/Info.hs 84;" 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 213;" f -heldPositionInfo src/Dodge/Item/Info.hs 214;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 215;" f +heldPositionInfo src/Dodge/Item/Info.hs 232;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 235;" f @@ -4542,7 +4560,7 @@ hitEffFromBul src/Dodge/Bullet.hs 158;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f -homingModule src/Dodge/Item/Scope.hs 44;" f +homingModule src/Dodge/Item/Scope.hs 43;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 70;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 43;" f @@ -4595,7 +4613,7 @@ insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 70;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f -internalCreatureUpdate src/Dodge/Creature/State.hs 122;" f +internalCreatureUpdate src/Dodge/Creature/State.hs 123;" f interpWith src/Dodge/Creature/Boid.hs 10;" f intersectCircSeg src/Geometry/Intersect.hs 305;" f intersectCircSegFirst src/Geometry/Intersect.hs 323;" f @@ -4615,22 +4633,22 @@ intersectSegSegTest src/Geometry/Intersect.hs 122;" f intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 329;" f interweave src/Justify.hs 17;" f -introScan src/Dodge/Item/Scope.hs 53;" f -introScanDisplay src/Dodge/Item/Display.hs 119;" f +introScan src/Dodge/Item/Scope.hs 52;" f +introScanDisplay src/Dodge/Item/Display.hs 127;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 279;" f +invAdj src/Dodge/Item/Grammar.hs 288;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 219;" f -invHead src/Dodge/Render/HUD.hs 400;" f -invItemLocUpdate src/Dodge/Creature/State.hs 176;" f -invLDT src/Dodge/Item/Grammar.hs 259;" f -invRootItemEffs src/Dodge/Creature/State.hs 169;" f -invRootMap src/Dodge/Item/Grammar.hs 268;" f -invRootTrees src/Dodge/Item/Grammar.hs 289;" f +invHead src/Dodge/Render/HUD.hs 404;" f +invItemLocUpdate src/Dodge/Creature/State.hs 177;" f +invLDT src/Dodge/Item/Grammar.hs 268;" f +invRootItemEffs src/Dodge/Creature/State.hs 170;" f +invRootMap src/Dodge/Item/Grammar.hs 277;" f +invRootTrees src/Dodge/Item/Grammar.hs 298;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f -invSideEff src/Dodge/Creature/State.hs 163;" f +invSideEff src/Dodge/Creature/State.hs 164;" f invSize src/Dodge/Inventory/CheckSlots.hs 25;" f inventoryX src/Dodge/Creature.hs 116;" f inverseSelNumPos src/Dodge/SelectionSections.hs 228;" f @@ -4643,12 +4661,12 @@ 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 304;" f +isAmmoIntLink src/Dodge/HeldUse.hs 317;" f isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFrictionless src/Dodge/Creature/State.hs 455;" f +isFrictionless src/Dodge/Creature/State.hs 457;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 189;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4664,50 +4682,50 @@ isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f isUnusedLnkType src/Dodge/PlacementSpot.hs 186;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 172;" f -isValidCommand src/Dodge/Debug/Terminal.hs 128;" f +isValidCommand src/Dodge/Debug/Terminal.hs 130;" f isVowel src/StringHelp.hs 8;" f isWalkable src/Dodge/Base/Collide.hs 225;" f 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 176;" f +itemBaseConnections src/Dodge/Item/Grammar.hs 185;" f itemBaseName src/Dodge/Item/Display.hs 56;" f -itemBlips src/Dodge/RadarSweep.hs 75;" f +itemBlips src/Dodge/RadarSweep.hs 93;" f itemCombinations src/Dodge/Combine/Combinations.hs 55;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f -itemDetectorEffect src/Dodge/HeldUse.hs 342;" f +itemDetectorEffect src/Dodge/HeldUse.hs 360;" 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 33;" f -itemFromAttachType src/Dodge/Item.hs 42;" f +itemFromAmmoMag src/Dodge/Item.hs 35;" f +itemFromAttachType src/Dodge/Item.hs 44;" f itemFromBase src/Dodge/Item.hs 17;" f -itemFromEquipType src/Dodge/Item.hs 58;" f +itemFromEquipType src/Dodge/Item.hs 59;" f itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 14;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemNumberDisplay src/Dodge/Item/Display.hs 97;" f +itemNumberDisplay src/Dodge/Item/Display.hs 104;" 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 -itemScan src/Dodge/Item/Scope.hs 59;" f -itemScroll src/Dodge/Update/Scroll.hs 46;" f +itemScan src/Dodge/Item/Scope.hs 58;" f +itemScroll src/Dodge/Update/Scroll.hs 47;" f itemString src/Dodge/Item/Display.hs 52;" f itemToBreakLists src/Dodge/Item/Grammar.hs 59;" f -itemToFunction src/Dodge/Item/Grammar.hs 132;" f +itemToFunction src/Dodge/Item/Grammar.hs 138;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f -itemUpdate src/Dodge/Creature/State.hs 426;" f +itemUpdate src/Dodge/Creature/State.hs 428;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 24;" f -itmEquipSiteInfo src/Dodge/Item/Info.hs 224;" f +itmEquipSiteInfo src/Dodge/Item/Info.hs 242;" f itmSpaceInfo src/Dodge/Item/Info.hs 19;" f -itmUsageInfo src/Dodge/Item/Info.hs 204;" f +itmUsageInfo src/Dodge/Item/Info.hs 222;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 249;" f -joystick src/Dodge/Item/Scope.hs 102;" f +joinItemsInList src/Dodge/Item/Grammar.hs 258;" f +joystick src/Dodge/Item/Scope.hs 109;" 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 @@ -4722,7 +4740,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 444;" f +keyPic src/Dodge/Item/Draw/SPic.hs 446;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 478;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4734,14 +4752,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 398;" f -lasRayAt src/Dodge/HeldUse.hs 413;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 400;" f +lasRayAt src/Dodge/HeldUse.hs 434;" 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 182;" f +laserLinkTest src/Dodge/Item/Grammar.hs 191;" f lastMap src/Dodge/DoubleTree.hs 174;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f @@ -4756,10 +4774,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 221;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 230;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 235;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 462;" f +leftRightCombine src/Dodge/Item/Grammar.hs 244;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 464;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 45;" f @@ -4786,21 +4804,21 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 347;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f -llleft src/Dodge/Item/Grammar.hs 185;" f -llright src/Dodge/Item/Grammar.hs 191;" f +llleft src/Dodge/Item/Grammar.hs 194;" f +llright src/Dodge/Item/Grammar.hs 200;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 389;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 393;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f -loadMuzzle src/Dodge/HeldUse.hs 214;" f +loadMuzzle src/Dodge/HeldUse.hs 227;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f loadSounds src/Dodge/SoundLogic/LoadSound.hs 16;" f loadingScreen src/Dodge/Menu/Loading.hs 8;" f -loadme src/Dodge/Debug/Terminal.hs 136;" f +loadme src/Dodge/Debug/Terminal.hs 138;" f locGoHelp src/Dodge/DoubleTree.hs 220;" f locGoLeft src/Dodge/DoubleTree.hs 209;" f locGoRight src/Dodge/DoubleTree.hs 214;" f @@ -4818,7 +4836,7 @@ longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f longCrit src/Dodge/Creature.hs 69;" f longRoom src/Dodge/Room/LongRoom.hs 22;" f longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f -longestCommonPrefix src/Dodge/Debug/Terminal.hs 139;" f +longestCommonPrefix src/Dodge/Debug/Terminal.hs 141;" f lookupTrie src/SimpleTrie.hs 29;" f loopPairs src/ListHelp.hs 30;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f @@ -4846,11 +4864,11 @@ main test/Spec.hs 12;" f mainListCursor src/Dodge/Render/HUD/Carte.hs 51;" f makeArc src/Picture/Base.hs 157;" f makeAttach src/Dodge/Item/Attach.hs 10;" f -makeBlip src/Dodge/RadarSweep.hs 51;" f +makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 508;" f -makeBullet' src/Dodge/HeldUse.hs 494;" f +makeBullet src/Dodge/HeldUse.hs 529;" f +makeBullet' src/Dodge/HeldUse.hs 515;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4876,7 +4894,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 236;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 249;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4908,7 +4926,7 @@ makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 18;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 12;" f mapOverlay src/Dodge/Render/HUD/Carte.hs 24;" f -mapper src/Dodge/Item/Scope.hs 66;" f +mapper src/Dodge/Item/Scope.hs 65;" f markWallSeen src/Dodge/Update.hs 689;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 49;" f @@ -4924,7 +4942,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 583;" 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 130;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 138;" 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 @@ -4934,11 +4952,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 592;" f -mcShootLaser src/Dodge/HeldUse.hs 584;" f +mcShootAuto src/Dodge/HeldUse.hs 613;" f +mcShootLaser src/Dodge/HeldUse.hs 605;" f mcTriggerVal src/Dodge/Machine/Update.hs 93;" f mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f -mcUseHeld src/Dodge/HeldUse.hs 527;" f +mcUseHeld src/Dodge/HeldUse.hs 548;" 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 @@ -4979,8 +4997,8 @@ minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f miniGunCrit src/Dodge/Creature.hs 62;" f miniGunX src/Dodge/Item/Held/Cane.hs 96;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 350;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 345;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 352;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 347;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 538;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 12;" f @@ -5008,7 +5026,7 @@ mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 58;" f mouseCursorType src/Dodge/Render/Picture.hs 80;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f moveBullet src/Dodge/Bullet.hs 204;" f -moveCombineSel src/Dodge/Update/Scroll.hs 107;" f +moveCombineSel src/Dodge/Update/Scroll.hs 112;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 53;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f @@ -5030,7 +5048,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 264;" f +muzFlareAt src/Dodge/HeldUse.hs 277;" 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 @@ -5070,7 +5088,7 @@ normalizeAnglePi src/Dodge/Base.hs 132;" f normalizeColor src/Color.hs 76;" f normalizeV src/Geometry/Vector.hs 43;" f normalizeV3 src/Geometry/Vector3D.hs 84;" f -nullCommand src/Dodge/Update/Scroll.hs 162;" f +nullCommand src/Dodge/Update/Scroll.hs 167;" f numColor src/Color.hs 128;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLushort src/Shader/Parameters.hs 29;" f @@ -5135,8 +5153,8 @@ pairsToGraph src/Dodge/Path.hs 110;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f -parseItem src/Dodge/Debug/Terminal.hs 58;" f -parseNum src/Dodge/Debug/Terminal.hs 73;" f +parseItem src/Dodge/Debug/Terminal.hs 60;" f +parseNum src/Dodge/Debug/Terminal.hs 75;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f @@ -5234,7 +5252,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 14;" f pointerYourRootItem src/Dodge/Item/Location.hs 31;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 25;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/State.hs 119;" f +poisonSPic src/Dodge/Creature/State.hs 120;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f @@ -5439,9 +5457,9 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteDetonator src/Dodge/Item/Scope.hs 97;" f -remoteScreen src/Dodge/Item/Scope.hs 92;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 423;" f +remoteDetonator src/Dodge/Item/Scope.hs 104;" f +remoteScreen src/Dodge/Item/Scope.hs 99;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 444;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Euse.hs 125;" f @@ -5485,11 +5503,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 228;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 237;" 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 375;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 377;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 60;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5546,7 +5564,7 @@ rpOnPathFromEdge src/Dodge/PlacementSpot.hs 91;" f rprBool src/Dodge/PlacementSpot.hs 72;" f rprBoolShift src/Dodge/PlacementSpot.hs 111;" f rprShift src/Dodge/PlacementSpot.hs 102;" f -rsObjectColor src/Dodge/RadarSweep/Draw.hs 23;" f +rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f runPastStart src/Dodge/Room/Start.hs 71;" f runTerminalString src/Dodge/Terminal.hs 289;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f @@ -5575,7 +5593,7 @@ scaleSH src/Shape.hs 268;" f scalp src/Dodge/Creature/Picture.hs 96;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 90;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 116;" f +scorchSPic src/Dodge/Creature/State.hs 117;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5583,10 +5601,10 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f scrollAugInvSel src/Dodge/Inventory.hs 187;" f scrollAugNextInSection src/Dodge/Inventory.hs 200;" f -scrollCommandStrings src/Dodge/Update/Scroll.hs 154;" f -scrollCommands src/Dodge/Update/Scroll.hs 151;" f +scrollCommandStrings src/Dodge/Update/Scroll.hs 159;" f +scrollCommands src/Dodge/Update/Scroll.hs 156;" f scrollDebugInfoInt src/Dodge/Debug.hs 71;" f -scrollRBOption src/Dodge/Update/Scroll.hs 145;" f +scrollRBOption src/Dodge/Update/Scroll.hs 150;" f scrollSelectionSections src/Dodge/SelectionSections.hs 26;" f scrollTimeBack src/Dodge/Update.hs 215;" f scrollTimeForward src/Dodge/Update.hs 237;" f @@ -5606,16 +5624,16 @@ sectionsSizes src/Dodge/DisplayInventory.hs 236;" f seedStartMenu src/Dodge/Menu.hs 79;" f seedStartOptions src/Dodge/Menu.hs 82;" f segOnCirc src/Geometry.hs 116;" f -selNumPos src/Dodge/Render/HUD.hs 449;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 472;" f +selNumPos src/Dodge/Render/HUD.hs 453;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 476;" f selSecDrawCursor src/Dodge/Render/List.hs 126;" f selSecDrawCursorAt src/Dodge/Render/List.hs 104;" f -selSecSelCol src/Dodge/Render/HUD.hs 503;" f +selSecSelCol src/Dodge/Render/HUD.hs 507;" f selSecSelSize src/Dodge/SelectionSections.hs 180;" f selSecYint src/Dodge/SelectionSections.hs 189;" f selectCreatureDebugItem src/Dodge/Debug.hs 55;" f selectUse src/Dodge/SelectUse.hs 11;" f -selectedItemScroll src/Dodge/Update/Scroll.hs 40;" f +selectedItemScroll src/Dodge/Update/Scroll.hs 41;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f senseDamage src/Dodge/Machine/Update.hs 154;" f @@ -5649,7 +5667,7 @@ setOldPos src/Dodge/Update.hs 471;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 405;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 407;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 344;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 85;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5688,11 +5706,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 288;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 290;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 86;" f shellMag src/Dodge/Item/Ammo.hs 61;" f -shellModule src/Dodge/Item/Scope.hs 78;" f +shellModule src/Dodge/Item/Scope.hs 83;" f shellShape src/Dodge/Projectile/Draw.hs 34;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f shieldWall src/Dodge/Euse.hs 87;" f @@ -5716,16 +5734,16 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 305;" f -shineTorch src/Dodge/Creature/State.hs 347;" f -shootBullet src/Dodge/HeldUse.hs 483;" f +shineTargetLaser src/Dodge/Creature/State.hs 307;" f +shineTorch src/Dodge/Creature/State.hs 349;" f +shootBullet src/Dodge/HeldUse.hs 504;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 393;" f +shootLaser src/Dodge/HeldUse.hs 414;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 614;" f +shootTeslaArc src/Dodge/HeldUse.hs 635;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 372;" f +shootTractorBeam src/Dodge/HeldUse.hs 393;" 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 @@ -5736,13 +5754,14 @@ shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 536;" 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 74;" f -showEquipItem src/Dodge/Item/Display.hs 89;" f -showInt src/Dodge/Item/Info.hs 49;" f +showAttachItem src/Dodge/Item/Display.hs 82;" f +showEquipItem src/Dodge/Item/Display.hs 96;" f +showInt src/Dodge/Item/Info.hs 67;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f +showInventoryPathing src/Dodge/Item/Display.hs 76;" f showManObj src/Dodge/TestString.hs 76;" f -showTerminalError src/Dodge/Debug/Terminal.hs 76;" f -showTimeFlow src/Dodge/TestString.hs 125;" f +showTerminalError src/Dodge/Debug/Terminal.hs 78;" f +showTimeFlow src/Dodge/TestString.hs 99;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 49;" f @@ -5782,7 +5801,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 115;" f +smokeReducer src/Dodge/Item/Scope.hs 122;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5831,7 +5850,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 203;" f +springLinkTest src/Dodge/Item/Grammar.hs 212;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f square src/Geometry/Polygon.hs 46;" f @@ -5868,7 +5887,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 47;" f +stickyMod src/Dodge/Item/Scope.hs 46;" f stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 404;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f @@ -5887,8 +5906,8 @@ 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 163;" f -structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f +structureToPotentialFunction src/Dodge/Item/Grammar.hs 172;" f +structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 78;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f subMap src/TreeHelp.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f @@ -5922,13 +5941,13 @@ tap2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f tap3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 456;" f tap4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 534;" f tapQuietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 346;" f -targCorner src/Dodge/Targeting/Draw.hs 28;" f -targetCursorPic src/Dodge/Targeting/Draw.hs 34;" f +targCorner src/Dodge/Targeting/Draw.hs 35;" f +targetCursorPic src/Dodge/Targeting/Draw.hs 41;" f targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 194;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f -targetingScope src/Dodge/Item/Scope.hs 34;" f +targetingScope src/Dodge/Item/Scope.hs 33;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 396;" f termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f @@ -5940,9 +5959,9 @@ terminalReturnEffect src/Dodge/Terminal.hs 276;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f -terminalWheelEvent src/Dodge/Update/Scroll.hs 117;" f +terminalWheelEvent src/Dodge/Update/Scroll.hs 122;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 395;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 397;" 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 @@ -5992,7 +6011,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 196;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 205;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f @@ -6001,10 +6020,11 @@ toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f toggleCombineInv src/Dodge/DisplayInventory.hs 35;" f toggleCommand src/Dodge/Terminal.hs 196;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 89;" f -toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 127;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 94;" f +toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 132;" f toggleExamineInv src/Dodge/ToggleExamine.hs 5;" f toggleJust src/MaybeHelp.hs 41;" f +toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 137;" f togglesToEffects src/Dodge/Terminal.hs 248;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 482;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 452;" f @@ -6014,14 +6034,14 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 72;" f torch src/Dodge/Item/Held/Utility.hs 33;" f -torchShape src/Dodge/Item/Draw/SPic.hs 257;" f +torchShape src/Dodge/Item/Draw/SPic.hs 259;" f torqueCr src/Dodge/WorldEffect.hs 65;" 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 382;" f +tractorBeamAt src/Dodge/HeldUse.hs 403;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 422;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 424;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6088,8 +6108,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f tryShellBounce src/Dodge/Projectile/Update.hs 106;" f trySpinByCID src/Dodge/Projectile/Update.hs 180;" f -trySynthBullet src/Dodge/Creature/State.hs 201;" f -tryUseParent src/Dodge/Creature/State.hs 194;" f +trySynthBullet src/Dodge/Creature/State.hs 202;" f +tryUseParent src/Dodge/Creature/State.hs 195;" f turnTo src/Dodge/Movement/Turn.hs 4;" f turnToAmount src/Dodge/Movement/Turn.hs 15;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f @@ -6106,7 +6126,7 @@ twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 436;" f ubyteSize src/Shader/Parameters.hs 13;" f uncurryV src/Geometry/Data.hs 46;" f -underBarrelSlot src/Dodge/Item/Scope.hs 112;" f +underBarrelSlot src/Dodge/Item/Scope.hs 119;" f unfoldrMID src/MonadHelp.hs 33;" f unitVectorAtAngle src/Geometry/Vector.hs 100;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f @@ -6126,11 +6146,11 @@ upProjectile src/Dodge/Projectile/Update.hs 34;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 91;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f -updateAttachedItems src/Dodge/Creature/State.hs 263;" f +updateAttachedItems src/Dodge/Creature/State.hs 264;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 488;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f -updateBaseWheelEvent src/Dodge/Update/Scroll.hs 24;" f +updateBaseWheelEvent src/Dodge/Update/Scroll.hs 25;" f updateBounds src/Dodge/Update/Camera.hs 215;" f updateBulVel src/Dodge/Bullet.hs 61;" f updateBullet src/Dodge/Bullet.hs 22;" f @@ -6161,16 +6181,16 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 32;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 374;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 367;" f updateGusts src/Dodge/Update.hs 715;" f -updateHeldRootItem src/Dodge/Creature/State.hs 257;" f +updateHeldRootItem src/Dodge/Creature/State.hs 258;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 507;" f updateIMl' src/Dodge/Update.hs 512;" f updateInGameCamera src/Dodge/Update/Camera.hs 76;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 435;" f -updateInv src/Dodge/Creature/State.hs 159;" f +updateInv src/Dodge/Creature/State.hs 160;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 89;" f -updateItemTargeting src/Dodge/Creature/State.hs 374;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 283;" f +updateItemTargeting src/Dodge/Creature/State.hs 376;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 284;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 429;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 417;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6186,7 +6206,7 @@ updateMouseContextGame src/Dodge/Update.hs 324;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 95;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 85;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 156;" f -updateMovement src/Dodge/Creature/State.hs 445;" f +updateMovement src/Dodge/Creature/State.hs 447;" f updateObjCatMaybes src/Dodge/Update.hs 529;" f updateObjMapMaybe src/Dodge/Update.hs 522;" f updatePastWorlds src/Dodge/Update.hs 424;" f @@ -6197,15 +6217,14 @@ updateProjectile src/Dodge/Projectile/Update.hs 25;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 22;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f -updateRadarBlip src/Dodge/RadarBlip.hs 8;" f +updateRadarBlip src/Dodge/RadarBlip.hs 11;" f updateRadarBlips src/Dodge/Update.hs 541;" f -updateRadarSweep src/Dodge/RadarSweep.hs 25;" f +updateRadarSweep src/Dodge/RadarSweep.hs 39;" f updateRadarSweeps src/Dodge/Update.hs 567;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 108;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f -updateScopeZoom src/Dodge/Update/Scroll.hs 63;" f -updateScopeZoom' src/Dodge/Update/Scroll.hs 68;" f +updateScopeZoom src/Dodge/Update/Scroll.hs 70;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 300;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 273;" f @@ -6260,28 +6279,28 @@ 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 532;" f +useGasParams src/Dodge/HeldUse.hs 553;" f useHotkey src/Dodge/Creature/YourControl.hs 65;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 308;" f -useLocation src/Dodge/Creature/Impulse/UseItem.hs 63;" f +useLoadedAmmo src/Dodge/HeldUse.hs 321;" f +useLocation src/Dodge/Creature/Impulse/UseItem.hs 66;" 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 748;" f +useRewindGun src/Dodge/HeldUse.hs 769;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useStopWatch src/Dodge/HeldUse.hs 729;" f +useStopWatch src/Dodge/HeldUse.hs 750;" f useStopWatch src/Dodge/Luse.hs 21;" f -useTimeCheck src/Dodge/HeldUse.hs 74;" f +useTimeCheck src/Dodge/HeldUse.hs 87;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 737;" f +useTimeScrollGun src/Dodge/HeldUse.hs 758;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f -useUpdate src/Dodge/Creature/State.hs 430;" f +useUpdate src/Dodge/Creature/State.hs 432;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f v2z src/Geometry/Vector3D.hs 93;" f @@ -6292,7 +6311,7 @@ vNormaly src/Geometry/Vector3D.hs 72;" f vShape src/Dodge/Placement/Instance/LightSource.hs 113;" f vToL src/MatrixHelper.hs 46;" f vToQuat src/Quaternion.hs 41;" f -validTerminalCommands src/Dodge/Debug/Terminal.hs 131;" f +validTerminalCommands src/Dodge/Debug/Terminal.hs 133;" f vasTightStride src/Shader/Compile.hs 297;" f vecBetweenSpeed src/Dodge/Base.hs 124;" f vecTurnTo src/Dodge/Movement/Turn.hs 26;" f @@ -6312,11 +6331,11 @@ 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 333;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 335;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 350;" f +walkNozzle src/Dodge/HeldUse.hs 371;" f walkableNodeNear src/Dodge/Path.hs 48;" f -wallBlips src/Dodge/RadarSweep.hs 80;" f +wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f @@ -6387,16 +6406,16 @@ xyzV4 src/Geometry/Vector.hs 207;" f yIntercepts' src/Dodge/Zoning/Base.hs 74;" f yV2 src/Geometry/Vector.hs 203;" f yellow src/Color.hs 17;" f -you src/Dodge/Base/You.hs 18;" f +you src/Dodge/Base/You.hs 12;" f youDropItem src/Dodge/Creature/Action.hs 190;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 231;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 235;" f yourControl src/Dodge/Creature/YourControl.hs 24;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 129;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 132;" f yourInfo src/Dodge/Creature/Info.hs 8;" f -yourInv src/Dodge/Base/You.hs 45;" f -yourRootItem src/Dodge/Base/You.hs 26;" f -yourSelectedItem src/Dodge/Base/You.hs 21;" f +yourInv src/Dodge/Base/You.hs 25;" f +yourRootItem src/Dodge/Base/You.hs 20;" f +yourSelectedItem src/Dodge/Base/You.hs 15;" f yourStatsInfo src/Dodge/Creature/Info.hs 25;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f @@ -6430,7 +6449,7 @@ zonesAroundPoint src/Dodge/Zoning/Base.hs 89;" f zonesExtract src/Dodge/Zoning/Base.hs 54;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 68;" f zoomFromItem src/Dodge/Update/Camera.hs 181;" f -zoomInLongGun src/Dodge/Update/Scroll.hs 91;" f -zoomOutLongGun src/Dodge/Update/Scroll.hs 99;" f -zoomScope src/Dodge/Item/Scope.hs 29;" f -zoomSpeed src/Dodge/Update/Scroll.hs 88;" f +zoomInLongGun src/Dodge/Update/Scroll.hs 96;" f +zoomOutLongGun src/Dodge/Update/Scroll.hs 104;" f +zoomScope src/Dodge/Item/Scope.hs 28;" f +zoomSpeed src/Dodge/Update/Scroll.hs 93;" f