diff --git a/src/Dodge/Base/You.hs b/src/Dodge/Base/You.hs index cb594c558..4177a8b67 100644 --- a/src/Dodge/Base/You.hs +++ b/src/Dodge/Base/You.hs @@ -3,8 +3,12 @@ module Dodge.Base.You , yourInv , yourSelectedItem , yourRootItem + , yourRootItemDT )where +import Dodge.Item.Grammar +import Dodge.Data.ComposedItem +import Dodge.Data.DoubleTree import NewInt import Dodge.Data.World --import qualified IntMapHelp as IM @@ -25,6 +29,11 @@ yourRootItem w = do j <- _crInv (you w) ^? ix i w ^? cWorld . lWorld . items . ix j +yourRootItemDT :: World -> Maybe (DTree OItem) +yourRootItemDT w = do + i <- you w ^? crManipulation . manObject . imRootSelectedItem . unNInt + invIMDT ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> you w ^. crInv) ^? ix i + yourInv :: World -> NewIntMap InvInt Item yourInv w = fmap (\i -> w ^?! cWorld . lWorld . items . ix i) . _crInv . you $ w diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 29aebf6cc..a006bffc8 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -99,7 +99,7 @@ startCr = & crInv .~ mempty & crFaction .~ PlayerFaction -- & crMvType .~ MvWalking yourDefaultSpeed - & crType .~ Avatar (PulseStatus 55 0) Flesh 50 50 50 3 + & crType .~ Avatar (PulseStatus 55 0) Flesh 50 50 50 3 AvPosture -- | Items you start with. startInvList :: [Item] diff --git a/src/Dodge/Creature/HandPos.hs b/src/Dodge/Creature/HandPos.hs index 400db3468..bea6ffd52 100644 --- a/src/Dodge/Creature/HandPos.hs +++ b/src/Dodge/Creature/HandPos.hs @@ -65,6 +65,8 @@ rightHandPQ cr | oneH cr = (V3 11 (-3) 20, Q.qID) | twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1) | twoFlat cr = (V3 4 (-8) 12, Q.qID) +-- | Just dt <- yourRootItemDT w +-- , Just as <- itemAimStance | Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID) | otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID) diff --git a/src/Dodge/Creature/Mass.hs b/src/Dodge/Creature/Mass.hs index eb34721c1..27cc4a0e1 100644 --- a/src/Dodge/Creature/Mass.hs +++ b/src/Dodge/Creature/Mass.hs @@ -5,7 +5,6 @@ import Dodge.Data.Creature.Misc crMass :: CreatureType -> Float crMass = \case Avatar {} -> 10 - AvatarDead -> 10 ChaseCrit {} -> 10 SwarmCrit -> 2 AutoCrit -> 10 diff --git a/src/Dodge/Creature/Material.hs b/src/Dodge/Creature/Material.hs index 5f4044693..7320ac31b 100644 --- a/src/Dodge/Creature/Material.hs +++ b/src/Dodge/Creature/Material.hs @@ -8,7 +8,6 @@ import Dodge.Data.Material crMaterial :: CreatureType -> Material crMaterial = \case Avatar{_avatarMaterial = mt} -> mt - AvatarDead -> Flesh ChaseCrit {} -> Flesh SwarmCrit -> Flesh AutoCrit -> Flesh diff --git a/src/Dodge/Creature/MaxHP.hs b/src/Dodge/Creature/MaxHP.hs index 37263bdd9..fb051af02 100644 --- a/src/Dodge/Creature/MaxHP.hs +++ b/src/Dodge/Creature/MaxHP.hs @@ -6,7 +6,6 @@ import Dodge.Data.Creature.Misc crMaxHP :: CreatureType -> Int crMaxHP = \case Avatar {} -> 15000 - AvatarDead -> 0 ChaseCrit {} -> 150 SwarmCrit -> 50 AutoCrit -> 100 diff --git a/src/Dodge/Creature/MoveType.hs b/src/Dodge/Creature/MoveType.hs index ae4fdcf6e..7704250a9 100644 --- a/src/Dodge/Creature/MoveType.hs +++ b/src/Dodge/Creature/MoveType.hs @@ -6,7 +6,6 @@ import Dodge.Data.Creature crMvType :: Creature -> CrMvType crMvType cr = case _crType cr of Avatar {_avMoveSpeed = s} -> MvWalking s - AvatarDead -> defaultAimMvType ChaseCrit {} -> defaultChaseMvType SwarmCrit -> defaultChaseMvType AutoCrit -> defaultAimMvType diff --git a/src/Dodge/Creature/Radius.hs b/src/Dodge/Creature/Radius.hs index 262d093cf..9aa603b19 100644 --- a/src/Dodge/Creature/Radius.hs +++ b/src/Dodge/Creature/Radius.hs @@ -8,7 +8,6 @@ crRad :: CreatureType -> Float {-# INLINE crRad #-} crRad = \case Avatar {} -> 10 - AvatarDead -> 10 ChaseCrit {} -> 10 SwarmCrit -> 2 AutoCrit -> 10 diff --git a/src/Dodge/Creature/Shape.hs b/src/Dodge/Creature/Shape.hs index c3aa698f7..65d788379 100644 --- a/src/Dodge/Creature/Shape.hs +++ b/src/Dodge/Creature/Shape.hs @@ -11,6 +11,5 @@ crShape = \case ChaseCrit {} -> Humanoid (greyN 0.9) (lightx4 green) (greyN 0.3) ChaseAI SwarmCrit -> Humanoid (greyN 0.9) (lightx4 yellow) (greyN 0.3) SwarmAI AutoCrit -> Humanoid (greyN 0.9) (lightx4 red) (greyN 0.3) AutoAI - AvatarDead -> Humanoid (greyN 0.9) (lightx4 black) (greyN 0.3) InanimateAI BarrelCrit {} -> Barreloid LampCrit {} -> NonDrawnCreature diff --git a/src/Dodge/Creature/Statistics.hs b/src/Dodge/Creature/Statistics.hs index c500c9006..564bf3c7f 100644 --- a/src/Dodge/Creature/Statistics.hs +++ b/src/Dodge/Creature/Statistics.hs @@ -19,7 +19,6 @@ import qualified Data.IntSet as IS crDexterity :: Creature -> Int crDexterity cr = case cr ^. crType of Avatar { _avDexterity = x } -> x - AvatarDead -> 0 ChaseCrit {} -> 46 SwarmCrit -> 46 AutoCrit -> 46 @@ -29,7 +28,6 @@ crDexterity cr = case cr ^. crType of crStrength :: Creature -> Int crStrength cr = case cr ^. crType of Avatar { _avStrength = x } -> x - AvatarDead -> 0 ChaseCrit {} -> 46 SwarmCrit -> 40 AutoCrit -> 46 @@ -39,7 +37,6 @@ crStrength cr = case cr ^. crType of crIntelligence :: Creature -> Int crIntelligence cr = case cr ^. crType of Avatar { _avIntelligence = x } -> x - AvatarDead -> 0 ChaseCrit {} -> 20 SwarmCrit -> 20 AutoCrit -> 20 diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index b36fdb9d1..ecfeb3f8d 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -53,7 +53,6 @@ updateLivingCreature cr = . yourControl cr LampCrit{} -> updateLampoid cr BarrelCrit bt -> updateBarreloid bt cr - AvatarDead -> id ChaseCrit{} -> \w -> crUpdate cid . performActions cid $ over (cWorld . lWorld . creatures . ix cid) (chaseCritInternal w) w diff --git a/src/Dodge/Creature/Vocalization.hs b/src/Dodge/Creature/Vocalization.hs index 1d17651c3..a73ce72a6 100644 --- a/src/Dodge/Creature/Vocalization.hs +++ b/src/Dodge/Creature/Vocalization.hs @@ -16,7 +16,6 @@ import System.Random crVocalizationSound :: Creature -> Maybe SoundID crVocalizationSound cr = case cr ^. crType of Avatar{} -> Nothing - AvatarDead -> Nothing ChaseCrit{} -> Just seagullChatterS SwarmCrit -> Nothing AutoCrit -> Nothing @@ -26,7 +25,6 @@ crVocalizationSound cr = case cr ^. crType of crWarningSounds :: Creature -> [SoundID] crWarningSounds cr = case cr ^. crType of Avatar{} -> mempty - AvatarDead -> mempty ChaseCrit{} -> [ seagullBarkS , seagullChatterS @@ -45,7 +43,6 @@ crWarningSounds cr = case cr ^. crType of crDeathSounds :: Creature -> DeathType -> [SoundID] crDeathSounds cr dt = case cr ^. crType of Avatar{} -> mempty - AvatarDead -> mempty ChaseCrit{} -> defaultDeathSounds dt SwarmCrit -> mempty AutoCrit -> mempty diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index 3292e7f98..a8f463f78 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -63,14 +63,16 @@ data CreatureType , _avDexterity :: Int , _avIntelligence :: Int , _avMoveSpeed :: Float + , _avPosture :: AvatarPosture } - | AvatarDead | ChaseCrit {_meleeCooldown :: Int} | SwarmCrit | AutoCrit | BarrelCrit {_barrelType :: BarrelType} | LampCrit {_lampHeight :: Float, _lampColor :: Point3, _lampLSID :: Maybe Int} +data AvatarPosture = AvPosture + data CreatureShape = Humanoid { _skinHead :: Color @@ -102,4 +104,5 @@ deriveJSON defaultOptions ''Vocalization --deriveJSON defaultOptions ''CrMvType deriveJSON defaultOptions ''HumanoidAI deriveJSON defaultOptions ''BarrelType +deriveJSON defaultOptions ''AvatarPosture deriveJSON defaultOptions ''CreatureType diff --git a/src/Dodge/Data/Room.hs b/src/Dodge/Data/Room.hs index 9ca258726..127c3d31b 100644 --- a/src/Dodge/Data/Room.hs +++ b/src/Dodge/Data/Room.hs @@ -31,8 +31,8 @@ data RoomLink = RoomLink data RoomType = DefaultRoomType | RectRoomType - { _numLinkEW :: Int - , _numLinkNS :: Int + { _numLinkEW :: Int -- note this is ONE LESS than might be expected + , _numLinkNS :: Int -- note this is ONE LESS than might be expected , _linkGapEW :: Float , _linkGapNS :: Float , _rmWidth :: Float diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index 644a4e2b4..3c9cbd0fc 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -17,6 +17,7 @@ module Dodge.Room.LasTurret ( storeRoomID, ) where +import Dodge.Room.Warning import Dodge.Room.Modify import Color import Control.Monad @@ -112,13 +113,15 @@ analyserByNthLink :: Int -> ProximityRequirement -> Int -> Placement analyserByNthLink n proxreq i = analyser (SensorWithRequirement proxreq) +-- (byNthLink n) ( atNthLnkOutShiftBy n ( \(p, a) -> ((p +.+ rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow) ) ) - (atNthLnkOutShiftBy n sensorshift) + (byNthLink n) +-- (atNthLnkOutShiftBy n sensorshift) & plExternalID ?~ i where diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index dbceac674..952243320 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -2,9 +2,8 @@ module Dodge.Room.Tutorial where -import Dodge.Room.Foreground -import Data.Foldable import Control.Monad +import Data.Foldable import qualified Data.IntMap.Strict as IM import qualified Data.IntSet as IS import Data.Maybe @@ -26,6 +25,7 @@ import Dodge.Room.Airlock import Dodge.Room.Boss import Dodge.Room.Corridor import Dodge.Room.Door +import Dodge.Room.Foreground import Dodge.Room.LasTurret import Dodge.Room.Link import Dodge.Room.LongDoor @@ -55,33 +55,35 @@ tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor + , loadAmmoTut + , corDoor , tToBTree "slowCrush" . return . cleatOnward <$> pushCaverns , corDoor , chasmSpitTerminal ---a , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a , corDoor ---a , tToBTree "sdr" . return . cleatOnward ---a <$> (shuffleLinks =<< distributerRoom BulletAmmo 100000) ---a , -- , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a -- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom ---a ---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] [] ---a -- , return $ tToBTree "door" $ return $ cleatOnward door ---a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a -- , tToBTree "sdr" . return . cleatOnward <$> ---a -- (shuffleLinks =<< tanksPipesRoom) ---a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a return $ tToBTree "door" $ return $ cleatOnward door ---a , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a , tutHub ---a , chasmSpitTerminal ---a , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a , tutLight ---a , tutDrop ---a , return $ tToBTree "cor" $ return $ cleatOnward corridor ---a ---- , AnTree $ pickupTut ---a ---- , AnTree $ weaponTut + -- a , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a , corDoor + -- a , tToBTree "sdr" . return . cleatOnward + -- a <$> (shuffleLinks =<< distributerRoom BulletAmmo 100000) + -- a , -- , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a -- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom + -- a ---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] [] + -- a -- , return $ tToBTree "door" $ return $ cleatOnward door + -- a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a -- , tToBTree "sdr" . return . cleatOnward <$> + -- a -- (shuffleLinks =<< tanksPipesRoom) + -- a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a return $ tToBTree "door" $ return $ cleatOnward door + -- a , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a , tutHub + -- a , chasmSpitTerminal + -- a , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a , tutLight + -- a , tutDrop + -- a , return $ tToBTree "cor" $ return $ cleatOnward corridor + -- a ---- , AnTree $ pickupTut + -- a ---- , AnTree $ weaponTut ] foldMTRS :: @@ -240,8 +242,8 @@ sqPlatformChasm b a = sqSpitChasm :: Float -> Float -> ([[Point2]], [[Point2]]) sqSpitChasm b a = ( [[ibr, obr, otr, itr], [itr, otr, otl, itl], [itl, otl, obl, ibl]] --- ( earClip clfs - , [clfs] + , -- ( earClip clfs + [clfs] ) where clfs = [ibr, obr, otr, otl, obl, ibl, itl, itr] @@ -253,6 +255,7 @@ sqSpitChasm b a = ibl = V2 (-b) (-a) itl = V2 (-b) b itr = V2 b b + -- otl---------otr -- | itl-itr | -- obr-ibl ibr-obl @@ -272,15 +275,19 @@ midChasmSpit = do isMidEdgeLink r North rl || isMidEdgeLink r East rl || isMidEdgeLink r West rl - , \rl -> OnEdge North `S.member` (rl ^. rlType) - && not (FromEdge East 0 `S.member` (rl ^. rlType)) - && not (FromEdge West 0 `S.member` (rl ^. rlType)) + , \rl -> + OnEdge North `S.member` (rl ^. rlType) + && not (FromEdge East 0 `S.member` (rl ^. rlType)) + && not (FromEdge West 0 `S.member` (rl ^. rlType)) ] shuffleLinks $ r - & rmLinks %~ setOutLinks foutlnks - & rmLinks %~ setInLinks (isMidEdgeLink r South) - & rmPmnts .~ cs + & rmLinks + %~ setOutLinks foutlnks + & rmLinks + %~ setInLinks (isMidEdgeLink r South) + & rmPmnts + .~ cs where censquare x y = do z <- state $ randomR (40, 60) @@ -300,26 +307,31 @@ chasmSpitTerminal = do i1 <- nextLayoutInt y <- midChasmSpit shp <- takeOne [vShape, lShape, jShape, liShape] - let l1 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North East + let l1 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North East l2 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North West - l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North + l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East South - ls <- takeOne [[l1,l2],[l3,l4] --- ,[spanLightI (V2 120 0) (V2 120 300)] --- , [spanLightI (V2 0 128) (V2 300 128)] --- , [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300] - ] - gh <- takeOne [55,75,97] - gird <- takeOne [girderZ gh 30 10,girder gh 30 10,girderV gh 30 10] - dec <- takeOne $ replicate 3 [] <> - [[sps0 $ putShape $ gird (V2 30 0) (V2 30 300)] - ,[sps0 $ putShape $ gird (V2 270 0) (V2 270 300)] - ,[sps0 $ putShape $ gird (V2 30 0) (V2 30 300),sps0 $ putShape $ gird (V2 270 0) (V2 270 300)] - ,[sps0 $ putShape $ gird (V2 0 20) (V2 300 20)] - ,[sps0 $ putShape $ gird (V2 0 200) (V2 300 200)] - ,[sps0 $ putShape $ gird (V2 0 280) (V2 300 280)] - ,[sps0 $ putShape $ gird (V2 0 20) (V2 300 20),sps0 $ putShape $ gird (V2 0 280) (V2 300 280)] + ls <- + takeOne + [ [l1, l2] + , [l3, l4] + -- ,[spanLightI (V2 120 0) (V2 120 300)] + -- , [spanLightI (V2 0 128) (V2 300 128)] + -- , [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300] ] + gh <- takeOne [55, 75, 97] + gird <- takeOne [girderZ gh 30 10, girder gh 30 10, girderV gh 30 10] + dec <- + takeOne $ + replicate 3 [] + <> [ [sps0 $ putShape $ gird (V2 30 0) (V2 30 300)] + , [sps0 $ putShape $ gird (V2 270 0) (V2 270 300)] + , [sps0 $ putShape $ gird (V2 30 0) (V2 30 300), sps0 $ putShape $ gird (V2 270 0) (V2 270 300)] + , [sps0 $ putShape $ gird (V2 0 20) (V2 300 20)] + , [sps0 $ putShape $ gird (V2 0 200) (V2 300 200)] + , [sps0 $ putShape $ gird (V2 0 280) (V2 300 280)] + , [sps0 $ putShape $ gird (V2 0 20) (V2 300 20), sps0 $ putShape $ gird (V2 0 280) (V2 300 280)] + ] let y' = y & rmPmnts <>~ ls <> dec return $ tToBTree "chasmTerm" $ @@ -330,8 +342,9 @@ chasmSpitTerminal = do , return $ cleatOnward $ triggerDoorRoom i1 ] where - f rp a b = FromEdge a 2 `S.member` fold (rp ^? rpType . rplsType) - && OnEdge b `S.member` fold (rp ^? rpType . rplsType) + f rp a b = + FromEdge a 2 `S.member` fold (rp ^? rpType . rplsType) + && OnEdge b `S.member` fold (rp ^? rpType . rplsType) polyChasm :: Int -> Float -> State LayoutVars Room polyChasm n x = @@ -409,6 +422,52 @@ tutLight = do ) _ -> Nothing +loadAmmoTut :: State LayoutVars (MetaTree Room String) +loadAmmoTut = do + i <- nextLayoutInt + amrm <- + putSingleLight + . analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i + =<< shuffleLinks + =<< roomRectAutoLights 100 100 + j <- nextLayoutInt + wprm <- + putSingleLight + . addDoorAtNthLinkToggleInterrupt 0 ["DOOR LOCKDOWN ACTIVE"] j + =<< shuffleLinks + =<< roomRectAutoLights 100 100 + return $ + tToBTree "loadAmmoTest" $ + treeFromPost + [amrm & rmPmnts .:~ sps (PS 50 0) (PutFlIt (drumMag & itConsumables ?~ 90)) + , triggerDoorRoom i + , wprm & rmPmnts .:~ sps (PS 50 0) (PutFlIt burstRifle) + ] (triggerDoorRoom j) + +putSingleLight :: Room -> State LayoutVars Room +putSingleLight rm = do + f <- case rm ^. rmType of + DefaultRoomType -> pure id + RectRoomType{_rmWidth = x, _rmHeight = y, _numLinkEW = nx, _numLinkNS = ny} -> do + x' <- + if odd nx + then pure $ x / 2 + else takeOne [x / 2 + 21, x / 2 - 21] + y' <- + if odd ny + then pure $ y / 2 + else takeOne [y / 2 + 21, y / 2 - 21] + ps <- + takeOne + [ (V2 x' 0, V2 x' y) + , (V2 0 y', V2 x y') + ] + return $ rmPmnts .:~ uncurry spanLightI ps + RoomNgon{_rmngonSize = x} -> do + y <- takeOne [21, -21] + return $ rmPmnts .:~ spanLightI (V2 (-x) y) (V2 x y) + return . f $ removeLights rm + tutHub :: State LayoutVars (MetaTree Room String) tutHub = do (is, wbp) <- setTreeInts =<< critsRoom 1 diff --git a/src/Dodge/Room/Warning.hs b/src/Dodge/Room/Warning.hs index 364a2a53c..a02322547 100644 --- a/src/Dodge/Room/Warning.hs +++ b/src/Dodge/Room/Warning.hs @@ -5,6 +5,7 @@ module Dodge.Room.Warning ( addDoorToggleTerminal', addDoorAtNthLinkToggleTerminal, addDoorAtNthLinkToggleInterrupt, + byNthLink, ) where import Dodge.LevelGen.PlacementHelper @@ -40,6 +41,9 @@ warningRooms str n = do addDoorToggleTerminal :: [TerminalLine] -> Int -> Room -> Room addDoorToggleTerminal = addDoorAtNthLinkToggleTerminal 0 +byNthLink :: Int -> PlacementSpot +byNthLink = rprShift . moveToSideNthOutLink (S.singleton UsedPosLow) + addDoorAtNthLinkToggleInterrupt :: Int -> [String] -> Int -> Room -> Room addDoorAtNthLinkToggleInterrupt j x i = (rmName .++~ "doorInterrupt-") @@ -47,7 +51,7 @@ addDoorAtNthLinkToggleInterrupt j x i = where outplace = extTrigLitPos - (atNthLnkOutShiftBy j (\(p, a) -> ((p +.+ rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow))) + (atNthLnkOutShiftBy j (\(p, a) -> ((p + rotateV a (V2 18.5 (-2.5)), a), S.singleton UsedPosLow))) ( Just . set plSpot (rprShift (moveToSideNthOutLink (S.singleton UsedPosLow) j)) . putInterrupt ) diff --git a/tags b/tags index 5493120e4..b1cc65639 100644 --- a/tags +++ b/tags @@ -76,8 +76,9 @@ Audition src/Dodge/Data/Creature/Perception.hs 45;" t AutoAI src/Dodge/Data/Creature/Misc.hs 45;" C AutoCrit src/Dodge/Data/Creature/Misc.hs 70;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C +AvPosture src/Dodge/Data/Creature/Misc.hs 74;" C Avatar src/Dodge/Data/Creature/Misc.hs 59;" C -AvatarDead src/Dodge/Data/Creature/Misc.hs 67;" C +AvatarPosture src/Dodge/Data/Creature/Misc.hs 74;" t Awareness src/Dodge/Data/Creature/Perception.hs 63;" t BANGCONE src/Dodge/Data/Item/Combine.hs 149;" C BANGROD src/Dodge/Data/Item/Combine.hs 158;" C @@ -105,8 +106,8 @@ BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C Bark src/Dodge/Data/ActionPlan.hs 39;" C BarrelCrit src/Dodge/Data/Creature/Misc.hs 71;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 33;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 85;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 81;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 87;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 83;" C BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 41;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" C @@ -280,7 +281,7 @@ CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C Creature src/Dodge/Data/Creature.hs 35;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C -CreatureShape src/Dodge/Data/Creature/Misc.hs 74;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 76;" t CreatureType src/Dodge/Data/Creature/Misc.hs 58;" t Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C @@ -399,7 +400,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 38;" C ExplosionPayload src/Dodge/Data/Payload.hs 9;" C Explosive src/Dodge/Data/Damage.hs 25;" C ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C -ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 87;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 89;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 16;" C ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t Eyes src/Dodge/Data/Creature/Perception.hs 39;" C @@ -551,7 +552,7 @@ HotkeyV src/Dodge/Data/Equipment/Misc.hs 38;" C HotkeyX src/Dodge/Data/Equipment/Misc.hs 36;" C HotkeyZ src/Dodge/Data/Equipment/Misc.hs 35;" C Huge src/Shape/Data.hs 23;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 75;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 77;" C HumanoidAI src/Dodge/Data/Creature/Misc.hs 37;" t IMSI src/Dodge/Data/SelectionList.hs 40;" t IMSS src/Dodge/Data/SelectionList.hs 38;" t @@ -854,7 +855,7 @@ NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C Noclip src/Dodge/Data/Config.hs 83;" C NodeMTree src/Dodge/Data/MetaTree.hs 17;" C NodeTree src/Dodge/Data/MetaTree.hs 16;" C -NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 82;" C +NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 84;" C NonInf src/Dodge/Data/CardinalPoint.hs 44;" C NormalOptions src/Dodge/Data/Universe.hs 71;" C NormalSpark src/Dodge/Data/Spark.hs 19;" C @@ -996,7 +997,7 @@ Piezoelectric src/Dodge/Data/Material.hs 23;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C Placement src/Dodge/Data/GenWorld.hs 114;" t PlacementSpot src/Dodge/Data/GenWorld.hs 98;" t -PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 88;" C PlainDeath src/Dodge/Data/Creature.hs 69;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t @@ -1552,6 +1553,7 @@ _auDist src/Dodge/Data/Creature/Perception.hs 46;" f _avDexterity src/Dodge/Data/Creature/Misc.hs 63;" f _avIntelligence src/Dodge/Data/Creature/Misc.hs 64;" f _avMoveSpeed src/Dodge/Data/Creature/Misc.hs 65;" f +_avPosture src/Dodge/Data/Creature/Misc.hs 66;" f _avStrength src/Dodge/Data/Creature/Misc.hs 62;" f _avatarMaterial src/Dodge/Data/Creature/Misc.hs 61;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 60;" f @@ -1882,7 +1884,7 @@ _heldWorldPos src/Dodge/Data/Input.hs 45;" f _highlightItems src/Dodge/Data/CWorld.hs 36;" f _hotkeys src/Dodge/Data/LWorld.hs 145;" f _hud src/Dodge/Data/World.hs 46;" f -_humanoidAI src/Dodge/Data/Creature/Misc.hs 79;" f +_humanoidAI src/Dodge/Data/Creature/Misc.hs 81;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 19;" f _ibtBulletMod src/Dodge/Data/Item/Combine.hs 22;" f @@ -2098,7 +2100,7 @@ _phTargetingID src/Dodge/Data/Projectile.hs 42;" f _pickUpLevel src/Dodge/Layout/Generate.hs 15;" f _pickUps src/Dodge/Layout/Generate.hs 16;" f _pictureShaders src/Data/Preload/Render.hs 31;" f -_piercedPoints src/Dodge/Data/Creature/Misc.hs 87;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 89;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f _pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f _pjDir src/Dodge/Data/Projectile.hs 18;" f @@ -2309,9 +2311,9 @@ _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f _skType src/Dodge/Data/Spark.hs 15;" f _skVel src/Dodge/Data/Spark.hs 12;" f -_skinHead src/Dodge/Data/Creature/Misc.hs 76;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 78;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 77;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 78;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 80;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 79;" f _slInt src/Dodge/Data/HUD.hs 39;" f _slSec src/Dodge/Data/HUD.hs 39;" f _slSet src/Dodge/Data/HUD.hs 39;" f @@ -2538,10 +2540,10 @@ addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 101;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f addDepth src/Picture/Base.hs 125;" f -addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 43;" f -addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 62;" f -addDoorToggleTerminal src/Dodge/Room/Warning.hs 40;" f -addDoorToggleTerminal' src/Dodge/Room/Warning.hs 83;" f +addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 58;" f +addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 77;" f +addDoorToggleTerminal src/Dodge/Room/Warning.hs 41;" f +addDoorToggleTerminal' src/Dodge/Room/Warning.hs 98;" f addGib4 src/Dodge/Prop/Gib.hs 52;" f addGibAt src/Dodge/Prop/Gib.hs 63;" f addGibAtDir src/Dodge/Prop/Gib.hs 69;" f @@ -2560,6 +2562,7 @@ addLightsNGon src/Dodge/Room/Modify.hs 41;" f addNodesCrossing src/Dodge/Room/Path.hs 28;" f addNodesCrossingCirc src/Dodge/Room/Path.hs 41;" f addPane src/Dodge/Placement/PlaceSpot.hs 174;" f +addPlAtNthLinkToggleLight src/Dodge/Room/Warning.hs 44;" f addPointPolygon src/Geometry/Polygon.hs 142;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f @@ -2569,7 +2572,7 @@ addSideEffect src/Dodge/Concurrent.hs 29;" f addSouthPillars src/Dodge/Room/LongDoor.hs 92;" f addTermSignal src/Dodge/Event/Input.hs 31;" f addToTrunk src/TreeHelp.hs 157;" f -addWarningTerminal src/Dodge/Room/Warning.hs 94;" f +addWarningTerminal src/Dodge/Room/Warning.hs 109;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 81;" f advanceScrollAmount src/Dodge/Update.hs 479;" f @@ -2593,7 +2596,7 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 129;" f amr src/Dodge/Item/Held/Rod.hs 34;" f anRoom src/Dodge/Floor.hs 116;" f analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f -analyserByDoor src/Dodge/Room/LasTurret.hs 127;" f +analyserByDoor src/Dodge/Room/LasTurret.hs 128;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 111;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 158;" f @@ -2671,7 +2674,7 @@ axisInt src/Geometry/Intersect.hs 246;" f azure src/Color.hs 49;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f -backPQ src/Dodge/Creature/HandPos.hs 166;" f +backPQ src/Dodge/Creature/HandPos.hs 168;" f backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 729;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f @@ -2778,7 +2781,8 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 18;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 593;" f -cChasm src/Dodge/Room/Tutorial.hs 133;" f +byNthLink src/Dodge/Room/Warning.hs 55;" f +cChasm src/Dodge/Room/Tutorial.hs 135;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2816,16 +2820,16 @@ chaseCritInternal src/Dodge/Humanoid.hs 8;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 122;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmRotate src/Dodge/Creature/Update.hs 178;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 358;" f -chasmSpitTerminal src/Dodge/Room/Tutorial.hs 298;" f -chasmTestCorpse src/Dodge/Creature/Update.hs 161;" f -chasmTestLiving src/Dodge/Creature/Update.hs 137;" f +chasmRotate src/Dodge/Creature/Update.hs 177;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 371;" f +chasmSpitTerminal src/Dodge/Room/Tutorial.hs 305;" f +chasmTestCorpse src/Dodge/Creature/Update.hs 160;" f +chasmTestLiving src/Dodge/Creature/Update.hs 136;" f chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f -checkDeath src/Dodge/Creature/Update.hs 78;" f -checkDeath' src/Dodge/Creature/Update.hs 81;" f +checkDeath src/Dodge/Creature/Update.hs 77;" f +checkDeath' src/Dodge/Creature/Update.hs 80;" f checkEndGame src/Dodge/Update.hs 856;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2837,7 +2841,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f -chestPQ src/Dodge/Creature/HandPos.hs 163;" f +chestPQ src/Dodge/Creature/HandPos.hs 165;" f chooseCursorBorders src/Dodge/Render/List.hs 141;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f @@ -2946,7 +2950,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 131;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 405;" f cornerList src/Preload/Render.hs 236;" f -corpseOrGib src/Dodge/Creature/Update.hs 98;" f +corpseOrGib src/Dodge/Creature/Update.hs 97;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -2957,8 +2961,8 @@ crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCanSeeCr src/Dodge/Creature/Test.hs 53;" f crCrSpring src/Dodge/Update.hs 978;" f -crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f -crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f +crCurrentEquipment src/Dodge/Creature/Statistics.hs 59;" f +crDeathSounds src/Dodge/Creature/Vocalization.hs 43;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f @@ -2969,10 +2973,10 @@ crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crInAimStance src/Dodge/Creature/Test.hs 94;" f -crIntelligence src/Dodge/Creature/Statistics.hs 39;" f +crIntelligence src/Dodge/Creature/Statistics.hs 37;" f crIsAiming src/Dodge/Creature/Test.hs 61;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 109;" f -crLeftHandWall src/Dodge/Creature/HandPos.hs 89;" f +crLeftHandWall src/Dodge/Creature/HandPos.hs 91;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f @@ -2985,18 +2989,18 @@ crMvType src/Dodge/Creature/MoveType.hs 6;" f crNearPoint src/Dodge/Creature/Test.hs 132;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crRad src/Dodge/Creature/Radius.hs 7;" f -crRightHandWall src/Dodge/Creature/HandPos.hs 71;" f +crRightHandWall src/Dodge/Creature/HandPos.hs 73;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f crSetRoots src/Dodge/Inventory/Location.hs 55;" f crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 965;" f crStratConMatches src/Dodge/Creature/Test.hs 81;" f -crStrength src/Dodge/Creature/Statistics.hs 29;" f -crUpdate src/Dodge/Creature/Update.hs 71;" f +crStrength src/Dodge/Creature/Statistics.hs 28;" f +crUpdate src/Dodge/Creature/Update.hs 70;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 16;" f -crWarningSounds src/Dodge/Creature/Vocalization.hs 26;" f +crWarningSounds src/Dodge/Creature/Vocalization.hs 25;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 60;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 70;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f @@ -3134,7 +3138,7 @@ defEquipment src/Dodge/Default.hs 24;" f defHeldItem src/Dodge/Default/Item.hs 9;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 310;" f -defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f +defaultAimMvType src/Dodge/Creature/MoveType.hs 15;" f defaultAimingCrit src/Dodge/Default/Creature.hs 109;" f defaultAudition src/Dodge/Default/Creature.hs 94;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f @@ -3145,13 +3149,13 @@ defaultButton src/Dodge/Default.hs 44;" f defaultCWCam src/Dodge/Default/World.hs 73;" f defaultCWGen src/Dodge/Default/World.hs 63;" f defaultCWorld src/Dodge/Default/World.hs 88;" f -defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f +defaultChaseMvType src/Dodge/Creature/MoveType.hs 24;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f defaultConfig src/Dodge/Data/Config.hs 152;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 67;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f -defaultDeathSounds src/Dodge/Creature/Vocalization.hs 55;" f +defaultDeathSounds src/Dodge/Creature/Vocalization.hs 52;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f defaultDirtWall src/Dodge/Default/Wall.hs 47;" f defaultDoor src/Dodge/Default/Door.hs 5;" f @@ -3438,7 +3442,7 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f -dropAll src/Dodge/Creature/Update.hs 134;" f +dropAll src/Dodge/Creature/Update.hs 133;" f dropInventoryPath src/Dodge/HeldUse.hs 1371;" f dropItem src/Dodge/Creature/Action.hs 155;" f dropper src/Dodge/Item/Scope.hs 82;" f @@ -3499,7 +3503,7 @@ equipSiteInfo src/Dodge/Item/Info.hs 253;" f equipSitePQ src/Dodge/Creature/HandPos.hs 32;" f equipType src/Dodge/Data/EquipType.hs 10;" f equipmentDesignation src/Dodge/Inventory/RBList.hs 52;" f -equipmentStrValue src/Dodge/Creature/Statistics.hs 56;" f +equipmentStrValue src/Dodge/Creature/Statistics.hs 53;" f errorAngleVV src/Geometry.hs 59;" f errorClosestPointOnLine src/Geometry.hs 71;" f errorClosestPointOnLineParam src/Geometry.hs 77;" f @@ -3577,7 +3581,7 @@ floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f -foldMTRS src/Dodge/Room/Tutorial.hs 87;" f +foldMTRS src/Dodge/Room/Tutorial.hs 89;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 111;" f followImpulse src/Dodge/Creature/Impulse.hs 25;" f @@ -3638,9 +3642,9 @@ getBulletType src/Dodge/HeldUse.hs 937;" f getCloseObj src/Dodge/Update/Input/InGame.hs 509;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f -getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 505;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 492;" f +getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 564;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 551;" f getDebugMouseOver src/Dodge/Update.hs 449;" f getDistortions src/Dodge/Render.hs 443;" f getEdgesCrossing src/Dodge/Path.hs 37;" f @@ -3657,7 +3661,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1271;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 488;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 547;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3742,10 +3746,10 @@ head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 68;" f headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f headMap src/Dodge/DoubleTree.hs 118;" f -headPQ src/Dodge/Creature/HandPos.hs 157;" f +headPQ src/Dodge/Creature/HandPos.hs 159;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 108;" f -healthTest src/Dodge/Room/LasTurret.hs 130;" f +healthTest src/Dodge/Room/LasTurret.hs 131;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f heldAimStance src/Dodge/Item/AimStance.hs 27;" f heldAimZoom src/Dodge/Update/Camera.hs 158;" f @@ -3760,7 +3764,7 @@ heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f heldItemRifling src/Dodge/HeldUse.hs 1064;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 235;" f -heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f +heldItemWeight src/Dodge/Creature/Statistics.hs 77;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f heldTorqueAmount src/Dodge/HeldUse.hs 611;" f heldTriggerType src/Dodge/BaseTriggerType.hs 28;" f @@ -3946,7 +3950,7 @@ itemString src/Dodge/Item/Display.hs 56;" f itemToFunction src/Dodge/Item/Grammar.hs 111;" f itemTreeSPic src/Dodge/Item/Draw/SPicTree.hs 13;" f itemTriggerType src/Dodge/BaseTriggerType.hs 16;" f -itemWeight src/Dodge/Creature/Statistics.hs 74;" f +itemWeight src/Dodge/Creature/Statistics.hs 71;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 30;" f @@ -3972,26 +3976,26 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f keyPic src/Dodge/Item/Draw/SPic.hs 439;" f keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f -lChasm src/Dodge/Room/Tutorial.hs 145;" f +lChasm src/Dodge/Room/Tutorial.hs 147;" f lConnect src/Dodge/Render/Connectors.hs 43;" f lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f lamp src/Dodge/Creature/Lamp.hs 18;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 125;" f -lasCenRunClose' src/Dodge/Room/LasTurret.hs 309;" f -lasCenRunClose1 src/Dodge/Room/LasTurret.hs 398;" f -lasCenRunClose2 src/Dodge/Room/LasTurret.hs 471;" f -lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 363;" f -lasCenSensEdge src/Dodge/Room/LasTurret.hs 165;" f +lasCenRunClose' src/Dodge/Room/LasTurret.hs 310;" f +lasCenRunClose1 src/Dodge/Room/LasTurret.hs 399;" f +lasCenRunClose2 src/Dodge/Room/LasTurret.hs 472;" f +lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 364;" f +lasCenSensEdge src/Dodge/Room/LasTurret.hs 166;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 414;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 731;" f -lasRunRand src/Dodge/Room/LasTurret.hs 468;" f -lasRunYinYang src/Dodge/Room/LasTurret.hs 186;" f -lasRunYinYangCenter src/Dodge/Room/LasTurret.hs 249;" f -lasSensorTurretTest src/Dodge/Room/LasTurret.hs 142;" f -lasTunnel src/Dodge/Room/LasTurret.hs 509;" f -lasTunnelRunPast src/Dodge/Room/LasTurret.hs 550;" f +lasRunRand src/Dodge/Room/LasTurret.hs 469;" f +lasRunYinYang src/Dodge/Room/LasTurret.hs 187;" f +lasRunYinYangCenter src/Dodge/Room/LasTurret.hs 250;" f +lasSensorTurretTest src/Dodge/Room/LasTurret.hs 143;" f +lasTunnel src/Dodge/Room/LasTurret.hs 510;" f +lasTunnelRunPast src/Dodge/Room/LasTurret.hs 551;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 35;" f laser src/Dodge/Item/Held/BatteryGuns.hs 27;" f laserSpark src/Dodge/Material/Damage.hs 37;" f @@ -4005,13 +4009,13 @@ leaveResetQuitTerminal src/Dodge/WorldEffect.hs 163;" f led src/Dodge/Item/Held/Utility.hs 23;" f left src/DoubleStack.hs 16;" f leftChildList src/Dodge/Item/Grammar.hs 193;" f -leftHandPQ src/Dodge/Creature/HandPos.hs 113;" f +leftHandPQ src/Dodge/Creature/HandPos.hs 115;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f leftPad src/Padding.hs 15;" f leftRightCombine src/Dodge/Item/Grammar.hs 205;" f -leftWristPQ src/Dodge/Creature/HandPos.hs 127;" f -legPQ src/Dodge/Creature/HandPos.hs 133;" f -legPQ' src/Dodge/Creature/HandPos.hs 138;" f +leftWristPQ src/Dodge/Creature/HandPos.hs 129;" f +legPQ src/Dodge/Creature/HandPos.hs 135;" f +legPQ' src/Dodge/Creature/HandPos.hs 140;" f legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f @@ -4027,7 +4031,7 @@ lineCol src/Picture/Base.hs 234;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 128;" f -lineOutputTerminal src/Dodge/Room/Warning.hs 99;" f +lineOutputTerminal src/Dodge/Room/Warning.hs 114;" f lineSplit src/Justify.hs 26;" f lineUp src/Dodge/Creature/Boid.hs 150;" f linksDAGToPath src/Dodge/Room/Path.hs 19;" f @@ -4040,6 +4044,7 @@ listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 410;" f +loadAmmoTut src/Dodge/Room/Tutorial.hs 425;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f loadMuzzle src/Dodge/HeldUse.hs 654;" f @@ -4210,9 +4215,9 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 23;" f midBounds src/Dodge/Room/Foreground.hs 150;" f -midChasm src/Dodge/Room/Tutorial.hs 174;" f -midChasmPlatform src/Dodge/Room/Tutorial.hs 196;" f -midChasmSpit src/Dodge/Room/Tutorial.hs 263;" f +midChasm src/Dodge/Room/Tutorial.hs 176;" f +midChasmPlatform src/Dodge/Room/Tutorial.hs 198;" f +midChasmSpit src/Dodge/Room/Tutorial.hs 266;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4261,7 +4266,7 @@ moveProjectile src/Dodge/Projectile/Update.hs 249;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 228;" f -moveToSideNthOutLink src/Dodge/Room/Warning.hs 102;" f +moveToSideNthOutLink src/Dodge/Room/Warning.hs 117;" f moveWall src/Dodge/Wall/Move.hs 23;" f moveWallID src/Dodge/Wall/Move.hs 18;" f moveWallIDUnsafe src/Dodge/Wall/Move.hs 13;" f @@ -4314,7 +4319,7 @@ noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f nodesNear src/Dodge/Path.hs 75;" f -nonConvexChasm src/Dodge/Room/Tutorial.hs 260;" f +nonConvexChasm src/Dodge/Room/Tutorial.hs 263;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f normalTo8 src/Shader/Poke.hs 466;" f @@ -4389,7 +4394,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 85;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f -passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 570;" f +passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 629;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathEdgeObstructed src/Dodge/Path.hs 66;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f @@ -4460,7 +4465,7 @@ pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointsToPoly src/Geometry/ConvexPoly.hs 37;" f -poisonSPic src/Dodge/Creature/Update.hs 130;" f +poisonSPic src/Dodge/Creature/Update.hs 129;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 509;" f pokeArrayOff src/Shader/Poke.hs 521;" f @@ -4494,8 +4499,8 @@ pokeWall src/Shader/Poke.hs 80;" f pokeWallsWindows src/Shader/Poke.hs 52;" f poly3 src/Picture/Base.hs 76;" f poly3Col src/Picture/Base.hs 80;" f -polyChasm src/Dodge/Room/Tutorial.hs 336;" f -polyChasmC src/Dodge/Room/Tutorial.hs 348;" f +polyChasm src/Dodge/Room/Tutorial.hs 349;" f +polyChasmC src/Dodge/Room/Tutorial.hs 361;" f polyCirc src/Shape.hs 47;" f polyCircx src/Shape.hs 52;" f polyCornerDist src/Geometry/Polygon.hs 69;" f @@ -4587,6 +4592,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 97;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f putShape src/Dodge/Room/Foreground.hs 134;" f +putSingleLight src/Dodge/Room/Tutorial.hs 447;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putStrLnAppend src/Dodge/LevelGen.hs 84;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 51;" f @@ -4697,7 +4703,7 @@ renderListAt src/Dodge/Render/List.hs 177;" f renderShadows src/Render.hs 116;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 169;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f -resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 67;" f +resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 64;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetTerminal src/Dodge/WorldEffect.hs 157;" f @@ -4735,7 +4741,7 @@ rightHandPQ src/Dodge/Creature/HandPos.hs 63;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 181;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f -rightWristPQ src/Dodge/Creature/HandPos.hs 110;" f +rightWristPQ src/Dodge/Creature/HandPos.hs 112;" f rlPosDir src/Dodge/RoomLink.hs 112;" f rlauncherPic src/Dodge/Item/Draw/SPic.hs 399;" f rmInLinks src/Dodge/RoomLink.hs 153;" f @@ -4824,7 +4830,7 @@ scaleSH src/Shape.hs 266;" f scalp src/Dodge/Creature/Picture.hs 92;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 102;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 127;" f +scorchSPic src/Dodge/Creature/Update.hs 126;" f screenBox src/Dodge/Base/Window.hs 54;" f screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f @@ -4868,7 +4874,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 242;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f sensorSPic src/Dodge/Machine/Draw.hs 99;" f -sensorTut src/Dodge/Room/Tutorial.hs 514;" f +sensorTut src/Dodge/Room/Tutorial.hs 573;" f sensorTypeDamages src/Dodge/Machine/Update.hs 288;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f @@ -4903,7 +4909,7 @@ setSoundVolume src/Sound.hs 159;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f -setTreeInts src/Dodge/Room/Tutorial.hs 94;" f +setTreeInts src/Dodge/Room/Tutorial.hs 96;" f setViewDistance src/Dodge/Update/Camera.hs 240;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 448;" f @@ -5088,8 +5094,8 @@ spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 11;" f spreadOut src/Dodge/Creature/Boid.hs 160;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f -sqPlatformChasm src/Dodge/Room/Tutorial.hs 225;" f -sqSpitChasm src/Dodge/Room/Tutorial.hs 240;" f +sqPlatformChasm src/Dodge/Room/Tutorial.hs 227;" f +sqSpitChasm src/Dodge/Room/Tutorial.hs 242;" f square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 129;" f @@ -5117,7 +5123,7 @@ stackedInventory src/Dodge/Creature.hs 326;" f startCr src/Dodge/Creature.hs 90;" f startCrafts src/Dodge/Room/Start.hs 94;" f startDrag src/Dodge/Update/Input/InGame.hs 286;" f -startFalling src/Dodge/Creature/Update.hs 155;" f +startFalling src/Dodge/Creature/Update.hs 154;" f startInvList src/Dodge/Creature.hs 105;" f startInventory src/Dodge/Creature.hs 108;" f startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f @@ -5139,8 +5145,8 @@ stopPushing src/Dodge/Wall/Damage.hs 172;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f storageShape src/Dodge/Machine/Draw.hs 31;" f storeRoomID src/Dodge/Room/Modify.hs 23;" f -strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f -strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f +strFromEquipment src/Dodge/Creature/Statistics.hs 50;" f +strFromHeldItem src/Dodge/Creature/Statistics.hs 64;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strictify src/MaybeHelp.hs 35;" f strideRot src/Dodge/Item/HeldOffset.hs 83;" f @@ -5306,7 +5312,7 @@ translate3 src/Picture/Base.hs 112;" f translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f translateH src/Picture/Base.hs 104;" f -translatePointToLeftHand src/Dodge/Creature/HandPos.hs 121;" f +translatePointToLeftHand src/Dodge/Creature/HandPos.hs 123;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 42;" f translateSH src/Shape.hs 242;" f translateSHxy src/Shape.hs 246;" f @@ -5316,10 +5322,10 @@ translateSPxy src/ShapePicture.hs 45;" f translateSPz src/ShapePicture.hs 49;" f translateScreenPos src/Dodge/ScreenPos.hs 12;" f translateToES src/Dodge/Creature/HandPos.hs 29;" f -translateToLeftHand src/Dodge/Creature/HandPos.hs 124;" f -translateToLeftLeg src/Dodge/Creature/HandPos.hs 130;" f -translateToRightHand src/Dodge/Creature/HandPos.hs 107;" f -translateToRightLeg src/Dodge/Creature/HandPos.hs 154;" f +translateToLeftHand src/Dodge/Creature/HandPos.hs 126;" f +translateToLeftLeg src/Dodge/Creature/HandPos.hs 132;" f +translateToRightHand src/Dodge/Creature/HandPos.hs 109;" f +translateToRightLeg src/Dodge/Creature/HandPos.hs 156;" f translateXY src/Polyhedra.hs 23;" f trapTBH src/Geometry/Polygon.hs 22;" f trapezionBWHW src/Geometry/Polygon.hs 34;" f @@ -5358,12 +5364,12 @@ tryUseParent src/Dodge/Creature/State.hs 145;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f -tutDrop src/Dodge/Room/Tutorial.hs 99;" f -tutHub src/Dodge/Room/Tutorial.hs 412;" f -tutLight src/Dodge/Room/Tutorial.hs 380;" f -tutRezBox src/Dodge/Room/Tutorial.hs 525;" f +tutDrop src/Dodge/Room/Tutorial.hs 101;" f +tutHub src/Dodge/Room/Tutorial.hs 471;" f +tutLight src/Dodge/Room/Tutorial.hs 393;" f +tutRezBox src/Dodge/Room/Tutorial.hs 584;" f tutRoomTree src/Dodge/Floor.hs 20;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 550;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 609;" f tweenAngles src/Geometry/Vector.hs 192;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f @@ -5477,7 +5483,7 @@ updatePlasmaBall src/Dodge/Update.hs 509;" f updatePlasmaBalls src/Dodge/Update.hs 650;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 185;" f +updatePulse src/Dodge/Creature/Update.hs 184;" f updatePulseBall src/Dodge/Update.hs 529;" f updatePulseLaser src/Dodge/Update.hs 697;" f updatePulseLasers src/Dodge/Update.hs 504;" f @@ -5583,7 +5589,7 @@ viewTarget src/Dodge/Creature/ReaderUpdate.hs 156;" f violet src/Color.hs 48;" f visibleWalls src/Dodge/Base/Collide.hs 218;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f -vocalizationTest src/Dodge/Creature/Vocalization.hs 62;" f +vocalizationTest src/Dodge/Creature/Vocalization.hs 59;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f walkNozzle src/Dodge/HeldUse.hs 826;" f @@ -5596,7 +5602,7 @@ wallToSurface src/Dodge/Base/Collide.hs 182;" f wallsFromRooms src/Dodge/Layout.hs 141;" f wallsToDraw src/Dodge/Render/Walls.hs 18;" f warmupSound src/Dodge/HeldUse.hs 1396;" f -warningRooms src/Dodge/Room/Warning.hs 33;" f +warningRooms src/Dodge/Room/Warning.hs 34;" f warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f wasdAim src/Dodge/Creature/YourControl.hs 133;" f wasdDir src/Dodge/WASD.hs 17;" f @@ -5677,17 +5683,18 @@ xyzV4 src/Geometry/Vector.hs 211;" f yIntercepts src/Dodge/Zoning/Base.hs 78;" f yV2 src/Geometry/Vector.hs 207;" f yellow src/Color.hs 44;" f -you src/Dodge/Base/You.hs 13;" f +you src/Dodge/Base/You.hs 17;" f youDropItem src/Dodge/Creature/Action.hs 177;" f yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f yourControl src/Dodge/Creature/YourControl.hs 28;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 112;" f yourInfo src/Dodge/Creature/Info.hs 10;" f -yourInv src/Dodge/Base/You.hs 28;" f -yourRootItem src/Dodge/Base/You.hs 22;" f -yourSelectedItem src/Dodge/Base/You.hs 16;" f +yourInv src/Dodge/Base/You.hs 37;" f +yourRootItem src/Dodge/Base/You.hs 26;" f +yourRootItemDT src/Dodge/Base/You.hs 32;" f +yourSelectedItem src/Dodge/Base/You.hs 20;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 158;" f +zChasm src/Dodge/Room/Tutorial.hs 160;" f zConnect src/Dodge/Render/Connectors.hs 18;" f zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f