diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 6199dce83..26c07a9fb 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -13,14 +13,12 @@ import Dodge.Data.World import Dodge.DoubleTree import Dodge.Euse import Dodge.HeldUse ---import Dodge.Hotkey import Dodge.Inventory import Dodge.Item.Grammar ---import Dodge.Item.Location import qualified IntMapHelp as IM -useItem :: Int -> PressType -> World -> World -useItem invid pt w = (worldEventFlags . at InventoryChange ?~ ()) . fromMaybe w $ do +useItem :: Int -> PressType -> World -> Maybe World +useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do cr <- w ^? cWorld . lWorld . creatures . ix 0 itmloc <- allInvLocs (_crInv cr) ^? ix invid . _2 let usedloc = useLocation itmloc @@ -90,7 +88,6 @@ toggleEquipmentAt invid cr w = case getEquipmentAllocation w of & crpoint . crEquipment . at newp ?~ invid & crpoint . crInv . ix invid . itLocation . ilEquipSite ?~ newp & onequip itm cr - -- & cWorld . lWorld %~ assignNewHotkey invid MoveEquipment{_allocNewPos = newp, _allocOldPos = oldp} -> w & crpoint . crEquipment . at newp ?~ invid @@ -109,16 +106,12 @@ toggleEquipmentAt invid cr w = case getEquipmentAllocation w of & crpoint . crInv . ix rid . itLocation . ilEquipSite .~ Nothing & onremove (itmat rid) cr & onequip itm cr - -- & cWorld . lWorld %~ removeHotkey rid - -- & cWorld . lWorld %~ assignNewHotkey invid RemoveEquipment{_allocOldPos = oldp} -> w & crpoint . crEquipment . at oldp .~ Nothing & crpoint . crInv . ix invid . itLocation . ilEquipSite .~ Nothing & onremove itm cr where - -- & cWorld . lWorld %~ removeHotkey invid - crpoint = cWorld . lWorld . creatures . ix (_crID cr) itmat i = _crInv cr IM.! i itm = itmat itRef diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index 23df83803..a650688ac 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -2,7 +2,7 @@ module Dodge.Creature.YourControl ( yourControl, ) where -import Dodge.Inventory +import Control.Monad import Data.Foldable import qualified Data.Map.Strict as M import Data.Maybe @@ -12,6 +12,7 @@ import Dodge.Creature.Impulse.UseItem import Dodge.Data.World import Dodge.Hotkey import Dodge.InputFocus +import Dodge.Inventory import Dodge.WASD import Geometry import LensHelp @@ -25,8 +26,8 @@ yourControl _ w | Just NoSubInventory{} <- w ^? hud . hudElement . subInventory = w & cWorld . lWorld . creatures . ix 0 - %~ (wasdWithAiming w . mouseActionsCr pkeys) - & pressedMBEffectsTopInventory pkeys + %~ (wasdWithAiming w . setCrPosture pkeys) + & tryClickUse pkeys & handleHotkeys | otherwise = w & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w @@ -36,17 +37,17 @@ yourControl _ w handleHotkeys :: World -> World handleHotkeys w | SDL.ScancodeLShift `M.member` _pressedKeys (_input w) - || SDL.ScancodeRShift `M.member` _pressedKeys (_input w) = fromMaybe w $ do - let hks = mapMaybe scancodeToHotkey $ M.keys $ w ^. input . pressedKeys - invid <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . imSelectedItem - itid <- w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix invid . itID - return $ w & cWorld . lWorld %~ \lw -> foldl' (flip $ assignHotkey itid) lw hks + || SDL.ScancodeRShift `M.member` _pressedKeys (_input w) + , hks <- mapMaybe scancodeToHotkey $ M.keys $ w ^. input . pressedKeys + , Just invid <- lw ^? creatures . ix 0 . crManipulation . manObject . imSelectedItem + , Just itid <- lw ^? creatures . ix 0 . crInv . ix invid . itID = + w & cWorld . lWorld %~ \lw' -> foldl' (flip $ assignHotkey itid) lw' hks | SDL.ScancodeLCtrl `M.member` _pressedKeys (_input w) - || SDL.ScancodeRCtrl `M.member` _pressedKeys (_input w) = fromMaybe w $ do - hk <- listToMaybe . mapMaybe scancodeToHotkey $ M.keys $ w ^. input . pressedKeys - itid <- w ^? cWorld . lWorld . hotkeys . ix hk . unNInt - invid <- w ^? cWorld . lWorld . itemLocations . ix itid . ilInvID - return $ w & augInvDirectSelect (0,invid,mempty) + || SDL.ScancodeRCtrl `M.member` _pressedKeys (_input w) + , Just hk <- listToMaybe . mapMaybe scancodeToHotkey . M.keys $ w ^. input . pressedKeys + , Just itid <- w ^? cWorld . lWorld . hotkeys . ix hk . unNInt + , Just invid <- w ^? cWorld . lWorld . itemLocations . ix itid . ilInvID = + w & augInvDirectSelect (0, invid, mempty) | otherwise = M.foldl' useHotkey @@ -54,11 +55,12 @@ handleHotkeys w (M.intersectionWith (,) thehotkeys (w ^. input . pressedKeys)) where thehotkeys = M.mapKeys hotkeyToScancode $ w ^. cWorld . lWorld . hotkeys + lw = w ^. cWorld . lWorld useHotkey :: World -> (NewInt ItmInt, PressType) -> World useHotkey w (NInt itid, pt) = fromMaybe w $ do invid <- w ^? cWorld . lWorld . itemLocations . ix itid . ilInvID - return $ useItem invid pt w + useItem invid pt w hotkeyToScancode :: Hotkey -> SDL.Scancode hotkeyToScancode x = case x of @@ -152,34 +154,25 @@ aimTurn a cr = creatureTurnTowardDir a (x * 0.2) cr {- | Set posture according to mouse presses. (should you be aiming without a selected item?) -} -mouseActionsCr :: M.Map SDL.MouseButton Int -> Creature -> Creature -mouseActionsCr pkeys +setCrPosture :: M.Map SDL.MouseButton Int -> Creature -> Creature +setCrPosture pkeys | SDL.ButtonRight `M.member` pkeys = crStance . posture .~ Aiming | otherwise = crStance . posture .~ AtEase --- where --- noaction = fromMaybe True $ do --- theaction <- cr ^? crManipulation . manObject . inInventory . iselAction --- return $ theaction == NoInvSelAction - -pressedMBEffectsTopInventory :: M.Map SDL.MouseButton Int -> World -> World -pressedMBEffectsTopInventory pkeys w - | Just ltime <- pkeys ^? ix SDL.ButtonLeft - , Just rtime <- pkeys ^? ix SDL.ButtonRight - , ltime <= rtime && inTopInv = - fromMaybe w $ do - invid <- - w - ^? cWorld . lWorld . creatures . ix 0 - . crManipulation - . manObject - . imSelectedItem - return $ useItem invid (f ltime) w - | otherwise = w +tryClickUse :: M.Map SDL.MouseButton Int -> World -> World +tryClickUse pkeys w = fromMaybe w $ do + ltime <- pkeys ^? ix SDL.ButtonLeft + rtime <- pkeys ^? ix SDL.ButtonRight + guard $ ltime <= rtime && inTopInv + invid <- w + ^? cWorld . lWorld . creatures . ix 0 + . crManipulation + . manObject + . imSelectedItem + useItem invid (f ltime) w where f 0 = InitialPress f _ = ShortPress - -- youhammerdown = set (cWorld . lWorld . creatures . ix 0 . crHammerPosition) HammerDown inTopInv = case w ^. hud . hudElement of DisplayInventory{_subInventory = NoSubInventory{}} -> True _ -> False diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 64c730e47..437f4c428 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -21,6 +21,7 @@ data ItemType | TARGETING {_ibtTargeting :: TargetingType} | BULLETMOD {_ibtBulletMod :: BulletMod} | STICKYMOD + | ITEMSCANNER deriving (Eq, Ord, Show, Read) data CraftType diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index f47caa476..67ea08245 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -1,7 +1,6 @@ --{-# LANGUAGE TupleSections #-} module Dodge.Inventory ( - checkInvSlotsYou, - rmInvItem, + rmInvItem, destroyInvItem, updateCloseObjects, changeSwapSel, @@ -46,10 +45,17 @@ destroyInvItem :: World -> World destroyInvItem cid invid w = rmInvItem cid invid w & removeitloc + & removeithotkey where removeitloc = fromMaybe id $ do itid <- w ^? cWorld . lWorld . creatures . ix cid . crInv . ix invid . itID . unNInt return $ cWorld . lWorld . itemLocations . at itid .~ Nothing + removeithotkey = fromMaybe id $ do + itid <- w ^? cWorld . lWorld . creatures . ix cid . crInv . ix invid . itID . unNInt + hk <- w ^? cWorld . lWorld . imHotkeys . unNIntMap . ix itid + return $ + (cWorld . lWorld . imHotkeys . unNIntMap . at itid .~ Nothing) + . ( cWorld . lWorld . hotkeys . at hk .~ Nothing) -- | after this the item at the inventory position will no longer exist rmInvItem :: diff --git a/src/Dodge/Inventory/Swap.hs b/src/Dodge/Inventory/Swap.hs index 5a368712c..cafe195c3 100644 --- a/src/Dodge/Inventory/Swap.hs +++ b/src/Dodge/Inventory/Swap.hs @@ -34,7 +34,6 @@ swapInvItems f i w = fromMaybe w $ do & swapAnyExtraSelection i k & checkConnection InventorySound disconnectItemS i k & cWorld . lWorld . creatures . ix 0 %~ updatecreature k ---x & swaphotkeys k & updateselection & worldEventFlags . at InventoryChange ?~ () & cWorld . lWorld %~ crUpdateItemLocations 0 @@ -43,35 +42,15 @@ swapInvItems f i w = fromMaybe w $ do -- a rethink is maybe in order & checkConnection InventoryConnectSound connectItemS i k where - -- & checkconnect k InventoryConnectSound connectItemS - - -- cpos = fromMaybe 0 $ w ^? cWorld . lWorld . creatures . ix 0 . crPos - -- checkconnect k stype s w' - -- | p (i+1) || p (i-1) - -- || p (k+1) || p (k-1) = soundStart stype cpos s Nothing w' - -- | otherwise = w' - -- where - -- p j = maybe False not $ w' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix j . itLocation . ilIsRoot updatecreature k = (crInv %~ IM.safeSwapKeys i k) . (crManipulation . manObject . imSelectedItem .~ k) --- . (crInvEquipped %~ IM.safeSwapKeys i k) . swapSite i k . swapSite k i --- . (crInvHotkeys %~ IM.safeSwapKeys i k) ---x swaphotkeys k = ---x swapSite' i k ---x . swapSite' k i ---x . (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 . ilEquipSite . _Just of Just epos -> crEquipment . ix epos .~ b Nothing -> id - --swapSite' a b = case cr ^? crInvHotkeys . ix a of ---x swapSite' a b = case w ^? cWorld . lWorld . imHotkeys . ix a of ---x Just epos -> cWorld . lWorld . hotkeys . ix epos .~ b ---x Nothing -> id swapAnyExtraSelection :: Int -> Int -> World -> World swapAnyExtraSelection i k w = fromMaybe w $ do @@ -98,4 +77,3 @@ isConnected x = case x ^. locLdtContext of not (null $ x ^. locLDT . ldtRight) || not (null $ x ^. locLDT . ldtLeft) _ -> True - diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index 5e0fe97d5..63fa2d0b4 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -25,6 +25,7 @@ itemFromBase = \case TARGETING tt -> targetingScope tt BULLETMOD bm -> bulletModule bm STICKYMOD -> stickyMod + ITEMSCANNER -> itemScanner itemFromAmmoMag :: AmmoMagType -> Item itemFromAmmoMag at = case at of diff --git a/src/Dodge/Item/Display.hs b/src/Dodge/Item/Display.hs index 2c61139b1..c9bd95bf9 100644 --- a/src/Dodge/Item/Display.hs +++ b/src/Dodge/Item/Display.hs @@ -66,6 +66,7 @@ itemBaseName = \case BULLETMOD (BulletModPayload btt) -> show btt BULLETMOD (BulletModEffect btt) -> show btt STICKYMOD -> "STICKYMOD" + ITEMSCANNER -> "ITEMSCANNER" showAttachItem :: AttachType -> String showAttachItem t = case t of diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index 1c2c6c06d..8ea140a6c 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -41,6 +41,7 @@ itemSPic it = case it ^. itType of TARGETING{} -> defSPic BULLETMOD{} -> defSPic STICKYMOD -> defSPic + ITEMSCANNER -> defSPic craftItemSPic :: CraftType -> Shape craftItemSPic = \case diff --git a/src/Dodge/Item/Scope.hs b/src/Dodge/Item/Scope.hs index a42207430..c86ee5506 100644 --- a/src/Dodge/Item/Scope.hs +++ b/src/Dodge/Item/Scope.hs @@ -15,6 +15,7 @@ module Dodge.Item.Scope ( bulletModule, bulletPayloadModule, smokeReducer, + itemScanner, ) where import Dodge.Item.Attach @@ -46,6 +47,12 @@ stickyMod = & itType .~ STICKYMOD & itUse .~ UseNothing +itemScanner :: Item +itemScanner = + defaultHeldItem + & itType .~ ITEMSCANNER + & itUse .~ UseNothing + bulletModule :: BulletMod -> Item bulletModule bm = @@ -80,7 +87,7 @@ remoteDetonator = makeAttach REMOTEDETONATOR joystick :: Item joystick = makeAttach JOYSTICK -- & itUse . uaParams .~ APLinkProjectile Nothing --- + gimbal :: Item gimbal = makeAttach GIMBAL diff --git a/src/Dodge/Update/Camera.hs b/src/Dodge/Update/Camera.hs index d7307425e..55b92fe64 100644 --- a/src/Dodge/Update/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -14,23 +14,19 @@ import Dodge.Base import Dodge.Creature.Test import Dodge.Data.Config import Dodge.Data.World ---import Dodge.Equipment ---import Dodge.InputFocus import Dodge.SmoothScroll import Dodge.Viewpoints import Dodge.WASD import Dodge.Zoning.Wall import Geometry ---import qualified IntMapHelp as IM import LensHelp import SDL (MouseButton (..)) ---import qualified SDL {- Update the screen camera rotation and position, including any in rold scope/remote camera modifiers; update where your avatar's view is from. -} updateCamera :: Configuration -> World -> World updateCamera cfig w = case w ^. wCam . camControl of - CamInGame {} -> updateInGameCamera cfig w + CamInGame{} -> updateInGameCamera cfig w CamFloat -> updateFloatingCamera cfig w updateFloatingCamera :: Configuration -> World -> World @@ -62,15 +58,19 @@ translateFloatingCamera theinput cam = fromMaybe cam $ do return $ cam & camRot -~ angleBetween (theinput ^. mousePos) a translateFloatingCameraKeys :: Input -> Camera -> Camera -translateFloatingCameraKeys theinput = (camCenter -~ thetran) . (camViewFrom -~ thetran) +translateFloatingCameraKeys theinput cam = + cam + & camCenter -~ thetran + & camViewFrom -~ thetran where - thetran = 10 *.* wasdDir theinput + thetran = rotateV (cam ^. camRot) $ negate 10 *.* wasdDir theinput zoomFloatingCamera :: Input -> Camera -> Camera zoomFloatingCamera theinput | ButtonRight `M.member` (theinput ^. mouseButtons) = - camZoom *~ ((39/40) ^^ negate (getSmoothScrollValue theinput)) + camZoom *~ ((39 / 40) ^^ negate (getSmoothScrollValue theinput)) | otherwise = id + -- the 39/40 is taken from zoomSpeed updateInGameCamera :: Configuration -> World -> World @@ -78,14 +78,13 @@ updateInGameCamera cfig w = w & updateBounds cfig & wCam %~ moveZoomCamera cfig (w ^. input) (you w) w --- & updateScopeZoom & rotateCamera cfig & over wCam (setViewDistance cfig) -- I think this should be updated after the zoom? moveZoomCamera :: Configuration -> Input -> Creature -> World -> Camera -> Camera moveZoomCamera cfig theinput cr w campos = campos - & camCenter .~ fromMaybe (_crPos cr +.+ offset ) mremotepos + & camCenter .~ fromMaybe (_crPos cr +.+ offset) mremotepos & camViewFrom .~ fromMaybe (_crPos cr) mremotepos & camZoom .~ newzoom & camDefaultZoom .~ newDefaultZoom @@ -101,9 +100,10 @@ moveZoomCamera cfig theinput cr w campos = guard (SDL.ButtonRight `M.member` _mouseButtons theinput) i <- cr ^? crManipulation . manObject . imSelectedItem fmap docamrot (cr ^? crInv . ix i . itUse . uScope . opticPos) - noscopeoffset = docamrot $ + noscopeoffset = + docamrot $ ((newzoom - newDefaultZoom) / (newDefaultZoom * newzoom)) *.* _mousePos theinput - newzoom = fromMaybe (newDefaultZoom * newItemZoom) $ do + newzoom = fromMaybe (newDefaultZoom * newItemZoom) $ do i <- cr ^? crManipulation . manObject . imSelectedItem cr ^? crInv . ix i . itUse . uScope . opticZoom idealDefaultZoom = clipZoom wallZoom @@ -135,6 +135,21 @@ moveZoomCamera cfig theinput cr w campos = viewDistanceFromItems :: Creature -> Float viewDistanceFromItems _ = 1 +rotateCamera :: Configuration -> World -> World +rotateCamera cfig w + | Just ltime <- pkeys ^? ix SDL.ButtonLeft + , Just rtime <- pkeys ^? ix SDL.ButtonRight + , ltime > rtime = + w & wCam . camRot -~ rotation + | otherwise = ifConfigWallRotate cfig (w ^. input . mouseButtons) w + where + pkeys = w ^. input . mouseButtons + rotation = + maybe + 0 + (angleBetween $ w ^. input . mousePos) + (w ^. input . heldPos . at SDL.ButtonRight) + ifConfigWallRotate :: Configuration -> M.Map MouseButton Int -> World -> World ifConfigWallRotate cfig mbs | _gameplay_rotate_to_wall cfig && not (SDL.ButtonRight `M.member` mbs) = @@ -163,21 +178,6 @@ doWallRotate wl w = rotateUsing $ (argV . uncurry (-.-) $ _wlLine wl) - (w ^. wC b = a * (4 / pi) b' = fromIntegral (round b :: Int) -rotateCamera :: Configuration -> World -> World -rotateCamera cfig w - | Just ltime <- pkeys ^? ix SDL.ButtonLeft - , Just rtime <- pkeys ^? ix SDL.ButtonRight - , ltime > rtime = w & wCam . camRot -~ rotation - | otherwise = ifConfigWallRotate cfig (w ^. input . mouseButtons) w - where - pkeys = w ^. input . mouseButtons - rotation = - maybe - 0 - (angleBetween $ w ^. input . mousePos) - (w ^. input . heldPos . at SDL.ButtonRight) - - zoomFromItem :: ItZoom -> Float zoomFromItem ItZoom{_izMax = zMax, _izMin = zMin, _izFac = zFac} = min zMax $ max zMin zFac @@ -214,10 +214,11 @@ findBoundDists cfig w -- though I'm not sure how often it should be updated updateBounds :: Configuration -> World -> World updateBounds cfig w = case (w ^. cWorld . cClock) `mod` 5 of - 0 -> w - & wCam . camBoundDist .~ bdists - & wCam . camBoundBox - .~ map ((+.+ w ^. wCam . camCenter) . rotateV (w ^. wCam . camRot)) (rectNSWE n s w' e) + 0 -> + w + & wCam . camBoundDist .~ bdists + & wCam . camBoundBox + .~ map ((+.+ w ^. wCam . camCenter) . rotateV (w ^. wCam . camRot)) (rectNSWE n s w' e) _ -> w where bdists@(n, s, e, w') = findBoundDists cfig w diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index c2ea02ae6..b24227538 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -1,13 +1,10 @@ {-# LANGUAGE LambdaCase #-} + module Dodge.Update.Input.InGame ( updateUseInputInGame, updateMouseInGame, ) where -import Dodge.Update.Input.DebugTest -import Dodge.Item.InvSize -import Data.Monoid -import NewInt import Control.Applicative import Control.Monad import Data.Foldable @@ -16,6 +13,7 @@ import qualified Data.IntSet as IS import Data.List (sort) import qualified Data.Map.Strict as M import Data.Maybe +import Data.Monoid import Dodge.Button.Event import Dodge.Camera import Dodge.Creature.Action @@ -25,16 +23,19 @@ import Dodge.DisplayInventory import Dodge.Event.Test import Dodge.Inventory import Dodge.Inventory.Add +import Dodge.Item.InvSize import Dodge.ListDisplayParams import Dodge.Menu import Dodge.Save import Dodge.SelectionSections import Dodge.SoundLogic import Dodge.Terminal +import Dodge.Update.Input.DebugTest import Dodge.Update.Input.Text import Dodge.WorldPos import Geometry import LensHelp +import NewInt import SDL updateUseInputInGame :: Universe -> Universe @@ -42,18 +43,22 @@ updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . hudEleme DisplayCarte -> over uvWorld updatePressedButtonsCarte u DisplayInventory{_subInventory = si, _diSelection = disel} -> case si of DisplayTerminal tmid -> updateKeysInTerminal tmid u - CombineInventory{_ciSections = sss, _ciSelection = msel@(Just (-1,_,_))} -> + CombineInventory{_ciSections = sss, _ciSelection = msel@(Just (-1, _, _))} -> + u + & uvWorld . hud . hudElement . subInventory + %~ docombineregexinput sss msel + & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () + _ + | disel ^? _Just . _1 == Just (-1) -> u - & uvWorld . hud . hudElement . subInventory - %~ docombineregexinput sss msel - & uvWorld . worldEventFlags . at CombineInventoryChange ?~ () - _ | disel ^? _Just . _1 == Just (-1) -> - u & uvWorld . hud . hudElement + & uvWorld . hud . hudElement %~ dodisplayregexinput diInvFilter diInvFilter (-1) & uvWorld . worldEventFlags . at InventoryChange ?~ () & uvWorld %~ setInvPosFromSS - _ | disel ^? _Just . _1 == Just 2 -> - u & uvWorld . hud . hudElement + _ + | disel ^? _Just . _1 == Just 2 -> + u + & uvWorld . hud . hudElement %~ dodisplayregexinput diCloseFilter diCloseFilter 2 & uvWorld . worldEventFlags . at InventoryChange ?~ () & uvWorld %~ setInvPosFromSS @@ -78,12 +83,14 @@ updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . hudEleme & ciFilter .~ filts' updateMouseInGame :: Configuration -> World -> World -updateMouseInGame cfig w = case w ^? input . mouseButtons . ix ButtonLeft of - Just 0 -> updateMouseClickInGame cfig w - Just _ -> updateMouseHeldInGame cfig w - Nothing -> case w ^? input . mouseButtonsReleased . ix ButtonLeft of - Just 0 -> updateMouseReleaseInGame w - _ -> w +updateMouseInGame cfig w + | Just 0 <- lbpress = updateMouseClickInGame cfig w + | Just _ <- lbpress = updateMouseHeldInGame cfig w + | Just 0 <- lbrelease = updateMouseReleaseInGame w + | otherwise = w + where + lbpress = w ^? input . mouseButtons . ix ButtonLeft + lbrelease = w ^? input . mouseButtonsReleased . ix ButtonLeft updateMouseHeldInGame :: Configuration -> World -> World updateMouseHeldInGame cfig w = case w ^. input . mouseContext of @@ -95,34 +102,35 @@ updateMouseHeldInGame cfig w = case w ^. input . mouseContext of OverInvDrag k mmouseover ab bn -> doDrag 30 k mmouseover ab bn w _ -> w - -doDrag :: Int - -> Int - -> Maybe (Int, Int) - -> Maybe (Int, Int) - -> Maybe (Int, Int) - -> World - -> World +doDrag :: + Int -> + Int -> + Maybe (Int, Int) -> + Maybe (Int, Int) -> + Maybe (Int, Int) -> + World -> + World doDrag 0 _ _ _ _ w = w doDrag n k mmouseover ab bn w = fromMaybe w $ do - ss <- w ^? hud . hudElement . diSections . ix k . ssItems - x <- mmouseover - is <- w ^? hud . hudElement . diSelection . _Just . _3 - return $ if concurrentIS is + ss <- w ^? hud . hudElement . diSections . ix k . ssItems + x <- mmouseover + is <- w ^? hud . hudElement . diSelection . _Just . _3 + return $ + if concurrentIS is then shiftInvItems n k x ab bn is ss w else collectInvItems k is w -tryDropSelected :: Maybe (Int,Int) -> World -> Maybe World +tryDropSelected :: Maybe (Int, Int) -> World -> Maybe World tryDropSelected mpos w = do - guard $ maybe True (\(i,_) -> i == 3) mpos + guard $ maybe True (\(i, _) -> i == 3) mpos cr <- w ^? cWorld . lWorld . creatures . ix 0 (0, _, xs) <- w ^? hud . hudElement . diSelection . _Just return . foldl' (flip $ dropItem cr) w . IS.toDescList $ xs -tryPickupSelected :: Int -> Maybe (Int,Int) -> World -> Maybe World +tryPickupSelected :: Int -> Maybe (Int, Int) -> World -> Maybe World tryPickupSelected k mpos w = do guard $ k == 3 - guard $ maybe True (\(i,_) -> i == 0 || i == 1) mpos + guard $ maybe True (\(i, _) -> i == 0 || i == 1) mpos cr <- w ^? cWorld . lWorld . creatures . ix 0 let nfreeslots = crNumFreeSlots cr xs <- w ^? hud . hudElement . diSelection . _Just . _3 @@ -130,11 +138,16 @@ tryPickupSelected k mpos w = do let slotsneeded = alaf Sum foldMap (itInvHeight . _flIt) itmstopickup guard $ nfreeslots >= slotsneeded return $ case mpos of - Just (0,j) -> foldr (pickUpItemAt j 0) w itmstopickup - & hud . hudElement . diSelection ?~ (0,j - , IS.fromDistinctAscList [j..j+IS.size xs-1]) - _ -> foldl' (flip $ pickUpItem 0) w itmstopickup - & hud . hudElement . diSelection . _Just . _3 %~ const mempty + Just (0, j) -> + foldr (pickUpItemAt j 0) w itmstopickup + & hud . hudElement . diSelection + ?~ ( 0 + , j + , IS.fromDistinctAscList [j .. j + IS.size xs -1] + ) + _ -> + foldl' (flip $ pickUpItem 0) w itmstopickup + & hud . hudElement . diSelection . _Just . _3 %~ const mempty where g i = do NInt j <- w ^? hud . closeItems . ix i @@ -142,26 +155,32 @@ tryPickupSelected k mpos w = do updateMouseReleaseInGame :: World -> World updateMouseReleaseInGame w = case w ^. input . mouseContext of - OverInvDrag k mpos _ _ -> + OverInvDrag k mpos _ _ -> input . mouseContext .~ MouseInGame $ - fromMaybe w $ tryDropSelected mpos w <|> tryPickupSelected k mpos w - OverInvDragSelect ssel mesel | ScancodeLShift `M.member` (w ^. input . pressedKeys) - -> w & input . mouseContext .~ MouseInGame - & hud . hudElement . diSelection . _Just . _3 %~ getuniques - (maybe mempty (h ssel) - (guard (ssel ^? _1 == w ^? hud . hudElement . diSelection . _Just . _1) - >> mesel ^? _Just)) + fromMaybe w $ tryDropSelected mpos w <|> tryPickupSelected k mpos w + OverInvDragSelect ssel mesel + | ScancodeLShift `M.member` (w ^. input . pressedKeys) -> + w & input . mouseContext .~ MouseInGame + & hud . hudElement . diSelection . _Just . _3 + %~ getuniques + ( maybe + mempty + (h ssel) + ( guard (ssel ^? _1 == w ^? hud . hudElement . diSelection . _Just . _1) + >> mesel ^? _Just + ) + ) OverInvDragSelect _ Nothing -> w & input . mouseContext .~ MouseInGame & hud . hudElement . diSelection . _Just . _3 %~ const mempty OverInvDragSelect ssel (Just esel) -> w & input . mouseContext .~ MouseInGame - & augInvDirectSelect (f (fst ssel,esel) (h ssel esel)) + & augInvDirectSelect (f (fst ssel, esel) (h ssel esel)) _ -> w where getuniques x y = IS.union x y IS.\\ IS.intersection x y - f (x,y) z = (x,y,z) - h (k,i) j = fold $ do + f (x, y) z = (x, y, z) + h (k, i) j = fold $ do sss <- w ^? hud . hudElement . diSections . ix k . ssItems let (_, xss) = IM.split (min i j -1) sss (yss, _) = IM.split (max i j + 1) xss @@ -182,14 +201,18 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of return $ w & input . mouseContext .~ OverInvDragSelect ysel Nothing - OverInvSelect (-1,_) | selsec == Just (-1) -> w - & hud . hudElement . diSelection %~ endRegex (-1) w - & hud . hudElement . diInvFilter .~ Nothing - OverInvSelect (2,_) | selsec == Just 2 -> w - & hud . hudElement . diSelection %~ endRegex 2 w - & hud . hudElement . diCloseFilter .~ Nothing - OverInvSelect x | ScancodeLShift `M.member` (w ^. input . pressedKeys ) - -> fromMaybe w $ do + OverInvSelect (-1, _) + | selsec == Just (-1) -> + w + & hud . hudElement . diSelection %~ endRegex (-1) w + & hud . hudElement . diInvFilter .~ Nothing + OverInvSelect (2, _) + | selsec == Just 2 -> + w + & hud . hudElement . diSelection %~ endRegex 2 w + & hud . hudElement . diCloseFilter .~ Nothing + OverInvSelect x | ScancodeLShift `M.member` (w ^. input . pressedKeys) -> + fromMaybe w $ do guard (isGroupSelectableSection $ fst x) return $ w & input . mouseContext .~ OverInvDragSelect x (Just $ snd x) OverInvSelect x -> startDrag x cfig w @@ -229,34 +252,38 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of _ -> w where mpos = w ^. input . mousePos - f (x,y) = (x,y,mempty) + f (x, y) = (x, y, mempty) selsec = w ^? hud . hudElement . diSelection . _Just . _1 -endRegex :: Int -> World - -> Maybe (Int,Int,IS.IntSet) - -> Maybe (Int,Int,IS.IntSet) +endRegex :: + Int -> + World -> + Maybe (Int, Int, IS.IntSet) -> + Maybe (Int, Int, IS.IntSet) endRegex i w = fromMaybe id $ do sss <- w ^? hud . hudElement . diSections let j = fromMaybe 0 $ do itms <- sss ^? ix i . ssItems - (k,_) <- IM.lookupMin itms + (k, _) <- IM.lookupMin itms return k return $ ssSetCursor (ssLookupDown i j) sss -endCombineRegex ::World - -> Maybe (Int,Int,IS.IntSet) - -> Maybe (Int,Int,IS.IntSet) +endCombineRegex :: + World -> + Maybe (Int, Int, IS.IntSet) -> + Maybe (Int, Int, IS.IntSet) endCombineRegex w = fromMaybe id $ do sss <- w ^? hud . hudElement . subInventory . ciSections let j = fromMaybe 0 $ do itms <- sss ^? ix 0 . ssItems - (k,_) <- IM.lookupMin itms - return (k-1) + (k, _) <- IM.lookupMin itms + return (k -1) return $ ssSetCursor (ssLookupDown 0 j) sss startDrag :: (Int, Int) -> Configuration -> World -> World -startDrag (a, b) cfig w = setcontext - . fromMaybe (augInvDirectSelect (a, b, IS.singleton b) w) $ do +startDrag (a, b) cfig w = setcontext + . fromMaybe (augInvDirectSelect (a, b, IS.singleton b) w) + $ do (i, _, xs) <- w ^? hud . hudElement . diSelection . _Just guard $ i == a && b `IS.member` xs return w @@ -291,9 +318,9 @@ collectInvItems secid is w = fromMaybe w $ do shiftInvItems :: Int -> -- recurse limit Int -> -- section where drag started - (Int,Int) -> -- selection item mouse is over - Maybe (Int,Int) -> -- selection item "above" mouse position (can be same as over) - Maybe (Int,Int) -> -- selection item "below" mouse position (can be same as over) + (Int, Int) -> -- selection item mouse is over + Maybe (Int, Int) -> -- selection item "above" mouse position (can be same as over) + Maybe (Int, Int) -> -- selection item "below" mouse position (can be same as over) IS.IntSet -> IM.IntMap (SelectionItem a) -> World -> @@ -301,23 +328,23 @@ shiftInvItems :: shiftInvItems n k x ab bn xs ss w = setSelWhileDragging . fromMaybe w $ do let xk = fst x guard $ xk == k || xk + 1 == k || xk -1 == k - (maxi,_) <- IS.maxView xs - (mini,_) <- IS.minView xs + (maxi, _) <- IS.maxView xs + (mini, _) <- IS.minView xs case True of - _ | x < (k,mini) -> do + _ | x < (k, mini) -> do guard $ not . null . fst $ IM.split mini ss - guard $ Just (k,mini-1) /= ab - return . doDrag (n-1) k (Just x) ab bn $ shiftInvItemsUp k xs w - _ | x > (k,maxi) -> do + guard $ Just (k, mini -1) /= ab + return . doDrag (n -1) k (Just x) ab bn $ shiftInvItemsUp k xs w + _ | x > (k, maxi) -> do guard $ not . null . snd $ IM.split maxi ss - guard $ Just (k,maxi+1) /= bn - return . doDrag (n-1) k (Just x) ab bn $ shiftInvItemsDown k xs w + guard $ Just (k, maxi + 1) /= bn + return . doDrag (n -1) k (Just x) ab bn $ shiftInvItemsDown k xs w _ -> Nothing setSelWhileDragging :: World -> World setSelWhileDragging w = fromMaybe w $ do - (i,_,xs) <- w ^? hud . hudElement . diSelection . _Just - (k,j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just + (i, _, xs) <- w ^? hud . hudElement . diSelection . _Just + (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just guard $ i == k && j `IS.member` xs return $ w & hud . hudElement . diSelection . _Just . _2 .~ j @@ -484,23 +511,23 @@ updateBackspaceRegex w = case di ^? subInventory of return $ case str of (_ : _) -> he & filtset . _Just %~ init - & selset ?~ (x, 0,mempty) + & selset ?~ (x, 0, mempty) [] -> he & filtset .~ Nothing di = w ^. hud . hudElement updateEnterRegex :: World -> World updateEnterRegex w = case w ^? hud . hudElement . subInventory of Just NoSubInventory{} - | secfocus [-1,0,1] -> - w & hud . hudElement . diSelection ?~ (-1, 0,mempty) + | secfocus [-1, 0, 1] -> + w & hud . hudElement . diSelection ?~ (-1, 0, mempty) & hud . hudElement . diInvFilter %~ enterregex Just NoSubInventory{} - | secfocus [2,3] -> - w & hud . hudElement . diSelection ?~ (2, 0,mempty) + | secfocus [2, 3] -> + w & hud . hudElement . diSelection ?~ (2, 0, mempty) & hud . hudElement . diCloseFilter %~ enterregex Just CombineInventory{} -> w & hud . hudElement . subInventory . ciFilter %~ enterregex - & hud . hudElement . subInventory . ciSelection ?~ (-1, 0,mempty) + & hud . hudElement . subInventory . ciSelection ?~ (-1, 0, mempty) _ -> w where di = w ^. hud . hudElement @@ -518,11 +545,14 @@ spaceAction w = case w ^. hud . hudElement of DisplayInventory{_subInventory = NoSubInventory{}} -> fromMaybe w $ do cobj <- selCloseObj w return $ case cobj of - (Left flit) -> pickUpItem 0 flit w - & worldEventFlags . at InventoryChange ?~ () - (Right but) -> doButtonEvent (_btEvent but) but w - & worldEventFlags . at InventoryChange ?~ () - DisplayInventory{_subInventory = DisplayTerminal{}} -> w + (Left flit) -> + pickUpItem 0 flit w + & worldEventFlags . at InventoryChange ?~ () + (Right but) -> + doButtonEvent (_btEvent but) but w + & worldEventFlags . at InventoryChange ?~ () + DisplayInventory{_subInventory = DisplayTerminal{}} -> + w & hud . hudElement . subInventory .~ NoSubInventory & worldEventFlags . at InventoryChange ?~ () _ -> w & hud . hudElement . subInventory .~ NoSubInventory @@ -536,7 +566,7 @@ selCloseObj :: World -> Maybe (Either FloorItem Button) selCloseObj w = selobj <|> firstcitem <|> firstcbut where selobj = do - (i,j,_) <- w ^? hud . hudElement . diSelection . _Just + (i, j, _) <- w ^? hud . hudElement . diSelection . _Just case i of 3 -> do NInt k <- w ^? hud . closeItems . ix j @@ -575,17 +605,13 @@ toggleTweakInv w = case w ^? hud . hudElement . subInventory of where thepointer = hud . hudElement . subInventory -tryCombine :: - (Int, Int) -> - World -> - World +tryCombine :: (Int, Int) -> World -> World tryCombine (i, j) w = fromMaybe w $ do sss <- w ^? hud . hudElement . subInventory . ciSections CombinableItem is it <- sss ^? ix i . ssItems . ix j . siPayload p <- w ^? cWorld . lWorld . creatures . ix 0 . crPos return $ snd (createItemYou it (foldr (destroyInvItem 0) w (sort is))) --- & cWorld . lWorld . creatures . ix 0 . crHammerPosition .~ HammerDown & soundStart InventorySound p wrench1S Nothing & hud . hudElement . diSelection . _Just . _3 .~ mempty @@ -594,4 +620,3 @@ maybeExitCombine w | ButtonRight `M.member` (w ^. input . mouseButtons) = w | otherwise = w & hud . hudElement . subInventory .~ NoSubInventory - diff --git a/tags b/tags index b8f25a325..5d05ee37d 100644 --- a/tags +++ b/tags @@ -19,21 +19,20 @@ <$> src/Dodge/Data/Creature.hs 88;" o <$> src/Dodge/Data/LWorld.hs 159;" o <$> src/Dodge/Data/Terminal.hs 131;" o -AIUNIT src/Dodge/Data/Item/Combine.hs 53;" C -ALTERIFLE src/Dodge/Data/Item/Combine.hs 139;" C -AMMOMAG src/Dodge/Data/Item/Combine.hs 22;" C -AMR src/Dodge/Data/Item/Combine.hs 144;" C -ANTIMATTER src/Dodge/Data/Item/Combine.hs 47;" C -APInt src/Dodge/Data/Item/Use.hs 72;" C -APLinkProjectile src/Dodge/Data/Item/Use.hs 68;" C -APNothing src/Dodge/Data/Item/Use.hs 73;" C -APProjectiles src/Dodge/Data/Item/Use.hs 70;" C +AIUNIT src/Dodge/Data/Item/Combine.hs 51;" C +ALTERIFLE src/Dodge/Data/Item/Combine.hs 131;" C +AMMOMAG src/Dodge/Data/Item/Combine.hs 20;" C +AMR src/Dodge/Data/Item/Combine.hs 136;" C +ANTIMATTER src/Dodge/Data/Item/Combine.hs 45;" C +APInt src/Dodge/Data/Item/Use.hs 70;" C +APNothing src/Dodge/Data/Item/Use.hs 71;" C +APProjectiles src/Dodge/Data/Item/Use.hs 68;" C AQUAMARINE src/Color/Data.hs 24;" C -ATTACH src/Dodge/Data/Item/Combine.hs 21;" C -AUGMENTEDHUD src/Dodge/Data/Item/Combine.hs 81;" C -AUTOAMR src/Dodge/Data/Item/Combine.hs 145;" C -AUTOPISTOL src/Dodge/Data/Item/Combine.hs 131;" C -AUTORIFLE src/Dodge/Data/Item/Combine.hs 140;" C +ATTACH src/Dodge/Data/Item/Combine.hs 19;" C +AUGMENTEDHUD src/Dodge/Data/Item/Combine.hs 79;" C +AUTOAMR src/Dodge/Data/Item/Combine.hs 137;" C +AUTOPISTOL src/Dodge/Data/Item/Combine.hs 123;" C +AUTORIFLE src/Dodge/Data/Item/Combine.hs 132;" C AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 27;" C Action src/Dodge/Data/ActionPlan.hs 78;" t @@ -45,9 +44,9 @@ Add src/Dodge/Inventory/Add.hs 1;" m AddGoal src/Dodge/Data/ActionPlan.hs 45;" C AesonHelp src/AesonHelp.hs 1;" m AimAt src/Dodge/Data/ActionPlan.hs 84;" C -AimParams src/Dodge/Data/Item/Use.hs 116;" t +AimParams src/Dodge/Data/Item/Use.hs 114;" t AimParams src/Dodge/Default/Item/Use/AimParams.hs 1;" m -AimStance src/Dodge/Data/Item/Use.hs 185;" t +AimStance src/Dodge/Data/Item/Use.hs 183;" t Aiming src/Dodge/Data/Creature/Stance.hs 39;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C Airlock src/Dodge/Room/Airlock.hs 4;" m @@ -61,13 +60,13 @@ AmmoEffectSF src/Dodge/Data/ComposedItem.hs 57;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 17;" C AmmoMag src/Dodge/Data/Item.hs 34;" C AmmoMagSF src/Dodge/Data/ComposedItem.hs 48;" C -AmmoMagType src/Dodge/Data/Item/Combine.hs 85;" t +AmmoMagType src/Dodge/Data/Item/Combine.hs 83;" t AmmoModLink src/Dodge/Data/ComposedItem.hs 19;" C AmmoModifierSF src/Dodge/Data/ComposedItem.hs 54;" C -AmmoParams src/Dodge/Data/Item/Use.hs 109;" t +AmmoParams src/Dodge/Data/Item/Use.hs 107;" t AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 21;" C AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 56;" C -AmmoPerShot src/Dodge/Data/Item/Use.hs 159;" t +AmmoPerShot src/Dodge/Data/Item/Use.hs 157;" t AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 20;" C AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 55;" C AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 25;" t @@ -97,7 +96,7 @@ AtEase src/Dodge/Data/Creature/Stance.hs 40;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C Attach src/Dodge/Item/Attach.hs 1;" m AttachParams src/Dodge/Data/Item/Use.hs 67;" t -AttachType src/Dodge/Data/Item/Combine.hs 70;" t +AttachType src/Dodge/Data/Item/Combine.hs 68;" t Attention src/Dodge/Data/Creature/Perception.hs 60;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" C Audition src/Dodge/Data/Creature/Perception.hs 47;" t @@ -112,26 +111,26 @@ AuxAddition src/Shader/AuxAddition.hs 1;" m Avatar src/Dodge/Data/Creature/Misc.hs 70;" C Awareness src/Dodge/Data/Creature/Perception.hs 65;" t Awareness src/Dodge/Creature/Picture/Awareness.hs 1;" m -BANGCONE src/Dodge/Data/Item/Combine.hs 133;" C -BANGROD src/Dodge/Data/Item/Combine.hs 142;" C -BANGSTICK src/Dodge/Data/Item/Combine.hs 125;" C -BATTERY src/Dodge/Data/Item/Combine.hs 90;" C -BATTERYPACK src/Dodge/Data/Item/Combine.hs 114;" C -BELTMAG src/Dodge/Data/Item/Combine.hs 88;" C +BANGCONE src/Dodge/Data/Item/Combine.hs 125;" C +BANGROD src/Dodge/Data/Item/Combine.hs 134;" C +BANGSTICK src/Dodge/Data/Item/Combine.hs 117;" C +BATTERY src/Dodge/Data/Item/Combine.hs 88;" C +BATTERYPACK src/Dodge/Data/Item/Combine.hs 112;" C +BELTMAG src/Dodge/Data/Item/Combine.hs 86;" C BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 165;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 166;" C -BLOWTORCH src/Dodge/Data/Item/Combine.hs 151;" C +BLINKER src/Dodge/Data/Item/Combine.hs 157;" C +BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 158;" C +BLOWTORCH src/Dodge/Data/Item/Combine.hs 143;" C BLUE src/Color/Data.hs 17;" C -BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 134;" C +BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 126;" C BLUNT src/Dodge/Data/Damage/Type.hs 13;" C BQuad src/Geometry/Bezier.hs 9;" t -BRAINHAT src/Dodge/Data/Item/Combine.hs 105;" C -BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 113;" C -BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 112;" C -BULLETMOD src/Dodge/Data/Item/Combine.hs 24;" C -BULLETSYNTH src/Dodge/Data/Item/Combine.hs 72;" C -BURSTRIFLE src/Dodge/Data/Item/Combine.hs 141;" C +BRAINHAT src/Dodge/Data/Item/Combine.hs 103;" C +BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 111;" C +BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 110;" C +BULLETMOD src/Dodge/Data/Item/Combine.hs 22;" C +BULLETSYNTH src/Dodge/Data/Item/Combine.hs 70;" C +BURSTRIFLE src/Dodge/Data/Item/Combine.hs 133;" C BackdropCursor src/Dodge/Data/SelectionList.hs 21;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 15;" C Ball src/Dodge/Tesla/Ball.hs 1;" m @@ -147,7 +146,7 @@ Base src/Picture/Base.hs 4;" m BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 50;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 57;" C -BasicFlare src/Dodge/Data/Item/Use.hs 129;" C +BasicFlare src/Dodge/Data/Item/Use.hs 127;" C BatteryGuns src/Dodge/Item/Held/BatteryGuns.hs 1;" m BatteryGuns src/Dodge/Item/Weapon/BatteryGuns.hs 1;" m Beam src/Dodge/Data/Beam.hs 18;" t @@ -157,7 +156,7 @@ BeamCombine src/Dodge/Data/Beam.hs 47;" C BeamCombineType src/Dodge/Data/Beam.hs 38;" t BeamDraw src/Dodge/Data/Beam.hs 33;" t BeamDrawColor src/Dodge/Data/Beam.hs 35;" C -BeamShooterParams src/Dodge/Data/Item/Use.hs 90;" C +BeamShooterParams src/Dodge/Data/Item/Use.hs 88;" C BeamSimple src/Dodge/Data/Beam.hs 50;" C BeamType src/Dodge/Data/Beam.hs 46;" t BecomePowerful src/Dodge/Data/Scenario.hs 9;" C @@ -228,9 +227,9 @@ BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 3;" m BulletModEffect src/Dodge/Data/Item/BulletMod.hs 12;" C BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C -BulletParams src/Dodge/Data/Item/Use.hs 110;" C +BulletParams src/Dodge/Data/Item/Use.hs 108;" C BulletPayload src/Dodge/Data/Bullet.hs 41;" t -BulletShooterParams src/Dodge/Data/Item/Use.hs 94;" C +BulletShooterParams src/Dodge/Data/Item/Use.hs 92;" C BulletTrajectory src/Dodge/Data/Bullet.hs 49;" t BulletTrajectoryType src/Dodge/Data/Bullet.hs 56;" t Button src/Dodge/Data/Button.hs 48;" t @@ -243,18 +242,18 @@ ButtonEvent src/Dodge/Data/Button.hs 22;" t ButtonPress src/Dodge/Data/Button.hs 24;" C ButtonSimpleSwith src/Dodge/Data/Button.hs 40;" C ButtonState src/Dodge/Data/Button.hs 63;" t -CAMERA src/Dodge/Data/Item/Combine.hs 54;" C -CAN src/Dodge/Data/Item/Combine.hs 35;" C +CAMERA src/Dodge/Data/Item/Combine.hs 52;" C +CAN src/Dodge/Data/Item/Combine.hs 33;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 15;" C CHARTREUSE src/Color/Data.hs 25;" C -CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 91;" C +CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 89;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C CME src/Dodge/Data/MuzzleEffect.hs 11;" C CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C -CRAFT src/Dodge/Data/Item/Combine.hs 20;" C -CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 171;" C -CREATURESENSOR src/Dodge/Data/Item/Combine.hs 64;" C +CRAFT src/Dodge/Data/Item/Combine.hs 18;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 163;" C +CREATURESENSOR src/Dodge/Data/Item/Combine.hs 62;" C CRUSHING src/Dodge/Data/Damage/Type.hs 16;" C CUTTING src/Dodge/Data/Damage/Type.hs 14;" C CWGen src/Dodge/Data/CWorld.hs 35;" t @@ -333,7 +332,7 @@ CombinableItem src/Dodge/Data/Combine.hs 5;" t Combinations src/Dodge/Combine/Combinations.hs 3;" m Combine src/Dodge/Combine.hs 2;" m Combine src/Dodge/Data/Combine.hs 2;" m -Combine src/Dodge/Data/Item/Combine.hs 6;" m +Combine src/Dodge/Data/Item/Combine.hs 5;" m CombineInventory src/Dodge/Data/HUD.hs 37;" C CombineInventoryChange src/Dodge/Data/World.hs 32;" C Common src/Dodge/Zoning/Common.hs 1;" m @@ -354,7 +353,7 @@ Configuration src/Dodge/Data/Config.hs 38;" t Connectors src/Dodge/Render/Connectors.hs 3;" m ConstFloat src/Dodge/Data/GenFloat.hs 11;" C Consumable src/Dodge/Item/Consumable.hs 1;" m -ConsumableItemType src/Dodge/Data/Item/Combine.hs 94;" t +ConsumableItemType src/Dodge/Data/Item/Combine.hs 92;" t 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 @@ -407,7 +406,7 @@ CrWlID src/Dodge/Data/CrWlID.hs 6;" m Cr_awareness src/Dodge/Data/Config.hs 72;" C Cr_status src/Dodge/Data/Config.hs 71;" C CraftClust src/Dodge/Combine/Graph.hs 19;" C -CraftType src/Dodge/Data/Item/Combine.hs 28;" t +CraftType src/Dodge/Data/Item/Combine.hs 26;" t Craftable src/Dodge/Item/Craftable.hs 1;" m Create src/Dodge/Projectile/Create.hs 1;" m Create src/Dodge/Prop/Create.hs 1;" m @@ -437,9 +436,9 @@ CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cuse src/Dodge/Data/Item/HeldUse.hs 14;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C -DETECTOR src/Dodge/Data/Item/Combine.hs 164;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 156;" C DPoint2 src/Geometry/Data.hs 34;" t -DRUMMAG src/Dodge/Data/Item/Combine.hs 87;" C +DRUMMAG src/Dodge/Data/Item/Combine.hs 85;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 30;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 20;" C @@ -493,7 +492,7 @@ DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" C DefaultDrawButton src/Dodge/Data/Button.hs 17;" C DefaultDrawSwitch src/Dodge/Data/Button.hs 18;" C DefaultForceField src/Dodge/Data/Item/Use/Consumption/Ammo.hs 36;" C -DefaultHeldParams src/Dodge/Data/Item/Use.hs 77;" C +DefaultHeldParams src/Dodge/Data/Item/Use.hs 75;" C DefaultLightSourceDraw src/Dodge/Data/LightSource.hs 13;" C DefaultRoomType src/Dodge/Data/Room.hs 31;" C DefaultTerminal src/Dodge/Data/Terminal.hs 54;" C @@ -503,7 +502,7 @@ Destroy src/Dodge/Machine/Destroy.hs 1;" m DestroyBeing src/Dodge/Data/Scenario.hs 8;" C DestroyBullet src/Dodge/Data/Bullet.hs 36;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C -Detector src/Dodge/Data/Item/Combine.hs 169;" t +Detector src/Dodge/Data/Item/Combine.hs 161;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t Display src/Dodge/Item/Display.hs 2;" m @@ -593,13 +592,13 @@ EBO src/Shader/Data.hs 88;" t EDoNothing src/Dodge/Data/Item/HeldUse.hs 20;" C EHeadLamp src/Dodge/Data/Item/HeldUse.hs 23;" C ELECTRICAL src/Dodge/Data/Damage/Type.hs 20;" C -ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 143;" C +ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 135;" C EMagShield src/Dodge/Data/Item/HeldUse.hs 21;" C ENTERREMENT src/Dodge/Data/Damage/Type.hs 24;" C -EQUIP src/Dodge/Data/Item/Combine.hs 19;" C +EQUIP src/Dodge/Data/Item/Combine.hs 17;" C EWristShield src/Dodge/Data/Item/HeldUse.hs 22;" C EXPLOSIVE src/Dodge/Data/Damage/Type.hs 21;" C -EXPLOSIVES src/Dodge/Data/Item/Combine.hs 96;" C +EXPLOSIVES src/Dodge/Data/Item/Combine.hs 94;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C East8 src/Dodge/Data/CardinalPoint.hs 13;" C @@ -628,7 +627,7 @@ EonWristShield src/Dodge/Data/Item/Use/Equipment.hs 31;" C EquipCounter src/Dodge/Data/Item/Use/Equipment.hs 38;" C EquipEffect src/Dodge/Data/Item/Use/Equipment.hs 17;" t EquipID src/Dodge/Data/Item/Use/Equipment.hs 37;" C -EquipItemType src/Dodge/Data/Item/Combine.hs 99;" t +EquipItemType src/Dodge/Data/Item/Combine.hs 97;" t EquipOptions src/Dodge/Data/RightButtonOptions.hs 15;" C EquipParams src/Dodge/Data/Item/Use/Equipment.hs 35;" t EquipSite src/Dodge/Data/Equipment/Misc.hs 21;" t @@ -657,16 +656,16 @@ ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" ExtraEffect src/Dodge/Item/Weapon/ExtraEffect.hs 6;" m Eyes src/Dodge/Data/Creature/Perception.hs 41;" C FBO src/Shader/Data.hs 57;" t -FLAMESHIELD src/Dodge/Data/Item/Combine.hs 101;" C -FLAMESPITTER src/Dodge/Data/Item/Combine.hs 147;" C -FLAMETHROWER src/Dodge/Data/Item/Combine.hs 148;" C -FLAMETORRENT src/Dodge/Data/Item/Combine.hs 149;" C -FLAMEWALL src/Dodge/Data/Item/Combine.hs 150;" C +FLAMESHIELD src/Dodge/Data/Item/Combine.hs 99;" C +FLAMESPITTER src/Dodge/Data/Item/Combine.hs 139;" C +FLAMETHROWER src/Dodge/Data/Item/Combine.hs 140;" C +FLAMETORRENT src/Dodge/Data/Item/Combine.hs 141;" C +FLAMEWALL src/Dodge/Data/Item/Combine.hs 142;" C FLAMING src/Dodge/Data/Damage/Type.hs 18;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 162;" C -FRONTARMOUR src/Dodge/Data/Item/Combine.hs 102;" C -FUELCELL src/Dodge/Data/Item/Combine.hs 66;" C -FUELPACK src/Dodge/Data/Item/Combine.hs 111;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 154;" C +FRONTARMOUR src/Dodge/Data/Item/Combine.hs 100;" C +FUELCELL src/Dodge/Data/Item/Combine.hs 64;" C +FUELPACK src/Dodge/Data/Item/Combine.hs 109;" C FacilityType src/Dodge/Data/Scenario.hs 55;" t Faction src/Dodge/Data/Creature/State.hs 34;" t Factory src/Dodge/Data/Scenario.hs 56;" C @@ -684,7 +683,7 @@ FlameBeamCombine src/Dodge/Data/Beam.hs 39;" C FlameSound src/Dodge/Data/SoundOrigin.hs 27;" C Flamer src/Dodge/Data/SoundOrigin.hs 25;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C -FlareType src/Dodge/Data/Item/Use.hs 127;" t +FlareType src/Dodge/Data/Item/Use.hs 125;" t FlashBall src/Dodge/Data/Bullet.hs 32;" C FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 19;" C @@ -735,14 +734,14 @@ FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C FunctionChangeSF src/Dodge/Data/ComposedItem.hs 58;" C GBounce src/Dodge/Data/Projectile.hs 52;" C GEqC src/SameConstr.hs 20;" c -GIMBAL src/Dodge/Data/Item/Combine.hs 75;" C -GLASSSHARD src/Dodge/Data/Item/Combine.hs 39;" C -GLAUNCHER src/Dodge/Data/Item/Combine.hs 158;" C +GIMBAL src/Dodge/Data/Item/Combine.hs 73;" C +GLASSSHARD src/Dodge/Data/Item/Combine.hs 37;" C +GLAUNCHER src/Dodge/Data/Item/Combine.hs 150;" C GLHelp src/GLHelp.hs 1;" m -GRAPECANNON src/Dodge/Data/Item/Combine.hs 135;" C +GRAPECANNON src/Dodge/Data/Item/Combine.hs 127;" C GREEN src/Color/Data.hs 16;" C GStick src/Dodge/Data/Projectile.hs 53;" C -GYROSCOPE src/Dodge/Data/Item/Combine.hs 76;" C +GYROSCOPE src/Dodge/Data/Item/Combine.hs 74;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 43;" C GameOverOptions src/Dodge/Data/Universe.hs 70;" C GameRoom src/Dodge/GameRoom.hs 15;" t @@ -752,8 +751,8 @@ GasAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" C GasCloud src/Dodge/Data/Cloud.hs 31;" C GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 42;" t GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 39;" t -GasParams src/Dodge/Data/Item/Use.hs 112;" C -GasSprayParams src/Dodge/Data/Item/Use.hs 78;" C +GasParams src/Dodge/Data/Item/Use.hs 110;" C +GasSprayParams src/Dodge/Data/Item/Use.hs 76;" C GenCr src/Dodge/Data/Creature/State.hs 31;" C GenFloat src/Dodge/Data/GenFloat.hs 11;" t GenFloat src/Dodge/Data/GenFloat.hs 5;" m @@ -794,14 +793,14 @@ Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m GymSS src/Dodge/Data/Scenario.hs 104;" C -HARDDRIVE src/Dodge/Data/Item/Combine.hs 51;" C -HARDWARE src/Dodge/Data/Item/Combine.hs 31;" C -HAT src/Dodge/Data/Item/Combine.hs 106;" C -HEADLAMP src/Dodge/Data/Item/Combine.hs 107;" C -HEATSENSOR src/Dodge/Data/Item/Combine.hs 61;" C -HELD src/Dodge/Data/Item/Combine.hs 17;" C -HOMINGMODULE src/Dodge/Data/Item/Combine.hs 80;" C -HOSE src/Dodge/Data/Item/Combine.hs 33;" C +HARDDRIVE src/Dodge/Data/Item/Combine.hs 49;" C +HARDWARE src/Dodge/Data/Item/Combine.hs 29;" C +HAT src/Dodge/Data/Item/Combine.hs 104;" C +HEADLAMP src/Dodge/Data/Item/Combine.hs 105;" C +HEATSENSOR src/Dodge/Data/Item/Combine.hs 59;" C +HELD src/Dodge/Data/Item/Combine.hs 16;" C +HOMINGMODULE src/Dodge/Data/Item/Combine.hs 78;" C +HOSE src/Dodge/Data/Item/Combine.hs 31;" C HUD src/Dodge/Data/HUD.hs 45;" t HUD src/Dodge/Data/HUD.hs 6;" m HUD src/Dodge/Render/HUD.hs 3;" m @@ -818,12 +817,12 @@ HammerUp src/Dodge/Data/Hammer.hs 20;" C HandPos src/Dodge/Creature/HandPos.hs 1;" m HardQuit src/Dodge/Data/Universe.hs 68;" C HasHammer src/Dodge/Data/Hammer.hs 14;" C -HeavySmokeFlare src/Dodge/Data/Item/Use.hs 132;" C +HeavySmokeFlare src/Dodge/Data/Item/Use.hs 130;" C Held src/Dodge/Item/Held.hs 1;" m HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m -HeldItemType src/Dodge/Data/Item/Combine.hs 124;" t +HeldItemType src/Dodge/Data/Item/Combine.hs 116;" t HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m -HeldParams src/Dodge/Data/Item/Use.hs 76;" t +HeldParams src/Dodge/Data/Item/Use.hs 74;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m @@ -854,9 +853,9 @@ Humanoid src/Dodge/Humanoid.hs 1;" m HumanoidAI src/Dodge/Data/Creature/Misc.hs 48;" t ILink src/Dodge/Data/ComposedItem.hs 65;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t -INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 104;" C -IRONBAR src/Dodge/Data/Item/Combine.hs 58;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C +INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 102;" C +IRONBAR src/Dodge/Data/Item/Combine.hs 56;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 162;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t Important src/Shape/Data.hs 35;" C @@ -928,7 +927,7 @@ 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 55;" C -ItZoom src/Dodge/Data/Item/Use.hs 192;" t +ItZoom src/Dodge/Data/Item/Use.hs 190;" t Item src/Dodge/Data/Item.hs 41;" t Item src/Dodge/Data/Item.hs 4;" m Item src/Dodge/Default/Item.hs 1;" m @@ -942,23 +941,23 @@ ItemParams src/Dodge/Tesla/ItemParams.hs 1;" m ItemScrollTimeFlow src/Dodge/Data/World.hs 60;" C ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 37;" t ItemTargeting src/Dodge/Data/Item.hs 54;" t -ItemType src/Dodge/Data/Item/Combine.hs 16;" t +ItemType src/Dodge/Data/Item/Combine.hs 15;" t ItemUse src/Dodge/Data/Item/Use.hs 32;" t ItmCrWdWd src/Dodge/Data/Item/Use/Equipment.hs 28;" t ItmCrWdWdDoNothing src/Dodge/Data/Item/Use/Equipment.hs 29;" C ItmInt src/Dodge/Data/Item/Location.hs 25;" t JGK src/Control/Foldl/JGK.hs 1;" m -JOYSTICK src/Dodge/Data/Item/Combine.hs 74;" C -JUMPLEGS src/Dodge/Data/Item/Combine.hs 110;" C +JOYSTICK src/Dodge/Data/Item/Combine.hs 72;" C +JUMPLEGS src/Dodge/Data/Item/Combine.hs 108;" C JoinClust src/Dodge/Combine/Graph.hs 21;" C JoystickLink src/Dodge/Data/ComposedItem.hs 25;" C JoystickSF src/Dodge/Data/ComposedItem.hs 50;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 25;" C Justify src/Justify.hs 1;" m -KEYCARD src/Dodge/Data/Item/Combine.hs 163;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 155;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C -LASER src/Dodge/Data/Item/Combine.hs 154;" C +LASER src/Dodge/Data/Item/Combine.hs 146;" C LASERING src/Dodge/Data/Damage/Type.hs 19;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C @@ -967,10 +966,10 @@ 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 56;" C +LED src/Dodge/Data/Item/Combine.hs 54;" C LHS src/Geometry/LHS.hs 1;" m -LIGHTER src/Dodge/Data/Item/Combine.hs 45;" C -LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 59;" C +LIGHTER src/Dodge/Data/Item/Combine.hs 43;" C +LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 57;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t LTest src/Dodge/Data/ComposedItem.hs 72;" C @@ -990,7 +989,7 @@ Lampoid src/Dodge/Data/Creature/Misc.hs 83;" C Lampoid src/Dodge/Lampoid.hs 1;" m Large src/Shape/Data.hs 29;" C LasBeamCombine src/Dodge/Data/Beam.hs 40;" C -LasGunFlare src/Dodge/Data/Item/Use.hs 133;" C +LasGunFlare src/Dodge/Data/Item/Use.hs 131;" C LasSound src/Dodge/Data/SoundOrigin.hs 28;" C LasTurret src/Dodge/Room/LasTurret.hs 1;" m Laser src/Dodge/Data/Laser.hs 30;" t @@ -1067,23 +1066,23 @@ LtAutoAI src/Dodge/Data/Creature/Misc.hs 53;" C LtAutoCrit src/Dodge/Creature/LtAutoCrit.hs 1;" m Lure src/Dodge/Data/ActionPlan.hs 179;" C Luse src/Dodge/Luse.hs 2;" m -MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 130;" C +MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 122;" C MAGENTA src/Color/Data.hs 20;" C -MAGNET src/Dodge/Data/Item/Combine.hs 46;" C -MAGSHIELD src/Dodge/Data/Item/Combine.hs 100;" C +MAGNET src/Dodge/Data/Item/Combine.hs 44;" C +MAGSHIELD src/Dodge/Data/Item/Combine.hs 98;" C MBranch src/Dodge/Data/MetaTree.hs 16;" C MBranch src/Dodge/Tree/Compose/Data.hs 10;" C MCrAc src/Dodge/Data/CreatureEffect.hs 45;" t MCrNoAction src/Dodge/Data/CreatureEffect.hs 45;" C -MEDKIT src/Dodge/Data/Item/Combine.hs 95;" C -MICROCHIP src/Dodge/Data/Item/Combine.hs 50;" C -MICROPHONE src/Dodge/Data/Item/Combine.hs 62;" C -MINIDISPLAY src/Dodge/Data/Item/Combine.hs 55;" C -MINIGUNX src/Dodge/Data/Item/Combine.hs 136;" C +MEDKIT src/Dodge/Data/Item/Combine.hs 93;" C +MICROCHIP src/Dodge/Data/Item/Combine.hs 48;" C +MICROPHONE src/Dodge/Data/Item/Combine.hs 60;" C +MINIDISPLAY src/Dodge/Data/Item/Combine.hs 53;" C +MINIGUNX src/Dodge/Data/Item/Combine.hs 128;" C MODBlockedString src/Dodge/Data/Universe.hs 98;" C MODString src/Dodge/Data/Universe.hs 97;" C MODStringOption src/Dodge/Data/Universe.hs 99;" C -MOTOR src/Dodge/Data/Item/Combine.hs 42;" C +MOTOR src/Dodge/Data/Item/Combine.hs 40;" C MP2Ac src/Dodge/Data/CreatureEffect.hs 56;" t MP2NoAction src/Dodge/Data/CreatureEffect.hs 56;" C MTRS src/Dodge/Annotation/Data.hs 12;" t @@ -1160,7 +1159,7 @@ Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C Mine src/Dodge/Data/Scenario.hs 64;" C MiniGunAI src/Dodge/Data/Creature/Misc.hs 58;" C -MiniGunFlare src/Dodge/Data/Item/Use.hs 131;" C +MiniGunFlare src/Dodge/Data/Item/Use.hs 129;" C Misc src/Dodge/Data/Creature/Misc.hs 6;" m Misc src/Dodge/Data/Equipment/Misc.hs 6;" m Misc src/Dodge/Data/Item/Misc.hs 6;" m @@ -1193,27 +1192,27 @@ Multiset src/Multiset.hs 4;" m Music src/Music.hs 1;" m MusicData src/Music.hs 7;" t Mute src/Dodge/Data/Creature/Misc.hs 28;" C -Muzzle src/Dodge/Data/Item/Use.hs 164;" t -MuzzleBlink src/Dodge/Data/Item/Use.hs 152;" C -MuzzleDetector src/Dodge/Data/Item/Use.hs 151;" C -MuzzleEffect src/Dodge/Data/Item/Use.hs 137;" t +Muzzle src/Dodge/Data/Item/Use.hs 162;" t +MuzzleBlink src/Dodge/Data/Item/Use.hs 150;" C +MuzzleDetector src/Dodge/Data/Item/Use.hs 149;" C +MuzzleEffect src/Dodge/Data/Item/Use.hs 135;" t MuzzleEffect src/Dodge/Data/MuzzleEffect.hs 5;" m -MuzzleGLauncher src/Dodge/Data/Item/Use.hs 143;" C -MuzzleLaser src/Dodge/Data/Item/Use.hs 139;" C -MuzzleNozzle src/Dodge/Data/Item/Use.hs 144;" C -MuzzleRLauncher src/Dodge/Data/Item/Use.hs 142;" C -MuzzleRewind src/Dodge/Data/Item/Use.hs 154;" C -MuzzleScroller src/Dodge/Data/Item/Use.hs 156;" C -MuzzleShatter src/Dodge/Data/Item/Use.hs 150;" C -MuzzleShootBullet src/Dodge/Data/Item/Use.hs 138;" C -MuzzleStopper src/Dodge/Data/Item/Use.hs 155;" C -MuzzleTesla src/Dodge/Data/Item/Use.hs 140;" C -MuzzleTractor src/Dodge/Data/Item/Use.hs 141;" C -MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 153;" C +MuzzleGLauncher src/Dodge/Data/Item/Use.hs 141;" C +MuzzleLaser src/Dodge/Data/Item/Use.hs 137;" C +MuzzleNozzle src/Dodge/Data/Item/Use.hs 142;" C +MuzzleRLauncher src/Dodge/Data/Item/Use.hs 140;" C +MuzzleRewind src/Dodge/Data/Item/Use.hs 152;" C +MuzzleScroller src/Dodge/Data/Item/Use.hs 154;" C +MuzzleShatter src/Dodge/Data/Item/Use.hs 148;" C +MuzzleShootBullet src/Dodge/Data/Item/Use.hs 136;" C +MuzzleStopper src/Dodge/Data/Item/Use.hs 153;" C +MuzzleTesla src/Dodge/Data/Item/Use.hs 138;" C +MuzzleTractor src/Dodge/Data/Item/Use.hs 139;" C +MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 151;" C MvForward src/Dodge/Data/ActionPlan.hs 35;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 34;" C MvWalking src/Dodge/Data/Creature/Misc.hs 39;" C -NAILBOX src/Dodge/Data/Item/Combine.hs 57;" C +NAILBOX src/Dodge/Data/Item/Combine.hs 55;" C NInt src/NewInt.hs 15;" C NIntMap src/NewInt.hs 18;" C NS src/Dodge/Data/CardinalPoint.hs 25;" C @@ -1232,7 +1231,7 @@ NewSideEffect src/Dodge/Data/Universe.hs 63;" C NextArcStep src/Dodge/Data/ArcStep.hs 21;" t Ngon src/Dodge/Room/Ngon.hs 1;" m NoAction src/Dodge/Data/ActionPlan.hs 152;" C -NoAmmoParams src/Dodge/Data/Item/Use.hs 113;" C +NoAmmoParams src/Dodge/Data/Item/Use.hs 111;" C NoArguments src/Dodge/Data/Terminal.hs 95;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -1247,14 +1246,14 @@ 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 77;" C NoFaction src/Dodge/Data/Creature/State.hs 40;" C -NoFlare src/Dodge/Data/Item/Use.hs 128;" C +NoFlare src/Dodge/Data/Item/Use.hs 126;" C NoHammer src/Dodge/Data/Hammer.hs 13;" C NoHeldUseEffect src/Dodge/Data/Item/Use.hs 49;" C NoHoming src/Dodge/Data/Projectile.hs 46;" C NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoInvEffect src/Dodge/Data/Item/Effect.hs 20;" C NoItTargeting src/Dodge/Data/Item.hs 54;" C -NoLightFlare src/Dodge/Data/Item/Use.hs 130;" C +NoLightFlare src/Dodge/Data/Item/Use.hs 128;" C NoLighting src/Dodge/Data/Config.hs 104;" C NoMouseContext src/Dodge/Data/Input.hs 20;" C NoMvType src/Dodge/Data/Creature/Misc.hs 38;" C @@ -1335,7 +1334,7 @@ OnSpecial src/Dodge/Data/Equipment/Misc.hs 28;" C OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneArgument src/Dodge/Data/Terminal.hs 96;" C -OneHand src/Dodge/Data/Item/Use.hs 189;" C +OneHand src/Dodge/Data/Item/Use.hs 187;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C OnwardList src/Dodge/Annotation/Data.hs 16;" C Opacity src/Dodge/Data/Wall.hs 38;" t @@ -1368,24 +1367,24 @@ P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C PIERCING src/Dodge/Data/Damage/Type.hs 12;" C -PIPE src/Dodge/Data/Item/Combine.hs 29;" C -PISTOL src/Dodge/Data/Item/Combine.hs 129;" C +PIPE src/Dodge/Data/Item/Combine.hs 27;" C +PISTOL src/Dodge/Data/Item/Combine.hs 121;" C PJStabiliser src/Dodge/Projectile/Create.hs 16;" t -PLANK src/Dodge/Data/Item/Combine.hs 38;" C -PLATE src/Dodge/Data/Item/Combine.hs 48;" C +PLANK src/Dodge/Data/Item/Combine.hs 36;" C +PLATE src/Dodge/Data/Item/Combine.hs 46;" C PLUS src/Dodge/Data/GenParams.hs 20;" C POISONDAM src/Dodge/Data/Damage/Type.hs 23;" C -POISONSPRAYER src/Dodge/Data/Item/Combine.hs 159;" C -PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 67;" C -POWERLEGS src/Dodge/Data/Item/Combine.hs 108;" C +POISONSPRAYER src/Dodge/Data/Item/Combine.hs 151;" C +PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 65;" C +POWERLEGS src/Dodge/Data/Item/Combine.hs 106;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C -PRISM src/Dodge/Data/Item/Combine.hs 44;" C +PRISM src/Dodge/Data/Item/Combine.hs 42;" C PS src/Dodge/Data/GenWorld.hs 62;" C PSNoShiftCont src/Dodge/Data/GenWorld.hs 63;" C PSPos src/Dodge/Data/GenWorld.hs 64;" C PSRoomRand src/Dodge/Data/GenWorld.hs 69;" C PSType src/Dodge/Data/GenWorld.hs 30;" t -PUMP src/Dodge/Data/Item/Combine.hs 41;" C +PUMP src/Dodge/Data/Item/Combine.hs 39;" C Padding src/Padding.hs 2;" m Pair src/FoldlHelp.hs 10;" t PaletteColor src/Color/Data.hs 14;" t @@ -1474,7 +1473,7 @@ Procedural src/Dodge/Room/Procedural.hs 2;" m Projectile src/Dodge/Data/Projectile.hs 16;" t Projectile src/Dodge/Data/Projectile.hs 6;" m Projectile src/Dodge/Projectile.hs 1;" m -ProjectileParams src/Dodge/Data/Item/Use.hs 111;" C +ProjectileParams src/Dodge/Data/Item/Use.hs 109;" C ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 32;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 60;" C ProjectileType src/Dodge/Data/Projectile.hs 34;" t @@ -1541,16 +1540,16 @@ PutWorldUpdate src/Dodge/Data/GenWorld.hs 54;" C QuarterRes src/Dodge/Data/Config.hs 97;" C Quaternion src/Quaternion.hs 12;" m QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C -RAM src/Dodge/Data/Item/Combine.hs 52;" C +RAM src/Dodge/Data/Item/Combine.hs 50;" C RBList src/Dodge/Inventory/RBList.hs 1;" m RED src/Color/Data.hs 15;" C -REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 78;" C -REMOTESCREEN src/Dodge/Data/Item/Combine.hs 73;" C -REWINDER src/Dodge/Data/Item/Combine.hs 126;" C +REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 76;" C +REMOTESCREEN src/Dodge/Data/Item/Combine.hs 71;" C +REWINDER src/Dodge/Data/Item/Combine.hs 118;" C RGBA src/Color/Data.hs 31;" t -RIFLE src/Dodge/Data/Item/Combine.hs 138;" C -RLAUNCHER src/Dodge/Data/Item/Combine.hs 156;" C -RLAUNCHERX src/Dodge/Data/Item/Combine.hs 157;" C +RIFLE src/Dodge/Data/Item/Combine.hs 130;" C +RLAUNCHER src/Dodge/Data/Item/Combine.hs 148;" C +RLAUNCHERX src/Dodge/Data/Item/Combine.hs 149;" C ROSE src/Color/Data.hs 21;" C RPLinkStatus src/Dodge/Data/Room.hs 55;" t RProps src/Dodge/Layout/Generate.hs 13;" C @@ -1645,26 +1644,26 @@ RoomWire src/Dodge/Data/Room.hs 51;" t RoundedFaces src/Shape/Data.hs 18;" C RunPast src/Dodge/Room/RunPast.hs 1;" m RunningSideEffect src/Dodge/Data/Universe.hs 67;" C -SCRAPMETAL src/Dodge/Data/Item/Combine.hs 40;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 160;" C +SCRAPMETAL src/Dodge/Data/Item/Combine.hs 38;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 152;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C -SHELLMAG src/Dodge/Data/Item/Combine.hs 89;" C -SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 82;" C -SMG src/Dodge/Data/Item/Combine.hs 132;" C -SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 79;" C -SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 146;" C -SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 60;" C -SPARKGUN src/Dodge/Data/Item/Combine.hs 152;" C +SHELLMAG src/Dodge/Data/Item/Combine.hs 87;" C +SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 80;" C +SMG src/Dodge/Data/Item/Combine.hs 124;" C +SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 77;" C +SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 138;" C +SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 58;" C +SPARKGUN src/Dodge/Data/Item/Combine.hs 144;" C SPARKING src/Dodge/Data/Damage/Type.hs 15;" C -SPEEDLEGS src/Dodge/Data/Item/Combine.hs 109;" C -SPRING src/Dodge/Data/Item/Combine.hs 32;" C +SPEEDLEGS src/Dodge/Data/Item/Combine.hs 107;" C +SPRING src/Dodge/Data/Item/Combine.hs 30;" C SPic src/ShapePicture/Data.hs 7;" t SPic src/Dodge/Item/Draw/SPic.hs 3;" m SQUARE src/Dodge/Data/GenParams.hs 20;" C ST src/Dodge/Data/MetaTree.hs 18;" C ST src/Dodge/Tree/Compose/Data.hs 12;" C -STEELDRUM src/Dodge/Data/Item/Combine.hs 37;" C -STICKYMOD src/Dodge/Data/Item/Combine.hs 25;" C +STEELDRUM src/Dodge/Data/Item/Combine.hs 35;" C +STICKYMOD src/Dodge/Data/Item/Combine.hs 23;" C SameConstr src/SameConstr.hs 5;" m Save src/Dodge/Save.hs 1;" m SaveSlot src/Dodge/Data/SaveSlot.hs 9;" t @@ -1851,20 +1850,20 @@ SwarmPlacement src/Dodge/LevelGen/SwarmPlacement.hs 1;" m Switch src/Dodge/LevelGen/Switch.hs 1;" m SwitchAlteRifle src/Dodge/Data/Item/Use.hs 51;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C -TAPE src/Dodge/Data/Item/Combine.hs 34;" C -TARGETING src/Dodge/Data/Item/Combine.hs 23;" C -TESLAGUN src/Dodge/Data/Item/Combine.hs 153;" C -THERMOMETER src/Dodge/Data/Item/Combine.hs 63;" C +TAPE src/Dodge/Data/Item/Combine.hs 32;" C +TARGETING src/Dodge/Data/Item/Combine.hs 21;" C +TESLAGUN src/Dodge/Data/Item/Combine.hs 145;" C +THERMOMETER src/Dodge/Data/Item/Combine.hs 61;" C THREELINES src/Dodge/Data/GenParams.hs 20;" C -TIMESCROLLER src/Dodge/Data/Item/Combine.hs 128;" C -TIMESTOPPER src/Dodge/Data/Item/Combine.hs 127;" C -TIN src/Dodge/Data/Item/Combine.hs 36;" C -TINMAG src/Dodge/Data/Item/Combine.hs 86;" C +TIMESCROLLER src/Dodge/Data/Item/Combine.hs 120;" C +TIMESTOPPER src/Dodge/Data/Item/Combine.hs 119;" C +TIN src/Dodge/Data/Item/Combine.hs 34;" C +TINMAG src/Dodge/Data/Item/Combine.hs 84;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 161;" C -TRACTORGUN src/Dodge/Data/Item/Combine.hs 155;" C -TRANSFORMER src/Dodge/Data/Item/Combine.hs 43;" C -TRANSMITTER src/Dodge/Data/Item/Combine.hs 49;" C +TORCH src/Dodge/Data/Item/Combine.hs 153;" C +TRACTORGUN src/Dodge/Data/Item/Combine.hs 147;" C +TRANSFORMER src/Dodge/Data/Item/Combine.hs 41;" C +TRANSMITTER src/Dodge/Data/Item/Combine.hs 47;" C TSbackspace src/Dodge/Data/Input.hs 62;" C TSdelete src/Dodge/Data/Input.hs 63;" C TSdown src/Dodge/Data/Input.hs 68;" C @@ -1874,7 +1873,7 @@ TSreturn src/Dodge/Data/Input.hs 61;" C TSright src/Dodge/Data/Input.hs 66;" C TStab src/Dodge/Data/Input.hs 64;" C TSup src/Dodge/Data/Input.hs 67;" C -TUBE src/Dodge/Data/Item/Combine.hs 30;" C +TUBE src/Dodge/Data/Item/Combine.hs 28;" C Tank src/Dodge/Placement/Instance/Tank.hs 1;" m Tanks src/Dodge/Room/Tanks.hs 1;" m Tap src/Dodge/Data/SoundOrigin.hs 38;" C @@ -1929,7 +1928,7 @@ TeslaArc src/Dodge/Data/TeslaArc.hs 15;" t TeslaArc src/Dodge/Data/TeslaArc.hs 6;" m TeslaBall src/Dodge/Data/Bullet.hs 31;" C TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" C -TeslaGunFlare src/Dodge/Data/Item/Use.hs 134;" C +TeslaGunFlare src/Dodge/Data/Item/Use.hs 132;" C Test src/Dodge/Creature/Test.hs 8;" m Test src/Dodge/Event/Test.hs 1;" m Test src/Picture/Test.hs 1;" m @@ -1999,13 +1998,13 @@ Turret src/Dodge/Data/Machine.hs 57;" t Turret src/Dodge/Placement/Instance/Turret.hs 1;" m TurretInt src/Dodge/Data/Item/Location.hs 21;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C -TwoHandFlat src/Dodge/Data/Item/Use.hs 188;" C -TwoHandOver src/Dodge/Data/Item/Use.hs 187;" C -TwoHandUnder src/Dodge/Data/Item/Use.hs 186;" C +TwoHandFlat src/Dodge/Data/Item/Use.hs 186;" C +TwoHandOver src/Dodge/Data/Item/Use.hs 185;" C +TwoHandUnder src/Dodge/Data/Item/Use.hs 184;" C Type src/Dodge/Data/Damage/Type.hs 6;" m Type src/Dodge/Terminal/Type.hs 1;" m Typical src/Shape/Data.hs 36;" C -UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 77;" C +UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 75;" C UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 34;" C UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 33;" C @@ -2042,7 +2041,7 @@ UseBulletMod src/Dodge/Data/Item/Use.hs 45;" C UseCondition src/Dodge/Data/Item/Use.hs 59;" t UseDelay src/Dodge/Data/Item/HeldDelay.hs 13;" t UseEquip src/Dodge/Data/Item/Use.hs 41;" C -UseExactly src/Dodge/Data/Item/Use.hs 160;" C +UseExactly src/Dodge/Data/Item/Use.hs 158;" C UseFocus src/Dodge/Data/Item/Use.hs 54;" t UseFromLocation src/Dodge/Data/Item/Use.hs 56;" C UseFromRoot src/Dodge/Data/Item/Use.hs 55;" C @@ -2055,7 +2054,7 @@ UseNothing src/Dodge/Data/Item/Use.hs 43;" C UseScope src/Dodge/Data/Item/Use.hs 44;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C -UseUpTo src/Dodge/Data/Item/Use.hs 161;" C +UseUpTo src/Dodge/Data/Item/Use.hs 159;" C UseableAnytime src/Dodge/Data/Item/Use.hs 61;" C UseableWhenAimed src/Dodge/Data/Item/Use.hs 60;" C UsedInLink src/Dodge/Data/Room.hs 61;" C @@ -2066,7 +2065,7 @@ VAO src/Shader/Data.hs 64;" t VBO src/Shader/Data.hs 81;" t VF src/Polyhedra/Data.hs 21;" t VIOLET src/Color/Data.hs 22;" C -VOLLEYGUN src/Dodge/Data/Item/Combine.hs 137;" C +VOLLEYGUN src/Dodge/Data/Item/Combine.hs 129;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2081,12 +2080,12 @@ Vision src/Dodge/Data/Creature/Perception.hs 41;" t Vocalization src/Dodge/Data/Creature/Misc.hs 27;" t Vocalization src/Dodge/Creature/Vocalization.hs 1;" m Volition src/Dodge/Creature/Volition.hs 2;" m -WALLDETECTOR src/Dodge/Data/Item/Combine.hs 172;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 164;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C -WIRE src/Dodge/Data/Item/Combine.hs 65;" C -WRISTARMOUR src/Dodge/Data/Item/Combine.hs 103;" C -WRIST_ECG src/Dodge/Data/Item/Combine.hs 115;" C +WIRE src/Dodge/Data/Item/Combine.hs 63;" C +WRISTARMOUR src/Dodge/Data/Item/Combine.hs 101;" C +WRIST_ECG src/Dodge/Data/Item/Combine.hs 113;" C WaitThen src/Dodge/Data/ActionPlan.hs 103;" C WalkCycle src/Dodge/Creature/State/WalkCycle.hs 1;" m Walking src/Dodge/Data/Creature/Stance.hs 21;" C @@ -2170,7 +2169,7 @@ WorldPos src/Dodge/WorldPos.hs 1;" m YELLOW src/Color/Data.hs 18;" C You src/Dodge/Base/You.hs 1;" m YourControl src/Dodge/Creature/YourControl.hs 1;" m -ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 71;" C +ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 69;" C ZombieFaction src/Dodge/Data/Creature/State.hs 36;" C Zone src/Dodge/Wall/Zone.hs 1;" m Zone src/Geometry/Zone.hs 1;" m @@ -2178,13 +2177,13 @@ Zoning src/Dodge/Zoning.hs 1;" m __Just' src/MaybeHelp.hs 13;" f _actAction src/Dodge/Data/ActionPlan.hs 81;" f _actLabel src/Dodge/Data/ActionPlan.hs 80;" f -_aimHandlePos src/Dodge/Data/Item/Use.hs 122;" f -_aimMuzzles src/Dodge/Data/Item/Use.hs 123;" f -_aimRange src/Dodge/Data/Item/Use.hs 119;" f -_aimStance src/Dodge/Data/Item/Use.hs 121;" f -_aimTurnSpeed src/Dodge/Data/Item/Use.hs 118;" f -_aimWeight src/Dodge/Data/Item/Use.hs 117;" f -_aimZoom src/Dodge/Data/Item/Use.hs 120;" f +_aimHandlePos src/Dodge/Data/Item/Use.hs 120;" f +_aimMuzzles src/Dodge/Data/Item/Use.hs 121;" f +_aimRange src/Dodge/Data/Item/Use.hs 117;" f +_aimStance src/Dodge/Data/Item/Use.hs 119;" f +_aimTurnSpeed src/Dodge/Data/Item/Use.hs 116;" f +_aimWeight src/Dodge/Data/Item/Use.hs 115;" f +_aimZoom src/Dodge/Data/Item/Use.hs 118;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 21;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 24;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 28;" f @@ -2196,15 +2195,14 @@ _allocRemoveID src/Dodge/Data/RightButtonOptions.hs 34;" f _allocSwapID src/Dodge/Data/RightButtonOptions.hs 30;" f _alphaDivideShader src/Data/Preload/Render.hs 18;" f _ambushTarget src/Dodge/Data/ActionPlan.hs 178;" f -_ampBullet src/Dodge/Data/Item/Use.hs 110;" f -_ampCreateGas src/Dodge/Data/Item/Use.hs 112;" f -_ampPayload src/Dodge/Data/Item/Use.hs 111;" f +_ampBullet src/Dodge/Data/Item/Use.hs 108;" f +_ampCreateGas src/Dodge/Data/Item/Use.hs 110;" f +_ampPayload src/Dodge/Data/Item/Use.hs 109;" f _apAction src/Dodge/Data/ActionPlan.hs 20;" f _apGoal src/Dodge/Data/ActionPlan.hs 22;" f _apImpulse src/Dodge/Data/ActionPlan.hs 19;" f -_apInt src/Dodge/Data/Item/Use.hs 72;" f -_apLinkedProjectile src/Dodge/Data/Item/Use.hs 69;" f -_apProjectiles src/Dodge/Data/Item/Use.hs 71;" f +_apInt src/Dodge/Data/Item/Use.hs 70;" f +_apProjectiles src/Dodge/Data/Item/Use.hs 69;" f _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f _arLoaded src/Dodge/Data/Item/Use/Consumption.hs 28;" f _arMax src/Dodge/Data/Item/Use/Consumption.hs 29;" f @@ -2279,9 +2277,9 @@ _buPayload src/Dodge/Data/Bullet.hs 19;" f _buPos src/Dodge/Data/Bullet.hs 23;" f _buVel src/Dodge/Data/Bullet.hs 21;" f _buWidth src/Dodge/Data/Bullet.hs 25;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 84;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 91;" f -_bulGunSound src/Dodge/Data/Item/Use.hs 101;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 82;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 89;" f +_bulGunSound src/Dodge/Data/Item/Use.hs 99;" f _bullets src/Dodge/Data/LWorld.hs 106;" f _buttons src/Dodge/Data/LWorld.hs 135;" f _cClock src/Dodge/Data/CWorld.hs 28;" f @@ -2544,7 +2542,7 @@ _fullscreenShader src/Data/Preload/Render.hs 20;" f _futureWorlds src/Dodge/Data/World.hs 63;" f _futureWorlds src/Dodge/Data/World.hs 69;" f _gameplay_rotate_to_wall src/Dodge/Data/Config.hs 55;" f -_gasCreation src/Dodge/Data/Item/Use.hs 79;" f +_gasCreation src/Dodge/Data/Item/Use.hs 77;" f _genPlacements src/Dodge/Data/GenWorld.hs 25;" f _genRooms src/Dodge/Data/GenWorld.hs 26;" f _getAttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" f @@ -2595,13 +2593,13 @@ _iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 22;" f _iaMax src/Dodge/Data/Item/Use/Consumption.hs 21;" f _iatOrient src/Dodge/Data/ComposedItem.hs 67;" f _iatType src/Dodge/Data/ComposedItem.hs 66;" f -_ibtAmmoMag src/Dodge/Data/Item/Combine.hs 22;" f -_ibtAttach src/Dodge/Data/Item/Combine.hs 21;" f -_ibtBulletMod src/Dodge/Data/Item/Combine.hs 24;" f -_ibtCraft src/Dodge/Data/Item/Combine.hs 20;" f -_ibtEquip src/Dodge/Data/Item/Combine.hs 19;" f -_ibtHeld src/Dodge/Data/Item/Combine.hs 17;" f -_ibtTargeting src/Dodge/Data/Item/Combine.hs 23;" f +_ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f +_ibtAttach src/Dodge/Data/Item/Combine.hs 19;" f +_ibtBulletMod src/Dodge/Data/Item/Combine.hs 22;" f +_ibtCraft src/Dodge/Data/Item/Combine.hs 18;" f +_ibtEquip src/Dodge/Data/Item/Combine.hs 17;" f +_ibtHeld src/Dodge/Data/Item/Combine.hs 16;" f +_ibtTargeting src/Dodge/Data/Item/Combine.hs 21;" f _ieInv src/Dodge/Data/Item/Effect.hs 13;" f _ieOnDrop src/Dodge/Data/Item/Effect.hs 15;" f _ieOnInsert src/Dodge/Data/Item/Effect.hs 14;" f @@ -2644,9 +2642,9 @@ _itType src/Dodge/Data/Item.hs 45;" f _itUse src/Dodge/Data/Item.hs 42;" f _itUseCondition src/Dodge/Data/Item.hs 43;" f _itemLocations src/Dodge/Data/LWorld.hs 100;" f -_izFac src/Dodge/Data/Item/Use.hs 195;" f -_izMax src/Dodge/Data/Item/Use.hs 193;" f -_izMin src/Dodge/Data/Item/Use.hs 194;" f +_izFac src/Dodge/Data/Item/Use.hs 193;" f +_izMax src/Dodge/Data/Item/Use.hs 191;" f +_izMin src/Dodge/Data/Item/Use.hs 192;" f _killTarget src/Dodge/Data/ActionPlan.hs 198;" f _lClock src/Dodge/Data/LWorld.hs 143;" f _lTestInt src/Dodge/Data/LWorld.hs 145;" f @@ -2772,20 +2770,20 @@ _mtLabel src/Dodge/Tree/Compose/Data.hs 8;" f _mtTree src/Dodge/Data/MetaTree.hs 10;" f _mtTree src/Dodge/Tree/Compose/Data.hs 8;" f _musicData src/Data/Preload.hs 13;" f -_muzVel src/Dodge/Data/Item/Use.hs 95;" f +_muzVel src/Dodge/Data/Item/Use.hs 93;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 44;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 39;" f _mvToPoint src/Dodge/Data/Creature.hs 78;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 43;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 42;" f -_mzAmmoPerShot src/Dodge/Data/Item/Use.hs 171;" f -_mzAmmoSlot src/Dodge/Data/Item/Use.hs 168;" f -_mzEffect src/Dodge/Data/Item/Use.hs 170;" f -_mzFlareType src/Dodge/Data/Item/Use.hs 169;" f -_mzFrame src/Dodge/Data/Item/Use.hs 172;" f -_mzInaccuracy src/Dodge/Data/Item/Use.hs 167;" f -_mzPos src/Dodge/Data/Item/Use.hs 165;" f -_mzRot src/Dodge/Data/Item/Use.hs 166;" f +_mzAmmoPerShot src/Dodge/Data/Item/Use.hs 169;" f +_mzAmmoSlot src/Dodge/Data/Item/Use.hs 166;" f +_mzEffect src/Dodge/Data/Item/Use.hs 168;" f +_mzFlareType src/Dodge/Data/Item/Use.hs 167;" f +_mzFrame src/Dodge/Data/Item/Use.hs 170;" f +_mzInaccuracy src/Dodge/Data/Item/Use.hs 165;" f +_mzPos src/Dodge/Data/Item/Use.hs 163;" f +_mzRot src/Dodge/Data/Item/Use.hs 164;" f _newArcStep src/Dodge/Data/Item/Params.hs 25;" f _nodeMetaTree src/Dodge/Data/MetaTree.hs 14;" f _nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f @@ -2795,10 +2793,10 @@ _nodesSearched src/Dodge/Data/Creature/Memory.hs 15;" f _numLinkEW src/Dodge/Data/Room.hs 33;" f _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 32;" f -_nzCurrentWalkAngle src/Dodge/Data/Item/Use.hs 147;" f -_nzMaxWalkAngle src/Dodge/Data/Item/Use.hs 146;" f -_nzPressure src/Dodge/Data/Item/Use.hs 145;" f -_nzWalkSpeed src/Dodge/Data/Item/Use.hs 148;" f +_nzCurrentWalkAngle src/Dodge/Data/Item/Use.hs 145;" f +_nzMaxWalkAngle src/Dodge/Data/Item/Use.hs 144;" f +_nzPressure src/Dodge/Data/Item/Use.hs 143;" f +_nzWalkSpeed src/Dodge/Data/Item/Use.hs 146;" f _offPathFromEdges src/Dodge/Data/Room.hs 74;" f _oldMagnets src/Dodge/Data/LWorld.hs 125;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f @@ -2925,8 +2923,8 @@ _pyFaces src/Polyhedra/Data.hs 14;" f _radarBlips src/Dodge/Data/LWorld.hs 112;" f _radarSweeps src/Dodge/Data/LWorld.hs 107;" f _randGen src/Dodge/Data/World.hs 39;" f -_randomOffset src/Dodge/Data/Item/Use.hs 82;" f -_randomOffset src/Dodge/Data/Item/Use.hs 99;" f +_randomOffset src/Dodge/Data/Item/Use.hs 80;" f +_randomOffset src/Dodge/Data/Item/Use.hs 97;" f _rateMax src/Dodge/Data/Item/HeldDelay.hs 16;" f _rateTime src/Dodge/Data/Item/HeldDelay.hs 17;" f _rbColor src/Dodge/Data/RadarBlip.hs 15;" f @@ -2936,13 +2934,13 @@ _rbPos src/Dodge/Data/RadarBlip.hs 19;" f _rbRad src/Dodge/Data/RadarBlip.hs 18;" f _rbTime src/Dodge/Data/RadarBlip.hs 16;" f _rboBaseBloom src/Data/Preload/Render.hs 38;" f -_recoil src/Dodge/Data/Item/Use.hs 80;" f -_recoil src/Dodge/Data/Item/Use.hs 97;" f +_recoil src/Dodge/Data/Item/Use.hs 78;" f +_recoil src/Dodge/Data/Item/Use.hs 95;" f _renderData src/Data/Preload.hs 11;" f _reverseAmount src/Dodge/Data/World.hs 62;" f _reverseAmount src/Dodge/Data/World.hs 68;" f _reverseAmount src/Dodge/Data/World.hs 72;" f -_rifling src/Dodge/Data/Item/Use.hs 96;" f +_rifling src/Dodge/Data/Item/Use.hs 94;" f _rkHoming src/Dodge/Data/Projectile.hs 39;" f _rkSmoke src/Dodge/Data/Projectile.hs 40;" f _rlDir src/Dodge/Data/Room.hs 26;" f @@ -3033,7 +3031,7 @@ _shaderVAO src/Shader/Data.hs 54;" f _shapeEBO src/Data/Preload/Render.hs 26;" f _shapeHalfSize src/Shape/Data.hs 18;" f _shapeShader src/Data/Preload/Render.hs 25;" f -_shellPayload src/Dodge/Data/Item/Combine.hs 82;" f +_shellPayload src/Dodge/Data/Item/Combine.hs 80;" f _shockwaves src/Dodge/Data/LWorld.hs 115;" f _shrinkGunStatus src/Dodge/Data/Item/Params.hs 18;" f _siColor src/Dodge/Data/SelectionList.hs 49;" f @@ -3051,8 +3049,8 @@ _siWidth src/Dodge/Data/SelectionList.hs 47;" f _siWidth src/Dodge/Data/SelectionList.hs 56;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f -_sidePush src/Dodge/Data/Item/Use.hs 83;" f -_sidePush src/Dodge/Data/Item/Use.hs 100;" f +_sidePush src/Dodge/Data/Item/Use.hs 81;" f +_sidePush src/Dodge/Data/Item/Use.hs 98;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f _skColor src/Dodge/Data/Spark.hs 17;" f _skDamageType src/Dodge/Data/Spark.hs 21;" f @@ -3161,8 +3159,8 @@ _toPlaySoundVolume src/Sound/Data.hs 43;" f _toPlaySoundVolumeFraction src/Sound/Data.hs 44;" f _toPlaySounds src/Dodge/Data/World.hs 40;" f _topBoxSize src/Shape/Data.hs 17;" f -_torqueAfter src/Dodge/Data/Item/Use.hs 81;" f -_torqueAfter src/Dodge/Data/Item/Use.hs 98;" f +_torqueAfter src/Dodge/Data/Item/Use.hs 79;" f +_torqueAfter src/Dodge/Data/Item/Use.hs 96;" f _tractorBeams src/Dodge/Data/LWorld.hs 119;" f _trieChildren src/SimpleTrie.hs 11;" f _trieMVal src/SimpleTrie.hs 10;" f @@ -3193,11 +3191,11 @@ _unST src/Dodge/Tree/Compose/Data.hs 12;" f _unTO src/Shader/Data.hs 59;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f -_useExactly src/Dodge/Data/Item/Use.hs 160;" f +_useExactly src/Dodge/Data/Item/Use.hs 158;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f -_useUpTo src/Dodge/Data/Item/Use.hs 161;" f +_useUpTo src/Dodge/Data/Item/Use.hs 159;" f _uvCanContinue src/Dodge/Data/Universe.hs 38;" f _uvConfig src/Dodge/Data/Universe.hs 36;" f _uvDebug src/Dodge/Data/Universe.hs 43;" f @@ -3249,10 +3247,10 @@ _walls src/Dodge/Data/LWorld.hs 120;" f _warmMax src/Dodge/Data/Item/HeldDelay.hs 27;" f _warmSound src/Dodge/Data/Item/HeldDelay.hs 28;" f _warmTime src/Dodge/Data/Item/HeldDelay.hs 26;" f -_weaponInvLock src/Dodge/Data/Item/Use.hs 87;" f -_weaponInvLock src/Dodge/Data/Item/Use.hs 104;" f -_weaponRepeat src/Dodge/Data/Item/Use.hs 88;" f -_weaponRepeat src/Dodge/Data/Item/Use.hs 105;" f +_weaponInvLock src/Dodge/Data/Item/Use.hs 85;" f +_weaponInvLock src/Dodge/Data/Item/Use.hs 102;" f +_weaponRepeat src/Dodge/Data/Item/Use.hs 86;" f +_weaponRepeat src/Dodge/Data/Item/Use.hs 103;" f _windowPosX src/Dodge/Data/Config.hs 53;" f _windowPosY src/Dodge/Data/Config.hs 54;" f _windowShader src/Data/Preload/Render.hs 19;" f @@ -3283,9 +3281,9 @@ _wpMaxCharge src/Dodge/Data/Item/Use/Consumption.hs 34;" f _wsBlock src/Dodge/Data/Wall.hs 52;" f _wsDoor src/Dodge/Data/Wall.hs 50;" f _wsMachine src/Dodge/Data/Wall.hs 51;" f -_xNum src/Dodge/Data/Item/Combine.hs 125;" f -_xNum src/Dodge/Data/Item/Combine.hs 135;" f -_xNum src/Dodge/Data/Item/Combine.hs 157;" f +_xNum src/Dodge/Data/Item/Combine.hs 117;" f +_xNum src/Dodge/Data/Item/Combine.hs 127;" f +_xNum src/Dodge/Data/Item/Combine.hs 149;" f aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 21;" f @@ -3297,7 +3295,7 @@ aSound src/Dodge/SoundLogic.hs 68;" f aStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 41;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f accessTerminal src/Dodge/WorldEffect.hs 49;" f -activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 106;" f +activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 77;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 24;" f addArmour src/Dodge/Creature.hs 83;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f @@ -3341,7 +3339,7 @@ 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 199;" f -aimTurn src/Dodge/Creature/YourControl.hs 138;" f +aimTurn src/Dodge/Creature/YourControl.hs 145;" 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 @@ -3371,7 +3369,7 @@ applyCME src/Dodge/HeldUse.hs 145;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f -applyGravityPU src/Dodge/Projectile/Update.hs 50;" f +applyGravityPU src/Dodge/Projectile/Update.hs 49;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f applyInvLock src/Dodge/HeldUse.hs 160;" f @@ -3616,7 +3614,7 @@ cleatSide src/Dodge/Cleat.hs 27;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f clickGetCreature src/Dodge/Debug.hs 107;" f clipV src/Geometry/Vector.hs 47;" f -clipZoom src/Dodge/Update/Camera.hs 184;" f +clipZoom src/Dodge/Update/Camera.hs 185;" f clockCycle src/Dodge/Clock.hs 9;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 72;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 57;" f @@ -3834,7 +3832,7 @@ debugMenuOptions src/Dodge/Menu.hs 119;" f debugOn src/Dodge/Data/Config.hs 151;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f -decTimMvVel src/Dodge/Projectile/Update.hs 185;" f +decTimMvVel src/Dodge/Projectile/Update.hs 182;" f decodedtmap src/Dodge/Terminal.hs 205;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f @@ -3937,7 +3935,7 @@ destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 21;" f destroyMount src/Dodge/Block.hs 104;" f destroyMounts src/Dodge/Block.hs 101;" f -destroyProjectile src/Dodge/Projectile/Update.hs 113;" f +destroyProjectile src/Dodge/Projectile/Update.hs 112;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 41;" f detectorColor src/Dodge/Item/Draw/SPic.hs 435;" f @@ -4051,11 +4049,11 @@ doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f 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 125;" f +doThrust src/Dodge/Projectile/Update.hs 122;" f doTimeScroll src/Dodge/Update.hs 205;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 102;" f -doWallRotate src/Dodge/Update/Camera.hs 154;" f +doWallRotate src/Dodge/Update/Camera.hs 155;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f @@ -4258,7 +4256,7 @@ expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 195;" f expireAndDamageFL src/Dodge/Flame.hs 47;" f -explodeShell src/Dodge/Projectile/Update.hs 193;" f +explodeShell src/Dodge/Projectile/Update.hs 190;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 410;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f @@ -4274,14 +4272,14 @@ fadeTLS src/Dodge/LightSource/Update.hs 14;" f fallSmallBounce src/Dodge/Prop/Moving.hs 28;" f fallSmallBounce' src/Dodge/Prop/Moving.hs 33;" f fallSmallBounceDamage src/Dodge/Prop/Moving.hs 11;" f -farWallDistDirection src/Dodge/Update/Camera.hs 195;" f +farWallDistDirection src/Dodge/Update/Camera.hs 196;" f fdiv src/ShortShow.hs 27;" f feet src/Dodge/Creature/Picture.hs 53;" f ffoldM src/Framebuffer/Update.hs 79;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 197;" f findBlips src/Dodge/RadarSweep.hs 44;" f -findBoundDists src/Dodge/Update/Camera.hs 204;" f +findBoundDists src/Dodge/Update/Camera.hs 205;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findIndex src/IntMapHelp.hs 85;" f @@ -4415,7 +4413,7 @@ getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f -gimbal src/Dodge/Item/Scope.hs 83;" f +gimbal src/Dodge/Item/Scope.hs 84;" f girder src/Dodge/Room/Foreground.hs 211;" f girderV src/Dodge/Room/Foreground.hs 182;" f girderV' src/Dodge/Room/Foreground.hs 157;" f @@ -4459,14 +4457,14 @@ gut3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 348;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 508;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 476;" f -gyroscope src/Dodge/Item/Scope.hs 86;" f +gyroscope src/Dodge/Item/Scope.hs 87;" f 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 57;" f handleEvent src/Dodge/Event.hs 27;" f -handleHotkeys src/Dodge/Creature/YourControl.hs 35;" f +handleHotkeys src/Dodge/Creature/YourControl.hs 36;" 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 @@ -4514,13 +4512,13 @@ holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f homingModule src/Dodge/Item/Scope.hs 40;" 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 42;" f humanoidAIList src/Dodge/Humanoid.hs 181;" f iShape src/Dodge/Placement/Instance/LightSource.hs 73;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f -ifConfigWallRotate src/Dodge/Update/Camera.hs 137;" f +ifConfigWallRotate src/Dodge/Update/Camera.hs 138;" f ildtPropagate src/Dodge/DoubleTree.hs 57;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f inLink src/Dodge/RoomLink.hs 113;" f @@ -4673,7 +4671,7 @@ itmUsageInfo src/Dodge/Item/Info.hs 186;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f joinItemsInList src/Dodge/Item/Grammar.hs 246;" f -joystick src/Dodge/Item/Scope.hs 79;" f +joystick src/Dodge/Item/Scope.hs 80;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f @@ -4968,7 +4966,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 148;" f +mouseActionsCr src/Dodge/Creature/YourControl.hs 155;" 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 @@ -5142,7 +5140,7 @@ pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 42;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 12;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 170;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 167;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f @@ -5269,7 +5267,7 @@ 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 179;" f -pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 158;" f +pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 165;" f prettyDT src/Dodge/DoubleTree.hs 179;" f prettyLDT src/Dodge/DoubleTree.hs 183;" f prettyShort src/AesonHelp.hs 11;" f @@ -5406,7 +5404,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteDetonator src/Dodge/Item/Scope.hs 74;" f +remoteDetonator src/Dodge/Item/Scope.hs 75;" f remoteScreen src/Dodge/Item/Scope.hs 70;" f removeAmmoFromMag src/Dodge/HeldUse.hs 423;" f removeDot src/ShortShow.hs 30;" f @@ -5491,14 +5489,14 @@ rotate3 src/Geometry/Vector3D.hs 48;" f rotate3x src/Geometry/Vector3D.hs 60;" f rotate3y src/Geometry/Vector3D.hs 66;" f rotate3z src/Geometry/Vector3D.hs 54;" f -rotateCamera src/Dodge/Update/Camera.hs 165;" f +rotateCamera src/Dodge/Update/Camera.hs 166;" f rotateProp src/Dodge/Prop/Update.hs 49;" f rotateSH src/Shape.hs 256;" f rotateSHq src/Shape.hs 165;" f rotateSHx src/Shape.hs 264;" f rotateSP src/ShapePicture.hs 57;" f rotateTo src/Polyhedra/Geodesic.hs 64;" f -rotateToOverlappingWall src/Dodge/Update/Camera.hs 143;" f +rotateToOverlappingWall src/Dodge/Update/Camera.hs 144;" f rotateToZ src/Quaternion.hs 34;" f rotateV src/Geometry/Vector.hs 105;" f rotateVAround src/Geometry/Vector.hs 112;" f @@ -5540,7 +5538,7 @@ scaleMat src/MatrixHelper.hs 59;" f scaleMatrix src/MatrixHelper.hs 56;" f scaleSH src/Shape.hs 268;" 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 116;" f screenBox src/Dodge/Base/Window.hs 53;" f @@ -5626,7 +5624,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 74;" f setTile src/Dodge/Layout.hs 68;" f setTiles src/Dodge/Layout.hs 65;" f setToggle src/Dodge/Prop/Update.hs 46;" f -setViewDistance src/Dodge/Update/Camera.hs 190;" f +setViewDistance src/Dodge/Update/Camera.hs 191;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 61;" f setViewport src/Dodge/Render.hs 388;" f setVol src/Dodge/Config/Update.hs 30;" f @@ -5657,7 +5655,7 @@ shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 285;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f -shellCollisionCheck src/Dodge/Projectile/Update.hs 79;" f +shellCollisionCheck src/Dodge/Projectile/Update.hs 78;" f shellMag src/Dodge/Item/Ammo.hs 61;" f shellModule src/Dodge/Item/Scope.hs 56;" f shellShape src/Dodge/Projectile/Draw.hs 34;" f @@ -5707,9 +5705,9 @@ showAttachItem src/Dodge/Item/Display.hs 70;" f showEquipItem src/Dodge/Item/Display.hs 85;" f showInt src/Dodge/Item/Info.hs 30;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f -showManObj src/Dodge/TestString.hs 79;" f +showManObj src/Dodge/TestString.hs 76;" f showTerminalError src/Dodge/Debug/Terminal.hs 76;" f -showTimeFlow src/Dodge/TestString.hs 128;" f +showTimeFlow src/Dodge/TestString.hs 125;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 49;" f @@ -5747,7 +5745,7 @@ smallPillar src/Dodge/Room/Pillar.hs 32;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f smg src/Dodge/Item/Held/Stick.hs 72;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f -smokeReducer src/Dodge/Item/Scope.hs 92;" f +smokeReducer src/Dodge/Item/Scope.hs 93;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5964,7 +5962,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 114;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 85;" f toggleJust src/MaybeHelp.hs 41;" f toggleMap src/Dodge/Update/Input/InGame.hs 556;" f toggleTweakInv src/Dodge/Update/Input/InGame.hs 569;" f @@ -5975,7 +5973,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 332;" f topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 75;" f +topTestPart src/Dodge/TestString.hs 72;" f torch src/Dodge/Item/Held/Utility.hs 33;" f torchShape src/Dodge/Item/Draw/SPic.hs 254;" f torqueCr src/Dodge/WorldEffect.hs 64;" f @@ -6048,8 +6046,8 @@ tryPutFloorItemIDInInv src/Dodge/Inventory/Add.hs 26;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 42;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f -tryShellBounce src/Dodge/Projectile/Update.hs 99;" f -trySpinByCID src/Dodge/Projectile/Update.hs 152;" f +tryShellBounce src/Dodge/Projectile/Update.hs 98;" f +trySpinByCID src/Dodge/Projectile/Update.hs 149;" f trySynthBullet src/Dodge/Creature/State.hs 201;" f tryUseParent src/Dodge/Creature/State.hs 194;" f turnTo src/Dodge/Movement/Turn.hs 4;" f @@ -6068,7 +6066,7 @@ twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 430;" f ubyteSize src/Shader/Parameters.hs 13;" f uncurryV src/Geometry/Data.hs 46;" f -underBarrelSlot src/Dodge/Item/Scope.hs 89;" f +underBarrelSlot src/Dodge/Item/Scope.hs 90;" f unfoldrMID src/MonadHelp.hs 33;" f unitVectorAtAngle src/Geometry/Vector.hs 100;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f @@ -6084,7 +6082,7 @@ unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 133;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f -upProjectile src/Dodge/Projectile/Update.hs 33;" f +upProjectile src/Dodge/Projectile/Update.hs 32;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 91;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f @@ -6092,7 +6090,7 @@ updateAttachedItems src/Dodge/Creature/State.hs 263;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 464;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f -updateBounds src/Dodge/Update/Camera.hs 214;" f +updateBounds src/Dodge/Update/Camera.hs 215;" f updateBulVel src/Dodge/Bullet.hs 61;" f updateBullet src/Dodge/Bullet.hs 22;" f updateBullets src/Dodge/Update.hs 545;" f @@ -6156,7 +6154,7 @@ updatePosEvents src/Dodge/Update.hs 573;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 365;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 368;" f -updateProjectile src/Dodge/Projectile/Update.hs 25;" f +updateProjectile src/Dodge/Projectile/Update.hs 24;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 22;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f @@ -6224,12 +6222,12 @@ useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 34;" f useGasParams src/Dodge/HeldUse.hs 532;" f -useHotkey src/Dodge/Creature/YourControl.hs 51;" f +useHotkey src/Dodge/Creature/YourControl.hs 58;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 22;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 29;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f useLoadedAmmo src/Dodge/HeldUse.hs 308;" f -useLocation src/Dodge/Creature/Impulse/UseItem.hs 57;" f +useLocation src/Dodge/Creature/Impulse/UseItem.hs 59;" f useMagShield src/Dodge/Euse.hs 46;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 17;" f @@ -6268,7 +6266,7 @@ verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f viewBoundaries src/Dodge/Debug/Picture.hs 298;" f viewClipBounds src/Dodge/Debug/Picture.hs 307;" f -viewDistanceFromItems src/Dodge/Update/Camera.hs 134;" f +viewDistanceFromItems src/Dodge/Update/Camera.hs 135;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 144;" f violet src/Color.hs 21;" f visibleWalls src/Dodge/Base/Collide.hs 123;" f @@ -6286,12 +6284,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 100;" f +wasdAim src/Dodge/Creature/YourControl.hs 107;" f wasdDir src/Dodge/WASD.hs 17;" f wasdM src/Dodge/WASD.hs 9;" f -wasdMovement src/Dodge/Creature/YourControl.hs 126;" f -wasdTwist src/Dodge/Creature/YourControl.hs 108;" f -wasdWithAiming src/Dodge/Creature/YourControl.hs 90;" f +wasdMovement src/Dodge/Creature/YourControl.hs 133;" f +wasdTwist src/Dodge/Creature/YourControl.hs 115;" f +wasdWithAiming src/Dodge/Creature/YourControl.hs 97;" 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 @@ -6353,7 +6351,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 22;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 129;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 132;" f yourInfo src/Dodge/Creature/Info.hs 8;" f @@ -6392,7 +6390,7 @@ zoneWall src/Dodge/Zoning/Wall.hs 65;" f zonesAroundPoint src/Dodge/Zoning/Base.hs 89;" f zonesExtract src/Dodge/Zoning/Base.hs 54;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 69;" f -zoomFromItem src/Dodge/Update/Camera.hs 180;" f +zoomFromItem src/Dodge/Update/Camera.hs 181;" f zoomInLongGun src/Dodge/Update/Scroll.hs 104;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 112;" f zoomScope src/Dodge/Item/Scope.hs 25;" f