From ab393febcb528d7a0aaa1b32842f94744900973c Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 14 May 2026 11:40:58 +0100 Subject: [PATCH] Work on selections when picking up/droping items --- src/Dodge/Creature/Action.hs | 27 ++++-- src/Dodge/DisplayInventory.hs | 1 + src/Dodge/Inventory/Add.hs | 40 +++++--- src/Dodge/SelectedClose.hs | 6 +- src/Dodge/Update/Input/InGame.hs | 20 ++-- src/IntSetHelp.hs | 16 ++++ tags | 157 ++++++++++++++++--------------- 7 files changed, 155 insertions(+), 112 deletions(-) create mode 100644 src/IntSetHelp.hs diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 90c9e804a..9b6823935 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -10,6 +10,9 @@ module Dodge.Creature.Action ( youDropItem, ) where +import qualified IntSetHelp as IS +import Dodge.DisplayInventory +import Dodge.Data.SelectionList import RandomHelp import Dodge.WorldEvent.ThingsHit import Control.Applicative @@ -174,22 +177,32 @@ performTurnToA cr p -- why not a cid (Int)? dropItem :: Creature -> Int -> World -> World -dropItem cr invid w' = - doanyitemdropeffect +dropItem cr invid w = + itEffectOnDrop itm cr + . maybesetdropped + . (hud . diSections . ix 3 . ssSet %~ IS.map (+ 1)) + . (hud . diSections . ix 0 . ssSet %~ IS.deleteShift invid) . maybeshiftseldown . copyItemToFloor (cr ^. crPos . _xy) itm -- . mayberemoveequip . rmInvItem (_crID cr) (NInt invid) -- it is important -- to do this before copying the item to the floor! . soundStart (CrSound (_crID cr)) (cr ^. crPos . _xy) whiteNoiseFadeOutS Nothing - $ w' + $ w where - doanyitemdropeffect = itEffectOnDrop itm cr itm = fromMaybe (error "dropItem cannot find item") $ do itid <- cr ^? crInv . ix (NInt invid) - w' ^? cWorld . lWorld . items . ix itid - maybeshiftseldown w = fromMaybe w $ do + w ^? cWorld . lWorld . items . ix itid + t = fromMaybe True $ do + s <- w ^? hud . diCloseFilter . _Just + si <- w ^? hud . diSections . ix 0 . ssItems . ix invid + return $ plainRegex s si + maybesetdropped = fromMaybe id $ do + guard $ t && (invid `IS.member` (w ^?! hud . diSections . ix 0 . ssSet)) + return $ hud . diSections . ix 3 . ssSet %~ IS.insert 0 + maybeshiftseldown = fromMaybe id $ do + guard t 3 <- w ^? hud . diSelection . _Just . slSec - return $ w & hud . diSelection . _Just . slInt +~ 1 + return $ hud . diSelection . _Just . slInt +~ 1 -- | Get your creature to drop the item under the cursor. youDropItem :: World -> World diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 4a2947e10..a4c2f7c55 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -8,6 +8,7 @@ module Dodge.DisplayInventory ( updateInventoryPositioning, updateCombinePositioning, toggleCombineInv, + plainRegex, ) where import qualified Data.IntSet as IS diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index e77a4262c..28ce6bad0 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -6,9 +6,9 @@ module Dodge.Inventory.Add ( pickUpItemAt, ) where +import qualified IntSetHelp as IS import Dodge.Data.SelectionList import Linear -import qualified Data.IntSet as IS import Control.Lens import Control.Monad import Data.Maybe @@ -22,8 +22,8 @@ import qualified IntMapHelp as IM import NewInt -- this assumes that this item is currently on the floor -tryPutItemInInv :: Int -> Int -> World -> Maybe (NewInt InvInt, World) -tryPutItemInInv cid itid w = do +tryPutItemInInv :: Maybe Int -> Int -> Int -> World -> Maybe (NewInt InvInt, World) +tryPutItemInInv mcipos cid itid w = do itm <- w ^? cWorld . lWorld . items . ix itid invid <- checkInvSlotsYou itm w let itloc = InInv @@ -42,8 +42,18 @@ tryPutItemInInv cid itid w = do & cWorld . lWorld . items . ix itid . itLocation .~ itloc & cWorld . lWorld . floorItems . at itid .~ Nothing & updateselectionextra invid + & updatecloseitemset + & maybeselect invid & cWorld . highlightItems . at itid ?~ 20 where + maybeselect invid = fromMaybe id $ do + i <- mcipos + is <- w ^? hud . diSections . ix 3 . ssSet + guard $ i `IS.member` is + return $ hud . diSections . ix 0 . ssSet %~ IS.insert (invid ^. unNInt) + updatecloseitemset = fromMaybe id $ do + i <- mcipos + return $ hud . diSections . ix 3 . ssSet %~ IS.deleteShift i updateselectionextra i -- | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i)) | cid == 0 = (hud . diSections . ix 0 . ssSet %~ IS.map (f i)) @@ -53,28 +63,32 @@ tryPutItemInInv cid itid w = do | otherwise = i -- not sure why we have the cid here, this will probably only work for cid == 0 -tryPutItemInInvAt :: Int -> Int -> Int -> World -> Maybe World -tryPutItemInInvAt i cid itid w = do - (j, w') <- tryPutItemInInv cid itid w +tryPutItemInInvAt :: Maybe Int -> Int -> Int -> Int -> World -> Maybe World +tryPutItemInInvAt mcipos i cid itid w = do + (j, w') <- tryPutItemInInv mcipos cid itid w guard (i <= _unNInt j) return $ foldr f w' [i + 1 .. _unNInt j] where f j = swapInvItems (\_ _ -> Just (j -1)) j createItemYou :: Item -> World -> World -createItemYou itm w = maybe w' snd $ tryPutItemInInv 0 itid w' +createItemYou itm w = maybe w' snd $ tryPutItemInInv Nothing 0 itid w' where itid = IM.newKey $ w ^. cWorld . lWorld . items pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos . _xy w' = copyItemToFloor pos (itm & itID .~ NInt itid) w -- the duplication is annoying... -pickUpItem :: Int -> Int -> World -> World -pickUpItem cid itid w = fromMaybe w $ do +pickUpItem :: Int -> (Int,Int) -> World -> World +pickUpItem cid (i,itid) w = fromMaybe w $ do p <- w ^? cWorld . lWorld . floorItems . ix itid . flItPos - soundStart (CrSound cid) p pickUpS Nothing . snd <$> tryPutItemInInv cid itid w + soundStart (CrSound cid) p pickUpS Nothing . snd <$> tryPutItemInInv (Just i) cid itid w -pickUpItemAt :: Int -> Int -> Int -> World -> World -pickUpItemAt invid cid itid w = fromMaybe w $ do +pickUpItemAt :: Int -> Int -> (Int,Int) -> World -> World +pickUpItemAt invid cid (i,itid) w = fromMaybe w $ do p <- w ^? cWorld . lWorld . floorItems . ix itid . flItPos - soundStart (CrSound cid) p pickUpS Nothing <$> tryPutItemInInvAt invid cid itid w + soundStart (CrSound cid) p pickUpS Nothing <$> tryPutItemInInvAt (Just i) invid cid itid w + & _Just . hud . diSections . ix 0 . ssSet %~ IS.map f + where + f j | j >= invid = j +1 + | otherwise = j diff --git a/src/Dodge/SelectedClose.hs b/src/Dodge/SelectedClose.hs index cf3092970..873cbc447 100644 --- a/src/Dodge/SelectedClose.hs +++ b/src/Dodge/SelectedClose.hs @@ -5,10 +5,14 @@ import Dodge.Button.Event import Dodge.Data.World import Dodge.Inventory.Add import NewInt +import Data.Maybe +-- assumes that, for picking up, you are selecting the item interactWithCloseObj :: Either (NewInt ItmInt) Button -> World -> World interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e of - (Left flit) -> pickUpItem 0 (_unNInt flit) w + (Left flit) -> fromMaybe w $ do + i <- w ^? hud . diSelection . _Just . slInt + return $ pickUpItem 0 (i,_unNInt flit) w (Right but) -> doButtonEvent (but ^. btEvent) but w getSelectedCloseObj :: World -> Maybe (Either (NewInt ItmInt) Button) diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index e3f8e9f66..a40bc7a69 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -154,7 +154,6 @@ tryDropSelected mpos w = do let xmin = IS.findMin xs return . (hud . diSelection ?~ Sel 3 (j - xmin)) - . (hud . diSections . ix 3 . ssSet .~ IS.fromDistinctAscList [0 .. IS.size xs - 1]) . foldl' (flip $ dropItem cr) w . IS.toDescList $ xs @@ -181,18 +180,17 @@ tryPickupSelected k mpos w = do let xmin = IS.findMin xs joff = sli - xmin let nfreeslots = crNumFreeSlots (w ^. cWorld . lWorld . items) cr - itmstopickup = mapMaybe g $ IS.toList xs + is = IS.toList xs + itmstopickup = mapMaybe g is slotsneeded = alaf Sum foldMap itInvHeight itmstopickup ispickup = map (_unNInt . _itID) itmstopickup guard $ nfreeslots >= slotsneeded return $ case mpos of - Just (0, j) -> foldr (pickUpItemAt j 0) w ispickup & newdisel j joff xs - _ -> foldl' (flip $ pickUpItem 0) w ispickup & newdisel (length (cr ^. crInv)) joff xs + Just (0, j) -> foldr (pickUpItemAt j 0) w (zip is ispickup) & newdisel j joff + _ -> foldl' (flip $ pickUpItem 0) w (zip is ispickup) & newdisel (length (cr ^. crInv)) joff where - newdisel j joff xs = - -- hud . diSelection ?~ Sel 0 (j+joff) (IS.fromDistinctAscList [j .. j + IS.size xs -1]) + newdisel j joff = (hud . diSelection ?~ Sel 0 (j + joff)) - . (hud . diSections . ix 0 . ssSet .~ IS.fromDistinctAscList [j .. j + IS.size xs - 1]) g i = do NInt j <- w ^? hud . closeItems . ix i w ^? cWorld . lWorld . items . ix j @@ -549,12 +547,8 @@ updateEnterRegex w = case w ^? hud . subInventory of | secfocus [2, 3] -> -- w & hud . diSelection ?~ Sel 2 0 mempty w - & hud - . diSelection - ?~ Sel 2 0 - & hud - . diCloseFilter - %~ enterregex + & hud . diSelection ?~ Sel 2 0 + & hud . diCloseFilter %~ enterregex Just CombineInventory{} -> w & hud diff --git a/src/IntSetHelp.hs b/src/IntSetHelp.hs new file mode 100644 index 000000000..bf47fa80c --- /dev/null +++ b/src/IntSetHelp.hs @@ -0,0 +1,16 @@ +module IntSetHelp + ( + module Data.IntSet, + deleteShift + ) + where + +--import qualified Prelude +import Prelude hiding (map) +import Data.IntSet + +deleteShift :: Int -> IntSet -> IntSet +deleteShift i x = y <> map (subtract 1) z + where + (y,z) = split i x + diff --git a/tags b/tags index 8237d6460..7279bff90 100644 --- a/tags +++ b/tags @@ -39,7 +39,7 @@ AccessTerminal src/Dodge/Data/WorldEffect.hs 30;" C Action src/Dodge/Data/ActionPlan.hs 71;" t ActionPlan src/Dodge/Data/ActionPlan.hs 14;" t ActionPlan src/Dodge/Data/ActionPlan.hs 17;" C -ActionUpdate src/Dodge/Creature/Action.hs 53;" t +ActionUpdate src/Dodge/Creature/Action.hs 56;" t AimAt src/Dodge/Data/ActionPlan.hs 72;" C AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 38;" C @@ -2406,10 +2406,10 @@ _sparks src/Dodge/Data/LWorld.hs 111;" f _spawnEBT src/Dodge/Data/Bullet.hs 34;" f _ssIndent src/Dodge/Data/SelectionList.hs 37;" f _ssItems src/Dodge/Data/SelectionList.hs 33;" f -_ssOffset src/Dodge/Data/SelectionList.hs 34;" f _ssSet src/Dodge/Data/SelectionList.hs 38;" f _ssShownItems src/Dodge/Data/SelectionList.hs 35;" f _ssShownLength src/Dodge/Data/SelectionList.hs 36;" f +_ssYOffset src/Dodge/Data/SelectionList.hs 34;" f _ssboName src/Shader/Data.hs 97;" f _ssboPtr src/Shader/Data.hs 98;" f _startStopMv src/Dodge/Data/Creature/Misc.hs 89;" f @@ -2674,7 +2674,7 @@ anRoom src/Dodge/Floor.hs 116;" f analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f analyserByDoor src/Dodge/Room/LasTurret.hs 126;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 112;" f -andOrRegex src/Dodge/DisplayInventory.hs 79;" f +andOrRegex src/Dodge/DisplayInventory.hs 80;" f angleBetween src/Geometry.hs 158;" f angleThreeSides src/Geometry/Vector.hs 71;" f angleVV src/Geometry/Vector.hs 58;" f @@ -2907,7 +2907,7 @@ chasmSimpleMaze src/Dodge/Room/Tutorial.hs 417;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 348;" f chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 126;" f chasmWallToSurface src/Dodge/Base/Collide.hs 133;" f -checkCombineSelectionExists src/Dodge/DisplayInventory.hs 101;" f +checkCombineSelectionExists src/Dodge/DisplayInventory.hs 102;" f checkConnection src/Dodge/Inventory/Swap.hs 75;" f checkDeath src/Dodge/Creature/Update.hs 461;" f checkDeath' src/Dodge/Creature/Update.hs 464;" f @@ -2916,7 +2916,7 @@ checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f -checkInventorySelectionExists src/Dodge/DisplayInventory.hs 94;" f +checkInventorySelectionExists src/Dodge/DisplayInventory.hs 95;" f checkTermDist src/Dodge/Update.hs 413;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f @@ -2998,7 +2998,7 @@ combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 44;" f combineAwareness src/Dodge/Creature/Perception.hs 119;" f combineFloors src/Dodge/Room/Procedural.hs 154;" f -combineInventoryExtra src/Dodge/Render/HUD.hs 324;" f +combineInventoryExtra src/Dodge/Render/HUD.hs 323;" f combineItemListYouX src/Dodge/Combine.hs 36;" f combineList src/Dodge/Combine.hs 21;" f combineRooms src/Dodge/Room/Procedural.hs 134;" f @@ -3025,7 +3025,7 @@ connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 802;" f constructEdges src/Polyhedra.hs 31;" f constructEdgesList src/Polyhedra.hs 40;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 58;" f -continueTerminal src/Dodge/Update/Input/InGame.hs 407;" f +continueTerminal src/Dodge/Update/Input/InGame.hs 405;" f convexHull src/Geometry/Polygon.hs 150;" f convexHullSafe src/Geometry/Polygon.hs 172;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 48;" f @@ -3067,7 +3067,7 @@ crLeftHandWall src/Dodge/Creature/HandPos.hs 94;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f -crMoveImpulses src/Dodge/Creature/Action.hs 140;" f +crMoveImpulses src/Dodge/Creature/Action.hs 143;" f crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 39;" f crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 56;" f crMvBy src/Dodge/Creature/Impulse/Movement.hs 28;" f @@ -3080,7 +3080,7 @@ crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 249;" f crOnSeg' src/Dodge/Creature/State/WalkCycle.hs 145;" f crPainEffect src/Dodge/Creature/State.hs 50;" f -crPathing src/Dodge/Creature/Action.hs 124;" f +crPathing src/Dodge/Creature/Action.hs 127;" f crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f @@ -3112,7 +3112,7 @@ crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 10;" f createHeadLamp src/Dodge/Euse.hs 64;" f -createItemYou src/Dodge/Inventory/Add.hs 64;" f +createItemYou src/Dodge/Inventory/Add.hs 74;" f createLightMap src/Render.hs 26;" f createProjectile src/Dodge/HeldUse.hs 1305;" f createProjectileR src/Dodge/HeldUse.hs 1254;" f @@ -3289,6 +3289,7 @@ defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWorld src/Dodge/Default/World.hs 34;" f degToRad src/Geometry/Vector.hs 126;" f deleteIMInZone src/Dodge/Base.hs 70;" f +deleteShift src/IntSetHelp.hs 12;" f deleteWallFromZones src/Dodge/Wall/Zone.hs 23;" f deleteWallID src/Dodge/Wall/Delete.hs 13;" f deleteWallIDs src/Dodge/Wall/Delete.hs 27;" f @@ -3324,8 +3325,8 @@ disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 848;" f displayConfig src/Dodge/Menu.hs 223;" f displayControls src/Dodge/Menu.hs 239;" f displayFrameTicks src/Dodge/Render/Picture.hs 50;" f -displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f -displayIndents src/Dodge/DisplayInventory.hs 110;" f +displayFreeSlots src/Dodge/DisplayInventory.hs 197;" f +displayIndents src/Dodge/DisplayInventory.hs 111;" f displayPulse src/Dodge/Inventory/SelectionList.hs 192;" f displayTerminalLineString src/Dodge/Update.hs 586;" f dist src/Geometry/Vector.hs 193;" f @@ -3368,7 +3369,7 @@ doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f doDoorMount src/Dodge/Door.hs 32;" f doDrag src/Dodge/Update/Input/InGame.hs 136;" f -doDragSelect src/Dodge/Update/Input/InGame.hs 216;" f +doDragSelect src/Dodge/Update/Input/InGame.hs 214;" f doDrawing src/Dodge/Render.hs 33;" f doDrawing' src/Dodge/Render.hs 44;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f @@ -3387,11 +3388,11 @@ doPreload appDodge/Main.hs 133;" f doQuickload src/Dodge/Save.hs 83;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 8;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 460;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 458;" f doRoomPlacements src/Dodge/Layout.hs 121;" f doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f -doSectionSize src/Dodge/DisplayInventory.hs 215;" f +doSectionSize src/Dodge/DisplayInventory.hs 216;" f doSideEffects appDodge/Main.hs 118;" f doSlimeRadChange src/Dodge/Creature/Update.hs 299;" f doTabComplete src/Dodge/Terminal.hs 241;" f @@ -3536,8 +3537,8 @@ drawSubInventory src/Dodge/Render/HUD.hs 166;" f drawSwitch src/Dodge/Button/Draw.hs 18;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f -drawTerminalCursorLink src/Dodge/Render/HUD.hs 380;" f -drawTerminalDisplay src/Dodge/Render/HUD.hs 341;" f +drawTerminalCursorLink src/Dodge/Render/HUD.hs 379;" f +drawTerminalDisplay src/Dodge/Render/HUD.hs 340;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f drawText src/Picture/Base.hs 224;" f drawTitle src/Dodge/Render/MenuScreen.hs 49;" f @@ -3559,7 +3560,7 @@ drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f dropAll src/Dodge/Creature/Update.hs 546;" f dropInventoryPath src/Dodge/HeldUse.hs 1380;" f -dropItem src/Dodge/Creature/Action.hs 176;" f +dropItem src/Dodge/Creature/Action.hs 179;" f dropper src/Dodge/Item/Scope.hs 82;" f drumMag src/Dodge/Item/Ammo.hs 31;" f dsZoneSize src/Dodge/Zoning/Cloud.hs 51;" f @@ -3599,10 +3600,10 @@ encircleCloseP src/Dodge/Creature/Boid.hs 38;" f encircleDistP src/Dodge/Creature/Boid.hs 24;" f encircleP src/Dodge/Creature/Boid.hs 30;" f endArcPos src/Dodge/Tesla.hs 87;" f -endCombineRegex src/Dodge/Update/Input/InGame.hs 295;" f -endRegex src/Dodge/Update/Input/InGame.hs 289;" f +endCombineRegex src/Dodge/Update/Input/InGame.hs 293;" f +endRegex src/Dodge/Update/Input/InGame.hs 287;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f -enterCombineInv src/Dodge/DisplayInventory.hs 321;" f +enterCombineInv src/Dodge/DisplayInventory.hs 322;" f enumOption src/Dodge/Menu/OptionType.hs 17;" f epText src/Dodge/Inventory/SelectionList.hs 74;" f eqConstr src/SameConstr.hs 17;" f @@ -3650,7 +3651,7 @@ fdiv src/ShortShow.hs 41;" f feedSlime src/Dodge/Update.hs 1080;" f feet src/Dodge/Creature/Picture.hs 226;" f filter3 src/FoldableHelp.hs 76;" f -filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f +filterSectionsPair src/Dodge/DisplayInventory.hs 161;" f findBlips src/Dodge/RadarSweep.hs 63;" f findBoundDists src/Dodge/Update/Camera.hs 252;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f @@ -3759,7 +3760,7 @@ getAutoSpringLinks src/Dodge/Item/Grammar.hs 90;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 175;" f getBulletType src/Dodge/HeldUse.hs 945;" f -getCloseObj src/Dodge/Update/Input/InGame.hs 584;" f +getCloseObj src/Dodge/Update/Input/InGame.hs 578;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 56;" f @@ -3784,7 +3785,7 @@ getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 611;" f getRootItemBounds src/Dodge/Render/HUD.hs 98;" f getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f -getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f +getSelectedCloseObj src/Dodge/SelectedClose.hs 18;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 129;" f getTiles src/Dodge/Layout.hs 224;" f @@ -3944,7 +3945,7 @@ insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 131;" f insertWithNewKeys src/IntMapHelp.hs 71;" f intAnno src/Dodge/Floor.hs 110;" f -interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f +interactWithCloseObj src/Dodge/SelectedClose.hs 11;" f interpWith src/Dodge/Creature/Boid.hs 13;" f intersectCircLine src/Geometry/Intersect.hs 368;" f intersectCircLineAlong src/Geometry/Intersect.hs 359;" f @@ -3979,8 +3980,8 @@ invCursorParams src/Dodge/ListDisplayParams.hs 35;" f invDP src/Dodge/ListDisplayParams.hs 32;" f invDT src/Dodge/Item/Grammar.hs 227;" f invDT' src/Dodge/Item/Grammar.hs 232;" f -invDimColor src/Dodge/DisplayInventory.hs 190;" f -invHead src/Dodge/Render/HUD.hs 410;" f +invDimColor src/Dodge/DisplayInventory.hs 191;" f +invHead src/Dodge/Render/HUD.hs 409;" f invIMDT src/Dodge/Item/Grammar.hs 256;" f invIndents src/Dodge/Item/Grammar.hs 263;" f invItemEffs src/Dodge/Creature/State.hs 91;" f @@ -4168,10 +4169,10 @@ listConfig src/Dodge/Menu.hs 232;" f listControls src/Dodge/Menu.hs 244;" f listCursor src/Dodge/Render/List.hs 120;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 287;" f -listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 300;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f -lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 399;" f +lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 398;" f loadAmmoTut src/Dodge/Room/Tutorial.hs 475;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f @@ -4298,7 +4299,7 @@ maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 136;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 141;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 620;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 614;" f maybeOpenConsole src/Dodge/Update.hs 135;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 135;" f @@ -4494,7 +4495,7 @@ optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 53;" f optionValueOffset src/Dodge/Menu/Option.hs 86;" f optionsOptions src/Dodge/Menu.hs 113;" f optionsToSelections src/Dodge/Menu/Option.hs 47;" f -orRegex src/Dodge/DisplayInventory.hs 82;" f +orRegex src/Dodge/DisplayInventory.hs 83;" f orange src/Color.hs 52;" f orderAround3 src/Geometry/Vector3D.hs 106;" f orderAroundFirst src/Geometry/Polygon.hs 128;" f @@ -4540,7 +4541,7 @@ passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 693;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathEdgeObstructed src/Dodge/Path.hs 87;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 576;" f +pauseGame src/Dodge/Update/Input/InGame.hs 570;" f pauseMenu src/Dodge/Menu.hs 57;" f pauseMenuOptions src/Dodge/Menu.hs 64;" f pauseSound src/Dodge/SoundLogic.hs 42;" f @@ -4552,14 +4553,14 @@ pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 217;" f perMat src/MatrixHelper.hs 60;" f perceptionUpdate src/Dodge/Creature/Perception.hs 25;" f -performAction src/Dodge/Creature/Action.hs 58;" f -performActions src/Dodge/Creature/Action.hs 41;" f -performAimAt src/Dodge/Creature/Action.hs 108;" f -performPathTo src/Dodge/Creature/Action.hs 129;" f -performTurnToA src/Dodge/Creature/Action.hs 149;" f +performAction src/Dodge/Creature/Action.hs 61;" f +performActions src/Dodge/Creature/Action.hs 44;" f +performAimAt src/Dodge/Creature/Action.hs 111;" f +performPathTo src/Dodge/Creature/Action.hs 132;" f +performTurnToA src/Dodge/Creature/Action.hs 152;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f -pickUpItem src/Dodge/Inventory/Add.hs 72;" f -pickUpItemAt src/Dodge/Inventory/Add.hs 77;" f +pickUpItem src/Dodge/Inventory/Add.hs 82;" f +pickUpItemAt src/Dodge/Inventory/Add.hs 87;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 830;" f pincerP src/Dodge/Creature/Boid.hs 63;" f pincerP' src/Dodge/Creature/Boid.hs 96;" f @@ -4586,7 +4587,7 @@ placeSpotID src/Dodge/Placement/PlaceSpot.hs 99;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 84;" f placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 62;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 157;" f -plainRegex src/Dodge/DisplayInventory.hs 193;" f +plainRegex src/Dodge/DisplayInventory.hs 194;" f playIfFree src/Sound.hs 139;" f playPositionalSoundQueue src/Sound.hs 147;" f playSoundAndUpdate src/Sound.hs 55;" f @@ -4830,8 +4831,8 @@ reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 20;" f reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 65;" f refract src/Dodge/Item/Weapon/LaserPath.hs 39;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 35;" f -regexCombs src/Dodge/DisplayInventory.hs 72;" f -regexList src/Dodge/DisplayInventory.hs 312;" f +regexCombs src/Dodge/DisplayInventory.hs 73;" f +regexList src/Dodge/DisplayInventory.hs 313;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 754;" f reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 860;" f reloadLevelStart src/Dodge/Save.hs 71;" f @@ -5005,20 +5006,20 @@ seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 808;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 304;" f secondColumnLDP src/Dodge/ListDisplayParams.hs 45;" f -sectionsDesiredLines src/Dodge/DisplayInventory.hs 202;" f -sectionsSizes src/Dodge/DisplayInventory.hs 205;" f +sectionsDesiredLines src/Dodge/DisplayInventory.hs 203;" f +sectionsSizes src/Dodge/DisplayInventory.hs 206;" f seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f segmentArea src/Dodge/Creature/Update.hs 355;" f -selNumPos src/Dodge/Render/HUD.hs 459;" f -selNumPosCardinal src/Dodge/Render/HUD.hs 476;" f +selNumPos src/Dodge/Render/HUD.hs 458;" f +selNumPosCardinal src/Dodge/Render/HUD.hs 475;" f selSecDrawCursor src/Dodge/Render/List.hs 101;" f -selSecSelCol src/Dodge/Render/HUD.hs 496;" f +selSecSelCol src/Dodge/Render/HUD.hs 495;" f selSecSelSize src/Dodge/SelectionSections.hs 178;" f selSecYint src/Dodge/SelectionSections.hs 187;" f selectedItemScroll src/Dodge/Update/Scroll.hs 49;" f -selectionSet src/Dodge/Update/Input/InGame.hs 162;" f +selectionSet src/Dodge/Update/Input/InGame.hs 161;" f semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 846;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 68;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 77;" f @@ -5053,7 +5054,7 @@ setOutLinksByType src/Dodge/RoomLink.hs 76;" f setOutLinksPD src/Dodge/RoomLink.hs 96;" f setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 123;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 318;" f -setSelWhileDragging src/Dodge/Update/Input/InGame.hs 351;" f +setSelWhileDragging src/Dodge/Update/Input/InGame.hs 349;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5096,7 +5097,7 @@ shiftByV2 src/Dodge/PlacementSpot.hs 257;" f shiftChildren src/Dodge/Tree/Compose.hs 45;" f shiftDraw src/Dodge/Render/ShapePicture.hs 111;" f shiftInBy src/Dodge/PlacementSpot.hs 254;" f -shiftInvItems src/Dodge/Update/Input/InGame.hs 319;" f +shiftInvItems src/Dodge/Update/Input/InGame.hs 317;" f shiftInvItemsDown src/Dodge/Inventory.hs 186;" f shiftInvItemsUp src/Dodge/Inventory.hs 196;" f shiftLinkBy src/Dodge/Room/Link.hs 89;" f @@ -5230,7 +5231,7 @@ soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 89;" f spPos src/ShapePicture/Data.hs 11;" f -spaceAction src/Dodge/Update/Input/InGame.hs 579;" f +spaceAction src/Dodge/Update/Input/InGame.hs 573;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 162;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 155;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 147;" f @@ -5294,7 +5295,7 @@ stackedInventory src/Dodge/Creature.hs 318;" f startCr src/Dodge/Creature.hs 83;" f startCrafts src/Dodge/Room/Start.hs 94;" f startDeathTimer src/Dodge/Creature/Update.hs 495;" f -startDrag src/Dodge/Update/Input/InGame.hs 304;" f +startDrag src/Dodge/Update/Input/InGame.hs 302;" f startInvList src/Dodge/Creature.hs 97;" f startInventory src/Dodge/Creature.hs 100;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f @@ -5338,7 +5339,7 @@ swapItemWith src/Dodge/Inventory.hs 280;" f swapSelSet src/Dodge/Inventory.hs 160;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f -symmetricDifference src/Dodge/Update/Input/InGame.hs 228;" f +symmetricDifference src/Dodge/Update/Input/InGame.hs 226;" f t src/ShortShow.hs 48;" f tEast src/Dodge/Room/Corridor.hs 96;" f tToBTree src/Dodge/Tree/Compose.hs 93;" f @@ -5419,7 +5420,7 @@ thingsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 65;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 67;" f throb1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 862;" f throbC4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 820;" f -throwItem src/Dodge/Creature/Action.hs 209;" f +throwItem src/Dodge/Creature/Action.hs 222;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 221;" f tilesToLine src/Shader/AuxAddition.hs 66;" f @@ -5456,7 +5457,7 @@ toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f toV4 src/Geometry/Data.hs 60;" f tocrs src/Dodge/TestString.hs 40;" f -toggleCombineInv src/Dodge/DisplayInventory.hs 315;" f +toggleCombineInv src/Dodge/DisplayInventory.hs 316;" f toggleCommands src/Dodge/Terminal.hs 86;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 68;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 106;" f @@ -5524,17 +5525,17 @@ truncate src/Polyhedra/Geodesic.hs 39;" f trunkDepth src/TreeHelp.hs 164;" f tryAttachItems src/Dodge/Item/Grammar.hs 35;" f tryClickUse src/Dodge/Creature/YourControl.hs 207;" f -tryCombine src/Dodge/Update/Input/InGame.hs 596;" f +tryCombine src/Dodge/Update/Input/InGame.hs 590;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 179;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 147;" f -tryEvadeSideways src/Dodge/Creature/Action.hs 101;" f +tryEvadeSideways src/Dodge/Creature/Action.hs 104;" f tryGetChannel src/Sound.hs 99;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 42;" f -tryPickupSelected src/Dodge/Update/Input/InGame.hs 174;" f +tryPickupSelected src/Dodge/Update/Input/InGame.hs 173;" f tryPlay src/Sound.hs 85;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 25;" f -tryPutItemInInvAt src/Dodge/Inventory/Add.hs 56;" f +tryPutItemInInvAt src/Dodge/Inventory/Add.hs 66;" f trySeedFromClipboard src/Dodge/Menu.hs 94;" f trySpin src/Dodge/Projectile/Update.hs 120;" f trySynthBullet src/Dodge/Creature/State.hs 195;" f @@ -5584,7 +5585,7 @@ updateAggroBee src/Dodge/Creature/Update.hs 129;" f updateAimPos src/Dodge/Update.hs 400;" f updateAllNodes src/TreeHelp.hs 88;" f updateArc src/Dodge/Tesla.hs 44;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 491;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 489;" f updateBarrel src/Dodge/Barreloid.hs 43;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f @@ -5604,8 +5605,8 @@ updateChaseCrit src/Dodge/Creature/Update.hs 371;" f updateCloseObjects src/Dodge/Inventory.hs 129;" f updateCloud src/Dodge/Update.hs 920;" f updateClouds src/Dodge/Update.hs 784;" f -updateCombinePositioning src/Dodge/DisplayInventory.hs 41;" f -updateCombineSections src/Dodge/DisplayInventory.hs 48;" f +updateCombinePositioning src/Dodge/DisplayInventory.hs 42;" f +updateCombineSections src/Dodge/DisplayInventory.hs 49;" f updateCreature src/Dodge/Creature/Update.hs 50;" f updateCreatureGroups src/Dodge/Update.hs 645;" f updateCreatureSoundPositions src/Dodge/Update.hs 624;" f @@ -5615,7 +5616,7 @@ updateDebris src/Dodge/Update.hs 687;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 104;" f updateDelayedEvents src/Dodge/Update.hs 1117;" f -updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f +updateDisplaySections src/Dodge/DisplayInventory.hs 117;" f updateDistortion src/Dodge/Distortion.hs 8;" f updateDistortions src/Dodge/Update.hs 666;" f updateDoor src/Dodge/Door.hs 22;" f @@ -5628,14 +5629,14 @@ updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 32;" f updateEnergyBalls src/Dodge/Update.hs 775;" f -updateEnterRegex src/Dodge/Update/Input/InGame.hs 536;" f +updateEnterRegex src/Dodge/Update/Input/InGame.hs 534;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 772;" f updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f updateFoodSearchChaseCrit src/Dodge/Creature/Update.hs 381;" f -updateFunctionKey src/Dodge/Update/Input/InGame.hs 368;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 364;" f +updateFunctionKey src/Dodge/Update/Input/InGame.hs 366;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 362;" f updateGas src/Dodge/Update.hs 942;" f updateGusts src/Dodge/Update.hs 904;" f updateHiveCrit src/Dodge/Creature/Update.hs 82;" f @@ -5643,30 +5644,30 @@ updateHoverCrit src/Dodge/Humanoid.hs 25;" f updateIMl src/Dodge/Update.hs 639;" f updateIMl' src/Dodge/Update.hs 642;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 441;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 439;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f -updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f +updateInventoryPositioning src/Dodge/DisplayInventory.hs 88;" f updateItemTargeting src/Dodge/Creature/State.hs 288;" f -updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 401;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 435;" f +updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 399;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 433;" f updateKeysInGame src/Dodge/Update/Input/InGame.hs 81;" f -updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 387;" f -updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 410;" f +updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 385;" f +updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 408;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 517;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLivingCreature src/Dodge/Creature/Update.hs 61;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 454;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 452;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 408;" f -updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 231;" f +updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 229;" f updateMouseContext src/Dodge/Update.hs 421;" f updateMouseContextGame src/Dodge/Update.hs 426;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 94;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 84;" f -updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 200;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 198;" f updateObjCatMaybes src/Dodge/Update.hs 657;" f updateObjMapMaybe src/Dodge/Update.hs 650;" f updatePastWorlds src/Dodge/Update.hs 506;" f @@ -5689,8 +5690,8 @@ updateRightParentSF src/Dodge/Item/Grammar.hs 190;" 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 261;" f -updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f +updateSection src/Dodge/DisplayInventory.hs 262;" f +updateSectionsPositioning src/Dodge/DisplayInventory.hs 242;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f updateShockwaves src/Dodge/Update.hs 769;" f updateSingleNodes src/TreeHelp.hs 100;" f @@ -5879,7 +5880,7 @@ yIntercepts src/Dodge/Zoning/Base.hs 78;" f yV2 src/Geometry/Vector.hs 213;" f yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f -youDropItem src/Dodge/Creature/Action.hs 195;" f +youDropItem src/Dodge/Creature/Action.hs 208;" f yourAugmentedItem src/Dodge/Render/HUD.hs 233;" f yourControl src/Dodge/Creature/YourControl.hs 26;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 109;" f