diff --git a/src/Dodge/Block/Debris.hs b/src/Dodge/Block/Debris.hs index 18d9eedba..4d72b736f 100644 --- a/src/Dodge/Block/Debris.hs +++ b/src/Dodge/Block/Debris.hs @@ -83,7 +83,6 @@ makeDebrisDirectedZ arcrad dir z dt bm p w = f = do v <- rotateV (dir - arcrad / 2) <$> randInArcStrip 1 2 arcrad spinspeed <- randomR (-0.2, -0.1) & state - -- basedebris <- baseDebris bm return $ DebrisChunk { _dbPos = p `v2z` z diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index 4beb5f76c..35ab7149a 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -18,7 +18,6 @@ import Dodge.SoundLogic import Geometry import LensHelp import Linear -import NewInt import System.Random -- note SwitchToItem doesn't necessarily update the root item correctly @@ -39,7 +38,7 @@ followImpulse cid w = \case TurnTo p -> crup $ creatureTurnTo p ChangePosture post -> crup $ crStance . posture .~ post UseItem -> undefined - SwitchToItem i -> crup $ crManipulation . manObject .~ SelectedItem (NInt i) (NInt i) mempty +-- SwitchToItem i -> crup $ crManipulation . manObject .~ SelectedItem (NInt i) (NInt i) mempty Melee cid' -> hitCr cid' $ crup diff --git a/src/Dodge/Creature/Test.hs b/src/Dodge/Creature/Test.hs index 8b582e64d..eb829b7d5 100644 --- a/src/Dodge/Creature/Test.hs +++ b/src/Dodge/Creature/Test.hs @@ -92,7 +92,8 @@ crAwayFromPost cr = case find sentinelGoal . _apGoal $ _crActionPlan cr of sentinelGoal _ = False crInAimStance :: AimStance -> Creature -> Bool -crInAimStance as cr = cr ^? crStance . posture . aimStance == Just as +crInAimStance as cr = cr ^? crStance . posture == Just Aiming + && cr ^? crManipulation . manObject . imAimStance == Just as oneH :: Creature -> Bool oneH = crInAimStance OneHand diff --git a/src/Dodge/Creature/Volition.hs b/src/Dodge/Creature/Volition.hs index 9b0883526..95dafd1f0 100644 --- a/src/Dodge/Creature/Volition.hs +++ b/src/Dodge/Creature/Volition.hs @@ -6,7 +6,6 @@ module Dodge.Creature.Volition ( shootFirstMiss, ) where -import Dodge.Data.AimStance import Dodge.Data.Creature import Dodge.Data.CreatureEffect import Dodge.SoundLogic.LoadSound @@ -14,7 +13,7 @@ import Geometry holsterWeapon, drawWeapon :: Action holsterWeapon = DoImpulses [ChangePosture AtEase, MakeSound whiteNoiseFadeOutS] -drawWeapon = DoImpulses [ChangePosture $ Aiming OneHand, MakeSound whiteNoiseFadeInS] +drawWeapon = DoImpulses [ChangePosture $ Aiming, MakeSound whiteNoiseFadeInS] shootTillEmpty :: Action --shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem]) diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index f4c2b9b47..bce182ee1 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -2,9 +2,7 @@ module Dodge.Creature.YourControl (yourControl) where -import Linear import Control.Monad -import qualified Data.IntMap.Strict as IM import qualified Data.Map.Strict as M import Data.Maybe import Dodge.AssignHotkey @@ -16,11 +14,11 @@ import Dodge.Data.Equipment.Misc import Dodge.Data.World import Dodge.InputFocus import Dodge.Inventory -import Dodge.Item.AimStance import Dodge.SelectedClose import Dodge.WASD import Geometry import LensHelp +import Linear import NewInt import qualified SDL @@ -28,51 +26,37 @@ import qualified SDL yourControl :: Creature -> World -> World yourControl _ w | inTextInputFocus w = w - | Just x <- w ^? hud . subInventory - , f x = + | NoSubInventory <- w ^. hud . subInventory = w - & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w - & tryClickUse pkeys + & cWorld + . lWorld + . creatures + . ix 0 + %~ wasdWithAiming w + & tryClickUse (w ^. input . mouseButtons) & handleHotkeys | otherwise = w & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w - where - f = \case - NoSubInventory -> True - ExamineInventory -> True - _ -> False - pkeys = w ^. input . mouseButtons -- the following only works because modifier keys are ordered after scancode "hotkeys" handleHotkeys :: World -> World handleHotkeys w | ispressed SDL.ScancodeLShift || ispressed SDL.ScancodeRShift - , (hk:_) <- mapMaybe scancodeToHotkey . M.keys $ pkeys - , Just invid <- lw ^? creatures . ix 0 . crManipulation . manObject . imSelectedItem - , Just itid <- lw ^? creatures . ix 0 . crInv . ix invid = + , (hk : _) <- mapMaybe scancodeToHotkey . M.keys $ pkeys + , Just invid <- lw ^? creatures . ix 0 . crManipulation . manObject . imSelectedItem + , Just itid <- lw ^? creatures . ix 0 . crInv . ix invid = w & cWorld . lWorld %~ assignHotkey (NInt itid) hk | ispressed SDL.ScancodeLCtrl || ispressed SDL.ScancodeRCtrl - , (hk:_) <- mapMaybe scancodeToHotkey . M.keys $ pkeys - , Just itid <- lw ^? hotkeys . ix hk . unNInt - , Just invid <- lw ^? items . ix itid . itLocation . ilInvID = + , (hk : _) <- mapMaybe scancodeToHotkey . M.keys $ pkeys + , Just itid <- lw ^? hotkeys . ix hk . unNInt + , Just invid <- lw ^? items . ix itid . itLocation . ilInvID = w & invSetSelectionPos 0 (_unNInt invid) - | otherwise = - M.foldl' - useHotkey - w - (M.intersectionWith (,) thehotkeys (w ^. input . pressedKeys)) + | otherwise = M.foldl' useHotkey w pressedhotkeys where pkeys = w ^. input . pressedKeys ispressed k = k `M.member` _pressedKeys (_input w) thehotkeys = M.mapKeys hotkeyToScancode $ w ^. cWorld . lWorld . hotkeys lw = w ^. cWorld . lWorld - ---modifierKeys :: S.Set SDL.Scancode ---modifierKeys = S.fromList --- [ SDL.ScancodeLShift --- , SDL.ScancodeRShift --- , SDL.ScancodeRCtrl --- , SDL.ScancodeLCtrl --- ] + pressedhotkeys = M.intersectionWith (,) thehotkeys (w ^. input . pressedKeys) useHotkey :: World -> (NewInt ItmInt, Int) -> World useHotkey w (NInt itid, pt) = fromMaybe w $ do @@ -132,36 +116,35 @@ wasdWithAiming w cr = wasdAim inp w $ wasdMovement (w ^. cWorld . lWorld) inp ca wasdAim :: Input -> World -> Creature -> Creature wasdAim inp w cr - | Just 0 <- inp ^? mouseButtons . ix SDL.ButtonRight - , Nothing <- inp ^? mouseButtons . ix SDL.ButtonLeft = - setAimPosture (w ^. cWorld . lWorld . items) cr + -- | Just 0 <- inp ^? mouseButtons . ix SDL.ButtonRight + -- , Nothing <- inp ^? mouseButtons . ix SDL.ButtonLeft = + -- setAimPosture cr + | SDL.ButtonRight `M.member` _mouseButtons inp + , AtEase <- cr ^. crStance . posture = + setAimPosture cr | SDL.ButtonRight `M.member` _mouseButtons inp = aimTurn (w ^. cWorld . lWorld) mousedir cr - | Aiming {} <- cr ^. crStance . posture = removeAimPosture cr + | Aiming{} <- cr ^. crStance . posture = removeAimPosture cr | otherwise = creatureTurnTowardDir (_crMvAim cr) 0.2 cr where mousedir = argV $ w ^. cWorld . lWorld . lAimPos - (cr ^. crPos . _xy) -setAimPosture :: IM.IntMap Item -> Creature -> Creature -setAimPosture m cr = fromMaybe cr $ do - invid <- cr ^? crManipulation . manObject . imRootSelectedItem - itid <- cr ^? crInv . ix invid - as <- fmap itemBaseStance $ m ^? ix itid - return $ cr - & crStance . posture .~ Aiming as - & doAimTwist as (- twoHandTwistAmount) +setAimPosture :: Creature -> Creature +setAimPosture cr = + cr + & crStance . posture .~ Aiming + & doAimTwist (cr ^? crManipulation . manObject . imAimStance) (-twoHandTwistAmount) -doAimTwist :: AimStance -> Float -> Creature -> Creature +doAimTwist :: Maybe AimStance -> Float -> Creature -> Creature doAimTwist as x - | as == TwoHandOver || as == TwoHandUnder = crDir +~ x + | as == Just TwoHandOver || as == Just TwoHandUnder = crDir +~ x | otherwise = id removeAimPosture :: Creature -> Creature -removeAimPosture cr = fromMaybe cr $ do - as <- cr ^? crStance . posture . aimStance - return $ cr - & crStance . posture .~ AtEase - & doAimTwist as twoHandTwistAmount +removeAimPosture cr = + cr + & crStance . posture .~ AtEase + & doAimTwist (cr ^? crManipulation . manObject . imAimStance) twoHandTwistAmount twoHandTwistAmount :: Float twoHandTwistAmount = 1.6 * pi @@ -239,10 +222,13 @@ tryClickUse pkeys w = fromMaybe w $ do rtime <- pkeys ^? ix SDL.ButtonRight guard $ ltime <= rtime case w - ^? cWorld . lWorld . creatures . ix 0 - . crManipulation - . manObject - . imSelectedItem - . unNInt of + ^? cWorld + . lWorld + . creatures + . ix 0 + . crManipulation + . manObject + . imSelectedItem + . unNInt of Just invid -> useItem invid ltime w Nothing -> interactWithCloseObj <$> getSelectedCloseObj w ?? w diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index 4c771d5ff..9cb8bdb44 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -34,7 +34,7 @@ data Impulse | MvForward | TurnTo Point2 | UseItem - | SwitchToItem Int +-- | SwitchToItem Int | DropItem | Bark SoundID -- placeholder for various communication types | Melee Int diff --git a/src/Dodge/Data/Creature/Stance.hs b/src/Dodge/Data/Creature/Stance.hs index d1bb643be..52f36be46 100644 --- a/src/Dodge/Data/Creature/Stance.hs +++ b/src/Dodge/Data/Creature/Stance.hs @@ -30,9 +30,7 @@ data Carriage data FootForward = LeftForward | RightForward deriving (Eq, Ord, Show, Read) --Generic, Flat) -data Posture - = Aiming {_aimStance :: AimStance} - | AtEase +data Posture = Aiming | AtEase deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Stance diff --git a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs index 15d36f190..09563104a 100644 --- a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs +++ b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs @@ -3,6 +3,7 @@ module Dodge.Data.Item.Use.Consumption.LoadAction where +import Dodge.Data.AimStance import Dodge.Data.Item.Location import NewInt import qualified Data.IntSet as IS @@ -21,6 +22,7 @@ data ManipulatedObject | SelectedItem { _imSelectedItem :: NewInt InvInt , _imRootSelectedItem :: NewInt InvInt + , _imAimStance :: AimStance , _imAttachedItems :: IS.IntSet -- this should probably be NewIntSet InvInt also } | SelNothing diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index 8259a5778..a5c3b0469 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -4,6 +4,7 @@ module Dodge.Inventory.Location ( setInvPosFromSS, ) where +import Dodge.Item.AimStance import Control.Lens import Data.Foldable --import Data.IntMap.Merge.Strict @@ -104,10 +105,13 @@ setInvPosFromSS w = w ( fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ you w ^. crInv ) + dt <- invIMDT ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> you w ^. crInv) ^? ix rootid + -- there is redundancy above return SelectedItem { _imSelectedItem = NInt j , _imRootSelectedItem = NInt rootid + , _imAimStance = itemAimStance ((\(x,y,_) -> (x,y)) <$> dt) , _imAttachedItems = aset } 1 -> Just SelNothing diff --git a/src/Dodge/Item/AimStance.hs b/src/Dodge/Item/AimStance.hs index d3267c5af..4db7629ab 100644 --- a/src/Dodge/Item/AimStance.hs +++ b/src/Dodge/Item/AimStance.hs @@ -1,5 +1,6 @@ {-# LANGUAGE LambdaCase #-} module Dodge.Item.AimStance (itemAimStance,itemBaseStance) where +--module Dodge.Item.AimStance (itemAimStance) where import Dodge.Data.Item import Dodge.Data.ComposedItem diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 9030fa295..291b5a3ee 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -239,7 +239,7 @@ floorItemPickupInfo n itm -- it is probably desirable for this to crash hard for now yourAugmentedItem :: (Item -> a) -> a -> (Either Item Button -> a) -> World -> a yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of - Just (SelectedItem i _ _) -> f $ yourInv w ^?! ix i + Just (SelectedItem i _ _ _) -> f $ yourInv w ^?! ix i Just (SelCloseItem i) -> fromMaybe x $ do j <- w ^? hud . closeItems . ix i . unNInt flit <- w ^? cWorld . lWorld . items . ix j diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index ea0c112c5..414e2fd47 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -74,7 +74,8 @@ topTestPart u = [maybe "" showManObj $ u ^? uvWorld . cWorld . lWorld . creature showManObj :: ManipulatedObject -> String showManObj SortInventory = "SortInventory" -showManObj (SelectedItem x y z) = "SelItem: "++ show x++ " Root: "++show y++" Attached: "++show z +showManObj (SelectedItem x y as z) = "SelItem: "++ show x++ " Root: "++show y++" Attached: "++show z + ++ " AimStance: " ++ show as showManObj SelNothing = "SelNothing" showManObj SortCloseItem = "SortCloseItem" showManObj (SelCloseItem x) = "CloseItem " ++ show x diff --git a/tags b/tags index 75350ad6b..26f4388bc 100644 --- a/tags +++ b/tags @@ -42,7 +42,7 @@ ActionUpdate src/Dodge/Creature/Action.hs 49;" t AddGoal src/Dodge/Data/ActionPlan.hs 44;" C AimAt src/Dodge/Data/ActionPlan.hs 66;" C AimStance src/Dodge/Data/AimStance.hs 10;" t -Aiming src/Dodge/Data/Creature/Stance.hs 34;" C +Aiming src/Dodge/Data/Creature/Stance.hs 33;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C AllRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C @@ -66,7 +66,7 @@ Arcing src/Dodge/Data/Item/Params.hs 15;" C ArmourySS src/Dodge/Data/Scenario.hs 112;" C Asleep src/Dodge/Data/Creature/Perception.hs 52;" C AsteroidStrike src/Dodge/Data/Scenario.hs 33;" C -AtEase src/Dodge/Data/Creature/Stance.hs 35;" C +AtEase src/Dodge/Data/Creature/Stance.hs 33;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C AttachParams src/Dodge/Data/Item/Use.hs 43;" t AttachType src/Dodge/Data/Item/Combine.hs 91;" t @@ -144,7 +144,7 @@ BoundCurs src/Dodge/Data/SelectionList.hs 21;" C Bound_box_screen src/Dodge/Data/Config.hs 95;" C Bounds src/Dodge/Data/Bounds.hs 10;" t BrigSS src/Dodge/Data/Scenario.hs 102;" C -Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C +Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C BulBall src/Dodge/Data/Bullet.hs 33;" C BulFlak src/Dodge/Data/Bullet.hs 35;" C BulFrag src/Dodge/Data/Bullet.hs 36;" C @@ -726,9 +726,9 @@ MakeSound src/Dodge/Data/ActionPlan.hs 42;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 33;" C MakeTempLight src/Dodge/Data/WorldEffect.hs 36;" C MakeTempLightFade src/Dodge/Data/WorldEffect.hs 37;" C -ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 19;" t -Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t -Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C +ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t +Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" t +Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C MapperInventory src/Dodge/Data/HUD.hs 17;" C MapperSF src/Dodge/Data/ComposedItem.hs 39;" C Material src/Dodge/Data/Material.hs 10;" t @@ -1172,12 +1172,12 @@ SectionCursor src/Dodge/Data/SelectionList.hs 24;" t SeeAbove src/Dodge/Data/Wall.hs 32;" C SeeThrough src/Dodge/Data/Wall.hs 31;" C Sel src/Dodge/Data/HUD.hs 39;" C -SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" C -SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C +SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 32;" C +SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" C SelItem src/Dodge/Data/SelectionList.hs 44;" C -SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 26;" C +SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" C SelSection src/Dodge/Data/SelectionList.hs 30;" t -SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" C +SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" C Selection src/Dodge/Data/HUD.hs 39;" t SelectionItem src/Dodge/Data/SelectionList.hs 44;" t SelectionWidth src/Dodge/Data/SelectionList.hs 42;" t @@ -1235,9 +1235,9 @@ Smoke src/Dodge/Data/Cloud.hs 21;" C SmokeReducerSF src/Dodge/Data/ComposedItem.hs 28;" C SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C -SortCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C -SortCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 27;" C -SortInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" C +SortCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C +SortCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C +SortInventory src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" C Sound src/Sound/Data.hs 43;" t SoundFilter src/Dodge/Data/WorldEffect.hs 21;" t SoundID src/Sound/Data.hs 30;" t @@ -1284,7 +1284,6 @@ SwapEquipment src/Dodge/Data/RightButtonOptions.hs 24;" C Swarm src/Dodge/Data/Creature/State.hs 25;" C SwarmAI src/Dodge/Data/Creature/Misc.hs 44;" C SwarmCrit src/Dodge/Data/Creature/Misc.hs 69;" C -SwitchToItem src/Dodge/Data/ActionPlan.hs 37;" C TAPE src/Dodge/Data/Item/Combine.hs 55;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C TCBase src/Dodge/Data/Terminal.hs 49;" C @@ -1521,7 +1520,6 @@ YELLOW src/Color/Data.hs 15;" C ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 92;" C ZombieFaction src/Dodge/Data/Creature/State.hs 14;" C __Just' src/MaybeHelp.hs 11;" f -_aimStance src/Dodge/Data/Creature/Stance.hs 34;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 19;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 25;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 30;" f @@ -1902,10 +1900,11 @@ _ilIsAttached src/Dodge/Data/Item/Location.hs 34;" f _ilIsRoot src/Dodge/Data/Item/Location.hs 32;" f _ilIsSelected src/Dodge/Data/Item/Location.hs 33;" f _ilTuID src/Dodge/Data/Item/Location.hs 37;" f -_imAttachedItems src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" f +_imAimStance src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 25;" f +_imAttachedItems src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 26;" f _imHotkeys src/Dodge/Data/LWorld.hs 146;" f -_imRootSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" f -_imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" f +_imRootSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" f +_imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" f _immediateEffect src/Loop/Data.hs 9;" f _immediateUpdate src/Loop/Data.hs 12;" f _impulseUseTarget src/Dodge/Data/ActionPlan.hs 45;" f @@ -1918,8 +1917,8 @@ _incNodeZoning src/Dodge/Data/World.hs 55;" f _input src/Dodge/Data/World.hs 43;" f _inputMemory src/Dodge/Data/Input.hs 49;" f _isWarming src/Dodge/Data/Item/Params.hs 21;" f -_ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" f -_ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 28;" f +_ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 32;" f +_ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 30;" f _itConsumables src/Dodge/Data/Item.hs 28;" f _itID src/Dodge/Data/Item.hs 30;" f _itLocation src/Dodge/Data/Item.hs 31;" f @@ -1987,7 +1986,7 @@ _machines src/Dodge/Data/LWorld.hs 125;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 128;" f _mainAction src/Dodge/Data/ActionPlan.hs 123;" f -_manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" f +_manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" f _mapInvItmID src/Dodge/Data/HUD.hs 20;" f _mapInvOffset src/Dodge/Data/HUD.hs 18;" f _mapInvZoom src/Dodge/Data/HUD.hs 19;" f @@ -2578,7 +2577,7 @@ advanceScrollAmount src/Dodge/Update.hs 479;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f -aimTurn src/Dodge/Creature/YourControl.hs 181;" f +aimTurn src/Dodge/Creature/YourControl.hs 169;" f airlock src/Dodge/Room/Airlock.hs 28;" f airlock0 src/Dodge/Room/Airlock.hs 78;" f airlock90 src/Dodge/Room/Airlock.hs 201;" f @@ -2713,7 +2712,7 @@ bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 227;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f bgunSound src/Dodge/HeldUse.hs 540;" f bingate src/Dodge/Item/Scope.hs 115;" f -blColor src/Dodge/Block/Debris.hs 53;" f +blColor src/Dodge/Block/Debris.hs 54;" f black src/Color.hs 54;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 15;" f blinkActionFail src/Dodge/Creature/Action/Blink.hs 88;" f @@ -2975,7 +2974,7 @@ crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crInAimStance src/Dodge/Creature/Test.hs 94;" f crIntelligence src/Dodge/Creature/Statistics.hs 37;" f crIsAiming src/Dodge/Creature/Test.hs 61;" f -crIsArmouredFrom src/Dodge/Creature/Test.hs 109;" f +crIsArmouredFrom src/Dodge/Creature/Test.hs 110;" f crLeftHandWall src/Dodge/Creature/HandPos.hs 91;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f @@ -2986,19 +2985,19 @@ crMvBy src/Dodge/Creature/Impulse/Movement.hs 22;" f crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f -crNearPoint src/Dodge/Creature/Test.hs 132;" f +crNearPoint src/Dodge/Creature/Test.hs 133;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 73;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f -crSetRoots src/Dodge/Inventory/Location.hs 55;" f +crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 965;" f crStratConMatches src/Dodge/Creature/Test.hs 81;" f crStrength src/Dodge/Creature/Statistics.hs 28;" f crUpdate src/Dodge/Creature/Update.hs 70;" f -crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f -crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f +crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f +crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 16;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 25;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 60;" f @@ -3040,7 +3039,7 @@ crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f crsNearRect src/Dodge/Zoning/Creature.hs 40;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f -cubeShape src/Dodge/Block/Debris.hs 133;" f +cubeShape src/Dodge/Block/Debris.hs 156;" f cullPoint src/Dodge/Render/ShapePicture.hs 136;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f @@ -3104,8 +3103,8 @@ deadRot src/Dodge/Creature/Picture.hs 83;" f deadScalp src/Dodge/Creature/Picture.hs 78;" f deadUpperBody src/Dodge/Creature/Picture.hs 104;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f -debrisSPic src/Dodge/Prop/Draw.hs 16;" f -debrisSize src/Dodge/Block/Debris.hs 102;" f +debrisSPic src/Dodge/Prop/Draw.hs 17;" f +debrisSize src/Dodge/Block/Debris.hs 125;" f debugEvent src/Dodge/Debug.hs 43;" f debugEvent' src/Dodge/Debug.hs 49;" f debugEvents src/Dodge/Debug.hs 28;" f @@ -3192,10 +3191,10 @@ destroyDoor src/Dodge/Wall/Damage.hs 146;" f destroyInvItem src/Dodge/Inventory.hs 49;" f destroyItem src/Dodge/Inventory.hs 71;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f -destroyMachine src/Dodge/Machine/Destroy.hs 13;" f +destroyMachine src/Dodge/Machine/Destroy.hs 14;" f destroyMachine' src/Dodge/Wall/Damage.hs 112;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f -destroyMcType src/Dodge/Machine/Destroy.hs 26;" f +destroyMcType src/Dodge/Machine/Destroy.hs 27;" f destroyMount src/Dodge/Wall/Damage.hs 167;" f destroyMounts src/Dodge/Wall/Damage.hs 164;" f destroyProjectile src/Dodge/Projectile/Update.hs 112;" f @@ -3232,7 +3231,7 @@ divideLine src/Geometry.hs 248;" f divideLineExact src/Geometry.hs 276;" f divideLineOddNumPoints src/Geometry.hs 261;" f dmType src/Dodge/Damage.hs 38;" f -doAimTwist src/Dodge/Creature/YourControl.hs 154;" f +doAimTwist src/Dodge/Creature/YourControl.hs 139;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f @@ -3361,7 +3360,7 @@ drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 34;" f drawForceField src/Dodge/Wall/Draw.hs 15;" f drawGapPlus src/Dodge/Render/Picture.hs 278;" f -drawGib src/Dodge/Prop/Draw.hs 27;" f +drawGib src/Dodge/Prop/Draw.hs 30;" f drawHUD src/Dodge/Render/HUD.hs 53;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f drawInspectWall src/Dodge/Debug/Picture.hs 256;" f @@ -3436,7 +3435,7 @@ drawWallSearchRays src/Dodge/Debug/Picture.hs 323;" f drawWallsNearCursor src/Dodge/Debug/Picture.hs 233;" f drawWallsNearSegment src/Dodge/Debug/Picture.hs 130;" f drawWallsNearYou src/Dodge/Debug/Picture.hs 223;" f -drawWeapon src/Dodge/Creature/Volition.hs 15;" f +drawWeapon src/Dodge/Creature/Volition.hs 14;" f drawWlIDs src/Dodge/Debug/Picture.hs 404;" f drawZone src/Dodge/Debug/Picture.hs 152;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f @@ -3584,7 +3583,7 @@ foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f foldMTRS src/Dodge/Room/Tutorial.hs 89;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 111;" f -followImpulse src/Dodge/Creature/Impulse.hs 25;" f +followImpulse src/Dodge/Creature/Impulse.hs 24;" f foot1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 819;" f foot2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 705;" f foot3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 831;" f @@ -3663,7 +3662,7 @@ getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 547;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f -getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f +getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 129;" f @@ -3725,7 +3724,7 @@ handHandleOrient src/Dodge/Item/HeldOffset.hs 74;" f handOrient src/Dodge/Item/HeldOffset.hs 52;" f handWalkingPos src/Dodge/Creature/HandPos.hs 45;" f handleEvent src/Dodge/Event.hs 27;" f -handleHotkeys src/Dodge/Creature/YourControl.hs 46;" f +handleHotkeys src/Dodge/Creature/YourControl.hs 41;" f handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 59;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f @@ -3736,7 +3735,7 @@ handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 19;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f -hasAutoDoorBody src/Dodge/Creature/Test.hs 141;" f +hasAutoDoorBody src/Dodge/Creature/Test.hs 142;" f hasButtonLOS src/Dodge/Base/Collide.hs 304;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f hasLOS src/Dodge/Base/Collide.hs 297;" f @@ -3751,14 +3750,14 @@ healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 109;" f healthTest src/Dodge/Room/LasTurret.hs 129;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f -heldAimStance src/Dodge/Item/AimStance.hs 27;" f +heldAimStance src/Dodge/Item/AimStance.hs 28;" f heldAimZoom src/Dodge/Update/Camera.hs 158;" f heldEffect src/Dodge/HeldUse.hs 64;" f heldEffectMuzzles src/Dodge/HeldUse.hs 135;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 103;" f heldInfo src/Dodge/Item/Info.hs 92;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f -heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f +heldItemBulkiness src/Dodge/Creature/YourControl.hs 182;" f heldItemInvLock src/Dodge/HeldUse.hs 469;" f heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f @@ -3777,11 +3776,11 @@ hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 613;" f hitEffFromBul src/Dodge/Bullet.hs 156;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 753;" f holdForm src/Dodge/Creature/Boid.hs 139;" f -holsterWeapon src/Dodge/Creature/Volition.hs 15;" f +holsterWeapon src/Dodge/Creature/Volition.hs 14;" f homingModule src/Dodge/Item/Scope.hs 50;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f -hotkeyToScancode src/Dodge/Creature/YourControl.hs 82;" f +hotkeyToScancode src/Dodge/Creature/YourControl.hs 66;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f @@ -3876,7 +3875,7 @@ invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f isAmmoIntLink src/Dodge/HeldUse.hs 738;" f -isAnimate src/Dodge/Creature/Test.hs 135;" f +isAnimate src/Dodge/Creature/Test.hs 136;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 66;" f @@ -3911,13 +3910,13 @@ itEffectOnPickup src/Dodge/Item/BackgroundEffect.hs 78;" f itInvHeight src/Dodge/Item/InvSize.hs 11;" f itUseCondition src/Dodge/ItemUseCondition.hs 6;" f itemAboveAttachables src/Dodge/Item/Grammar.hs 37;" f -itemAimStance src/Dodge/Item/AimStance.hs 10;" f +itemAimStance src/Dodge/Item/AimStance.hs 11;" f itemAmmoSlots src/Dodge/Item/AmmoSlots.hs 13;" f itemBaseName src/Dodge/Item/Display.hs 60;" f -itemBaseStance src/Dodge/Item/AimStance.hs 21;" f +itemBaseStance src/Dodge/Item/AimStance.hs 22;" f itemBelowAttachables src/Dodge/Item/Grammar.hs 53;" f itemBlips src/Dodge/RadarSweep.hs 94;" f -itemBulkiness src/Dodge/Creature/YourControl.hs 188;" f +itemBulkiness src/Dodge/Creature/YourControl.hs 176;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemDetectorEffect src/Dodge/HeldUse.hs 811;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f @@ -4105,16 +4104,18 @@ main bench/Bench.hs 15;" f main test/Spec.hs 12;" f makeArc src/Picture/Base.hs 149;" f makeBlip src/Dodge/RadarSweep.hs 70;" f -makeBlockDebris src/Dodge/Block/Debris.hs 56;" f +makeBlockDebris src/Dodge/Block/Debris.hs 57;" f makeBullet src/Dodge/HeldUse.hs 1001;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 124;" f makeColorTermPara src/Dodge/Terminal.hs 121;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f -makeDebris src/Dodge/Block/Debris.hs 68;" f -makeDebrisDirected src/Dodge/Block/Debris.hs 71;" f -makeDoorDebris src/Dodge/Block/Debris.hs 40;" f +makeDebris src/Dodge/Block/Debris.hs 69;" f +makeDebrisDirected src/Dodge/Block/Debris.hs 95;" f +makeDebrisDirectedZ src/Dodge/Block/Debris.hs 75;" f +makeDebrisZ src/Dodge/Block/Debris.hs 72;" f +makeDoorDebris src/Dodge/Block/Debris.hs 41;" f makeDumbSwitch src/Dodge/Room/LongDoor.hs 145;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 69;" f @@ -4125,7 +4126,7 @@ makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFragBullets src/Dodge/Bullet.hs 132;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeIntInterval src/Dodge/Zoning/Base.hs 37;" f -makeMachineDebris src/Dodge/Block/Debris.hs 28;" f +makeMachineDebris src/Dodge/Block/Debris.hs 29;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f makeMuzzleFlare src/Dodge/HeldUse.hs 680;" f makeParagraph src/Justify.hs 6;" f @@ -4175,8 +4176,8 @@ mcColor src/Dodge/Machine/Draw.hs 82;" f mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 116;" f mcDamSensorUpdate src/Dodge/Machine/Update.hs 162;" f mcDamSensorUpdate' src/Dodge/Wall/Damage.hs 58;" f -mcKillBut src/Dodge/Machine/Destroy.hs 42;" f -mcKillTerm src/Dodge/Machine/Destroy.hs 34;" f +mcKillBut src/Dodge/Machine/Destroy.hs 43;" f +mcKillTerm src/Dodge/Machine/Destroy.hs 35;" f mcNoItemsTest src/Dodge/Machine/Update.hs 170;" f mcPlaySound src/Dodge/Machine/Update.hs 136;" f mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 122;" f @@ -4347,7 +4348,7 @@ obstructPathsCrossing src/Dodge/Path.hs 120;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f onEquipWristShield src/Dodge/Euse.hs 89;" f onRemoveWristShield src/Dodge/Euse.hs 79;" f -oneH src/Dodge/Creature/Test.hs 97;" f +oneH src/Dodge/Creature/Test.hs 98;" f openConsole src/Dodge/Update.hs 138;" f optionMenu src/Dodge/Menu.hs 110;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f @@ -4552,7 +4553,7 @@ printRotPoint src/Dodge/Debug/Picture.hs 38;" f prismBox src/Shape.hs 74;" f prismPoly src/Shape.hs 60;" f projV src/Geometry/Vector.hs 179;" f -propSPic src/Dodge/Prop/Draw.hs 23;" f +propSPic src/Dodge/Prop/Draw.hs 26;" f propagateOrientation src/Dodge/Item/Orientation.hs 92;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 52;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 76;" f @@ -4687,7 +4688,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f rememberSounds src/Dodge/Creature/Perception.hs 176;" f remoteDetonator src/Dodge/Item/Scope.hs 152;" f remoteScreen src/Dodge/Item/Scope.hs 146;" f -removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f +removeAimPosture src/Dodge/Creature/YourControl.hs 144;" f removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -4829,7 +4830,7 @@ scaleMat src/MatrixHelper.hs 71;" f scaleMatrix src/MatrixHelper.hs 68;" f scaleSH src/Shape.hs 266;" f scalp src/Dodge/Creature/Picture.hs 92;" f -scancodeToHotkey src/Dodge/Creature/YourControl.hs 102;" f +scancodeToHotkey src/Dodge/Creature/YourControl.hs 86;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f scorchSPic src/Dodge/Creature/Update.hs 126;" f screenBox src/Dodge/Base/Window.hs 54;" f @@ -4881,7 +4882,7 @@ sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f -setAimPosture src/Dodge/Creature/YourControl.hs 145;" f +setAimPosture src/Dodge/Creature/YourControl.hs 129;" f setChannelPos src/Sound.hs 152;" f setClickWorldPos src/Dodge/Update.hs 108;" f setClip src/Dodge/Debug.hs 239;" f @@ -4891,7 +4892,7 @@ setFallback src/Dodge/PlacementSpot.hs 127;" f setInLinks src/Dodge/RoomLink.hs 52;" f setInLinksByType src/Dodge/RoomLink.hs 73;" f setInLinksPD src/Dodge/RoomLink.hs 93;" f -setInvPosFromSS src/Dodge/Inventory/Location.hs 92;" f +setInvPosFromSS src/Dodge/Inventory/Location.hs 93;" f setLayer src/Picture/Base.hs 131;" f setLinkType src/Dodge/RoomLink.hs 79;" f setLinkTypePD src/Dodge/RoomLink.hs 86;" f @@ -4965,14 +4966,14 @@ shineTargetLaser src/Dodge/Creature/State.hs 201;" f shineTorch src/Dodge/Creature/State.hs 237;" f shootBullet src/Dodge/HeldUse.hs 995;" f shootBullets src/Dodge/HeldUse.hs 989;" f -shootFirstMiss src/Dodge/Creature/Volition.hs 34;" f +shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootLaser src/Dodge/HeldUse.hs 868;" f shootPlasmaBall src/Dodge/HeldUse.hs 907;" f shootPulseBall src/Dodge/HeldUse.hs 919;" f shootPulseLaser src/Dodge/HeldUse.hs 894;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f shootTeslaArc src/Dodge/HeldUse.hs 1206;" f -shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f +shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f shootTractorBeam src/Dodge/HeldUse.hs 838;" f shootersRoom src/Dodge/Room/Room.hs 340;" f shootersRoom' src/Dodge/Room/Room.hs 307;" f @@ -4990,7 +4991,7 @@ showInventoryPathing src/Dodge/Item/Display.hs 86;" f showManObj src/Dodge/TestString.hs 75;" f showMuzzlePositions src/Dodge/Debug.hs 292;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 84;" f +showTimeFlow src/Dodge/TestString.hs 85;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5346,12 +5347,12 @@ truncFaces src/Polyhedra/Geodesic.hs 54;" f truncate src/Polyhedra/Geodesic.hs 39;" f trunkDepth src/TreeHelp.hs 162;" f tryAttachItems src/Dodge/Item/Grammar.hs 34;" f -tryClickUse src/Dodge/Creature/YourControl.hs 236;" f +tryClickUse src/Dodge/Creature/YourControl.hs 224;" f tryCombine src/Dodge/Update/Input/InGame.hs 521;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 140;" f tryGetChannel src/Sound.hs 99;" f -tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 22;" f +tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 40;" f tryPickupSelected src/Dodge/Update/Input/InGame.hs 147;" f tryPlay src/Sound.hs 85;" f @@ -5374,10 +5375,10 @@ tutorialMessage1 src/Dodge/Room/Tutorial.hs 609;" f tweenAngles src/Geometry/Vector.hs 192;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f -twists src/Dodge/Creature/Test.hs 103;" f -twoFlat src/Dodge/Creature/Test.hs 100;" f +twists src/Dodge/Creature/Test.hs 104;" f +twoFlat src/Dodge/Creature/Test.hs 101;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 94;" f -twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f +twoHandTwistAmount src/Dodge/Creature/YourControl.hs 154;" f twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f @@ -5496,7 +5497,7 @@ updateRadarSweeps src/Dodge/Update.hs 748;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 188;" f -updateRootItemID src/Dodge/Inventory/Location.hs 41;" f +updateRootItemID src/Dodge/Inventory/Location.hs 42;" f updateScopeZoom src/Dodge/Update/Scroll.hs 77;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f @@ -5546,7 +5547,7 @@ upperPrismPolyTS src/Shape.hs 116;" f upperRounded src/Shape.hs 182;" f useBulletPayload src/Dodge/Bullet.hs 117;" f useGasParams src/Dodge/HeldUse.hs 1111;" f -useHotkey src/Dodge/Creature/YourControl.hs 77;" f +useHotkey src/Dodge/Creature/YourControl.hs 61;" f useInventoryPath src/Dodge/HeldUse.hs 1402;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f @@ -5605,11 +5606,11 @@ wallsToDraw src/Dodge/Render/Walls.hs 18;" f warmupSound src/Dodge/HeldUse.hs 1396;" f warningRooms src/Dodge/Room/Warning.hs 34;" f warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f -wasdAim src/Dodge/Creature/YourControl.hs 133;" f +wasdAim src/Dodge/Creature/YourControl.hs 117;" f wasdDir src/Dodge/WASD.hs 17;" f wasdM src/Dodge/WASD.hs 9;" f -wasdMovement src/Dodge/Creature/YourControl.hs 169;" f -wasdWithAiming src/Dodge/Creature/YourControl.hs 126;" f +wasdMovement src/Dodge/Creature/YourControl.hs 157;" f +wasdWithAiming src/Dodge/Creature/YourControl.hs 110;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f weaponBehindPillar src/Dodge/Room/Room.hs 198;" f @@ -5687,7 +5688,7 @@ yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f youDropItem src/Dodge/Creature/Action.hs 177;" f yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f -yourControl src/Dodge/Creature/YourControl.hs 28;" f +yourControl src/Dodge/Creature/YourControl.hs 26;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 112;" f yourInfo src/Dodge/Creature/Info.hs 10;" f yourInv src/Dodge/Base/You.hs 37;" f