diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 699d34c56..7e7d717c5 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -45,45 +45,34 @@ toggleEquipmentAt invid cr w = case getEquipmentAllocation w of PutOnEquipment{_allocNewPos = newp} -> w & crpoint . crEquipment . at newp ?~ invid --- & crpoint . crInvEquipped . at invid ?~ newp - & crpoint . crInv . ix invid . itLocation . ilEquipPosition ?~ newp + & crpoint . crInv . ix invid . itLocation . ilEquipSite ?~ newp & onequip itm cr --- & crpoint %~ assignNewHotkey invid & cWorld . lWorld %~ assignNewHotkey invid MoveEquipment{_allocNewPos = newp, _allocOldPos = oldp} -> w & crpoint . crEquipment . at newp ?~ invid & crpoint . crEquipment . at oldp .~ Nothing --- & crpoint . crInvEquipped . at invid ?~ newp - & crpoint . crInv . ix invid . itLocation . ilEquipPosition ?~ newp + & crpoint . crInv . ix invid . itLocation . ilEquipSite ?~ newp SwapEquipment{_allocNewPos = newp, _allocOldPos = oldp, _allocSwapID = sid} -> w & crpoint . crEquipment . at newp ?~ invid & crpoint . crEquipment . at oldp ?~ sid --- & crpoint . crInvEquipped . at invid ?~ newp - & crpoint . crInv . ix invid . itLocation . ilEquipPosition ?~ newp --- & crpoint . crInvEquipped . at sid ?~ oldp - & crpoint . crInv . ix sid . itLocation . ilEquipPosition ?~ oldp + & crpoint . crInv . ix invid . itLocation . ilEquipSite ?~ newp + & crpoint . crInv . ix sid . itLocation . ilEquipSite ?~ oldp ReplaceEquipment{_allocNewPos = newp, _allocRemoveID = rid} -> w & crpoint . crEquipment . at newp ?~ invid --- & crpoint . crInvEquipped . at invid ?~ newp - & crpoint . crInv . ix invid . itLocation . ilEquipPosition ?~ newp --- & crpoint . crInvEquipped . at rid .~ Nothing - & crpoint . crInv . ix rid . itLocation . ilEquipPosition .~ Nothing + & crpoint . crInv . ix invid . itLocation . ilEquipSite ?~ newp + & crpoint . crInv . ix rid . itLocation . ilEquipSite .~ Nothing & onremove (itmat rid) cr & onequip itm cr --- & crpoint %~ removeHotkey rid --- & crpoint %~ assignNewHotkey invid & cWorld . lWorld %~ removeHotkey rid & cWorld . lWorld %~ assignNewHotkey invid RemoveEquipment{_allocOldPos = oldp} -> w & crpoint . crEquipment . at oldp .~ Nothing --- & crpoint . crInvEquipped . at invid .~ Nothing - & crpoint . crInv . ix invid . itLocation . ilEquipPosition .~ Nothing + & crpoint . crInv . ix invid . itLocation . ilEquipSite .~ Nothing & onremove itm cr --- & crpoint %~ removeHotkey invid & cWorld . lWorld %~ removeHotkey invid where crpoint = cWorld . lWorld . creatures . ix (_crID cr) diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 4fc8f2974..bd818cc57 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -178,7 +178,7 @@ invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of itm = loc ^. locLDT . ldtValue . _1 doAnyEquipmentEffect :: LocationLDT ItemLink ComposedItem -> Creature -> World -> World -doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipPosition . _Just of +doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of Just _ -> useE loc cr _ -> id where diff --git a/src/Dodge/Creature/Statistics.hs b/src/Dodge/Creature/Statistics.hs index c4699b511..eeada32ea 100644 --- a/src/Dodge/Creature/Statistics.hs +++ b/src/Dodge/Creature/Statistics.hs @@ -24,7 +24,7 @@ equipmentStrValue itm = case _itType itm of _ -> 0 crCurrentEquipment :: Creature -> IM.IntMap Item -crCurrentEquipment = IM.filter (isJust . (^? itLocation . ilEquipPosition . _Just)) . _crInv +crCurrentEquipment = IM.filter (isJust . (^? itLocation . ilEquipSite . _Just)) . _crInv strFromHeldItem :: Creature -> Int strFromHeldItem cr diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index c53fa0e5c..e05927695 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -54,7 +54,7 @@ data Creature = Creature , _crManipulation :: Manipulation , _crInvCapacity :: Int , _crInvLock :: Bool - , _crEquipment :: M.Map EquipPosition Int + , _crEquipment :: M.Map EquipSite Int , _crState :: CreatureState , _crCorpse :: CreatureCorpse --Creature -> Corpse -> SPic , _crMaterial :: Material diff --git a/src/Dodge/Data/Equipment/Misc.hs b/src/Dodge/Data/Equipment/Misc.hs index 4eea970f1..011a8cec3 100644 --- a/src/Dodge/Data/Equipment/Misc.hs +++ b/src/Dodge/Data/Equipment/Misc.hs @@ -8,16 +8,17 @@ module Dodge.Data.Equipment.Misc where import Data.Aeson import Data.Aeson.TH -data EquipSite +data EquipType = GoesOnHead | GoesOnChest | GoesOnBack | GoesOnWrist | GoesOnLegs - deriving (Eq,Ord,Show,Read) - --deriving (Eq, Ord, Show, Read) --Generic, Flat) + deriving (Eq, Ord, Show, Read) -data EquipPosition +--deriving (Eq, Ord, Show, Read) --Generic, Flat) + +data EquipSite = OnHead | OnChest | OnBack @@ -25,9 +26,11 @@ data EquipPosition | OnRightWrist | OnLegs | OnSpecial - deriving (Eq, Ord,Show,Read) - --deriving (Eq, Ord, Show, Read) --Generic, Flat) -data Hotkey = HotkeyQ + deriving (Eq, Ord, Show, Read) + +--deriving (Eq, Ord, Show, Read) --Generic, Flat) +data Hotkey + = HotkeyQ | HotkeyE | Hotkey1 | Hotkey2 @@ -39,13 +42,16 @@ data Hotkey = HotkeyQ | Hotkey8 | Hotkey9 | Hotkey0 - deriving (Eq, Show, Read, Ord, Bounded, Enum) --Generic, Flat) - + deriving (Eq, Show, Read, Ord, Bounded, Enum) --Generic, Flat) +deriveJSON defaultOptions ''EquipType deriveJSON defaultOptions ''EquipSite -deriveJSON defaultOptions ''EquipPosition deriveJSON defaultOptions ''Hotkey -instance ToJSONKey EquipPosition -instance FromJSONKey EquipPosition + +instance ToJSONKey EquipSite + +instance FromJSONKey EquipSite + instance ToJSONKey Hotkey + instance FromJSONKey Hotkey diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index eb38cfdea..24efa8c3c 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -102,7 +102,7 @@ data EquipItemType | FLAMESHIELD | FRONTARMOUR | WRISTARMOUR - | INVISIBILITYEQUIPMENT EquipSite + | INVISIBILITYEQUIPMENT EquipType | BRAINHAT | HAT | HEADLAMP diff --git a/src/Dodge/Data/Item/Effect.hs b/src/Dodge/Data/Item/Effect.hs index c59aba7ad..e198c1710 100644 --- a/src/Dodge/Data/Item/Effect.hs +++ b/src/Dodge/Data/Item/Effect.hs @@ -18,9 +18,6 @@ data ItEffect = ItEffect data ItInvEffect = NoInvEffect --- | ChargeIfEquipped --- | ChargeIfInInventory --- | SetCharge Int | EffectRootNotroot ItInvEffect ItInvEffect | CreateShieldWall | RemoveShieldWall diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index 14435598d..08524e7c1 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -32,7 +32,7 @@ data ItemLocation , _ilIsRoot :: Bool , _ilIsSelected :: Bool , _ilIsAttached :: Bool - , _ilEquipPosition :: Maybe EquipPosition + , _ilEquipSite :: Maybe EquipSite } | OnTurret {_ilTuID :: Int} | OnFloor {_ilFlID :: NewInt FloorInt} diff --git a/src/Dodge/Data/Item/Use/Equipment.hs b/src/Dodge/Data/Item/Use/Equipment.hs index 8d2bf332d..b9ac73ce3 100644 --- a/src/Dodge/Data/Item/Use/Equipment.hs +++ b/src/Dodge/Data/Item/Use/Equipment.hs @@ -18,7 +18,7 @@ data EquipEffect = EquipEffect { _eeUse :: Euse --Item -> Creature -> World -> World , _eeOnEquip :: ItmCrWdWd --Item -> Creature -> World -> World , _eeOnRemove :: ItmCrWdWd --Item -> Creature -> World -> World - , _eeSite :: EquipSite + , _eeType :: EquipType , _eeParams :: EquipParams , _eeViewDist :: Maybe Float , _eeAttachPos :: Point3 diff --git a/src/Dodge/Data/RightButtonOptions.hs b/src/Dodge/Data/RightButtonOptions.hs index 3be828dfb..982616671 100644 --- a/src/Dodge/Data/RightButtonOptions.hs +++ b/src/Dodge/Data/RightButtonOptions.hs @@ -18,23 +18,23 @@ data RightButtonOptions data EquipmentAllocation = DoNotMoveEquipment | PutOnEquipment - { _allocNewPos :: EquipPosition + { _allocNewPos :: EquipSite } | MoveEquipment - { _allocNewPos :: EquipPosition - , _allocOldPos :: EquipPosition + { _allocNewPos :: EquipSite + , _allocOldPos :: EquipSite } | SwapEquipment - { _allocNewPos :: EquipPosition - , _allocOldPos :: EquipPosition + { _allocNewPos :: EquipSite + , _allocOldPos :: EquipSite , _allocSwapID :: Int } | ReplaceEquipment - { _allocNewPos :: EquipPosition + { _allocNewPos :: EquipSite , _allocRemoveID :: Int } | RemoveEquipment - { _allocOldPos :: EquipPosition + { _allocOldPos :: EquipSite } --deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Default/Item/Use/Equipment.hs b/src/Dodge/Default/Item/Use/Equipment.hs index 7413a8c94..54d4a49d6 100644 --- a/src/Dodge/Default/Item/Use/Equipment.hs +++ b/src/Dodge/Default/Item/Use/Equipment.hs @@ -6,7 +6,7 @@ import Dodge.Data.Item.Use.Equipment defaultEquip :: EquipEffect defaultEquip = EquipEffect - { _eeSite = GoesOnHead + { _eeType = GoesOnHead , _eeUse = EDoNothing , _eeOnEquip = ItmCrWdWdDoNothing , _eeOnRemove = ItmCrWdWdDoNothing diff --git a/src/Dodge/Equipment/Text.hs b/src/Dodge/Equipment/Text.hs index 9cb82f48c..3514b3e8d 100644 --- a/src/Dodge/Equipment/Text.hs +++ b/src/Dodge/Equipment/Text.hs @@ -2,7 +2,7 @@ module Dodge.Equipment.Text (eqPosText) where import Dodge.Data.Equipment.Misc -eqPosText :: EquipPosition -> String +eqPosText :: EquipSite -> String eqPosText ep = case ep of OnHead -> "HEAD" OnChest -> "CHESt" diff --git a/src/Dodge/Euse.hs b/src/Dodge/Euse.hs index 1622d6025..6ba7fc5ec 100644 --- a/src/Dodge/Euse.hs +++ b/src/Dodge/Euse.hs @@ -104,7 +104,7 @@ setWristShieldPos itm cr w = w & moveWallIDUnsafe i wlline i = _eparamID $ _eeParams $ _uequipEffect $ _itUse itm wlline = (f (V3 (-10) 7 0), f (V3 10 7 0)) invid = _ilInvID (_itLocation itm) - handtrans = case cr ^? crInv . ix invid . itLocation . ilEquipPosition . _Just of + handtrans = case cr ^? crInv . ix invid . itLocation . ilEquipSite . _Just of Just OnLeftWrist -> \cr' -> translatePointToLeftHand cr' . g _ -> translatePointToRightHand g diff --git a/src/Dodge/Hotkey.hs b/src/Dodge/Hotkey.hs index 338d911ee..5d2a137c1 100644 --- a/src/Dodge/Hotkey.hs +++ b/src/Dodge/Hotkey.hs @@ -22,13 +22,10 @@ newHotkey lw = fromMaybe maxBound $ -- this will not remove the hotkey from its old slot, assumes there is a hotkey -- to swap with instead --- requires there actually is equipment in the slot, too assignHotkey :: Int -> Hotkey -> LWorld -> LWorld assignHotkey invid hk lw = fromMaybe lw $ do - --guard (invid `IM.member` (cr ^. crInvEquipped)) guard $ lw ^? creatures . ix 0 . crInv . ix invid . itUse . useCondition == Just UseableAnytime --- _ <- lw ^? creatures . ix 0 . crInv . ix invid . itUse . leftUse return $ (setHotkey invid hk . moveOldHotkey invid hk) lw moveOldHotkey :: Int -> Hotkey -> LWorld -> LWorld diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index c97088dea..1af82f041 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -66,10 +66,7 @@ rmInvItem cid invid w = & pointcid . crInv %~ f -- important & removeAnySlotEquipment & pointcid . crEquipment . each %~ g --- & pointcid . crInvEquipped %~ IM.delete invid --- & pointcid . crInvEquipped %~ IM.mapKeys g & removeanyactivation --- & pointcid . crHotkeys . each %~ g & cWorld . lWorld . hotkeys . each %~ g & cWorld . lWorld . imHotkeys %~ IM.delete invid & cWorld . lWorld . imHotkeys %~ IM.mapKeys g @@ -96,13 +93,11 @@ rmInvItem cid invid w = rmf <- itm ^? itEffect . ieOnDrop return $ doInvEffect rmf itm cr removeAnySlotEquipment = fromMaybe id $ do - --epos <- w ^? cWorld . lWorld . creatures . ix cid . crInvEquipped . ix invid epos <- w ^? cWorld . lWorld . creatures . ix cid . crInv . ix invid - . itLocation . ilEquipPosition . _Just + . itLocation . ilEquipSite . _Just return $ pointcid . crEquipment . at epos .~ Nothing removeanyactivation = fromMaybe id $ do epos <- w ^? cWorld . lWorld . imHotkeys . ix invid - --return $ pointcid . crHotkeys . at epos .~ Nothing return $ cWorld . lWorld . hotkeys . at epos .~ Nothing maxk = fmap fst $ IM.lookupMax $ cr ^. crInv f inv = diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 210ce2224..cf7298c81 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -72,7 +72,7 @@ tryPutItemInInv cid flit w = case maybeInvSlot of , _ilIsRoot = False , _ilIsSelected = False , _ilIsAttached = False - , _ilEquipPosition = Nothing + , _ilEquipSite = Nothing } ---- should select the item on the floor if no inventory space? diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index 736aac167..45fe7fcb5 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -72,9 +72,8 @@ crUpdateInvidLocations mo crid lw invid itm = , _ilIsRoot = Just invid == mo ^? imRootSelectedItem , _ilIsSelected = Just invid == mo ^? imSelectedItem , _ilIsAttached = invid `IS.member` (mo ^. imAttachedItems) - --, _ilEquipPosition = lw ^? creatures . ix crid . crInvEquipped . ix invid - , _ilEquipPosition = lw ^? creatures . ix crid . crInv . ix invid - . itLocation . ilEquipPosition . _Just + , _ilEquipSite = lw ^? creatures . ix crid . crInv . ix invid + . itLocation . ilEquipSite . _Just } -- this should be looked at, as it is sometimes used in functions that need not diff --git a/src/Dodge/Inventory/RBList.hs b/src/Dodge/Inventory/RBList.hs index 609067bff..23743e899 100644 --- a/src/Dodge/Inventory/RBList.hs +++ b/src/Dodge/Inventory/RBList.hs @@ -1,7 +1,7 @@ module Dodge.Inventory.RBList ( updateRBList, getEquipmentAllocation, - equipSiteToPositions, + eqSiteToPositions, ) where import Control.Applicative @@ -14,32 +14,30 @@ import Dodge.Data.World import qualified SDL updateRBList :: World -> World -updateRBList w - | not (SDL.ButtonRight `M.member` (w ^. input . mouseButtons)) = - w & rbOptions .~ NoRightButtonOptions - | otherwise = case w ^. rbOptions of - EquipOptions{} -> w - _ -> fromMaybe (w & rbOptions .~ NoRightButtonOptions) $ do - i <- cr ^? crManipulation . manObject . imSelectedItem - esite <- cr ^? crInv . ix i . itUse . uequipEffect . eeSite - return $ - w - & rbOptions - .~ EquipOptions - { _opSel = chooseEquipmentPosition cr (equipSiteToPositions esite) - } +updateRBList w = case w ^. rbOptions of + _ | norightclick -> w & rbOptions .~ NoRightButtonOptions + EquipOptions{} -> w + _ -> fromMaybe (w & rbOptions .~ NoRightButtonOptions) $ do + i <- cr ^? crManipulation . manObject . imSelectedItem + esite <- cr ^? crInv . ix i . itUse . uequipEffect . eeType + return $ + w & rbOptions + .~ EquipOptions + { _opSel = chooseEquipPosition cr (eqSiteToPositions esite) + } where + norightclick = not $ SDL.ButtonRight `M.member` (w ^. input . mouseButtons) cr = you w -- want to choose the current position if the item is equipped, otherwise try to -- find a free equipment slot -chooseEquipmentPosition :: Creature -> [EquipPosition] -> Int -chooseEquipmentPosition cr eps = fromMaybe (chooseFreeSite cr eps) $ do +chooseEquipPosition :: Creature -> [EquipSite] -> Int +chooseEquipPosition cr eps = fromMaybe (chooseFreeSite cr eps) $ do i <- cr ^? crManipulation . manObject . imSelectedItem - ep <- cr ^? crInv . ix i . itLocation . ilEquipPosition . _Just + ep <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just elemIndex ep eps -chooseFreeSite :: Creature -> [EquipPosition] -> Int +chooseFreeSite :: Creature -> [EquipSite] -> Int chooseFreeSite cr = fromMaybe 0 . findIndex hasnoequipment where hasnoequipment ep = isNothing $ cr ^? crEquipment . ix ep @@ -47,11 +45,12 @@ chooseFreeSite cr = fromMaybe 0 . findIndex hasnoequipment getEquipmentAllocation :: World -> EquipmentAllocation getEquipmentAllocation w = fromMaybe DoNotMoveEquipment $ do curpos <- you w ^? crManipulation . manObject . imSelectedItem - esite <- you w ^? crInv . ix curpos . itUse . uequipEffect . eeSite - i <- w ^? rbOptions . opSel - <|> Just (chooseEquipmentPosition (you w) (equipSiteToPositions esite)) - es <- equipSiteToPositions esite ^? ix i - return $ case you w ^? crInv . ix curpos . itLocation . ilEquipPosition . _Just of + esite <- you w ^? crInv . ix curpos . itUse . uequipEffect . eeType + i <- + w ^? rbOptions . opSel + <|> Just (chooseEquipPosition (you w) (eqSiteToPositions esite)) + es <- eqSiteToPositions esite ^? ix i + return $ case you w ^? crInv . ix curpos . itLocation . ilEquipSite . _Just of Just epos | es == epos -> RemoveEquipment{_allocOldPos = epos} Just epos @@ -74,11 +73,10 @@ getEquipmentAllocation w = fromMaybe DoNotMoveEquipment $ do } Nothing -> PutOnEquipment{_allocNewPos = es} -equipSiteToPositions :: EquipSite -> [EquipPosition] -equipSiteToPositions es = case es of +eqSiteToPositions :: EquipType -> [EquipSite] +eqSiteToPositions es = case es of GoesOnHead -> [OnHead] GoesOnChest -> [OnChest] GoesOnBack -> [OnBack] GoesOnWrist -> [OnLeftWrist, OnRightWrist] GoesOnLegs -> [OnLegs] - diff --git a/src/Dodge/Inventory/SelectionList.hs b/src/Dodge/Inventory/SelectionList.hs index 980883f3c..432461670 100644 --- a/src/Dodge/Inventory/SelectionList.hs +++ b/src/Dodge/Inventory/SelectionList.hs @@ -34,7 +34,7 @@ invSelectionItem indent lw i ci = cr = lw ^?! creatures . ix 0 anyhotkey = maybe [] ((' ' :) . hotkeyToString) (lw ^? imHotkeys . ix i) anyequippos = maybe [] (rightPad 8 ' ' . (' ' :) . eqPosText) - (ci ^? _1 . itLocation . ilEquipPosition . _Just) + (ci ^? _1 . itLocation . ilEquipSite . _Just) col = itemInvColor ci pics = itemDisplay cr ci diff --git a/src/Dodge/Inventory/Swap.hs b/src/Dodge/Inventory/Swap.hs index 8997fa215..f54483926 100644 --- a/src/Dodge/Inventory/Swap.hs +++ b/src/Dodge/Inventory/Swap.hs @@ -65,7 +65,7 @@ swapInvItems f i w = fromMaybe w $ do . (cWorld . lWorld . imHotkeys %~ IM.safeSwapKeys i k) cr = you w --swapSite a b = case cr ^? crInvEquipped . ix a of - swapSite a b = case cr ^? crInv . ix a . itLocation . ilEquipPosition . _Just of + swapSite a b = case cr ^? crInv . ix a . itLocation . ilEquipSite . _Just of Just epos -> crEquipment . ix epos .~ b Nothing -> id --swapSite' a b = case cr ^? crInvHotkeys . ix a of diff --git a/src/Dodge/ItEffect.hs b/src/Dodge/ItEffect.hs index 045bb9c7e..81b211cbe 100644 --- a/src/Dodge/ItEffect.hs +++ b/src/Dodge/ItEffect.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE LambdaCase #-} module Dodge.ItEffect ( doInvEffect, ) where @@ -7,7 +8,7 @@ import Dodge.Data.World import Dodge.Euse doInvEffect :: ItInvEffect -> Item -> Creature -> World -> World -doInvEffect iie = case iie of +doInvEffect = \case NoInvEffect -> const $ const id EffectRootNotroot f g -> rootNotrootEff f g CreateShieldWall -> createShieldWall diff --git a/src/Dodge/Item/Draw.hs b/src/Dodge/Item/Draw.hs index 6f79bd6d9..3396c2d51 100644 --- a/src/Dodge/Item/Draw.hs +++ b/src/Dodge/Item/Draw.hs @@ -22,12 +22,12 @@ itemEquipPict cr itmtree = case itm ^. itUse of ituse -> fold $ do attachpos <- ituse ^? uequipEffect . eeAttachPos i <- itm ^? itLocation . ilInvID - epos <- cr ^? crInv . ix i . itLocation . ilEquipPosition . _Just + epos <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just return $ equipPosition epos cr attachpos (itemSPic itm) where itm = itmtree ^. ldtValue . _1 -equipPosition :: EquipPosition -> Creature -> Point3 -> SPic -> SPic +equipPosition :: EquipSite -> Creature -> Point3 -> SPic -> SPic equipPosition epos cr p sh = case epos of OnLeftWrist -> translateToLeftWrist cr sh OnRightWrist -> translateToRightWrist cr sh diff --git a/src/Dodge/Item/Equipment.hs b/src/Dodge/Item/Equipment.hs index f4bc2eefd..9350aaae0 100644 --- a/src/Dodge/Item/Equipment.hs +++ b/src/Dodge/Item/Equipment.hs @@ -28,25 +28,25 @@ magShield = defaultEquipment & itParams .~ MagShieldParams Nothing & itUse . uequipEffect . eeUse .~ EMagShield - & itUse . uequipEffect . eeSite .~ GoesOnWrist + & itUse . uequipEffect . eeType .~ GoesOnWrist & itType .~ EQUIP MAGSHIELD flameShield :: Item flameShield = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnChest + & itUse . uequipEffect . eeType .~ GoesOnChest & itType .~ EQUIP FLAMESHIELD frontArmour :: Item frontArmour = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnChest + & itUse . uequipEffect . eeType .~ GoesOnChest & itType .~ EQUIP FRONTARMOUR wristArmour :: Item wristArmour = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnWrist + & itUse . uequipEffect . eeType .~ GoesOnWrist & itUse . uequipEffect . eeOnEquip .~ EonWristShield & itUse . uequipEffect . eeUse .~ EWristShield & itUse . uequipEffect . eeOnRemove .~ EoffWristShield @@ -55,7 +55,7 @@ wristArmour = batteryPack :: Item batteryPack = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnBack + & itUse . uequipEffect . eeType .~ GoesOnBack & itUse . uequipEffect . eeAttachPos .~ V3 (-8) 0 10 & itUse . uequipEffect . eeUse .~ EDoNothing & itConsumables @@ -73,7 +73,7 @@ batteryPack = fuelPack :: Item fuelPack = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnBack + & itUse . uequipEffect . eeType .~ GoesOnBack & itUse . uequipEffect . eeAttachPos .~ V3 (-9) 0 10 -- & itUse . uequipEffect . eeUse .~ EFuelSource 10000 10000 & itType .~ EQUIP FUELPACK @@ -91,7 +91,7 @@ fuelPack = bulletBeltPack :: Item bulletBeltPack = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnBack + & itUse . uequipEffect . eeType .~ GoesOnBack & itUse . uequipEffect . eeAttachPos .~ V3 (-9) 0 10 & itUse . uequipEffect . eeUse .~ EDoNothing & itConsumables @@ -109,7 +109,7 @@ bulletBeltPack = bulletBeltBracer :: Item bulletBeltBracer = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnWrist + & itUse . uequipEffect . eeType .~ GoesOnWrist & itUse . uequipEffect . eeAttachPos .~ V3 (-9) 0 10 & itUse . uequipEffect . eeUse .~ EDoNothing & itConsumables @@ -127,26 +127,26 @@ bulletBeltBracer = brainHat :: Item brainHat = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnHead + & itUse . uequipEffect . eeType .~ GoesOnHead & itType .~ EQUIP BRAINHAT hat :: Item hat = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnHead + & itUse . uequipEffect . eeType .~ GoesOnHead & itType .~ EQUIP HAT headLamp :: Item headLamp = defaultEquipment & itUse . uequipEffect . eeUse .~ EHeadLamp - & itUse . uequipEffect . eeSite .~ GoesOnHead + & itUse . uequipEffect . eeType .~ GoesOnHead & itType .~ EQUIP HEADLAMP powerLegs :: Item powerLegs = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnLegs + & itUse . uequipEffect . eeType .~ GoesOnLegs & itType .~ EQUIP POWERLEGS speedLegs :: Item @@ -158,7 +158,7 @@ jumpLegs = powerLegs & itType .~ EQUIP JUMPLEGS wristInvisibility :: Item wristInvisibility = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnWrist + & itUse . uequipEffect . eeType .~ GoesOnWrist -- & itUse . uequipEffect . eeOnEquip .~ ECamouflage Invisible -- & itUse . uequipEffect . eeOnRemove .~ ECamouflage FullyVisible & itType .~ EQUIP (INVISIBILITYEQUIPMENT GoesOnWrist) @@ -166,5 +166,5 @@ wristInvisibility = pulseChecker :: Item pulseChecker = defaultEquipment - & itUse . uequipEffect . eeSite .~ GoesOnWrist + & itUse . uequipEffect . eeType .~ GoesOnWrist & itType .~ EQUIP WRIST_ECG diff --git a/src/Dodge/Item/Info.hs b/src/Dodge/Item/Info.hs index 1d1581e93..5d75bae6e 100644 --- a/src/Dodge/Item/Info.hs +++ b/src/Dodge/Item/Info.hs @@ -210,9 +210,9 @@ aimStanceInfo as = case as of OneHand -> "It is held in one hand." itmEquipSiteInfo :: Item -> String -itmEquipSiteInfo = maybe "" equipSiteInfo . (^? itUse . uequipEffect . eeSite) +itmEquipSiteInfo = maybe "" equipSiteInfo . (^? itUse . uequipEffect . eeType) -equipSiteInfo :: EquipSite -> String +equipSiteInfo :: EquipType -> String equipSiteInfo es = case es of GoesOnHead -> " on the head" GoesOnChest -> " on the chest" diff --git a/src/Dodge/Item/Location/Initialize.hs b/src/Dodge/Item/Location/Initialize.hs index 4db8611d0..4ce595017 100644 --- a/src/Dodge/Item/Location/Initialize.hs +++ b/src/Dodge/Item/Location/Initialize.hs @@ -50,7 +50,7 @@ initCrItemLocation cr invid w it = (w & itemLocations . at locid ?~ loc , _ilIsRoot = False , _ilIsSelected = False , _ilIsAttached = False - , _ilEquipPosition = Nothing + , _ilEquipSite = Nothing } diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 9d69285ae..846f534b6 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -239,8 +239,8 @@ drawRBOptions cfig w = fromMaybe mempty $ do guard $ ButtonRight `M.member` _mouseButtons (_input w) invid <- you w ^? crManipulation . manObject . imSelectedItem eslist <- - fmap equipSiteToPositions $ - you w ^? crInv . ix invid . itUse . uequipEffect . eeSite + fmap eqSiteToPositions $ + you w ^? crInv . ix invid . itUse . uequipEffect . eeType i <- w ^? rbOptions . opSel let ae = getEquipmentAllocation w sss <- w ^? hud . hudElement . diSections diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index d29b701fd..eefc696f0 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -48,8 +48,8 @@ updateWheelEvent yi w = case w ^. hud . hudElement of where rbscrollmax = fromMaybe 1 $ do invid <- you w ^? crManipulation . manObject . imSelectedItem - esite <- you w ^? crInv . ix invid . itUse . uequipEffect . eeSite - return $ length $ equipSiteToPositions esite + esite <- you w ^? crInv . ix invid . itUse . uequipEffect . eeType + return $ length $ eqSiteToPositions esite y = fromIntegral yi numLocs = (fst . IM.findMax $ (w ^. cWorld . lWorld . seenLocations)) + 1 bdown b = b `M.member` _mouseButtons (_input w) diff --git a/tags b/tags index 6b46ce28a..bd6f83bf2 100644 --- a/tags +++ b/tags @@ -281,6 +281,7 @@ CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m CardinalPoint src/Dodge/Data/CardinalPoint.hs 1;" m Carriage src/Dodge/Data/Creature/Stance.hs 20;" t Carte src/Dodge/Render/HUD/Carte.hs 1;" m +ChainEffect src/Dodge/HeldUse.hs 43;" t ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 43;" t ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C @@ -357,7 +358,7 @@ Consumables src/Dodge/Data/Item.hs 32;" t Consumption src/Dodge/Data/Item/Use/Consumption.hs 8;" m Consumption src/Dodge/Default/Item/Use/Consumption.hs 1;" m Containing src/Dodge/Room/Containing.hs 2;" m -ContextLDT src/Dodge/Data/DoubleTree.hs 44;" t +ContextLDT src/Dodge/Data/DoubleTree.hs 48;" t ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C ConvexPoly src/Geometry/ConvexPoly.hs 27;" t @@ -412,7 +413,7 @@ Create src/Dodge/Prop/Create.hs 1;" m Create src/Dodge/Wall/Create.hs 1;" m CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C -CreateShieldWall src/Dodge/Data/Item/Effect.hs 25;" C +CreateShieldWall src/Dodge/Data/Item/Effect.hs 22;" C Creature src/Dodge/Data/Creature.hs 38;" t Creature src/Dodge/Creature.hs 1;" m Creature src/Dodge/Data/Creature.hs 7;" m @@ -441,12 +442,12 @@ DPoint2 src/Geometry/Data.hs 34;" t DRONELAUNCHER src/Dodge/Data/Item/Combine.hs 159;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 88;" C DS src/DoubleStack.hs 3;" t -DT src/Dodge/Data/DoubleTree.hs 29;" C -DTBottomNode src/Dodge/Data/DoubleTree.hs 19;" C -DTMidAboveNode src/Dodge/Data/DoubleTree.hs 17;" C -DTMidBelowNode src/Dodge/Data/DoubleTree.hs 18;" C -DTRootNode src/Dodge/Data/DoubleTree.hs 15;" C -DTTopNode src/Dodge/Data/DoubleTree.hs 16;" C +DT src/Dodge/Data/DoubleTree.hs 30;" C +DTBottomNode src/Dodge/Data/DoubleTree.hs 20;" C +DTMidAboveNode src/Dodge/Data/DoubleTree.hs 18;" C +DTMidBelowNode src/Dodge/Data/DoubleTree.hs 19;" C +DTRootNode src/Dodge/Data/DoubleTree.hs 16;" C +DTTopNode src/Dodge/Data/DoubleTree.hs 17;" C Damage src/Dodge/Data/Damage.hs 32;" t Damage src/Dodge/Creature/Damage.hs 1;" m Damage src/Dodge/Damage.hs 2;" m @@ -545,10 +546,10 @@ DoorPart src/Dodge/Data/Wall.hs 50;" C DoorStatus src/Dodge/Data/Door.hs 23;" t DoubleRes src/Dodge/Data/Config.hs 95;" C DoubleStack src/DoubleStack.hs 1;" m -DoubleTree src/Dodge/Data/DoubleTree.hs 29;" t -DoubleTree src/Dodge/Data/DoubleTree.hs 5;" m +DoubleTree src/Dodge/Data/DoubleTree.hs 30;" t +DoubleTree src/Dodge/Data/DoubleTree.hs 6;" m DoubleTree src/Dodge/DoubleTree.hs 1;" m -DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t +DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 15;" t DrWdId src/Dodge/Data/WorldEffect.hs 66;" C DrWdMakeDoorDebris src/Dodge/Data/WorldEffect.hs 67;" C DrWdMechanismStepwise src/Dodge/Data/WorldEffect.hs 68;" C @@ -610,9 +611,9 @@ East8 src/Dodge/Data/CardinalPoint.hs 13;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t Effect src/Dodge/Data/Item/Effect.hs 6;" m EffectArguments src/Dodge/Data/Terminal.hs 94;" t -EffectRootNotroot src/Dodge/Data/Item/Effect.hs 24;" C -EffectWhileAttached src/Dodge/Data/Item/Effect.hs 28;" C -EffectWhileRoot src/Dodge/Data/Item/Effect.hs 27;" C +EffectRootNotroot src/Dodge/Data/Item/Effect.hs 21;" C +EffectWhileAttached src/Dodge/Data/Item/Effect.hs 25;" C +EffectWhileRoot src/Dodge/Data/Item/Effect.hs 24;" C EighthRes src/Dodge/Data/Config.hs 95;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricalAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 43;" C @@ -923,9 +924,9 @@ IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C ItAmount src/Dodge/Data/Item/Use/Consumption.hs 39;" t ItCrWdItemHeldEffect src/Dodge/Data/WorldEffect.hs 19;" C ItCrWdWd src/Dodge/Data/WorldEffect.hs 19;" t -ItDropEffect src/Dodge/Data/Item/Effect.hs 31;" t +ItDropEffect src/Dodge/Data/Item/Effect.hs 28;" t ItEffect src/Dodge/Data/Item/Effect.hs 12;" t -ItEffect src/Dodge/ItEffect.hs 1;" m +ItEffect src/Dodge/ItEffect.hs 2;" m ItID src/Dodge/Data/Item.hs 29;" t ItInvEffect src/Dodge/Data/Item/Effect.hs 19;" t ItTargeting src/Dodge/Data/Item.hs 54;" C @@ -960,13 +961,13 @@ LASER src/Dodge/Data/Item/Combine.hs 154;" C LASERING src/Dodge/Data/Damage/Type.hs 19;" C LAUNCHER src/Dodge/Data/Item/Combine.hs 156;" C LAUNCHERX src/Dodge/Data/Item/Combine.hs 157;" C -LDT src/Dodge/Data/DoubleTree.hs 39;" C -LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C +LDT src/Dodge/Data/DoubleTree.hs 40;" C +LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C LDTComb src/Dodge/Item/Grammar.hs 141;" 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 -LDTTopNode src/Dodge/Data/DoubleTree.hs 24;" C +LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 26;" C +LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 27;" C +LDTRootNode src/Dodge/Data/DoubleTree.hs 24;" C +LDTTopNode src/Dodge/Data/DoubleTree.hs 25;" C LED src/Dodge/Data/Item/Combine.hs 55;" C LHS src/Geometry/LHS.hs 1;" m LIGHTER src/Dodge/Data/Item/Combine.hs 44;" C @@ -982,8 +983,8 @@ LabSS src/Dodge/Data/Scenario.hs 97;" C Label src/Dodge/Render/Label.hs 1;" m LabelAction src/Dodge/Data/ActionPlan.hs 79;" C LabelCluster src/Dodge/Data/RoomCluster.hs 14;" C -LabelDoubleTree src/Dodge/Data/DoubleTree.hs 39;" t -LabelDoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 22;" t +LabelDoubleTree src/Dodge/Data/DoubleTree.hs 40;" t +LabelDoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 23;" t Laboratory src/Dodge/Data/Scenario.hs 61;" C Lamp src/Dodge/Creature/Lamp.hs 1;" m Lampoid src/Dodge/Data/Creature/Misc.hs 83;" C @@ -1009,7 +1010,7 @@ LeadTarget src/Dodge/Data/ActionPlan.hs 149;" C Left src/Dodge/Item/Left.hs 1;" m LeftConsumption src/Dodge/Data/Item/Use/Consumption.hs 26;" t LeftForward src/Dodge/Data/Creature/Stance.hs 32;" C -LeftwardLDT src/Dodge/Data/DoubleTree.hs 45;" C +LeftwardLDT src/Dodge/Data/DoubleTree.hs 50;" C LensHelp src/LensHelp.hs 1;" m Lethargic src/Dodge/Data/Creature/Perception.hs 55;" C LevelGen src/Dodge/LevelGen.hs 1;" m @@ -1047,11 +1048,11 @@ LoadSound src/Dodge/SoundLogic/LoadSound.hs 1;" m Loading src/Dodge/Menu/Loading.hs 1;" m LoadingBaySS src/Dodge/Data/Scenario.hs 93;" C LoadingScreen src/Dodge/Data/Universe.hs 69;" C -LocLDT src/Dodge/Data/DoubleTree.hs 62;" C +LocLDT src/Dodge/Data/DoubleTree.hs 67;" C Location src/Dodge/Data/Item/Location.hs 6;" m Location src/Dodge/Inventory/Location.hs 1;" m Location src/Dodge/Item/Location.hs 1;" m -LocationLDT src/Dodge/Data/DoubleTree.hs 62;" t +LocationLDT src/Dodge/Data/DoubleTree.hs 67;" t Lock src/Dodge/Inventory/Lock.hs 1;" m LockAndKey src/Dodge/LockAndKey.hs 1;" m LockedInventory src/Dodge/Data/HUD.hs 42;" C @@ -1239,7 +1240,7 @@ NoCreatureEffect src/Dodge/Data/CreatureEffect.hs 11;" C NoDamageEffect src/Dodge/Data/Damage.hs 29;" C NoDebugInfo src/Dodge/Data/Universe.hs 54;" C NoDelay src/Dodge/Data/Item/HeldDelay.hs 14;" C -NoDropEffect src/Dodge/Data/Item/Effect.hs 31;" C +NoDropEffect src/Dodge/Data/Item/Effect.hs 28;" C NoEquipParams src/Dodge/Data/Item/Use/Equipment.hs 36;" C NoEscapeMenuOption src/Dodge/Data/Universe.hs 75;" C NoFaction src/Dodge/Data/Creature/State.hs 40;" C @@ -1574,7 +1575,7 @@ RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 32;" C RemoteScreenLink src/Dodge/Data/ComposedItem.hs 24;" C RemoteScreenSF src/Dodge/Data/ComposedItem.hs 38;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C -RemoveShieldWall src/Dodge/Data/Item/Effect.hs 26;" C +RemoveShieldWall src/Dodge/Data/Item/Effect.hs 23;" C Remove_LOS src/Dodge/Data/Config.hs 77;" C Render src/Data/Preload/Render.hs 5;" m Render src/Dodge/Render.hs 2;" m @@ -1596,7 +1597,7 @@ RezBox src/Dodge/Room/RezBox.hs 1;" m RightButtonOptions src/Dodge/Data/RightButtonOptions.hs 13;" t RightButtonOptions src/Dodge/Data/RightButtonOptions.hs 6;" m RightForward src/Dodge/Data/Creature/Stance.hs 33;" C -RightwardLDT src/Dodge/Data/DoubleTree.hs 53;" C +RightwardLDT src/Dodge/Data/DoubleTree.hs 58;" C RoadBlock src/Dodge/Room/RoadBlock.hs 2;" m Rod src/Dodge/Item/Held/Rod.hs 1;" m Room src/Dodge/Data/GenWorld.hs 94;" t @@ -1943,7 +1944,7 @@ Toggle src/Dodge/Data/Universe.hs 100;" C Toggle2 src/Dodge/Data/Universe.hs 104;" C TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m TopEscapeMenuOption src/Dodge/Data/Universe.hs 74;" C -TopLDT src/Dodge/Data/DoubleTree.hs 44;" C +TopLDT src/Dodge/Data/DoubleTree.hs 49;" C TorpedoBaySS src/Dodge/Data/Scenario.hs 99;" C TorqueCr src/Dodge/Data/WorldEffect.hs 31;" C TorqueDamage src/Dodge/Data/Damage.hs 27;" C @@ -2285,18 +2286,18 @@ _clTimer src/Dodge/Data/Cloud.hs 24;" f _clType src/Dodge/Data/Cloud.hs 25;" f _clVel src/Dodge/Data/Cloud.hs 20;" f _clZoning src/Dodge/Data/World.hs 50;" f -_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 47;" f -_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 56;" f -_cldtCloseRight src/Dodge/Data/DoubleTree.hs 50;" f -_cldtCloseRight src/Dodge/Data/DoubleTree.hs 59;" f -_cldtFarLeft src/Dodge/Data/DoubleTree.hs 55;" f -_cldtFarRight src/Dodge/Data/DoubleTree.hs 51;" f -_cldtLink src/Dodge/Data/DoubleTree.hs 49;" f -_cldtLink src/Dodge/Data/DoubleTree.hs 58;" f -_cldtParent src/Dodge/Data/DoubleTree.hs 48;" f -_cldtParent src/Dodge/Data/DoubleTree.hs 57;" f -_cldtUp src/Dodge/Data/DoubleTree.hs 46;" f -_cldtUp src/Dodge/Data/DoubleTree.hs 54;" f +_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 52;" f +_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 61;" f +_cldtCloseRight src/Dodge/Data/DoubleTree.hs 55;" f +_cldtCloseRight src/Dodge/Data/DoubleTree.hs 64;" f +_cldtFarLeft src/Dodge/Data/DoubleTree.hs 60;" f +_cldtFarRight src/Dodge/Data/DoubleTree.hs 56;" f +_cldtLink src/Dodge/Data/DoubleTree.hs 54;" f +_cldtLink src/Dodge/Data/DoubleTree.hs 63;" f +_cldtParent src/Dodge/Data/DoubleTree.hs 53;" f +_cldtParent src/Dodge/Data/DoubleTree.hs 62;" f +_cldtUp src/Dodge/Data/DoubleTree.hs 51;" f +_cldtUp src/Dodge/Data/DoubleTree.hs 59;" f _clickPos src/Dodge/Data/Input.hs 50;" f _clickWorldPos src/Dodge/Data/Input.hs 52;" f _closeButtons src/Dodge/Data/HUD.hs 51;" f @@ -2458,9 +2459,9 @@ _drSpeed src/Dodge/Data/Door.hs 45;" f _drStatus src/Dodge/Data/Door.hs 37;" f _drTrigger src/Dodge/Data/Door.hs 38;" f _drWallIDs src/Dodge/Data/Door.hs 36;" f -_dtLeft src/Dodge/Data/DoubleTree.hs 29;" f -_dtRight src/Dodge/Data/DoubleTree.hs 29;" f -_dtValue src/Dodge/Data/DoubleTree.hs 29;" f +_dtLeft src/Dodge/Data/DoubleTree.hs 30;" f +_dtRight src/Dodge/Data/DoubleTree.hs 30;" f +_dtValue src/Dodge/Data/DoubleTree.hs 30;" f _ebColor src/Dodge/Data/EnergyBall.hs 17;" f _ebEff src/Dodge/Data/EnergyBall.hs 21;" f _ebPos src/Dodge/Data/EnergyBall.hs 18;" f @@ -2636,9 +2637,9 @@ _lasersToDraw src/Dodge/Data/LWorld.hs 117;" f _ldpPos src/Dodge/Data/SelectionList.hs 14;" f _ldpScale src/Dodge/Data/SelectionList.hs 15;" f _ldpVerticalGap src/Dodge/Data/SelectionList.hs 16;" f -_ldtLeft src/Dodge/Data/DoubleTree.hs 39;" f -_ldtRight src/Dodge/Data/DoubleTree.hs 40;" f -_ldtValue src/Dodge/Data/DoubleTree.hs 39;" f +_ldtLeft src/Dodge/Data/DoubleTree.hs 42;" f +_ldtRight src/Dodge/Data/DoubleTree.hs 43;" f +_ldtValue src/Dodge/Data/DoubleTree.hs 41;" f _leadTargetBy src/Dodge/Data/ActionPlan.hs 150;" f _lightSources src/Dodge/Data/LWorld.hs 137;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f @@ -2652,8 +2653,8 @@ _linkGapEW src/Dodge/Data/Room.hs 35;" f _linkGapNS src/Dodge/Data/Room.hs 36;" f _loadedChunks src/Sound/Data.hs 36;" f _loadedMusic src/Music.hs 8;" f -_locLDT src/Dodge/Data/DoubleTree.hs 64;" f -_locLdtContext src/Dodge/Data/DoubleTree.hs 63;" f +_locLDT src/Dodge/Data/DoubleTree.hs 69;" f +_locLdtContext src/Dodge/Data/DoubleTree.hs 68;" f _lpColor src/Dodge/Data/Laser.hs 25;" f _lpDir src/Dodge/Data/Laser.hs 24;" f _lpPhaseV src/Dodge/Data/Laser.hs 22;" f @@ -3308,12 +3309,12 @@ addToTrunk src/TreeHelp.hs 156;" f addWarningTerminal src/Dodge/Room/Warning.hs 37;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 77;" f -advanceScrollAmount src/Dodge/Update.hs 410;" f +advanceScrollAmount src/Dodge/Update.hs 414;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f aimDelaySweep src/Dodge/Render/Picture.hs 239;" f aimStanceInfo src/Dodge/Item/Info.hs 205;" f -aimTurn src/Dodge/Creature/YourControl.hs 146;" f +aimTurn src/Dodge/Creature/YourControl.hs 154;" f aimingWeaponHandlePos src/Dodge/Item/HeldOffset.hs 69;" f aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 63;" f airlock src/Dodge/Room/Airlock.hs 19;" f @@ -3324,7 +3325,7 @@ 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 -allHotkeys src/Dodge/Creature/YourControl.hs 53;" f +allHotkeys src/Dodge/Creature/YourControl.hs 60;" f allInvLocs src/Dodge/Item/Grammar.hs 222;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f @@ -3339,23 +3340,23 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 243;" f -applyCME src/Dodge/HeldUse.hs 70;" f +applyCME src/Dodge/HeldUse.hs 103;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f -applyInvLock src/Dodge/HeldUse.hs 85;" f +applyInvLock src/Dodge/HeldUse.hs 118;" f applyMagnetsToBul src/Dodge/Bullet.hs 36;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f applyPastDamages src/Dodge/Creature/State.hs 135;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 104;" f +applyRecoil src/Dodge/HeldUse.hs 137;" f applyResFactor src/Dodge/Data/Config.hs 108;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 79;" f -applySidePush src/Dodge/HeldUse.hs 111;" f -applySoundCME src/Dodge/HeldUse.hs 95;" f +applySidePush src/Dodge/HeldUse.hs 144;" f +applySoundCME src/Dodge/HeldUse.hs 128;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 40;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -3363,7 +3364,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 122;" f +applyTorqueCME src/Dodge/HeldUse.hs 155;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arc src/Picture/Base.hs 287;" f @@ -3382,7 +3383,7 @@ armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f arms src/Dodge/Creature/Picture.hs 75;" f arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f -assignHotkey src/Dodge/Hotkey.hs 26;" f +assignHotkey src/Dodge/Hotkey.hs 25;" f assignNewHotkey src/Dodge/Hotkey.hs 14;" f assignPushDoors src/Dodge/LevelGen.hs 42;" f atFstLnkOut src/Dodge/PlacementSpot.hs 211;" f @@ -3397,7 +3398,7 @@ attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attribSize src/Shader/Compile.hs 306;" f -augInvDirectSelect src/Dodge/Inventory.hs 196;" f +augInvDirectSelect src/Dodge/Inventory.hs 191;" f augmentedHUD src/Dodge/Item/Scope.hs 47;" f autoAmr src/Dodge/Item/Held/Rod.hs 49;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f @@ -3445,7 +3446,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 34;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 221;" f +basicMuzFlare src/Dodge/HeldUse.hs 254;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 97;" f batteryPack src/Dodge/Item/Equipment.hs 55;" f @@ -3531,9 +3532,9 @@ centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainLinkOrientation src/Dodge/Creature/State.hs 266;" f chainPairs src/Geometry.hs 363;" f -changeSwapOther src/Dodge/Inventory.hs 154;" f -changeSwapSel src/Dodge/Inventory.hs 146;" f -changeSwapWith src/Dodge/Inventory.hs 189;" f +changeSwapOther src/Dodge/Inventory.hs 149;" f +changeSwapSel src/Dodge/Inventory.hs 141;" f +changeSwapWith src/Dodge/Inventory.hs 184;" f charToTuple src/Picture/Base.hs 317;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 24;" f @@ -3545,21 +3546,21 @@ chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 45;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 105;" f checkConnection src/Dodge/Inventory/Swap.hs 85;" f checkDeath src/Dodge/Creature/State.hs 78;" f -checkEndGame src/Dodge/Update.hs 694;" f +checkEndGame src/Dodge/Update.hs 698;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 17;" f checkInventorySelectionExists src/Dodge/DisplayInventory.hs 95;" f -checkTermDist src/Dodge/Update.hs 303;" f +checkTermDist src/Dodge/Update.hs 307;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 112;" f chooseCursorBorders src/Dodge/Render/List.hs 156;" f -chooseEquipmentPosition src/Dodge/Inventory/RBList.hs 36;" f +chooseEquipPosition src/Dodge/Inventory/RBList.hs 34;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 39;" f -chooseFreeSite src/Dodge/Inventory/RBList.hs 42;" f +chooseFreeSite src/Dodge/Inventory/RBList.hs 40;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 105;" f chooseMovementPistol src/Dodge/Humanoid.hs 202;" f chooseMovementPistol' src/Dodge/Humanoid.hs 207;" f @@ -3572,7 +3573,7 @@ circle src/Picture/Base.hs 180;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f -clClSpringVel src/Dodge/Update.hs 747;" f +clClSpringVel src/Dodge/Update.hs 751;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 166;" f @@ -3597,7 +3598,7 @@ closestCreatureID src/Dodge/Debug.hs 92;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f closestPointOnLineParam src/Geometry/Intersect.hs 267;" f closestPointOnSeg src/Geometry/Intersect.hs 282;" f -cloudEffect src/Dodge/Update.hs 717;" f +cloudEffect src/Dodge/Update.hs 721;" f cloudPoisonDamage src/Dodge/Update/Cloud.hs 9;" f clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f @@ -3670,7 +3671,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 77;" f crBlips src/Dodge/RadarSweep.hs 69;" f crCamouflage src/Dodge/Creature/Picture.hs 31;" f crCanSeeCr src/Dodge/Creature/Test.hs 48;" f -crCrSpring src/Dodge/Update.hs 765;" f +crCrSpring src/Dodge/Update.hs 769;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 26;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 37;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 51;" f @@ -3691,7 +3692,7 @@ crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crOnWall src/Dodge/WallCreatureCollisions.hs 84;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f crSetRoots src/Dodge/Inventory/Location.hs 48;" f -crSpring src/Dodge/Update.hs 760;" f +crSpring src/Dodge/Update.hs 764;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f crUpdate src/Dodge/Creature/State.hs 62;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f @@ -3709,7 +3710,7 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 76;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 527;" f +createProjectile src/Dodge/HeldUse.hs 560;" f createShell src/Dodge/Projectile/Create.hs 19;" f createShieldWall src/Dodge/Euse.hs 135;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f @@ -3911,7 +3912,7 @@ detector src/Dodge/Item/Held/Utility.hs 35;" f detectorColor src/Dodge/Item/Draw/SPic.hs 391;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 185;" f -determineProjectileTracking src/Dodge/HeldUse.hs 516;" f +determineProjectileTracking src/Dodge/HeldUse.hs 549;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 53;" f diffAngles src/Geometry.hs 196;" f @@ -3930,9 +3931,9 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 226;" f displayIndents src/Dodge/DisplayInventory.hs 123;" f -displayPulse src/Dodge/Item/Display.hs 101;" f +displayPulse src/Dodge/Item/Display.hs 94;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f -displayTerminalLineString src/Dodge/Update.hs 439;" f +displayTerminalLineString src/Dodge/Update.hs 443;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f @@ -3967,14 +3968,14 @@ doDrag src/Dodge/Update/Input/InGame.hs 98;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 471;" f +doGenFloat src/Dodge/HeldUse.hs 504;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f doIntImp src/Dodge/CreatureEffect.hs 24;" f doInvEffect src/Dodge/ItEffect.hs 10;" f doItCrWdWd src/Dodge/WorldEffect.hs 44;" f -doItemTimeScroll src/Dodge/Update.hs 200;" f +doItemTimeScroll src/Dodge/Update.hs 201;" f doItmCrWdWd src/Dodge/Euse.hs 23;" f doLoop src/Loop.hs 60;" f doMCrAc src/Dodge/CreatureEffect.hs 57;" f @@ -4008,7 +4009,7 @@ doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 74;" f -doTimeScroll src/Dodge/Update.hs 205;" f +doTimeScroll src/Dodge/Update.hs 206;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 101;" f doWallRotate src/Dodge/Update/Camera.hs 194;" f @@ -4017,8 +4018,8 @@ doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f doWdP2f src/Dodge/WdP2f.hs 12;" f doWdWd src/Dodge/WorldEffect.hs 25;" f -doWeaponRepetitions src/Dodge/HeldUse.hs 61;" f -doWorldEvents src/Dodge/Update.hs 421;" f +doWeaponRepetitions src/Dodge/HeldUse.hs 94;" f +doWorldEvents src/Dodge/Update.hs 425;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f doorBetween src/Dodge/Placement/Instance/Door.hs 39;" f @@ -4170,7 +4171,7 @@ dummyMenuOption src/Dodge/Menu/Option.hs 75;" f ebFlicker src/Dodge/EnergyBall.hs 93;" f edgeFormatting src/Dodge/Combine/Graph.hs 130;" f edgeToPic src/Dodge/Debug/Picture.hs 393;" f -effectWhileAttached src/Dodge/ItEffect.hs 27;" f +effectWhileAttached src/Dodge/ItEffect.hs 24;" f ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 488;" f elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 374;" f elephantGun src/Dodge/Item/Held/Rod.hs 36;" f @@ -4185,12 +4186,12 @@ endRegex src/Dodge/Update/Input/InGame.hs 234;" f enterCombineInv src/Dodge/DisplayInventory.hs 354;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f +eqSiteToPositions src/Dodge/Inventory/RBList.hs 76;" f equipAllocString src/Dodge/Render/HUD.hs 295;" f equipInfo src/Dodge/Item/Info.hs 98;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f equipPosition src/Dodge/Item/Draw.hs 30;" f equipSiteInfo src/Dodge/Item/Info.hs 215;" f -equipSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 20;" f errorAngleVV src/Geometry.hs 62;" f @@ -4254,7 +4255,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 72;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 40;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 56;" f flamerPic src/Dodge/Item/Draw/SPic.hs 328;" f -flareCircleAt src/Dodge/HeldUse.hs 202;" f +flareCircleAt src/Dodge/HeldUse.hs 235;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 49;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 9;" f @@ -4307,7 +4308,7 @@ fromV3 src/Geometry/Data.hs 43;" f frontArmour src/Dodge/Item/Equipment.hs 40;" f fstV2 src/Geometry/Data.hs 50;" f fuelPack src/Dodge/Item/Equipment.hs 73;" f -functionalUpdate src/Dodge/Update.hs 251;" f +functionalUpdate src/Dodge/Update.hs 255;" f fuseFunc src/Dodge/Path.hs 150;" f fusePairs src/Dodge/Path.hs 153;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f @@ -4321,7 +4322,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 131;" f gameplayMenuOptions src/Dodge/Menu.hs 134;" f -gasCreate src/Dodge/HeldUse.hs 468;" f +gasCreate src/Dodge/HeldUse.hs 501;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4336,8 +4337,8 @@ getAmmoLinks src/Dodge/Item/Grammar.hs 81;" f getArguments src/Dodge/Update/Scroll.hs 152;" f getArguments' src/Dodge/Update/Scroll.hs 140;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f -getBulletTrajectory src/Dodge/HeldUse.hs 379;" f -getBulletType src/Dodge/HeldUse.hs 353;" f +getBulletTrajectory src/Dodge/HeldUse.hs 412;" f +getBulletType src/Dodge/HeldUse.hs 386;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f getCrDexterity src/Dodge/Creature/Statistics.hs 11;" f @@ -4345,13 +4346,13 @@ getCrEquipment src/Dodge/Equipment.hs 7;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 14;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 383;" f -getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getLaserColor src/Dodge/HeldUse.hs 218;" f -getLaserDamage src/Dodge/HeldUse.hs 215;" f -getLaserPhaseV src/Dodge/HeldUse.hs 212;" f +getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" f +getLaserColor src/Dodge/HeldUse.hs 251;" f +getLaserDamage src/Dodge/HeldUse.hs 248;" f +getLaserPhaseV src/Dodge/HeldUse.hs 245;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f -getMenuMouseContext src/Dodge/Update.hs 368;" f +getMenuMouseContext src/Dodge/Update.hs 372;" f getNodePos src/Dodge/Path.hs 31;" f getPretty src/AesonHelp.hs 7;" f getPrettyShort src/AesonHelp.hs 10;" f @@ -4411,9 +4412,9 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 37;" f -hammerCheck src/Dodge/HeldUse.hs 43;" f +hammerCheck src/Dodge/HeldUse.hs 50;" f handleEvent src/Dodge/Event.hs 27;" f -handleHotkeys src/Dodge/Creature/YourControl.hs 40;" f +handleHotkeys src/Dodge/Creature/YourControl.hs 44;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f @@ -4439,9 +4440,9 @@ healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f healthTest src/Dodge/Room/LasTurret.hs 93;" f heavyBulDams src/Dodge/Item/Weapon/Bullet.hs 37;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f -heldEffect src/Dodge/HeldUse.hs 37;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 50;" f -heldEffectNoHammerCheck src/Dodge/HeldUse.hs 40;" f +heldEffect src/Dodge/HeldUse.hs 36;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 83;" f +heldEffectNoHammerCheck src/Dodge/HeldUse.hs 39;" f heldInfo src/Dodge/Item/Info.hs 48;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 78;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 26;" f @@ -4463,7 +4464,7 @@ holsterWeapon src/Dodge/Creature/Volition.hs 14;" f homingDrawType src/Dodge/Projectile/Create.hs 12;" f homingModule src/Dodge/Item/Scope.hs 32;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f -hotkeyToScancode src/Dodge/Creature/YourControl.hs 56;" f +hotkeyToScancode src/Dodge/Creature/YourControl.hs 63;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 41;" f humanoidAIList src/Dodge/Humanoid.hs 181;" f hvBulletAmmo src/Dodge/Item/Weapon/Bullet.hs 30;" f @@ -4559,7 +4560,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 56;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 229;" f +isAmmoIntLink src/Dodge/HeldUse.hs 262;" f isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 95;" f @@ -4575,7 +4576,7 @@ isLeftOfA src/Geometry.hs 181;" f isNothing' src/MaybeHelp.hs 33;" f isOnSeg src/Geometry.hs 240;" f isOutLnk src/Dodge/PlacementSpot.hs 164;" f -isOverTerminalScreen src/Dodge/Update.hs 389;" f +isOverTerminalScreen src/Dodge/Update.hs 393;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 61;" f @@ -4593,7 +4594,7 @@ itemBaseName src/Dodge/Item/Display.hs 45;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 54;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f -itemDetectorEffect src/Dodge/HeldUse.hs 259;" f +itemDetectorEffect src/Dodge/HeldUse.hs 292;" f itemDisplay src/Dodge/Item/Display.hs 16;" f itemDisplayPad src/Dodge/Item/Display.hs 29;" f itemEquipPict src/Dodge/Item/Draw.hs 17;" f @@ -4605,7 +4606,7 @@ itemFromEquipType src/Dodge/Item.hs 56;" f itemFromHeldType src/Dodge/Item/Held.hs 26;" f itemInfo src/Dodge/Item/Info.hs 13;" f itemInvColor src/Dodge/Item/InventoryColor.hs 11;" f -itemNumberDisplay src/Dodge/Item/Display.hs 81;" f +itemNumberDisplay src/Dodge/Item/Display.hs 74;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f @@ -4649,7 +4650,7 @@ lampCrSPic src/Dodge/Render/ShapePicture.hs 58;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 351;" f -lasRayAt src/Dodge/HeldUse.hs 330;" f +lasRayAt src/Dodge/HeldUse.hs 363;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f lasTunnel src/Dodge/Room/LasTurret.hs 124;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f @@ -4712,7 +4713,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 380;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f -loadMuzzle src/Dodge/HeldUse.hs 139;" f +loadMuzzle src/Dodge/HeldUse.hs 172;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4726,7 +4727,7 @@ locLeftmost src/Dodge/DoubleTree.hs 202;" f locRightmost src/Dodge/DoubleTree.hs 205;" f locToTop src/Dodge/DoubleTree.hs 198;" f locUp src/Dodge/DoubleTree.hs 191;" f -lockInv src/Dodge/Inventory/Lock.hs 6;" f +lockInv src/Dodge/Inventory/Lock.hs 9;" f lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 50;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f @@ -4767,7 +4768,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 51;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 412;" f +makeBullet src/Dodge/HeldUse.hs 445;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4793,7 +4794,7 @@ makeFragBullets src/Dodge/Bullet.hs 107;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 33;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 160;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 193;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4823,7 +4824,7 @@ makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 12;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 7;" f mapOverlay src/Dodge/Render/HUD/Carte.hs 24;" f -markWallSeen src/Dodge/Update.hs 679;" f +markWallSeen src/Dodge/Update.hs 683;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 49;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f @@ -4838,7 +4839,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 583;" f maybeOpenTerminal src/Dodge/Update.hs 123;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 111;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 107;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 100;" f mcApplyDamage src/Dodge/Machine/Update.hs 108;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f @@ -4848,10 +4849,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 124;" f mcSPic src/Dodge/Render/ShapePicture.hs 132;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 87;" f mcSensorUpdate src/Dodge/Machine/Update.hs 119;" f -mcShootLaser src/Dodge/HeldUse.hs 495;" f +mcShootLaser src/Dodge/HeldUse.hs 528;" f mcTriggerVal src/Dodge/Machine/Update.hs 93;" f mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f -mcUseHeld src/Dodge/HeldUse.hs 438;" f +mcUseHeld src/Dodge/HeldUse.hs 471;" f mcUseItem src/Dodge/Machine/Update.hs 79;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 85;" f @@ -4916,7 +4917,7 @@ mntLSOn src/Dodge/Placement/Instance/LightSource.hs 54;" f mntLight src/Dodge/Placement/Instance/LightSource.hs 158;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 163;" f modTo src/Geometry/Zone.hs 10;" f -mouseActionsCr src/Dodge/Creature/YourControl.hs 156;" f +mouseActionsCr src/Dodge/Creature/YourControl.hs 164;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 58;" f mouseCursorType src/Dodge/Render/Picture.hs 80;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f @@ -4925,7 +4926,7 @@ moveCombineSel src/Dodge/Update/Scroll.hs 58;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 53;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f -moveOldHotkey src/Dodge/Hotkey.hs 34;" f +moveOldHotkey src/Dodge/Hotkey.hs 31;" f movePenBullet src/Dodge/Bullet.hs 200;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 17;" f @@ -4944,11 +4945,11 @@ multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 34;" f multiLookupTrieI src/SimpleTrie.hs 43;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 188;" f +muzFlareAt src/Dodge/HeldUse.hs 221;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f -mvGust src/Dodge/Update.hs 708;" f +mvGust src/Dodge/Update.hs 712;" f mvLS src/Dodge/Placement/PlaceSpot.hs 217;" f mvP src/Dodge/Wall/Move.hs 54;" f mvPP src/Dodge/Placement/PlaceSpot.hs 183;" f @@ -5215,13 +5216,13 @@ powlistUpToN src/Multiset.hs 23;" f powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f ppDraw src/Dodge/Render/ShapePicture.hs 117;" f -ppEvents src/Dodge/Update.hs 671;" f +ppEvents src/Dodge/Update.hs 675;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 82;" f preloadRender src/Preload/Render.hs 30;" f premapMaybe src/FoldlHelp.hs 24;" f prependTwo src/Geometry.hs 165;" f -pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 166;" f +pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 174;" f prettyDT src/Dodge/DoubleTree.hs 179;" f prettyLDT src/Dodge/DoubleTree.hs 183;" f primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 436;" f @@ -5351,9 +5352,9 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteScreen src/Dodge/Item/Scope.hs 50;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 340;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 373;" f removeDot src/ShortShow.hs 30;" f -removeHotkey src/Dodge/Hotkey.hs 43;" f +removeHotkey src/Dodge/Hotkey.hs 40;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Euse.hs 153;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f @@ -5422,7 +5423,7 @@ roomShuriken src/Dodge/Room/Boss.hs 121;" f roomTwistCross src/Dodge/Room/Boss.hs 152;" f roomsContaining src/Dodge/Room/Containing.hs 20;" f roomsContaining' src/Dodge/Room/Containing.hs 25;" f -rootNotrootEff src/Dodge/ItEffect.hs 22;" f +rootNotrootEff src/Dodge/ItEffect.hs 19;" f rose src/Color.hs 20;" f rotD src/Padding.hs 47;" f rotListAt src/Padding.hs 52;" f @@ -5483,7 +5484,7 @@ scaleMat src/MatrixHelper.hs 59;" f scaleMatrix src/MatrixHelper.hs 56;" f scaleSH src/Shape.hs 267;" f scalp src/Dodge/Creature/Picture.hs 96;" f -scancodeToHotkey src/Dodge/Creature/YourControl.hs 71;" f +scancodeToHotkey src/Dodge/Creature/YourControl.hs 78;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f scorchSPic src/Dodge/Creature/State.hs 107;" f screenBox src/Dodge/Base/Window.hs 53;" f @@ -5491,15 +5492,15 @@ screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f -scrollAugInvSel src/Dodge/Inventory.hs 204;" f -scrollAugNextInSection src/Dodge/Inventory.hs 217;" f +scrollAugInvSel src/Dodge/Inventory.hs 199;" f +scrollAugNextInSection src/Dodge/Inventory.hs 212;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 135;" f scrollCommands src/Dodge/Update/Scroll.hs 132;" f scrollDebugInfoInt src/Dodge/Debug.hs 47;" f scrollRBOption src/Dodge/Update/Scroll.hs 109;" f scrollSelectionSections src/Dodge/SelectionSections.hs 26;" f -scrollTimeBack src/Dodge/Update.hs 215;" f -scrollTimeForward src/Dodge/Update.hs 235;" f +scrollTimeBack src/Dodge/Update.hs 216;" f +scrollTimeForward src/Dodge/Update.hs 238;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f seagullBarkTransformedS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f seagullChatter1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 494;" f @@ -5544,7 +5545,7 @@ setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 127;" f setFromToDams src/Dodge/Bullet.hs 161;" f -setHotkey src/Dodge/Hotkey.hs 40;" f +setHotkey src/Dodge/Hotkey.hs 37;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f @@ -5555,7 +5556,7 @@ setLinkTypePD src/Dodge/RoomLink.hs 67;" f setMinInvSize src/Dodge/Creature/Action.hs 149;" f setMusicVolume src/Sound.hs 161;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 51;" f -setOldPos src/Dodge/Update.hs 463;" f +setOldPos src/Dodge/Update.hs 467;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f @@ -5628,14 +5629,14 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 298;" f shineTorch src/Dodge/Creature/State.hs 340;" f -shootBullet src/Dodge/HeldUse.hs 399;" f +shootBullet src/Dodge/HeldUse.hs 432;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 310;" f +shootLaser src/Dodge/HeldUse.hs 343;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 504;" f +shootTeslaArc src/Dodge/HeldUse.hs 537;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 289;" f +shootTractorBeam src/Dodge/HeldUse.hs 322;" f shootersRoom src/Dodge/Room/Room.hs 315;" f shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f @@ -5647,7 +5648,6 @@ shoulderHeight src/Dodge/Item/HeldOffset.hs 81;" f shoulderSH src/Dodge/Creature/Picture.hs 139;" f shoulderSP src/Dodge/Creature/HandPos.hs 170;" f showAttachItem src/Dodge/Item/Display.hs 60;" f -showAutoRechargeProgress src/Dodge/Item/Display.hs 74;" f showEquipItem src/Dodge/Item/Display.hs 69;" f showInt src/Dodge/Item/Info.hs 31;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f @@ -5661,7 +5661,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 129;" f -simpleCrSprings src/Dodge/Update.hs 756;" f +simpleCrSprings src/Dodge/Update.hs 760;" f simpleDamFL src/Dodge/Flame.hs 40;" f simpleTermMessage src/Dodge/Terminal.hs 253;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f @@ -5799,7 +5799,7 @@ swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 76;" f swapInOutLinks src/Dodge/RoomLink.hs 80;" f swapIndices src/ListHelp.hs 50;" f swapInvItems src/Dodge/Inventory/Swap.hs 20;" f -swapItemWith src/Dodge/Inventory.hs 178;" f +swapItemWith src/Dodge/Inventory.hs 173;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 171;" f switchDoor src/Dodge/Placement/Instance/Door.hs 96;" f @@ -5888,7 +5888,7 @@ tinMag src/Dodge/Item/Ammo.hs 27;" f tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 416;" f titleOptionsMenu src/Dodge/Menu.hs 99;" f titleOptionsNoWrite src/Dodge/Menu.hs 102;" f -tmUpdate src/Dodge/Update.hs 443;" f +tmUpdate src/Dodge/Update.hs 447;" f toBothLnk src/Dodge/RoomLink.hs 121;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f @@ -5903,7 +5903,7 @@ toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f toggleCombineInv src/Dodge/DisplayInventory.hs 35;" f toggleCommand src/Dodge/Terminal.hs 196;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 43;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 42;" f toggleJust src/MaybeHelp.hs 41;" f toggleMap src/Dodge/Update/Input/InGame.hs 547;" f toggleTweakInv src/Dodge/Update/Input/InGame.hs 560;" f @@ -5921,7 +5921,7 @@ torqueCr src/Dodge/WorldEffect.hs 63;" f torso src/Dodge/Creature/Picture.hs 105;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 299;" f +tractorBeamAt src/Dodge/HeldUse.hs 332;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 375;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5974,7 +5974,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 -tryAssignHotkey src/Dodge/Creature/YourControl.hs 87;" f +tryAssignHotkey src/Dodge/Creature/YourControl.hs 94;" f tryAttachBulletBelt src/Dodge/Euse.hs 41;" f tryAttachItems src/Dodge/Item/Grammar.hs 21;" f tryChargeBattery src/Dodge/Euse.hs 44;" f @@ -6011,7 +6011,7 @@ ubyteSize src/Shader/Parameters.hs 13;" f uncurryV src/Geometry/Data.hs 46;" f unfoldrMID src/MonadHelp.hs 33;" f unitVectorAtAngle src/Geometry/Vector.hs 100;" f -unlockInv src/Dodge/Inventory/Lock.hs 9;" f +unlockInv src/Dodge/Inventory/Lock.hs 12;" f unpause src/Dodge/Menu.hs 192;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 52;" f unsafeBlinker src/Dodge/Item/Weapon/Utility.hs 27;" f @@ -6034,40 +6034,40 @@ updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBounds src/Dodge/Update/Camera.hs 251;" f updateBulVel src/Dodge/Bullet.hs 40;" f updateBullet src/Dodge/Bullet.hs 23;" f -updateBullets src/Dodge/Update.hs 537;" f +updateBullets src/Dodge/Update.hs 541;" f updateCamera src/Dodge/Update/Camera.hs 31;" f -updateCloseObjects src/Dodge/Inventory.hs 117;" f -updateCloud src/Dodge/Update.hs 722;" f -updateClouds src/Dodge/Update.hs 566;" f +updateCloseObjects src/Dodge/Inventory.hs 112;" f +updateCloud src/Dodge/Update.hs 726;" f +updateClouds src/Dodge/Update.hs 570;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 41;" f updateCombineSections src/Dodge/DisplayInventory.hs 48;" f updateCreature src/Dodge/Creature/Update.hs 13;" f -updateCreatureGroups src/Dodge/Update.hs 509;" f -updateCreatureSoundPositions src/Dodge/Update.hs 485;" f +updateCreatureGroups src/Dodge/Update.hs 513;" f +updateCreatureSoundPositions src/Dodge/Update.hs 489;" f updateDebugMessageOffset src/Dodge/Update.hs 92;" f -updateDelayedEvents src/Dodge/Update.hs 785;" f +updateDelayedEvents src/Dodge/Update.hs 789;" f updateDisplaySections src/Dodge/DisplayInventory.hs 130;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 530;" f +updateDistortions src/Dodge/Update.hs 534;" f updateEnergyBall src/Dodge/EnergyBall.hs 45;" f -updateEnergyBalls src/Dodge/Update.hs 554;" f +updateEnergyBalls src/Dodge/Update.hs 558;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 482;" f updateExpBarrel src/Dodge/Barreloid.hs 19;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFlame src/Dodge/Flame.hs 70;" f -updateFlames src/Dodge/Update.hs 551;" f +updateFlames src/Dodge/Update.hs 555;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 346;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 339;" f -updateGusts src/Dodge/Update.hs 705;" f +updateGusts src/Dodge/Update.hs 709;" f updateHeldRootItem src/Dodge/Creature/State.hs 250;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f -updateIMl src/Dodge/Update.hs 499;" f -updateIMl' src/Dodge/Update.hs 504;" f +updateIMl src/Dodge/Update.hs 503;" f +updateIMl' src/Dodge/Update.hs 508;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 399;" f -updateInstantBullets src/Dodge/Update.hs 643;" f +updateInstantBullets src/Dodge/Update.hs 647;" f updateInv src/Dodge/Creature/State.hs 152;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 89;" f updateItemTargeting src/Dodge/Creature/State.hs 367;" f @@ -6076,23 +6076,23 @@ updateKeyInGame src/Dodge/Update/Input/InGame.hs 393;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 381;" f updateLampoid src/Dodge/Lampoid.hs 12;" f updateLaser src/Dodge/Laser/Update.hs 13;" f -updateLasers src/Dodge/Update.hs 428;" f +updateLasers src/Dodge/Update.hs 432;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 414;" f -updateMIM src/Dodge/Update.hs 656;" f +updateMIM src/Dodge/Update.hs 660;" f updateMachine src/Dodge/Machine/Update.hs 19;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 175;" f -updateMouseContext src/Dodge/Update.hs 311;" f -updateMouseContextGame src/Dodge/Update.hs 316;" f +updateMouseContext src/Dodge/Update.hs 315;" f +updateMouseContextGame src/Dodge/Update.hs 320;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 87;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 79;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 142;" f updateMovement src/Dodge/Creature/State.hs 438;" f -updateObjCatMaybes src/Dodge/Update.hs 521;" f -updateObjMapMaybe src/Dodge/Update.hs 514;" f -updatePastWorlds src/Dodge/Update.hs 416;" f +updateObjCatMaybes src/Dodge/Update.hs 525;" f +updateObjMapMaybe src/Dodge/Update.hs 518;" f +updatePastWorlds src/Dodge/Update.hs 420;" f updatePosEvent src/Dodge/PosEvent.hs 11;" f -updatePosEvents src/Dodge/Update.hs 563;" f +updatePosEvents src/Dodge/Update.hs 567;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 356;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 359;" f @@ -6101,9 +6101,9 @@ updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 22;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f updateRadarBlip src/Dodge/RadarBlip.hs 8;" f -updateRadarBlips src/Dodge/Update.hs 533;" f +updateRadarBlips src/Dodge/Update.hs 537;" f updateRadarSweep src/Dodge/RadarSweep.hs 25;" f -updateRadarSweeps src/Dodge/Update.hs 557;" f +updateRadarSweeps src/Dodge/Update.hs 561;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 106;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f @@ -6112,19 +6112,19 @@ updateScopeZoom' src/Dodge/Update/Camera.hs 138;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 301;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 274;" f -updateSeenWalls src/Dodge/Update.hs 674;" f +updateSeenWalls src/Dodge/Update.hs 678;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f -updateShockwaves src/Dodge/Update.hs 548;" f +updateShockwaves src/Dodge/Update.hs 552;" f updateSingleNodes src/TreeHelp.hs 97;" f updateSound src/Sound.hs 71;" f updateSounds src/Sound.hs 66;" f updateSpark src/Dodge/Spark.hs 19;" f -updateSparks src/Dodge/Update.hs 560;" f +updateSparks src/Dodge/Update.hs 564;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 29;" f -updateTeslaArcs src/Dodge/Update.hs 542;" f +updateTeslaArcs src/Dodge/Update.hs 546;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 545;" f +updateTractorBeams src/Dodge/Update.hs 549;" f updateTurret src/Dodge/Machine/Update.hs 49;" f updateUniverse src/Dodge/Update.hs 71;" f updateUniverseFirst src/Dodge/Update.hs 83;" f @@ -6135,7 +6135,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 21;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 12;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f updateWheelEvent src/Dodge/Update/Scroll.hs 19;" f -updateWheelEvents src/Dodge/Update.hs 403;" f +updateWheelEvents src/Dodge/Update.hs 407;" f updateWorldEventFlag src/Dodge/Update.hs 117;" f updateWorldEventFlags src/Dodge/Update.hs 105;" f upperBody src/Dodge/Creature/Picture.hs 135;" f @@ -6162,20 +6162,23 @@ useBulletPayload src/Dodge/Bullet.hs 96;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 30;" f -useGasParams src/Dodge/HeldUse.hs 443;" f -useHotKey src/Dodge/Creature/YourControl.hs 50;" f -useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 97;" f +useGasParams src/Dodge/HeldUse.hs 476;" f +useHotkey src/Dodge/Creature/YourControl.hs 54;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 233;" f +useLoadedAmmo src/Dodge/HeldUse.hs 266;" f useMagShield src/Dodge/Euse.hs 70;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 7;" f +useRewindGun src/Dodge/HeldUse.hs 621;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useRootItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f +useRootItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f +useStopWatch src/Dodge/HeldUse.hs 602;" f useStopWatch src/Dodge/Luse.hs 21;" f +useTimeCheck src/Dodge/HeldUse.hs 58;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f +useTimeScrollGun src/Dodge/HeldUse.hs 610;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 423;" f @@ -6211,7 +6214,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 30;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 289;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 267;" f +walkNozzle src/Dodge/HeldUse.hs 300;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 80;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f @@ -6220,12 +6223,12 @@ wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f warningRooms src/Dodge/Room/Warning.hs 29;" f -wasdAim src/Dodge/Creature/YourControl.hs 109;" f +wasdAim src/Dodge/Creature/YourControl.hs 116;" f wasdDir src/Dodge/WASD.hs 17;" f wasdM src/Dodge/WASD.hs 9;" f -wasdMovement src/Dodge/Creature/YourControl.hs 134;" f -wasdTwist src/Dodge/Creature/YourControl.hs 117;" f -wasdWithAiming src/Dodge/Creature/YourControl.hs 99;" f +wasdMovement src/Dodge/Creature/YourControl.hs 142;" f +wasdTwist src/Dodge/Creature/YourControl.hs 124;" f +wasdWithAiming src/Dodge/Creature/YourControl.hs 106;" f watchCombinations src/Dodge/Combine/Combinations.hs 15;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 177;" f weakenMatS src/Dodge/Material/Sound.hs 18;" f @@ -6287,7 +6290,7 @@ yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 18;" f youDropItem src/Dodge/Creature/Action.hs 190;" f yourAugmentedItem src/Dodge/Render/HUD.hs 223;" f -yourControl src/Dodge/Creature/YourControl.hs 21;" f +yourControl src/Dodge/Creature/YourControl.hs 25;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f yourInfo src/Dodge/Creature/Info.hs 8;" f @@ -6304,9 +6307,9 @@ zipCount src/Dodge/Tree/Shift.hs 129;" f zipCountDown src/Dodge/Room/Procedural.hs 118;" f zipWithDefaults src/Dodge/Item/Display.hs 22;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f -zoneClouds src/Dodge/Update.hs 436;" f +zoneClouds src/Dodge/Update.hs 440;" f zoneCreature src/Dodge/Zoning/Creature.hs 52;" f -zoneCreatures src/Dodge/Update.hs 480;" f +zoneCreatures src/Dodge/Update.hs 484;" f zoneExtract src/Dodge/Zoning/Base.hs 50;" f zoneMonoid src/Dodge/Zoning/Base.hs 80;" f zoneOfCirc src/Dodge/Zoning/Base.hs 22;" f