diff --git a/data/dodge.config.json b/data/dodge.config.json index 9ad16e44f..d3ea16897 100644 --- a/data/dodge.config.json +++ b/data/dodge.config.json @@ -14,7 +14,7 @@ "_graphics_num_shadow_casters": "NumShadowCasters20", "_graphics_shadow_rendering": "GeoObjShads", "_graphics_shadow_size": "Typical", - "_graphics_world_resolution": "QuarterRes", + "_graphics_world_resolution": "HalfRes", "_volume_master": 1, "_volume_music": 0, "_volume_sound": 1, diff --git a/ghcidOutput b/ghcidOutput index 4639de1c1..17eaaf545 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (596 modules, at 10:48:32) +All good (596 modules, at 11:08:10) diff --git a/src/Dodge/Block.hs b/src/Dodge/Block.hs index c9e245d25..3af44a384 100644 --- a/src/Dodge/Block.hs +++ b/src/Dodge/Block.hs @@ -1,15 +1,19 @@ -module Dodge.Block where +module Dodge.Block ( + splinterBlock, + destroyBlock, + destroyDoor, +) where -import Control.Monad -import Data.Set (Set) -import Dodge.Data.MountedObject import Control.Lens +import Control.Monad import Data.Foldable import qualified Data.Graph.Inductive as FGL import qualified Data.IntSet as IS import Data.Maybe +import Data.Set (Set) import Dodge.Base.Collide import Dodge.Block.Debris +import Dodge.Data.MountedObject import Dodge.Data.World import Dodge.DrWdWd import Dodge.LightSource @@ -44,10 +48,10 @@ unshadowBlock w wlid = case w ^? cWorld . lWorld . walls . ix wlid of & insertWallInZones (wl & wlUnshadowed .~ True) Nothing -> w -checkBlockHP :: Block -> World -> World -checkBlockHP bl - | _blHP bl < 1 = destroyBlock bl - | otherwise = id +--checkBlockHP :: Block -> World -> World +--checkBlockHP bl +-- | _blHP bl < 1 = destroyBlock bl +-- | otherwise = id destroyBlock :: Block -> World -> World destroyBlock bl w = @@ -74,8 +78,9 @@ maybeClearPath :: World -> PathEdgeNodes -> World maybeClearPath w (PathEdgeNodes x y pe) | not . null $ overlapSegWalls (_peStart pe) (_peEnd pe) $ wlsNearSeg (_peStart pe) (_peEnd pe) w = w - | otherwise = w - & cWorld . pathGraph %~ FGL.insEdge (x, y, pe & peObstacles .~ mempty) . FGL.delEdge (x, y) + | otherwise = + w + & cWorld . pathGraph %~ FGL.insEdge (x, y, pe & peObstacles .~ mempty) . FGL.delEdge (x, y) destroyDoor :: Door -> World -> World destroyDoor dr w = diff --git a/src/Dodge/Prop/Gib.hs b/src/Dodge/Prop/Gib.hs index 9e0d07610..3c732f6fc 100644 --- a/src/Dodge/Prop/Gib.hs +++ b/src/Dodge/Prop/Gib.hs @@ -1,7 +1,9 @@ -module Dodge.Prop.Gib where +module Dodge.Prop.Gib ( + addCrGibs, +) where -import Control.Monad import Color +import Control.Monad import Data.Foldable import Data.List (zip4) import Dodge.Base @@ -30,17 +32,15 @@ aGib = } addCrGibs :: Creature -> World -> World -addCrGibs cr w = case damageDirection $ _csDamage $ _crState cr of +addCrGibs cr = case damageDirection $ _csDamage $ _crState cr of Nothing -> - w - & addGibAt 25 (_skinHead skin) cpos - & addGibsAt 3 7 (_skinLower skin) cpos - & addGibsAt 13 20 (_skinUpper skin) cpos + addGibAt 25 (_skinHead skin) cpos + . addGibsAt 3 7 (_skinLower skin) cpos + . addGibsAt 13 20 (_skinUpper skin) cpos Just d -> - w - & addGibsAtDir d 3 7 (_skinLower skin) cpos - & addGibsAtDir d 13 20 (_skinUpper skin) cpos - & addGibAtDir d 25 (_skinHead skin) cpos + addGibsAtDir d 3 7 (_skinLower skin) cpos + . addGibsAtDir d 13 20 (_skinUpper skin) cpos + . addGibAtDir d 25 (_skinHead skin) cpos where skin = _crType cr -- this should be cleaned up cpos = _crPos cr diff --git a/src/Dodge/Tree/GenerateStructure.hs b/src/Dodge/Tree/GenerateStructure.hs index 3e205dad7..c97720553 100644 --- a/src/Dodge/Tree/GenerateStructure.hs +++ b/src/Dodge/Tree/GenerateStructure.hs @@ -3,43 +3,47 @@ Procedural generation of tree structures. A /trunk/ refers to the successive first nodes in lists of children. -} -module Dodge.Tree.GenerateStructure - where -import RandomHelp -import Control.Monad +module Dodge.Tree.GenerateStructure where +import Control.Monad import Data.Tree +import RandomHelp + {- Single branched tree (a trunk). -} treePath :: Int -> Tree () treePath 0 = Node () [] -treePath x = Node () [treePath (x-1)] +treePath x = Node () [treePath (x -1)] {- Adds a branch at a certain point down a trunk. -} -addBranchAt - :: Int -- ^ Depth to add branch at - -> Tree () -- ^ Branch to add - -> Tree () -- ^ Starting tree - -> Tree () +addBranchAt :: + -- | Depth to add branch at + Int -> + -- | Branch to add + Tree () -> + -- | Starting tree + Tree () -> + Tree () addBranchAt 0 b (Node () xs) = Node () (xs ++ [b]) -addBranchAt i b (Node () (x:xs)) - = Node () (addBranchAt (i-1) b x : xs) +addBranchAt i b (Node () (x : xs)) = + Node () (addBranchAt (i -1) b x : xs) addBranchAt _ _ _ = error "Trying to add a branch too far along a tree" {- Randomly generate a tree containing a maximum of three nodes. -} smallBranch :: RandomGen g => State g (Tree ()) -smallBranch = takeOne - [ treePath 0 - , treePath 1 - , treePath 2 - , addBranchAt 0 (treePath 0) (treePath 1) - ] +smallBranch = + takeOne + [ treePath 0 + , treePath 1 + , treePath 2 + , addBranchAt 0 (treePath 0) (treePath 1) + ] {- Randomly generate a small tree. -} aTreeStrut :: RandomGen g => State g (Tree ()) aTreeStrut = do - d <- state $ randomR (9,11:: Int) - nbs <- state $ randomR (2,4) + d <- state $ randomR (9, 11 :: Int) + nbs <- state $ randomR (2, 4) bds <- takeN nbs [1 .. d - 1] - bs <- replicateM nbs smallBranch + bs <- replicateM nbs smallBranch let trunk = treePath d return $ foldr (uncurry addBranchAt) trunk $ zip bds bs diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index c1d01020d..1e88faad6 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -6,41 +6,32 @@ Description : Simulation update -} module Dodge.Update (updateUniverse) where -import Dodge.Inventory -import Dodge.ListDisplayParams -import Dodge.SelectionSections -import Data.Monoid -import NewInt -import Control.Monad -import Dodge.Update.Input.InGame -import Dodge.Update.Input.ScreenLayer -import Dodge.Debug -import Dodge.SmoothScroll import Color ---import Control.Applicative +import Control.Monad import Data.List import qualified Data.Map.Strict as M import Data.Maybe +import Data.Monoid import Dodge.Base ---import Dodge.Beam import Dodge.Bullet import Dodge.CrGroupUpdate import Dodge.Creature.Update ---import Dodge.Data.SelectionList import Dodge.Data.Universe +import Dodge.Debug import Dodge.DisplayInventory import Dodge.Distortion import Dodge.DrWdWd import Dodge.EnergyBall import Dodge.Flame +import Dodge.Inventory import Dodge.Item.Location import Dodge.Laser.Update import Dodge.LightSource.Update import Dodge.LinearShockwave.Update +import Dodge.ListDisplayParams import Dodge.Machine.Update import Dodge.Magnet.Update import Dodge.Menu ---import Dodge.Menu.Option import Dodge.ModificationEffect import Dodge.PosEvent import Dodge.PressPlate @@ -49,7 +40,9 @@ import Dodge.Prop.Update import Dodge.RadarBlip import Dodge.RadarSweep import Dodge.ScrollValue +import Dodge.SelectionSections import Dodge.Shockwave.Update +import Dodge.SmoothScroll import Dodge.SoundLogic import Dodge.Spark import Dodge.Tesla.Arc @@ -57,6 +50,8 @@ import Dodge.TmTm import Dodge.TractorBeam.Update import Dodge.Update.Camera import Dodge.Update.Cloud +import Dodge.Update.Input.InGame +import Dodge.Update.Input.ScreenLayer import Dodge.Update.Scroll import Dodge.Update.WallDamage import Dodge.WallCreatureCollisions @@ -66,6 +61,7 @@ import Dodge.Zoning.Creature import Geometry import qualified IntMapHelp as IM import LensHelp +import NewInt import SDL import Sound.Data import StrictHelp @@ -92,22 +88,23 @@ updateUniverseFirst u = updateDebugMessageOffset :: Universe -> Universe updateDebugMessageOffset u - | SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) - = u & uvDebugMessageOffset %~ (max 0 . subtract (u ^. uvWorld . input . scrollAmount)) + | SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) = + u & uvDebugMessageOffset %~ (max 0 . subtract (u ^. uvWorld . input . scrollAmount)) | otherwise = u setClickWorldPos :: Universe -> M.Map MouseButton Point2 -setClickWorldPos u = fmap - (const (screenToWorldPos (u ^. uvWorld . wCam) (u ^. uvWorld . input . mousePos))) - (M.filter (== 0) $ u ^. uvWorld . input . mouseButtons) +setClickWorldPos u = + fmap + (const (screenToWorldPos (u ^. uvWorld . wCam) (u ^. uvWorld . input . mousePos))) + (M.filter (== 0) $ u ^. uvWorld . input . mouseButtons) updateWorldEventFlags :: Universe -> Universe updateWorldEventFlags u = - (uvWorld . worldEventFlags .~ mempty) - -- for now update inventory positioning every tick - . updateInventoryPositioning - -- the question is how often to update the close objects section, and if - -- this can be done independently of the other sections + (uvWorld . worldEventFlags .~ mempty) + -- for now update inventory positioning every tick + . updateInventoryPositioning + -- the question is how often to update the close objects section, and if + -- this can be done independently of the other sections $ foldr updateWorldEventFlag u (u ^. uvWorld . worldEventFlags) updateWorldEventFlag :: WorldEventFlag -> Universe -> Universe @@ -136,8 +133,10 @@ updateUniverseLast u = & uvWorld . input . pressedKeys . each %~ f & uvWorld . input . mouseMoving .~ False & uvWorld . input . mouseButtons . each +~ 1 - & uvWorld . input . heldPos %~ M.union (fmap (const mp) (u ^. uvWorld . input . mouseButtons)) - & uvWorld . input . heldWorldPos %~ M.union (fmap (const mwp) (u ^. uvWorld . input . mouseButtons)) + & uvWorld . input . heldPos + %~ M.union (fmap (const mp) (u ^. uvWorld . input . mouseButtons)) + & uvWorld . input . heldWorldPos + %~ M.union (fmap (const mwp) (u ^. uvWorld . input . mouseButtons)) where mp = u ^. uvWorld . input . mousePos mwp = screenToWorldPos (u ^. uvWorld . wCam) mp @@ -165,10 +164,10 @@ timeFlowUpdate :: Universe -> Universe timeFlowUpdate u = case u ^. uvWorld . timeFlow of NormalTimeFlow -> functionalUpdate u ItemScrollTimeFlow smoothing _ _ _ -> over uvWorld (doItemTimeScroll smoothing) u - CameraScrollTimeFlow smoothing _ _ - | SDL.ScancodeLShift `M.member` (u ^. uvWorld . input . pressedKeys) - -> over uvWorld (doTimeScroll smoothing) u - CameraScrollTimeFlow {} -> u + CameraScrollTimeFlow smoothing _ _ + | SDL.ScancodeLShift `M.member` (u ^. uvWorld . input . pressedKeys) -> + over uvWorld (doTimeScroll smoothing) u + CameraScrollTimeFlow{} -> u RewindLeftClick 0 _ -> u & uvWorld . timeFlow .~ NormalTimeFlow RewindLeftClick _ _ -> over uvWorld scrollTimeBack u -- & uvWorld . cWorld . timeFlow .~ NormalTimeFlow DeathTime{} -> u @@ -214,8 +213,9 @@ scrollTimeBack w = case w ^? pastWorlds . _head of mupdateitem x = fromMaybe id $ do i <- w ^? timeFlow . scrollItemID . unNInt let pointituse = pointerToItemLocation (w ^?! cWorld . lWorld . itemLocations . ix i) . itUse - return $ (pointituse . leftConsumption . wpCharge .~ (x -1)) - . ( pointituse . leftHammer .~ HammerDown) + return $ + (pointituse . leftConsumption . wpCharge .~ (x -1)) + . (pointituse . leftHammer .~ HammerDown) scrollTimeForward :: World -> World scrollTimeForward w = case w ^? timeFlow . futureWorlds . _head of @@ -225,7 +225,7 @@ scrollTimeForward w = case w ^? timeFlow . futureWorlds . _head of & pastWorlds .:~ (w ^. cWorld . lWorld) & cWorld . lWorld .~ lw & timeFlow . reverseAmount .~ ramount - & mupdateitem + & mupdateitem where ramount = (w ^?! timeFlow . reverseAmount) + 1 mupdateitem = fromMaybe id $ do @@ -254,7 +254,7 @@ functionalUpdate u = . over uvWorld updateEnergyBalls . over uvWorld updateBullets . over uvWorld updateRadarBlips --- . over uvWorld updateBeams + -- . over uvWorld updateBeams . over uvWorld updateLasers . over uvWorld updateTeslaArcs . over uvWorld updateTractorBeams @@ -278,7 +278,7 @@ functionalUpdate u = . over uvWorld updateRBList . over uvWorld updateCloseObjects . over uvWorld updateWheelEvents - . over uvWorld (updateMouseInventorySelection (u ^. uvConfig)) + . over uvWorld (updateMouseInventorySelection (u ^. uvConfig)) . over uvWorld (updateMouseOverInventory (u ^. uvConfig)) . over uvWorld zoneClouds . over uvWorld zoneCreatures @@ -308,26 +308,34 @@ updateMouseInventorySelection' sss cfig w return $ w & hud . hudElement . subInventory . nsSelected .~ MouseInvSelect ysel Nothing Just p -> w & hud . hudElement . subInventory . nsSelected %~ startdrag p | leftclickheld = case w ^? hud . hudElement . subInventory . nsSelected of - Just MouseInvSelect{} -> w - & hud . hudElement . subInventory . nsSelected . misMaybeEnd .~ msel + Just MouseInvSelect{} -> + w + & hud . hudElement . subInventory . nsSelected . misMaybeEnd .~ msel Just (MouseInvChosen ssel esel) - | maybe False ( w - & shiftInvItemsUp ssel esel (inverseSelBoundaryUp cfig ldp sss mpos) + | maybe False (< ssel) $ inverseSelBoundaryUp cfig ldp sss mpos -> + w + & shiftInvItemsUp ssel esel (inverseSelBoundaryUp cfig ldp sss mpos) Just (MouseInvChosen ssel esel) - | maybe False (>esel) $ inverseSelBoundaryDown cfig ldp sss mpos -> w - & shiftInvItemsDown ssel esel (inverseSelBoundaryDown cfig ldp sss mpos) + | maybe False (> esel) $ inverseSelBoundaryDown cfig ldp sss mpos -> + w + & shiftInvItemsDown ssel esel (inverseSelBoundaryDown cfig ldp sss mpos) Just (MouseInvChosen{}) -> w - _ -> w - & hud . hudElement . subInventory . nsSelected .~ NoMouseSel + _ -> + w + & hud . hudElement . subInventory . nsSelected .~ NoMouseSel | otherwise = case w ^? hud . hudElement . subInventory . nsSelected of - Just (MouseInvSelect ssel (Just esel)) -> w - & hud . hudElement . subInventory . nsSelected .~ MouseInvChosen (min ssel esel) - (max ssel esel) - Just (MouseInvSelect _ Nothing) -> w - & hud . hudElement . subInventory . nsSelected .~ NoMouseSel + Just (MouseInvSelect ssel (Just esel)) -> + w + & hud . hudElement . subInventory . nsSelected + .~ MouseInvChosen + (min ssel esel) + (max ssel esel) + Just (MouseInvSelect _ Nothing) -> + w + & hud . hudElement . subInventory . nsSelected .~ NoMouseSel _ -> w where - startdrag p (MouseInvChosen s e) | s <= p && p <= e = MouseInvChosen s e + startdrag p (MouseInvChosen s e) | s <= p && p <= e = MouseInvChosen s e startdrag p _ = MouseInvChosen p p leftclickstart = w ^? input . mouseButtons . ix ButtonLeft == Just 0 && nobuttonright leftclickheld = ButtonLeft `M.member` (w ^. input . mouseButtons) && nobuttonright @@ -337,21 +345,23 @@ updateMouseInventorySelection' sss cfig w msel = inverseSelNumPos cfig ldp sss (w ^. input . mousePos) mysel = inverseSelSecYint (posSelSecYint cfig ldp (mpos ^. _y)) sss -shiftInvItemsUp :: (Int,Int) -> (Int,Int) -> Maybe (Int,Int) -> World -> World -shiftInvItemsUp (_,i) (_,j) Just{} w = w - & flip (foldl' f) [i..j] - & hud . hudElement . subInventory . nsSelected . misChosenStart . _2 -~ 1 - & hud . hudElement . subInventory . nsSelected . misChosenEnd . _2 -~ 1 +shiftInvItemsUp :: (Int, Int) -> (Int, Int) -> Maybe (Int, Int) -> World -> World +shiftInvItemsUp (_, i) (_, j) Just{} w = + w + & flip (foldl' f) [i .. j] + & hud . hudElement . subInventory . nsSelected . misChosenStart . _2 -~ 1 + & hud . hudElement . subInventory . nsSelected . misChosenEnd . _2 -~ 1 where f w' i' = swapInvItems g i' w' g i' m = fmap fst $ IM.cycleLT i' m shiftInvItemsUp _ _ Nothing w = w -shiftInvItemsDown :: (Int,Int) -> (Int,Int) -> Maybe (Int,Int) -> World -> World -shiftInvItemsDown (_,i) (_,j) Just{} w = w - & flip (foldl' f) (reverse [i..j]) - & hud . hudElement . subInventory . nsSelected . misChosenStart . _2 +~ 1 - & hud . hudElement . subInventory . nsSelected . misChosenEnd . _2 +~ 1 +shiftInvItemsDown :: (Int, Int) -> (Int, Int) -> Maybe (Int, Int) -> World -> World +shiftInvItemsDown (_, i) (_, j) Just{} w = + w + & flip (foldl' f) (reverse [i .. j]) + & hud . hudElement . subInventory . nsSelected . misChosenStart . _2 +~ 1 + & hud . hudElement . subInventory . nsSelected . misChosenEnd . _2 +~ 1 where f w' i' = swapInvItems g i' w' g i' m = fmap fst $ IM.cycleGT i' m @@ -360,8 +370,9 @@ shiftInvItemsDown _ _ Nothing w = w updateMouseOverInventory :: Configuration -> World -> World updateMouseOverInventory cfig w = fromMaybe w $ do sss <- w ^? hud . hudElement . diSections - return $ w & hud . hudElement . subInventory . nsMouseOver .~ - inverseSelNumPos cfig ldp sss (w ^. input . mousePos) + return $ + w & hud . hudElement . subInventory . nsMouseOver + .~ inverseSelNumPos cfig ldp sss (w ^. input . mousePos) where ldp = invDisplayParams w @@ -380,6 +391,7 @@ advanceScrollAmount u = updatePastWorlds :: World -> World updatePastWorlds w = w & pastWorlds %~ (forceFoldable . take 100 . ((w ^. cWorld . lWorld) :)) + --updatePastWorlds w = w & pastWorlds %~ (forceFoldable . take 600 . ((w ^. cWorld . lWorld) :)) doWorldEvents :: World -> World @@ -462,10 +474,12 @@ updateCreatureSoundPositions w = --updateIMr fim fup w = foldr (dbArg fup) w (fim w) updateIMl :: (World -> IM.IntMap a) -> (a -> a -> World -> World) -> World -> World updateIMl fim fup w = alaf Endo foldMap (dbArg fup) (fim w) w + --updateIMl fim fup w = foldl' (flip $ dbArg fup) w (fim w) updateIMl' :: (World -> IM.IntMap a) -> (a -> World -> World) -> World -> World updateIMl' fim fup w = alaf Endo foldMap fup (fim w) w + --updateIMl' fim fup w = foldl' (flip fup) w (fim w) updateCreatureGroups :: World -> World @@ -638,10 +652,12 @@ ppEvents w = IM.foldl' (flip $ \pp -> doPressPlateEvent (_ppEvent pp) pp) w $ w updateSeenWalls :: World -> World updateSeenWalls w = alaf Endo foldMap (markWallSeen . _wlID . snd) (allVisibleWalls w) w + --updateSeenWalls w = foldl' markWallSeen w (map (_wlID . snd) $ allVisibleWalls w) markWallSeen :: Int -> World -> World markWallSeen i = cWorld . seenWalls . at i ?~ () + --markWallSeen :: World -> Int -> World --markWallSeen w i = w & cWorld . seenWalls . at i ?~ () diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 9d13bd0c6..8cebbe1b0 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -8,10 +8,6 @@ module Dodge.WorldEvent.Explosion ( makeTeslaExplosionAt, ) where ---import Dodge.WorldEvent.Flash - ---import Geometry.Vector3D - import Control.Monad import Data.List import Dodge.Base.Collide @@ -27,8 +23,6 @@ import LensHelp import Picture import RandomHelp ---import Data.Maybe - makePoisonExplosionAt :: -- | Position Point2 -> @@ -97,7 +91,6 @@ makeExplosionAt p w = inversePushOut v = (15 - magV v) * 0.01 *.* v fVs' = zipWith (+.+) fVs $ map inversePushOut fPs' sizes = randomRs (2, 9) $ _randGen w - --times = randomRs (20,25) $ _randGen w times = randomRs (15, 20) $ _randGen w mF q z v size time = makeFlamelet q z v size time newFs = zipWith5 mF fPs zs (fmap (3 *.*) fVs') sizes times diff --git a/tags b/tags index 5a63e9447..e838a6e3f 100644 --- a/tags +++ b/tags @@ -350,7 +350,7 @@ ConcurrentEffect src/Loop/Data.hs 11;" C Cone src/Dodge/Item/Held/Cone.hs 1;" m Config src/Dodge/Data/Config.hs 4;" m Configuration src/Dodge/Data/Config.hs 38;" t -Connectors src/Dodge/Render/Connectors.hs 1;" m +Connectors src/Dodge/Render/Connectors.hs 3;" m ConstFloat src/Dodge/Data/GenFloat.hs 11;" C ConstantIntensity src/Dodge/Data/LightSource.hs 17;" C Consumable src/Dodge/Item/Consumable.hs 1;" m @@ -780,7 +780,7 @@ Generate src/Dodge/Layout/Generate.hs 4;" m GenerateStructure src/Dodge/Tree/GenerateStructure.hs 6;" m GenericFaction src/Dodge/Data/Creature/State.hs 35;" C GeoObjShads src/Dodge/Data/Config.hs 99;" C -Geodesic src/Polyhedra/Geodesic.hs 2;" m +Geodesic src/Polyhedra/Geodesic.hs 3;" m Geometry src/Geometry.hs 12;" m GetTo src/Dodge/Data/ActionPlan.hs 189;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C @@ -840,7 +840,7 @@ HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m HeldParams src/Dodge/Data/Item/Use.hs 80;" t HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m -HeldUse src/Dodge/HeldUse.hs 3;" m +HeldUse src/Dodge/HeldUse.hs 4;" m HelpNum src/HelpNum.hs 1;" m HiddenGoal src/Dodge/Data/Scenario.hs 14;" C HomeUsingRemoteScreen src/Dodge/Data/Item/Use/Consumption/Ammo.hs 25;" C @@ -1195,7 +1195,7 @@ MoveForward src/Dodge/Data/ActionPlan.hs 29;" C Movement src/Dodge/Creature/Impulse/Movement.hs 1;" m Moving src/Dodge/Prop/Moving.hs 1;" m MultGunAI src/Dodge/Data/Creature/Misc.hs 61;" C -Multiset src/Multiset.hs 2;" m +Multiset src/Multiset.hs 4;" m Music src/Music.hs 1;" m MusicData src/Music.hs 7;" t Mute src/Dodge/Data/Creature/Misc.hs 28;" C @@ -1400,7 +1400,7 @@ PerturbTillBreakPreviousArc src/Dodge/Data/Item/Params.hs 34;" C PickOnePlacement src/Dodge/Data/GenWorld.hs 87;" C Picture src/Picture/Data.hs 46;" t Picture src/Dodge/Creature/Picture.hs 5;" m -Picture src/Dodge/Debug/Picture.hs 1;" m +Picture src/Dodge/Debug/Picture.hs 2;" m Picture src/Dodge/Picture.hs 4;" m Picture src/Dodge/Render/Picture.hs 1;" m Picture src/Picture.hs 3;" m @@ -1409,7 +1409,7 @@ Pipe src/Dodge/Placement/Instance/Pipe.hs 1;" m PistolAI src/Dodge/Data/Creature/Misc.hs 53;" C PistolCrit src/Dodge/Creature/PistolCrit.hs 1;" m PistolFlare src/Dodge/Data/Item/Use.hs 132;" C -PlaceSpot src/Dodge/Placement/PlaceSpot.hs 4;" m +PlaceSpot src/Dodge/Placement/PlaceSpot.hs 5;" m Placement src/Dodge/Data/GenWorld.hs 77;" t Placement src/Dodge/Placement.hs 1;" m PlacementHelper src/Dodge/LevelGen/PlacementHelper.hs 1;" m @@ -1429,7 +1429,7 @@ Poke src/Shader/Poke.hs 1;" m PolyShad src/Picture/Data.hs 36;" C Polygon src/Geometry/Polygon.hs 3;" m Polyhedra src/Polyhedra/Data.hs 13;" t -Polyhedra src/Polyhedra.hs 1;" m +Polyhedra src/Polyhedra.hs 2;" m Polyhedron src/Polyhedra/Data.hs 13;" C PosEvent src/Dodge/Data/PosEvent.hs 16;" t PosEvent src/Dodge/Data/PosEvent.hs 6;" m @@ -1550,7 +1550,7 @@ RandPS src/Dodge/Data/GenWorld.hs 53;" C Randify src/Dodge/Randify.hs 1;" m Random src/Dodge/Item/Random.hs 1;" m Random src/Dodge/Placement/Random.hs 1;" m -RandomHelp src/RandomHelp.hs 2;" m +RandomHelp src/RandomHelp.hs 3;" m RandomImpulse src/Dodge/Data/ActionPlan.hs 32;" C RandomPlacement src/Dodge/Data/GenWorld.hs 86;" C RandomTurn src/Dodge/Data/ActionPlan.hs 31;" C @@ -1738,7 +1738,7 @@ ShrinkGunStatus src/Dodge/Data/Item/Params.hs 31;" t Shrunk src/Dodge/Data/Item/Params.hs 31;" C SideCluster src/Dodge/Data/RoomCluster.hs 14;" C SideEffect src/Dodge/Data/Universe.hs 60;" t -SimpleTrie src/SimpleTrie.hs 3;" m +SimpleTrie src/SimpleTrie.hs 4;" m SixteenthRes src/Dodge/Data/Config.hs 95;" C Size src/Shape/Data.hs 28;" t Size src/Dodge/Zone/Size.hs 1;" m @@ -1918,7 +1918,7 @@ ThrustPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 30;" C Tile src/Data/Tile.hs 14;" t Tile src/Data/Tile.hs 3;" m Tile src/Dodge/Tile.hs 1;" m -Tile src/Tile.hs 1;" m +Tile src/Tile.hs 2;" m Tiled src/Data/Tile.hs 13;" C TimeFlowStatus src/Dodge/Data/World.hs 58;" t TimePU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 35;" C @@ -1959,7 +1959,7 @@ Treasure src/Dodge/Room/Treasure.hs 5;" m Tree src/Dodge/Tree.hs 2;" m TreeHelp src/TreeHelp.hs 12;" m Triangulate src/Geometry/Triangulate.hs 3;" m -Trie src/SimpleTrie.hs 8;" t +Trie src/SimpleTrie.hs 9;" t TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m TriggerType src/Dodge/Data/Item/Use.hs 69;" t TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m @@ -2100,7 +2100,7 @@ WdP2 src/Dodge/Data/WorldEffect.hs 39;" t WdP2 src/Dodge/WdP2.hs 1;" m WdP2Const src/Dodge/Data/WorldEffect.hs 40;" C WdP2f src/Dodge/Data/WorldEffect.hs 61;" t -WdP2f src/Dodge/WdP2f.hs 1;" m +WdP2f src/Dodge/WdP2f.hs 2;" m WdP2f0 src/Dodge/Data/WorldEffect.hs 62;" C WdP2fDoorPosition src/Dodge/Data/WorldEffect.hs 63;" C WdTrig src/Dodge/Data/WorldEffect.hs 52;" C @@ -3156,8 +3156,8 @@ _topBoxSize src/Shape/Data.hs 17;" f _torqueAfter src/Dodge/Data/Item/Use.hs 85;" f _torqueAfter src/Dodge/Data/Item/Use.hs 102;" f _tractorBeams src/Dodge/Data/LWorld.hs 118;" f -_trieChildren src/SimpleTrie.hs 10;" f -_trieMVal src/SimpleTrie.hs 9;" f +_trieChildren src/SimpleTrie.hs 11;" f +_trieMVal src/SimpleTrie.hs 10;" f _triggers src/Dodge/Data/LWorld.hs 127;" f _tryLeftLink src/Dodge/Data/ComposedItem.hs 57;" f _tryRightLink src/Dodge/Data/ComposedItem.hs 58;" f @@ -3278,27 +3278,27 @@ aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 22;" f aGasCloud src/Dodge/Gas.hs 13;" f -aGib src/Dodge/Prop/Gib.hs 14;" f +aGib src/Dodge/Prop/Gib.hs 17;" f aRadarPulse src/Dodge/RadarSweep.hs 15;" f aShape src/Dodge/Placement/Instance/LightSource.hs 108;" f aSound src/Dodge/SoundLogic.hs 68;" f aStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 41;" f aTeslaArcAt src/Dodge/Tesla/Arc.hs 20;" f -aTreeStrut src/Dodge/Tree/GenerateStructure.hs 37;" f +aTreeStrut src/Dodge/Tree/GenerateStructure.hs 38;" f accessTerminal src/Dodge/WorldEffect.hs 54;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 24;" f addArmour src/Dodge/Creature.hs 83;" f -addBranchAt src/Dodge/Tree/GenerateStructure.hs 17;" f -addButtonSlowDoor src/Dodge/Room/LongDoor.hs 95;" f -addCrGibs src/Dodge/Prop/Gib.hs 31;" f +addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f +addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f +addCrGibs src/Dodge/Prop/Gib.hs 34;" f addDepth src/Picture/Base.hs 133;" f addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f addEdges src/Dodge/Path.hs 122;" f -addGib4 src/Dodge/Prop/Gib.hs 74;" f -addGibAt src/Dodge/Prop/Gib.hs 93;" f -addGibAtDir src/Dodge/Prop/Gib.hs 116;" f -addGibsAt src/Dodge/Prop/Gib.hs 47;" f -addGibsAtDir src/Dodge/Prop/Gib.hs 61;" f +addGib4 src/Dodge/Prop/Gib.hs 75;" f +addGibAt src/Dodge/Prop/Gib.hs 94;" f +addGibAtDir src/Dodge/Prop/Gib.hs 117;" f +addGibsAt src/Dodge/Prop/Gib.hs 48;" f +addGibsAtDir src/Dodge/Prop/Gib.hs 62;" f addGirder src/Dodge/Room/Modify/Girder.hs 90;" f addGirder' src/Dodge/Room/Modify/Girder.hs 111;" f addGirderEW src/Dodge/Room/Modify/Girder.hs 72;" f @@ -3310,7 +3310,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f -addPane src/Dodge/Placement/PlaceSpot.hs 162;" f +addPane src/Dodge/Placement/PlaceSpot.hs 173;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 96;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -3320,7 +3320,7 @@ addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addRoomLinkDecorations src/Dodge/Debug/LinkDecoration.hs 19;" f addRoomPolyDecorations src/Dodge/Debug/LinkDecoration.hs 14;" f addSideEffect src/Dodge/Concurrent.hs 32;" f -addSouthPillars src/Dodge/Room/LongDoor.hs 87;" f +addSouthPillars src/Dodge/Room/LongDoor.hs 88;" f addTermSignal src/Dodge/Event/Input.hs 34;" f addToTrunk src/TreeHelp.hs 156;" f addWarningTerminal src/Dodge/Room/Warning.hs 37;" f @@ -3359,23 +3359,23 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 242;" f -applyCME src/Dodge/HeldUse.hs 63;" f +applyCME src/Dodge/HeldUse.hs 65;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyDamageEffect src/Dodge/Creature/Damage.hs 31;" f applyEventIO src/Loop.hs 89;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f -applyInvLock src/Dodge/HeldUse.hs 73;" f +applyInvLock src/Dodge/HeldUse.hs 75;" f applyMagnetsToBul src/Dodge/Bullet.hs 46;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f -applyPastDamages src/Dodge/Creature/State.hs 129;" f +applyPastDamages src/Dodge/Creature/State.hs 130;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f -applyRecoil src/Dodge/HeldUse.hs 92;" f +applyRecoil src/Dodge/HeldUse.hs 94;" f applyResFactor src/Dodge/Data/Config.hs 108;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 79;" f -applySidePush src/Dodge/HeldUse.hs 99;" f -applySoundCME src/Dodge/HeldUse.hs 83;" f +applySidePush src/Dodge/HeldUse.hs 101;" f +applySoundCME src/Dodge/HeldUse.hs 85;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 40;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -3383,7 +3383,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 110;" f +applyTorqueCME src/Dodge/HeldUse.hs 112;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arc src/Picture/Base.hs 287;" f @@ -3397,7 +3397,7 @@ arcTest' src/Picture/Test.hs 21;" f argV src/Geometry/Vector.hs 80;" f argumentHelp src/Dodge/Terminal.hs 149;" f armourChaseCrit src/Dodge/Creature/ArmourChase.hs 38;" f -armouredChasers src/Dodge/Room/Boss.hs 62;" f +armouredChasers src/Dodge/Room/Boss.hs 63;" f armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f arms src/Dodge/Creature/Picture.hs 73;" f arrow src/Picture/Composite.hs 19;" f @@ -3448,7 +3448,7 @@ baseAMRShape src/Dodge/Item/Draw/SPic.hs 345;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 255;" f baseDebris src/Dodge/Block/Debris.hs 122;" f -baseFloorTileSize src/Tile.hs 38;" f +baseFloorTileSize src/Tile.hs 45;" f basePCI src/Dodge/Item/Grammar.hs 97;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 258;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 342;" f @@ -3466,7 +3466,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 33;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 196;" f +basicMuzFlare src/Dodge/HeldUse.hs 199;" f basicTerminal src/Dodge/Terminal.hs 32;" f battery src/Dodge/Item/Ammo.hs 96;" f batteryPack src/Dodge/Item/Equipment.hs 56;" f @@ -3502,19 +3502,19 @@ blue src/Color.hs 16;" f blunderbuss src/Dodge/Item/Held/Cone.hs 29;" f boostSelfL src/Dodge/Luse.hs 55;" f boosterGun src/Dodge/Item/Equipment/Booster.hs 9;" f -bossKeyItems src/Dodge/LockAndKey.hs 11;" f -bossRoom src/Dodge/Room/Boss.hs 59;" f +bossKeyItems src/Dodge/LockAndKey.hs 12;" f +bossRoom src/Dodge/Room/Boss.hs 60;" f bounceBall src/Dodge/Base/Collide.hs 77;" f bounceDir src/Dodge/Bullet.hs 100;" f bouncePoint src/Dodge/Base/Collide.hs 87;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f -boxABC src/Polyhedra.hs 107;" f +boxABC src/Polyhedra.hs 108;" f boxEdgeIndices src/Shader/Poke.hs 350;" f boxSurfaces src/Shader/Poke.hs 269;" f boxSurfacesIndices src/Shader/Poke.hs 282;" f -boxXYZ src/Polyhedra.hs 93;" f -boxXYZnobase src/Polyhedra.hs 79;" f +boxXYZ src/Polyhedra.hs 94;" f +boxXYZnobase src/Polyhedra.hs 80;" f brainHat src/Dodge/Item/Equipment.hs 88;" f branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 69;" f @@ -3535,7 +3535,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 246;" f burstRifle src/Dodge/Item/Held/Cane.hs 74;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 7;" f -calcTexCoord src/Tile.hs 17;" f +calcTexCoord src/Tile.hs 19;" f canSee src/Dodge/Base/Collide.hs 228;" f canSeeIndirect src/Dodge/Base/Collide.hs 235;" f cardEightVec src/Dodge/Base/CardinalPoint.hs 16;" f @@ -3546,11 +3546,11 @@ cartePosToScreen src/Dodge/Base/Coordinate.hs 37;" f cenLasTur src/Dodge/Room/LasTurret.hs 24;" f centerText src/Picture/Base.hs 184;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f -centerVaultRoom src/Dodge/Room/Procedural.hs 288;" f +centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 182;" f +chainLinkOrientation src/Dodge/Creature/State.hs 183;" f chainPairs src/Geometry.hs 363;" f changeSwapClose src/Dodge/Inventory.hs 150;" f changeSwapSel src/Dodge/Inventory.hs 142;" f @@ -3565,8 +3565,8 @@ chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 69;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 112;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f -checkBlockHP src/Dodge/Block.hs 46;" f -checkDeath src/Dodge/Creature/State.hs 74;" f +checkBlockHP src/Dodge/Block.hs 47;" f +checkDeath src/Dodge/Creature/State.hs 75;" f checkEndGame src/Dodge/Update.hs 657;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3596,7 +3596,7 @@ circleSolidCol src/Picture/Base.hs 168;" f clClSpringVel src/Dodge/Update.hs 710;" f clZoneSize src/Dodge/Zone/Size.hs 3;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f -clampPath src/Dodge/Room/Procedural.hs 165;" f +clampPath src/Dodge/Room/Procedural.hs 166;" f cldtPropagateFold src/Dodge/DoubleTree.hs 220;" f cleanUpPreload src/Preload.hs 11;" f cleanUpRenderPreload src/Preload/Render.hs 216;" f @@ -3645,14 +3645,14 @@ colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 235;" f combinationsDotGraph src/Dodge/Combine/Graph.hs 85;" f combinationsGraph src/Dodge/Combine/Graph.hs 66;" f -combinationsOf src/Multiset.hs 40;" f +combinationsOf src/Multiset.hs 46;" f combinationsTrie src/Dodge/Combine.hs 41;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f -combineFloors src/Dodge/Room/Procedural.hs 171;" f +combineFloors src/Dodge/Room/Procedural.hs 172;" f combineInventoryExtra src/Dodge/Render/HUD.hs 232;" f combineItemListYouX src/Dodge/Combine.hs 33;" f combineList src/Dodge/Combine.hs 20;" f -combineRooms src/Dodge/Room/Procedural.hs 151;" f +combineRooms src/Dodge/Room/Procedural.hs 152;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 344;" f combineTree src/Dodge/Tree/Compose.hs 66;" f commandColor src/Dodge/Terminal.hs 130;" f @@ -3670,8 +3670,8 @@ conEffects src/Dodge/Concurrent.hs 17;" f concBall src/Dodge/WorldEvent/SpawnParticle.hs 27;" f connectionBlurb src/Dodge/Terminal.hs 100;" f connectionBlurbLines src/Dodge/Terminal.hs 45;" f -constructEdges src/Polyhedra.hs 33;" f -constructEdgesList src/Polyhedra.hs 42;" f +constructEdges src/Polyhedra.hs 34;" f +constructEdgesList src/Polyhedra.hs 43;" f consumableInfo src/Dodge/Item/Info.hs 130;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f convexHull src/Geometry/Polygon.hs 104;" f @@ -3681,12 +3681,12 @@ copyItemToFloor src/Dodge/FloorItem.hs 17;" f copyItemToFloorID src/Dodge/FloorItem.hs 21;" f corDoor src/Dodge/Room/Room.hs 378;" f cornerList src/Preload/Render.hs 194;" f -corpseOrGib src/Dodge/Creature/State.hs 91;" f +corpseOrGib src/Dodge/Creature/State.hs 92;" f corridor src/Dodge/Room/Corridor.hs 17;" f -corridorBoss src/Dodge/LockAndKey.hs 133;" f +corridorBoss src/Dodge/LockAndKey.hs 134;" f corridorN src/Dodge/Room/Corridor.hs 52;" f corridorWallN src/Dodge/Room/Corridor.hs 71;" f -crAdd src/Dodge/Room/RezBox.hs 102;" f +crAdd src/Dodge/Room/RezBox.hs 104;" f crAwayFromPost src/Dodge/Creature/Test.hs 77;" f crBlips src/Dodge/RadarSweep.hs 69;" f crCanSeeCr src/Dodge/Creature/Test.hs 48;" f @@ -3712,7 +3712,7 @@ crOnWall src/Dodge/WallCreatureCollisions.hs 84;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f crSpring src/Dodge/Update.hs 723;" f crStratConMatches src/Dodge/Creature/Test.hs 72;" f -crUpdate src/Dodge/Creature/State.hs 61;" f +crUpdate src/Dodge/Creature/State.hs 62;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 50;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 44;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f @@ -3720,7 +3720,7 @@ craftInfo src/Dodge/Item/Info.hs 135;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f createArc src/Dodge/Tesla/Arc.hs 67;" f createBarrelSpark src/Dodge/Spark.hs 44;" f -createFlIt src/Dodge/Placement/PlaceSpot.hs 178;" f +createFlIt src/Dodge/Placement/PlaceSpot.hs 185;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f createHeadLamp src/Dodge/Euse.hs 159;" f @@ -3728,7 +3728,7 @@ createItemYou src/Dodge/Inventory/Add.hs 77;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 76;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 493;" f +createProjectile src/Dodge/HeldUse.hs 496;" f createShell src/Dodge/Projectile/Create.hs 19;" f createShieldWall src/Dodge/Euse.hs 134;" f createTorchLightOffset src/Dodge/LightSource/Torch.hs 11;" f @@ -3747,7 +3747,7 @@ crossProd src/Geometry/Vector3D.hs 41;" f crossV src/Geometry/Vector.hs 167;" f crsHit src/Dodge/WorldEvent/ThingsHit.hs 42;" f crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 103;" f -crsItmsUnused src/Dodge/Room/Containing.hs 44;" f +crsItmsUnused src/Dodge/Room/Containing.hs 45;" f crsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crsNearPoint src/Dodge/Zoning/Creature.hs 17;" f crsNearRect src/Dodge/Zoning/Creature.hs 36;" f @@ -3814,8 +3814,8 @@ deadRot src/Dodge/Creature/Picture.hs 85;" f deadScalp src/Dodge/Creature/Picture.hs 82;" f deadUpperBody src/Dodge/Creature/Picture.hs 126;" f debrisSize src/Dodge/Block/Debris.hs 111;" f -debugDraw src/Dodge/Debug/Picture.hs 122;" f -debugDraw' src/Dodge/Debug/Picture.hs 133;" f +debugDraw src/Dodge/Debug/Picture.hs 124;" f +debugDraw' src/Dodge/Debug/Picture.hs 135;" f debugEvent src/Dodge/Debug.hs 24;" f debugEvents src/Dodge/Debug.hs 17;" f debugList src/Dodge/Debug.hs 78;" f @@ -3824,7 +3824,7 @@ debugMenuOptions src/Dodge/Menu.hs 119;" f debugOn src/Dodge/Data/Config.hs 149;" f debugSelectCreatureList src/Dodge/Debug.hs 61;" f debugSelectCreatureMessage src/Dodge/Debug.hs 52;" f -decTimMvVel src/Dodge/Projectile/Update.hs 141;" f +decTimMvVel src/Dodge/Projectile/Update.hs 142;" f decodedtmap src/Dodge/Terminal.hs 203;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f @@ -3929,25 +3929,25 @@ deleteWall src/Dodge/Wall/Delete.hs 21;" f deleteWallFromZones src/Dodge/Wall/Zone.hs 23;" f deleteWallID src/Dodge/Wall/Delete.hs 13;" f deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f -denormalEdges src/Polyhedra.hs 135;" f +denormalEdges src/Polyhedra.hs 136;" f destroyAt src/Dodge/Bullet.hs 201;" f -destroyBlock src/Dodge/Block.hs 51;" f -destroyDoor src/Dodge/Block.hs 79;" f +destroyBlock src/Dodge/Block.hs 52;" f +destroyDoor src/Dodge/Block.hs 80;" f destroyInvItem src/Dodge/Inventory.hs 41;" f destroyLS src/Dodge/LightSource.hs 91;" f destroyLSFlashAt src/Dodge/LightSource.hs 101;" f destroyMachine src/Dodge/Machine/Destroy.hs 12;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 21;" f -destroyMount src/Dodge/Block.hs 98;" f -destroyMounts src/Dodge/Block.hs 95;" f -destroyProjectile src/Dodge/Projectile/Update.hs 62;" f +destroyMount src/Dodge/Block.hs 99;" f +destroyMounts src/Dodge/Block.hs 96;" f +destroyProjectile src/Dodge/Projectile/Update.hs 63;" f detV src/Geometry/Vector.hs 93;" f detectorColor src/Dodge/Item/Draw/SPic.hs 391;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 190;" f determineInvSelCursorWidth src/Dodge/ListDisplayParams.hs 54;" f -determineProjectileTracking src/Dodge/HeldUse.hs 482;" f +determineProjectileTracking src/Dodge/HeldUse.hs 485;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f diffAngles src/Geometry.hs 196;" f difference src/Geometry.hs 130;" f @@ -3989,7 +3989,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 123;" f +doDamage src/Dodge/Creature/State.hs 124;" f doDamagesFL src/Dodge/Flame.hs 58;" f doDeathToggle src/Dodge/WorldEffect.hs 95;" f doDeathTriggers src/Dodge/WorldEffect.hs 90;" f @@ -3997,7 +3997,7 @@ doDrWdWd src/Dodge/DrWdWd.hs 16;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 438;" f +doGenFloat src/Dodge/HeldUse.hs 441;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 25;" f @@ -4036,7 +4036,7 @@ doTerminalEffectLB src/Dodge/Terminal/LeftButton.hs 12;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f -doThrust src/Dodge/Projectile/Update.hs 73;" f +doThrust src/Dodge/Projectile/Update.hs 74;" f doTimeScroll src/Dodge/Update.hs 191;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 109;" f @@ -4044,9 +4044,9 @@ doWallRotate src/Dodge/Update/Camera.hs 188;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 37;" f doWdCrCr src/Dodge/CreatureEffect.hs 12;" f -doWdP2f src/Dodge/WdP2f.hs 8;" f +doWdP2f src/Dodge/WdP2f.hs 12;" f doWdWd src/Dodge/WorldEffect.hs 26;" f -doWeaponRepetitions src/Dodge/HeldUse.hs 54;" f +doWeaponRepetitions src/Dodge/HeldUse.hs 56;" f doWorldEvents src/Dodge/Update.hs 385;" f doWorldPos src/Dodge/WorldPos.hs 7;" f door src/Dodge/Room/Door.hs 13;" f @@ -4062,12 +4062,12 @@ doublePairSet src/Geometry.hs 153;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 156;" f drawAllShadows src/Dodge/Shadows.hs 5;" f -drawAugmentedHUD src/Dodge/Creature/State.hs 209;" f +drawAugmentedHUD src/Dodge/Creature/State.hs 210;" f drawBaseMachine src/Dodge/Machine/Draw.hs 52;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBlip src/Dodge/RadarBlip.hs 13;" f drawBlock src/Dodge/Block/Draw.hs 7;" f -drawBoundingBox src/Dodge/Debug/Picture.hs 299;" f +drawBoundingBox src/Dodge/Debug/Picture.hs 301;" f drawBul src/Dodge/Bullet/Draw.hs 9;" f drawButton src/Dodge/Button/Draw.hs 9;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f @@ -4077,21 +4077,21 @@ drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombineInventory src/Dodge/Render/HUD.hs 107;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 58;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f -drawCrInfo src/Dodge/Debug/Picture.hs 341;" f +drawCrInfo src/Dodge/Debug/Picture.hs 342;" f drawCreature src/Dodge/Render/ShapePicture.hs 82;" f -drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 163;" f +drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 165;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 56;" f -drawDDATest src/Dodge/Debug/Picture.hs 254;" f +drawDDATest src/Dodge/Debug/Picture.hs 256;" f drawDIMouseOver src/Dodge/Render/HUD.hs 76;" f drawDISelections src/Dodge/Render/HUD.hs 89;" f -drawDoorPaths src/Dodge/Debug/Picture.hs 215;" f +drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f drawEquipment src/Dodge/Creature/Picture.hs 140;" f drawExamineInventory src/Dodge/Render/HUD.hs 113;" f -drawFarWallDetect src/Dodge/Debug/Picture.hs 232;" f +drawFarWallDetect src/Dodge/Debug/Picture.hs 234;" f drawFlame src/Dodge/Flame/Draw.hs 7;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f drawFlare src/Dodge/Flare.hs 12;" f @@ -4101,8 +4101,8 @@ drawGib src/Dodge/Prop/Draw.hs 28;" f drawHP src/Dodge/Render/HUD.hs 51;" f drawHUD src/Dodge/Render/HUD.hs 43;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 18;" f -drawInspectWall src/Dodge/Debug/Picture.hs 207;" f -drawInspectWalls src/Dodge/Debug/Picture.hs 195;" f +drawInspectWall src/Dodge/Debug/Picture.hs 209;" f +drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f drawInventory src/Dodge/Render/HUD.hs 60;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLampCover src/Dodge/Prop/Draw.hs 44;" f @@ -4117,15 +4117,15 @@ drawMachine src/Dodge/Machine/Draw.hs 14;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 53;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 12;" f -drawMousePosition src/Dodge/Debug/Picture.hs 317;" f +drawMousePosition src/Dodge/Debug/Picture.hs 319;" f drawMouseSelection src/Dodge/Render/ShapePicture.hs 47;" f drawMovingShape src/Dodge/Prop/Draw.hs 67;" f drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f drawMuzFlare src/Dodge/Flare.hs 17;" f drawOptions src/Dodge/Render/MenuScreen.hs 32;" f -drawPathBetween src/Dodge/Debug/Picture.hs 166;" f -drawPathEdge src/Dodge/Debug/Picture.hs 220;" f -drawPathing src/Dodge/Debug/Picture.hs 383;" f +drawPathBetween src/Dodge/Debug/Picture.hs 168;" f +drawPathEdge src/Dodge/Debug/Picture.hs 222;" f +drawPathing src/Dodge/Debug/Picture.hs 384;" f drawPlus src/Dodge/Render/Picture.hs 89;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f @@ -4159,15 +4159,15 @@ drawTurret src/Dodge/Machine/Draw.hs 60;" f drawVerticalLampCover src/Dodge/Prop/Draw.hs 59;" f drawWall src/Dodge/Wall/Draw.hs 7;" f drawWallFace src/Dodge/Debug/Picture.hs 73;" f -drawWallSearchRays src/Dodge/Debug/Picture.hs 263;" f -drawWallsNearCursor src/Dodge/Debug/Picture.hs 187;" f -drawWallsNearYou src/Dodge/Debug/Picture.hs 178;" f +drawWallSearchRays src/Dodge/Debug/Picture.hs 265;" f +drawWallsNearCursor src/Dodge/Debug/Picture.hs 189;" f +drawWallsNearYou src/Dodge/Debug/Picture.hs 180;" f drawWeapon src/Dodge/Creature/Volition.hs 14;" f -drawWlIDs src/Dodge/Debug/Picture.hs 327;" f -drawZoneCol src/Dodge/Debug/Picture.hs 115;" f -drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 247;" f +drawWlIDs src/Dodge/Debug/Picture.hs 329;" f +drawZoneCol src/Dodge/Debug/Picture.hs 117;" f +drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 249;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropByState src/Dodge/Creature/State.hs 117;" f +dropByState src/Dodge/Creature/State.hs 118;" f dropExcept src/Dodge/Creature/Action.hs 172;" f dropItem src/Dodge/Creature/Action.hs 177;" f drumMag src/Dodge/Item/Ammo.hs 48;" f @@ -4183,13 +4183,13 @@ dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f dummyMenuOption src/Dodge/Menu/Option.hs 81;" f ebFlicker src/Dodge/EnergyBall.hs 94;" f edgeFormatting src/Dodge/Combine/Graph.hs 118;" f -edgeToPic src/Dodge/Debug/Picture.hs 392;" f +edgeToPic src/Dodge/Debug/Picture.hs 393;" f effectWhileAttached src/Dodge/ItEffect.hs 27;" f ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f elephantGun src/Dodge/Item/Held/Rod.hs 38;" f emptyCorridor src/Dodge/Room/BlinkAcross.hs 22;" f -emptyTrie src/SimpleTrie.hs 15;" f +emptyTrie src/SimpleTrie.hs 16;" f encircle src/Dodge/Creature/Boid.hs 115;" f encircleCloseP src/Dodge/Creature/Boid.hs 35;" f encircleDistP src/Dodge/Creature/Boid.hs 21;" f @@ -4204,7 +4204,7 @@ equipPosition src/Dodge/Item/Draw.hs 29;" f equipSiteInfo src/Dodge/Item/Info.hs 220;" f equipSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f -equipmentEffects src/Dodge/Creature/State.hs 156;" f +equipmentEffects src/Dodge/Creature/State.hs 157;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 22;" f errorAngleVV src/Geometry.hs 62;" f errorClosestPointOnLine src/Geometry.hs 74;" f @@ -4213,7 +4213,7 @@ errorHead src/ListHelp.hs 76;" f errorIsLHS src/Geometry.hs 68;" f errorNormalizeV src/Geometry.hs 57;" f errorPointInPolygon src/Geometry.hs 49;" f -evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 139;" f +evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 154;" f evenOddSplit src/Dodge/Base.hs 138;" f exitTerminalSubInv src/Dodge/Terminal.hs 223;" f expandLine src/Dodge/Picture.hs 30;" f @@ -4223,7 +4223,7 @@ expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 183;" f expireAndDamageFL src/Dodge/Flame.hs 48;" f -explodeShell src/Dodge/Projectile/Update.hs 153;" f +explodeShell src/Dodge/Projectile/Update.hs 154;" f explosionFlashAt src/Dodge/WorldEvent/Flash.hs 56;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 396;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f @@ -4232,8 +4232,8 @@ extendAway src/Dodge/Placement/Instance/LightSource.hs 196;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extraPics src/Dodge/Render/ShapePicture.hs 124;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f -faceEdges src/Polyhedra.hs 64;" f -facesToVF src/Polyhedra/Geodesic.hs 68;" f +faceEdges src/Polyhedra.hs 65;" f +facesToVF src/Polyhedra/Geodesic.hs 69;" f fadeTLS src/Dodge/LightSource/Update.hs 14;" f fallSmallBounce src/Dodge/Prop/Moving.hs 28;" f fallSmallBounce' src/Dodge/Prop/Moving.hs 33;" f @@ -4249,8 +4249,8 @@ findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findIndex src/IntMapHelp.hs 87;" f findItemSlot src/Dodge/Inventory/CheckSlots.hs 26;" f -findReverseEdge src/Polyhedra.hs 49;" f -findReverseEdgeList src/Polyhedra.hs 56;" f +findReverseEdge src/Polyhedra.hs 50;" f +findReverseEdgeList src/Polyhedra.hs 57;" f findWallFreeDropPoint src/Dodge/FloorItem.hs 47;" f findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f findWithIx src/ListHelp.hs 123;" f @@ -4268,7 +4268,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 72;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 40;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 56;" f flamerPic src/Dodge/Item/Draw/SPic.hs 328;" f -flareCircleAt src/Dodge/HeldUse.hs 178;" f +flareCircleAt src/Dodge/HeldUse.hs 181;" f flareCircleAt src/Dodge/WorldEvent/Flash.hs 46;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 49;" f flatLookupItems src/Dodge/Combine.hs 36;" f @@ -4294,7 +4294,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 165;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f -foldCr src/Dodge/Creature/State.hs 43;" f +foldCr src/Dodge/Creature/State.hs 44;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 37;" f @@ -4336,7 +4336,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 131;" f gameplayMenuOptions src/Dodge/Menu.hs 134;" f -gasCreate src/Dodge/HeldUse.hs 435;" f +gasCreate src/Dodge/HeldUse.hs 438;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4351,8 +4351,8 @@ getAmmoLinks src/Dodge/Item/Grammar.hs 73;" f getArguments src/Dodge/Update/Scroll.hs 151;" f getArguments' src/Dodge/Update/Scroll.hs 139;" f getAvailableListLines src/Dodge/SelectionList.hs 11;" f -getBulletTrajectory src/Dodge/HeldUse.hs 344;" f -getBulletType src/Dodge/HeldUse.hs 318;" f +getBulletTrajectory src/Dodge/HeldUse.hs 347;" f +getBulletType src/Dodge/HeldUse.hs 321;" f getCommands src/Dodge/Terminal.hs 115;" f getCommandsHelp src/Dodge/Terminal.hs 73;" f getCrDexterity src/Dodge/Creature/Statistics.hs 13;" f @@ -4363,9 +4363,9 @@ getDistortions src/Dodge/Render.hs 382;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getItem src/Dodge/Item/Location.hs 15;" f getLDPWidth src/Dodge/Render/List.hs 71;" f -getLaserColor src/Dodge/HeldUse.hs 193;" f -getLaserDamage src/Dodge/HeldUse.hs 190;" f -getLaserPhaseV src/Dodge/HeldUse.hs 187;" f +getLaserColor src/Dodge/HeldUse.hs 196;" f +getLaserDamage src/Dodge/HeldUse.hs 193;" f +getLaserPhaseV src/Dodge/HeldUse.hs 190;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMouseInvSel src/Dodge/Render/HUD.hs 83;" f getNodePos src/Dodge/Path.hs 31;" f @@ -4385,8 +4385,8 @@ girderV' src/Dodge/Room/Foreground.hs 157;" f girderZ src/Dodge/Room/Foreground.hs 108;" f glNamedBufferSubDataH src/Shader/Bind.hs 53;" f glassDebris src/Dodge/Block/Debris.hs 169;" f -glassLesson src/Dodge/Room/GlassLesson.hs 22;" f -glassLessonRunPast src/Dodge/Room/GlassLesson.hs 67;" f +glassLesson src/Dodge/Room/GlassLesson.hs 23;" f +glassLessonRunPast src/Dodge/Room/GlassLesson.hs 68;" f glassShat1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f glassShat2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f glassShat3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 326;" f @@ -4426,7 +4426,7 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 37;" f -hammerCheck src/Dodge/HeldUse.hs 36;" f +hammerCheck src/Dodge/HeldUse.hs 38;" f hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 151;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 41;" f @@ -4454,15 +4454,15 @@ healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f healthTest src/Dodge/Room/LasTurret.hs 93;" f heavyBulDams src/Dodge/Item/Weapon/Bullet.hs 38;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f -heldEffect src/Dodge/HeldUse.hs 33;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 43;" f +heldEffect src/Dodge/HeldUse.hs 35;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 45;" f heldInfo src/Dodge/Item/Info.hs 48;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 58;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 26;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 173;" f heldPositionInfo src/Dodge/Item/Info.hs 207;" f helpCommand src/Dodge/Terminal.hs 64;" f -helpPoly3D src/Polyhedra.hs 124;" f +helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 221;" f hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f highBar src/Dodge/Room/Foreground.hs 89;" f @@ -4481,8 +4481,8 @@ hotkeyToString src/Dodge/Inventory/SelectionList.hs 39;" f humanoidAIList src/Dodge/Humanoid.hs 181;" f hvBulletAmmo src/Dodge/Item/Weapon/Bullet.hs 31;" f iShape src/Dodge/Placement/Instance/LightSource.hs 74;" f -icosahedronPoints src/Polyhedra/Geodesic.hs 11;" f -icosohedronFaces src/Polyhedra/Geodesic.hs 18;" f +icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f +icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f ifConfigWallRotate src/Dodge/Update/Camera.hs 171;" f ildtPropagate src/Dodge/DoubleTree.hs 57;" f impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f @@ -4524,7 +4524,7 @@ inputFocus src/Dodge/InputFocus.hs 69;" f inputFocusI src/Dodge/InputFocus.hs 66;" f insertAt src/Padding.hs 60;" f insertIMInZone src/Dodge/Base.hs 59;" f -insertInTrie src/SimpleTrie.hs 22;" f +insertInTrie src/SimpleTrie.hs 23;" f insertNewKey src/IntMapHelp.hs 66;" f insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f insertOver src/ListHelp.hs 47;" f @@ -4533,7 +4533,7 @@ insertWall src/Dodge/Placement/PlaceSpot/Block.hs 122;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 72;" f -internalCreatureUpdate src/Dodge/Creature/State.hs 107;" f +internalCreatureUpdate src/Dodge/Creature/State.hs 108;" f interpWith src/Dodge/Creature/Boid.hs 10;" f intersectCircSeg src/Geometry/Intersect.hs 303;" f intersectCircSegFirst src/Geometry/Intersect.hs 314;" f @@ -4563,7 +4563,7 @@ invRootTrees src/Dodge/Item/Grammar.hs 206;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 19;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f -invSideEff src/Dodge/Creature/State.hs 161;" f +invSideEff src/Dodge/Creature/State.hs 162;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f invTrees src/Dodge/Item/Grammar.hs 194;" f invTrees' src/Dodge/Item/Grammar.hs 198;" f @@ -4578,15 +4578,15 @@ inverseSelSecYintXPosCheck src/Dodge/SelectionSections.hs 168;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f invertIntMap src/IntMapHelp.hs 101;" f -invertIntMap src/Multiset.hs 61;" f +invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 54;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 203;" f +isAmmoIntLink src/Dodge/HeldUse.hs 206;" f isAnimate src/Dodge/Creature/Test.hs 138;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFrictionless src/Dodge/Creature/State.hs 340;" f +isFrictionless src/Dodge/Creature/State.hs 341;" f isGas src/Dodge/Euse.hs 64;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4611,7 +4611,7 @@ itemBaseName src/Dodge/Item/Display.hs 44;" f itemBlips src/Dodge/RadarSweep.hs 75;" f itemCombinations src/Dodge/Combine/Combinations.hs 54;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 54;" f -itemDetectorEffect src/Dodge/HeldUse.hs 228;" f +itemDetectorEffect src/Dodge/HeldUse.hs 231;" f itemDisplay src/Dodge/Item/Display.hs 15;" f itemDisplayPad src/Dodge/Item/Display.hs 28;" f itemEquipPict src/Dodge/Item/Draw.hs 17;" f @@ -4625,14 +4625,14 @@ itemFromLeftType src/Dodge/Item.hs 76;" f itemInfo src/Dodge/Item/Info.hs 12;" f itemInvColor src/Dodge/Item/InventoryColor.hs 11;" f itemNumberDisplay src/Dodge/Item/Display.hs 94;" f -itemRooms src/Dodge/LockAndKey.hs 39;" f +itemRooms src/Dodge/LockAndKey.hs 40;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f itemString src/Dodge/Item/Display.hs 41;" f itemToBreakLists src/Dodge/Item/Grammar.hs 47;" f itemToFunction src/Dodge/Item/Grammar.hs 79;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f -itemUpdate src/Dodge/Creature/State.hs 312;" f +itemUpdate src/Dodge/Creature/State.hs 313;" f itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 56;" f itemUseEffect' src/Dodge/Creature/Impulse/UseItem.hs 34;" f iterateUntil src/MonadHelp.hs 23;" f @@ -4656,12 +4656,12 @@ k src/ShortShow.hs 34;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 69;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 57;" f -keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f +keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f keyPic src/Dodge/Item/Draw/SPic.hs 397;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 456;" f -lConnect src/Dodge/Render/Connectors.hs 30;" f -lConnectMulti src/Dodge/Render/Connectors.hs 37;" f +lConnect src/Dodge/Render/Connectors.hs 41;" f +lConnectMulti src/Dodge/Render/Connectors.hs 50;" f lShape src/Dodge/Placement/Instance/LightSource.hs 77;" f lamp src/Dodge/Creature/Lamp.hs 22;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f @@ -4670,7 +4670,7 @@ lampCrSPic src/Dodge/Render/ShapePicture.hs 98;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 351;" f -lasRayAt src/Dodge/HeldUse.hs 295;" f +lasRayAt src/Dodge/HeldUse.hs 298;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f lasTunnel src/Dodge/Room/LasTurret.hs 124;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f @@ -4731,12 +4731,12 @@ litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f llleft src/Dodge/Item/Grammar.hs 105;" f llright src/Dodge/Item/Grammar.hs 108;" f lmt src/MatrixHelper.hs 43;" f -lnkBothAnd src/Dodge/Room/Procedural.hs 120;" f +lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 284;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f -loadMuzzle src/Dodge/HeldUse.hs 127;" f +loadMuzzle src/Dodge/HeldUse.hs 129;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4749,16 +4749,16 @@ locGoRight src/Dodge/DoubleTree.hs 204;" f locUp src/Dodge/DoubleTree.hs 191;" f lockInv src/Dodge/Inventory/Lock.hs 6;" f lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 50;" f -lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f -lockRoomMultiItems src/Dodge/LockAndKey.hs 14;" f +lockRoomKeyItems src/Dodge/LockAndKey.hs 26;" f +lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f lockedStart src/Dodge/Room/RunPast.hs 34;" f logistic src/Dodge/Base.hs 90;" f longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f longCrit src/Dodge/Creature.hs 69;" f -longRoom src/Dodge/Room/LongRoom.hs 21;" f -longRoomRunPast src/Dodge/Room/LongRoom.hs 47;" f +longRoom src/Dodge/Room/LongRoom.hs 22;" f +longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 139;" f -lookupTrie src/SimpleTrie.hs 28;" f +lookupTrie src/SimpleTrie.hs 29;" f loopPairs src/ListHelp.hs 30;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f lorem src/Lorem.hs 3;" f @@ -4789,7 +4789,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 51;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 376;" f +makeBullet src/Dodge/HeldUse.hs 379;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f @@ -4803,10 +4803,10 @@ makeDebrisToHeight src/Dodge/Block/Debris.hs 39;" f makeDefaultCorpse src/Dodge/Corpse/Make.hs 14;" f makeDoorDebris src/Dodge/Block/Debris.hs 18;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f -makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 79;" f +makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 80;" f makeFlak src/Dodge/Bullet.hs 131;" f makeFlame src/Dodge/Flame.hs 131;" f -makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 62;" f +makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 63;" f makeFlamelet src/Dodge/EnergyBall.hs 16;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlashBall src/Dodge/EnergyBall.hs 74;" f @@ -4815,12 +4815,12 @@ makeFragBullets src/Dodge/Bullet.hs 116;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 33;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 143;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 145;" f makeOptionsSelectionList src/Dodge/Menu/Option.hs 46;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f -makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 31;" f +makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 32;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 50;" f makeShaderEBO src/Shader/Compile.hs 53;" f @@ -4839,10 +4839,10 @@ makeTermLine src/Dodge/Terminal.hs 118;" f makeTermPara src/Dodge/Terminal.hs 121;" f makeTeslaArc src/Dodge/Tesla/Arc.hs 57;" f makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f -makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 46;" f +makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 47;" f makeThickSmokeAt src/Dodge/WorldEvent/Cloud.hs 54;" f makeThinSmokeAt src/Dodge/WorldEvent/Cloud.hs 57;" f -makeTileFromPoly src/Tile.hs 28;" f +makeTileFromPoly src/Tile.hs 34;" f makeTlsTimeRadColPos src/Dodge/LightSource.hs 88;" f makeTypeCraft src/Dodge/Item/Craftable.hs 13;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 7;" f @@ -4851,17 +4851,17 @@ markWallSeen src/Dodge/Update.hs 643;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 43;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f -maybeBlockedPassage src/Dodge/Room/RezBox.hs 67;" f +maybeBlockedPassage src/Dodge/Room/RezBox.hs 69;" f maybeClearDoorPath src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f maybeClearDoorPaths src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 68;" f -maybeClearPath src/Dodge/Block.hs 72;" f -maybeClearPaths src/Dodge/Block.hs 69;" f +maybeClearPath src/Dodge/Block.hs 73;" f +maybeClearPaths src/Dodge/Block.hs 70;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 265;" f maybeOpenTerminal src/Dodge/Update.hs 119;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f -maybeTakeOne src/RandomHelp.hs 107;" f +maybeTakeOne src/RandomHelp.hs 111;" f maybeWarmupStatus src/Dodge/Item/Display.hs 119;" f mcApplyDamage src/Dodge/Machine/Update.hs 90;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f @@ -4872,10 +4872,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 104;" f mcSPic src/Dodge/Render/ShapePicture.hs 177;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 69;" f mcSensorUpdate src/Dodge/Machine/Update.hs 99;" f -mcShootLaser src/Dodge/HeldUse.hs 462;" f +mcShootLaser src/Dodge/HeldUse.hs 465;" f mcTriggerVal src/Dodge/Machine/Update.hs 75;" f mcTypeUpdate src/Dodge/Machine/Update.hs 24;" f -mcUseHeld src/Dodge/HeldUse.hs 401;" f +mcUseHeld src/Dodge/HeldUse.hs 404;" f mcUseItem src/Dodge/Machine/Update.hs 61;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 84;" f @@ -4970,24 +4970,24 @@ muchWlDustAt src/Dodge/Wall/Dust.hs 15;" f muin src/Dodge/RoomLink.hs 132;" f multGunCrit src/Dodge/Creature.hs 76;" f multiArrow src/Picture/Composite.hs 11;" f -multiLookupTrie src/SimpleTrie.hs 32;" f -multiLookupTrieI src/SimpleTrie.hs 41;" f +multiLookupTrie src/SimpleTrie.hs 34;" f +multiLookupTrieI src/SimpleTrie.hs 43;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 164;" f +muzFlareAt src/Dodge/HeldUse.hs 167;" f muzFlareAt src/Dodge/WorldEvent/Flash.hs 26;" f mvBullet src/Dodge/Bullet.hs 33;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 174;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 184;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 187;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 191;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 194;" f mvGust src/Dodge/Update.hs 671;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 215;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 222;" f mvP src/Dodge/Wall/Move.hs 54;" f -mvPP src/Dodge/Placement/PlaceSpot.hs 181;" f +mvPP src/Dodge/Placement/PlaceSpot.hs 188;" f mvPointAlongAtSpeed src/Dodge/Base.hs 106;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 313;" f mvPointToward src/Dodge/Base.hs 116;" f mvPointTowardAtSpeed src/Dodge/Base.hs 95;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 171;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 178;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 177;" f myIntersectSegSeg src/Geometry/Intersect.hs 155;" f @@ -5026,7 +5026,7 @@ numSelfTree' src/Dodge/Tree/Compose.hs 110;" f numShads src/Picture/Data.hs 42;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 183;" f -obstacleColor src/Dodge/Debug/Picture.hs 225;" f +obstacleColor src/Dodge/Debug/Picture.hs 227;" f obstructPathsCrossing src/Dodge/Path.hs 138;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 498;" f onEquipWristShield src/Dodge/Euse.hs 83;" f @@ -5094,7 +5094,7 @@ pauseSound src/Dodge/SoundLogic.hs 41;" f pauseTime src/Dodge/Update.hs 177;" f pciToCI src/Dodge/Item/Grammar.hs 94;" f peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f -pedestalRoom src/Dodge/Room/Containing.hs 49;" f +pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 224;" f perMat src/MatrixHelper.hs 49;" f perceptionUpdate src/Dodge/Creature/Perception.hs 22;" f @@ -5109,7 +5109,7 @@ pesNearPoint src/Dodge/Zoning/Pathing.hs 33;" f pesNearRect src/Dodge/Zoning/Pathing.hs 40;" f pesNearSeg src/Dodge/Zoning/Pathing.hs 37;" f picAtCrPos1 src/Dodge/Render/ShapePicture.hs 103;" f -picFormat src/Polyhedra.hs 22;" f +picFormat src/Polyhedra.hs 23;" f picMap src/Picture/Base.hs 67;" f pickUpItem src/Dodge/Inventory/Add.hs 89;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f @@ -5122,28 +5122,28 @@ pipe src/Dodge/Item/Craftable.hs 42;" f pistol src/Dodge/Item/Held/Stick.hs 35;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 13;" f pistolerRoom src/Dodge/Room/Room.hs 323;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 112;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 113;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 190;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 197;" f plNew src/Dodge/Base/NewID.hs 26;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 16;" f plNewUsing src/Dodge/Base/NewID.hs 34;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 205;" f -placePickOne src/Dodge/Placement/PlaceSpot.hs 41;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 49;" f -placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 44;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 30;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 90;" f -placeSpotID' src/Dodge/Placement/PlaceSpot.hs 96;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 79;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 60;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 212;" f +placePickOne src/Dodge/Placement/PlaceSpot.hs 43;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 55;" f +placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 46;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f +placeSpotID' src/Dodge/Placement/PlaceSpot.hs 107;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 71;" f placeString src/Dodge/Render/MenuScreen.hs 54;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 156;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 167;" f plainRegex src/Dodge/DisplayInventory.hs 141;" f plateCraft src/Dodge/Item/Craftable.hs 45;" f playIfFree src/Sound.hs 136;" f @@ -5181,7 +5181,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 25;" f pointerYourRootItem src/Dodge/Item/Location.hs 42;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 36;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/State.hs 104;" f +poisonSPic src/Dodge/Creature/State.hs 105;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 516;" f pokeArrayOff src/Shader/Poke.hs 527;" f @@ -5219,9 +5219,9 @@ polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyPointsIntersect src/Geometry/ConvexPoly.hs 74;" f polyPointsOverlap src/Geometry/ConvexPoly.hs 60;" f -polyToEdges src/Polyhedra.hs 132;" f -polyToGeoRender src/Polyhedra.hs 141;" f -polyToPics src/Polyhedra.hs 121;" f +polyToEdges src/Polyhedra.hs 133;" f +polyToGeoRender src/Polyhedra.hs 142;" f +polyToPics src/Polyhedra.hs 122;" f polyToTris src/Geometry/Triangulate.hs 7;" f polyToTris' src/Geometry.hs 160;" f polyToTris'' src/Geometry/Triangulate.hs 15;" f @@ -5229,7 +5229,7 @@ polyWireFrame src/Dodge/Debug/LinkDecoration.hs 33;" f polygon src/Picture/Base.hs 72;" f polygonCol src/Picture/Base.hs 78;" f polygonWire src/Picture/Base.hs 63;" f -polysToPic src/Polyhedra.hs 129;" f +polysToPic src/Polyhedra.hs 130;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posEventEffect src/Dodge/PosEvent.hs 16;" f posRms src/Dodge/Tree/Shift.hs 44;" f @@ -5238,17 +5238,17 @@ positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f postGenerationProcessing src/Dodge/LevelGen.hs 33;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f postWorldLoad src/Dodge/WorldLoad.hs 14;" f -powerFakeout src/Dodge/Room/Start.hs 26;" f -powerFakeout' src/Dodge/Room/Start.hs 23;" f +powerFakeout src/Dodge/Room/Start.hs 27;" f +powerFakeout' src/Dodge/Room/Start.hs 24;" f powerLegs src/Dodge/Item/Equipment.hs 107;" f -powlist src/Multiset.hs 55;" f -powlistUpToN src/Multiset.hs 20;" f -powlistUpToN' src/Multiset.hs 9;" f -powlistUpToN'' src/Multiset.hs 27;" f +powlist src/Multiset.hs 61;" f +powlistUpToN src/Multiset.hs 23;" f +powlistUpToN' src/Multiset.hs 12;" f +powlistUpToN'' src/Multiset.hs 31;" f ppDraw src/Dodge/Render/ShapePicture.hs 162;" f ppEvents src/Dodge/Update.hs 636;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f -preCritStart src/Dodge/Room/Start.hs 81;" f +preCritStart src/Dodge/Room/Start.hs 82;" f preloadRender src/Preload/Render.hs 30;" f premapMaybe src/FoldlHelp.hs 24;" f prependTwo src/Geometry.hs 165;" f @@ -5317,8 +5317,8 @@ putWireStart src/Dodge/Wire.hs 34;" f qID src/Quaternion.hs 54;" f qToV2 src/Quaternion.hs 51;" f qToV3 src/Quaternion.hs 48;" f -quarterRoomSquare src/Dodge/Room/Procedural.hs 212;" f -quarterRoomTri src/Dodge/Room/Procedural.hs 176;" f +quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f +quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f quitCommand src/Dodge/Terminal.hs 55;" f rToOnward src/Dodge/Cleat.hs 21;" f radBounds src/Dodge/Room/Foreground.hs 154;" f @@ -5327,33 +5327,33 @@ randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randColDirSpark src/Dodge/Spark.hs 50;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f -randEdgeTank src/Dodge/Room/Tanks.hs 36;" f -randEdgeTanks src/Dodge/Room/Tanks.hs 66;" f +randEdgeTank src/Dodge/Room/Tanks.hs 33;" f +randEdgeTanks src/Dodge/Room/Tanks.hs 63;" f randEnergyBallAt src/Dodge/WorldEvent/SpawnParticle.hs 14;" f randFirstWeapon src/Dodge/Placement/Random.hs 8;" f -randInArc src/RandomHelp.hs 72;" f -randInArcStrip src/RandomHelp.hs 75;" f -randInCirc src/RandomHelp.hs 69;" f -randInHemisphere src/RandomHelp.hs 95;" f -randInRect src/RandomHelp.hs 101;" f -randOnHemisphere src/RandomHelp.hs 88;" f -randOnUnitSphere src/RandomHelp.hs 81;" f -randProb src/RandomHelp.hs 64;" f +randInArc src/RandomHelp.hs 76;" f +randInArcStrip src/RandomHelp.hs 79;" f +randInCirc src/RandomHelp.hs 73;" f +randInHemisphere src/RandomHelp.hs 99;" f +randInRect src/RandomHelp.hs 105;" f +randOnHemisphere src/RandomHelp.hs 92;" f +randOnUnitSphere src/RandomHelp.hs 85;" f +randProb src/RandomHelp.hs 68;" f randSpark src/Dodge/Spark.hs 74;" f -randomChallenges src/Dodge/Room/Start.hs 61;" f +randomChallenges src/Dodge/Room/Start.hs 62;" f randomCompass src/Dodge/Layout.hs 59;" f -randomFourCornerRoom src/Dodge/Room/Procedural.hs 265;" f -randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 277;" f +randomFourCornerRoom src/Dodge/Room/Procedural.hs 266;" f +randomFourCornerRoomCrsIts src/Dodge/Room/Procedural.hs 278;" f randomLightPositions src/Dodge/Room/Modify/Girder.hs 152;" f -randomMediumRoom src/Dodge/Room/Boss.hs 73;" f +randomMediumRoom src/Dodge/Room/Boss.hs 74;" f randomPath src/TreeHelp.hs 144;" f randomPoints bench/Bench.hs 37;" f -randomRanges src/RandomHelp.hs 14;" f -randomSelectionFromList src/RandomHelp.hs 61;" f -randomTank src/Dodge/Room/Tanks.hs 22;" f +randomRanges src/RandomHelp.hs 16;" f +randomSelectionFromList src/RandomHelp.hs 65;" f +randomTank src/Dodge/Room/Tanks.hs 19;" f randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f -randsOnCirc src/RandomHelp.hs 118;" f -randsSpread src/RandomHelp.hs 111;" f +randsOnCirc src/RandomHelp.hs 122;" f +randsSpread src/RandomHelp.hs 115;" f ratIntersectLineLine src/Geometry/Intersect.hs 195;" f readSaveSlot src/Dodge/Save.hs 45;" f rectNSWE src/Geometry/Polygon.hs 13;" f @@ -5363,7 +5363,7 @@ rectXH src/Geometry/Polygon.hs 32;" f rectXY src/Geometry/Polygon.hs 35;" f rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f red src/Color.hs 14;" f -reduceSpinBy src/Dodge/Projectile/Update.hs 138;" f +reduceSpinBy src/Dodge/Projectile/Update.hs 139;" f reflDirWall src/Dodge/Base/Wall.hs 16;" f reflVelWall src/Dodge/Base/Wall.hs 24;" f reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f @@ -5383,7 +5383,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 426;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteScreen src/Dodge/Item/Scope.hs 52;" f remoteShellShape src/Dodge/Projectile/Draw.hs 42;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 305;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 308;" f removeDot src/ShortShow.hs 30;" f removeHotkey src/Dodge/Hotkey.hs 41;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -5414,17 +5414,17 @@ retreatFireLauncher src/Dodge/Humanoid.hs 269;" f retreatPointForFrom src/Dodge/Creature/Impulse/Flee.hs 7;" f reversePair src/Dodge/LevelGen.hs 82;" f rewindWatch src/Dodge/Item/Weapon/Utility.hs 36;" f -rezBox src/Dodge/Room/RezBox.hs 22;" f -rezBox' src/Dodge/Room/RezBox.hs 30;" f -rezBoxStart src/Dodge/Room/Start.hs 76;" f -rezBoxes src/Dodge/Room/RezBox.hs 105;" f -rezBoxesWp src/Dodge/Room/RezBox.hs 44;" f -rezBoxesWpCrit src/Dodge/Room/RezBox.hs 77;" f -rezColor src/Dodge/Room/RezBox.hs 124;" f -rezInvBox src/Dodge/Room/RezBox.hs 131;" f +rezBox src/Dodge/Room/RezBox.hs 23;" f +rezBox' src/Dodge/Room/RezBox.hs 31;" f +rezBoxStart src/Dodge/Room/Start.hs 77;" f +rezBoxes src/Dodge/Room/RezBox.hs 107;" f +rezBoxesWp src/Dodge/Room/RezBox.hs 45;" f +rezBoxesWpCrit src/Dodge/Room/RezBox.hs 79;" f +rezColor src/Dodge/Room/RezBox.hs 127;" f +rezInvBox src/Dodge/Room/RezBox.hs 134;" f rezText src/Dodge/Story.hs 4;" f rezText' src/Dodge/Story.hs 17;" f -rhombus src/Polyhedra.hs 71;" f +rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 51;" f right src/DoubleStack.hs 16;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 133;" f @@ -5439,23 +5439,23 @@ roomC src/Dodge/Room/Room.hs 39;" f roomCCrits src/Dodge/Room/Room.hs 262;" f roomCenterPillar src/Dodge/Room/Room.hs 121;" f roomCritLS src/Dodge/Room/RunPast.hs 24;" f -roomCross src/Dodge/Room/Boss.hs 82;" f -roomGlassOctogon src/Dodge/Room/Boss.hs 20;" f +roomCross src/Dodge/Room/Boss.hs 83;" f +roomGlassOctogon src/Dodge/Room/Boss.hs 21;" f roomLinkDecorations src/Dodge/Debug/LinkDecoration.hs 24;" f roomMiniIntro src/Dodge/Room/Room.hs 116;" f roomNgon src/Dodge/Room/Ngon.hs 14;" f roomPadCut src/Dodge/Room/Room.hs 61;" f roomPillars src/Dodge/Room/Pillar.hs 100;" f -roomPillarsContaining src/Dodge/Room/Containing.hs 38;" f +roomPillarsContaining src/Dodge/Room/Containing.hs 39;" f roomPillarsPassage src/Dodge/Room/Pillar.hs 87;" f roomPillarsSquare src/Dodge/Room/Pillar.hs 44;" f roomPolyDecorations src/Dodge/Debug/LinkDecoration.hs 30;" f -roomRect src/Dodge/Room/Procedural.hs 37;" f -roomRectAutoLinks src/Dodge/Room/Procedural.hs 137;" f -roomShuriken src/Dodge/Room/Boss.hs 120;" f -roomTwistCross src/Dodge/Room/Boss.hs 151;" f -roomsContaining src/Dodge/Room/Containing.hs 19;" f -roomsContaining' src/Dodge/Room/Containing.hs 24;" f +roomRect src/Dodge/Room/Procedural.hs 38;" f +roomRectAutoLinks src/Dodge/Room/Procedural.hs 138;" f +roomShuriken src/Dodge/Room/Boss.hs 121;" f +roomTwistCross src/Dodge/Room/Boss.hs 152;" f +roomsContaining src/Dodge/Room/Containing.hs 20;" f +roomsContaining' src/Dodge/Room/Containing.hs 25;" f rootNotrootEff src/Dodge/ItEffect.hs 22;" f rose src/Color.hs 20;" f rotD src/Padding.hs 47;" f @@ -5474,12 +5474,12 @@ rotateSH src/Shape.hs 255;" f rotateSHq src/Shape.hs 164;" f rotateSHx src/Shape.hs 263;" f rotateSP src/ShapePicture.hs 57;" f -rotateTo src/Polyhedra/Geodesic.hs 63;" f +rotateTo src/Polyhedra/Geodesic.hs 64;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 177;" f rotateToZ src/Quaternion.hs 34;" f rotateV src/Geometry/Vector.hs 105;" f rotateVAround src/Geometry/Vector.hs 112;" f -rotateXY src/Polyhedra.hs 30;" f +rotateXY src/Polyhedra.hs 31;" f roundPoint2 src/Geometry/Intersect.hs 216;" f roundTank src/Dodge/Placement/Instance/Tank.hs 25;" f roundTankCross src/Dodge/Placement/Instance/Tank.hs 31;" f @@ -5491,7 +5491,7 @@ rprBool src/Dodge/PlacementSpot.hs 72;" f rprBoolShift src/Dodge/PlacementSpot.hs 111;" f rprShift src/Dodge/PlacementSpot.hs 102;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 23;" f -runPastStart src/Dodge/Room/Start.hs 70;" f +runPastStart src/Dodge/Room/Start.hs 71;" f runTerminalString src/Dodge/Terminal/ReturnEffect.hs 22;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f safeAngleVV src/Geometry/Vector.hs 68;" f @@ -5519,7 +5519,7 @@ scaleSH src/Shape.hs 267;" f scalp src/Dodge/Creature/Picture.hs 94;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 69;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 101;" f +scorchSPic src/Dodge/Creature/State.hs 102;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5592,7 +5592,7 @@ setOldPos src/Dodge/Update.hs 427;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 291;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 292;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5632,15 +5632,15 @@ shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 244;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f -shellCollisionCheck src/Dodge/Projectile/Update.hs 51;" f -shellCollisionEffect src/Dodge/Projectile/Update.hs 47;" f +shellCollisionCheck src/Dodge/Projectile/Update.hs 52;" f +shellCollisionEffect src/Dodge/Projectile/Update.hs 48;" f shellMag src/Dodge/Item/Ammo.hs 67;" f shellShape src/Dodge/Projectile/Draw.hs 27;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f shieldWall src/Dodge/Euse.hs 114;" f shiftByV2 src/Dodge/PlacementSpot.hs 239;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f -shiftDec src/Dodge/Placement/PlaceSpot.hs 136;" f +shiftDec src/Dodge/Placement/PlaceSpot.hs 151;" f shiftDraw src/Dodge/Render/ShapePicture.hs 107;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 113;" f shiftInBy src/Dodge/PlacementSpot.hs 236;" f @@ -5658,17 +5658,17 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 214;" f -shineTorch src/Dodge/Creature/State.hs 246;" f -shootBullet src/Dodge/HeldUse.hs 363;" f +shineTargetLaser src/Dodge/Creature/State.hs 215;" f +shineTorch src/Dodge/Creature/State.hs 247;" f +shootBullet src/Dodge/HeldUse.hs 366;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootL src/Dodge/Item/Weapon/TriggerType.hs 165;" f -shootLaser src/Dodge/HeldUse.hs 276;" f -shootOutPassage src/Dodge/Room/RezBox.hs 72;" f +shootLaser src/Dodge/HeldUse.hs 279;" f +shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f -shootTeslaArc src/Dodge/HeldUse.hs 471;" f +shootTeslaArc src/Dodge/HeldUse.hs 474;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 255;" f +shootTractorBeam src/Dodge/HeldUse.hs 258;" f shootersRoom src/Dodge/Room/Room.hs 317;" f shootersRoom' src/Dodge/Room/Room.hs 282;" f shootersRoom1 src/Dodge/Room/Room.hs 307;" f @@ -5690,10 +5690,10 @@ showTerminalError src/Dodge/Debug/Terminal.hs 76;" f showTimeFlow src/Dodge/TestString.hs 91;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f -shuffle src/RandomHelp.hs 46;" f +shuffle src/RandomHelp.hs 49;" f shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f -shuffleTail src/RandomHelp.hs 55;" f +shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 129;" f simpleCrSprings src/Dodge/Update.hs 719;" f simpleDamFL src/Dodge/Flame.hs 41;" f @@ -5705,17 +5705,17 @@ singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f singleDT src/Dodge/DoubleTree.hs 9;" f singleLDT src/Dodge/DoubleTree.hs 12;" f singleton src/DoubleStack.hs 11;" f -singletonTrie src/SimpleTrie.hs 18;" f +singletonTrie src/SimpleTrie.hs 19;" f sizeFBOs src/Framebuffer/Update.hs 22;" f sizeModule src/Dodge/Item/Craftable.hs 36;" f sizeSelf src/Dodge/Creature/Action.hs 197;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 366;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f slideWindow src/ListHelp.hs 80;" f -slowDoorRoom src/Dodge/Room/LongDoor.hs 151;" f -slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 168;" f +slowDoorRoom src/Dodge/Room/LongDoor.hs 152;" f +slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 169;" f smallBattery src/Dodge/Item/Ammo.hs 90;" f -smallBranch src/Dodge/Tree/GenerateStructure.hs 28;" f +smallBranch src/Dodge/Tree/GenerateStructure.hs 29;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 16;" f smallDrawTree src/Dodge/LevelGen.hs 88;" f smallGlass1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 338;" f @@ -5728,7 +5728,7 @@ smg src/Dodge/Item/Held/Stick.hs 65;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 56;" f -someCrits src/Dodge/LockAndKey.hs 120;" f +someCrits src/Dodge/LockAndKey.hs 121;" f soundAngle src/Dodge/SoundLogic.hs 157;" f soundContinue src/Dodge/SoundLogic.hs 125;" f soundContinueVol src/Dodge/SoundLogic.hs 139;" f @@ -5737,13 +5737,13 @@ soundMenu src/Dodge/Menu.hs 137;" f soundMenuOptions src/Dodge/Menu.hs 140;" f soundMultiFrom src/Dodge/SoundLogic.hs 173;" f soundPathList src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 212;" f -soundPic src/Dodge/Debug/Picture.hs 304;" f +soundPic src/Dodge/Debug/Picture.hs 306;" f soundStart src/Dodge/SoundLogic.hs 112;" f soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 108;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 98;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 48;" f -southPillarsRoom src/Dodge/Room/LongDoor.hs 84;" f +southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f spaceAction src/Dodge/Update/Input/InGame.hs 217;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 186;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 179;" f @@ -5762,7 +5762,7 @@ speedLegs src/Dodge/Item/Equipment.hs 113;" f splashMenu src/Dodge/Menu.hs 27;" f splashMenuOptions src/Dodge/Menu.hs 32;" f splashScreen src/Dodge/Initialisation.hs 11;" f -splinterBlock src/Dodge/Block.hs 25;" f +splinterBlock src/Dodge/Block.hs 26;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitTrunk src/TreeHelp.hs 178;" f @@ -5797,11 +5797,11 @@ stackPicturesAtOff src/Dodge/Render/List.hs 85;" f stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 282;" f startCr src/Dodge/Creature.hs 91;" f -startCrafts src/Dodge/Room/Start.hs 91;" f +startCrafts src/Dodge/Room/Start.hs 92;" f startInvList src/Dodge/Creature.hs 109;" f startInventory src/Dodge/Creature.hs 112;" f startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f -startRoom src/Dodge/Room/Start.hs 51;" f +startRoom src/Dodge/Room/Start.hs 52;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f startSeedGameConc src/Dodge/StartNewGame.hs 27;" f statsModifier src/Dodge/Creature/Info.hs 14;" f @@ -5813,7 +5813,7 @@ stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f stoneDebris src/Dodge/Block/Debris.hs 137;" f stoneWallDamage src/Dodge/Wall/DamageEffect.hs 24;" f stopAllSounds src/Sound.hs 124;" f -stopPushing src/Dodge/Block.hs 103;" f +stopPushing src/Dodge/Block.hs 104;" f stopSoundFrom src/Dodge/SoundLogic.hs 206;" f stopWatch src/Dodge/Item/Weapon/Utility.hs 13;" f strFromEquipment src/Dodge/Creature/Statistics.hs 19;" f @@ -5838,18 +5838,18 @@ t src/ShortShow.hs 34;" 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 -takeN src/RandomHelp.hs 41;" f -takeNMore src/RandomHelp.hs 38;" f -takeOne src/RandomHelp.hs 20;" f -takeOneMore src/RandomHelp.hs 31;" f -takeOneWeighted src/RandomHelp.hs 23;" f +takeN src/RandomHelp.hs 44;" f +takeNMore src/RandomHelp.hs 41;" f +takeOne src/RandomHelp.hs 22;" f +takeOneMore src/RandomHelp.hs 34;" f +takeOneWeighted src/RandomHelp.hs 25;" f takeUntil src/FoldableHelp.hs 99;" f takeWhileArb src/ListHelp.hs 99;" f takeWhileArb' src/ListHelp.hs 107;" f tankShape src/Dodge/Placement/Instance/Tank.hs 22;" f tankSquareDec src/Dodge/Placement/Instance/Tank.hs 15;" f -tanksPipesRoom src/Dodge/Room/Tanks.hs 95;" f -tanksRoom src/Dodge/Room/Tanks.hs 103;" f +tanksPipesRoom src/Dodge/Room/Tanks.hs 92;" f +tanksRoom src/Dodge/Room/Tanks.hs 100;" f tap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 450;" f tap2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f tap3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 434;" f @@ -5904,7 +5904,7 @@ thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 53;" f thingsHit src/Dodge/WorldEvent/ThingsHit.hs 29;" f thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 73;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f -tileTexCoords src/Tile.hs 10;" f +tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 205;" f tilesToLine src/Shader/AuxAddition.hs 66;" f timeFlowUpdate src/Dodge/Update.hs 164;" f @@ -5924,7 +5924,7 @@ toCombNodeLabel src/Dodge/Combine/Graph.hs 81;" f toFloatVAs src/Shader/Compile.hs 211;" f toLabel src/Dodge/Cleat.hs 16;" f toLasgunUpdate src/Dodge/Item/Grammar.hs 113;" f -toMultiset src/Multiset.hs 58;" f +toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 190;" f toV2 src/Geometry/Data.hs 36;" f @@ -5950,7 +5950,7 @@ torqueCr src/Dodge/WorldEffect.hs 70;" f torso src/Dodge/Creature/Picture.hs 103;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 265;" f +tractorBeamAt src/Dodge/HeldUse.hs 268;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 64;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 375;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5986,13 +5986,13 @@ translateToRightLeg src/Dodge/Creature/HandPos.hs 152;" f translateToRightWrist src/Dodge/Creature/HandPos.hs 84;" f translateToRightWrist' src/Dodge/Creature/HandPos.hs 87;" f translateWallID src/Dodge/Wall/Move.hs 37;" f -translateXY src/Polyhedra.hs 25;" f +translateXY src/Polyhedra.hs 26;" f trapezionBWHW src/Geometry/Polygon.hs 24;" f treeChildNums src/TreeHelp.hs 129;" f treeFromPost src/TreeHelp.hs 39;" f treeFromTrunk src/TreeHelp.hs 51;" f treeMaxDepthFromTrunk src/Dodge/Layout/Generate.hs 21;" f -treePath src/Dodge/Tree/GenerateStructure.hs 12;" f +treePath src/Dodge/Tree/GenerateStructure.hs 13;" f treePaths src/TreeHelp.hs 138;" f treePost src/TreeHelp.hs 45;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f @@ -6000,8 +6000,8 @@ triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitchSPic src/Dodge/Placement/Instance/Button.hs 14;" f triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 31;" f -truncFaces src/Polyhedra/Geodesic.hs 52;" f -truncate src/Polyhedra/Geodesic.hs 37;" f +truncFaces src/Polyhedra/Geodesic.hs 53;" f +truncate src/Polyhedra/Geodesic.hs 38;" f trunkDepth src/TreeHelp.hs 161;" f tryAssignHotkey src/Dodge/Creature/YourControl.hs 85;" f tryAttachBulletBelt src/Dodge/Euse.hs 40;" f @@ -6016,13 +6016,13 @@ tryPutFloorItemIDInInv src/Dodge/Inventory/Add.hs 23;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 29;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f trySiphonFuel src/Dodge/Euse.hs 46;" f -trySpinByCID src/Dodge/Projectile/Update.hs 94;" f +trySpinByCID src/Dodge/Projectile/Update.hs 95;" f turnTo src/Dodge/Movement/Turn.hs 4;" f turnToAmount src/Dodge/Movement/Turn.hs 15;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 16;" f tweenAngles src/Geometry/Vector.hs 184;" f -twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 78;" f -twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 27;" f +twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f +twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f twists src/Dodge/Creature/Test.hs 103;" f twoFlat src/Dodge/Creature/Test.hs 100;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 73;" f @@ -6039,7 +6039,7 @@ unpause src/Dodge/Menu.hs 192;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 52;" f unsafeBlinkGun src/Dodge/Item/Weapon/Utility.hs 52;" f unsafeSwapKeys src/IntMapHelp.hs 76;" f -unshadowBlock src/Dodge/Block.hs 38;" f +unshadowBlock src/Dodge/Block.hs 39;" f untilJust src/MonadHelp.hs 7;" f untilJustCount src/MonadHelp.hs 14;" f unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 133;" f @@ -6047,11 +6047,11 @@ unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 139;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f upHammer src/Dodge/Default.hs 77;" f -upProjectile src/Dodge/Projectile/Update.hs 25;" f +upProjectile src/Dodge/Projectile/Update.hs 26;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f -updateAttachedItems src/Dodge/Creature/State.hs 172;" f -updateAutoRecharge src/Dodge/Creature/State.hs 323;" f +updateAttachedItems src/Dodge/Creature/State.hs 173;" f +updateAutoRecharge src/Dodge/Creature/State.hs 324;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 160;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f @@ -6084,17 +6084,17 @@ updateFlames src/Dodge/Update.hs 516;" f updateFlare src/Dodge/Flare.hs 7;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateGusts src/Dodge/Update.hs 668;" f -updateHeldRootItem src/Dodge/Creature/State.hs 166;" f +updateHeldRootItem src/Dodge/Creature/State.hs 167;" f updateHumanoid src/Dodge/Humanoid.hs 12;" f updateIMl src/Dodge/Update.hs 463;" f updateIMl' src/Dodge/Update.hs 467;" f updateInGameCamera src/Dodge/Update/Camera.hs 70;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 109;" f updateInstantBullets src/Dodge/Update.hs 608;" f -updateInv src/Dodge/Creature/State.hs 151;" f +updateInv src/Dodge/Creature/State.hs 152;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f -updateItemTargeting src/Dodge/Creature/State.hs 267;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 193;" f +updateItemTargeting src/Dodge/Creature/State.hs 268;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 194;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 103;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 92;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6108,7 +6108,7 @@ updateMachine src/Dodge/Machine/Update.hs 16;" f updateMouseInventorySelection src/Dodge/Update.hs 297;" f updateMouseInventorySelection' src/Dodge/Update.hs 303;" f updateMouseOverInventory src/Dodge/Update.hs 360;" f -updateMovement src/Dodge/Creature/State.hs 330;" f +updateMovement src/Dodge/Creature/State.hs 331;" f updateObjCatMaybes src/Dodge/Update.hs 483;" f updateObjMapMaybe src/Dodge/Update.hs 476;" f updatePastWorlds src/Dodge/Update.hs 381;" f @@ -6117,7 +6117,7 @@ updatePosEvents src/Dodge/Update.hs 528;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 67;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 70;" f -updateProjectile src/Dodge/Projectile/Update.hs 22;" f +updateProjectile src/Dodge/Projectile/Update.hs 23;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f updateRadarBlip src/Dodge/RadarBlip.hs 8;" f @@ -6182,15 +6182,15 @@ useBulletPayload src/Dodge/Bullet.hs 105;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 24;" f -useEquipment src/Dodge/Creature/State.hs 145;" f -useGasParams src/Dodge/HeldUse.hs 412;" f +useEquipment src/Dodge/Creature/State.hs 146;" f +useGasParams src/Dodge/HeldUse.hs 415;" f useHotKey src/Dodge/Creature/YourControl.hs 48;" f useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 145;" f useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 120;" f useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 133;" f useL src/Dodge/Luse.hs 11;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 207;" f +useLoadedAmmo src/Dodge/HeldUse.hs 210;" f useMagShield src/Dodge/Euse.hs 69;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 7;" f @@ -6202,7 +6202,7 @@ useStopWatch src/Dodge/Luse.hs 21;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f -useUpdate src/Dodge/Creature/State.hs 315;" f +useUpdate src/Dodge/Creature/State.hs 316;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f v2z src/Geometry/Vector3D.hs 93;" f @@ -6224,8 +6224,8 @@ verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f -viewBoundaries src/Dodge/Debug/Picture.hs 272;" f -viewClipBounds src/Dodge/Debug/Picture.hs 281;" f +viewBoundaries src/Dodge/Debug/Picture.hs 274;" f +viewClipBounds src/Dodge/Debug/Picture.hs 283;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 144;" f violet src/Color.hs 21;" f visibleWalls src/Dodge/Base/Collide.hs 123;" f @@ -6234,7 +6234,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 32;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 289;" f waistSP src/Dodge/Creature/HandPos.hs 199;" f -walkNozzle src/Dodge/HeldUse.hs 233;" f +walkNozzle src/Dodge/HeldUse.hs 236;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 80;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 50;" f @@ -6292,7 +6292,7 @@ wordsBy src/ListHelp.hs 116;" f worldPosToScreen src/Dodge/Base/Coordinate.hs 28;" f worldSPic src/Dodge/Render/ShapePicture.hs 27;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f -wpAdd src/Dodge/Room/RezBox.hs 134;" f +wpAdd src/Dodge/Room/RezBox.hs 137;" f wristArmour src/Dodge/Item/Equipment.hs 47;" f wristInvisibility src/Dodge/Item/Equipment.hs 119;" f writeConfig src/Dodge/Menu.hs 159;" f @@ -6317,12 +6317,12 @@ yourInv src/Dodge/Base/You.hs 45;" f yourRootItem src/Dodge/Base/You.hs 26;" f yourSelectedItem src/Dodge/Base/You.hs 21;" f yourStatsInfo src/Dodge/Creature/Info.hs 25;" f -zConnect src/Dodge/Render/Connectors.hs 13;" f -zConnectCol src/Dodge/Render/Connectors.hs 20;" f +zConnect src/Dodge/Render/Connectors.hs 16;" f +zConnectCol src/Dodge/Render/Connectors.hs 27;" f zeroZ src/Geometry/Vector.hs 8;" f zipArcs src/Dodge/Tesla/Arc.hs 96;" f zipCount src/Dodge/Tree/Shift.hs 129;" f -zipCountDown src/Dodge/Room/Procedural.hs 117;" f +zipCountDown src/Dodge/Room/Procedural.hs 118;" f zipWithDefaults src/Dodge/Item/Display.hs 21;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f zoneClouds src/Dodge/Update.hs 400;" f