diff --git a/ghcidOutput b/ghcidOutput index e3565774c..26617a904 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (620 modules, at 18:25:19) +All good (620 modules, at 21:25:42) diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index d7467ece3..a4a09ca56 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -48,7 +48,7 @@ followImpulse cr w imp = case imp of TurnTo p -> crup $ creatureTurnTo p cr ChangePosture post -> crup $ cr & crStance . posture .~ post UseItem -> (useRootItem $ _crID cr, cr) - SwitchToItem i -> crup $ cr & crManipulation . manObject .~ InInventory (SelectedItem i i) + SwitchToItem i -> crup $ cr & crManipulation . manObject .~ InInventory (SelectedItem i i mempty) Melee cid' -> ( hitCr cid' , crMvAbsolute (10 *.* normalizeV (posFromID cid' -.- cpos)) $ cr & crMeleeCooldown .~ 20 diff --git a/src/Dodge/Data/Item/Effect.hs b/src/Dodge/Data/Item/Effect.hs index 29aa2b601..553331b55 100644 --- a/src/Dodge/Data/Item/Effect.hs +++ b/src/Dodge/Data/Item/Effect.hs @@ -21,11 +21,11 @@ data ItInvEffect | ChargeIfEquipped | ChargeIfInInventory | SetCharge Int - | EffectIfHeld ItInvEffect ItInvEffect + | EffectRootNotroot ItInvEffect ItInvEffect | CreateHeldLight | CreateShieldWall | RemoveShieldWall - | EffectWhileHeld ItInvEffect + | EffectWhileRoot ItInvEffect deriving (Eq, Ord, Show, Read) --Generic, Flat) data ItFloorEffect = NoFloorEffect diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index 7427d9ca5..19c062f08 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -23,7 +23,13 @@ data CrInt = CrInt deriving (Eq,Ord,Show,Read) data ItemLocation - = InInv {_ilCrID :: Int, _ilInvID :: Int, _ilIsRoot :: Bool, _ilIsSelected :: Bool} + = InInv + { _ilCrID :: Int + , _ilInvID :: Int + , _ilIsRoot :: Bool + , _ilIsSelected :: Bool + , _ilIsAttached :: Bool + } | OnTurret {_ilTuID :: Int} | OnFloor {_ilFlID :: NewInt FloorInt} | InVoid diff --git a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs index ae196bde2..e52f82874 100644 --- a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs +++ b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs @@ -5,6 +5,7 @@ module Dodge.Data.Item.Use.Consumption.LoadAction where +import qualified Data.IntSet as IS import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -30,7 +31,11 @@ data NearbyManipulation data InventoryManipulation = SortInventory - | SelectedItem { _imSelectedItem :: Int, _imRootItem :: Int} + | SelectedItem + { _imSelectedItem :: Int + , _imRootItem :: Int + , _imAttachedItems :: IS.IntSet + } deriving (Eq, Ord, Show, Read) --Generic, Flat) data InvSelAction diff --git a/src/Dodge/DoubleTree.hs b/src/Dodge/DoubleTree.hs index f9962399e..f7cf8a05f 100644 --- a/src/Dodge/DoubleTree.hs +++ b/src/Dodge/DoubleTree.hs @@ -32,6 +32,14 @@ dtToAdjacency f (DT x l r) = IM.insert (f x) (map g l <> map g r) where g = f . _dtValue +dtToIntMapWithRoot :: (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe Int, DoubleTree a) +dtToIntMapWithRoot f t@(DT x l r) = IM.insert (f x) (Nothing, t) $ + foldMap (dtToRootIntMap' (f x) f) $ l <> r + +dtToRootIntMap' :: Int -> (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe Int, DoubleTree a) +dtToRootIntMap' root f t@(DT x l r) = IM.insert (f x) (Just root, t) $ + foldMap (dtToRootIntMap' root f) $ l <> r + dtToUpDownAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap ([Int],[Int]) dtToUpDownAdj f (DT x l r) = IM.insert (f x) (map g l , map g r) . IM.unions $ map (dtToUpDownAdj f) $ l <> r diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index eaa662d12..fb7e34a33 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -47,8 +47,15 @@ tryPutItemInInv cid flit w = case maybeInvSlot of where it = _flIt flit maybeInvSlot = checkInvSlotsYou it w + -- not sure if the following is necessary updateItLocation invid w' = w' & cWorld . lWorld . itemLocations . ix (_itID it) - .~ InInv cid invid False False + .~ InInv + {_ilCrID = cid + , _ilInvID = invid + , _ilIsRoot = False + , _ilIsSelected = False + , _ilIsAttached = False + } ---- should select the item on the floor if no inventory space? --createAndSelectItem :: Item -> World -> World diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index c42f178d2..9895083c6 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -5,6 +5,8 @@ module Dodge.Inventory.Location , tryGetRootItemInvID ) where + +import qualified Data.IntSet as IS import Dodge.Base.You import Dodge.Data.SelectionList import Dodge.Data.Item.Use.Consumption.LoadAction @@ -15,6 +17,15 @@ import Dodge.Item.Grammar import Data.Maybe 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 + theroot = fromMaybe invid $ imroots ^? ix invid . _1 . _Just + t <- imroots ^? ix theroot . _2 + return (theroot, foldMap (IS.singleton . (^?! _1 . itLocation . ilInvID)) t) + + -- this assumes the creature inventory is well formed, specifically the -- location ids tryGetRootItemInvID :: Int -> Creature -> Maybe Int @@ -22,8 +33,8 @@ tryGetRootItemInvID i cr = do let adj = case invAdj' (_crInv cr) of Left str -> error $ "tryToGetRootItemInvID: "++ str Right x -> x - thetree <- adj ^? ix i -- to check that the index does point to SOME item in the inventory - thetree ^? _1 . _Just . _1 <|> Just i + theroot <- adj ^? ix i + theroot ^? _1 . _Just . _1 <|> Just i updateRootItemID :: Creature -> Creature updateRootItemID cr = fromMaybe cr $ do @@ -44,8 +55,13 @@ crUpdateInvidLocations mo crid lw invid itm = lw & itemLocations %~ IM.insert itid newloc where itid = itm ^. itID - newloc = InInv crid invid (Just invid == mo ^? inInventory . imSelectedItem) - (Just invid == mo ^? inInventory . imRootItem) + newloc = InInv + { _ilCrID = crid + , _ilInvID = invid + , _ilIsRoot = Just invid == mo ^? inInventory . imSelectedItem + , _ilIsSelected = Just invid == mo ^? inInventory . imRootItem + , _ilIsAttached = invid `IS.member` (mo ^. inInventory . imAttachedItems) + } -- this should be looked at, as it is sometimes used in functions that need not -- concern the player creature @@ -61,8 +77,12 @@ setInvPosFromSS w = case i of (-1) -> Just $ InInventory SortInventory 0 -> do - rootid <- tryGetRootItemInvID j (you w) - return $ InInventory $ SelectedItem j rootid + (rootid,aset) <- tryGetRootAttachedFromInvID j (you w ^. crInv) + return $ InInventory $ SelectedItem + { _imSelectedItem = j + , _imRootItem = rootid + , _imAttachedItems = aset + } 1 -> Just SelNothing 2 -> Just $ InNearby SortNearby 3 -> Just $ InNearby $ SelCloseObject j diff --git a/src/Dodge/ItEffect.hs b/src/Dodge/ItEffect.hs index c3de716b5..4973e6a4c 100644 --- a/src/Dodge/ItEffect.hs +++ b/src/Dodge/ItEffect.hs @@ -12,17 +12,17 @@ doInvEffect iie = case iie of ChargeIfEquipped -> chargeIfEquipped ChargeIfInInventory -> chargeIfInInventory SetCharge i -> setItemCharge i - EffectIfHeld f g -> onOffEff f g + EffectRootNotroot f g -> rootNotrootEff f g CreateHeldLight -> createHeldLight CreateShieldWall -> createShieldWall RemoveShieldWall -> removeShieldWall - EffectWhileHeld f -> onOffEff f NoInvEffect + EffectWhileRoot f -> rootNotrootEff f NoInvEffect doFloorEffect :: ItFloorEffect -> Int -> World -> World doFloorEffect NoFloorEffect = const id -onOffEff :: ItInvEffect -> ItInvEffect -> Item -> Creature -> World -> World -onOffEff f g it +rootNotrootEff :: ItInvEffect -> ItInvEffect -> Item -> Creature -> World -> World +rootNotrootEff f g it | it ^? itLocation . ilIsRoot == Just True = doInvEffect f it | otherwise = doInvEffect g it diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 13ff9114a..c2f8f52c2 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -2,6 +2,7 @@ module Dodge.Item.Grammar (invTrees , invIndentIM , invAdj' + , invRootMap ) where import Control.Applicative @@ -101,6 +102,16 @@ invLDT = joinItemsInList (leftRightCombine leftIsParentCombine rightIsParentComb -- (error ("invAdj item " ++ show (_itID itm) ++ " location:" ++ show (itm ^? itLocation . ilInvID)) ) -- $ itm ^? itLocation . ilInvID + -- this assumes the creature inventory is well formed, specifically the + -- 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 = foldMap (dtToRootIntMap g . ldtToDT) . invLDT +-- where +-- g = _ + -- this assumes the creature inventory is well formed, specifically the -- location ids -- consider explicitly reseting the inventory ids (but this probably really diff --git a/src/Dodge/Item/Held/Utility.hs b/src/Dodge/Item/Held/Utility.hs index 968adb15a..1f7eb6a14 100644 --- a/src/Dodge/Item/Held/Utility.hs +++ b/src/Dodge/Item/Held/Utility.hs @@ -9,7 +9,7 @@ import Dodge.Data.Item flatShield :: Item flatShield = defaultHeldItem - & itEffect . ieInv .~ EffectIfHeld CreateShieldWall RemoveShieldWall + & itEffect . ieInv .~ EffectRootNotroot CreateShieldWall RemoveShieldWall & itUse . heldAim . aimWeight .~ 5 & itUse . heldAim . aimTurnSpeed .~ 0.5 & itUse . heldAim . aimStance .~ TwoHandFlat @@ -26,7 +26,7 @@ latchkey _ = defaultHeldItem torch :: Item torch = defaultHeldItem - & itEffect . ieInv .~ EffectWhileHeld CreateHeldLight + & itEffect . ieInv .~ EffectWhileRoot CreateHeldLight & itType . iyBase .~ HELD TORCH -- & itUse . heldAim . aimHandlePos .~ 5 & itUse . heldAim . aimMuzzles . ix 0 . mzPos . _x .~ 10 diff --git a/src/Dodge/Item/Location.hs b/src/Dodge/Item/Location.hs index 87b3b13a5..cd3d92824 100644 --- a/src/Dodge/Item/Location.hs +++ b/src/Dodge/Item/Location.hs @@ -35,12 +35,13 @@ pointerToItemLocation _ = const pure pointerYourSelectedItem :: Applicative a => (Item -> a Item) -> World -> a World pointerYourSelectedItem f w = fromMaybe (pure w) $ do itinvid <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . inInventory . imSelectedItem - Just $ pointerToItemLocation (InInv 0 itinvid True True) f w + Just $ pointerToItemLocation (InInv 0 itinvid True True True) f w + -- note the ilIsRoot/Selected/Attached booleans are irrelevant pointerYourRootItem :: Applicative a => (Item -> a Item) -> World -> a World pointerYourRootItem f w = fromMaybe (pure w) $ do itinvid <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . inInventory . imRootItem - Just $ pointerToItemLocation (InInv 0 itinvid True True) f w + Just $ pointerToItemLocation (InInv 0 itinvid True True True) f w pointerToItem :: Applicative f => diff --git a/src/Dodge/Item/Location/Initialize.hs b/src/Dodge/Item/Location/Initialize.hs index 3a23d64e7..eb5278247 100644 --- a/src/Dodge/Item/Location/Initialize.hs +++ b/src/Dodge/Item/Location/Initialize.hs @@ -37,13 +37,20 @@ initCrItemLocations w cr = (w', cr & crInv .~ newinv) where (w',newinv) = imapAccumR (initCrItemLocation cr) w (_crInv cr) +-- does not worry about creature manipulation for now initCrItemLocation :: Creature -> Int -> LWorld -> Item -> (LWorld,Item) initCrItemLocation cr invid w it = (w & itemLocations . at locid ?~ loc ,it & itID .~ locid & itLocation .~ loc) where locid = IM.newKey ( w ^. itemLocations) - loc = InInv (_crID cr) invid False False + loc = InInv + { _ilCrID = _crID cr + , _ilInvID = invid + , _ilIsRoot = False + , _ilIsSelected = False + , _ilIsAttached = False + } initFlItemLocation :: LWorld -> FloorItem -> (LWorld, FloorItem) diff --git a/src/Dodge/Item/Weapon/Remote.hs b/src/Dodge/Item/Weapon/Remote.hs index 59d7dd9ac..4b5a72b2d 100644 --- a/src/Dodge/Item/Weapon/Remote.hs +++ b/src/Dodge/Item/Weapon/Remote.hs @@ -8,7 +8,7 @@ import Geometry setRemoteScope :: Int -> Point2 -> World -> World setRemoteScope itid pos w = case w ^? cWorld . lWorld . itemLocations . ix itid of - Just (InInv cid' invid _ _) -> + Just (InInv cid' invid _ _ _) -> w & cWorld . lWorld . creatures . ix cid' . crInv . ix invid . itScope . remotePos diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index bd2b960ce..ff339969b 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -125,7 +125,7 @@ floorItemPickupInfo n itm -- it is probably desirable for this to crash hard for now yourAugmentedItem :: (Item -> a) -> a -> (Either FloorItem Button -> a) -> World -> a yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of - Just (InInventory (SelectedItem i _)) -> f $ yourInv w ^?! ix i + Just (InInventory (SelectedItem i _ _)) -> f $ yourInv w ^?! ix i Just (InNearby (SelCloseObject i)) -> g $ w ^?! hud . closeObjects . ix i _ -> x diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 1e4bf18a6..3e7858ddf 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -25,7 +25,8 @@ testStringInit u = (topTestPart u (IM.toList . IM.filter (\itloc -> itloc ^? ilCrID == Just 0) $ (u ^. uvWorld . cWorld . lWorld . itemLocations)) <> ( IM.elems $ fmap h (u ^?! uvWorld . cWorld . lWorld . creatures . ix 0 . crInv)) where h itm = (_itID itm, _itLocation itm) - showh (x,(InInv a b c d)) = show x ++ "," ++ show a ++ "," ++ show b ++"," ++ show c ++"," ++ show d + showh (x,(InInv a b c d e)) = show x ++ "," ++ show a ++ "," ++ show b ++"," ++ show c ++"," ++ show d + ++ "," ++ show e showh _ = "" topTestPart :: Universe -> [String] @@ -35,7 +36,7 @@ topTestPart u = [show $ u ^? uvWorld . hud . hudElement . diSections . sssExtra showManObj :: ManipulatedObject -> String showManObj (InInventory SortInventory) = "SortInventory" -showManObj (InInventory (SelectedItem x y)) = "SelItem: "++ show x++ " Root: "++show y +showManObj (InInventory (SelectedItem x y z)) = "SelItem: "++ show x++ " Root: "++show y++" Attached: "++show z showManObj (SelNothing) = "SelNothing" showManObj ((InNearby SortNearby)) = "SortNearby" showManObj (InNearby (SelCloseObject x)) = "Close " ++ show x diff --git a/tags b/tags index b01d3cadc..76ef4a851 100644 --- a/tags +++ b/tags @@ -282,7 +282,7 @@ Branch src/Dodge/Room/Branch.hs 4;" m Breather src/Dodge/Room/Breather.hs 1;" m BrigSS src/Dodge/Data/Scenario.hs 102;" C Brute src/Dodge/Data/Creature/Capability.hs 19;" C -Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C +Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 18;" C BtNoLabel src/Dodge/Data/Button.hs 63;" C BtOff src/Dodge/Data/Button.hs 63;" C BtOn src/Dodge/Data/Button.hs 63;" C @@ -373,7 +373,7 @@ Carriage src/Dodge/Data/Creature/Stance.hs 20;" t Carte src/Dodge/Render/HUD/Carte.hs 1;" m ChainAnos src/Dodge/Layout/Tree/Annotate.hs 28;" C ChainEffect src/Dodge/ChainEffect.hs 4;" t -ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 84;" t +ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 57;" t ChainEffect src/Dodge/ChainEffect.hs 1;" m ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C @@ -823,8 +823,8 @@ EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t Effect src/Dodge/Data/Item/Effect.hs 6;" m Effect src/Dodge/Default/Item/Effect.hs 1;" m EffectArguments src/Dodge/Data/Terminal.hs 92;" t -EffectIfHeld src/Dodge/Data/Item/Effect.hs 24;" C -EffectWhileHeld src/Dodge/Data/Item/Effect.hs 28;" C +EffectRootNotroot src/Dodge/Data/Item/Effect.hs 24;" C +EffectWhileRoot src/Dodge/Data/Item/Effect.hs 28;" C EighthRes src/Dodge/Data/Config.hs 95;" C Either src/Dodge/Layout/Tree/Either.hs 4;" m Eldritch src/Dodge/Data/Scenario.hs 34;" C @@ -1196,15 +1196,15 @@ InDivineZone src/Dodge/Data/Scenario.hs 22;" C InDream src/Dodge/Data/Scenario.hs 19;" C InGame src/Dodge/Update/Input/InGame.hs 1;" m InInv src/Dodge/Data/Item/Location.hs 26;" C -InInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" C +InInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" C InLink src/Dodge/Data/Room.hs 44;" C InLink src/Dodge/Room/Data.hs 44;" C -InNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" C +InNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" C InParallelUniverse src/Dodge/Data/Scenario.hs 21;" C InPlacement src/Dodge/Data/GenWorld.hs 133;" t InRealWorld src/Dodge/Data/Scenario.hs 18;" C InSimulation src/Dodge/Data/Scenario.hs 20;" C -InVoid src/Dodge/Data/Item/Location.hs 29;" C +InVoid src/Dodge/Data/Item/Location.hs 35;" C Inanimate src/Dodge/Data/ActionPlan.hs 17;" C Inanimate src/Dodge/Creature/Inanimate.hs 5;" m InanimateAI src/Dodge/Data/Creature/Misc.hs 51;" C @@ -1248,13 +1248,13 @@ InvLayer src/Dodge/Picture/Layer/Data.hs 12;" C InvSel src/Dodge/Data/Creature/InvSel.hs 13;" t InvSel src/Dodge/Data/LoadAction.hs 19;" t InvSel src/Dodge/Data/Creature/InvSel.hs 5;" m -InvSelAction src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 36;" t +InvSelAction src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 41;" t InvSelAction src/Dodge/Data/LoadAction.hs 24;" t Inventory src/Dodge/Inventory.hs 2;" m InventoryChange src/Dodge/Data/World.hs 32;" C InventoryColor src/Dodge/Item/InventoryColor.hs 1;" m InventoryDisplay src/Dodge/Item/Weapon/InventoryDisplay.hs 4;" m -InventoryManipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" t +InventoryManipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 32;" t InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C Investigate src/Dodge/Data/ActionPlan.hs 184;" C Invisible src/Dodge/Data/CamouflageStatus.hs 13;" C @@ -1549,9 +1549,9 @@ Make src/Dodge/Corpse/Make.hs 1;" m MakeDefaultCorpse src/Dodge/Data/Creature.hs 92;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 31;" C -ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t -Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 13;" t -Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C +ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" t +Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t +Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C MapHelp src/MapHelp.hs 1;" m Material src/Dodge/Data/Material.hs 11;" t Material src/Dodge/Data/Material.hs 6;" m @@ -1683,7 +1683,7 @@ NearCosmicRays src/Dodge/Data/Scenario.hs 84;" C NearDustBelt src/Dodge/Data/Scenario.hs 85;" C NearGravityFlux src/Dodge/Data/Scenario.hs 83;" C NearSolar src/Dodge/Data/Scenario.hs 82;" C -NearbyManipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 26;" t +NearbyManipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 27;" t NewID src/Dodge/Base/NewID.hs 1;" m NewInt src/NewInt.hs 15;" t NewInt src/NewInt.hs 7;" m @@ -1719,7 +1719,7 @@ NoHammer src/Dodge/Data/Hammer.hs 13;" C NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoInvEffect src/Dodge/Data/ItEffect.hs 37;" C NoInvEffect src/Dodge/Data/Item/Effect.hs 20;" C -NoInvSelAction src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 37;" C +NoInvSelAction src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 42;" C NoInvSelAction src/Dodge/Data/LoadAction.hs 25;" C NoItAttachment src/Dodge/Data/Item/Attachment.hs 18;" C NoItAttachment src/Dodge/Item/Attachment/Data.hs 20;" C @@ -1817,7 +1817,7 @@ OnBack src/Dodge/Equipment/Data.hs 20;" C OnChest src/Dodge/Data/Equipment/Misc.hs 22;" C OnChest src/Dodge/Equipment/Data.hs 19;" C OnEdge src/Dodge/Data/Room.hs 46;" C -OnFloor src/Dodge/Data/Item/Location.hs 28;" C +OnFloor src/Dodge/Data/Item/Location.hs 34;" C OnHead src/Dodge/Data/Equipment/Misc.hs 21;" C OnHead src/Dodge/Equipment/Data.hs 18;" C OnLeftWrist src/Dodge/Data/Equipment/Misc.hs 24;" C @@ -1829,7 +1829,7 @@ OnRightWrist src/Dodge/Data/Equipment/Misc.hs 25;" C OnRightWrist src/Dodge/Equipment/Data.hs 22;" C OnSpecial src/Dodge/Data/Equipment/Misc.hs 27;" C OnSpecial src/Dodge/Equipment/Data.hs 24;" C -OnTurret src/Dodge/Data/Item/Location.hs 27;" C +OnTurret src/Dodge/Data/Item/Location.hs 33;" C OnceSound src/Dodge/Data/SoundOrigin.hs 15;" C OneArgument src/Dodge/Data/Terminal.hs 94;" C OneHand src/Dodge/Data/Item/Use.hs 185;" C @@ -2293,11 +2293,11 @@ SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 49;" t SeeAbove src/Dodge/Data/Wall.hs 40;" C SeeThrough src/Dodge/Data/Wall.hs 39;" C -SelCloseObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C -SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" C +SelCloseObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C +SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" C SelectUse src/Dodge/SelectUse.hs 1;" m Select_creature src/Dodge/Data/Config.hs 92;" C -SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" C +SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 34;" C SelectionInfo src/Dodge/Data/SelectionList.hs 84;" C SelectionIntMap src/SelectionIntMap.hs 1;" m SelectionItem src/Dodge/Data/SelectionList.hs 75;" t @@ -2412,8 +2412,8 @@ SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C SonicGuns src/Dodge/Item/Weapon/SonicGuns.hs 1;" m -SortInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 32;" C -SortNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 27;" C +SortInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" C +SortNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C Sound src/Sound/Data.hs 49;" t Sound src/Dodge/Material/Sound.hs 1;" m Sound src/Dodge/WorldEvent/Sound.hs 1;" m @@ -3491,14 +3491,16 @@ _ieMID src/Dodge/Data/ItEffect.hs 27;" f _ieMID src/Dodge/Data/ItEffect.hs 32;" f _ieOnDrop src/Dodge/Data/Item/Effect.hs 15;" f _ieOnInsert src/Dodge/Data/Item/Effect.hs 14;" f -_ilCrID src/Dodge/Data/Item/Location.hs 26;" f -_ilFlID src/Dodge/Data/Item/Location.hs 28;" f -_ilInvID src/Dodge/Data/Item/Location.hs 26;" f -_ilIsRoot src/Dodge/Data/Item/Location.hs 26;" f -_ilIsSelected src/Dodge/Data/Item/Location.hs 26;" f -_ilTuID src/Dodge/Data/Item/Location.hs 27;" f -_imRootItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" f -_imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" f +_ilCrID src/Dodge/Data/Item/Location.hs 27;" f +_ilFlID src/Dodge/Data/Item/Location.hs 34;" f +_ilInvID src/Dodge/Data/Item/Location.hs 28;" f +_ilIsAttached src/Dodge/Data/Item/Location.hs 31;" f +_ilIsRoot src/Dodge/Data/Item/Location.hs 29;" f +_ilIsSelected src/Dodge/Data/Item/Location.hs 30;" f +_ilTuID src/Dodge/Data/Item/Location.hs 33;" f +_imAttachedItems src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 37;" f +_imRootItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 36;" f +_imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 35;" f _immediateEffect src/Loop/Data.hs 9;" f _immediateUpdate src/Loop/Data.hs 12;" f _impulseUseAheadPos src/Dodge/Data/ActionPlan.hs 56;" f @@ -3507,8 +3509,8 @@ _impulseUseTargetCID src/Dodge/Data/ActionPlan.hs 50;" f _impulsesListList src/Dodge/Data/ActionPlan.hs 98;" f _imtBulletTrajectoryType src/Dodge/Data/Item/Combine.hs 210;" f _imtTargetType src/Dodge/Data/Item/Combine.hs 211;" f -_inInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" f -_inNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" f +_inInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" f +_inNearby src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" f _input src/Dodge/Data/World.hs 43;" f _insertMax src/Dodge/Data/LoadAction.hs 13;" f _instantBullets src/Dodge/Data/LWorld.hs 106;" f @@ -3524,7 +3526,7 @@ _iselMItem src/Dodge/Data/Creature/InvSel.hs 16;" f _iselPos src/Dodge/Data/Creature/Capability.hs 22;" f _iselPos src/Dodge/Data/Creature/InvSel.hs 14;" f _iselPos src/Dodge/Data/LoadAction.hs 19;" f -_ispCloseObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" f +_ispCloseObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f _itAttachments src/Dodge/Data/Item.hs 48;" f _itCurseStatus src/Dodge/Data/Item.hs 44;" f _itDimension src/Dodge/Data/Item.hs 43;" f @@ -3622,7 +3624,7 @@ _machines src/Dodge/Data/LWorld.hs 126;" f _magShieldMgMIX src/Dodge/Data/Item/Params.hs 19;" f _magnets src/Dodge/Data/LWorld.hs 128;" f _mainAction src/Dodge/Data/ActionPlan.hs 171;" f -_manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" f +_manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" f _matUBO src/Data/Preload/Render.hs 39;" f _mbAttach src/Dodge/Tree/Compose/Data.hs 10;" f _mbTree src/Dodge/Tree/Compose/Data.hs 10;" f @@ -4392,7 +4394,6 @@ advanceScrollAmount src/Dodge/Update.hs 297;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Action/Movement.hs 56;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f -afterRecoil src/Dodge/Item/Weapon/TriggerType.hs 295;" f aimDelaySweep src/Dodge/Render/ShapePicture.hs 45;" f aimStanceInfo src/Dodge/Item/Info.hs 229;" f aimTurn src/Dodge/Creature/YourControl.hs 189;" f @@ -4411,7 +4412,7 @@ airlockZ src/Dodge/Room/Airlock.hs 91;" f 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 145;" f +ammoCheckI src/Dodge/Item/Weapon/TriggerType.hs 118;" f ammoComposedItem src/Dodge/Item/Grammar.hs 45;" f ammoTweakStrings src/Dodge/Render/HUD.hs 288;" f amr src/Dodge/Item/Held/Rod.hs 46;" f @@ -4580,7 +4581,7 @@ bezierGun src/Dodge/Item/Weapon/Bezier.hs 24;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 216;" f bindFBO src/Render.hs 244;" f -blCheck src/Dodge/Item/Weapon/TriggerType.hs 398;" f +blCheck src/Dodge/Item/Weapon/TriggerType.hs 291;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f @@ -4879,9 +4880,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 39;" f +crUpdateInvidLocations src/Dodge/Inventory/Location.hs 52;" f crUpdateItemLocations src/Dodge/Inventory/FindRoot.hs 23;" f -crUpdateItemLocations src/Dodge/Inventory/Location.hs 33;" f +crUpdateItemLocations src/Dodge/Inventory/Location.hs 46;" 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 @@ -4894,7 +4895,7 @@ createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f createHeadLamp src/Dodge/Euse.hs 159;" f createHeldLight src/Dodge/ItEffect.hs 70;" f -createItemYou src/Dodge/Inventory/Add.hs 67;" f +createItemYou src/Dodge/Inventory/Add.hs 70;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 76;" f createPathGrid src/Dodge/Room/Path.hs 21;" f @@ -5398,19 +5399,15 @@ dropItem src/Dodge/Creature/Action.hs 177;" f dropItemKey src/Dodge/Config/KeyConfig.hs 24;" f drumMag src/Dodge/Item/Ammo.hs 36;" f dtIL src/Dodge/DoubleTree.hs 22;" f -dtToAdjRootParent src/Dodge/DoubleTree.hs 65;" f -dtToAdjRootParentEither src/Dodge/DoubleTree.hs 71;" f +dtToAdjRootParent src/Dodge/DoubleTree.hs 73;" f +dtToAdjRootParentEither src/Dodge/DoubleTree.hs 79;" f dtToAdjacency src/Dodge/DoubleTree.hs 29;" f -dtToLRAdj src/Dodge/DoubleTree.hs 43;" f -dtToLRAdjEither src/Dodge/DoubleTree.hs 53;" f -dtToUpDownAdj src/Dodge/DoubleTree.hs 35;" f +dtToIntMapWithRoot src/Dodge/DoubleTree.hs 35;" f +dtToLRAdj src/Dodge/DoubleTree.hs 51;" f +dtToLRAdjEither src/Dodge/DoubleTree.hs 61;" f +dtToRootIntMap' src/Dodge/DoubleTree.hs 39;" f +dtToUpDownAdj src/Dodge/DoubleTree.hs 43;" f dummyMenuOption src/Dodge/Menu/Option.hs 81;" f -duplicateItem src/Dodge/Item/Weapon/TriggerType.hs 742;" f -duplicateLoaded src/Dodge/Item/Weapon/TriggerType.hs 688;" f -duplicateLoadedBarrels src/Dodge/Item/Weapon/TriggerType.hs 714;" f -duplicateNumBarrels src/Dodge/Item/Weapon/TriggerType.hs 698;" f -duplicateOffsetsFocus src/Dodge/Item/Weapon/TriggerType.hs 723;" f -duplicateOffsetsV2 src/Dodge/Item/Weapon/TriggerType.hs 747;" f ebFlicker src/Dodge/EnergyBall.hs 94;" f edgeFormatting src/Dodge/Combine/Graph.hs 119;" f edgeToPic src/Dodge/Debug/Picture.hs 392;" f @@ -5689,8 +5686,8 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 37;" f -hammerCheck src/Dodge/Item/Weapon/TriggerType.hs 403;" f -hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 414;" f +hammerCheck src/Dodge/Item/Weapon/TriggerType.hs 296;" f +hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 307;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 42;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -5715,7 +5712,7 @@ hatCombinations src/Dodge/Combine/Combinations.hs 33;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 118;" f headLampShape src/Dodge/Item/Draw/SPic.hs 494;" f -headMap src/Dodge/DoubleTree.hs 109;" f +headMap src/Dodge/DoubleTree.hs 117;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f @@ -5839,19 +5836,20 @@ 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 104;" f +invAdj' src/Dodge/Item/Grammar.hs 118;" 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 114;" f +invIndentIM src/Dodge/Item/Grammar.hs 128;" f invLDT src/Dodge/Item/Grammar.hs 91;" f +invRootMap src/Dodge/Item/Grammar.hs 108;" 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 117;" f +invTrees src/Dodge/Item/Grammar.hs 131;" f inventoryExtra src/Dodge/Render/HUD.hs 189;" f inventoryExtraH src/Dodge/Render/HUD.hs 193;" f inventoryX src/Dodge/Creature.hs 115;" f @@ -5893,7 +5891,7 @@ itBounds src/Dodge/Item/Module.hs 22;" f itSlotsTaken src/Dodge/Inventory/ItemSpace.hs 9;" f itSlotsTaken src/Dodge/Item/SlotsTaken.hs 9;" f itStackAmount src/Dodge/Item/Amount.hs 7;" f -itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 158;" f +itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 131;" f itemBaseName src/Dodge/Item/Display.hs 62;" f itemBlips src/Dodge/Item/Weapon/UseEffect.hs 38;" f itemBlips src/Dodge/RadarSweep.hs 75;" f @@ -5981,7 +5979,7 @@ lasTunnel src/Dodge/Room/LasTurret.hs 124;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f lasTurret src/Dodge/Placements/Turret.hs 29;" f -lastMap src/Dodge/DoubleTree.hs 113;" f +lastMap src/Dodge/DoubleTree.hs 121;" f latchkey src/Dodge/Item/Held/Utility.hs 23;" f latchkey src/Dodge/Item/PassKey.hs 14;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f @@ -5992,10 +5990,10 @@ launcherX src/Dodge/Item/Held/Launcher.hs 48;" f layerNum src/Picture/Data.hs 31;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f -ldtIL src/Dodge/DoubleTree.hs 88;" f +ldtIL src/Dodge/DoubleTree.hs 96;" f ldtToDT src/Dodge/DoubleTree.hs 13;" f -ldtToIM src/Dodge/DoubleTree.hs 82;" f -ldtToIndentList src/Dodge/DoubleTree.hs 85;" f +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 57;" f @@ -6058,7 +6056,7 @@ loadingScreen src/Dodge/Menu/Loading.hs 7;" f loadme src/Dodge/Debug/Terminal.hs 135;" f lockAndKeyRoomList src/Dodge/Room/LockAndKeyList.hs 11;" f lockInv src/Dodge/Inventory/Lock.hs 6;" f -lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 91;" f +lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 64;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 14;" f lockedStart src/Dodge/Room/RunPast.hs 34;" f @@ -6275,7 +6273,7 @@ mntLight src/Dodge/Placement/Instance/LightSource.hs 154;" f mntLight src/Dodge/Placements/LightSource.hs 89;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 159;" f mntLightLnkCond src/Dodge/Placements/LightSource.hs 94;" f -modClock src/Dodge/Item/Weapon/TriggerType.hs 473;" f +modClock src/Dodge/Item/Weapon/TriggerType.hs 366;" f modTo src/Geometry/Zone.hs 10;" f modifierKey src/Dodge/Config/KeyConfig.hs 34;" f moduleAttachPosition src/Dodge/Item/Module.hs 6;" f @@ -6405,7 +6403,6 @@ obstructPathsCrossing src/Dodge/Path.hs 138;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 498;" f onEquipWristShield src/Dodge/Euse.hs 83;" f onLayerL src/Dodge/Picture/Layer.hs 16;" f -onOffEff src/Dodge/ItEffect.hs 24;" f onRemoveWristShield src/Dodge/Euse.hs 92;" f onXY src/Geometry/Vector3D.hs 130;" f oneH src/Dodge/Creature/Test.hs 97;" f @@ -6494,7 +6491,7 @@ pesNearSeg src/Dodge/Zoning/Pathing.hs 37;" f picAtCrPos1 src/Dodge/Render/ShapePicture.hs 100;" f picFormat src/Polyhedra.hs 22;" f picMap src/Picture/Base.hs 67;" f -pickUpItem src/Dodge/Inventory/Add.hs 79;" f +pickUpItem src/Dodge/Inventory/Add.hs 82;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f pickUpSound src/Dodge/SoundLogic/Synonyms.hs 4;" f picsToSelectable src/Dodge/Render/HUD.hs 349;" f @@ -6652,8 +6649,8 @@ prependTwo src/Geometry.hs 165;" f pressedMBEffects src/Dodge/Update/UsingInput.hs 27;" f pressedMBEffectsNoInventory src/Dodge/Update/UsingInput.hs 40;" f pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 206;" f -prettyDT src/Dodge/DoubleTree.hs 118;" f -prettyLDT src/Dodge/DoubleTree.hs 122;" f +prettyDT src/Dodge/DoubleTree.hs 126;" f +prettyLDT src/Dodge/DoubleTree.hs 130;" f primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f printColumnTitles src/Dodge/Tree/Shift.hs 142;" f printColumns src/Dodge/Tree/Shift.hs 132;" f @@ -6852,8 +6849,7 @@ renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 160;" f renderShadows src/Render.hs 117;" f -repeatOnFrames src/Dodge/Item/Weapon/TriggerType.hs 676;" f -repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 96;" f +repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 69;" f repeater src/Dodge/Item/Weapon/BulletGun/Cane.hs 89;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f @@ -6929,6 +6925,7 @@ roomThenCorridor src/Dodge/Layout/Tree/Annotate.hs 48;" f roomTwistCross src/Dodge/Room/Boss.hs 151;" f roomsContaining src/Dodge/Room/Containing.hs 19;" f roomsContaining' src/Dodge/Room/Containing.hs 24;" f +rootNotrootEff src/Dodge/ItEffect.hs 24;" f rose src/Color.hs 20;" f rotD src/Padding.hs 47;" f rotListAt src/Padding.hs 52;" f @@ -7062,7 +7059,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 50;" f +setInvPosFromSS src/Dodge/Inventory/Location.hs 69;" f setItemCharge src/Dodge/ItEffect.hs 36;" f setLayer src/Picture/Base.hs 139;" f setLinkType src/Dodge/RoomLink.hs 60;" f @@ -7160,7 +7157,7 @@ shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootFlameSpitter src/Dodge/HeldUse/SprayWeapon.hs 9;" f shootFlameSpitterRepeat src/Dodge/HeldUse/SprayWeapon.hs 19;" f shootFlameThrower src/Dodge/HeldUse/SprayWeapon.hs 26;" f -shootL src/Dodge/Item/Weapon/TriggerType.hs 428;" f +shootL src/Dodge/Item/Weapon/TriggerType.hs 321;" f shootLaser src/Dodge/Item/Weapon/BatteryGuns.hs 77;" f shootLaser' src/Dodge/HeldUse.hs 242;" f shootMachineGun src/Dodge/HeldUse/BulletWeapon.hs 218;" f @@ -7212,7 +7209,6 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/Dodge/RandomHelp.hs 50;" f shuffleTail src/RandomHelp.hs 55;" f -sideEffectOnFrame src/Dodge/Item/Weapon/TriggerType.hs 656;" f sideEffectUpdatePreload src/Dodge/PreloadData.hs 7;" f sigmoid src/Dodge/Base.hs 129;" f simpleCrSprings src/Dodge/Update.hs 639;" f @@ -7593,7 +7589,7 @@ treePost src/TreeHelp.hs 45;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f triangulate src/Shader/Poke/Triangulate.hs 5;" f triangulateIndices src/Shader/Poke/Triangulate.hs 9;" f -trigDoAlso src/Dodge/Item/Weapon/TriggerType.hs 103;" f +trigDoAlso src/Dodge/Item/Weapon/TriggerType.hs 76;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitch src/Dodge/Placements/Button.hs 35;" f @@ -7614,8 +7610,9 @@ tryAttachBulletBelt src/Dodge/Euse.hs 40;" f tryChargeBattery src/Dodge/Euse.hs 43;" f tryCombine src/Dodge/Update/Input/InGame.hs 252;" f tryGetChannel src/Sound.hs 96;" f +tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 20;" f tryGetRootItemInvID src/Dodge/Inventory/FindRoot.hs 10;" f -tryGetRootItemInvID src/Dodge/Inventory/Location.hs 18;" f +tryGetRootItemInvID src/Dodge/Inventory/Location.hs 31;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 36;" f tryNextLoadAction src/Dodge/Reloading.hs 36;" f tryPlay src/Sound.hs 83;" f @@ -7747,7 +7744,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 26;" f +updateRootItemID src/Dodge/Inventory/Location.hs 39;" f updateScopeZoom src/Dodge/Update/Camera.hs 129;" f updateScopeZoom' src/Dodge/Update/Camera.hs 134;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f @@ -7804,8 +7801,6 @@ upperPrismPolySU src/Shape.hs 112;" f upperPrismPolyTS src/Shape.hs 118;" f upperRounded src/Shape.hs 181;" f upsProjectile src/Dodge/Projectile/Update.hs 51;" f -useAllAmmo src/Dodge/Item/Weapon/TriggerType.hs 346;" f -useAmmoAmount src/Dodge/Item/Weapon/TriggerType.hs 364;" f useAmmoParams src/Dodge/Item/Weapon/AmmoParams.hs 17;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f @@ -7833,7 +7828,7 @@ useRootItem src/Dodge/Creature/Impulse/UseItem.hs 26;" f useShrinkGun src/Dodge/Luse.hs 59;" f useStopWatch src/Dodge/Luse.hs 24;" f useTargetPos src/Dodge/Item/Weapon/Targeting.hs 9;" f -useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 378;" f +useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 271;" f useTimeScrollGun src/Dodge/Luse.hs 32;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 214;" f @@ -7930,33 +7925,25 @@ windowxsize src/LoadConfig.hs 12;" f windowysize src/LoadConfig.hs 13;" f withAlpha src/Color.hs 10;" f withByteString src/Shader/Compile.hs 370;" f -withCrPos src/Dodge/Item/Weapon/TriggerType.hs 511;" f -withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 514;" f -withFlare src/Dodge/Item/Weapon/TriggerType.hs 478;" f -withItem src/Dodge/Item/Weapon/TriggerType.hs 451;" f -withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 490;" f -withOldDir src/Dodge/Item/Weapon/TriggerType.hs 528;" f -withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 568;" f -withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 552;" f -withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 559;" f -withRandomDirI src/Dodge/Item/Weapon/TriggerType.hs 520;" f -withRandomItem src/Dodge/Item/Weapon/TriggerType.hs 547;" f -withRandomItemParams src/Dodge/Item/Weapon/TriggerType.hs 542;" f -withRandomItemUpdate src/Dodge/Item/Weapon/TriggerType.hs 535;" f -withRandomOffset src/Dodge/Item/Weapon/TriggerType.hs 578;" f -withRecoil src/Dodge/Item/Weapon/TriggerType.hs 304;" f -withSidePushAfterI src/Dodge/Item/Weapon/TriggerType.hs 333;" f -withSidePushI src/Dodge/Item/Weapon/TriggerType.hs 314;" f -withSmoke src/Dodge/Item/Weapon/TriggerType.hs 116;" f -withSoundContinue src/Dodge/Item/Weapon/TriggerType.hs 257;" f -withSoundForI src/Dodge/Item/Weapon/TriggerType.hs 270;" f -withSoundForVol src/Dodge/Item/Weapon/TriggerType.hs 283;" f -withSoundItemChoiceStart src/Dodge/Item/Weapon/TriggerType.hs 228;" f -withSoundStart src/Dodge/Item/Weapon/TriggerType.hs 244;" f -withTempLight src/Dodge/Item/Weapon/TriggerType.hs 465;" f -withThickSmokeI src/Dodge/Item/Weapon/TriggerType.hs 134;" f -withThinSmokeI src/Dodge/Item/Weapon/TriggerType.hs 125;" f -withWarmUp src/Dodge/Item/Weapon/TriggerType.hs 206;" f +withCrPos src/Dodge/Item/Weapon/TriggerType.hs 404;" f +withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 407;" f +withFlare src/Dodge/Item/Weapon/TriggerType.hs 371;" f +withItem src/Dodge/Item/Weapon/TriggerType.hs 344;" f +withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 383;" f +withOldDir src/Dodge/Item/Weapon/TriggerType.hs 412;" f +withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 435;" f +withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 419;" f +withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 426;" f +withSmoke src/Dodge/Item/Weapon/TriggerType.hs 89;" f +withSoundContinue src/Dodge/Item/Weapon/TriggerType.hs 230;" f +withSoundForI src/Dodge/Item/Weapon/TriggerType.hs 243;" f +withSoundForVol src/Dodge/Item/Weapon/TriggerType.hs 256;" f +withSoundItemChoiceStart src/Dodge/Item/Weapon/TriggerType.hs 201;" f +withSoundStart src/Dodge/Item/Weapon/TriggerType.hs 217;" f +withTempLight src/Dodge/Item/Weapon/TriggerType.hs 358;" f +withThickSmokeI src/Dodge/Item/Weapon/TriggerType.hs 107;" f +withThinSmokeI src/Dodge/Item/Weapon/TriggerType.hs 98;" f +withWarmUp src/Dodge/Item/Weapon/TriggerType.hs 179;" f wlDustAt src/Dodge/Wall/Dust.hs 10;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f