diff --git a/ghcidOutput b/ghcidOutput index 2a340d88d..438d89661 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,65 +1 @@ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:39:1-9: warning: [-Wunused-top-binds] - Defined but not used: ‘cisToItem’ - | -39 | cisToItem (x, _, _, _) = x - | ^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:43:10-12: warning: [-Wunused-matches] - Defined but not used: ‘hit’ - | -43 | HELD hit -> (itm, WeaponPlatformSF, useBreakListsLinkTest - | ^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:52:1-16: warning: [-Wunused-top-binds] - Defined but not used: ‘baseComposedItem’ - | -52 | baseComposedItem ibt itm = case ibt of - | ^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:63:1-16: warning: [-Wunused-top-binds] - Defined but not used: ‘heldComposedItem’ - | -63 | heldComposedItem itm hit = case hit of - | ^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:74:1-16: warning: [-Wunused-top-binds] - Defined but not used: ‘ammoComposedItem’ - | -74 | ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do - | ^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:79:1-7: warning: [-Wunused-top-binds] - Defined but not used: ‘baseCIS’ - | -79 | baseCIS itm = - | ^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:99:1-19: warning: [-Wunused-top-binds] - Defined but not used: ‘leftIsParentCombine’ - | -99 | leftIsParentCombine (LDT (itm, p, lc, rc) lt rt) t'@(LDT (_, p', _, _) _ _) = do - | ^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:106:1-20: warning: [-Wunused-top-binds] - Defined but not used: ‘rightIsParentCombine’ - | -106 | rightIsParentCombine t'@(LDT (_, p', _, _) _ _) (LDT (itm, p, lc, rc) lt rt) = do - | ^^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:138:1-6: warning: [-Wunused-top-binds] - Defined but not used: ‘invLDT’ - | -138 | invLDT = - | ^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:161:1-10: warning: [-Wunused-top-binds] - Defined but not used: ‘invRootMap’ - | -161 | invRootMap = foldMap (dtToIntMapWithRoot (^?! _1 . itLocation . ilInvID) . ldtToDT) . invLDT - | ^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:175:1-6: warning: [-Wunused-top-binds] - Defined but not used: ‘invAdj’ - | -175 | invAdj im = do - | ^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:199:1-11: warning: [-Wunused-top-binds] - Defined but not used: ‘invIndentIM’ - | -199 | invIndentIM = IM.fromAscList . zip [0 ..] . reverse . map (over _1 cisToItem) . concatMap ldtToIndentList . invLDT - | ^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:206:1-8: warning: [-Wunused-top-binds] - Defined but not used: ‘invTrees’ - | -206 | invTrees = IM.unions . map (ldtToIM getindex) . map (fmap cisToItem) . invLDT - | ^^^^^^^^ +All good (620 modules, at 16:31:55) diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index cb965b591..86ea3d1ba 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -27,7 +27,7 @@ useRootItem :: Int -> World -> World useRootItem crid w = fromMaybe w $ do cr <- w ^? cWorld . lWorld . creatures . ix crid itRef <- cr ^? crManipulation . manObject . imRootItem - it <- invTrees' (_crInv cr) ^? ix itRef + it <- invTrees (_crInv cr) ^? ix itRef return $ itemEffect cr it w & worldEventFlags . at InventoryChange ?~ () @@ -115,7 +115,7 @@ useItemLeftClick' :: Creature -> World -> World useItemLeftClick' cr' w = fromMaybe w $ do cr <- w ^? cWorld . lWorld . creatures . ix (_crID cr') itRef <- cr ^? crManipulation . manObject . imSelectedItem - it <- invTrees' (_crInv cr) ^? ix itRef + it <- invTrees (_crInv cr) ^? ix itRef return $ itemEffect cr it w & worldEventFlags . at InventoryChange ?~ () diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 4be287179..e2c30dfaa 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -24,7 +24,7 @@ data ItemStructuralFunction = WeaponPlatformSF | WeaponScopeSF | WeaponTargetingSF - | AmmoMagSF + | AmmoMagSF AmmoType | RemoteScreenSF | UncomposableIsolateSF | AmmoModifierSF AmmoType diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 74b532c0e..2c37f8676 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -116,7 +116,7 @@ updateDisplaySections w cfig sss = --invitems' = MIM.merge MIM.dropMissing MIM.dropMissing (MIM.zipWithMatched $ const addindent) indents $ IM.mapWithKey (invSelectionItem cr) inv invitems' = IM.mapWithKey (invSelectionItem cr) inv cr = you w - inv = invIndentIM' $ _crInv (you w) + inv = invIndentIM $ _crInv (you w) --indents = indentInv inv --inv = indentInv $ _crInv (you w) nfreeslots = crNumFreeSlots cr diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index 3f29eaab8..f2e4e074f 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -20,7 +20,7 @@ import Control.Applicative -- assumes all item locations inside the items are correct tryGetRootAttachedFromInvID :: Int -> IM.IntMap Item -> Maybe (Int, IS.IntSet) tryGetRootAttachedFromInvID invid im = do - let imroots = invRootMap' im + let imroots = invRootMap im theroot = fromMaybe invid $ imroots ^? ix invid . _1 . _Just t <- imroots ^? ix theroot . _2 --return (theroot, foldMap (IS.singleton . (^?! _1 . itLocation . ilInvID)) t) @@ -31,7 +31,7 @@ tryGetRootAttachedFromInvID invid im = do -- location ids tryGetRootItemInvID :: Int -> Creature -> Maybe Int tryGetRootItemInvID i cr = do - let adj = case invAdj' (_crInv cr) of + let adj = case invAdj (_crInv cr) of Left str -> error $ "tryToGetRootItemInvID: "++ str Right x -> x theroot <- adj ^? ix i diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 57f9db3cd..fc4fcf426 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -1,8 +1,8 @@ module Dodge.Item.Grammar ( - invTrees', - invIndentIM', - invAdj', - invRootMap', + invTrees, + invIndentIM, + invAdj, + invRootMap, ) where import Control.Applicative @@ -17,10 +17,6 @@ import Dodge.Data.Item import Dodge.DoubleTree import ListHelp -type ComposedItemStructure = - (Item, ComposedItem, [(ComposeLinkType, ComposedItem)], [(ComposeLinkType, ComposedItem)]) -type CIL = (ComposedItem, [(ComposeLinkType, ComposedItem)], [(ComposeLinkType, ComposedItem)]) - useBreakListsLinkTest :: [(ItemStructuralFunction,ComposeLinkType)] -> [(ItemStructuralFunction,ComposeLinkType)] -> LinkTest @@ -35,80 +31,39 @@ useBreakListsLinkTest llist rlist = LinkTest ltest rtest (_,linktype) <- safeHead xs return $ LinkUpdate linktype (set _3 (useBreakListsLinkTest llist (tail xs))) id -cisToItem :: ComposedItemStructure -> Item -cisToItem (x, _, _, _) = x - basePartiallyComposedItem :: Item -> PartiallyComposedItem basePartiallyComposedItem itm = case itm ^. itType . iyBase of - HELD hit -> (itm, WeaponPlatformSF, useBreakListsLinkTest - [] + HELD _ -> (itm, WeaponPlatformSF, useBreakListsLinkTest + (map (\(i,a) -> (AmmoMagSF a,AmmoInLink i a)) (IM.toList $ itm ^. itUse . heldAmmoTypes)) [(WeaponTargetingSF,WeaponTargetingLink), (WeaponScopeSF,WeaponScopeLink)] ) - ATTACH (TARGETATTACH{}) -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing)) + AMMOMAG _ -> ammoComposedItem itm + ATTACH TARGETATTACH{} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing)) + ATTACH ZOOMSCOPE -> (itm,WeaponScopeSF, LinkTest (const Nothing) (const Nothing)) + ATTACH ROCKETHOMER -> (itm,AmmoModifierSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing)) + ATTACH REMOTESCREEN -> (itm,AmmoModifierSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing)) _ -> (itm,UncomposableIsolateSF, LinkTest (const Nothing) (const Nothing)) --AMMOMAG _ -> ammoComposedItem' itm -baseComposedItem :: ItemBaseType -> Item -> CIL -baseComposedItem ibt itm = case ibt of - HELD hit -> heldComposedItem itm hit - AMMOMAG _ -> ammoComposedItem itm - ATTACH BULLETSYNTHESIZER -> (AmmoModifierCI BulletAmmo, [], []) - ATTACH (TARGETATTACH{}) -> (WeaponTargetingCI, [], []) - ATTACH ZOOMSCOPE -> (WeaponScopeCI, [], []) - ATTACH ROCKETHOMER -> (AmmoModifierCI ProjectileAmmo, [], []) - ATTACH REMOTESCREEN -> (AmmoModifierCI ProjectileAmmo, [], []) - _ -> (UncomposableCI, [], []) - -heldComposedItem :: Item -> HeldItemType -> CIL -heldComposedItem itm hit = case hit of - _ -> - ( WeaponCI - , map f ats - , [(WeaponTargetingLink, WeaponTargetingCI), (WeaponScopeLink, WeaponScopeCI)] - ) - where - ats = maybe [] IM.toList $ itm ^? itUse . heldAmmoTypes - f (i, atype) = (AmmoInLink i atype, AmmoCI atype) - -ammoComposedItem :: Item -> CIL +ammoComposedItem :: Item -> PartiallyComposedItem ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do atype <- itm ^? itUse . amagType - return (AmmoCI atype, [(AmmoModLink, AmmoModifierCI atype)], []) - -baseCIS :: Item -> ComposedItemStructure -baseCIS itm = - let (a, b, c) = baseComposedItem (itm ^. itType . iyBase) itm - in (itm, a, b, c) + return (itm, AmmoMagSF atype, useBreakListsLinkTest [(AmmoModifierSF atype, AmmoModLink)] []) type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a) -leftIsParentCombine' :: LDTComb PartiallyComposedItem ComposeLinkType -leftIsParentCombine' ltree rtree = do +leftIsParentCombine :: LDTComb PartiallyComposedItem ComposeLinkType +leftIsParentCombine ltree rtree = do lu <- (ltree ^. ldtValue . _3 . tryRightLink) (rtree ^. ldtValue) return $ ltree & ldtValue %~ (lu ^. luParentUpdate) & ldtRight %~ (++ [(lu ^. luLinkType, rtree & ldtValue %~ (lu ^. luChildUpdate))]) -rightIsParentCombine' :: LDTComb PartiallyComposedItem ComposeLinkType -rightIsParentCombine' ltree rtree = do +rightIsParentCombine :: LDTComb PartiallyComposedItem ComposeLinkType +rightIsParentCombine ltree rtree = do lu <- (rtree ^. ldtValue . _3 . tryLeftLink) (ltree ^. ldtValue) return $ rtree & ldtValue %~ (lu ^. luParentUpdate) & ldtLeft .:~ (lu ^. luLinkType, ltree & ldtValue %~ (lu ^. luChildUpdate)) --- the following imposes a strict ordering on the possible attachments -leftIsParentCombine :: LDTComb ComposedItemStructure ComposeLinkType -leftIsParentCombine (LDT (itm, p, lc, rc) lt rt) t'@(LDT (_, p', _, _) _ _) = do - let f (_, x) = p' == x - (_, ys) = break f rc - (linktype, _) <- safeHead ys - return $ LDT (itm, p, lc, tail ys) lt (rt ++ [(linktype, t')]) - -rightIsParentCombine :: LDTComb ComposedItemStructure ComposeLinkType -rightIsParentCombine t'@(LDT (_, p', _, _) _ _) (LDT (itm, p, lc, rc) lt rt) = do - let f (_, x) = p' == x - (_, ys) = break f lc - (linktype, _) <- safeHead ys - return $ LDT (itm, p, tail ys, rc) ((linktype, t') : lt) rt - leftRightCombine :: LDTComb a b -> LDTComb a b -> @@ -134,14 +89,9 @@ joinItemsInList f xs = snd $ h (xs, []) Nothing -> h (ys, (y : z : zs)) Just w -> h ((w : ys), zs) -invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType ComposedItemStructure] +invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType PartiallyComposedItem] invLDT = joinItemsInList (leftRightCombine leftIsParentCombine rightIsParentCombine) . IM.elems - . fmap (singleLDT . baseCIS) - -invLDT' :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType PartiallyComposedItem] -invLDT' = - joinItemsInList (leftRightCombine leftIsParentCombine' rightIsParentCombine') . IM.elems . fmap (singleLDT . basePartiallyComposedItem) -- this has provoked an error: hopefully it will crop up at some point and get @@ -157,11 +107,8 @@ invLDT' = -- location ids -- consider explicitly reseting the inventory ids (but this probably really -- should be done upstream anyway in the actually creature inventory) -invRootMap :: IM.IntMap Item -> IM.IntMap (Maybe Int, DoubleTree ComposedItemStructure) -invRootMap = foldMap (dtToIntMapWithRoot (^?! _1 . itLocation . ilInvID) . ldtToDT) . invLDT - -invRootMap' :: IM.IntMap Item -> IM.IntMap (Maybe Int, DoubleTree Item) -invRootMap' = foldMap (dtToIntMapWithRoot (^?! itLocation . ilInvID) . fmap (^. _1) . ldtToDT) . invLDT' +invRootMap :: IM.IntMap Item -> IM.IntMap (Maybe Int, DoubleTree Item) +invRootMap = foldMap (dtToIntMapWithRoot (^?! itLocation . ilInvID) . fmap (^. _1) . ldtToDT) . invLDT --invRootMap = foldMap (dtToRootIntMap g . ldtToDT) . invLDT -- where @@ -175,18 +122,6 @@ invAdj :: IM.IntMap Item -> Either String (IM.IntMap (Maybe (Int, Int), [Int], [ invAdj im = do l <- mapM g $ invLDT im return $ IM.unions l - where - g = dtToLRAdjEither getid . ldtToDT - getid (itm, _, _, _) = - maybe - (Left ("invAdj item " ++ show (_itID itm) ++ " location: " ++ show (itm ^? itLocation))) - Right - $ itm ^? itLocation . ilInvID - -invAdj' :: IM.IntMap Item -> Either String (IM.IntMap (Maybe (Int, Int), [Int], [Int])) -invAdj' im = do - l <- mapM g $ invLDT' im - return $ IM.unions l where g = dtToLRAdjEither getid . ldtToDT getid (itm, _, _) = @@ -196,22 +131,11 @@ invAdj' im = do $ itm ^? itLocation . ilInvID invIndentIM :: IM.IntMap Item -> IM.IntMap (Item, Int, LabelDoubleTreeNodeType ComposeLinkType) -invIndentIM = IM.fromAscList . zip [0 ..] . reverse . map (over _1 cisToItem) . concatMap ldtToIndentList . invLDT - -invIndentIM' :: IM.IntMap Item -> IM.IntMap (Item, Int, LabelDoubleTreeNodeType ComposeLinkType) -invIndentIM' = IM.fromAscList . zip [0 ..] . reverse . map (over _1 (^. _1)) - . concatMap ldtToIndentList . invLDT' +invIndentIM = IM.fromAscList . zip [0 ..] . reverse . map (over _1 (^. _1)) + . concatMap ldtToIndentList . invLDT invTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ComposeLinkType Item) -invTrees = IM.unions . map (ldtToIM getindex) . map (fmap cisToItem) . invLDT - where - getindex :: Item -> Int - getindex i = - fromMaybe (error "in invTrees try to get non-inventory item tree") $ - i ^? itLocation . ilInvID - -invTrees' :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ComposeLinkType Item) -invTrees' = IM.unions . map (ldtToIM getindex) . map (fmap (^. _1)) . invLDT' +invTrees = IM.unions . map (ldtToIM getindex) . map (fmap (^. _1)) . invLDT where getindex :: Item -> Int getindex i = diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 0cf5d95b1..8fdbf30a2 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -62,7 +62,7 @@ drawInventory sss w cfig = drawSelectionSections sss (invDisplayParams w) cfig where iextra = fromMaybe mempty $ do inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv - let x = case invAdj' inv of + let x = case invAdj inv of Left str -> error $ "drawInventory: " ++ str Right y -> y return $ inventoryExtra sss cfig w x diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index 036c4ae5e..9237e847d 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -40,7 +40,7 @@ doWdWd we = case we of cr <- w ^? cWorld . lWorld . creatures . ix crid --it <- getItem itid w itRef <- cr ^? crManipulation . manObject . imSelectedItem - it <- invTrees' (_crInv cr) ^? ix itRef + it <- invTrees (_crInv cr) ^? ix itRef return $ doItCrWdWd f it cr w WdWdFromItCrixWdWd it crid f -> \w -> fromMaybe w $ do cr <- w ^? cWorld . lWorld . creatures . ix crid diff --git a/tags b/tags index 1af6dd79a..7b146f0cd 100644 --- a/tags +++ b/tags @@ -1342,7 +1342,7 @@ LBoost src/Dodge/Data/Item/HeldUse.hs 56;" C LBranches src/TreeExtra.hs 24;" C LDT src/Dodge/Data/DoubleTree.hs 39;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C -LDTComb src/Dodge/Item/Grammar.hs 83;" t +LDTComb src/Dodge/Item/Grammar.hs 92;" t LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C @@ -4418,7 +4418,8 @@ allHotkeys src/Dodge/Creature/YourControl.hs 52;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f ammoCheckI src/Dodge/Item/Weapon/TriggerType.hs 118;" f -ammoComposedItem src/Dodge/Item/Grammar.hs 73;" f +ammoComposedItem src/Dodge/Item/Grammar.hs 82;" f +ammoComposedItem' src/Dodge/Item/Grammar.hs 77;" f ammoTweakStrings src/Dodge/Render/HUD.hs 288;" f amr src/Dodge/Item/Held/Rod.hs 46;" f amr src/Dodge/Item/Weapon/BulletGun/Rod.hs 56;" f @@ -4546,9 +4547,9 @@ baseAMRShape src/Dodge/Item/Draw/SPic.hs 444;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseBlockPane src/Dodge/Placements/Wall.hs 63;" f baseBlockPane src/Dodge/Room/Placement.hs 93;" f -baseCIS src/Dodge/Item/Grammar.hs 78;" f +baseCIS src/Dodge/Item/Grammar.hs 87;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 250;" f -baseComposedItem src/Dodge/Item/Grammar.hs 51;" f +baseComposedItem src/Dodge/Item/Grammar.hs 55;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f basePartiallyComposedItem src/Dodge/Item/Grammar.hs 41;" f @@ -4886,9 +4887,9 @@ crSpring src/Dodge/Update.hs 643;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f crToBox' src/Dodge/Creature/ShadowBox.hs 10;" f crUpdateInvidLocations src/Dodge/Inventory/FindRoot.hs 29;" f -crUpdateInvidLocations src/Dodge/Inventory/Location.hs 52;" f +crUpdateInvidLocations src/Dodge/Inventory/Location.hs 53;" f crUpdateItemLocations src/Dodge/Inventory/FindRoot.hs 23;" f -crUpdateItemLocations src/Dodge/Inventory/Location.hs 46;" f +crUpdateItemLocations src/Dodge/Inventory/Location.hs 47;" f crZoneOfPoint src/Dodge/Base/Zone.hs 54;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f craftInfo src/Dodge/Item/Info.hs 154;" f @@ -5726,7 +5727,7 @@ healthTest src/Dodge/Room/LasTurret.hs 93;" f heavyBulDams src/Dodge/Item/Weapon/Bullet.hs 38;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldBounds src/Dodge/Item/Module.hs 27;" f -heldComposedItem src/Dodge/Item/Grammar.hs 62;" f +heldComposedItem src/Dodge/Item/Grammar.hs 66;" f heldEffect src/Dodge/HeldUse.hs 44;" f heldInfo src/Dodge/Item/Info.hs 61;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 24;" f @@ -5840,20 +5841,25 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 315;" f interweave src/Justify.hs 17;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj' src/Dodge/Item/Grammar.hs 160;" f +invAdj src/Dodge/Item/Grammar.hs 183;" f +invAdj' src/Dodge/Item/Grammar.hs 195;" f invDimColor src/Dodge/DisplayInventory.hs 140;" f invDimColor src/Dodge/Inventory/Color.hs 4;" f invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f invHead src/Dodge/Render/HUD.hs 296;" f -invIndentIM src/Dodge/Item/Grammar.hs 172;" f -invLDT src/Dodge/Item/Grammar.hs 131;" f -invRootMap src/Dodge/Item/Grammar.hs 149;" f +invIndentIM src/Dodge/Item/Grammar.hs 207;" f +invIndentIM' src/Dodge/Item/Grammar.hs 210;" f +invLDT src/Dodge/Item/Grammar.hs 146;" f +invLDT' src/Dodge/Item/Grammar.hs 151;" f +invRootMap src/Dodge/Item/Grammar.hs 169;" f +invRootMap' src/Dodge/Item/Grammar.hs 172;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 35;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 17;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 236;" f invSize src/Dodge/Inventory/CheckSlots.hs 40;" f -invTrees src/Dodge/Item/Grammar.hs 175;" f +invTrees src/Dodge/Item/Grammar.hs 214;" f +invTrees' src/Dodge/Item/Grammar.hs 222;" f inventoryExtra src/Dodge/Render/HUD.hs 189;" f inventoryExtraH src/Dodge/Render/HUD.hs 193;" f inventoryX src/Dodge/Creature.hs 115;" f @@ -5935,7 +5941,7 @@ jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jShape src/Dodge/Placements/LightSource.hs 43;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f jetPack src/Dodge/Item/Equipment.hs 92;" f -joinItemsInList src/Dodge/Item/Grammar.hs 122;" f +joinItemsInList src/Dodge/Item/Grammar.hs 137;" f jps0' src/Dodge/LevelGen/Data.hs 60;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/Data.hs 63;" f @@ -6000,11 +6006,11 @@ ldtToIM src/Dodge/DoubleTree.hs 90;" f ldtToIndentList src/Dodge/DoubleTree.hs 93;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 109;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 92;" f -leftIsParentCombine' src/Dodge/Item/Grammar.hs 85;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 107;" f +leftIsParentCombine' src/Dodge/Item/Grammar.hs 94;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 72;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 106;" f +leftRightCombine src/Dodge/Item/Grammar.hs 121;" f legsSPic src/Dodge/Item/Draw/SPic.hs 528;" f liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f liShape src/Dodge/Placements/LightSource.hs 55;" f @@ -6897,7 +6903,8 @@ rhombus src/Polyhedra.hs 71;" f rifle src/Dodge/Item/Held/Cane.hs 51;" f rifle src/Dodge/Item/Weapon/BulletGun/Cane.hs 77;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 99;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 114;" f +rightIsParentCombine' src/Dodge/Item/Grammar.hs 100;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -7064,7 +7071,7 @@ setHotkey src/Dodge/Hotkey.hs 38;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f -setInvPosFromSS src/Dodge/Inventory/Location.hs 69;" f +setInvPosFromSS src/Dodge/Inventory/Location.hs 70;" f setItemCharge src/Dodge/ItEffect.hs 36;" f setLayer src/Picture/Base.hs 139;" f setLinkType src/Dodge/RoomLink.hs 60;" f @@ -7616,7 +7623,7 @@ tryCombine src/Dodge/Update/Input/InGame.hs 252;" f tryGetChannel src/Sound.hs 96;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 21;" f tryGetRootItemInvID src/Dodge/Inventory/FindRoot.hs 10;" f -tryGetRootItemInvID src/Dodge/Inventory/Location.hs 31;" f +tryGetRootItemInvID src/Dodge/Inventory/Location.hs 32;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 36;" f tryNextLoadAction src/Dodge/Reloading.hs 36;" f tryPlay src/Sound.hs 83;" f @@ -7748,7 +7755,7 @@ updateRadarSweeps src/Dodge/Update.hs 445;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 105;" f updateRootItemID src/Dodge/Inventory/FindRoot.hs 16;" f -updateRootItemID src/Dodge/Inventory/Location.hs 39;" f +updateRootItemID src/Dodge/Inventory/Location.hs 40;" f updateScopeZoom src/Dodge/Update/Camera.hs 129;" f updateScopeZoom' src/Dodge/Update/Camera.hs 134;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f