This commit is contained in:
2026-04-01 11:45:25 +01:00
parent 09fc2bb48e
commit 579d5296b1
5 changed files with 62 additions and 62 deletions
+1 -7
View File
@@ -1,9 +1,6 @@
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
module Dodge.Item.MagAmmoType ( module Dodge.Item.MagAmmoType (magAmmoType) where
magAmmoType,
magMax,
) where
import Control.Lens import Control.Lens
import Dodge.Data.AmmoType import Dodge.Data.AmmoType
@@ -25,6 +22,3 @@ mAT = \case
SHELLMAG -> LauncherAmmo SHELLMAG -> LauncherAmmo
BATTERY -> ElectricalAmmo BATTERY -> ElectricalAmmo
CHEMFUELPOUCH -> GasAmmo CHEMFUELPOUCH -> GasAmmo
magMax :: Item -> Maybe Int
magMax _ = Just 100
+5 -2
View File
@@ -436,13 +436,16 @@ loadAmmoTut = do
. addDoorAtNthLinkToggleInterrupt 0 ["DOOR LOCKDOWN ACTIVE"] j . addDoorAtNthLinkToggleInterrupt 0 ["DOOR LOCKDOWN ACTIVE"] j
=<< shuffleLinks =<< shuffleLinks
=<< roomRectAutoLights 100 100 =<< roomRectAutoLights 100 100
droom <- distributerRoom BulletAmmo (10 ^ (8::Int))
return $ return $
tToBTree "loadAmmoTest" $ tToBTree "loadAmmoTest" $
treeFromPost treePost
[amrm & rmPmnts .:~ sps (PS 50 0) (PutFlIt (drumMag & itConsumables ?~ 90)) [amrm & rmPmnts .:~ sps (PS 50 0) (PutFlIt (drumMag & itConsumables ?~ 90))
, triggerDoorRoom i , triggerDoorRoom i
, wprm & rmPmnts .:~ sps (PS 50 0) (PutFlIt burstRifle) , wprm & rmPmnts .:~ sps (PS 50 0) (PutFlIt burstRifle)
] (triggerDoorRoom j) , triggerDoorRoom j
, droom
]
putSingleLight :: Room -> State LayoutVars Room putSingleLight :: Room -> State LayoutVars Room
putSingleLight rm = do putSingleLight rm = do
+2 -1
View File
@@ -6,6 +6,7 @@ module Dodge.WorldEffect (
doTmWdWd, doTmWdWd,
) where ) where
import Dodge.Item.MaxAmmo
import ShortShow import ShortShow
import Data.Traversable (mapAccumR) import Data.Traversable (mapAccumR)
import Dodge.Item.MagAmmoType import Dodge.Item.MagAmmoType
@@ -148,7 +149,7 @@ distributeAmmoToYou atype x w = fromMaybe (0,w) $ do
distributeAmmoToItem :: Int -> Item -> (Int,Int) distributeAmmoToItem :: Int -> Item -> (Int,Int)
distributeAmmoToItem x itm = fromMaybe (x,0) $ do distributeAmmoToItem x itm = fromMaybe (x,0) $ do
m <- magMax itm m <- maxAmmo itm
cur <- itm ^. itConsumables cur <- itm ^. itConsumables
let d = m - cur let d = m - cur
t = max 0 $ min x d t = max 0 $ min x d
+8 -6
View File
@@ -27,6 +27,7 @@ module TreeHelp (
safeUpdateSingleNode, safeUpdateSingleNode,
numTraversable, numTraversable,
treeAttachDeep, treeAttachDeep,
subtree,
) where ) where
import Control.Lens import Control.Lens
@@ -49,12 +50,7 @@ treePost xs = treeFromPost (init xs) (last xs)
{- | Creates a tree with one trunk branch, {- | Creates a tree with one trunk branch,
input as a list, that ends in another tree. input as a list, that ends in another tree.
-} -}
treeFromTrunk :: treeFromTrunk :: [a] -> Tree a -> Tree a
-- | The trunk
[a] ->
-- | The end of the tree
Tree a ->
Tree a
treeFromTrunk = flip $ foldr f treeFromTrunk = flip $ foldr f
where where
f x t = Node x [t] f x t = Node x [t]
@@ -72,6 +68,12 @@ applyToSubtree :: [Int] -> (Tree a -> Tree a) -> Tree a -> Tree a
applyToSubtree [] f t = f t applyToSubtree [] f t = f t
applyToSubtree (i : is) f (Node x xs) = Node x (xs & ix i %~ applyToSubtree is f) applyToSubtree (i : is) f (Node x xs) = Node x (xs & ix i %~ applyToSubtree is f)
-- the following is probably better, but hasn't been checked
subtree :: (Applicative g,Foldable f) => f Int -> (Tree b -> g (Tree b)) -> Tree b -> g (Tree b)
subtree = foldr f id
where
f i g = (branches . ix i) . g
{- | Applies a function to a specific subforest determined by a list of indices. {- | Applies a function to a specific subforest determined by a list of indices.
Partial. Partial.
-} -}
+46 -46
View File
@@ -2530,7 +2530,7 @@ aRadarPulse src/Dodge/RadarSweep.hs 20;" f
aShape src/Dodge/Placement/Instance/LightSource.hs 95;" f aShape src/Dodge/Placement/Instance/LightSource.hs 95;" f
aSound src/Dodge/SoundLogic.hs 74;" f aSound src/Dodge/SoundLogic.hs 74;" f
aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f
accessTerminal src/Dodge/WorldEffect.hs 63;" f accessTerminal src/Dodge/WorldEffect.hs 64;" f
activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 63;" f activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 63;" f
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
addArmour src/Dodge/Creature.hs 82;" f addArmour src/Dodge/Creature.hs 82;" f
@@ -2568,7 +2568,7 @@ addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f
addSideEffect src/Dodge/Concurrent.hs 29;" f addSideEffect src/Dodge/Concurrent.hs 29;" f
addSouthPillars src/Dodge/Room/LongDoor.hs 92;" f addSouthPillars src/Dodge/Room/LongDoor.hs 92;" f
addTermSignal src/Dodge/Event/Input.hs 31;" f addTermSignal src/Dodge/Event/Input.hs 31;" f
addToTrunk src/TreeHelp.hs 157;" f addToTrunk src/TreeHelp.hs 159;" f
addWarningTerminal src/Dodge/Room/Warning.hs 98;" f addWarningTerminal src/Dodge/Room/Warning.hs 98;" f
addZ src/Geometry/Vector3D.hs 89;" f addZ src/Geometry/Vector3D.hs 89;" f
adjustIMZone src/Dodge/Base.hs 81;" f adjustIMZone src/Dodge/Base.hs 81;" f
@@ -2621,10 +2621,10 @@ applySoundCME src/Dodge/HeldUse.hs 476;" f
applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f
applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 44;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 44;" f
applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f
applyToNode src/TreeHelp.hs 65;" f applyToNode src/TreeHelp.hs 61;" f
applyToRandomNode src/TreeHelp.hs 151;" f applyToRandomNode src/TreeHelp.hs 153;" f
applyToSubforest src/TreeHelp.hs 78;" f applyToSubforest src/TreeHelp.hs 80;" f
applyToSubtree src/TreeHelp.hs 71;" f applyToSubtree src/TreeHelp.hs 67;" f
applyTorqueCME src/Dodge/HeldUse.hs 595;" f applyTorqueCME src/Dodge/HeldUse.hs 595;" f
applyWorldConfig src/Dodge/Config.hs 55;" f applyWorldConfig src/Dodge/Config.hs 55;" f
aquamarine src/Color.hs 50;" f aquamarine src/Color.hs 50;" f
@@ -3220,8 +3220,8 @@ displayPulse src/Dodge/Inventory/SelectionList.hs 176;" f
displayTerminalLineString src/Dodge/Update.hs 564;" f displayTerminalLineString src/Dodge/Update.hs 564;" f
dist src/Geometry/Vector.hs 187;" f dist src/Geometry/Vector.hs 187;" f
dist3 src/Geometry/Vector3D.hs 101;" f dist3 src/Geometry/Vector3D.hs 101;" f
distributeAmmoToItem src/Dodge/WorldEffect.hs 149;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 150;" f
distributeAmmoToYou src/Dodge/WorldEffect.hs 137;" f distributeAmmoToYou src/Dodge/WorldEffect.hs 138;" f
distributerRoom src/Dodge/Room/Room.hs 429;" f distributerRoom src/Dodge/Room/Room.hs 429;" f
divTo src/Geometry/Zone.hs 8;" f divTo src/Geometry/Zone.hs 8;" f
divideCircle src/Geometry.hs 321;" f divideCircle src/Geometry.hs 321;" f
@@ -3245,8 +3245,8 @@ doCrGroupUpdate src/Dodge/CrGroupUpdate.hs 5;" f
doCrImp src/Dodge/CreatureEffect.hs 13;" f doCrImp src/Dodge/CreatureEffect.hs 13;" f
doCrWdAc src/Dodge/CreatureEffect.hs 48;" f doCrWdAc src/Dodge/CreatureEffect.hs 48;" f
doDamage src/Dodge/Creature/State.hs 43;" f doDamage src/Dodge/Creature/State.hs 43;" f
doDeathToggle src/Dodge/WorldEffect.hs 98;" f doDeathToggle src/Dodge/WorldEffect.hs 99;" f
doDeathTriggers src/Dodge/WorldEffect.hs 91;" f doDeathTriggers src/Dodge/WorldEffect.hs 92;" f
doDebugGet src/Dodge/Debug.hs 145;" f doDebugGet src/Dodge/Debug.hs 145;" f
doDebugPut src/Dodge/Debug.hs 134;" f doDebugPut src/Dodge/Debug.hs 134;" f
doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f
@@ -3291,12 +3291,12 @@ doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 132;" f doThrust src/Dodge/Projectile/Update.hs 132;" f
doTimeScroll src/Dodge/Update.hs 233;" f doTimeScroll src/Dodge/Update.hs 233;" f
doTmWdWd src/Dodge/WorldEffect.hs 101;" f doTmWdWd src/Dodge/WorldEffect.hs 102;" f
doWallRotate src/Dodge/Update/Camera.hs 231;" f doWallRotate src/Dodge/Update/Camera.hs 231;" f
doWdBl src/Dodge/WorldBool.hs 10;" f doWdBl src/Dodge/WorldBool.hs 10;" f
doWdCrBl src/Dodge/CreatureEffect.hs 18;" f doWdCrBl src/Dodge/CreatureEffect.hs 18;" f
doWdP2f src/Dodge/WdP2f.hs 10;" f doWdP2f src/Dodge/WdP2f.hs 10;" f
doWdWd src/Dodge/WorldEffect.hs 34;" f doWdWd src/Dodge/WorldEffect.hs 35;" f
doWorldEvents src/Dodge/Update.hs 488;" f doWorldEvents src/Dodge/Update.hs 488;" f
doWorldPos src/Dodge/WorldPos.hs 10;" f doWorldPos src/Dodge/WorldPos.hs 10;" f
door src/Dodge/Room/Door.hs 14;" f door src/Dodge/Room/Door.hs 14;" f
@@ -3510,7 +3510,7 @@ errorIsLHS src/Geometry.hs 65;" f
errorNormalizeV src/Geometry.hs 54;" f errorNormalizeV src/Geometry.hs 54;" f
errorPointInPolygon src/Geometry.hs 46;" f errorPointInPolygon src/Geometry.hs 46;" f
evenOddSplit src/Dodge/Base.hs 160;" f evenOddSplit src/Dodge/Base.hs 160;" f
exitTerminalSubInv src/Dodge/WorldEffect.hs 169;" f exitTerminalSubInv src/Dodge/WorldEffect.hs 170;" f
expandLine src/Dodge/Picture.hs 30;" f expandLine src/Dodge/Picture.hs 30;" f
expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
@@ -3641,8 +3641,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 509;" f
getCommand src/Dodge/Terminal.hs 61;" f getCommand src/Dodge/Terminal.hs 61;" f
getCommands src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 58;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 564;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 567;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 551;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 554;" f
getDebugMouseOver src/Dodge/Update.hs 449;" f getDebugMouseOver src/Dodge/Update.hs 449;" f
getDistortions src/Dodge/Render.hs 443;" f getDistortions src/Dodge/Render.hs 443;" f
getEdgesCrossing src/Dodge/Path.hs 37;" f getEdgesCrossing src/Dodge/Path.hs 37;" f
@@ -3659,7 +3659,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1271;" f
getPretty src/AesonHelp.hs 8;" f getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 547;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 550;" f
getRootItemBounds src/Dodge/Render/HUD.hs 106;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3802,7 +3802,7 @@ initializeGLState src/Preload/Render.hs 255;" f
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
initializeTexture2D src/Framebuffer/Update.hs 215;" f initializeTexture2D src/Framebuffer/Update.hs 215;" f
inorderNumberTree src/TreeHelp.hs 190;" f inorderNumberTree src/TreeHelp.hs 192;" f
insertAt src/Padding.hs 63;" f insertAt src/Padding.hs 63;" f
insertIMInZone src/Dodge/Base.hs 54;" f insertIMInZone src/Dodge/Base.hs 54;" f
insertInTrie src/SimpleTrie.hs 24;" f insertInTrie src/SimpleTrie.hs 24;" f
@@ -4003,7 +4003,7 @@ launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f
layoutLevelFromSeed src/Dodge/LevelGen.hs 42;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 42;" f
ldpRect src/Dodge/Render/List.hs 48;" f ldpRect src/Dodge/Render/List.hs 48;" f
ldpSelection src/Dodge/Update/Input/ScreenLayer.hs 84;" f ldpSelection src/Dodge/Update/Input/ScreenLayer.hs 84;" f
leaveResetQuitTerminal src/Dodge/WorldEffect.hs 163;" f leaveResetQuitTerminal src/Dodge/WorldEffect.hs 164;" f
led src/Dodge/Item/Held/Utility.hs 23;" f led src/Dodge/Item/Held/Utility.hs 23;" f
left src/DoubleStack.hs 16;" f left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 193;" f leftChildList src/Dodge/Item/Grammar.hs 193;" f
@@ -4088,11 +4088,10 @@ lsPosRad src/Dodge/LightSource.hs 18;" f
ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 12;" f ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 12;" f
ltToCol src/Dodge/Laser/Update.hs 37;" f ltToCol src/Dodge/Laser/Update.hs 37;" f
m src/ShortShow.hs 48;" f m src/ShortShow.hs 48;" f
mAT src/Dodge/Item/MagAmmoType.hs 20;" f mAT src/Dodge/Item/MagAmmoType.hs 17;" f
machinePistol src/Dodge/Item/Held/Stick.hs 24;" f machinePistol src/Dodge/Item/Held/Stick.hs 24;" f
magAmmoParams src/Dodge/HeldUse.hs 957;" f magAmmoParams src/Dodge/HeldUse.hs 957;" f
magAmmoType src/Dodge/Item/MagAmmoType.hs 12;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 9;" f
magMax src/Dodge/Item/MagAmmoType.hs 29;" f
magShield src/Dodge/Item/Equipment.hs 26;" f magShield src/Dodge/Item/Equipment.hs 26;" f
magV src/Geometry/Vector.hs 174;" f magV src/Geometry/Vector.hs 174;" f
magV3 src/Geometry/Vector3D.hs 78;" f magV3 src/Geometry/Vector3D.hs 78;" f
@@ -4341,7 +4340,7 @@ numSelfTree src/Dodge/Tree/Compose.hs 108;" f
numSelfTree' src/Dodge/Tree/Compose.hs 111;" f numSelfTree' src/Dodge/Tree/Compose.hs 111;" f
numShads src/Picture/Data.hs 37;" f numShads src/Picture/Data.hs 37;" f
numSubElements src/Shader/Parameters.hs 39;" f numSubElements src/Shader/Parameters.hs 39;" f
numTraversable src/TreeHelp.hs 184;" f numTraversable src/TreeHelp.hs 186;" f
obstacleColor src/Dodge/Debug/Picture.hs 264;" f obstacleColor src/Dodge/Debug/Picture.hs 264;" f
obstructPathsCrossing src/Dodge/Path.hs 120;" f obstructPathsCrossing src/Dodge/Path.hs 120;" f
oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f
@@ -4396,7 +4395,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f
paletteToColor src/Color.hs 85;" f paletteToColor src/Color.hs 85;" f
parseItem src/Dodge/Debug/Terminal.hs 62;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f
parseNum src/Dodge/Debug/Terminal.hs 77;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f
passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 629;" f passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 632;" f
pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f
pathEdgeObstructed src/Dodge/Path.hs 66;" f pathEdgeObstructed src/Dodge/Path.hs 66;" f
pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f
@@ -4593,7 +4592,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 97;" f
putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f
putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f
putShape src/Dodge/Room/Foreground.hs 134;" f putShape src/Dodge/Room/Foreground.hs 134;" f
putSingleLight src/Dodge/Room/Tutorial.hs 447;" f putSingleLight src/Dodge/Room/Tutorial.hs 450;" f
putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f
putStrLnAppend src/Dodge/LevelGen.hs 84;" f putStrLnAppend src/Dodge/LevelGen.hs 84;" f
putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f
@@ -4645,7 +4644,7 @@ randomFourCornerRoom src/Dodge/Room/Procedural.hs 247;" f
randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 259;" f randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 259;" f
randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f
randomMediumRoom src/Dodge/Room/Boss.hs 70;" f randomMediumRoom src/Dodge/Room/Boss.hs 70;" f
randomPath src/TreeHelp.hs 145;" f randomPath src/TreeHelp.hs 147;" f
randomPoints bench/Bench.hs 37;" f randomPoints bench/Bench.hs 37;" f
randomRanges src/RandomHelp.hs 18;" f randomRanges src/RandomHelp.hs 18;" f
randomSelectionFromList src/RandomHelp.hs 84;" f randomSelectionFromList src/RandomHelp.hs 84;" f
@@ -4710,7 +4709,7 @@ replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 64;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 64;" f
resetPLUse src/Dodge/PlacementSpot.hs 94;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f
resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f
resetTerminal src/Dodge/WorldEffect.hs 157;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f
resizeFBOTO src/Framebuffer/Update.hs 185;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f
resizeFBOTO' src/Framebuffer/Update.hs 197;" f resizeFBOTO' src/Framebuffer/Update.hs 197;" f
resizeFBOTO2 src/Framebuffer/Update.hs 104;" f resizeFBOTO2 src/Framebuffer/Update.hs 104;" f
@@ -4818,7 +4817,7 @@ safeMinimumOnMaybeL src/FoldableHelp.hs 57;" f
safeNormalizeV src/Geometry/Vector.hs 167;" f safeNormalizeV src/Geometry/Vector.hs 167;" f
safeSwapKeys src/IntMapHelp.hs 78;" f safeSwapKeys src/IntMapHelp.hs 78;" f
safeUncons src/ListHelp.hs 73;" f safeUncons src/ListHelp.hs 73;" f
safeUpdateSingleNode src/TreeHelp.hs 116;" f safeUpdateSingleNode src/TreeHelp.hs 118;" f
saveConfig src/Dodge/Config.hs 23;" f saveConfig src/Dodge/Config.hs 23;" f
saveQuit src/Dodge/Menu.hs 77;" f saveQuit src/Dodge/Menu.hs 77;" f
saveQuitConc src/Dodge/Menu.hs 80;" f saveQuitConc src/Dodge/Menu.hs 80;" f
@@ -4878,7 +4877,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 240;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f
sensorSPic src/Dodge/Machine/Draw.hs 97;" f sensorSPic src/Dodge/Machine/Draw.hs 97;" f
sensorTut src/Dodge/Room/Tutorial.hs 573;" f sensorTut src/Dodge/Room/Tutorial.hs 576;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f
sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
@@ -5089,8 +5088,8 @@ splashScreen src/Dodge/Initialisation.hs 10;" f
splitBezierquad src/Geometry/Bezier.hs 15;" f splitBezierquad src/Geometry/Bezier.hs 15;" f
splitExtra src/Justify.hs 21;" f splitExtra src/Justify.hs 21;" f
splitLookupTrie src/SimpleTrie.hs 39;" f splitLookupTrie src/SimpleTrie.hs 39;" f
splitTrunk src/TreeHelp.hs 179;" f splitTrunk src/TreeHelp.hs 181;" f
splitTrunkAt src/TreeHelp.hs 167;" f splitTrunkAt src/TreeHelp.hs 169;" f
spreadAroundCenter src/Dodge/Base.hs 173;" f spreadAroundCenter src/Dodge/Base.hs 173;" f
spreadCenter src/Dodge/Base.hs 187;" f spreadCenter src/Dodge/Base.hs 187;" f
spreadFromCenter src/Dodge/Base.hs 176;" f spreadFromCenter src/Dodge/Base.hs 176;" f
@@ -5158,8 +5157,9 @@ stringToList src/Picture/Base.hs 308;" f
stringToListGrad src/Picture/Text.hs 12;" f stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f stripZ src/Geometry/Vector3D.hs 97;" f
subInvX src/Dodge/ListDisplayParams.hs 51;" f subInvX src/Dodge/ListDisplayParams.hs 51;" f
subMap src/TreeHelp.hs 119;" f subMap src/TreeHelp.hs 121;" f
subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f
subtree src/TreeHelp.hs 72;" f
succB src/Dodge/Debug.hs 159;" f succB src/Dodge/Debug.hs 159;" f
swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f
swapInOutLinks src/Dodge/RoomLink.hs 99;" f swapInOutLinks src/Dodge/RoomLink.hs 99;" f
@@ -5267,7 +5267,7 @@ titleOptionsMenu src/Dodge/Menu.hs 104;" f
titleOptionsNoWrite src/Dodge/Menu.hs 107;" f titleOptionsNoWrite src/Dodge/Menu.hs 107;" f
tlDoEffect src/Dodge/Terminal.hs 115;" f tlDoEffect src/Dodge/Terminal.hs 115;" f
tlSetStatus src/Dodge/Terminal.hs 112;" f tlSetStatus src/Dodge/Terminal.hs 112;" f
tmDistributeAmmo src/Dodge/WorldEffect.hs 117;" f tmDistributeAmmo src/Dodge/WorldEffect.hs 118;" f
tmDistributeLines src/Dodge/Room/Room.hs 469;" f tmDistributeLines src/Dodge/Room/Room.hs 469;" f
tmMachine src/Dodge/Placement/Instance/Terminal.hs 55;" f tmMachine src/Dodge/Placement/Instance/Terminal.hs 55;" f
toBinary src/Dodge/Inventory/SelectionList.hs 138;" f toBinary src/Dodge/Inventory/SelectionList.hs 138;" f
@@ -5299,7 +5299,7 @@ topPrismIndices src/Shader/Poke.hs 410;" f
topTestPart src/Dodge/TestString.hs 71;" f topTestPart src/Dodge/TestString.hs 71;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 606;" f torqueAmount src/Dodge/HeldUse.hs 606;" f
torqueCr src/Dodge/WorldEffect.hs 84;" f torqueCr src/Dodge/WorldEffect.hs 85;" f
torso src/Dodge/Creature/Picture.hs 97;" f torso src/Dodge/Creature/Picture.hs 97;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
@@ -5333,21 +5333,21 @@ translateToRightLeg src/Dodge/Creature/HandPos.hs 181;" f
translateXY src/Polyhedra.hs 23;" f translateXY src/Polyhedra.hs 23;" f
trapTBH src/Geometry/Polygon.hs 22;" f trapTBH src/Geometry/Polygon.hs 22;" f
trapezionBWHW src/Geometry/Polygon.hs 34;" f trapezionBWHW src/Geometry/Polygon.hs 34;" f
treeAttachDeep src/TreeHelp.hs 193;" f treeAttachDeep src/TreeHelp.hs 195;" f
treeChildNums src/TreeHelp.hs 130;" f treeChildNums src/TreeHelp.hs 132;" f
treeFromPost src/TreeHelp.hs 40;" f treeFromPost src/TreeHelp.hs 41;" f
treeFromTrunk src/TreeHelp.hs 52;" f treeFromTrunk src/TreeHelp.hs 53;" f
treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 22;" f treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 22;" f
treePath src/Dodge/Tree/GenerateStructure.hs 13;" f treePath src/Dodge/Tree/GenerateStructure.hs 13;" f
treePaths src/TreeHelp.hs 139;" f treePaths src/TreeHelp.hs 141;" f
treePost src/TreeHelp.hs 46;" f treePost src/TreeHelp.hs 47;" f
treeToPotentialFunction src/Dodge/Item/Grammar.hs 148;" f treeToPotentialFunction src/Dodge/Item/Grammar.hs 148;" f
triLootRoom src/Dodge/Room/Treasure.hs 23;" f triLootRoom src/Dodge/Room/Treasure.hs 23;" f
triangulateEarClip src/Geometry/Polygon.hs 162;" f triangulateEarClip src/Geometry/Polygon.hs 162;" f
triggerDoorRoom src/Dodge/Room/Door.hs 32;" f triggerDoorRoom src/Dodge/Room/Door.hs 32;" f
truncFaces src/Polyhedra/Geodesic.hs 54;" f truncFaces src/Polyhedra/Geodesic.hs 54;" f
truncate src/Polyhedra/Geodesic.hs 39;" f truncate src/Polyhedra/Geodesic.hs 39;" f
trunkDepth src/TreeHelp.hs 162;" f trunkDepth src/TreeHelp.hs 164;" f
tryAttachItems src/Dodge/Item/Grammar.hs 34;" f tryAttachItems src/Dodge/Item/Grammar.hs 34;" f
tryClickUse src/Dodge/Creature/YourControl.hs 216;" f tryClickUse src/Dodge/Creature/YourControl.hs 216;" f
tryCombine src/Dodge/Update/Input/InGame.hs 521;" f tryCombine src/Dodge/Update/Input/InGame.hs 521;" f
@@ -5369,11 +5369,11 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f
tutDrop src/Dodge/Room/Tutorial.hs 101;" f tutDrop src/Dodge/Room/Tutorial.hs 101;" f
tutHub src/Dodge/Room/Tutorial.hs 471;" f tutHub src/Dodge/Room/Tutorial.hs 474;" f
tutLight src/Dodge/Room/Tutorial.hs 393;" f tutLight src/Dodge/Room/Tutorial.hs 393;" f
tutRezBox src/Dodge/Room/Tutorial.hs 584;" f tutRezBox src/Dodge/Room/Tutorial.hs 587;" f
tutRoomTree src/Dodge/Floor.hs 20;" f tutRoomTree src/Dodge/Floor.hs 20;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 609;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 612;" f
tweenAngles src/Geometry/Vector.hs 192;" f tweenAngles src/Geometry/Vector.hs 192;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f
@@ -5406,7 +5406,7 @@ unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f
unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 121;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 121;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 203;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 203;" f
updateAimPos src/Dodge/Update.hs 381;" f updateAimPos src/Dodge/Update.hs 381;" f
updateAllNodes src/TreeHelp.hs 86;" f updateAllNodes src/TreeHelp.hs 88;" f
updateArc src/Dodge/Tesla.hs 43;" f updateArc src/Dodge/Tesla.hs 43;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 454;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 454;" f
updateBarrel src/Dodge/Barreloid.hs 44;" f updateBarrel src/Dodge/Barreloid.hs 44;" f
@@ -5497,7 +5497,7 @@ updateRadarBlip src/Dodge/RadarBlip.hs 11;" f
updateRadarBlips src/Dodge/Update.hs 639;" f updateRadarBlips src/Dodge/Update.hs 639;" f
updateRadarSweep src/Dodge/RadarSweep.hs 40;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f
updateRadarSweeps src/Dodge/Update.hs 748;" f updateRadarSweeps src/Dodge/Update.hs 748;" f
updateRandNode src/TreeHelp.hs 109;" f updateRandNode src/TreeHelp.hs 111;" f
updateRenderSplit appDodge/Main.hs 104;" f updateRenderSplit appDodge/Main.hs 104;" f
updateRightParentSF src/Dodge/Item/Grammar.hs 188;" f updateRightParentSF src/Dodge/Item/Grammar.hs 188;" f
updateRootItemID src/Dodge/Inventory/Location.hs 42;" f updateRootItemID src/Dodge/Inventory/Location.hs 42;" f
@@ -5507,7 +5507,7 @@ updateSection src/Dodge/DisplayInventory.hs 262;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f
updateShockwave src/Dodge/Shockwave/Update.hs 8;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f
updateShockwaves src/Dodge/Update.hs 739;" f updateShockwaves src/Dodge/Update.hs 739;" f
updateSingleNodes src/TreeHelp.hs 98;" f updateSingleNodes src/TreeHelp.hs 100;" f
updateSound src/Sound.hs 73;" f updateSound src/Sound.hs 73;" f
updateSounds src/Sound.hs 68;" f updateSounds src/Sound.hs 68;" f
updateSpark src/Dodge/Spark.hs 20;" f updateSpark src/Dodge/Spark.hs 20;" f