diff --git a/ghcidOutput b/ghcidOutput index c9616fda1..50279faf6 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,3 +1,28 @@ +/home/justin/Haskell/loop/src/Dodge/Combine.hs:37:1-20: warning: [-Wunused-top-binds] + Defined but not used: ‘invertInventoryToMap’ + | +37 | invertInventoryToMap = + | ^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Combine.hs:43:1-14: warning: [-Wunused-top-binds] + Defined but not used: ‘splitItAmounts’ + | +43 | splitItAmounts = concatMap f + | ^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Combine.hs:53:1-11: warning: [-Wunused-top-binds] + Defined but not used: ‘lookupItems’ + | +53 | lookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . splitItAmounts . invertInventory + | ^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Combine.hs:63:1-20: warning: [-Wunused-top-binds] + Defined but not used: ‘combineItemListYouX'’ + | +63 | combineItemListYouX' = map (first $ concatMap g) . lookupItems . yourInv + | ^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Combine/Combinations.hs:9:1-21: warning: [-Wunused-imports] + The import of ‘Data.Bifunctor’ is redundant + | +9 | import Data.Bifunctor + | ^^^^^^^^^^^^^^^^^^^^^ /home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:3:1: warning: [-Wunused-imports] The import of ‘Dodge.Data.Item’ is redundant | diff --git a/src/Dodge/Combine.hs b/src/Dodge/Combine.hs index e430e8241..5c8b5a088 100644 --- a/src/Dodge/Combine.hs +++ b/src/Dodge/Combine.hs @@ -33,16 +33,34 @@ invertInventory = (\k it -> ((_iyBase $ _itType it, itStackAmount it, k) :)) [] +invertInventoryToMap :: IM.IntMap Item -> M.Map ItemBaseType [Int] +invertInventoryToMap = + IM.foldrWithKey + (\k it -> (M.insertWith (++) (_iyBase $ _itType it) [k])) + mempty + splitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), (ItAmount, Int))] splitItAmounts = concatMap f where f (x, n, y) = [((i, x), (i, y)) | i <- [1 .. n]] +flatSplitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), [Int])] +flatSplitItAmounts = concatMap f + where + f (x, n, y) = [((i, x), replicate (fromIntegral i) y) | i <- [1 .. n]] + lookupItems :: IM.IntMap Item -> [([(ItAmount, Int)], Item)] lookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . splitItAmounts . invertInventory +flatLookupItems :: IM.IntMap Item -> [([[Int]],Item)] +flatLookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . flatSplitItAmounts + . invertInventory + combineItemListYouX :: World -> [([Int], Item)] -combineItemListYouX = map (first $ concatMap g) . lookupItems . yourInv +combineItemListYouX = map (first $ concat) . flatLookupItems . yourInv + +combineItemListYouX' :: World -> [([Int], Item)] +combineItemListYouX' = map (first $ concatMap g) . lookupItems . yourInv where g (amount, i) = replicate (_getItAmount amount) i diff --git a/src/Dodge/Combine/Combinations.hs b/src/Dodge/Combine/Combinations.hs index c2f71c847..8e6510772 100644 --- a/src/Dodge/Combine/Combinations.hs +++ b/src/Dodge/Combine/Combinations.hs @@ -2,9 +2,11 @@ module Dodge.Combine.Combinations ( itemCombinations + , flatItemCombinations , bulletWeapons ) where +import Data.Bifunctor import Dodge.Item.Ammo import Dodge.Data.Item import Dodge.Item @@ -44,6 +46,11 @@ magazineCombinations = po xs it = (map o xs, it) o = (1,) +flatItemCombinations :: [([ItemBaseType], Item)] +flatItemCombinations = map (over _1 (concatMap f)) itemCombinations + where + f (x,it) = replicate (_getItAmount x) it + itemCombinations :: [([(ItAmount, ItemBaseType)], Item)] itemCombinations = watchCombinations ++ diff --git a/src/Dodge/Combine/Trie.hs b/src/Dodge/Combine/Trie.hs index 88fe5b624..b078fb701 100644 --- a/src/Dodge/Combine/Trie.hs +++ b/src/Dodge/Combine/Trie.hs @@ -7,6 +7,13 @@ import Dodge.Data.Item import SimpleTrie import Data.Foldable +flatCombinationsTrie :: Trie ItemBaseType Item +{-# INLINE flatCombinationsTrie #-} +flatCombinationsTrie = foldl' + (flip $ uncurry insertInTrie . first sort) + emptyTrie + flatItemCombinations + combinationsTrie :: Trie (ItAmount, ItemBaseType) Item {-# INLINE combinationsTrie #-} combinationsTrie = diff --git a/tags b/tags index 0e30c5758..7d323021f 100644 --- a/tags +++ b/tags @@ -1052,6 +1052,7 @@ GoesOnWrist src/Dodge/Data/Equipment/Misc.hs 15;" C GoesOnWrist src/Dodge/Equipment/Data.hs 10;" C Government src/Dodge/Data/Scenario.hs 43;" C GovernmentScope src/Dodge/Data/Scenario.hs 49;" t +Grammar src/Dodge/Item/Grammar.hs 1;" m Graph src/Dodge/Combine/Graph.hs 3;" m Graph src/Dodge/Graph.hs 2;" m GraphHelp src/GraphHelp.hs 1;" m @@ -4294,6 +4295,7 @@ aTreeStrut src/Dodge/Tree/GenerateStructure.hs 37;" f aWallPulse src/Dodge/Item/Weapon/UseEffect.hs 21;" f accessTerminal src/Dodge/WorldEffect.hs 48;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 48;" f +addAmmoClip src/Dodge/Item/Draw/SPic.hs 22;" f addArmour src/Dodge/Creature.hs 83;" f addBlock src/Dodge/LevelGen/Block.hs 20;" f addBoostShockwave src/Dodge/Item/Weapon/Booster.hs 56;" f @@ -4336,7 +4338,7 @@ addSideEffect src/Dodge/Concurrent.hs 32;" f addSouthPillars src/Dodge/Room/LongDoor.hs 87;" f addTermSignal src/Dodge/Event/Input.hs 34;" f addTile src/Dodge/Room/AddTile.hs 11;" f -addTinClip src/Dodge/Item/Draw/SPic.hs 292;" f +addTinClip src/Dodge/Item/Draw/SPic.hs 301;" f addToTrunk src/Dodge/Layout/Tree/Polymorphic.hs 116;" f addToTrunk src/Dodge/Tree/Polymorphic.hs 129;" f addToTrunk src/TreeHelp.hs 156;" f @@ -4469,11 +4471,11 @@ axisInt src/Geometry/Intersect.hs 227;" f azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f -backpackCombinations src/Dodge/Combine/Combinations.hs 23;" f -backpackShape src/Dodge/Item/Draw/SPic.hs 60;" f +backpackCombinations src/Dodge/Combine/Combinations.hs 24;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 69;" f backspaceInputted src/Dodge/Update/Input/Text.hs 26;" f bangCone src/Dodge/Item/Held/Cone.hs 10;" f -bangConeShape src/Dodge/Item/Draw/SPic.hs 222;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 231;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 370;" f bangRod src/Dodge/Item/Held/Rod.hs 17;" f bangRod src/Dodge/Item/Weapon/BulletGun/Rod.hs 18;" f @@ -4484,19 +4486,19 @@ bangStickSoundChoice src/Dodge/HeldUse.hs 488;" f bangStickSoundChoice src/Dodge/HeldUse/BulletWeapon.hs 226;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 436;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 445;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseBlockPane src/Dodge/Placements/Wall.hs 63;" f baseBlockPane src/Dodge/Room/Placement.hs 93;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 242;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 251;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 245;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 433;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 404;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 254;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 442;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 413;" f baseShoulder src/Dodge/Creature/Picture.hs 158;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 219;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 214;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 228;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 223;" f baseStickSpread src/Dodge/Item/Held/Stick.hs 35;" f baseStickSpread src/Dodge/Item/Weapon/BulletGun/Stick.hs 46;" f baseWindowPane src/Dodge/Placements/Wall.hs 73;" f @@ -4518,7 +4520,7 @@ basicMachineUpdate src/Dodge/Machine.hs 13;" f basicPerceptionUpdateR src/Dodge/Creature/AlertLevel.hs 17;" f basicTerminal src/Dodge/Terminal.hs 32;" f battery src/Dodge/Item/Ammo.hs 61;" f -batteryGuns src/Dodge/Combine/Combinations.hs 220;" f +batteryGuns src/Dodge/Combine/Combinations.hs 226;" f batteryModules src/Dodge/Item/Held/BatteryGuns.hs 111;" f batteryPack src/Dodge/Item/Equipment.hs 58;" f belowNumX src/Dodge/Combine/Graph.hs 77;" f @@ -4597,10 +4599,10 @@ bulletBeltBracer src/Dodge/Item/Equipment.hs 83;" f bulletBeltPack src/Dodge/Item/Equipment.hs 74;" f bulletBodyCraft src/Dodge/Item/Craftable.hs 24;" f bulletCombinations src/Dodge/Combine/Graph.hs 35;" f -bulletMagazines src/Dodge/Combine/Combinations.hs 232;" f +bulletMagazines src/Dodge/Combine/Combinations.hs 238;" f bulletSpawn src/Dodge/Bullet.hs 91;" f bulletTypes src/Dodge/TweakBullet.hs 26;" f -bulletWeapons src/Dodge/Combine/Combinations.hs 240;" f +bulletWeapons src/Dodge/Combine/Combinations.hs 246;" f burstRifle src/Dodge/Item/Held/Cane.hs 86;" f burstRifle src/Dodge/Item/Weapon/BulletGun/Cane.hs 105;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f @@ -4712,7 +4714,7 @@ clsNearRect src/Dodge/Zoning/Cloud.hs 15;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 12;" f clusterFormatting src/Dodge/Combine/Graph.hs 113;" f clusterFunc src/Dodge/Combine/Graph.hs 107;" f -cmm src/Dodge/Combine.hs 73;" f +cmm src/Dodge/Combine.hs 79;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f colCrWall src/Dodge/WallCreatureCollisions.hs 26;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 17;" f @@ -4735,7 +4737,7 @@ colorSH src/Shape.hs 233;" f combinationsDotGraph src/Dodge/Combine/Graph.hs 86;" f combinationsGraph src/Dodge/Combine/Graph.hs 67;" f combinationsOf src/Multiset.hs 40;" f -combinationsTrie src/Dodge/Combine/Trie.hs 10;" f +combinationsTrie src/Dodge/Combine/Trie.hs 17;" f combineAwareness src/Dodge/Creature/AlertLevel.hs 33;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineBeamBeams src/Dodge/Update.hs 475;" f @@ -4743,15 +4745,15 @@ combineBeams src/Dodge/Update.hs 466;" f combineCounts src/Dodge/Render/HUD.hs 236;" f combineFloors src/Dodge/Room/Procedural.hs 171;" f combineInventoryExtra src/Dodge/Render/HUD.hs 181;" f -combineItemListYouX src/Dodge/Combine.hs 44;" f -combineList src/Dodge/Combine.hs 49;" f -combineList' src/Dodge/Combine.hs 54;" f -combineListInfo src/Dodge/Combine.hs 67;" f -combineModuleMaps src/Dodge/Combine.hs 78;" f +combineItemListYouX src/Dodge/Combine.hs 50;" f +combineList src/Dodge/Combine.hs 55;" f +combineList' src/Dodge/Combine.hs 60;" f +combineListInfo src/Dodge/Combine.hs 73;" f +combineModuleMaps src/Dodge/Combine.hs 84;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 344;" f combineTree src/Dodge/Tree/Compose.hs 66;" f -combineTwoModuleMaps src/Dodge/Combine.hs 84;" f +combineTwoModuleMaps src/Dodge/Combine.hs 90;" f commandColor src/Dodge/Terminal.hs 130;" f commandFutureLines src/Dodge/Terminal.hs 252;" f commandsCommand src/Dodge/Terminal.hs 91;" f @@ -4974,7 +4976,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 316;" f defDamageMaterial src/Dodge/Material/Damage.hs 17;" f defLSPic src/Dodge/LightSource/Draw.hs 11;" f -defSPic src/Dodge/Item/Draw/SPic.hs 228;" f +defSPic src/Dodge/Item/Draw/SPic.hs 237;" f defaultAimMvType src/Dodge/Default/Creature.hs 122;" f defaultAimParams src/Dodge/Default/Item/Held/AimParams.hs 4;" f defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 6;" f @@ -5095,7 +5097,7 @@ destroyMcType src/Dodge/Machine/Destroy.hs 21;" f destroyMount src/Dodge/Block.hs 98;" f destroyMounts src/Dodge/Block.hs 95;" f detV src/Geometry/Vector.hs 93;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 496;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 505;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 19;" f detectorInfo src/Dodge/Item/Info.hs 210;" f determineInvSelCursorWidth src/Dodge/ListDisplayParams.hs 54;" f @@ -5344,7 +5346,7 @@ dropItem src/Dodge/Creature/Action.hs 183;" f dropItemKey src/Dodge/Config/KeyConfig.hs 24;" f drumMag src/Dodge/Item/Ammo.hs 31;" f dualBeam src/Dodge/Item/Held/BatteryGuns.hs 136;" f -dualBeamPic src/Dodge/Item/Draw/SPic.hs 463;" f +dualBeamPic src/Dodge/Item/Draw/SPic.hs 472;" f dualRayAt src/Dodge/Item/Weapon/BatteryGuns.hs 144;" f dummyMenuOption src/Dodge/Menu/Option.hs 81;" f duplicateItem src/Dodge/Item/Weapon/TriggerType.hs 711;" f @@ -5373,7 +5375,7 @@ eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f equipAimSpeed src/Dodge/Creature/Action/Movement.hs 109;" f equipInfo src/Dodge/Item/Info.hs 121;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 29;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 38;" f equipPosition src/Dodge/Item/Draw.hs 26;" f equipPosition src/Dodge/Item/Equipment/Shape.hs 15;" f equipSiteInfo src/Dodge/Item/Info.hs 242;" f @@ -5459,10 +5461,12 @@ flameTorrent src/Dodge/Item/Held/SprayGuns.hs 33;" f flameTorrent src/Dodge/Item/Weapon/SprayGuns.hs 38;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 49;" f flameWall src/Dodge/Item/Weapon/SprayGuns.hs 54;" f -flamerPic src/Dodge/Item/Draw/SPic.hs 407;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 416;" f flareCircleAt src/Dodge/WorldEvent/Flash.hs 46;" f +flatCombinationsTrie src/Dodge/Combine/Trie.hs 10;" f +flatItemCombinations src/Dodge/Combine/Combinations.hs 48;" f flatShield src/Dodge/Item/Held/Utility.hs 9;" f -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 480;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 489;" f flatV2 src/Picture/Data.hs 65;" f flatV3 src/Picture/Data.hs 68;" f flatV4 src/Picture/Data.hs 71;" f @@ -5524,7 +5528,7 @@ fromV3 src/Geometry/Data.hs 43;" f frontArmour src/Dodge/Item/Equipment.hs 43;" f fstV2 src/Geometry/Data.hs 50;" f fuelPack src/Dodge/Item/Equipment.hs 66;" f -fullModuleName src/Dodge/Combine.hs 103;" f +fullModuleName src/Dodge/Combine.hs 109;" f functionalUpdate src/Dodge/Update.hs 230;" f fuseFunc src/Dodge/Path.hs 150;" f fusePairs src/Dodge/Path.hs 153;" f @@ -5648,10 +5652,10 @@ hasFrontArmour src/Dodge/Creature/Test.hs 112;" f hasLOS src/Dodge/Base/Collide.hs 200;" f hasLOSIndirect src/Dodge/Base/Collide.hs 214;" f hat src/Dodge/Item/Equipment.hs 105;" f -hatCombinations src/Dodge/Combine/Combinations.hs 31;" f +hatCombinations src/Dodge/Combine/Combinations.hs 32;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 118;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 486;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 495;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f @@ -5664,7 +5668,7 @@ heldAimEffects src/Dodge/Creature/State.hs 68;" f heldBounds src/Dodge/Item/Module.hs 27;" f heldInfo src/Dodge/Item/Info.hs 61;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 24;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 147;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 156;" f heldPositionInfo src/Dodge/Item/Info.hs 227;" f helpCommand src/Dodge/Terminal.hs 64;" f helpPoly3D src/Polyhedra.hs 124;" f @@ -5680,7 +5684,7 @@ hitSound src/Dodge/SoundLogic/Synonyms.hs 4;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f holsterWeaponSound src/Dodge/SoundLogic/Synonyms.hs 4;" f -homingLaunchers src/Dodge/Combine/Combinations.hs 217;" f +homingLaunchers src/Dodge/Combine/Combinations.hs 223;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 55;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 35;" f @@ -5787,6 +5791,7 @@ inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f invertIntMap src/Multiset.hs 61;" f invertInventory src/Dodge/Combine.hs 30;" f +invertInventoryToMap src/Dodge/Combine.hs 36;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f isAnimate src/Dodge/Creature/Test.hs 138;" f @@ -5824,7 +5829,7 @@ itUseCharge src/Dodge/Item/Weapon/TriggerType.hs 156;" f itemBaseName src/Dodge/Item/Display.hs 75;" f itemBlips src/Dodge/Item/Weapon/UseEffect.hs 38;" f itemBlips src/Dodge/RadarSweep.hs 74;" f -itemCombinations src/Dodge/Combine/Combinations.hs 47;" f +itemCombinations src/Dodge/Combine/Combinations.hs 53;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 55;" f itemDisplay src/Dodge/Item/Display.hs 47;" f itemDisplayOffset src/Dodge/Item/Display.hs 21;" f @@ -5839,12 +5844,13 @@ itemFromConsumableType src/Dodge/Item.hs 44;" f itemFromEquipType src/Dodge/Item.hs 49;" f itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemFromLeftType src/Dodge/Item.hs 71;" f +itemHeldAmmoPic src/Dodge/Item/Draw/SPic.hs 19;" f itemInfo src/Dodge/Item/Info.hs 10;" f itemInvColor src/Dodge/Item/InventoryColor.hs 7;" f itemInvSideEffect src/Dodge/Creature/State.hs 245;" f itemNumberDisplay src/Dodge/Item/Display.hs 118;" f itemRooms src/Dodge/LockAndKey.hs 41;" f -itemSPic src/Dodge/Item/Draw/SPic.hs 18;" f +itemSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemString src/Dodge/Item/Display.hs 72;" f itemUpdate src/Dodge/Creature/State.hs 257;" f iterateUntil src/MonadHelp.hs 23;" f @@ -5879,7 +5885,7 @@ keyCard src/Dodge/Item/PassKey.hs 8;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 69;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 57;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 38;" f -keyPic src/Dodge/Item/Draw/SPic.hs 502;" f +keyPic src/Dodge/Item/Draw/SPic.hs 511;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f killBulletUpdate src/Dodge/WorldEvent/HitEffect.hs 30;" f killParticleUpdate src/Dodge/Particle/Update.hs 9;" f @@ -5899,7 +5905,7 @@ lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasCircle src/Dodge/Item/Held/BatteryGuns.hs 123;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGun src/Dodge/Item/Held/BatteryGuns.hs 36;" f -lasGunPic src/Dodge/Item/Draw/SPic.hs 449;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 458;" f lasGunTweak src/Dodge/Item/Held/BatteryGuns.hs 65;" f lasRayAt src/Dodge/Beam.hs 62;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f @@ -5913,7 +5919,7 @@ latchkey src/Dodge/Item/Held/Utility.hs 23;" f latchkey src/Dodge/Item/PassKey.hs 14;" f launcher src/Dodge/Item/Held/Launcher.hs 10;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f -launcherPic src/Dodge/Item/Draw/SPic.hs 423;" f +launcherPic src/Dodge/Item/Draw/SPic.hs 432;" f launcherSound src/Dodge/SoundLogic/Synonyms.hs 4;" f launcherX src/Dodge/Item/Held/Launcher.hs 39;" f layerNum src/Picture/Data.hs 31;" f @@ -5921,9 +5927,9 @@ layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 110;" f -leftItemSPic src/Dodge/Item/Draw/SPic.hs 63;" f +leftItemSPic src/Dodge/Item/Draw/SPic.hs 72;" f leftPad src/Padding.hs 14;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 520;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 529;" f liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f liShape src/Dodge/Placements/LightSource.hs 55;" f light src/Color.hs 100;" f @@ -5990,7 +5996,7 @@ longRoomRunPast src/Dodge/Room/LongRoom.hs 47;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 138;" f lookLookup src/Dodge/Base/Zone.hs 203;" f lookLookups src/Dodge/Base/Zone.hs 208;" f -lookupItems src/Dodge/Combine.hs 41;" f +lookupItems src/Dodge/Combine.hs 47;" f lookupTrie src/SimpleTrie.hs 24;" f loopPairs src/ListHelp.hs 28;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f @@ -6013,7 +6019,7 @@ machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f magShield src/Dodge/Item/Equipment.hs 29;" f magV src/Geometry/Vector.hs 160;" f magV3 src/Geometry/Vector3D.hs 78;" f -magazineCombinations src/Dodge/Combine/Combinations.hs 39;" f +magazineCombinations src/Dodge/Combine/Combinations.hs 40;" f magenta src/Color.hs 19;" f main appDodge/Main.hs 37;" f main appHetris/Hetris.hs 15;" f @@ -6164,8 +6170,8 @@ miniGunUse src/Dodge/Item/Held/Cane.hs 94;" f miniGunUse src/Dodge/Item/Weapon/BulletGun/Cane.hs 113;" f miniGunX src/Dodge/Item/Held/Cane.hs 106;" f miniGunX src/Dodge/Item/Weapon/BulletGun/Cane.hs 120;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 383;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 377;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 392;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 386;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 510;" f miniTree2 src/Dodge/Room/Room.hs 108;" f minimumOn src/FoldlHelp.hs 12;" f @@ -6196,14 +6202,14 @@ modClock src/Dodge/Item/Weapon/TriggerType.hs 447;" f modTo src/Geometry/Zone.hs 10;" f modifierKey src/Dodge/Config/KeyConfig.hs 34;" f moduleAttachPosition src/Dodge/Item/Module.hs 6;" f -moduleCombinations src/Dodge/Combine/Combinations.hs 128;" f +moduleCombinations src/Dodge/Combine/Combinations.hs 134;" f moduleInfo src/Dodge/Item/Info.hs 273;" f moduleModification src/Dodge/Combine/Module.hs 10;" f moduleName src/Dodge/Module.hs 22;" f moduleSize src/Dodge/Module.hs 14;" f moduleSizes src/Dodge/Module.hs 11;" f moduleStrings src/Dodge/Module.hs 19;" f -modulesSPic src/Dodge/Item/Draw/SPic.hs 209;" f +modulesSPic src/Dodge/Item/Draw/SPic.hs 218;" f mountColLightI src/Dodge/LightSources/Fitting.hs 56;" f mountLightA src/Dodge/LightSources/Fitting.hs 49;" f mountLightL src/Dodge/LightSources/Fitting.hs 15;" f @@ -7039,7 +7045,7 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 7;" f -shatterGunSPic src/Dodge/Item/Draw/SPic.hs 231;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 240;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 31;" f shellMag src/Dodge/Item/Ammo.hs 43;" f @@ -7218,7 +7224,7 @@ splinterBlock src/Dodge/Block.hs 25;" f splitBeamCombine src/Dodge/Beam.hs 38;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f -splitItAmounts src/Dodge/Combine.hs 36;" f +splitItAmounts src/Dodge/Combine.hs 42;" f splitTrunk src/Dodge/Layout/Tree/Polymorphic.hs 142;" f splitTrunk src/Dodge/Tree/Polymorphic.hs 149;" f splitTrunk src/TreeHelp.hs 178;" f @@ -7353,7 +7359,7 @@ telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 378;" f teleSound src/Dodge/SoundLogic/Synonyms.hs 4;" f teleportModule src/Dodge/Item/Craftable.hs 32;" f -teleportableWeapons src/Dodge/Combine/Combinations.hs 229;" f +teleportableWeapons src/Dodge/Combine/Combinations.hs 235;" f termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f termSoundLine src/Dodge/Terminal.hs 109;" f termTextColor src/Dodge/Terminal.hs 112;" f @@ -7364,7 +7370,7 @@ terminalShape src/Dodge/Machine/Draw.hs 27;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 72;" f teslaBeamCombine src/Dodge/Beam.hs 48;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 439;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 448;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 10;" f @@ -7442,7 +7448,7 @@ topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f torch src/Dodge/Item/Held/Utility.hs 26;" f -torchShape src/Dodge/Item/Draw/SPic.hs 195;" f +torchShape src/Dodge/Item/Draw/SPic.hs 204;" f torqueBefore src/Dodge/Item/Weapon/TriggerType.hs 560;" f torqueBeforeAtLeast src/Dodge/Item/Weapon/TriggerType.hs 583;" f torqueCr src/Dodge/WorldEffect.hs 64;" f @@ -7452,7 +7458,7 @@ tractCr src/Dodge/TractorBeam/Update.hs 27;" f tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f tractorBeamAt src/Dodge/Item/Weapon/BatteryGuns.hs 160;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 73;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 477;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 486;" f tractorGunTweak src/Dodge/Item/Held/BatteryGuns.hs 89;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 32;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f @@ -7782,7 +7788,7 @@ visionCheck src/Dodge/Creature/Perception.hs 152;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 37;" f volleyGun src/Dodge/Item/Weapon/BulletGun/Cane.hs 43;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 365;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 374;" f waistSP src/Dodge/Creature/HandPos.hs 199;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/Item/Weapon/UseEffect.hs 43;" f @@ -7809,7 +7815,7 @@ wasdM src/Dodge/WASD.hs 9;" f wasdMovement src/Dodge/Creature/YourControl.hs 176;" f wasdTwist src/Dodge/Creature/YourControl.hs 155;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 136;" f -watchCombinations src/Dodge/Combine/Combinations.hs 13;" f +watchCombinations src/Dodge/Combine/Combinations.hs 14;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 177;" f wdth src/Dodge/Machine/Sensor.hs 54;" f wdth src/Dodge/Placements/Sensor.hs 53;" f