diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 9ab43abbf..0c73beb64 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -41,6 +41,7 @@ tryPutItemInInv cid itid w = do & cWorld . lWorld . items . ix itid . itLocation .~ itloc & cWorld . lWorld . floorItems . at itid .~ Nothing & updateselectionextra invid + & cWorld . highlightItems . at itid ?~ 20 where updateselectionextra i | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i)) diff --git a/src/Dodge/Item/MagAmmoType.hs b/src/Dodge/Item/MagAmmoType.hs index 8ff453fe9..c4044c251 100644 --- a/src/Dodge/Item/MagAmmoType.hs +++ b/src/Dodge/Item/MagAmmoType.hs @@ -2,6 +2,7 @@ module Dodge.Item.MagAmmoType ( magAmmoType, + magMax, ) where import Control.Lens @@ -24,3 +25,6 @@ mAT = \case SHELLMAG -> LauncherAmmo BATTERY -> ElectricalAmmo CHEMFUELPOUCH -> GasAmmo + +magMax :: Item -> Maybe Int +magMax _ = Just 100 diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index 52cdb3462..867a28003 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -6,6 +6,10 @@ module Dodge.WorldEffect ( doTmWdWd, ) where +import Data.Traversable (mapAccumR) +import Dodge.Item.MagAmmoType +import qualified Data.IntSet as IS +import Dodge.Data.AmmoType import Color import Dodge.Terminal import NewInt @@ -115,13 +119,35 @@ tmDistributeAmmo tm w = fromMaybe w $ do sid <- w ^? cWorld . lWorld . machines . ix mid . mcType . mcdStorageMachine . _Just McStorage atype aamount <- w ^? cWorld . lWorld . machines . ix sid . mcType - return $ w & cWorld . lWorld . terminals . ix (tm ^. tmID) . tmStatus - .~ TerminalPressTo "" + let (x',w') = distributeAmmoToYou atype aamount w + return $ w' + & cWorld . lWorld . machines . ix sid . mcType . mcsAmount .~ x' & cWorld . lWorld . terminals . ix (tm ^. tmID) . tmFutureLines .~ - [TLine 1 [TerminalLineConst "" yellow] (TmTmSetStatus (TerminalPressTo "RETRY")) + [TLine 1 [TerminalLineConst (show x' <>" "<>show atype<>" REMAINING IN STORAGE") white] TmWdId + ,TLine 1 [TerminalLineConst "" yellow] (TmTmSetStatus (TerminalPressTo "RETRY")) ,TLine 1 [TerminalLineConst "" white] TmWdWdPowerDownTerminal ] +distributeAmmoToYou :: AmmoType -> Int -> World -> (Int,World) +distributeAmmoToYou atype x w = fromMaybe (0,w) $ do + is <- fmap IM.elems $ w ^? cWorld . lWorld . creatures . ix 0 . crInv . unNIntMap + let itms = IM.filter (\itm -> magAmmoType itm == Just atype) $ + IM.restrictKeys (w ^. cWorld . lWorld . items) (IS.fromList is) + (x',itmams) = mapAccumR distributeAmmoToItem x itms + return (x', IM.foldlWithKey' f w itmams) + where + f w' i y = w' & cWorld . highlightItems . at i ?~ 20 + & cWorld . lWorld . items . ix i . itConsumables . _Just .~ y + + +distributeAmmoToItem :: Int -> Item -> (Int,Int) +distributeAmmoToItem x itm = fromMaybe (x,0) $ do + m <- magMax itm + cur <- itm ^. itConsumables + let d = m - cur + t = min x d + return (x-t,cur+t) + resetTerminal :: TerminalStatus -> Terminal -> World -> World resetTerminal x tm = (cWorld . lWorld . terminals . ix (_tmID tm) . tmStatus .~ x) diff --git a/tags b/tags index 3e1569ca1..bac4c8d52 100644 --- a/tags +++ b/tags @@ -520,6 +520,7 @@ HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 14;" C HiddenGoal src/Dodge/Data/Scenario.hs 14;" C +HighlightSI src/Dodge/Data/SelectionList.hs 54;" C HomeUsingRemoteScreen src/Dodge/Data/Projectile.hs 41;" C HomeUsingTargeting src/Dodge/Data/Projectile.hs 42;" C Hospital src/Dodge/Data/Scenario.hs 69;" C @@ -1127,7 +1128,7 @@ SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 173;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 101;" C -SIDisplayMod src/Dodge/Data/SelectionList.hs 53;" t +SIDisplayMod src/Dodge/Data/SelectionList.hs 52;" t SMG src/Dodge/Data/Item/Combine.hs 146;" C SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 99;" C SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 160;" C @@ -1155,7 +1156,7 @@ 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 -SelItem src/Dodge/Data/SelectionList.hs 42;" C +SelItem src/Dodge/Data/SelectionList.hs 41;" C SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 26;" C SelSection src/Dodge/Data/SelectionList.hs 29;" t SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 21;" C @@ -2266,14 +2267,14 @@ _shapeHalfSize src/Shape/Data.hs 13;" f _shapeShader src/Data/Preload/Render.hs 28;" f _shellPayload src/Dodge/Data/Item/Combine.hs 101;" f _shockwaves src/Dodge/Data/LWorld.hs 113;" f -_siColor src/Dodge/Data/SelectionList.hs 47;" f -_siDisplayMod src/Dodge/Data/SelectionList.hs 50;" f -_siHeight src/Dodge/Data/SelectionList.hs 44;" f -_siIsSelectable src/Dodge/Data/SelectionList.hs 46;" f -_siOffX src/Dodge/Data/SelectionList.hs 48;" f -_siPayload src/Dodge/Data/SelectionList.hs 49;" f -_siPictures src/Dodge/Data/SelectionList.hs 43;" f -_siWidth src/Dodge/Data/SelectionList.hs 45;" f +_siColor src/Dodge/Data/SelectionList.hs 46;" f +_siDisplayMod src/Dodge/Data/SelectionList.hs 49;" f +_siHeight src/Dodge/Data/SelectionList.hs 43;" f +_siIsSelectable src/Dodge/Data/SelectionList.hs 45;" f +_siOffX src/Dodge/Data/SelectionList.hs 47;" f +_siPayload src/Dodge/Data/SelectionList.hs 48;" f +_siPictures src/Dodge/Data/SelectionList.hs 42;" f +_siWidth src/Dodge/Data/SelectionList.hs 44;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 122;" f _silhouetteEBO src/Data/Preload/Render.hs 30;" f @@ -2510,7 +2511,7 @@ addArmour src/Dodge/Creature.hs 82;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f -addDepth src/Picture/Base.hs 133;" f +addDepth src/Picture/Base.hs 134;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" f addGib4 src/Dodge/Prop/Gib.hs 52;" f @@ -2597,10 +2598,10 @@ applyTorqueCME src/Dodge/HeldUse.hs 570;" f applyWorldConfig src/Dodge/Config.hs 55;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f -arc src/Picture/Base.hs 287;" f +arc src/Picture/Base.hs 291;" f arcFull src/Picture/Arc.hs 11;" f arcPart src/Picture/Arc.hs 24;" f -arcSolid src/Picture/Base.hs 276;" f +arcSolid src/Picture/Base.hs 280;" f arcStepwise src/Geometry.hs 326;" f arcStepwisePositive src/Geometry.hs 340;" f arcTest src/Picture/Test.hs 9;" f @@ -2679,12 +2680,12 @@ batteryPack src/Dodge/Item/Equipment.hs 46;" f belowNumX src/Dodge/Combine/Graph.hs 84;" f beltMag src/Dodge/Item/Ammo.hs 39;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 226;" f -bgateCalc src/Dodge/Inventory/SelectionList.hs 119;" f +bgateCalc src/Dodge/Inventory/SelectionList.hs 121;" f bgunSound src/Dodge/HeldUse.hs 514;" f bindFBO src/Render.hs 235;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f -blank src/Picture/Base.hs 59;" f +blank src/Picture/Base.hs 60;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f blinkActionFail src/Dodge/Creature/Action/Blink.hs 87;" f blinkActionMousePos src/Dodge/Creature/Action/Blink.hs 24;" f @@ -2736,7 +2737,7 @@ branchWith src/Dodge/Room/Room.hs 77;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f btSPic src/Dodge/Render/ShapePicture.hs 131;" f -btText src/Dodge/Inventory/SelectionList.hs 240;" f +btText src/Dodge/Inventory/SelectionList.hs 242;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 429;" f bufferPokedVBO src/Shader/Bind.hs 19;" f @@ -2767,7 +2768,7 @@ cardinalVectors src/Dodge/FloorItem.hs 24;" f cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f ceilingTo src/Geometry/Zone.hs 15;" f cenLasTur src/Dodge/Room/LasTurret.hs 34;" f -centerText src/Picture/Base.hs 184;" f +centerText src/Picture/Base.hs 185;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f centerVaultRoom src/Dodge/Room/Procedural.hs 269;" f centroid src/Geometry/Polygon.hs 169;" f @@ -2776,7 +2777,7 @@ chainPairs src/Geometry.hs 360;" f changeSwapOther src/Dodge/Inventory.hs 141;" f changeSwapSel src/Dodge/Inventory.hs 134;" f changeSwapWith src/Dodge/Inventory.hs 175;" f -charToTuple src/Picture/Base.hs 317;" f +charToTuple src/Picture/Base.hs 321;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 24;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 27;" f @@ -2816,10 +2817,10 @@ circOnAnyCr src/Dodge/Base/Collide.hs 292;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f circOnSomeWall src/Dodge/Base/Collide.hs 286;" f -circle src/Picture/Base.hs 180;" f +circle src/Picture/Base.hs 181;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f -circleSolid src/Picture/Base.hs 164;" f -circleSolidCol src/Picture/Base.hs 168;" f +circleSolid src/Picture/Base.hs 165;" f +circleSolidCol src/Picture/Base.hs 169;" f clAlt src/Dodge/Cloud.hs 5;" f clColor src/Shader/Poke/Cloud.hs 39;" f clZoneSize src/Dodge/Zoning/Cloud.hs 24;" f @@ -2839,9 +2840,9 @@ clicker src/Dodge/Item/Scope.hs 82;" f clipV src/Geometry/Vector.hs 48;" f clipZoom src/Dodge/Update/Camera.hs 237;" f clockCycle src/Dodge/Clock.hs 7;" f -closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 225;" f -closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 209;" f -closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 246;" f +closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 227;" f +closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 211;" f +closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 248;" f closeObjectInfo src/Dodge/Render/HUD.hs 228;" f closestPointOnLine src/Geometry/Intersect.hs 272;" f closestPointOnLineParam src/Geometry/Intersect.hs 288;" f @@ -2870,7 +2871,7 @@ collideCircWalls src/Dodge/Base/Collide.hs 253;" f collidePoint src/Dodge/Base/Collide.hs 52;" f collidePointTestFilter src/Dodge/Base/Collide.hs 188;" f collidePointWallsFilter src/Dodge/Base/Collide.hs 202;" f -color src/Picture/Base.hs 108;" f +color src/Picture/Base.hs 109;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 233;" f combinationsDotGraph src/Dodge/Combine/Graph.hs 93;" f @@ -2971,7 +2972,7 @@ crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 622;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 10;" f createHeadLamp src/Dodge/Euse.hs 58;" f -createItemYou src/Dodge/Inventory/Add.hs 61;" f +createItemYou src/Dodge/Inventory/Add.hs 62;" f createLightMap src/Render.hs 28;" f createProjectile src/Dodge/HeldUse.hs 1276;" f createProjectileR src/Dodge/HeldUse.hs 1225;" f @@ -3169,7 +3170,7 @@ displayControls src/Dodge/Menu.hs 241;" f displayFrameTicks src/Dodge/Render/Picture.hs 50;" f displayFreeSlots src/Dodge/DisplayInventory.hs 193;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f -displayPulse src/Dodge/Inventory/SelectionList.hs 180;" f +displayPulse src/Dodge/Inventory/SelectionList.hs 182;" f displayTerminalLineString src/Dodge/Update.hs 486;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f @@ -3371,7 +3372,7 @@ drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 362;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f -drawText src/Picture/Base.hs 220;" f +drawText src/Picture/Base.hs 224;" f drawTitle src/Dodge/Render/MenuScreen.hs 49;" f drawTitleBackground src/Dodge/Render/List.hs 45;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f @@ -3435,9 +3436,9 @@ endArcPos src/Dodge/Tesla.hs 87;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 271;" f endRegex src/Dodge/Update/Input/InGame.hs 265;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f -enterCombineInv src/Dodge/DisplayInventory.hs 318;" f +enterCombineInv src/Dodge/DisplayInventory.hs 320;" f enumOption src/Dodge/Menu/OptionType.hs 17;" f -epText src/Dodge/Inventory/SelectionList.hs 77;" f +epText src/Dodge/Inventory/SelectionList.hs 79;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqTypeToSites src/Dodge/Inventory/RBList.hs 77;" f @@ -3598,7 +3599,7 @@ getDistortions src/Dodge/Render.hs 441;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f -getItemValue src/Dodge/Inventory/SelectionList.hs 148;" f +getItemValue src/Dodge/Inventory/SelectionList.hs 150;" f getLaserColor src/Dodge/HeldUse.hs 707;" f getLaserDamage src/Dodge/HeldUse.hs 704;" f getLaserPhaseV src/Dodge/HeldUse.hs 701;" f @@ -3661,6 +3662,7 @@ gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 726;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 682;" f gyroscope src/Dodge/Item/Scope.hs 156;" f +hackBoldText src/Picture/Base.hs 198;" f hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 49;" f halfWidth src/Dodge/Base/Window.hs 49;" f @@ -3725,9 +3727,9 @@ holdForm src/Dodge/Creature/Boid.hs 139;" f holsterWeapon src/Dodge/Creature/Volition.hs 15;" f homingModule src/Dodge/Item/Scope.hs 48;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f -hotkeyToChar src/Dodge/Inventory/SelectionList.hs 189;" f +hotkeyToChar src/Dodge/Inventory/SelectionList.hs 191;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 82;" f -hotkeyToString src/Dodge/Inventory/SelectionList.hs 186;" f +hotkeyToString src/Dodge/Inventory/SelectionList.hs 188;" f iShape src/Dodge/Placement/Instance/LightSource.hs 51;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f @@ -3790,7 +3792,7 @@ intersectSegsSeg src/Geometry/Intersect.hs 253;" f intervalList src/Geometry.hs 312;" f interweave src/Justify.hs 17;" f introScan src/Dodge/Item/Scope.hs 57;" f -introScanValue src/Dodge/Inventory/SelectionList.hs 81;" f +introScanValue src/Dodge/Inventory/SelectionList.hs 83;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f invAdj src/Dodge/Item/Grammar.hs 235;" f invCursorParams src/Dodge/ListDisplayParams.hs 37;" f @@ -3867,9 +3869,9 @@ itemBulkiness src/Dodge/Creature/YourControl.hs 188;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 59;" f itemDetectorEffect src/Dodge/HeldUse.hs 794;" f -itemDisplay src/Dodge/Inventory/SelectionList.hs 51;" f +itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f itemEquipPict src/Dodge/Item/Draw.hs 18;" f -itemExternalValue src/Dodge/Inventory/SelectionList.hs 86;" f +itemExternalValue src/Dodge/Inventory/SelectionList.hs 88;" f itemFromAmmoMag src/Dodge/Item.hs 42;" f itemFromAttachType src/Dodge/Item.hs 51;" f itemFromBase src/Dodge/Item.hs 18;" f @@ -3885,8 +3887,8 @@ itemRotTreeSPic src/Dodge/Item/Draw/SPicTree.hs 16;" f itemSPic src/Dodge/Item/Draw/SPic.hs 17;" f itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 57;" f -itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 125;" f -itemScrollValue src/Dodge/Inventory/SelectionList.hs 152;" f +itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 127;" f +itemScrollValue src/Dodge/Inventory/SelectionList.hs 154;" f itemShapeMax src/Dodge/Item/Orientation.hs 56;" f itemShapeMaxX src/Dodge/Item/Orientation.hs 47;" f itemShapeMaxY src/Dodge/Item/Orientation.hs 50;" f @@ -3974,14 +3976,14 @@ lightSensor src/Dodge/Placement/Instance/Sensor.hs 40;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f lightx4 src/Color.hs 145;" f linGrad src/Geometry/Intersect.hs 241;" f -line src/Picture/Base.hs 226;" f -lineCol src/Picture/Base.hs 230;" f +line src/Picture/Base.hs 230;" f +lineCol src/Picture/Base.hs 234;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 128;" f lineOutputTerminal src/Dodge/Room/Warning.hs 66;" f lineSplit src/Justify.hs 26;" f -lineThick src/Picture/Base.hs 234;" f +lineThick src/Picture/Base.hs 238;" f lineUp src/Dodge/Creature/Boid.hs 150;" f linksDAGToPath src/Dodge/Room/Path.hs 13;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f @@ -3989,7 +3991,7 @@ listConfig src/Dodge/Menu.hs 234;" f listControls src/Dodge/Menu.hs 246;" f listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 196;" f -listSelectionColorPicture src/Dodge/DisplayInventory.hs 303;" f +listSelectionColorPicture src/Dodge/DisplayInventory.hs 302;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 389;" f @@ -4057,7 +4059,7 @@ magenta src/Color.hs 19;" f main appDodge/Main.hs 28;" f main bench/Bench.hs 15;" f main test/Spec.hs 12;" f -makeArc src/Picture/Base.hs 157;" f +makeArc src/Picture/Base.hs 158;" f makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 70;" f makeBlockDebris src/Dodge/Block/Debris.hs 36;" f @@ -4187,8 +4189,8 @@ miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 756;" f miniTree2 src/Dodge/Room/Room.hs 121;" f minimumOn src/FoldlHelp.hs 14;" f mirrorXAxis src/Geometry/Polygon.hs 68;" f -mirrorxz src/Picture/Base.hs 335;" f -mirroryz src/Picture/Base.hs 340;" f +mirrorxz src/Picture/Base.hs 339;" f +mirroryz src/Picture/Base.hs 344;" f missileLaunchS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 714;" f mixColors src/Color.hs 86;" f mixColorsFrac src/Color.hs 82;" f @@ -4316,13 +4318,13 @@ orthogonalPointOnSeg src/Geometry/Intersect.hs 312;" f outLink src/Dodge/RoomLink.hs 120;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f outwardIntegers src/Dodge/Base.hs 181;" f -overCol src/Picture/Base.hs 308;" f +overCol src/Picture/Base.hs 312;" f overColObj src/Shape.hs 269;" f overColSH src/Shape.hs 237;" f overDebugEvent src/Dodge/Debug.hs 31;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkType src/Dodge/RoomLink.hs 105;" f -overPos src/Picture/Base.hs 303;" f +overPos src/Picture/Base.hs 307;" f overPosObj src/Shape.hs 273;" f overPosSH src/Shape.hs 257;" f overPosSP src/ShapePicture.hs 41;" f @@ -4365,9 +4367,9 @@ performPathTo src/Dodge/Creature/Action.hs 116;" f performTurnToA src/Dodge/Creature/Action.hs 128;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f picFormat src/Polyhedra.hs 23;" f -picMap src/Picture/Base.hs 67;" f -pickUpItem src/Dodge/Inventory/Add.hs 69;" f -pickUpItemAt src/Dodge/Inventory/Add.hs 74;" f +picMap src/Picture/Base.hs 68;" f +pickUpItem src/Dodge/Inventory/Add.hs 70;" f +pickUpItemAt src/Dodge/Inventory/Add.hs 75;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 660;" f pincerP src/Dodge/Creature/Boid.hs 63;" f pincerP' src/Dodge/Creature/Boid.hs 96;" f @@ -4447,8 +4449,8 @@ pokeVerxs src/Shader/Poke.hs 32;" f pokeW src/Shader/Poke.hs 91;" f pokeWall src/Shader/Poke.hs 80;" f pokeWallsWindows src/Shader/Poke.hs 52;" f -poly3 src/Picture/Base.hs 84;" f -poly3Col src/Picture/Base.hs 88;" f +poly3 src/Picture/Base.hs 85;" f +poly3Col src/Picture/Base.hs 89;" f polyChasm src/Dodge/Room/Tutorial.hs 182;" f polyChasmC src/Dodge/Room/Tutorial.hs 191;" f polyCirc src/Shape.hs 47;" f @@ -4463,9 +4465,9 @@ polyToPics src/Polyhedra.hs 122;" f polyToTris src/Geometry/Triangulate.hs 7;" f polyToTris' src/Geometry.hs 172;" f polyToTris'' src/Geometry/Triangulate.hs 15;" f -polygon src/Picture/Base.hs 72;" f -polygonCol src/Picture/Base.hs 78;" f -polygonWire src/Picture/Base.hs 63;" f +polygon src/Picture/Base.hs 73;" f +polygonCol src/Picture/Base.hs 79;" f +polygonWire src/Picture/Base.hs 64;" f polysToPic src/Polyhedra.hs 130;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posRms src/Dodge/Tree/Shift.hs 44;" f @@ -4621,7 +4623,7 @@ 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 71;" f -regexList src/Dodge/DisplayInventory.hs 309;" f +regexList src/Dodge/DisplayInventory.hs 311;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 634;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 632;" f @@ -4715,7 +4717,7 @@ rose src/Color.hs 20;" f rotD src/Padding.hs 44;" f rotMatr src/MatrixHelper.hs 79;" f rotU src/Padding.hs 39;" f -rotate src/Picture/Base.hs 153;" f +rotate src/Picture/Base.hs 154;" f rotate3 src/Geometry/Vector3D.hs 48;" f rotate3x src/Geometry/Vector3D.hs 60;" f rotate3y src/Geometry/Vector3D.hs 66;" f @@ -4764,8 +4766,8 @@ saveSlotPath src/Dodge/Save.hs 63;" f saveWorldInSlot src/Dodge/Save.hs 68;" f sawtoothFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 754;" f scToTS src/Dodge/Event/Input.hs 34;" f -scale src/Picture/Base.hs 149;" f -scale3 src/Picture/Base.hs 145;" f +scale src/Picture/Base.hs 150;" f +scale3 src/Picture/Base.hs 146;" f scaleMat src/MatrixHelper.hs 71;" f scaleMatrix src/MatrixHelper.hs 68;" f scaleSH src/Shape.hs 265;" f @@ -4825,14 +4827,14 @@ setChannelPos src/Sound.hs 151;" f setClickWorldPos src/Dodge/Update.hs 101;" f setClip src/Dodge/Debug.hs 193;" f setClusterID src/Dodge/Combine/Graph.hs 114;" f -setDepth src/Picture/Base.hs 128;" f +setDepth src/Picture/Base.hs 129;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 125;" f setInLinks src/Dodge/RoomLink.hs 53;" f setInLinksByType src/Dodge/RoomLink.hs 72;" f setInLinksPD src/Dodge/RoomLink.hs 92;" f setInvPosFromSS src/Dodge/Inventory/Location.hs 92;" f -setLayer src/Picture/Base.hs 139;" f +setLayer src/Picture/Base.hs 140;" f setLinkType src/Dodge/RoomLink.hs 78;" f setLinkTypePD src/Dodge/RoomLink.hs 85;" f setMusicVolume src/Sound.hs 163;" f @@ -5041,7 +5043,7 @@ ssSetCursor src/Dodge/SelectionSections.hs 59;" f ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 99;" f stackPicturesAtOff src/Dodge/Render/List.hs 102;" f -stackText src/Picture/Base.hs 188;" f +stackText src/Picture/Base.hs 189;" f stackedInventory src/Dodge/Creature.hs 309;" f startCr src/Dodge/Creature.hs 90;" f startCrafts src/Dodge/Room/Start.hs 93;" f @@ -5071,7 +5073,7 @@ strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strictify src/MaybeHelp.hs 35;" f strideRot src/Dodge/Item/HeldOffset.hs 71;" f -stringToList src/Picture/Base.hs 313;" f +stringToList src/Picture/Base.hs 317;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f @@ -5130,26 +5132,26 @@ teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f testEvent src/Dodge/Event/Test.hs 11;" f testInventory src/Dodge/Creature.hs 290;" f testStringInit src/Dodge/TestString.hs 34;" f -text src/Picture/Base.hs 193;" f +text src/Picture/Base.hs 194;" f textGrad src/Picture/Text.hs 5;" f textInputBlurb src/Dodge/Terminal.hs 37;" f textInputFocus src/Dodge/InputFocus.hs 11;" f -textJustifyCenter src/Picture/Base.hs 212;" f -textJustifyLeft src/Picture/Base.hs 208;" f -textJustifyRight src/Picture/Base.hs 198;" f -textRight src/Picture/Base.hs 203;" f +textJustifyCenter src/Picture/Base.hs 216;" f +textJustifyLeft src/Picture/Base.hs 212;" f +textJustifyRight src/Picture/Base.hs 202;" f +textRight src/Picture/Base.hs 207;" f textTerminal src/Dodge/Terminal.hs 34;" f -textVMirror src/Picture/Base.hs 216;" f +textVMirror src/Picture/Base.hs 220;" f tflat2 src/Picture/Data.hs 56;" f tflat3 src/Picture/Data.hs 60;" f tflat4 src/Picture/Data.hs 64;" f theCleanup appDodge/Main.hs 65;" f theColumns src/Dodge/Tree/Shift.hs 146;" f theUpdateStep appDodge/Main.hs 101;" f -thickArc src/Picture/Base.hs 298;" f -thickCircle src/Picture/Base.hs 272;" f -thickLine src/Picture/Base.hs 244;" f -thickLineCol src/Picture/Base.hs 255;" f +thickArc src/Picture/Base.hs 302;" f +thickCircle src/Picture/Base.hs 276;" f +thickLine src/Picture/Base.hs 248;" f +thickLineCol src/Picture/Base.hs 259;" f thinHighBar src/Dodge/Room/Foreground.hs 77;" f thingHit src/Dodge/WorldEvent/ThingsHit.hs 118;" f thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 106;" f @@ -5180,7 +5182,7 @@ tlSetStatus src/Dodge/Terminal.hs 99;" f tmDistributeAmmo src/Dodge/WorldEffect.hs 112;" f tmDistributeLines src/Dodge/Room/Room.hs 449;" f tmUpdate src/Dodge/Update.hs 489;" f -toBinary src/Dodge/Inventory/SelectionList.hs 142;" f +toBinary src/Dodge/Inventory/SelectionList.hs 144;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f @@ -5192,7 +5194,7 @@ toTopLeft src/Dodge/Render/List.hs 226;" 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 312;" f +toggleCombineInv src/Dodge/DisplayInventory.hs 314;" f toggleCommands src/Dodge/Terminal.hs 77;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 67;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 105;" f @@ -5217,14 +5219,14 @@ tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 416;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f -tranRot src/Picture/Base.hs 124;" f +tranRot src/Picture/Base.hs 125;" f transMat src/MatrixHelper.hs 87;" f transToHandle src/Dodge/Item/HeldOffset.hs 26;" f -translate src/Picture/Base.hs 116;" f -translate3 src/Picture/Base.hs 120;" f +translate src/Picture/Base.hs 117;" f +translate3 src/Picture/Base.hs 121;" f translateFloatingCamera src/Dodge/Update/Camera.hs 48;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 66;" f -translateH src/Picture/Base.hs 112;" f +translateH src/Picture/Base.hs 113;" f translatePointToLeftHand src/Dodge/Creature/HandPos.hs 75;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 36;" f translateSH src/Shape.hs 241;" f @@ -5269,7 +5271,7 @@ tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 40;" f tryPickupSelected src/Dodge/Update/Input/InGame.hs 145;" f tryPlay src/Sound.hs 84;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f -tryPutItemInInvAt src/Dodge/Inventory/Add.hs 53;" f +tryPutItemInInvAt src/Dodge/Inventory/Add.hs 54;" f trySeedFromClipboard src/Dodge/Menu.hs 96;" f trySpin src/Dodge/Projectile/Update.hs 117;" f trySynthBullet src/Dodge/Creature/State.hs 167;" f @@ -5296,7 +5298,7 @@ twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 570;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 628;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 618;" f ubyteSize src/Shader/Parameters.hs 13;" f -ugateCalc src/Dodge/Inventory/SelectionList.hs 113;" f +ugateCalc src/Dodge/Inventory/SelectionList.hs 115;" f uncurryV src/Geometry/Data.hs 66;" f underBarrelSlot src/Dodge/Item/Scope.hs 159;" f unfoldrMID src/MonadHelp.hs 33;" f