diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index bd83ad28a..eec8a5866 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -33,13 +33,13 @@ useItemLoc cr loc pt w | HeldPlatformSF <- sf , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsRoot , Aiming {} <- cr ^. crStance . posture = - return $ heldEffect pt (bimap _iatType (^. _1) ldt) cr w + return $ heldEffect pt (bimap id (^. _1) ldt) cr w | GadgetPlatformSF <- sf = return $ gadgetEffect pt loc cr w | UnderBarrelPlatformSF <- sf , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsAttached , Aiming {} <- cr ^. crStance . posture = - return $ heldEffect pt (bimap _iatType (^. _1) ldt) cr w + return $ heldEffect pt (bimap id (^. _1) ldt) cr w | RemoteDetonatorSF <- sf , pt == InitialPress = return $ activateDetonator ldt w diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index fca098320..1d0065229 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -216,7 +216,7 @@ doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of tryUseParent :: LocationLDT ItemLink CItem -> World -> World tryUseParent loc w = fromMaybe w $ do t <- locUp loc - let t' = bimap (^. iatType) (^. _1) $ t ^. locLDT + let t' = bimap id (^. _1) $ t ^. locLDT cr <- w ^? cWorld . lWorld . creatures . ix 0 return $ heldEffectNoHammerCheck t' cr w @@ -295,7 +295,7 @@ chainLinkOrientation :: ItemLink -> CItem -> (Point3, Q.Quaternion Float) -chainLinkOrientation (p, q) par (ILink lt) child = (p + Q.rotate q p1, q * q1) +chainLinkOrientation (p, q) par lt child = (p + Q.rotate q p1, q * q1) where (p1, q1) = orientAttachment (par ^. _1) lt (child ^. _1) @@ -332,7 +332,7 @@ shineTargetLaser :: World shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do guard (crIsAiming cr) - (_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft) + (_, mag) <- find (isammolink . fst) (itmtree ^. ldtLeft) i <- mag ^. ldtValue . _1 . itConsumables guard $ i >= x maginvid <- mag ^? ldtValue . _1 . itLocation . ilInvID @@ -372,7 +372,7 @@ shineTorch :: World -> World shineTorch cr itmtree (p, q) = fromMaybe id $ do - (_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft) + (_, mag) <- find (isammolink . fst) (itmtree ^. ldtLeft) i <- mag ^. ldtValue . _1 . itConsumables guard $ crIsAiming cr guard $ i >= x diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 2eef3f036..97ebbfd64 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -10,7 +10,7 @@ import Dodge.Data.DoubleTree import Control.Lens import Dodge.Data.Item -data CLinkType +data ItemLink = AmmoInLink Int AmmoType | TriggerLink | AmmoModLink @@ -65,12 +65,6 @@ data ItemStructuralFunction type CItem = (Item, ItemStructuralFunction, LinkTest) -data ItemLink = ILink - { _iatType :: CLinkType --- , _iatOrient :: Item -> CLinkType -> Item -> (Point3, Quaternion Float) --- , _iatOrient :: Item -> CLinkType -> (Point3, Quaternion Float) - } - -- this should possibly use a full item structure tree rather than a -- CItem as arguments data LinkTest = LTest @@ -87,6 +81,5 @@ data LinkUpdate = LUpdate makeLenses ''ItemLink makeLenses ''LinkTest makeLenses ''LinkUpdate -makeLenses ''CLinkType --deriveJSON defaultOptions ''ItemStructuralFunction --deriveJSON defaultOptions ''ComposeLinkType diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index e63dcf104..5908bad57 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -50,7 +50,7 @@ gadgetEffect pt loc | UseHeld{} <- loc ^. locLDT . ldtValue . _1 . itUse = heldEffect pt - (bimap _iatType (^. _1) (loc ^. locLDT)) + (bimap id (^. _1) (loc ^. locLDT)) | DROPPER x <- loc ^. locLDT . ldtValue . _1 . itType , Just i <- loc ^? locLDT . ldtValue . _1 . itUse . uInt , pt == InitialPress = @@ -60,23 +60,23 @@ gadgetEffect pt loc useInventoryPath pt i x loc | otherwise = const id -heldEffect :: PressType -> LabelDoubleTree CLinkType Item -> Creature -> World -> World +heldEffect :: PressType -> LabelDoubleTree ItemLink Item -> Creature -> World -> World heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles -heldEffectNoHammerCheck :: LabelDoubleTree CLinkType Item -> Creature -> World -> World +heldEffectNoHammerCheck :: LabelDoubleTree ItemLink Item -> Creature -> World -> World heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles type ChainEffect = - (LabelDoubleTree CLinkType Item -> Creature -> World -> World) -> - LabelDoubleTree CLinkType Item -> + (LabelDoubleTree ItemLink Item -> Creature -> World -> World) -> + LabelDoubleTree ItemLink Item -> Creature -> World -> World hammerCheck :: - (LabelDoubleTree CLinkType Item -> Creature -> World -> World) -> + (LabelDoubleTree ItemLink Item -> Creature -> World -> World) -> PressType -> - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Creature -> World -> World @@ -142,7 +142,7 @@ useTimeCheck f item cr w = case useDelay $ item ^. ldtValue of -- will have problems elsewhere also itRef = item ^?! ldtValue . itLocation . ilInvID -heldEffectMuzzles :: LabelDoubleTree CLinkType Item -> Creature -> World -> World +heldEffectMuzzles :: LabelDoubleTree ItemLink Item -> Creature -> World -> World heldEffectMuzzles t cr w = setusetime . doHeldUseEffect t cr . uncurry (applyCME (_ldtValue t) cr) @@ -336,7 +336,7 @@ vgunMuzzles i = -- <*> ZipList [0 .. i -1] ) -doHeldUseEffect :: LabelDoubleTree CLinkType Item -> Creature -> World -> World +doHeldUseEffect :: LabelDoubleTree ItemLink Item -> Creature -> World -> World doHeldUseEffect t cr w = case t ^. ldtValue . itType of HELD (VOLLEYGUN j) -> case itm ^? itParams . unfiredBarrels of Just [_] -> fromMaybe w $ do @@ -677,9 +677,9 @@ heldTorqueAmount = \case -- (Muzzle,Int,Int) = (muzzle, amountloaded, id of mag taken from) loadMuzzle :: - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Muzzle -> - (LabelDoubleTree CLinkType Item, Maybe (Muzzle, Int, LabelDoubleTree CLinkType Item)) + (LabelDoubleTree ItemLink Item, Maybe (Muzzle, Int, LabelDoubleTree ItemLink Item)) loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do -- guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame let as = _mzAmmoSlot mz @@ -697,7 +697,7 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do , Just (mz, usedammo, mag) ) -makeMuzzleFlare :: Muzzle -> LabelDoubleTree CLinkType Item -> Creature -> World -> World +makeMuzzleFlare :: Muzzle -> LabelDoubleTree ItemLink Item -> Creature -> World -> World makeMuzzleFlare mz itmtree cr = case mz ^. mzFlareType of NoFlare -> id BasicFlare -> basicMuzFlare pos dir @@ -746,13 +746,13 @@ flareCircleAt col alphax tranv = ) -- previous phaseV parameters: 0.2, 1, 5 -getLaserPhaseV :: LabelDoubleTree CLinkType Item -> Float +getLaserPhaseV :: LabelDoubleTree ItemLink Item -> Float getLaserPhaseV = const 1 -getLaserDamage :: LabelDoubleTree CLinkType Item -> LaserType +getLaserDamage :: LabelDoubleTree ItemLink Item -> LaserType getLaserDamage = const (DamageLaser 11) -getLaserColor :: LabelDoubleTree CLinkType Item -> Color +getLaserColor :: LabelDoubleTree ItemLink Item -> Color getLaserColor = const yellow basicMuzFlare :: Point2 -> Float -> World -> World @@ -762,15 +762,15 @@ basicMuzFlare pos dir = . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir -isAmmoIntLink :: Int -> CLinkType -> Bool +isAmmoIntLink :: Int -> ItemLink -> Bool isAmmoIntLink i (AmmoInLink j _) = i == j isAmmoIntLink _ _ = False useLoadedAmmo :: - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Creature -> (Bool, World) -> - Maybe (Muzzle, Int, LabelDoubleTree CLinkType Item) -> + Maybe (Muzzle, Int, LabelDoubleTree ItemLink Item) -> (Bool, World) useLoadedAmmo _ _ (cme, w) Nothing = (cme, w) useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $ @@ -808,7 +808,7 @@ useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $ getAttachedSFLink :: ItemStructuralFunction -> - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Maybe (NewInt ItmInt) getAttachedSFLink sf = (^? ldtRight . folding (lookup (SFLink sf)) . ldtValue . itID) @@ -869,7 +869,7 @@ tractorBeamAt pos outpos dir power = d = unitVectorAtAngle dir * power creatureShootLaser :: - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Creature -> Muzzle -> World -> @@ -925,7 +925,7 @@ removeAmmoFromMag x mid cr = fromMaybe id $ do . _Just -~ x -getBulletType :: LabelDoubleTree CLinkType Item -> Maybe Bullet +getBulletType :: LabelDoubleTree ItemLink Item -> Maybe Bullet getBulletType magtree = --magtree ^? ldtValue . itConsumables . magParams . ampBullet (magtree ^? ldtValue >>= magAmmoParams >>= (^? ampBullet)) @@ -979,9 +979,9 @@ magAmmoParams itm = case itm ^. itType of -- _ -> 0 shootBullet :: - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Creature -> - (Muzzle, Int, LabelDoubleTree CLinkType Item) -> + (Muzzle, Int, LabelDoubleTree ItemLink Item) -> World -> World shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do @@ -1266,8 +1266,8 @@ shootTeslaArc itm cr mz w = dir = _crDir cr + mrot determineProjectileTracking :: - LabelDoubleTree CLinkType Item -> - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> + LabelDoubleTree ItemLink Item -> RocketHoming determineProjectileTracking magtree itmtree = fromMaybe NoHoming $ @@ -1283,8 +1283,8 @@ determineProjectileTracking magtree itmtree = return $ HomeUsingTargeting (targetingtree ^. ldtValue . itID) createProjectileR :: - LabelDoubleTree CLinkType Item -> - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> + LabelDoubleTree ItemLink Item -> Muzzle -> Creature -> World -> @@ -1302,7 +1302,7 @@ createProjectileR itmtree magtree = | isJust $ lookup SmokeReducerLink (magtree ^. ldtLeft) = Just ReducedRocketSmoke | otherwise = Nothing -getPJStabiliser :: LabelDoubleTree CLinkType Item -> Maybe PJStabiliser +getPJStabiliser :: LabelDoubleTree ItemLink Item -> Maybe PJStabiliser getPJStabiliser ldt = case lookup ProjectileStabiliserLink (ldt ^. ldtRight) of Just ldt' -> case ldt' ^? ldtValue . itType . ibtAttach of Just GIMBAL -> Just StabOrthReduce @@ -1310,7 +1310,7 @@ getPJStabiliser ldt = case lookup ProjectileStabiliserLink (ldt ^. ldtRight) of _ -> Nothing _ -> Nothing -getGrenadeHitEffect :: LabelDoubleTree CLinkType Item -> GrenadeHitEffect +getGrenadeHitEffect :: LabelDoubleTree ItemLink Item -> GrenadeHitEffect getGrenadeHitEffect t = case lookup GrenadeHitEffectLink (t ^. ldtRight) of Just ldt' -> case ldt' ^? ldtValue . itType of Just STICKYMOD -> GStick @@ -1319,7 +1319,7 @@ getGrenadeHitEffect t = case lookup GrenadeHitEffectLink (t ^. ldtRight) of createProjectile :: ProjectileType -> - LabelDoubleTree CLinkType Item -> + LabelDoubleTree ItemLink Item -> Maybe PJStabiliser -> Muzzle -> Creature -> diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index c5d4da24b..81040c553 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -29,7 +29,7 @@ itemTreeSPic (LDT (itm,_,_) l r) = itemRotTreeSPic :: Item -> (ItemLink, LabelDoubleTree ItemLink CItem) -> SPic itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t where - (p, q) = orientAttachment par (_iatType il) itm + (p, q) = orientAttachment par il itm itm = t ^. ldtValue . _1 itemSPic :: Item -> SPic diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index df41cc9d5..b9d2a02d9 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -34,12 +34,12 @@ tryAttachItems :: tryAttachItems = leftRightCombine leftIsParentCombine rightIsParentCombine useBreakL :: - [(ItemStructuralFunction, CLinkType)] -> - [(ItemStructuralFunction, CLinkType)] -> + [(ItemStructuralFunction, ItemLink)] -> + [(ItemStructuralFunction, ItemLink)] -> LinkTest useBreakL x y = useBreakListsLinkTest (map (uncurry noa) x) (map (uncurry noa) y) where - noa a b = (a, ILink b) + noa a b = (a, b) useBreakListsLinkTest :: [(ItemStructuralFunction, ItemLink)] -> @@ -67,7 +67,7 @@ useBreakListsLinkTest llist rlist = LTest ltest rtest itemToBreakLists :: Item -> ItemStructuralFunction -> - ([(ItemStructuralFunction, CLinkType)], [(ItemStructuralFunction, CLinkType)]) + ([(ItemStructuralFunction, ItemLink)], [(ItemStructuralFunction, ItemLink)]) itemToBreakLists itm itmf = case (itm ^. itType, itmf) of (HELD TORCH, _) -> (getAmmoLinks itm, []) (ATTACH UNDERBARRELSLOT, _) -> ([(UnderBarrelPlatformSF, UnderBarrelPlatformLink)], []) @@ -117,12 +117,12 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of ([(AmmoMagSF ElectricalAmmo, AmmoInLink 0 ElectricalAmmo)], []) _ -> ([], []) -getAutoSpringLinks :: Item -> [(ItemStructuralFunction, CLinkType)] +getAutoSpringLinks :: Item -> [(ItemStructuralFunction, ItemLink)] getAutoSpringLinks itm = case itemTriggerType itm of HammerTrigger -> [(MakeAutoSF, MakeAutoLink)] _ -> [] -extraWeaponLinks :: Item -> [(ItemStructuralFunction, CLinkType)] +extraWeaponLinks :: Item -> [(ItemStructuralFunction, ItemLink)] extraWeaponLinks itm = case itm ^. itType of HELD GLAUNCHER -> launcherlinks <> [(GrenadeHitEffectSF,GrenadeHitEffectLink)] HELD RLAUNCHER -> launcherlinks @@ -131,14 +131,14 @@ extraWeaponLinks itm = case itm ^. itType of where launcherlinks = [(ProjectileStabiliserSF,ProjectileStabiliserLink)] -extraWeaponLinksBelow :: Item -> [(ItemStructuralFunction, CLinkType)] +extraWeaponLinksBelow :: Item -> [(ItemStructuralFunction, ItemLink)] extraWeaponLinksBelow itm -- | Just TwoHandUnder <- itm ^? itUse . heldAim . aimStance | TwoHandUnder <- itemBaseStance itm = [(UnderBarrelSlotSF,UnderBarrelSlotLink)] | otherwise = [] -getAmmoLinks :: Item -> [(ItemStructuralFunction, CLinkType)] +getAmmoLinks :: Item -> [(ItemStructuralFunction, ItemLink)] getAmmoLinks itm = map (\(i, a) -> (AmmoMagSF a, AmmoInLink i a)) @@ -215,7 +215,7 @@ llright itm pci = case pci ^. ldtValue . _1 . itType of toLasgunUpdate :: Item -> LinkUpdate toLasgunUpdate itm = LUpdate - (ILink FunctionChangeLink) + FunctionChangeLink (\(par, _, _) -> (par, HeldPlatformSF, uncurry useBreakL $ itemToBreakLists itm HeldPlatformSF)) (\(chi, _, up) -> (chi, FunctionChangeSF, up)) @@ -225,7 +225,7 @@ springLinkTest = LTest (const Nothing) $ CRAFT HARDWARE -> Just ( LUpdate - (ILink FunctionChangeLink) + (FunctionChangeLink) (\(par, _, up) -> (par, MakeAutoSF, up)) (\(chi, _, up) -> (chi, FunctionChangeSF, up)) ) diff --git a/src/Dodge/Item/Orientation.hs b/src/Dodge/Item/Orientation.hs index b9de32739..776d85e9a 100644 --- a/src/Dodge/Item/Orientation.hs +++ b/src/Dodge/Item/Orientation.hs @@ -13,14 +13,14 @@ orientChild itm = case _itType itm of HELD LASER -> (V3 15 (-5) 0, Q.qID) _ -> (0, Q.qID) -orientByLink :: Item -> CLinkType -> (Point3, Q.Quaternion Float) +orientByLink :: Item -> ItemLink -> (Point3, Q.Quaternion Float) orientByLink itm lt = case (_itType itm, lt) of (HELD FLAMETHROWER, AmmoInLink{}) -> (V3 4 (-6) 0, Q.qID) (HELD _, AmmoInLink{}) -> (V3 7 (-2) 0, Q.qID) (HELD _, WeaponScopeLink) -> (V3 5 0 5, Q.qID) _ -> (0, Q.qID) -orientAttachment :: Item -> CLinkType -> Item -> (Point3, Q.Quaternion Float) +orientAttachment :: Item -> ItemLink -> Item -> (Point3, Q.Quaternion Float) orientAttachment par lnk ch = case (_itType par, lnk, _itType ch) of -- (HELD BURSTRIFLE, _, HELD TORCH) -> (V3 20 0 0, Q.axisAngle (V3 0 0 1) (pi/2)) -- (HELD LAUNCHER, _, HELD TORCH) -> (V3 0 20 0, Q.axisAngle (V3 0 0 1) (pi/4)) diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index 88056dec8..6e0f8b9bb 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -8,9 +8,7 @@ module Dodge.WorldEffect ( import Dodge.Item.Grammar import Dodge.Creature.Impulse.UseItem import Dodge.BlBl ---import Dodge.Data.Input import Dodge.HeldUse -import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Data.Foldable import qualified Data.Map.Strict as M @@ -47,7 +45,7 @@ doWdWd we = case we of UseInvItem invid pt -> \w -> fromMaybe w (useItem invid pt w) WdWdBurstFireRepetition cid invid -> \w -> fromMaybe w $ do cr <- w ^? cWorld . lWorld . creatures . ix cid - itree <- bimap _iatType (^. _1) <$> + itree <- bimap id (^. _1) <$> allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT return $ heldEffectMuzzles itree cr w diff --git a/tags b/tags index cc0a4e6d8..bbe3faa84 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 49;" C +ARHUDSF src/Dodge/Data/ComposedItem.hs 47;" 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 @@ -58,20 +58,20 @@ AlwaysSingleTrigger src/Dodge/Data/TriggerType.hs 13;" 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 -AmmoEffectLink src/Dodge/Data/ComposedItem.hs 21;" C -AmmoEffectSF src/Dodge/Data/ComposedItem.hs 59;" C -AmmoInLink src/Dodge/Data/ComposedItem.hs 16;" C -AmmoMagSF src/Dodge/Data/ComposedItem.hs 50;" C +AmmoEffectLink src/Dodge/Data/ComposedItem.hs 19;" C +AmmoEffectSF src/Dodge/Data/ComposedItem.hs 57;" C +AmmoInLink src/Dodge/Data/ComposedItem.hs 14;" C +AmmoMagSF src/Dodge/Data/ComposedItem.hs 48;" C AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t -AmmoModLink src/Dodge/Data/ComposedItem.hs 18;" C -AmmoModifierSF src/Dodge/Data/ComposedItem.hs 56;" C +AmmoModLink src/Dodge/Data/ComposedItem.hs 16;" C +AmmoModifierSF src/Dodge/Data/ComposedItem.hs 54;" C AmmoParams src/Dodge/Data/Item/Use.hs 51;" t -AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 20;" C -AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 58;" C +AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 18;" C +AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 56;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m -AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 19;" C -AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 57;" C +AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 17;" C +AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 55;" 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 @@ -250,9 +250,8 @@ 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 66;" t CLICKER src/Dodge/Data/Item/Combine.hs 28;" C -CLinkType src/Dodge/Data/ComposedItem.hs 15;" t CME src/Dodge/Data/MuzzleEffect.hs 14;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C @@ -629,7 +628,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 41;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t Essential src/Shape/Data.hs 34;" C @@ -728,8 +727,8 @@ 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 -FunctionChangeLink src/Dodge/Data/ComposedItem.hs 29;" C -FunctionChangeSF src/Dodge/Data/ComposedItem.hs 60;" C +FunctionChangeLink src/Dodge/Data/ComposedItem.hs 27;" C +FunctionChangeSF src/Dodge/Data/ComposedItem.hs 58;" C GBounce src/Dodge/Data/Projectile.hs 57;" C GEqC src/SameConstr.hs 20;" c GIMBAL src/Dodge/Data/Item/Combine.hs 96;" C @@ -742,7 +741,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 44;" C +GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 42;" C GameOverOptions src/Dodge/Data/Universe.hs 72;" C GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 8;" m @@ -787,8 +786,8 @@ 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 -GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 34;" C -GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 63;" C +GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 32;" C +GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 61;" C Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m @@ -823,7 +822,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 2;" m -HeldPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C +HeldPlatformSF src/Dodge/Data/ComposedItem.hs 38;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/HeldUse.hs 5;" m @@ -855,7 +854,6 @@ Huge src/Shape/Data.hs 28;" C Humanoid src/Dodge/Data/Creature/Misc.hs 77;" C Humanoid src/Dodge/Humanoid.hs 1;" m HumanoidAI src/Dodge/Data/Creature/Misc.hs 39;" t -ILink src/Dodge/Data/ComposedItem.hs 70;" C IMSS src/Dodge/Data/SelectionList.hs 37;" t INTROSCAN src/Dodge/Data/Item/Combine.hs 33;" C INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 124;" C @@ -912,7 +910,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 47;" C +IntroScanSF src/Dodge/Data/ComposedItem.hs 45;" 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 @@ -945,7 +943,7 @@ 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 70;" t +ItemLink src/Dodge/Data/ComposedItem.hs 13;" 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 @@ -956,7 +954,7 @@ 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 38;" t +ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 36;" 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 @@ -970,8 +968,8 @@ 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 -JoystickLink src/Dodge/Data/ComposedItem.hs 24;" C -JoystickSF src/Dodge/Data/ComposedItem.hs 52;" C +JoystickLink src/Dodge/Data/ComposedItem.hs 22;" C +JoystickSF src/Dodge/Data/ComposedItem.hs 50;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 24;" C Justify src/Justify.hs 1;" m @@ -980,7 +978,7 @@ Kill src/Dodge/Data/ActionPlan.hs 198;" C LASER src/Dodge/Data/Item/Combine.hs 168;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C -LDTComb src/Dodge/Item/Grammar.hs 239;" t +LDTComb src/Dodge/Item/Grammar.hs 238;" 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 @@ -991,8 +989,8 @@ LIGHTER src/Dodge/Data/Item/Combine.hs 66;" C LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 80;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t -LTest src/Dodge/Data/ComposedItem.hs 77;" C -LUpdate src/Dodge/Data/ComposedItem.hs 82;" C +LTest src/Dodge/Data/ComposedItem.hs 70;" C +LUpdate src/Dodge/Data/ComposedItem.hs 75;" 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 @@ -1050,8 +1048,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 77;" t -LinkUpdate src/Dodge/Data/ComposedItem.hs 82;" t +LinkTest src/Dodge/Data/ComposedItem.hs 70;" t +LinkUpdate src/Dodge/Data/ComposedItem.hs 75;" 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 @@ -1132,8 +1130,8 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m Make src/Dodge/Corpse/Make.hs 1;" m -MakeAutoLink src/Dodge/Data/ComposedItem.hs 30;" C -MakeAutoSF src/Dodge/Data/ComposedItem.hs 61;" C +MakeAutoLink src/Dodge/Data/ComposedItem.hs 28;" C +MakeAutoSF src/Dodge/Data/ComposedItem.hs 59;" 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 @@ -1141,7 +1139,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 65;" C +MapperSF src/Dodge/Data/ComposedItem.hs 63;" 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 @@ -1290,7 +1288,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 55;" C +NoSF src/Dodge/Data/ComposedItem.hs 53;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C NoSubInventory src/Dodge/Data/HUD.hs 29;" C @@ -1503,8 +1501,8 @@ 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 -ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 31;" C -ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 62;" C +ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 29;" C +ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 60;" 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 @@ -1612,11 +1610,11 @@ ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C Religion src/Dodge/Data/Scenario.hs 47;" C Reload src/Dodge/Data/ActionPlan.hs 190;" C ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t -RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 26;" C -RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 53;" C +RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 24;" C +RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 51;" C RemoteDirectionPU src/Dodge/Data/Projectile.hs 38;" C -RemoteScreenLink src/Dodge/Data/ComposedItem.hs 25;" C -RemoteScreenSF src/Dodge/Data/ComposedItem.hs 51;" C +RemoteScreenLink src/Dodge/Data/ComposedItem.hs 23;" C +RemoteScreenSF src/Dodge/Data/ComposedItem.hs 49;" 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 @@ -1675,7 +1673,7 @@ 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 35;" C +SFLink src/Dodge/Data/ComposedItem.hs 33;" 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 @@ -1802,8 +1800,8 @@ 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 -SmokeReducerLink src/Dodge/Data/ComposedItem.hs 27;" C -SmokeReducerSF src/Dodge/Data/ComposedItem.hs 54;" C +SmokeReducerLink src/Dodge/Data/ComposedItem.hs 25;" C +SmokeReducerSF src/Dodge/Data/ComposedItem.hs 52;" C SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C @@ -2003,7 +2001,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 64;" C +ToggleSF src/Dodge/Data/ComposedItem.hs 62;" C TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C TopLDT src/Dodge/Data/DoubleTree.hs 49;" C @@ -2020,8 +2018,8 @@ TreeHelp src/TreeHelp.hs 12;" m Triangulate src/Geometry/Triangulate.hs 3;" m Trie src/SimpleTrie.hs 9;" t TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m -TriggerLink src/Dodge/Data/ComposedItem.hs 17;" C -TriggerSF src/Dodge/Data/ComposedItem.hs 48;" C +TriggerLink src/Dodge/Data/ComposedItem.hs 15;" C +TriggerSF src/Dodge/Data/ComposedItem.hs 46;" C TriggerType src/Dodge/Data/TriggerType.hs 9;" t TriggerType src/Dodge/Data/TriggerType.hs 4;" m TriggerType src/Dodge/Item/TriggerType.hs 1;" m @@ -2047,10 +2045,10 @@ 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 -UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 33;" C -UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 42;" C -UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 32;" C -UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 41;" C +UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 31;" C +UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C +UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 30;" C +UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 39;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C UnderRoof src/Dodge/Data/Scenario.hs 79;" C UnderSea src/Dodge/Data/Scenario.hs 77;" C @@ -2058,7 +2056,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 39;" C +UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 37;" 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 @@ -2195,10 +2193,10 @@ 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 -WeaponScopeLink src/Dodge/Data/ComposedItem.hs 22;" C -WeaponScopeSF src/Dodge/Data/ComposedItem.hs 45;" C -WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 23;" C -WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 46;" C +WeaponScopeLink src/Dodge/Data/ComposedItem.hs 20;" C +WeaponScopeSF src/Dodge/Data/ComposedItem.hs 43;" C +WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 21;" C +WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 44;" 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 @@ -2608,8 +2606,6 @@ _hud src/Dodge/Data/World.hs 45;" f _hudElement src/Dodge/Data/HUD.hs 45;" f _humanoidAI src/Dodge/Data/Creature/Misc.hs 81;" f _iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 21;" f -_iatOrient src/Dodge/Data/ComposedItem.hs 72;" f -_iatType src/Dodge/Data/ComposedItem.hs 71;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 21;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 20;" f _ibtBulletMod src/Dodge/Data/Item/Combine.hs 23;" f @@ -2707,9 +2703,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 85;" f -_luLinkType src/Dodge/Data/ComposedItem.hs 83;" f -_luParentUpdate src/Dodge/Data/ComposedItem.hs 84;" f +_luChildUpdate src/Dodge/Data/ComposedItem.hs 78;" f +_luLinkType src/Dodge/Data/ComposedItem.hs 76;" f +_luParentUpdate src/Dodge/Data/ComposedItem.hs 77;" 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 @@ -3028,7 +3024,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 35;" f +_sfLink src/Dodge/Data/ComposedItem.hs 33;" f _sfShadowImportance src/Shape/Data.hs 45;" f _sfSize src/Shape/Data.hs 46;" f _sfType src/Shape/Data.hs 42;" f @@ -3167,8 +3163,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 118;" f _trieChildren src/SimpleTrie.hs 11;" f _trieMVal src/SimpleTrie.hs 10;" f _triggers src/Dodge/Data/LWorld.hs 128;" f -_tryLeftLink src/Dodge/Data/ComposedItem.hs 78;" f -_tryRightLink src/Dodge/Data/ComposedItem.hs 79;" f +_tryLeftLink src/Dodge/Data/ComposedItem.hs 71;" f +_tryRightLink src/Dodge/Data/ComposedItem.hs 72;" 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 @@ -3356,12 +3352,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 318;" f +allInvLocs src/Dodge/Item/Grammar.hs 317;" f 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 124;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 125;" 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 @@ -3379,7 +3375,7 @@ applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f applyInvLock src/Dodge/HeldUse.hs 476;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f -applyPastDamages src/Dodge/Creature/State.hs 132;" f +applyPastDamages src/Dodge/Creature/State.hs 133;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 508;" f @@ -3444,10 +3440,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 177;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 178;" 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 292;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 293;" 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 @@ -3455,18 +3451,18 @@ 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 406;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 407;" 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 312;" f +baseCI src/Dodge/Item/Grammar.hs 192;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 313;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 315;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 403;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 383;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 316;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 404;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 384;" f baseShoulder src/Dodge/Creature/Picture.hs 125;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 289;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 282;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 290;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 283;" f baseStickSpread src/Dodge/HeldUse.hs 306;" f baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f @@ -3575,7 +3571,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 291;" f +chainLinkOrientation src/Dodge/Creature/State.hs 292;" f chainPairs src/Geometry.hs 359;" f changeSwapOther src/Dodge/Inventory.hs 144;" f changeSwapSel src/Dodge/Inventory.hs 137;" f @@ -3590,7 +3586,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" 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 717;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3707,13 +3703,13 @@ convexHull src/Geometry/Polygon.hs 104;" f convexHullSafe src/Geometry/Polygon.hs 111;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 50;" f copier src/Dodge/Item/Scope.hs 88;" f -copierItemUpdate src/Dodge/Creature/State.hs 198;" f +copierItemUpdate src/Dodge/Creature/State.hs 199;" f copierItemUpdate src/Dodge/ItEffect.hs 37;" f 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 @@ -3754,14 +3750,14 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 809;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 24;" f -crUpdate src/Dodge/Creature/State.hs 63;" f +crUpdate src/Dodge/Creature/State.hs 64;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f crZoneSize src/Dodge/Zoning/Creature.hs 41;" f craftInfo src/Dodge/Item/Info.hs 168;" f -craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f +craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 579;" f createArc src/Dodge/Tesla/Arc.hs 81;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f @@ -3885,7 +3881,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 298;" f +defSPic src/Dodge/Item/Draw/SPic.hs 299;" 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 @@ -3965,7 +3961,7 @@ 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 452;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 224;" f determineProjectileTracking src/Dodge/HeldUse.hs 1268;" f @@ -4001,7 +3997,7 @@ dmType src/Dodge/Damage.hs 38;" f doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 140;" f -doAnyEquipmentEffect src/Dodge/Creature/State.hs 208;" f +doAnyEquipmentEffect src/Dodge/Creature/State.hs 209;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBlBl src/Dodge/BlBl.hs 5;" f @@ -4017,7 +4013,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 128;" f +doDamage src/Dodge/Creature/State.hs 129;" f doDeathToggle src/Dodge/WorldEffect.hs 93;" f doDeathTriggers src/Dodge/WorldEffect.hs 88;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f @@ -4098,7 +4094,7 @@ doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 168;" f -drawARHUD src/Dodge/Creature/State.hs 318;" f +drawARHUD src/Dodge/Creature/State.hs 319;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4225,7 +4221,7 @@ 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 -dropAll src/Dodge/Creature/State.hs 125;" f +dropAll src/Dodge/Creature/State.hs 126;" f dropExcept src/Dodge/Creature/Action.hs 166;" f dropInventoryPath src/Dodge/HeldUse.hs 1399;" f dropItem src/Dodge/Creature/Action.hs 172;" f @@ -4281,7 +4277,7 @@ equipAllocString src/Dodge/Render/HUD.hs 308;" f equipAttachPos src/Dodge/Item/Draw.hs 30;" f equipBackgroundEffect src/Dodge/Euse.hs 15;" f equipInfo src/Dodge/Item/Info.hs 140;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 148;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 149;" f equipPosition src/Dodge/Item/Draw.hs 38;" f equipSiteInfo src/Dodge/Item/Info.hs 253;" f equipType src/Dodge/Data/EquipType.hs 10;" f @@ -4309,8 +4305,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 126;" f -extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 135;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 125;" f +extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 134;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4349,12 +4345,12 @@ 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 386;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 387;" f flareCircleAt src/Dodge/HeldUse.hs 739;" 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 439;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 440;" 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 @@ -4374,7 +4370,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 99;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 547;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 543;" f -foldCr src/Dodge/Creature/State.hs 49;" f +foldCr src/Dodge/Creature/State.hs 50;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 38;" f @@ -4389,7 +4385,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 137;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 138;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 491;" f @@ -4429,11 +4425,11 @@ 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 142;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 141;" f getArguments src/Dodge/Update/Scroll.hs 178;" f getArguments' src/Dodge/Update/Scroll.hs 166;" f getAttachedSFLink src/Dodge/HeldUse.hs 809;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 121;" f +getAutoSpringLinks src/Dodge/Item/Grammar.hs 120;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 171;" f getBulletType src/Dodge/HeldUse.hs 928;" f @@ -4483,7 +4479,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 392;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 393;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 138;" f @@ -4534,7 +4530,7 @@ 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 442;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 443;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4558,7 +4554,7 @@ heldItemOffset src/Dodge/Item/HeldOffset.hs 72;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 29;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 34;" f heldItemRifling src/Dodge/HeldUse.hs 1112;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 224;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 225;" f heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f heldTorqueAmount src/Dodge/HeldUse.hs 634;" f @@ -4650,16 +4646,16 @@ interweave src/Justify.hs 17;" f introScan src/Dodge/Item/Scope.hs 57;" f introScanValue src/Dodge/Inventory/SelectionList.hs 79;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 299;" f +invAdj src/Dodge/Item/Grammar.hs 298;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f invHead src/Dodge/Render/HUD.hs 405;" f -invItemLocUpdate src/Dodge/Creature/State.hs 153;" f -invLDT src/Dodge/Item/Grammar.hs 279;" f -invRootItemEffs src/Dodge/Creature/State.hs 146;" f -invRootMap src/Dodge/Item/Grammar.hs 288;" f -invRootTrees src/Dodge/Item/Grammar.hs 309;" f +invItemLocUpdate src/Dodge/Creature/State.hs 154;" f +invLDT src/Dodge/Item/Grammar.hs 278;" f +invRootItemEffs src/Dodge/Creature/State.hs 147;" f +invRootMap src/Dodge/Item/Grammar.hs 287;" f +invRootTrees src/Dodge/Item/Grammar.hs 308;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f @@ -4707,7 +4703,7 @@ itEffectOnPickup src/Dodge/Item/BackgroundEffect.hs 64;" f itInvHeight src/Dodge/Item/InvSize.hs 11;" f itUseCondition src/Dodge/ItemUseCondition.hs 6;" f itemAmmoSlots src/Dodge/Item/AmmoSlots.hs 12;" f -itemBaseConnections src/Dodge/Item/Grammar.hs 196;" f +itemBaseConnections src/Dodge/Item/Grammar.hs 195;" f itemBaseName src/Dodge/Item/Display.hs 59;" f itemBaseStance src/Dodge/Item/AimStance.hs 17;" f itemBlips src/Dodge/RadarSweep.hs 93;" f @@ -4730,17 +4726,17 @@ itemInvLock src/Dodge/HeldUse.hs 486;" f itemMuzzles src/Dodge/HeldUse.hs 158;" f itemRandomOffset src/Dodge/HeldUse.hs 1005;" f itemRooms src/Dodge/LockAndKey.hs 39;" f -itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 28;" f -itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f +itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 29;" f +itemSPic src/Dodge/Item/Draw/SPic.hs 35;" f itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 52;" f itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 120;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f itemSidePush src/Dodge/HeldUse.hs 432;" f itemString src/Dodge/Item/Display.hs 55;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 68;" f -itemToFunction src/Dodge/Item/Grammar.hs 148;" f -itemTreeSPic src/Dodge/Item/Draw/SPic.hs 23;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 67;" f +itemToFunction src/Dodge/Item/Grammar.hs 147;" f +itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f itemTriggerType src/Dodge/BaseTriggerType.hs 12;" f itemWeight src/Dodge/Creature/Statistics.hs 66;" f iterateUntil src/MonadHelp.hs 23;" f @@ -4751,7 +4747,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 269;" f +joinItemsInList src/Dodge/Item/Grammar.hs 268;" 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 @@ -4767,7 +4763,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 458;" f +keyPic src/Dodge/Item/Draw/SPic.hs 459;" 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 @@ -4779,13 +4775,13 @@ 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 412;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 413;" 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 -laserLinkTest src/Dodge/Item/Grammar.hs 202;" f +laserLinkTest src/Dodge/Item/Grammar.hs 201;" f lastMap src/Dodge/DoubleTree.hs 174;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f @@ -4800,10 +4796,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 241;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 240;" f leftPad src/Padding.hs 15;" f -leftRightCombine src/Dodge/Item/Grammar.hs 255;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 476;" f +leftRightCombine src/Dodge/Item/Grammar.hs 254;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 477;" 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,8 +4826,8 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 190;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 308;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f -llleft src/Dodge/Item/Grammar.hs 205;" f -llright src/Dodge/Item/Grammar.hs 211;" f +llleft src/Dodge/Item/Grammar.hs 204;" f +llright src/Dodge/Item/Grammar.hs 210;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 394;" f @@ -5024,8 +5020,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 364;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 358;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 365;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 359;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 701;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 14;" f @@ -5279,7 +5275,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 @@ -5539,11 +5535,11 @@ 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 -rightIsParentCombine src/Dodge/Item/Grammar.hs 248;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 247;" 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 389;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 390;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 64;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5632,7 +5628,7 @@ scaleSH src/Shape.hs 269;" f scalp src/Dodge/Creature/Picture.hs 90;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" 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 @@ -5705,7 +5701,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 424;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 425;" 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 @@ -5745,7 +5741,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 301;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 302;" 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 @@ -5772,8 +5768,8 @@ 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 326;" f -shineTorch src/Dodge/Creature/State.hs 367;" f +shineTargetLaser src/Dodge/Creature/State.hs 327;" f +shineTorch src/Dodge/Creature/State.hs 368;" f shootBullet src/Dodge/HeldUse.hs 981;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootLaser src/Dodge/HeldUse.hs 895;" f @@ -5887,7 +5883,7 @@ spreadCenter src/Dodge/Base.hs 187;" f spreadFromCenter src/Dodge/Base.hs 176;" f spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 12;" f spreadOut src/Dodge/Creature/Boid.hs 158;" f -springLinkTest src/Dodge/Item/Grammar.hs 223;" f +springLinkTest src/Dodge/Item/Grammar.hs 222;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f square src/Geometry/Polygon.hs 46;" f @@ -5944,7 +5940,7 @@ strideRot src/Dodge/Item/HeldOffset.hs 78;" 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 183;" f +structureToPotentialFunction src/Dodge/Item/Grammar.hs 182;" f structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f subMap src/TreeHelp.hs 118;" f @@ -5999,7 +5995,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 409;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 410;" 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 @@ -6057,7 +6053,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 216;" f +toLasgunUpdate src/Dodge/Item/Grammar.hs 215;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f @@ -6081,7 +6077,7 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 58;" f torch src/Dodge/Item/Held/Utility.hs 23;" f -torchShape src/Dodge/Item/Draw/SPic.hs 268;" f +torchShape src/Dodge/Item/Draw/SPic.hs 269;" f torqueAmount src/Dodge/HeldUse.hs 629;" f torqueCr src/Dodge/WorldEffect.hs 69;" f torso src/Dodge/Creature/Picture.hs 99;" f @@ -6089,7 +6085,7 @@ tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractorBeamAt src/Dodge/HeldUse.hs 860;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 436;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6140,7 +6136,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 31;" f +tryAttachItems src/Dodge/Item/Grammar.hs 30;" 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 @@ -6156,8 +6152,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f tryShellBounce src/Dodge/Projectile/Update.hs 103;" f trySpinByCID src/Dodge/Projectile/Update.hs 177;" f -trySynthBullet src/Dodge/Creature/State.hs 222;" f -tryUseParent src/Dodge/Creature/State.hs 215;" f +trySynthBullet src/Dodge/Creature/State.hs 223;" f +tryUseParent src/Dodge/Creature/State.hs 216;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 19;" f @@ -6197,7 +6193,7 @@ updateAimPos src/Dodge/Update.hs 308;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f -updateAttachedItems src/Dodge/Creature/State.hs 281;" f +updateAttachedItems src/Dodge/Creature/State.hs 282;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f updateBarrel src/Dodge/Barreloid.hs 41;" f updateBarreloid src/Dodge/Barreloid.hs 15;" f @@ -6235,7 +6231,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 357;" f updateGusts src/Dodge/Update.hs 726;" f -updateHeldRootItem src/Dodge/Creature/State.hs 275;" f +updateHeldRootItem src/Dodge/Creature/State.hs 276;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 510;" f updateIMl' src/Dodge/Update.hs 515;" f @@ -6243,8 +6239,8 @@ 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 393;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 301;" f +updateItemTargeting src/Dodge/Creature/State.hs 394;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 302;" 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 @@ -6324,8 +6320,8 @@ upperPrismPolyST src/Shape.hs 108;" f upperPrismPolySU src/Shape.hs 114;" f upperPrismPolyTS src/Shape.hs 120;" f upperRounded src/Shape.hs 185;" f -useBreakL src/Dodge/Item/Grammar.hs 37;" f -useBreakListsLinkTest src/Dodge/Item/Grammar.hs 45;" f +useBreakL src/Dodge/Item/Grammar.hs 36;" f +useBreakListsLinkTest src/Dodge/Item/Grammar.hs 44;" f useBulletPayload src/Dodge/Bullet.hs 113;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f @@ -6383,7 +6379,7 @@ 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 346;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 347;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f walkNozzle src/Dodge/HeldUse.hs 830;" f walkableNodeNear src/Dodge/Path.hs 48;" f