diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 03f41ef9f..d240036e2 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -54,30 +54,11 @@ useItemLoc cr loc pt w , Just invid' <- itm ^? itLocation . ilInvID = return $ toggleEquipmentAt invid' cr w | otherwise = (\loc' -> useItemLoc cr loc' pt w) =<< locUp' loc - -- ie try location above where sf = loc ^. locDT . dtValue . _2 ldt = loc ^. locDT itm = ldt ^. dtValue . _1 ---chooseUseLocation :: LocationLDT ItemLink OItem -> LocationLDT ItemLink OItem ---chooseUseLocation loc --- | isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc --- | isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 = --- loc --- | sf <- loc ^. locLDT . ldtValue . _2 --- , structureUseAtLoc sf = --- loc --- | otherwise = maybe loc chooseUseLocation $ locUp loc --- ---structureUseAtLoc :: ItemStructuralFunction -> Bool ---structureUseAtLoc = \case --- HeldPlatformSF -> True --- UnderBarrelPlatformSF -> True --- GadgetPlatformSF -> True --- MapperSF -> True --- _ -> False - activateDetonator :: DTree OItem -> World -> World activateDetonator det = fromMaybe id $ do pjid <- det ^? dtValue . _1 . itUse . uaParams . apProjectiles . ix 0 @@ -118,9 +99,7 @@ toggleEquipmentAt invid cr w = case getEquipmentAllocation invid w of crpoint = cWorld . lWorld . creatures . ix (_crID cr) itmat i = _crInv cr IM.! i itm = itmat invid - --onequip itm' = doItmCrWdWd ((_eeOnEquip . _uequipEffect . _itUse) itm') itm' onequip itm' = effectOnEquip itm' - --onremove itm' = doItmCrWdWd ((_eeOnRemove . _uequipEffect . _itUse) itm') itm' onremove itm' = effectOnRemove itm' toggleExamineInv :: World -> World diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index e932ba8fb..63f822cd8 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -1,7 +1,9 @@ +{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.ComposedItem where +import Control.Lens import Dodge.Data.AmmoType import Dodge.Data.Item import Linear @@ -19,7 +21,7 @@ data ItemSF -- Structural Function | IntroScanSF | TriggerSF | ARHUDSF - | AmmoMagSF Int AmmoType + | AmmoMagSF {_amsfLink :: Int , _amsfType :: AmmoType} | RemoteScreenSF | JoystickSF | RemoteDetonatorSF @@ -41,3 +43,5 @@ data ItemSF -- Structural Function type CItem = (Item, ItemSF) type OItem = (Item, ItemSF, (V3 Float,Q.Quaternion Float)) + +makeLenses ''ItemSF diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index a4cdedc4c..1376ace44 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -44,8 +44,7 @@ import Sound.Data gadgetEffect :: PressType -> LocationDT OItem -> Creature -> World -> World gadgetEffect pt loc - | UseHeld{} <- loc ^. locDT . dtValue . _1 . itUse = - heldEffect pt loc + | UseHeld{} <- loc ^. locDT . dtValue . _1 . itUse = heldEffect pt loc | DROPPER x <- loc ^. locDT . dtValue . _1 . itType , Just i <- loc ^? locDT . dtValue . _1 . itUse . uInt , pt == InitialPress = @@ -69,19 +68,27 @@ hammerCheck f pt loc cr w = case itemTriggerType loc of WarmUpNoDelay wm | _wTime (_itParams it) < wm -> w & setwarming - & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ it ^. itType) (Just 2) - & cWorld . lWorld . creatures . ix cid . crInv . ix invid . itParams . wTime +~ 1 + & soundContinue + (CrWeaponSound cid 0) + (_crPos cr) + (warmupSound $ it ^. itType) + (Just 2) + & itmset . itParams . wTime +~ 1 WarmUpNoDelay{} -> f loc cr w & setwarming WarmUpCoolDown ws _ _ -- UNSAFE: | _wTime (_itParams it) < ws -> w & setwarming - & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ it ^. itType) (Just 2) - & cWorld . lWorld . creatures . ix cid . crInv . ix invid . itParams . wTime +~ 1 + & soundContinue + (CrWeaponSound cid 0) + (_crPos cr) + (warmupSound $ it ^. itType) + (Just 2) + & itmset . itParams . wTime +~ 1 WarmUpCoolDown _ cs _ | _wTime (_itParams it) < cs -> f loc cr w & setwarming - & cWorld . lWorld . creatures . ix cid . crInv . ix invid . itParams . wTime +~ 1 + & itmset . itParams . wTime +~ 1 WarmUpCoolDown{} -> w & setwarming BurstTrigger is t | w ^. cWorld . lWorld . lClock - t > timelastused @@ -96,12 +103,11 @@ hammerCheck f pt loc cr w = case itemTriggerType loc of & randGen .~ gen HammerTrigger t | w ^. cWorld . lWorld . lClock - t > timelastused - , -- , isNothing $ lookup MakeAutoLink (tree ^. ldtRight) - pt == InitialPress -> + , isNothing $ find ((== MakeAutoSF) . (^. dtValue . _2)) (loc ^. locDT . dtRight) + , pt == InitialPress -> f loc cr w AutoTrigger t - | w ^. cWorld . lWorld . lClock - t > timelastused -> - f loc cr w + | w ^. cWorld . lWorld . lClock - t > timelastused -> f loc cr w NoTrigger -> f loc cr w _ -> w where @@ -110,13 +116,12 @@ hammerCheck f pt loc cr w = case itemTriggerType loc of -- the following is unsafe, but if ilInvID isn't correctly set we probably -- will have problems elsewhere also invid = it ^?! itLocation . ilInvID - setwarming = - cWorld . lWorld . creatures . ix cid . crInv . ix invid . itParams . isWarming - %~ const True + itmset = cWorld . lWorld . creatures . ix cid . crInv . ix invid + setwarming = itmset . itParams . isWarming %~ const True timelastused = it ^. itTimeLastUsed g x = (x, WdWdBurstFireRepetition (_crID cr) invid) -getVolleyBurst :: (Random a, RandomGen b, Num a) => Int -> b -> ([a], b) +getVolleyBurst :: Int -> StdGen -> ([Int], StdGen) getVolleyBurst i g = let (is, g') = runState (replicateM (i -1) (state $ randomR (0, 6))) g in (scanl1 (+) is, g') @@ -328,67 +333,20 @@ doHeldUseEffect t cr w = case t ^. dtValue . _1 . itType of return $ w & randGen .~ g - & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i - . itParams - . unfiredBarrels - %~ const is + & crinvset . ix i . itParams . unfiredBarrels %~ const is Just (_ : _ : _) -> fromMaybe w $ do i <- itm ^? itLocation . ilInvID - return $ - w - & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i - . itParams - . unfiredBarrels - %~ tail + return $ w & crinvset . ix i . itParams . unfiredBarrels %~ tail _ -> w HELD ALTERIFLE -> fromMaybe w $ do i <- t ^? dtValue . _1 . itLocation . ilInvID return $ - w - & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i - . itParams - . alteRifleSwitch - -- . itUse - -- . heldMuzzles - -- . ix 0 - -- . mzAmmoSlot - %~ ((`mod` 2) . (+ 1)) + w & crinvset . ix i . itParams . alteRifleSwitch %~ ((`mod` 2) . (+ 1)) _ -> w where + crinvset = cWorld . lWorld . creatures . ix (_crID cr) . crInv itm = t ^. dtValue . _1 ---doHeldUseEffect t cr w = case t ^? ldtValue . itUse . heldUseEffect of --- Just (RandomiseMuzzleFrames x) -> fromMaybe w $ do --- i <- t ^? ldtValue . itLocation . ilInvID --- let g = w ^. randGen --- (is, g') = runState (shuffle [0 .. x -1]) g --- return $ --- w & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i . itUse . heldMuzzles %~ zipWith (\j mz -> mz & mzFrame .~ j) is --- & randGen .~ g' --- Just SwitchAlteRifle -> fromMaybe w $ do --- i <- t ^? ldtValue . itLocation . ilInvID --- return $ --- w --- & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i --- . itUse --- . heldMuzzles --- . ix 0 --- . mzAmmoSlot --- %~ ((`mod` 2) . (+ 1)) --- Just NoHeldUseEffect -> w --- Nothing -> w - ----- need to be careful about inventory lock or item ids here ---doWeaponRepetitions :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World ---doWeaponRepetitions itm cr = case itm ^? ldtValue . itUse . heldParams . weaponRepeat of --- Just xs -> cWorld . lWorld . delayedEvents .++~ map f xs --- _ -> id --- where --- f x = (x, WdWdFromItCrixWdWd (upitm x) (_crID cr) ItCrWdItemHeldEffect) --- upitm x = --- itm & ldtValue . itUse . heldParams . weaponRepeat .~ [] --- & ldtValue . itUse . heldFrame .~ x - -- should probably unify failure with time use check in some way... applyCME :: LocationDT OItem -> Creature -> Bool -> World -> World applyCME loc cr cme @@ -461,8 +419,7 @@ applyInvLock :: Item -> Creature -> World -> World applyInvLock itm cr = case itemInvLock itm of i | i > 0 && cid == 0 -> - (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv)) - . lockInv + (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv)) . lockInv _ -> id where cid = _crID cr @@ -662,10 +619,7 @@ heldTorqueAmount = \case BLINKER -> 0 BLINKERUNSAFE -> 0 -loadMuzzle :: - DTree OItem -> - Muzzle -> - (DTree OItem, Maybe (Muzzle, Int, DTree OItem)) +loadMuzzle :: DTree OItem -> Muzzle -> (DTree OItem, Maybe (Muzzle, Int, DTree OItem)) loadMuzzle t@(DT _ l _) mz = fromMaybe (t, Nothing) $ do let as = _mzAmmoSlot mz amamount = _mzAmmoPerShot mz @@ -749,8 +703,10 @@ basicMuzFlare pos dir = . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir isAmmoIntLink :: Int -> ItemSF -> Bool -isAmmoIntLink i (AmmoMagSF j _) = i == j -isAmmoIntLink _ _ = False +isAmmoIntLink i sf = Just i == sf ^? amsfLink + +-- (AmmoMagSF j _) = i == j +--isAmmoIntLink _ _ = False useLoadedAmmo :: LocationDT OItem -> @@ -850,18 +806,11 @@ tractorBeamAt pos outpos dir power = TractorBeam { _tbPos = pos , _tbStartPos = outpos - , _tbVel = d + , _tbVel = unitVectorAtAngle dir * power , _tbTime = 10 } - where - d = unitVectorAtAngle dir * power -creatureShootLaser :: - LocationDT OItem -> - Creature -> - Muzzle -> - World -> - World +creatureShootLaser :: LocationDT OItem -> Creature -> Muzzle -> World -> World creatureShootLaser loc cr mz w = w & randGen .~ g @@ -1125,14 +1074,12 @@ useGasParams mmagid mz loc cr w = (V3 x y _, q) = locOrient loc cr `Q.comp` ((_mzPos mz + V2 0 offset) `v2z` 0, Q.axisAngle (V3 0 0 1) (_mzRot mz)) - -- (moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz) pos = _crPos cr + rotateV (_crDir cr) (V2 x y) (a, g') = randomR (- inacc, inacc) g inacc = _mzInaccuracy mz offset = case mz ^. mzRandomOffset of 0 -> 0 i -> fst . randomR (- i, i) $ _randGen w - -- dir = _crDir cr + mrot + a + _nzAngle (_itParams itm) dir = _crDir cr + Q.qToAng q + a + _nzAngle (_itParams itm) gasType :: HeldItemType -> GasFuel -> Maybe GasCreate @@ -1192,14 +1139,11 @@ mcShootLaser _ mc = mcShootAuto :: Item -> Machine -> World -> World mcShootAuto itm mc w - | Just (AutoTrigger rate) <- baseItemTriggerType <$> mc ^? mcType . mctTurret . tuWeapon -- . itUse . heldDelay + | Just (AutoTrigger rate) <- baseItemTriggerType <$> mc ^? mcType . mctTurret . tuWeapon , w ^. cWorld . lWorld . lClock - rate > lastused = w & cWorld . lWorld . machines . ix (_mcID mc) . mcType . mctTurret . tuWeapon . itTimeLastUsed - -- . itUse - -- . heldDelay - -- . rateTimeLastUsed .~ w ^. cWorld . lWorld . lClock & makeBullet defaultBullet itm pos dir | otherwise = w @@ -1214,8 +1158,6 @@ shootTeslaArc loc cr mz w = w' & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itParams .~ ip & soundContinue (CrWeaponSound (_crID cr) 0) pos elecCrackleS (Just 2) where - -- use items item location instead - -- itRef = cr ^?! crManipulation . manObject . imRootSelectedItem -- unsafe!! TODO change itm = loc ^. locDT . dtValue . _1 invid = itm ^?! itLocation . ilInvID (w', ip) = makeTeslaArc (itm ^. itParams) pos dir w @@ -1230,8 +1172,7 @@ shootTeslaArc loc cr mz w = determineProjectileTracking :: DTree OItem -> DTree OItem -> RocketHoming determineProjectileTracking magtree itmtree = - fromMaybe NoHoming $ - finddronecontrols <|> findexternaltracking + fromMaybe NoHoming $ finddronecontrols <|> findexternaltracking where finddronecontrols = do screen <- find isremscreen (magtree ^. dtLeft) @@ -1448,15 +1389,11 @@ useInventoryPath pt i ip loc cr w = case ip of RELCURS -> fromMaybe w $ do j <- cr ^? crManipulation . manObject . imSelectedItem guard $ (i + j) `IM.member` (cr ^. crInv) - return $ - w - & cWorld . lWorld . delayedEvents .:~ (1, UseInvItem (i + j) pt) + return $ w & cWorld . lWorld . delayedEvents .:~ (1, UseInvItem (i + j) pt) RELITEM -> fromMaybe w $ do j <- loc ^? locDT . dtValue . _1 . itLocation . ilInvID guard $ (i + j) `IM.member` (cr ^. crInv) - return $ - w - & cWorld . lWorld . delayedEvents .:~ (1, UseInvItem (i + j) pt) + return $ w & cWorld . lWorld . delayedEvents .:~ (1, UseInvItem (i + j) pt) --useRewindGun _ _ w = case w ^. cwTime . rewindWorlds of -- [w'] -> w & cwTime . maybeWorld .~ Just' w' diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 36f7f6dcf..7883e0949 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -106,7 +106,7 @@ extraWeaponLinksBelow itm | otherwise = [] getAmmoLinks :: Item -> [ItemSF] -getAmmoLinks itm = map (uncurry AmmoMagSF) (IM.toList $ itemAmmoSlots itm) +getAmmoLinks = map (uncurry AmmoMagSF) . IM.toList . itemAmmoSlots itemToFunction :: Item -> ItemSF itemToFunction itm = case itm ^. itType of diff --git a/tags b/tags index dd2a945ce..9530b9ceb 100644 --- a/tags +++ b/tags @@ -29,7 +29,7 @@ APNothing src/Dodge/Data/Item/Use.hs 48;" C APProjectiles src/Dodge/Data/Item/Use.hs 46;" C AQUAMARINE src/Color/Data.hs 24;" C ARHUD src/Dodge/Data/Item/Combine.hs 35;" C -ARHUDSF src/Dodge/Data/ComposedItem.hs 48;" C +ARHUDSF src/Dodge/Data/ComposedItem.hs 21;" C ATTACH src/Dodge/Data/Item/Combine.hs 20;" C AUTOAMR src/Dodge/Data/Item/Combine.hs 159;" C AUTOPISTOL src/Dodge/Data/Item/Combine.hs 145;" C @@ -57,15 +57,15 @@ AlteRifleSwitch src/Dodge/Data/Item/Params.hs 20;" C Ambush src/Dodge/Data/ActionPlan.hs 178;" C Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 3;" m Ammo src/Dodge/Item/Ammo.hs 1;" m -AmmoEffectSF src/Dodge/Data/ComposedItem.hs 58;" C -AmmoMagSF src/Dodge/Data/ComposedItem.hs 49;" C +AmmoEffectSF src/Dodge/Data/ComposedItem.hs 31;" C +AmmoMagSF src/Dodge/Data/ComposedItem.hs 22;" C AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t -AmmoModifierSF src/Dodge/Data/ComposedItem.hs 55;" C +AmmoModifierSF src/Dodge/Data/ComposedItem.hs 28;" C AmmoParams src/Dodge/Data/Item/Use.hs 51;" t -AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 57;" C +AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 30;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m -AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 56;" C +AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 29;" C AmmoType src/Dodge/Data/AmmoType.hs 3;" m AnRoom src/Dodge/Annotation/Data.hs 18;" C AnTree src/Dodge/Annotation/Data.hs 19;" C @@ -244,7 +244,7 @@ CHARTREUSE src/Color/Data.hs 25;" C CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 111;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C -CItem src/Dodge/Data/ComposedItem.hs 68;" t +CItem src/Dodge/Data/ComposedItem.hs 41;" t CLICKER src/Dodge/Data/Item/Combine.hs 28;" C CME src/Dodge/Data/MuzzleEffect.hs 14;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C @@ -333,7 +333,7 @@ CombineInventoryChange src/Dodge/Data/World.hs 32;" C Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m Compose src/Dodge/Tree/Compose.hs 4;" m -ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m +ComposedItem src/Dodge/Data/ComposedItem.hs 3;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C Concurrent src/Dodge/Concurrent.hs 1;" m @@ -434,7 +434,7 @@ DRUMMAG src/Dodge/Data/Item/Combine.hs 107;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 31;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 21;" C -DTComb src/Dodge/Item/Grammar.hs 196;" t +DTComb src/Dodge/Item/Grammar.hs 159;" t DTMidAboveNode src/Dodge/Data/DoubleTree.hs 19;" C DTMidBelowNode src/Dodge/Data/DoubleTree.hs 20;" C DTRootNode src/Dodge/Data/DoubleTree.hs 17;" C @@ -623,7 +623,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 42;" C +EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 15;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t Essential src/Shape/Data.hs 34;" C @@ -722,7 +722,7 @@ FullRes src/Dodge/Data/Config.hs 97;" C FullShadowFidelity src/Shape/Data.hs 24;" C FullSize src/Dodge/Data/Item/Params.hs 28;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C -FunctionChangeSF src/Dodge/Data/ComposedItem.hs 59;" C +FunctionChangeSF src/Dodge/Data/ComposedItem.hs 32;" C GBounce src/Dodge/Data/Projectile.hs 57;" C GEqC src/SameConstr.hs 20;" c GIMBAL src/Dodge/Data/Item/Combine.hs 96;" C @@ -735,7 +735,7 @@ GStick src/Dodge/Data/Projectile.hs 58;" C GStuckCreature src/Dodge/Data/Projectile.hs 59;" C GStuckWall src/Dodge/Data/Projectile.hs 60;" C GYROSCOPE src/Dodge/Data/Item/Combine.hs 97;" C -GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 43;" C +GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 16;" C GameOverOptions src/Dodge/Data/Universe.hs 72;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m @@ -780,7 +780,7 @@ GraphHelp src/GraphHelp.hs 1;" m GraphVizHelp src/GraphVizHelp.hs 2;" m Grenade src/Dodge/Data/Projectile.hs 42;" C GrenadeHitEffect src/Dodge/Data/Projectile.hs 56;" t -GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 62;" C +GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 35;" C Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m @@ -815,7 +815,7 @@ Held src/Dodge/Item/Held.hs 1;" m HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t HeldOffset src/Dodge/Item/HeldOffset.hs 3;" m -HeldPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C +HeldPlatformSF src/Dodge/Data/ComposedItem.hs 12;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/HeldUse.hs 5;" m @@ -903,7 +903,7 @@ Intention src/Dodge/Data/Creature.hs 66;" 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 46;" C +IntroScanSF src/Dodge/Data/ComposedItem.hs 19;" C IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t InvInt src/Dodge/Data/Item/Location.hs 19;" t InvSize src/Dodge/Item/InvSize.hs 2;" m @@ -936,18 +936,17 @@ ItemCancelExamineInventory src/Dodge/Data/Item/Effect.hs 31;" C ItemClust src/Dodge/Combine/Graph.hs 21;" C ItemCopierUpdate src/Dodge/Data/Item/Effect.hs 32;" C ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t -ItemLink src/Dodge/Data/ComposedItem.hs 14;" t ItemLocation src/Dodge/Data/Item/Location.hs 28;" t ItemParamID src/Dodge/Data/Item/Params.hs 26;" C ItemParams src/Dodge/Data/Item/Params.hs 14;" t ItemParams src/Dodge/Tesla/ItemParams.hs 1;" m ItemReduceWarmTime src/Dodge/Data/Item/Effect.hs 33;" C +ItemSF src/Dodge/Data/ComposedItem.hs 10;" t ItemScroll src/Dodge/Data/Item.hs 51;" t ItemScrollInt src/Dodge/Data/Item.hs 53;" C ItemScrollIntRange src/Dodge/Data/Item.hs 54;" C ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C ItemSetWarmTime src/Dodge/Data/Item/Effect.hs 34;" C -ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 37;" t ItemTargeting src/Dodge/Data/Item.hs 56;" t ItemType src/Dodge/Data/Item/Combine.hs 16;" t ItemUse src/Dodge/Data/Item/Use.hs 30;" t @@ -961,7 +960,7 @@ JGK src/Control/Foldl/JGK.hs 1;" m JOYSTICK src/Dodge/Data/Item/Combine.hs 95;" C JUMPLEGS src/Dodge/Data/Item/Combine.hs 130;" C JoinClust src/Dodge/Combine/Graph.hs 22;" C -JoystickSF src/Dodge/Data/ComposedItem.hs 51;" C +JoystickSF src/Dodge/Data/ComposedItem.hs 24;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 24;" C Justify src/Justify.hs 1;" m @@ -1003,7 +1002,7 @@ Laser src/Dodge/Data/Laser.hs 6;" m LaserPath src/Dodge/Item/Weapon/LaserPath.hs 1;" m LaserSensor src/Dodge/Data/Machine/Sensor/Type.hs 11;" C LaserType src/Dodge/Data/Laser.hs 16;" t -LaserWeaponSF src/Dodge/Data/ComposedItem.hs 65;" C +LaserWeaponSF src/Dodge/Data/ComposedItem.hs 38;" C Lasering src/Dodge/Data/Damage.hs 26;" C Launcher src/Dodge/Item/Held/Launcher.hs 1;" m LauncherAI src/Dodge/Data/Creature/Misc.hs 45;" C @@ -1121,7 +1120,7 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m Make src/Dodge/Corpse/Make.hs 1;" m -MakeAutoSF src/Dodge/Data/ComposedItem.hs 60;" C +MakeAutoSF src/Dodge/Data/ComposedItem.hs 33;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 29;" C MakeTempLight src/Dodge/Data/WorldEffect.hs 33;" C @@ -1129,7 +1128,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 64;" C +MapperSF src/Dodge/Data/ComposedItem.hs 37;" C Mass src/Dodge/Creature/Mass.hs 2;" m Material src/Dodge/Data/Material.hs 11;" t Material src/Dodge/Creature/Material.hs 3;" m @@ -1278,7 +1277,7 @@ NoParams src/Dodge/Data/Item/Params.hs 15;" 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 54;" C +NoSF src/Dodge/Data/ComposedItem.hs 27;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C NoSubInventory src/Dodge/Data/HUD.hs 29;" C @@ -1325,7 +1324,7 @@ NumShadowCasters6 src/Dodge/Data/Config.hs 21;" C NumShadowCasters7 src/Dodge/Data/Config.hs 22;" C NumShadowCasters8 src/Dodge/Data/Config.hs 23;" C NumShadowCasters9 src/Dodge/Data/Config.hs 24;" C -OItem src/Dodge/Data/ComposedItem.hs 70;" t +OItem src/Dodge/Data/ComposedItem.hs 43;" t ORANGE src/Color/Data.hs 26;" C ObButton src/Dodge/Data/ObjectType.hs 17;" C ObCreature src/Dodge/Data/ObjectType.hs 13;" C @@ -1493,7 +1492,7 @@ 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 53;" C -ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 61;" C +ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 34;" C ProjectileType src/Dodge/Data/Projectile.hs 41;" t ProjectileUpdate src/Dodge/Data/Projectile.hs 35;" t Prop src/Dodge/Data/Prop.hs 18;" t @@ -1602,9 +1601,9 @@ ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C Religion src/Dodge/Data/Scenario.hs 47;" C Reload src/Dodge/Data/ActionPlan.hs 190;" C ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t -RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 52;" C +RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 25;" C RemoteDirectionPU src/Dodge/Data/Projectile.hs 38;" C -RemoteScreenSF src/Dodge/Data/ComposedItem.hs 50;" C +RemoteScreenSF src/Dodge/Data/ComposedItem.hs 23;" 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 @@ -1664,7 +1663,6 @@ RoundedFaces src/Shape/Data.hs 18;" C RunPast src/Dodge/Room/RunPast.hs 1;" m RunningSideEffect src/Dodge/Data/Universe.hs 69;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C -SFLink src/Dodge/Data/ComposedItem.hs 34;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C @@ -1791,7 +1789,7 @@ SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C Small src/Shape/Data.hs 31;" C Smoke src/Dodge/Data/Cloud.hs 23;" C -SmokeReducerSF src/Dodge/Data/ComposedItem.hs 53;" C +SmokeReducerSF src/Dodge/Data/ComposedItem.hs 26;" C SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C @@ -1991,7 +1989,7 @@ ToStop src/Sound/Data.hs 28;" C Toggle src/Dodge/Data/Universe.hs 103;" C Toggle2 src/Dodge/Data/Universe.hs 107;" C ToggleExamine src/Dodge/ToggleExamine.hs 1;" m -ToggleSF src/Dodge/Data/ComposedItem.hs 63;" C +ToggleSF src/Dodge/Data/ComposedItem.hs 36;" C TopDT src/Dodge/Data/DoubleTree.hs 85;" C TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C @@ -2009,7 +2007,7 @@ TreeHelp src/TreeHelp.hs 12;" m Triangulate src/Geometry/Triangulate.hs 3;" m Trie src/SimpleTrie.hs 9;" t TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m -TriggerSF src/Dodge/Data/ComposedItem.hs 47;" C +TriggerSF src/Dodge/Data/ComposedItem.hs 20;" C TriggerType src/Dodge/Data/TriggerType.hs 10;" t TriggerType src/Dodge/Data/TriggerType.hs 4;" m TriggerType src/Dodge/Item/TriggerType.hs 1;" m @@ -2035,8 +2033,8 @@ Type src/Dodge/Terminal/Type.hs 1;" m Typical src/Shape/Data.hs 36;" C UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C UNIGATE src/Dodge/Data/Item/Combine.hs 31;" C -UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C -UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 40;" C +UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 14;" C +UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 13;" 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 @@ -2044,7 +2042,7 @@ UniRandFloat src/Dodge/Data/GenFloat.hs 12;" C Unimportant src/Shape/Data.hs 37;" C Universe src/Dodge/Data/Universe.hs 31;" t Universe src/Dodge/Data/Universe.hs 6;" m -UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 38;" C +UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 11;" C UnlockInv src/Dodge/Data/WorldEffect.hs 27;" C UnusedLink src/Dodge/Data/Room.hs 65;" C Update src/Dodge/Config/Update.hs 4;" m @@ -2181,8 +2179,8 @@ WdWdBurstFireRepetition src/Dodge/Data/WorldEffect.hs 35;" C WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 31;" C WdYouPos src/Dodge/Data/WorldEffect.hs 41;" C Weapon src/Dodge/Item/Weapon.hs 2;" m -WeaponScopeSF src/Dodge/Data/ComposedItem.hs 44;" C -WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 45;" C +WeaponScopeSF src/Dodge/Data/ComposedItem.hs 17;" C +WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 18;" 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 @@ -3022,7 +3020,6 @@ _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 34;" f _sfShadowImportance src/Shape/Data.hs 45;" f _sfSize src/Shape/Data.hs 46;" f _sfType src/Shape/Data.hs 42;" f @@ -3352,7 +3349,7 @@ allVisibleWalls src/Dodge/Base/Collide.hs 132;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f ammoMagInfo src/Dodge/Item/Info.hs 48;" f -ammoMagSPic src/Dodge/Item/Draw/SPic.hs 123;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 150;" f amr src/Dodge/Item/Held/Rod.hs 34;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 77;" f @@ -3363,21 +3360,21 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 247;" f -applyCME src/Dodge/HeldUse.hs 395;" f +applyCME src/Dodge/HeldUse.hs 351;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 13;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f -applyInvLock src/Dodge/HeldUse.hs 462;" f +applyInvLock src/Dodge/HeldUse.hs 418;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f applyPastDamages src/Dodge/Creature/State.hs 132;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f -applyRecoil src/Dodge/HeldUse.hs 494;" f +applyRecoil src/Dodge/HeldUse.hs 448;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 596;" f -applySoundCME src/Dodge/HeldUse.hs 484;" f +applySidePush src/Dodge/HeldUse.hs 550;" f +applySoundCME src/Dodge/HeldUse.hs 438;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -3385,7 +3382,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 607;" f +applyTorqueCME src/Dodge/HeldUse.hs 561;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -3435,10 +3432,10 @@ 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 27;" f -backpackShape src/Dodge/Item/Draw/SPic.hs 176;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 205;" 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 291;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 321;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 507;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 655;" f @@ -3446,20 +3443,20 @@ bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f barrelShape src/Dodge/Render/ShapePicture.hs 46;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 405;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 435;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f -baseCI src/Dodge/Item/Grammar.hs 193;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f +baseCI src/Dodge/Item/Grammar.hs 156;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 341;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f baseItemTriggerType src/Dodge/BaseTriggerType.hs 18;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 314;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 402;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 382;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 344;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 432;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 412;" f baseShoulder src/Dodge/Creature/Picture.hs 125;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 288;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 281;" f -baseStickSpread src/Dodge/HeldUse.hs 290;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 318;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 310;" f +baseStickSpread src/Dodge/HeldUse.hs 293;" f baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 38;" f @@ -3469,7 +3466,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 746;" f +basicMuzFlare src/Dodge/HeldUse.hs 697;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 62;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f @@ -3478,7 +3475,7 @@ beltMag src/Dodge/Item/Ammo.hs 38;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f -bgunSound src/Dodge/HeldUse.hs 550;" f +bgunSound src/Dodge/HeldUse.hs 504;" f bindFBO src/Render.hs 244;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -3560,7 +3557,7 @@ cardList src/Dodge/Base/CardinalPoint.hs 6;" f cardVec src/Dodge/Base/CardinalPoint.hs 9;" f cardinalVectors src/Dodge/FloorItem.hs 43;" f cartePosToScreen src/Dodge/Base/Coordinate.hs 37;" f -cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f +cdtPropagateFold src/Dodge/DoubleTree.hs 406;" f cenLasTur src/Dodge/Room/LasTurret.hs 24;" f centerText src/Picture/Base.hs 184;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f @@ -3621,7 +3618,7 @@ clampPath src/Dodge/Room/Procedural.hs 166;" f clang1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 549;" f clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f -cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f +cldtPropagateFold src/Dodge/DoubleTree.hs 357;" f cleanUpPreload src/Preload.hs 10;" f cleanUpRenderPreload src/Preload/Render.hs 217;" f cleanUpSoundPreload src/Preload.hs 15;" f @@ -3638,7 +3635,7 @@ clockCycle src/Dodge/Clock.hs 9;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 220;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 205;" f closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 240;" f -closeObjectInfo src/Dodge/Render/HUD.hs 224;" 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 @@ -3670,7 +3667,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 44;" f combineAwareness src/Dodge/Creature/Perception.hs 110;" f combineFloors src/Dodge/Room/Procedural.hs 172;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 340;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 339;" f combineItemListYouX src/Dodge/Combine.hs 36;" f combineList src/Dodge/Combine.hs 22;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f @@ -3768,14 +3765,14 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 1317;" f -createProjectileR src/Dodge/HeldUse.hs 1266;" f +createProjectile src/Dodge/HeldUse.hs 1265;" f +createProjectileR src/Dodge/HeldUse.hs 1214;" f createShell src/Dodge/Projectile/Create.hs 22;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 11;" f -creatureShootLaser src/Dodge/HeldUse.hs 864;" f +creatureShootLaser src/Dodge/HeldUse.hs 812;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f @@ -3846,7 +3843,7 @@ dark src/Color.hs 108;" f darkenBackground src/Dodge/Render/MenuScreen.hs 52;" f dbArg src/Dodge/Base.hs 165;" f dbArgChain src/Dodge/Base.hs 170;" f -dbwMuzzles src/Dodge/HeldUse.hs 293;" f +dbwMuzzles src/Dodge/HeldUse.hs 296;" f deZoneIX src/Dodge/Zoning/Base.hs 89;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f deadEndRoom src/Dodge/Room/Room.hs 235;" f @@ -3881,7 +3878,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 615;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 435;" f defDamageMaterial src/Dodge/Material/Damage.hs 22;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 297;" f +defSPic src/Dodge/Item/Draw/SPic.hs 327;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f defaultAimingCrit src/Dodge/Default/Creature.hs 105;" f defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f @@ -3961,10 +3958,10 @@ destroyMounts src/Dodge/Block.hs 97;" f destroyProjectile src/Dodge/Projectile/Update.hs 139;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 451;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 482;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 224;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1236;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1184;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 204;" f @@ -4029,9 +4026,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1187;" f +doGenFloat src/Dodge/HeldUse.hs 1135;" f doGravityPU src/Dodge/Projectile/Update.hs 50;" f -doHeldUseEffect src/Dodge/HeldUse.hs 324;" f +doHeldUseEffect src/Dodge/HeldUse.hs 327;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f @@ -4092,7 +4089,7 @@ doubleCorridorBarrels src/Dodge/Room/Room.hs 265;" f doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f -doubleTreeToIndentList src/Dodge/DoubleTree.hs 130;" f +doubleTreeToIndentList src/Dodge/DoubleTree.hs 129;" f doubleV2 src/Geometry.hs 168;" f drawARHUD src/Dodge/Creature/State.hs 285;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f @@ -4108,7 +4105,7 @@ drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 111;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 244;" f -drawCombineInventory src/Dodge/Render/HUD.hs 180;" f +drawCombineInventory src/Dodge/Render/HUD.hs 179;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 68;" f drawCoord src/Dodge/Debug/Picture.hs 359;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f @@ -4130,7 +4127,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 150;" f drawEmptySet src/Dodge/Render/Picture.hs 124;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 136;" f -drawExamineInventory src/Dodge/Render/HUD.hs 196;" f +drawExamineInventory src/Dodge/Render/HUD.hs 195;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 264;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f @@ -4144,8 +4141,8 @@ drawInputMenu src/Dodge/Render/MenuScreen.hs 22;" f drawInspectWall src/Dodge/Debug/Picture.hs 239;" f drawInspectWalls src/Dodge/Debug/Picture.hs 227;" f drawInventory src/Dodge/Render/HUD.hs 56;" f -drawItemChildrenConnect src/Dodge/Render/HUD.hs 327;" f -drawItemConnections src/Dodge/Render/HUD.hs 317;" f +drawItemChildrenConnect src/Dodge/Render/HUD.hs 326;" f +drawItemConnections src/Dodge/Render/HUD.hs 316;" f drawJumpDown src/Dodge/Render/Picture.hs 175;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLampCover src/Dodge/Prop/Draw.hs 47;" f @@ -4177,7 +4174,7 @@ drawPlus src/Dodge/Render/Picture.hs 144;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 18;" f -drawRBOptions src/Dodge/Render/HUD.hs 250;" 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 131;" f @@ -4200,7 +4197,7 @@ drawSubInventory src/Dodge/Render/HUD.hs 161;" f drawSwitch src/Dodge/Button/Draw.hs 17;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 364;" 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 @@ -4223,7 +4220,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f dropAll src/Dodge/Creature/State.hs 125;" f dropExcept src/Dodge/Creature/Action.hs 166;" f -dropInventoryPath src/Dodge/HeldUse.hs 1410;" f +dropInventoryPath src/Dodge/HeldUse.hs 1358;" f dropItem src/Dodge/Creature/Action.hs 172;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 33;" f @@ -4232,17 +4229,17 @@ dssNearCirc src/Dodge/Zoning/Cloud.hs 39;" f dssNearPoint src/Dodge/Zoning/Cloud.hs 30;" f dssNearRect src/Dodge/Zoning/Cloud.hs 36;" f dssNearSeg src/Dodge/Zoning/Cloud.hs 33;" f -dtIL src/Dodge/DoubleTree.hs 133;" f -dtPropagate' src/Dodge/DoubleTree.hs 46;" f +dtIL src/Dodge/DoubleTree.hs 132;" f +dtPropagate' src/Dodge/DoubleTree.hs 45;" f dtStartPropagate src/Dodge/DoubleTree.hs 38;" f -dtToAdjRootParent src/Dodge/DoubleTree.hs 196;" f -dtToAdjRootParentEither src/Dodge/DoubleTree.hs 204;" f -dtToAdjacency src/Dodge/DoubleTree.hs 141;" f -dtToIntMapWithRoot src/Dodge/DoubleTree.hs 149;" f -dtToLRAdj src/Dodge/DoubleTree.hs 169;" f -dtToLRAdjEither src/Dodge/DoubleTree.hs 181;" f -dtToRootIntMap' src/Dodge/DoubleTree.hs 154;" f -dtToUpDownAdj src/Dodge/DoubleTree.hs 159;" f +dtToAdjRootParent src/Dodge/DoubleTree.hs 195;" f +dtToAdjRootParentEither src/Dodge/DoubleTree.hs 203;" f +dtToAdjacency src/Dodge/DoubleTree.hs 140;" f +dtToIntMapWithRoot src/Dodge/DoubleTree.hs 148;" f +dtToLRAdj src/Dodge/DoubleTree.hs 168;" f +dtToLRAdjEither src/Dodge/DoubleTree.hs 180;" f +dtToRootIntMap' src/Dodge/DoubleTree.hs 153;" f +dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 74;" f dustColor src/Shader/Poke/Cloud.hs 71;" f dustSpringVel src/Dodge/Update.hs 796;" f @@ -4275,11 +4272,11 @@ epText src/Dodge/Inventory/SelectionList.hs 76;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f -equipAllocString src/Dodge/Render/HUD.hs 308;" f +equipAllocString src/Dodge/Render/HUD.hs 307;" f equipAttachPos src/Dodge/Item/Draw.hs 32;" f equipBackgroundEffect src/Dodge/Euse.hs 15;" f equipInfo src/Dodge/Item/Info.hs 140;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 147;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 176;" f equipPosition src/Dodge/Item/Draw.hs 40;" f equipSiteInfo src/Dodge/Item/Info.hs 253;" f equipType src/Dodge/Data/EquipType.hs 10;" f @@ -4307,8 +4304,8 @@ extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extraPics src/Dodge/Render/ShapePicture.hs 73;" f -extraWeaponLinks src/Dodge/Item/Grammar.hs 125;" f -extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 134;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 94;" f +extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 103;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4340,19 +4337,19 @@ firstWorldLoad appDodge/Main.hs 77;" f fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f flFlicker src/Dodge/Flame.hs 38;" f -flameMuzzles src/Dodge/HeldUse.hs 296;" f +flameMuzzles src/Dodge/HeldUse.hs 299;" f flameShield src/Dodge/Item/Equipment.hs 33;" f flameSize src/Dodge/Flame/Size.hs 5;" f flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 48;" f -flamerPic src/Dodge/Item/Draw/SPic.hs 385;" f -flareCircleAt src/Dodge/HeldUse.hs 727;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 415;" f +flareCircleAt src/Dodge/HeldUse.hs 678;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 39;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 438;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 469;" 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 @@ -4367,7 +4364,7 @@ flockPointTarget src/Dodge/Creature/Boid.hs 200;" f flockPointTargetR src/Dodge/Creature/Boid.hs 267;" f flockToPointUsing src/Dodge/Creature/Boid.hs 215;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 228;" f -floorItemPickupInfo src/Dodge/Render/HUD.hs 229;" f +floorItemPickupInfo src/Dodge/Render/HUD.hs 228;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 99;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 547;" f @@ -4387,7 +4384,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 53;" f -fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 136;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 164;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 491;" f @@ -4415,7 +4412,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 134;" f gameplayMenuOptions src/Dodge/Menu.hs 137;" f -gasType src/Dodge/HeldUse.hs 1143;" f +gasType src/Dodge/HeldUse.hs 1091;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4427,14 +4424,14 @@ geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 135;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 141;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 108;" f getArguments src/Dodge/Update/Scroll.hs 178;" f getArguments' src/Dodge/Update/Scroll.hs 166;" f -getAttachedSFLink src/Dodge/HeldUse.hs 799;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 120;" f +getAttachedSFLink src/Dodge/HeldUse.hs 750;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 89;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 171;" f -getBulletType src/Dodge/HeldUse.hs 927;" f +getBulletType src/Dodge/HeldUse.hs 875;" f getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -4442,17 +4439,17 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 411;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1305;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1253;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 144;" f -getLaserColor src/Dodge/HeldUse.hs 743;" f -getLaserDamage src/Dodge/HeldUse.hs 740;" f -getLaserPhaseV src/Dodge/HeldUse.hs 737;" f +getLaserColor src/Dodge/HeldUse.hs 694;" f +getLaserDamage src/Dodge/HeldUse.hs 691;" f +getLaserPhaseV src/Dodge/HeldUse.hs 688;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 392;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1292;" f +getPJStabiliser src/Dodge/HeldUse.hs 1240;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 95;" f @@ -4462,7 +4459,7 @@ getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 126;" f getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f -getVolleyBurst src/Dodge/HeldUse.hs 121;" f +getVolleyBurst src/Dodge/HeldUse.hs 124;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f gimbal src/Dodge/Item/Scope.hs 153;" f @@ -4481,7 +4478,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 599;" f glassSwitchBack src/Dodge/Room/Room.hs 70;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f glassWallDamage src/Dodge/Wall/DamageEffect.hs 49;" f -glauncherPic src/Dodge/Item/Draw/SPic.hs 391;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 421;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 138;" f @@ -4512,17 +4509,17 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 38;" f -hammerCheck src/Dodge/HeldUse.hs 63;" f -handHandleOrient src/Dodge/Item/HeldOffset.hs 62;" f -handOrient src/Dodge/Item/HeldOffset.hs 38;" f +hammerCheck src/Dodge/HeldUse.hs 60;" f +handHandleOrient src/Dodge/Item/HeldOffset.hs 61;" f +handOrient src/Dodge/Item/HeldOffset.hs 37;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseWheelEvent src/Dodge/Event/Input.hs 58;" f -handleOrient src/Dodge/Item/HeldOffset.hs 32;" f -handlePos src/Dodge/Item/HeldOffset.hs 84;" f +handleOrient src/Dodge/Item/HeldOffset.hs 31;" f +handlePos src/Dodge/Item/HeldOffset.hs 83;" f handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 18;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f @@ -4535,8 +4532,8 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 219;" f hat src/Dodge/Item/Equipment.hs 76;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 441;" f -headMap src/Dodge/DoubleTree.hs 249;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 472;" f +headMap src/Dodge/DoubleTree.hs 248;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 483;" f @@ -4545,20 +4542,20 @@ healthTest src/Dodge/Room/LasTurret.hs 95;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 23;" f heldAimZoom src/Dodge/Update/Camera.hs 140;" f -heldEffect src/Dodge/HeldUse.hs 60;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 126;" f -heldHandlePos src/Dodge/Item/HeldOffset.hs 89;" f +heldEffect src/Dodge/HeldUse.hs 57;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 129;" f +heldHandlePos src/Dodge/Item/HeldOffset.hs 88;" f heldInfo src/Dodge/Item/Info.hs 90;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f -heldItemInvLock src/Dodge/HeldUse.hs 477;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1024;" f -heldItemMuzzles src/Dodge/HeldUse.hs 155;" f -heldItemRifling src/Dodge/HeldUse.hs 1068;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 223;" f +heldItemInvLock src/Dodge/HeldUse.hs 431;" f +heldItemMuzVel src/Dodge/HeldUse.hs 972;" f +heldItemMuzzles src/Dodge/HeldUse.hs 158;" f +heldItemRifling src/Dodge/HeldUse.hs 1016;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 252;" f heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f -heldTorqueAmount src/Dodge/HeldUse.hs 623;" f +heldTorqueAmount src/Dodge/HeldUse.hs 577;" f heldTriggerType src/Dodge/BaseTriggerType.hs 23;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f @@ -4581,7 +4578,7 @@ humanoidAIList src/Dodge/Humanoid.hs 182;" f iShape src/Dodge/Placement/Instance/LightSource.hs 73;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f -ildtPropagate src/Dodge/DoubleTree.hs 112;" f +ildtPropagate src/Dodge/DoubleTree.hs 111;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 23;" f inLink src/Dodge/RoomLink.hs 113;" f inSegArea src/Geometry/Intersect.hs 298;" f @@ -4646,18 +4643,18 @@ interweave src/Justify.hs 17;" f introScan src/Dodge/Item/Scope.hs 57;" f introScanValue src/Dodge/Inventory/SelectionList.hs 80;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 279;" f +invAdj src/Dodge/Item/Grammar.hs 225;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f -invDT src/Dodge/Item/Grammar.hs 253;" f -invDT' src/Dodge/Item/Grammar.hs 261;" f +invDT src/Dodge/Item/Grammar.hs 202;" f +invDT' src/Dodge/Item/Grammar.hs 207;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f -invHead src/Dodge/Render/HUD.hs 405;" f -invIMDT src/Dodge/Item/Grammar.hs 295;" f -invIndents src/Dodge/Item/Grammar.hs 307;" f +invHead src/Dodge/Render/HUD.hs 404;" f +invIMDT src/Dodge/Item/Grammar.hs 235;" f +invIndents src/Dodge/Item/Grammar.hs 242;" f invItemLocUpdate src/Dodge/Creature/State.hs 153;" f invRootItemEffs src/Dodge/Creature/State.hs 146;" f -invRootMap src/Dodge/Item/Grammar.hs 268;" f +invRootMap src/Dodge/Item/Grammar.hs 214;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f @@ -4674,7 +4671,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 753;" f +isAmmoIntLink src/Dodge/HeldUse.hs 704;" f isAnimate src/Dodge/Creature/Test.hs 144;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f @@ -4711,7 +4708,7 @@ itemBlips src/Dodge/RadarSweep.hs 93;" f itemBulkiness src/Dodge/Creature/YourControl.hs 172;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f -itemDetectorEffect src/Dodge/HeldUse.hs 808;" f +itemDetectorEffect src/Dodge/HeldUse.hs 756;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f itemEquipPict src/Dodge/Item/Draw.hs 19;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f @@ -4723,8 +4720,8 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 34;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 472;" f -itemMuzzles src/Dodge/HeldUse.hs 140;" f +itemInvLock src/Dodge/HeldUse.hs 426;" f +itemMuzzles src/Dodge/HeldUse.hs 143;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f @@ -4732,10 +4729,10 @@ itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 52;" f itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 121;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 148;" f -itemSidePush src/Dodge/HeldUse.hs 418;" f +itemSidePush src/Dodge/HeldUse.hs 374;" f itemString src/Dodge/Item/Display.hs 56;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 64;" f -itemToFunction src/Dodge/Item/Grammar.hs 147;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 36;" f +itemToFunction src/Dodge/Item/Grammar.hs 111;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f itemTriggerType src/Dodge/BaseTriggerType.hs 15;" f itemWeight src/Dodge/Creature/Statistics.hs 66;" f @@ -4747,7 +4744,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 25;" f itmUsageInfo src/Dodge/Item/Info.hs 230;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -joinItemsInList src/Dodge/Item/Grammar.hs 238;" f +joinItemsInList src/Dodge/Item/Grammar.hs 192;" f joystick src/Dodge/Item/Scope.hs 149;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f @@ -4763,7 +4760,7 @@ keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f -keyPic src/Dodge/Item/Draw/SPic.hs 457;" f +keyPic src/Dodge/Item/Draw/SPic.hs 488;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 625;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4775,33 +4772,33 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 51;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f -lasGunPic src/Dodge/Item/Draw/SPic.hs 411;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 441;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f lasTunnel src/Dodge/Room/LasTurret.hs 126;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f laser src/Dodge/Item/Held/BatteryGuns.hs 41;" f -lastMap src/Dodge/DoubleTree.hs 253;" f +lastMap src/Dodge/DoubleTree.hs 252;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 74;" f -ldtIL src/Dodge/DoubleTree.hs 225;" f -ldtPropagate src/Dodge/DoubleTree.hs 70;" f -ldtPropagate' src/Dodge/DoubleTree.hs 61;" f -ldtPropagateFold src/Dodge/DoubleTree.hs 82;" f -ldtPropagateFoldTree src/Dodge/DoubleTree.hs 99;" f -ldtPropagateIndices src/Dodge/DoubleTree.hs 122;" f -ldtStartPropagate src/Dodge/DoubleTree.hs 53;" f +ldtIL src/Dodge/DoubleTree.hs 224;" f +ldtPropagate src/Dodge/DoubleTree.hs 69;" f +ldtPropagate' src/Dodge/DoubleTree.hs 60;" f +ldtPropagateFold src/Dodge/DoubleTree.hs 81;" f +ldtPropagateFoldTree src/Dodge/DoubleTree.hs 98;" f +ldtPropagateIndices src/Dodge/DoubleTree.hs 121;" f +ldtStartPropagate src/Dodge/DoubleTree.hs 52;" f ldtToDT src/Dodge/DoubleTree.hs 16;" f -ldtToIM src/Dodge/DoubleTree.hs 219;" f -ldtToIndentList src/Dodge/DoubleTree.hs 222;" f -ldtToLoc src/Dodge/DoubleTree.hs 268;" f +ldtToIM src/Dodge/DoubleTree.hs 218;" f +ldtToIndentList src/Dodge/DoubleTree.hs 221;" f +ldtToLoc src/Dodge/DoubleTree.hs 267;" f left src/DoubleStack.hs 16;" f -leftChildList src/Dodge/Item/Grammar.hs 212;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 198;" f +leftChildList src/Dodge/Item/Grammar.hs 171;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 161;" f leftPad src/Padding.hs 15;" f -leftRightCombine src/Dodge/Item/Grammar.hs 224;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 475;" f +leftRightCombine src/Dodge/Item/Grammar.hs 183;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 506;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f @@ -4830,11 +4827,11 @@ listSelectionColorPicture src/Dodge/DisplayInventory.hs 308;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 394;" 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 30;" f -loadMuzzle src/Dodge/HeldUse.hs 667;" f +loadMuzzle src/Dodge/HeldUse.hs 621;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4842,22 +4839,21 @@ loadSounds src/Dodge/SoundLogic/LoadSound.hs 18;" f loadingScreen src/Dodge/Concurrent.hs 56;" f loadingScreen src/Dodge/Menu/Loading.hs 8;" f loadme src/Dodge/Debug/Terminal.hs 139;" f -locDTGoHelp src/Dodge/DoubleTree.hs 348;" f -locDTGoLeft src/Dodge/DoubleTree.hs 329;" f -locDTGoRight src/Dodge/DoubleTree.hs 334;" f -locDTLeftmost src/Dodge/DoubleTree.hs 312;" f -locDTRightmost src/Dodge/DoubleTree.hs 315;" f -locGoHelp src/Dodge/DoubleTree.hs 340;" f -locGoLeft src/Dodge/DoubleTree.hs 319;" f -locGoRight src/Dodge/DoubleTree.hs 324;" f +locDTGoHelp src/Dodge/DoubleTree.hs 347;" f +locDTGoLeft src/Dodge/DoubleTree.hs 328;" f +locDTGoRight src/Dodge/DoubleTree.hs 333;" f +locDTLeftmost src/Dodge/DoubleTree.hs 311;" f +locDTRightmost src/Dodge/DoubleTree.hs 314;" f +locGoHelp src/Dodge/DoubleTree.hs 339;" f +locGoLeft src/Dodge/DoubleTree.hs 318;" f +locGoRight src/Dodge/DoubleTree.hs 323;" f locLDTToLocDT src/Dodge/DoubleTree.hs 19;" f -locLeftmost src/Dodge/DoubleTree.hs 306;" f -locOrient src/Dodge/Item/HeldOffset.hs 57;" f -locRightmost src/Dodge/DoubleTree.hs 309;" f -locToTop src/Dodge/DoubleTree.hs 285;" f -locToTop' src/Dodge/DoubleTree.hs 301;" f -locUp src/Dodge/DoubleTree.hs 272;" f -locUp' src/Dodge/DoubleTree.hs 288;" f +locLeftmost src/Dodge/DoubleTree.hs 305;" f +locOrient src/Dodge/Item/HeldOffset.hs 56;" f +locRightmost src/Dodge/DoubleTree.hs 308;" f +locToTop src/Dodge/DoubleTree.hs 300;" f +locUp src/Dodge/DoubleTree.hs 271;" f +locUp' src/Dodge/DoubleTree.hs 287;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 50;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f @@ -4886,7 +4882,7 @@ machineAddSound src/Dodge/Machine.hs 49;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f -magAmmoParams src/Dodge/HeldUse.hs 948;" f +magAmmoParams src/Dodge/HeldUse.hs 896;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 171;" f @@ -4901,7 +4897,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 1005;" f +makeBullet src/Dodge/HeldUse.hs 953;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4927,7 +4923,7 @@ makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 35;" f makeMovingEB src/Dodge/EnergyBall.hs 74;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 687;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 638;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4982,11 +4978,11 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f mcSPic src/Dodge/Render/ShapePicture.hs 111;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f -mcShootAuto src/Dodge/HeldUse.hs 1198;" f -mcShootLaser src/Dodge/HeldUse.hs 1191;" f +mcShootAuto src/Dodge/HeldUse.hs 1146;" f +mcShootLaser src/Dodge/HeldUse.hs 1139;" f mcTriggerVal src/Dodge/Machine/Update.hs 99;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f -mcUseHeld src/Dodge/HeldUse.hs 1112;" f +mcUseHeld src/Dodge/HeldUse.hs 1060;" f mcUseItem src/Dodge/Machine/Update.hs 85;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 54;" f @@ -5028,8 +5024,8 @@ minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 443;" f miniGunCrit src/Dodge/Creature.hs 64;" f miniGunX src/Dodge/Item/Held/Cane.hs 33;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 363;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 357;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 393;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 387;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 701;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 14;" f @@ -5079,7 +5075,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 713;" f +muzFlareAt src/Dodge/HeldUse.hs 664;" 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 @@ -5155,9 +5151,9 @@ orderAroundFirst src/Geometry/Polygon.hs 82;" f orderAroundFirstReverse src/Geometry/Polygon.hs 78;" f orderPolygon src/Geometry/Polygon.hs 87;" f orderPolygonAround src/Geometry/Polygon.hs 70;" f -orientAttachment src/Dodge/Item/Orientation.hs 32;" f -orientByParentChSF src/Dodge/Item/Orientation.hs 25;" f -orientChild src/Dodge/Item/Orientation.hs 14;" f +orientAttachment src/Dodge/Item/Orientation.hs 31;" f +orientByParentChSF src/Dodge/Item/Orientation.hs 24;" f +orientChild src/Dodge/Item/Orientation.hs 13;" f orthogonalPointOnSeg src/Geometry/Intersect.hs 291;" f outLink src/Dodge/RoomLink.hs 105;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f @@ -5357,8 +5353,8 @@ prePos src/Quaternion.hs 67;" f preloadRender src/Preload/Render.hs 30;" f premapMaybe src/FoldlHelp.hs 26;" f prependTwo src/Geometry.hs 176;" f -prettyDT src/Dodge/DoubleTree.hs 258;" f -prettyLDT src/Dodge/DoubleTree.hs 263;" f +prettyDT src/Dodge/DoubleTree.hs 257;" f +prettyLDT src/Dodge/DoubleTree.hs 262;" f prettyShort src/AesonHelp.hs 11;" f primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 581;" f printColumnTitles src/Dodge/Tree/Shift.hs 142;" f @@ -5378,8 +5374,7 @@ propSPic src/Dodge/Prop/Draw.hs 15;" f propSetToggleAnd src/Dodge/Prop/Update.hs 41;" f propUpdateIf src/Dodge/Prop/Update.hs 25;" f propUpdatePosition src/Dodge/Prop/Update.hs 30;" f -propagateOrientation src/Dodge/Item/Orientation.hs 43;" f -propagateOrientation' src/Dodge/Item/Orientation.hs 49;" f +propagateOrientation' src/Dodge/Item/Orientation.hs 42;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 51;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 79;" f ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 83;" f @@ -5475,7 +5470,7 @@ randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 195;" f readSaveSlot src/Dodge/Save.hs 45;" f -recoilAmount src/Dodge/HeldUse.hs 502;" f +recoilAmount src/Dodge/HeldUse.hs 456;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -5483,8 +5478,8 @@ rectXH src/Geometry/Polygon.hs 32;" f rectXY src/Geometry/Polygon.hs 35;" f rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f red src/Color.hs 14;" f -reduceLocDT src/Dodge/DoubleTree.hs 398;" f -reduceLocLDT src/Dodge/DoubleTree.hs 393;" f +reduceLocDT src/Dodge/DoubleTree.hs 397;" f +reduceLocLDT src/Dodge/DoubleTree.hs 392;" f reflDirWall src/Dodge/Base/Wall.hs 16;" f reflVelWall src/Dodge/Base/Wall.hs 24;" f reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f @@ -5503,7 +5498,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 147;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 915;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 863;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f @@ -5548,12 +5543,12 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f right src/DoubleStack.hs 16;" f -rightChildList src/Dodge/Item/Grammar.hs 218;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 205;" f +rightChildList src/Dodge/Item/Grammar.hs 177;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 166;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f -rlauncherPic src/Dodge/Item/Draw/SPic.hs 388;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 418;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 64;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5673,11 +5668,11 @@ sectionsSizes src/Dodge/DisplayInventory.hs 207;" f seedStartMenu src/Dodge/Menu.hs 82;" f seedStartOptions src/Dodge/Menu.hs 85;" f segOnCirc src/Geometry.hs 113;" f -selNumPos src/Dodge/Render/HUD.hs 454;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 477;" 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 508;" 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 @@ -5715,7 +5710,7 @@ setOldPos src/Dodge/Update.hs 475;" 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 385;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 384;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5755,7 +5750,7 @@ 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 300;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 330;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 85;" f shellMag src/Dodge/Item/Ammo.hs 48;" f @@ -5783,16 +5778,16 @@ 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 293;" f -shineTorch src/Dodge/Creature/State.hs 333;" f -shootBullet src/Dodge/HeldUse.hs 990;" f -shootBullets src/Dodge/HeldUse.hs 980;" f +shineTorch src/Dodge/Creature/State.hs 332;" f +shootBullet src/Dodge/HeldUse.hs 938;" f +shootBullets src/Dodge/HeldUse.hs 928;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 894;" f +shootLaser src/Dodge/HeldUse.hs 842;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 1217;" f +shootTeslaArc src/Dodge/HeldUse.hs 1165;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 841;" f +shootTractorBeam src/Dodge/HeldUse.hs 789;" 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 @@ -5800,7 +5795,7 @@ shootingRange src/Dodge/Room/Room.hs 332;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f shortShow src/ShortShow.hs 9;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f -shoulderHeight src/Dodge/Item/HeldOffset.hs 69;" f +shoulderHeight src/Dodge/Item/HeldOffset.hs 68;" f shoulderSH src/Dodge/Creature/Picture.hs 133;" f shoulderSP src/Dodge/Creature/HandPos.hs 170;" f showAttachItem src/Dodge/Item/Display.hs 91;" f @@ -5950,7 +5945,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 60;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f strictify src/MaybeHelp.hs 37;" f -strideRot src/Dodge/Item/HeldOffset.hs 72;" f +strideRot src/Dodge/Item/HeldOffset.hs 71;" f stringToList src/Picture/Base.hs 313;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f @@ -6007,7 +6002,7 @@ terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 124;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 408;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 438;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 32;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f @@ -6088,20 +6083,20 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 57;" f torch src/Dodge/Item/Held/Utility.hs 23;" f -torchShape src/Dodge/Item/Draw/SPic.hs 267;" f -torqueAmount src/Dodge/HeldUse.hs 618;" f +torchShape src/Dodge/Item/Draw/SPic.hs 296;" f +torqueAmount src/Dodge/HeldUse.hs 572;" f torqueCr src/Dodge/WorldEffect.hs 67;" f torso src/Dodge/Creature/Picture.hs 99;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 853;" f +tractorBeamAt src/Dodge/HeldUse.hs 801;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 435;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 466;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f transMat src/MatrixHelper.hs 73;" f -transToHandle src/Dodge/Item/HeldOffset.hs 27;" f +transToHandle src/Dodge/Item/HeldOffset.hs 26;" f translate src/Picture/Base.hs 116;" f translate3 src/Picture/Base.hs 120;" f translateFloatingCamera src/Dodge/Update/Camera.hs 45;" f @@ -6139,7 +6134,7 @@ treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 21;" f treePath src/Dodge/Tree/GenerateStructure.hs 13;" f treePaths src/TreeHelp.hs 138;" f treePost src/TreeHelp.hs 45;" f -treeToPotentialFunction src/Dodge/Item/Grammar.hs 181;" f +treeToPotentialFunction src/Dodge/Item/Grammar.hs 144;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f @@ -6148,7 +6143,7 @@ triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 31;" f truncFaces src/Polyhedra/Geodesic.hs 53;" f truncate src/Polyhedra/Geodesic.hs 38;" f trunkDepth src/TreeHelp.hs 161;" f -tryAttachItems src/Dodge/Item/Grammar.hs 36;" f +tryAttachItems src/Dodge/Item/Grammar.hs 33;" f tryClickUse src/Dodge/Creature/YourControl.hs 221;" f tryCombine src/Dodge/Update/Input/InGame.hs 526;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 125;" f @@ -6168,13 +6163,13 @@ trySynthBullet src/Dodge/Creature/State.hs 232;" f tryUseParent src/Dodge/Creature/State.hs 226;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f -turretItemOffset src/Dodge/Item/HeldOffset.hs 22;" f +turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f twists src/Dodge/Creature/Test.hs 109;" f twoFlat src/Dodge/Creature/Test.hs 106;" f -twoFlatHRot src/Dodge/Item/HeldOffset.hs 81;" f +twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f @@ -6249,7 +6244,7 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 354;" f +updateItemTargeting src/Dodge/Creature/State.hs 353;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6332,24 +6327,24 @@ upperRounded src/Shape.hs 185;" f useBulletPayload src/Dodge/Bullet.hs 113;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f -useGasParams src/Dodge/HeldUse.hs 1117;" f +useGasParams src/Dodge/HeldUse.hs 1065;" f useHotkey src/Dodge/Creature/YourControl.hs 70;" f -useInventoryPath src/Dodge/HeldUse.hs 1441;" f +useInventoryPath src/Dodge/HeldUse.hs 1389;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 757;" f +useLoadedAmmo src/Dodge/HeldUse.hs 708;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1401;" f +useRewindGun src/Dodge/HeldUse.hs 1349;" 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 1382;" f +useStopWatch src/Dodge/HeldUse.hs 1330;" f useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1390;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1338;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f @@ -6373,7 +6368,7 @@ verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f -vgunMuzzles src/Dodge/HeldUse.hs 313;" f +vgunMuzzles src/Dodge/HeldUse.hs 316;" f viewBoundaries src/Dodge/Debug/Picture.hs 304;" f viewClipBounds src/Dodge/Debug/Picture.hs 313;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 186;" f @@ -6383,9 +6378,9 @@ visibleWalls src/Dodge/Base/Collide.hs 124;" f visionCheck src/Dodge/Creature/Perception.hs 153;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 345;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 375;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 823;" f +walkNozzle src/Dodge/HeldUse.hs 771;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f @@ -6393,7 +6388,7 @@ wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f -warmupSound src/Dodge/HeldUse.hs 1435;" f +warmupSound src/Dodge/HeldUse.hs 1383;" f warningRooms src/Dodge/Room/Warning.hs 28;" f wasdAim src/Dodge/Creature/YourControl.hs 126;" f wasdDir src/Dodge/WASD.hs 17;" f @@ -6472,7 +6467,7 @@ yV2 src/Geometry/Vector.hs 210;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 12;" f youDropItem src/Dodge/Creature/Action.hs 190;" f -yourAugmentedItem src/Dodge/Render/HUD.hs 236;" f +yourAugmentedItem src/Dodge/Render/HUD.hs 235;" f yourControl src/Dodge/Creature/YourControl.hs 28;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 108;" f yourInfo src/Dodge/Creature/Info.hs 10;" f