From d776c91cfd717fbcdf45c4b46a04cd395b14d4c4 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 24 Aug 2025 23:50:16 +0100 Subject: [PATCH] Fix more item bugs --- src/Dodge/Creature.hs | 2 +- src/Dodge/Data/Item/Location.hs | 11 +++ src/Dodge/FloorItem.hs | 16 +--- src/Dodge/Inventory/Add.hs | 2 +- src/Dodge/Inventory/Location.hs | 7 +- src/Dodge/Render/Picture.hs | 2 +- src/Dodge/TestString.hs | 6 +- src/ShortShow.hs | 17 +++- tags | 149 ++++++++++++++++---------------- 9 files changed, 113 insertions(+), 99 deletions(-) diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 76ca17ba8..6dc3c0834 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -238,7 +238,7 @@ inventoryX c = case c of , rifle , shellMag ] - 'P' -> [burstRifle , tinMag, bulletSynthesizer] + 'P' -> [burstRifle , tinMag, battery, bulletSynthesizer] 'T' -> testInventory 'U' -> [targetingScope tt | tt <- [minBound .. maxBound]] diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index 1c9785a32..cc6a51ea3 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -5,6 +5,7 @@ {-# LANGUAGE EmptyDataDeriving #-} module Dodge.Data.Item.Location where +import ShortShow import Dodge.Data.Equipment.Misc import Control.Lens import Data.Aeson @@ -38,6 +39,16 @@ data ItemLocation | InVoid deriving (Eq, Show, Ord, Read) --Generic, Flat) +instance ShortShow ItemLocation where + shortShow (InInv cid invid rootb selb attb esite) + = "InInv:cid" <> shortShow cid <> "invid"<> shortShow invid + <>"root"<>shortShow rootb<>"sel"<>shortShow selb<>"att"<>shortShow attb<> + shortShow (fmap (SString . show) esite) + shortShow x = show x +-- | OnTurret {_ilTuID :: Int} +-- | OnFloor-- {_ilFlID :: NewInt FloorInt} +-- | InVoid + makeLenses ''ItemLocation deriveJSON defaultOptions ''InvInt deriveJSON defaultOptions ''FloorInt diff --git a/src/Dodge/FloorItem.hs b/src/Dodge/FloorItem.hs index 89ed656b5..f26c5e817 100644 --- a/src/Dodge/FloorItem.hs +++ b/src/Dodge/FloorItem.hs @@ -1,15 +1,12 @@ -module Dodge.FloorItem ( - copyItemToFloor, - -- copyItemToFloorID, -) where +module Dodge.FloorItem (copyItemToFloor) where -import Control.Lens import Data.Maybe import Data.Monoid import Dodge.Base import Dodge.Data.World import Dodge.Item.InvSize import Geometry +import LensHelp --import qualified IntMapHelp as IM import NewInt import System.Random @@ -20,7 +17,7 @@ copyItemToFloor pos it w = w' & cWorld . lWorld . floorItems . at (_unNInt $ _itID it) ?~ theflit & cWorld . lWorld . items . at (_unNInt $ _itID it) ?~ (it & itLocation .~ OnFloor) - & hud . closeItems %~ (_itID it :) + & hud . closeItems .:~ _itID it where -- & hud . hudElement . diSections . ix 3 . ssOffset .~ 0 -- ensures dropped item is at the top of the close item selection list @@ -29,12 +26,7 @@ copyItemToFloor pos it w = theflit = FlIt{_flItPos = p', _flItRot = rot} cardinalVectors :: [Point2] -cardinalVectors = - [ V2 1 0 - , V2 0 1 - , V2 (-1) 0 - , V2 0 (-1) - ] +cardinalVectors = [ V2 1 0 , V2 0 1 , V2 (-1) 0 , V2 0 (-1) ] findWallFreeDropPoint :: Float -> Point2 -> World -> (Point2, World) findWallFreeDropPoint r p w = diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index a31678da6..2ff9ebff8 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -111,7 +111,7 @@ tryPutItemInInvAt i cid itid w = do -- return (Just i, w') createItemYou :: Item -> World -> World -createItemYou itm w = w' -- fromMaybe w' $ fmap snd $ tryPutItemInInv 0 itid w' +createItemYou itm w = fromMaybe w' $ fmap snd $ tryPutItemInInv 0 itid w' where itid = IM.newKey $ w ^. cWorld . lWorld . items pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index a49d3f88a..09fb385f8 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -45,9 +45,9 @@ updateRootItemID m cr = fromMaybe cr $ do crUpdateItemLocations :: Int -> LWorld -> LWorld crUpdateItemLocations crid lw = fromMaybe lw $ do mo <- lw ^? creatures . ix crid . crManipulation . manObject - itids <- lw ^? creatures . ix crid . crInv + cinv <- lw ^? creatures . ix crid . crInv --let crinv = IM.restrictKeys (lw ^. items) (IS.fromList $ IM.elems itids) - let crinv = fmap (\k -> lw ^?! items . ix k) itids + let crinv = fmap (\k -> lw ^?! items . ix k) cinv return $ crSetRoots crid $ IM.foldlWithKey' (crUpdateInvidLocations mo crid) lw crinv crSetRoots :: Int -> LWorld -> LWorld @@ -65,8 +65,7 @@ crUpdateInvidLocations :: ManipulatedObject -> Int -> LWorld -> Int -> Item -> L crUpdateInvidLocations mo crid lw invid itm = lw & creatures . ix crid . crInv . ix invid .~ itid -- . itLocation .~ newloc - & items . ix invid .~ (itm & itLocation .~ newloc) --- & itemLocations %~ IM.insert itid newloc + & items . ix itid .~ (itm & itLocation .~ newloc) where itid = itm ^. itID . unNInt newloc = diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index 37b7f4d12..9bbae2892 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -20,7 +20,7 @@ fixedCoordPictures u = aimDelaySweep u <> drawMenuOrHUD cfig u <> drawConcurrentMessage u - <> ttl (translate hw 0 $ drawList (map text (_uvTestString u u))) + <> ttl (translate (hw - 100) 0 $ drawList (map text (_uvTestString u u))) <> ttl ( translate (0.5 * hw) (- hh) . drawList diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index efe3e8e37..27942cdf3 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -1,6 +1,7 @@ {-# OPTIONS_GHC -Wno-unused-imports #-} module Dodge.TestString where +import Data.List ((\\)) import ShortShow import Geometry import qualified SDL @@ -30,13 +31,14 @@ import NewInt import Data.Foldable testStringInit :: Universe -> [String] -testStringInit u = map f (IM.elems $ u ^. uvWorld . cWorld . lWorld . items) +testStringInit u = map f (IM.toList $ u ^. uvWorld . cWorld . lWorld . items) <> ["---"] <> map show (IM.toList . fold $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv) <> ["---"] <> map show (IM.keys $ u ^. uvWorld . cWorld . lWorld . floorItems) + where - f itm = show (itm ^. itID . unNInt) <> ":"<> show (itm ^. itLocation) + f (i,itm) = show i <> ":" <> show (itm ^. itID . unNInt) <> ":"<> shortShow (itm ^. itLocation) -- map shortShow (u ^.. uvWorld . cWorld . lWorld . debris . each . to g) -- where -- g db = (pz,z,norm v) diff --git a/src/ShortShow.hs b/src/ShortShow.hs index 9cf0e201a..06b103d24 100644 --- a/src/ShortShow.hs +++ b/src/ShortShow.hs @@ -1,6 +1,4 @@ -module ShortShow ( - shortShow, -) where +module ShortShow (shortShow, ShortShow, ShortString (..)) where import Geometry import Numeric @@ -11,9 +9,22 @@ class ShortShow a where instance ShortShow a => ShortShow (V2 a) where shortShow (V2 x y) = shortShow x ++ "#" ++ shortShow y +newtype ShortString = SString String + +instance ShortShow ShortString where + shortShow (SString x) = show x + instance ShortShow Float where shortShow x = showFFloat (Just 2) x "" +instance ShortShow Bool where + shortShow True = "T" + shortShow False = "F" + +instance ShortShow a => ShortShow (Maybe a) where + shortShow (Just x) = "J#" <> shortShow x + shortShow Nothing = "NTHNG" + instance ShortShow Int where shortShow x | x < k' = show x diff --git a/tags b/tags index b01c81532..3fb6d73b4 100644 --- a/tags +++ b/tags @@ -270,7 +270,7 @@ CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" t CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C CrID src/Dodge/Data/CrWlID.hs 12;" C CrImp src/Dodge/Data/CreatureEffect.hs 23;" t -CrInt src/Dodge/Data/Item/Location.hs 22;" t +CrInt src/Dodge/Data/Item/Location.hs 23;" t CrIsAiming src/Dodge/Data/CreatureEffect.hs 41;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 42;" C CrMouth src/Dodge/Data/SoundOrigin.hs 18;" C @@ -472,7 +472,7 @@ FloatLessCheck src/Dodge/Data/FloatFunction.hs 14;" C Floating src/Dodge/Data/Creature/Stance.hs 26;" C FlockArmourChaseAI src/Dodge/Data/Creature/Misc.hs 48;" C Floor src/Data/Tile.hs 11;" t -FloorInt src/Dodge/Data/Item/Location.hs 15;" t +FloorInt src/Dodge/Data/Item/Location.hs 16;" t FloorItem src/Dodge/Data/FloorItem.hs 15;" t Flying src/Dodge/Data/Creature/Stance.hs 27;" C FollowImpulses src/Dodge/Data/ActionPlan.hs 182;" C @@ -587,13 +587,13 @@ ImpulseUseTargetCID src/Dodge/Data/ActionPlan.hs 49;" C ImpulsesList src/Dodge/Data/ActionPlan.hs 97;" C InDivineZone src/Dodge/Data/Scenario.hs 22;" C InDream src/Dodge/Data/Scenario.hs 19;" C -InInv src/Dodge/Data/Item/Location.hs 28;" C +InInv src/Dodge/Data/Item/Location.hs 29;" C InLink src/Dodge/Data/Room.hs 44;" C InParallelUniverse src/Dodge/Data/Scenario.hs 21;" C InPlacement src/Dodge/Data/GenWorld.hs 135;" t InRealWorld src/Dodge/Data/Scenario.hs 18;" C InSimulation src/Dodge/Data/Scenario.hs 20;" C -InVoid src/Dodge/Data/Item/Location.hs 38;" C +InVoid src/Dodge/Data/Item/Location.hs 39;" C Inanimate src/Dodge/Data/ActionPlan.hs 17;" C InanimateAI src/Dodge/Data/Creature/Misc.hs 41;" C IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 13;" C @@ -609,7 +609,7 @@ Intention src/Dodge/Data/Creature.hs 68;" t IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 45;" t -InvInt src/Dodge/Data/Item/Location.hs 18;" t +InvInt src/Dodge/Data/Item/Location.hs 19;" t InventoryChange src/Dodge/Data/World.hs 31;" C InventoryConnectSound src/Dodge/Data/SoundOrigin.hs 14;" C InventoryPathing src/Dodge/Data/Item/Combine.hs 39;" t @@ -627,7 +627,7 @@ ItTargeting src/Dodge/Data/Item.hs 57;" C Item src/Dodge/Data/Item.hs 39;" t ItemClust src/Dodge/Combine/Graph.hs 21;" C ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t -ItemLocation src/Dodge/Data/Item/Location.hs 27;" t +ItemLocation src/Dodge/Data/Item/Location.hs 28;" t ItemParamID src/Dodge/Data/Item/Params.hs 26;" C ItemParams src/Dodge/Data/Item/Params.hs 14;" t ItemSF src/Dodge/Data/ComposedItem.hs 12;" t @@ -638,7 +638,7 @@ ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C ItemTargeting src/Dodge/Data/Item.hs 56;" t ItemType src/Dodge/Data/Item/Combine.hs 16;" t ItemUse src/Dodge/Data/Item/Use.hs 30;" t -ItmInt src/Dodge/Data/Item/Location.hs 24;" t +ItmInt src/Dodge/Data/Item/Location.hs 25;" t JOYSTICK src/Dodge/Data/Item/Combine.hs 96;" C JUMPLEGS src/Dodge/Data/Item/Combine.hs 132;" C JoinClust src/Dodge/Combine/Graph.hs 22;" C @@ -935,12 +935,12 @@ ObjectType src/Dodge/Data/ObjectType.hs 11;" t OnBack src/Dodge/Data/Equipment/Misc.hs 24;" C OnChest src/Dodge/Data/Equipment/Misc.hs 23;" C OnEdge src/Dodge/Data/Room.hs 46;" C -OnFloor src/Dodge/Data/Item/Location.hs 37;" C +OnFloor src/Dodge/Data/Item/Location.hs 38;" C OnHead src/Dodge/Data/Equipment/Misc.hs 22;" C OnLeftWrist src/Dodge/Data/Equipment/Misc.hs 25;" C OnLegs src/Dodge/Data/Equipment/Misc.hs 27;" C OnRightWrist src/Dodge/Data/Equipment/Misc.hs 26;" C -OnTurret src/Dodge/Data/Item/Location.hs 36;" C +OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneHand src/Dodge/Data/AimStance.hs 9;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C @@ -1183,6 +1183,7 @@ SPEEDLEGS src/Dodge/Data/Item/Combine.hs 131;" C SPRING src/Dodge/Data/Item/Combine.hs 54;" C SPic src/ShapePicture/Data.hs 7;" t SQUARE src/Dodge/Data/GenParams.hs 20;" C +SString src/ShortShow.hs 12;" C ST src/Dodge/Data/MetaTree.hs 18;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 59;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 24;" C @@ -1226,7 +1227,8 @@ ShieldGroup src/Dodge/Data/Creature/State.hs 32;" C Shockwave src/Dodge/Data/Shockwave.hs 17;" t ShockwaveDirection src/Dodge/Data/Shockwave.hs 14;" t ShootAt src/Dodge/Data/ActionPlan.hs 181;" C -ShortShow src/ShortShow.hs 8;" c +ShortShow src/ShortShow.hs 6;" c +ShortString src/ShortShow.hs 12;" t Show_bound_box src/Dodge/Data/Config.hs 80;" C Show_dda_test src/Dodge/Data/Config.hs 83;" C Show_far_wall_detect src/Dodge/Data/Config.hs 86;" C @@ -1398,7 +1400,7 @@ TurnToPoint src/Dodge/Data/ActionPlan.hs 91;" C TurnToward src/Dodge/Data/ActionPlan.hs 33;" C TurnTowardCr src/Dodge/Data/CreatureEffect.hs 25;" C Turret src/Dodge/Data/Machine.hs 57;" t -TurretInt src/Dodge/Data/Item/Location.hs 20;" t +TurretInt src/Dodge/Data/Item/Location.hs 21;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C TwoHandFlat src/Dodge/Data/AimStance.hs 8;" C TwoHandOver src/Dodge/Data/AimStance.hs 7;" C @@ -1918,13 +1920,13 @@ _ibtHeld src/Dodge/Data/Item/Combine.hs 17;" f _ibtIntroScanType src/Dodge/Data/Item/Combine.hs 33;" f _ibtPathing src/Dodge/Data/Item/Combine.hs 29;" f _ibtTargeting src/Dodge/Data/Item/Combine.hs 22;" f -_ilCrID src/Dodge/Data/Item/Location.hs 29;" f -_ilEquipSite src/Dodge/Data/Item/Location.hs 34;" f -_ilInvID src/Dodge/Data/Item/Location.hs 30;" f -_ilIsAttached src/Dodge/Data/Item/Location.hs 33;" f -_ilIsRoot src/Dodge/Data/Item/Location.hs 31;" f -_ilIsSelected src/Dodge/Data/Item/Location.hs 32;" f -_ilTuID src/Dodge/Data/Item/Location.hs 36;" f +_ilCrID src/Dodge/Data/Item/Location.hs 30;" f +_ilEquipSite src/Dodge/Data/Item/Location.hs 35;" f +_ilInvID src/Dodge/Data/Item/Location.hs 31;" f +_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 25;" f _imHotkeys src/Dodge/Data/LWorld.hs 152;" f _imRootSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" f @@ -2564,7 +2566,7 @@ aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f accessTerminal src/Dodge/WorldEffect.hs 52;" f activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 60;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f -addArmour src/Dodge/Creature.hs 85;" f +addArmour src/Dodge/Creature.hs 84;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 97;" f addCrGibs src/Dodge/Prop/Gib.hs 16;" f @@ -2822,7 +2824,7 @@ capacitor src/Dodge/Item/Ammo.hs 69;" f cardEightVec src/Dodge/Base/CardinalPoint.hs 16;" f cardList src/Dodge/Base/CardinalPoint.hs 6;" f cardVec src/Dodge/Base/CardinalPoint.hs 9;" f -cardinalVectors src/Dodge/FloorItem.hs 35;" f +cardinalVectors src/Dodge/FloorItem.hs 28;" f cartePosToScreen src/Dodge/Base/Coordinate.hs 37;" f cdtPropagateFold src/Dodge/DoubleTree.hs 406;" f cenLasTur src/Dodge/Room/LasTurret.hs 24;" f @@ -2979,8 +2981,7 @@ coolMachinePistol src/Dodge/Creature/State.hs 101;" f coolMinigun src/Dodge/Creature/State.hs 94;" f copier src/Dodge/Item/Scope.hs 88;" f copierItemUpdate src/Dodge/Creature/State.hs 130;" f -copyItemToFloor src/Dodge/FloorItem.hs 18;" f -copyItemToFloorID src/Dodge/FloorItem.hs 22;" f +copyItemToFloor src/Dodge/FloorItem.hs 15;" f corDoor src/Dodge/Room/Room.hs 376;" f cornerList src/Preload/Render.hs 198;" f corpseOrGib src/Dodge/Creature/Update.hs 101;" f @@ -2994,8 +2995,8 @@ crBlips src/Dodge/RadarSweep.hs 87;" f crCamouflage src/Dodge/Creature/Picture.hs 32;" f crCanSeeCr src/Dodge/Creature/Test.hs 52;" f crCrSpring src/Dodge/Update.hs 892;" f -crCurrentEquipment src/Dodge/Creature/Statistics.hs 58;" f -crDexterity src/Dodge/Creature/Statistics.hs 15;" f +crCurrentEquipment src/Dodge/Creature/Statistics.hs 57;" f +crDexterity src/Dodge/Creature/Statistics.hs 14;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 38;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 52;" f crHasTarget src/Dodge/Creature/Test.hs 65;" f @@ -3004,7 +3005,7 @@ crHit src/Dodge/WorldEvent/ThingsHit.hs 86;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 32;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 14;" f crInAimStance src/Dodge/Creature/Test.hs 94;" f -crIntelligence src/Dodge/Creature/Statistics.hs 35;" f +crIntelligence src/Dodge/Creature/Statistics.hs 34;" f crIsAiming src/Dodge/Creature/Test.hs 60;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 116;" f crMass src/Dodge/Creature/Mass.hs 5;" f @@ -3019,13 +3020,13 @@ crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 23;" f crOnWall src/Dodge/WallCreatureCollisions.hs 86;" f crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 73;" f -crSetRoots src/Dodge/Inventory/Location.hs 52;" f +crSetRoots src/Dodge/Inventory/Location.hs 53;" f crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 887;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f -crStrength src/Dodge/Creature/Statistics.hs 25;" f +crStrength src/Dodge/Creature/Statistics.hs 24;" f crUpdate' src/Dodge/Creature/Update.hs 56;" f -crUpdateInvidLocations src/Dodge/Inventory/Location.hs 63;" f +crUpdateInvidLocations src/Dodge/Inventory/Location.hs 64;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 45;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f @@ -3238,7 +3239,7 @@ disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f displayConfig src/Dodge/Menu.hs 213;" f displayControls src/Dodge/Menu.hs 223;" f displayFrameTicks src/Dodge/Render/Picture.hs 46;" f -displayFreeSlots src/Dodge/DisplayInventory.hs 200;" f +displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f displayIndents src/Dodge/DisplayInventory.hs 111;" f displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f displayTerminalLineString src/Dodge/Update.hs 496;" f @@ -3315,7 +3316,7 @@ doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f doRoomShift src/Dodge/Room/Link.hs 33;" f doScopeZoom src/Dodge/Update/Scroll.hs 91;" f -doSectionSize src/Dodge/DisplayInventory.hs 219;" f +doSectionSize src/Dodge/DisplayInventory.hs 215;" f doSideEffects appDodge/Main.hs 120;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f doTestDrawing src/Dodge/Render.hs 41;" f @@ -3526,7 +3527,7 @@ endArcPos src/Dodge/Tesla.hs 87;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 262;" f endRegex src/Dodge/Update/Input/InGame.hs 253;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 592;" f -enterCombineInv src/Dodge/DisplayInventory.hs 325;" f +enterCombineInv src/Dodge/DisplayInventory.hs 321;" f epText src/Dodge/Inventory/SelectionList.hs 76;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f @@ -3538,9 +3539,8 @@ equipInfo src/Dodge/Item/Info.hs 141;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 171;" f equipPosition src/Dodge/Item/Draw.hs 41;" f equipSiteInfo src/Dodge/Item/Info.hs 254;" f -equipSitePQ src/Dodge/Creature/HandPos.hs 30;" f equipType src/Dodge/Data/EquipType.hs 10;" f -equipmentStrValue src/Dodge/Creature/Statistics.hs 52;" f +equipmentStrValue src/Dodge/Creature/Statistics.hs 51;" f errorAngleVV src/Geometry.hs 60;" f errorClosestPointOnLine src/Geometry.hs 72;" f errorClosestPointOnLineParam src/Geometry.hs 78;" f @@ -3570,11 +3570,11 @@ extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f farWallDistDirection src/Dodge/Update/Camera.hs 239;" f -fdiv src/ShortShow.hs 26;" f +fdiv src/ShortShow.hs 37;" f feet src/Dodge/Creature/Picture.hs 50;" f ffoldM src/Framebuffer/Update.hs 79;" f filter3 src/FoldableHelp.hs 76;" f -filterSectionsPair src/Dodge/DisplayInventory.hs 168;" f +filterSectionsPair src/Dodge/DisplayInventory.hs 164;" f findBlips src/Dodge/RadarSweep.hs 62;" f findBoundDists src/Dodge/Update/Camera.hs 246;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f @@ -3582,7 +3582,7 @@ findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findIndex src/IntMapHelp.hs 85;" f findReverseEdge src/Polyhedra.hs 50;" f findReverseEdgeList src/Polyhedra.hs 57;" f -findWallFreeDropPoint src/Dodge/FloorItem.hs 43;" f +findWallFreeDropPoint src/Dodge/FloorItem.hs 31;" f findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f findWithIx src/ListHelp.hs 123;" f fireFadeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 552;" f @@ -3658,7 +3658,7 @@ fusePairs src/Dodge/Path.hs 153;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f -g src/ShortShow.hs 33;" f +g src/ShortShow.hs 44;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gRandify src/Dodge/Randify.hs 11;" f gadgetEffect src/Dodge/HeldUse.hs 46;" f @@ -3689,7 +3689,7 @@ getBulletType src/Dodge/HeldUse.hs 933;" f getCloseObj src/Dodge/Update/Input/InGame.hs 528;" f getCommand src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 55;" f -getCrMoveSpeed src/Dodge/Creature/Statistics.hs 46;" f +getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDistortions src/Dodge/Render.hs 435;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 49;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1300;" f @@ -3801,7 +3801,7 @@ heldItemMuzVel src/Dodge/HeldUse.hs 1030;" f heldItemMuzzles src/Dodge/HeldUse.hs 182;" f heldItemRifling src/Dodge/HeldUse.hs 1073;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 247;" f -heldItemWeight src/Dodge/Creature/Statistics.hs 75;" f +heldItemWeight src/Dodge/Creature/Statistics.hs 74;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f heldTorqueAmount src/Dodge/HeldUse.hs 578;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f @@ -3891,7 +3891,7 @@ invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDT src/Dodge/Item/Grammar.hs 215;" f invDT' src/Dodge/Item/Grammar.hs 220;" f -invDimColor src/Dodge/DisplayInventory.hs 194;" f +invDimColor src/Dodge/DisplayInventory.hs 190;" f invHead src/Dodge/Render/HUD.hs 401;" f invIMDT src/Dodge/Item/Grammar.hs 248;" f invIndents src/Dodge/Item/Grammar.hs 255;" f @@ -3903,7 +3903,7 @@ invSetSelection src/Dodge/Inventory.hs 195;" f invSetSelectionPos src/Dodge/Inventory.hs 203;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSize src/Dodge/Inventory/CheckSlots.hs 32;" f -inventoryX src/Dodge/Creature.hs 114;" f +inventoryX src/Dodge/Creature.hs 113;" f inverseSelNumPos src/Dodge/SelectionSections.hs 228;" f inverseSelSecYint src/Dodge/SelectionSections.hs 201;" f inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 212;" f @@ -3981,7 +3981,7 @@ itemString src/Dodge/Item/Display.hs 56;" f itemToFunction src/Dodge/Item/Grammar.hs 106;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f itemTriggerType src/Dodge/BaseTriggerType.hs 16;" f -itemWeight src/Dodge/Creature/Statistics.hs 69;" f +itemWeight src/Dodge/Creature/Statistics.hs 68;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 30;" f @@ -3999,8 +3999,8 @@ jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f jumpLegs src/Dodge/Item/Equipment.hs 93;" f justify src/Justify.hs 9;" f -k src/ShortShow.hs 33;" f -k' src/ShortShow.hs 33;" f +k src/ShortShow.hs 44;" f +k' src/ShortShow.hs 44;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 60;" f @@ -4070,7 +4070,7 @@ listConfig src/Dodge/Menu.hs 216;" f listControls src/Dodge/Menu.hs 228;" f listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 190;" f -listSelectionColorPicture src/Dodge/DisplayInventory.hs 310;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 306;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 43;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f @@ -4107,7 +4107,7 @@ lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f lockedStart src/Dodge/Room/RunPast.hs 35;" f logistic src/Dodge/Base.hs 98;" f longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f -longCrit src/Dodge/Creature.hs 71;" f +longCrit src/Dodge/Creature.hs 70;" f longRoom src/Dodge/Room/LongRoom.hs 22;" f longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 142;" f @@ -4122,7 +4122,7 @@ lsColPosRad src/Dodge/LightSource.hs 29;" f lsPosCol src/Dodge/LightSource.hs 26;" f lsPosRad src/Dodge/LightSource.hs 17;" f ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 12;" f -m src/ShortShow.hs 33;" f +m src/ShortShow.hs 44;" f mAT src/Dodge/Item/MagAmmoType.hs 19;" f machineAddSound src/Dodge/Machine.hs 49;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f @@ -4260,7 +4260,7 @@ minAndMax src/FoldableHelp.hs 109;" f minCrIXOn src/Dodge/Zoning/Creature.hs 47;" f minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 452;" f -miniGunCrit src/Dodge/Creature.hs 64;" f +miniGunCrit src/Dodge/Creature.hs 63;" f miniGunX src/Dodge/Item/Held/Cane.hs 33;" f miniGunXPict src/Dodge/Item/Draw/SPic.hs 384;" f miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 381;" f @@ -4307,7 +4307,7 @@ mtTopLabels src/Dodge/Tree/Compose.hs 49;" f mtUnderLabels src/Dodge/Tree/Compose.hs 52;" f muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f muin src/Dodge/RoomLink.hs 132;" f -multGunCrit src/Dodge/Creature.hs 78;" f +multGunCrit src/Dodge/Creature.hs 77;" f multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f @@ -4411,7 +4411,7 @@ overlapSegWalls src/Dodge/Base/Collide.hs 203;" f overrideInternal src/Dodge/Creature/ReaderUpdate.hs 174;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f -p src/ShortShow.hs 33;" f +p src/ShortShow.hs 44;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pairInPolys src/Dodge/Room/Path.hs 54;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 82;" f @@ -4458,7 +4458,6 @@ pincerP''' src/Dodge/Creature/Boid.hs 75;" f pingPongBetween src/Render.hs 221;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f -pistolCrit src/Dodge/Creature/PistolCrit.hs 12;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 227;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f @@ -4484,7 +4483,7 @@ placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 88;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 69;" f placeString src/Dodge/Render/MenuScreen.hs 61;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 167;" f -plainRegex src/Dodge/DisplayInventory.hs 197;" f +plainRegex src/Dodge/DisplayInventory.hs 193;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f playSoundAndUpdate src/Sound.hs 54;" f @@ -4736,7 +4735,7 @@ reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 69;" f refract src/Dodge/Item/Weapon/LaserPath.hs 43;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 38;" f regexCombs src/Dodge/DisplayInventory.hs 72;" f -regexList src/Dodge/DisplayInventory.hs 316;" f +regexList src/Dodge/DisplayInventory.hs 312;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 602;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 600;" f @@ -4745,7 +4744,7 @@ remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 151;" f removeAmmoFromMag src/Dodge/HeldUse.hs 922;" f -removeDot src/ShortShow.hs 29;" f +removeDot src/ShortShow.hs 40;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f @@ -4909,8 +4908,8 @@ seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 205;" f secondColumnParams src/Dodge/ListDisplayParams.hs 43;" f -sectionsDesiredLines src/Dodge/DisplayInventory.hs 206;" f -sectionsSizes src/Dodge/DisplayInventory.hs 209;" f +sectionsDesiredLines src/Dodge/DisplayInventory.hs 202;" f +sectionsSizes src/Dodge/DisplayInventory.hs 205;" f seedStartMenu src/Dodge/Menu.hs 82;" f seedStartOptions src/Dodge/Menu.hs 85;" f segOnCirc src/Geometry.hs 114;" f @@ -4945,7 +4944,7 @@ setFallback src/Dodge/PlacementSpot.hs 132;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f -setInvPosFromSS src/Dodge/Inventory/Location.hs 86;" f +setInvPosFromSS src/Dodge/Inventory/Location.hs 85;" f setLayer src/Picture/Base.hs 139;" f setLinkType src/Dodge/RoomLink.hs 60;" f setLinkTypePD src/Dodge/RoomLink.hs 67;" f @@ -5042,7 +5041,7 @@ shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f shootingRange src/Dodge/Room/Room.hs 332;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f -shortShow src/ShortShow.hs 9;" f +shortShow src/ShortShow.hs 7;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 708;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 68;" f shoulderSH src/Dodge/Creature/Picture.hs 131;" f @@ -5051,9 +5050,9 @@ showEquipItem src/Dodge/Item/Display.hs 107;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 67;" f +showManObj src/Dodge/TestString.hs 74;" f showTerminalError src/Dodge/Debug/Terminal.hs 78;" f -showTimeFlow src/Dodge/TestString.hs 90;" f +showTimeFlow src/Dodge/TestString.hs 97;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 142;" f shrinkVert src/Geometry/Polygon.hs 146;" f shuffle src/RandomHelp.hs 49;" f @@ -5123,7 +5122,7 @@ sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f sparkRandDir src/Dodge/Spark.hs 116;" f sparkToDamage src/Dodge/Spark.hs 39;" f spawnAt src/Dodge/SpawnAt.hs 14;" f -spawnerCrit src/Dodge/Creature.hs 57;" f +spawnerCrit src/Dodge/Creature.hs 56;" f spawnerRoom src/Dodge/Room/Room.hs 360;" f speedLegs src/Dodge/Item/Equipment.hs 90;" f splashMenu src/Dodge/Menu.hs 30;" f @@ -5138,7 +5137,7 @@ splitTrunkAt src/TreeHelp.hs 166;" f spreadAroundCenter src/Dodge/Base.hs 173;" f spreadCenter src/Dodge/Base.hs 187;" f spreadFromCenter src/Dodge/Base.hs 176;" f -spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 12;" f +spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 11;" f spreadOut src/Dodge/Creature/Boid.hs 158;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f @@ -5165,12 +5164,12 @@ ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 98;" f stackPicturesAtOff src/Dodge/Render/List.hs 101;" f stackText src/Picture/Base.hs 188;" f -stackedInventory src/Dodge/Creature.hs 311;" f -startCr src/Dodge/Creature.hs 93;" f +stackedInventory src/Dodge/Creature.hs 310;" f +startCr src/Dodge/Creature.hs 92;" f startCrafts src/Dodge/Room/Start.hs 93;" f startDrag src/Dodge/Update/Input/InGame.hs 271;" f -startInvList src/Dodge/Creature.hs 108;" f -startInventory src/Dodge/Creature.hs 111;" f +startInvList src/Dodge/Creature.hs 107;" f +startInventory src/Dodge/Creature.hs 110;" f startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f startRoom src/Dodge/Room/Start.hs 53;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f @@ -5186,8 +5185,8 @@ stopAllSounds src/Sound.hs 125;" f stopBulletAt src/Dodge/Bullet.hs 197;" f stopPushing src/Dodge/Block.hs 105;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f -strFromEquipment src/Dodge/Creature/Statistics.hs 49;" f -strFromHeldItem src/Dodge/Creature/Statistics.hs 63;" f +strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f +strFromHeldItem src/Dodge/Creature/Statistics.hs 62;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 36;" f strictify src/MaybeHelp.hs 37;" f strideRot src/Dodge/Item/HeldOffset.hs 71;" f @@ -5206,7 +5205,7 @@ swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 172;" f switchDoor src/Dodge/Placement/Instance/Door.hs 96;" f switchWallCol src/Dodge/Default/Door.hs 12;" f -t src/ShortShow.hs 33;" f +t src/ShortShow.hs 44;" f tEast src/Dodge/Room/Corridor.hs 90;" f tToBTree src/Dodge/Tree/Compose.hs 92;" f tWest src/Dodge/Room/Corridor.hs 115;" f @@ -5252,8 +5251,8 @@ teslaGunPic src/Dodge/Item/Draw/SPic.hs 421;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 9;" f -testInventory src/Dodge/Creature.hs 292;" f -testStringInit src/Dodge/TestString.hs 31;" f +testInventory src/Dodge/Creature.hs 291;" f +testStringInit src/Dodge/TestString.hs 33;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f textInputFocus src/Dodge/InputFocus.hs 14;" f @@ -5311,7 +5310,7 @@ toTopLeft src/Dodge/Render/List.hs 219;" f toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f toV4 src/Geometry/Data.hs 60;" f -toggleCombineInv src/Dodge/DisplayInventory.hs 319;" f +toggleCombineInv src/Dodge/DisplayInventory.hs 315;" f toggleCommands src/Dodge/Terminal.hs 100;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 106;" f @@ -5324,7 +5323,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" 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 63;" f +topTestPart src/Dodge/TestString.hs 70;" f torch src/Dodge/Item/Held/Utility.hs 23;" f torchShape src/Dodge/Item/Draw/SPic.hs 290;" f torqueAmount src/Dodge/HeldUse.hs 573;" f @@ -5529,8 +5528,8 @@ updateRightParentSF src/Dodge/Item/Grammar.hs 180;" f updateRootItemID src/Dodge/Inventory/Location.hs 38;" f updateScopeZoom src/Dodge/Update/Scroll.hs 78;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f -updateSection src/Dodge/DisplayInventory.hs 266;" f -updateSectionsPositioning src/Dodge/DisplayInventory.hs 245;" f +updateSection src/Dodge/DisplayInventory.hs 262;" f +updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f updateShockwaves src/Dodge/Update.hs 673;" f updateSingleNodes src/TreeHelp.hs 97;" f