diff --git a/src/Dodge/Data/GenWorld.hs b/src/Dodge/Data/GenWorld.hs index c1afba84d..706b2fe78 100644 --- a/src/Dodge/Data/GenWorld.hs +++ b/src/Dodge/Data/GenWorld.hs @@ -54,7 +54,8 @@ data PSType } | PutWall {_pwPoly :: [Point2], _pwWall :: Wall} | PutSlideDr Door Wall EdgeObstacle Float Point2 Point2 - | PutDoor Color EdgeObstacle WdBl [(Point2, Point2)] +-- | PutDoor Color EdgeObstacle WdBl [(Point2, Point2)] + | PutDoor Color EdgeObstacle WdBl Float Point2A Point2A -- [(Point2, Point2)] | RandPS (State StdGen PSType) | PutForeground ForegroundShape | PutWorldUpdate (Int -> PlacementSpot -> GenWorld -> GenWorld) diff --git a/src/Dodge/LevelGen/DoorPane.hs b/src/Dodge/LevelGen/DoorPane.hs index 445f542d0..ca56232b1 100644 --- a/src/Dodge/LevelGen/DoorPane.hs +++ b/src/Dodge/LevelGen/DoorPane.hs @@ -1,6 +1,4 @@ -module Dodge.LevelGen.DoorPane - ( rectanglePairs - ) where +module Dodge.LevelGen.DoorPane ( rectanglePairs) where import Geometry.Vector import Geometry.Data diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index b965aa70c..d4f83861a 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -133,7 +133,8 @@ placeSpotID rid ps pt w = case pt of PutMachine pps mc wl mitm -> plMachine (map doShift pps) mc wl mitm p rot w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p' rot ls) w RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w - PutDoor col eo f pss -> plDoor col eo f (map (bimap doShift doShift) pss) w + --PutDoor col eo f pss -> plDoor col eo f (map (bimap doShift doShift) pss) w + PutDoor col eo f l p1 p2 -> plDoor col eo f l (pashift p1) (pashift p2) w PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w PutSlideDr wl dr eo off a b -> plSlideDoor wl dr eo off (doShift a) (doShift b) w @@ -155,6 +156,7 @@ placeSpotID rid ps pt w = case pt of p' = V3 px py 0 rot = _psRot ps doShift = shiftPointBy (p, rot) + pashift = compP2A (p, rot) placeChasm :: GenWorld -> Int -> [Point2] -> [Point2] -> GenWorld placeChasm gw rid ps shiftps = diff --git a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs index b9bc7e7c5..17646fa01 100644 --- a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs +++ b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs @@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.TriggerDoor ( updateDoorEdges, ) where +import Dodge.ShiftPoint import Linear import Dodge.Data.GenWorld import qualified Data.IntSet as IS @@ -23,10 +24,12 @@ plDoor :: WdBl -> -- | Door positions, closed to open. -- Bumped out up and down by 9, not widened - [(Point2, Point2)] -> + Float -> + Point2A -> + Point2A -> GenWorld -> (Int, GenWorld) -plDoor col eo cond pss gw = (drid, over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors %~ addDoor) -- carefull with the ordering of addWalls +plDoor col eo cond l p1 p2 gw = (drid, over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors %~ addDoor) -- carefull with the ordering of addWalls where drid = IM.newKey $ _doors (_lWorld (_cWorld $ _gwWorld gw)) addDoor = @@ -36,16 +39,24 @@ plDoor col eo cond pss gw = (drid, over gwWorld addWalls $ gw & gwWorld . cWorld , _drWallIDs = IS.fromList wlids , _drStatus = DoorInt 0 , _drTrigger = cond - , _drMech = DrWdMechanismStepwise nsteps wlids pss - , _drPos = head pss - , _drOpenPos = head pss - , _drClosePos = last pss + --, _drMech = DrWdMechanismStepwise nsteps wlids pss + , _drMech = DoorLerp +-- , _drPos = head pss +-- , _drOpenPos = head pss +-- , _drClosePos = last pss + , _drZeroPos = p1 + , _drOnePos = p2 + , _drLerp = 0 + , _drFootPrint = IM.fromList . zip wlids $ wlps' , _drObstacleType = eo + , _drSpeed = 0.01 } - nsteps = length pss - 1 +-- nsteps = length pss - 1 wlids = take 4 [IM.newKey $ _walls (_lWorld (_cWorld $ _gwWorld gw)) ..] - wlps' = uncurry (rectanglePairs 9) $ head pss - addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids wlps' + --wlps' = uncurry (rectanglePairs 9) $ head pss + wlps' = rectanglePairs 9 0 (V2 l 0) + addWalls w' = foldl' (addDoorWall eo drid $ switchWallCol col) w' $ zip wlids + $ wlps' & each . each %~ shiftPointBy p1 addDoorWall :: EdgeObstacle -> Int -> Wall -> World -> (Int, (Point2, Point2)) -> World addDoorWall eo drid wl w (wlid, wlps) = diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 7da4d96f5..10950204b 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -90,7 +90,8 @@ airlock0 = ] col = dim $ dim $ bright red -airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType +--airlockDoor :: Color -> WdBl -> [(Point2, Point2)] -> PSType +airlockDoor :: Color -> WdBl -> Float -> Point2A -> Point2A -> PSType airlockDoor col = PutDoor col DoorObstacle airlockDoubleDoor :: @@ -98,12 +99,12 @@ airlockDoubleDoor :: Point2 -> Color -> WdBl -> - [(Point2, Point2)] -> - [(Point2, Point2)] -> + Float -> Point2A -> Point2A -> + Float -> Point2A -> Point2A -> Maybe Placement -airlockDoubleDoor p1 p2 col cond outDoorps inDoorps = - jspsJ p1 0 (airlockDoor col cond outDoorps) $ - sPS p2 0 (airlockDoor col cond inDoorps) +airlockDoubleDoor p1 p2 col cond l1 x1 y1 l2 x2 y2 = + jspsJ p1 0 (airlockDoor col cond l1 x1 y1) $ + sPS p2 0 (airlockDoor col cond l2 x2 y2) airlockSimple :: Room airlockSimple = @@ -114,9 +115,10 @@ airlockSimple = , _rmPath = foldMap (doublePairSet . (V2 90 30,) . fst) lnks , _rmPmnts = [ pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ - \btid -> airlockDoubleDoor 0 (V2 180 0) col (WdBlBtOn btid) outDoorps inDoorps - -- jspsJ (V2 0 0) 0 (airlockDoor col (cond btid) outDoorps) - -- $ sPS (V2 180 0) 0 (airlockDoor col (cond btid) inDoorps) + \btid -> airlockDoubleDoor 0 (V2 180 0) col (WdBlBtOn btid) + l1 x1 y1 + l2 x2 y2 +-- outDoorps inDoorps ] , _rmBound = [rectNSWE 120 0 0 180] @@ -127,8 +129,14 @@ airlockSimple = , (V2 180 30, 1.5 * pi) ] col = dim $ dim $ bright red - outDoorps = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 0 55) - inDoorps = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 (-55) 0) + l1 = 55 + l2 = 55 + x1 = (0,pi/2) + y1 = (0, 0) + y2 = (0,pi/2) + x2 = (0, pi) +-- outDoorps = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 0 55) +-- inDoorps = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 (-55) 0) airlockZ :: RandomGen g => State g Room airlockZ = do @@ -148,10 +156,10 @@ airlockZ = do -- ] _rmPmnts = [ pContID (PS (V2 90 115) pi) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ - \btid -> airlockDoubleDoor (V2 0 60) (V2 180 60) col (WdBlBtOn btid) outDoorps inDoorps - , -- jspsJ (V2 0 60) 0 (airlockDoor col (cond btid) outDoorps) - -- $ sPS (V2 180 60) 0 (airlockDoor col (cond btid) inDoorps) - sps0 $ PutWall (reverse $ rectNSWE 70 50 60 120) defaultWall + \btid -> airlockDoubleDoor (V2 0 60) (V2 180 60) col (WdBlBtOn btid) + l1 x1 y1 l2 x2 y2 + -- outDoorps inDoorps + , sps0 $ PutWall (reverse $ rectNSWE 70 50 60 120) defaultWall , lighting ] , _rmBound = @@ -159,8 +167,14 @@ airlockZ = do } where col = dim $ dim $ bright red - outDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 0 (-61)) - inDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 (-61) 0) + l1 = 61 + l2 = 61 + x1 = (0, -pi/2) + y1 = (0,0) + x2 = (0,-pi) + y2 = (0, -pi/2) +-- outDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 0 (-61)) +-- inDoorps = (V2 0 0,) <$> arcStepwise 3 (pi / 2) (V2 0 0) (V2 (-61) 0) airlock90 :: Room airlock90 = @@ -181,7 +195,7 @@ airlock90 = , _rmPath = doublePairSet (V2 0 40, V2 40 0) , _rmPmnts = [ pContID (PS (V2 120 120) (3 * pi / 4)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ - \btid -> jsps (V2 5 5) 0 $ airlockDoor col (WdBlBtOn btid) pss + \btid -> jsps (V2 5 5) 0 $ airlockDoor col (WdBlBtOn btid) l1 x1 y1 , mntLS vShape (V2 35 35) (V3 70 70 50) ] , _rmBound = @@ -199,7 +213,10 @@ airlock90 = where --cond w = or $ M.lookup (DoorNumOpen n) (_worldState w) col = dim $ dim $ bright red - pss = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 0 55) + l1 = 55 + y1 = (0,0) + x1 = (0,pi/2) +-- pss = (V2 0 0,) <$> arcStepwise 3 (negate $ pi / 2) (V2 0 0) (V2 0 55) airlockCrystal :: Room airlockCrystal = @@ -209,7 +226,7 @@ airlockCrystal = , _rmPath = mempty , _rmPmnts = [ pContID (PS (V2 145 70) (pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ - \btid -> jsps0 $ airlockDoor col (WdBlBtOn btid) pss + \btid -> jsps (V2 40 70) 0 $ airlockDoor col (WdBlBtOn btid) l1 x1 y1 , crystalLine (V2 0 70) (V2 40 70) , mntLS vShape (V2 150 70) (V3 110 70 70) ] @@ -218,9 +235,12 @@ airlockCrystal = where switchcutout = orderPolygon $ map toV2 [(39, 20), (150, 60), (150, 80), (39, 120)] col = dim $ dim $ bright red - pss :: [(Point2, Point2)] - pss = - reverse $ - fmap - ((\x -> (V2 50 (x - 10), V2 50 (x + 60))) . fromIntegral) - [20 :: Int, 22 .. 70] + l1 = 55 + x1 = (0,pi/2) + y1 = (V2 0 (-55),pi/2) + --pss :: [(Point2, Point2)] + --pss = + -- reverse $ + -- fmap + -- ((\x -> (V2 50 (x - 10), V2 50 (x + 60))) . fromIntegral) + -- [20 :: Int, 22 .. 70] diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index d2ee8f7e9..9c710b092 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -43,9 +43,16 @@ tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor - , tToBTree "asdf" . return . cleatOnward <$> airlockZ + --, tToBTree "asdf" . return . cleatOnward <$> airlockZ + , return $ tToBTree "cor" $ return $ cleatOnward corridor + , return $ tToBTree "cor" $ return $ cleatOnward corridor + , return . tToBTree "asdf" . return . cleatOnward $ airlockCrystal + , return $ tToBTree "cor" $ return $ cleatOnward corridor , return $ tToBTree "cor" $ return $ cleatOnward corridor , tToBTree "t" . return . cleatOnward <$> slowDoorRoom + , return $ tToBTree "cor" $ return $ cleatOnward corridor + , return $ tToBTree "cor" $ return $ cleatOnward corridor + , return $ tToBTree "cor" $ return $ cleatOnward corridor , corDoor , return $ tToBTree "cor" $ return $ cleatOnward corridor , tutHub diff --git a/src/Dodge/ShiftPoint.hs b/src/Dodge/ShiftPoint.hs index 82e546daa..5c61b7a2b 100644 --- a/src/Dodge/ShiftPoint.hs +++ b/src/Dodge/ShiftPoint.hs @@ -7,6 +7,9 @@ import Geometry shiftPointBy :: Point2A -> Point2 -> Point2 shiftPointBy (pos, rot) !p = pos +.+ rotateV rot p +compP2A :: Point2A -> Point2A -> Point2A +compP2A (p1,r1) (p2,r2) = (p1 +.+ rotateV r1 p2, r1 + r2) + invShiftPointBy :: (Point2, Float) -> Point2 -> Point2 invShiftPointBy (p1, r) p2 = rotateV (- r) $ p2 -.- p1 diff --git a/tags b/tags index 0c361637b..1b8517822 100644 --- a/tags +++ b/tags @@ -298,7 +298,6 @@ Cull_more_lights src/Dodge/Data/Config.hs 78;" C CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cylinder src/Shape/Data.hs 14;" C DETECTOR src/Dodge/Data/Item/Combine.hs 33;" C -DPoint2 src/Geometry/Data.hs 48;" t DROPPER src/Dodge/Data/Item/Combine.hs 26;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 107;" C DS src/DoubleStack.hs 3;" t @@ -958,10 +957,10 @@ POISONSPRAYER src/Dodge/Data/Item/Combine.hs 172;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 87;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 128;" C PRISM src/Dodge/Data/Item/Combine.hs 65;" C -PS src/Dodge/Data/GenWorld.hs 95;" C -PSNoShiftCont src/Dodge/Data/GenWorld.hs 96;" C -PSPos src/Dodge/Data/GenWorld.hs 97;" C -PSRoomRand src/Dodge/Data/GenWorld.hs 102;" C +PS src/Dodge/Data/GenWorld.hs 96;" C +PSNoShiftCont src/Dodge/Data/GenWorld.hs 97;" C +PSPos src/Dodge/Data/GenWorld.hs 98;" C +PSRoomRand src/Dodge/Data/GenWorld.hs 103;" C PSType src/Dodge/Data/GenWorld.hs 32;" t PUMP src/Dodge/Data/Item/Combine.hs 62;" C PaletteColor src/Color/Data.hs 11;" t @@ -981,8 +980,8 @@ PhysicalSensor src/Dodge/Data/Machine/Sensor.hs 16;" C Picture src/Picture/Data.hs 44;" t Piercing src/Dodge/Data/Damage.hs 16;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C -Placement src/Dodge/Data/GenWorld.hs 108;" t -PlacementSpot src/Dodge/Data/GenWorld.hs 94;" t +Placement src/Dodge/Data/GenWorld.hs 109;" t +PlacementSpot src/Dodge/Data/GenWorld.hs 95;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlayStatus src/Sound/Data.hs 21;" t @@ -990,6 +989,7 @@ PlayerFaction src/Dodge/Data/Creature/State.hs 20;" C PlayerGoal src/Dodge/Data/Scenario.hs 3;" t Playing src/Sound/Data.hs 23;" C Point2 src/Geometry/Data.hs 23;" t +Point2A src/Geometry/Data.hs 48;" t Point3 src/Geometry/Data.hs 34;" t Point3Q src/Geometry/Data.hs 52;" t Point4 src/Geometry/Data.hs 41;" t @@ -1050,26 +1050,26 @@ PushedBy src/Dodge/Data/Door.hs 26;" C PushesItself src/Dodge/Data/Door.hs 25;" C PutBlock src/Dodge/Data/GenWorld.hs 45;" C PutButton src/Dodge/Data/GenWorld.hs 41;" C -PutChasm src/Dodge/Data/GenWorld.hs 63;" C +PutChasm src/Dodge/Data/GenWorld.hs 64;" C PutCoord src/Dodge/Data/GenWorld.hs 46;" C PutCrit src/Dodge/Data/GenWorld.hs 33;" C -PutDoor src/Dodge/Data/GenWorld.hs 57;" C +PutDoor src/Dodge/Data/GenWorld.hs 58;" C PutFlIt src/Dodge/Data/GenWorld.hs 44;" C -PutForeground src/Dodge/Data/GenWorld.hs 59;" C -PutID src/Dodge/Data/GenWorld.hs 62;" C +PutForeground src/Dodge/Data/GenWorld.hs 60;" C +PutID src/Dodge/Data/GenWorld.hs 63;" C PutLS src/Dodge/Data/GenWorld.hs 40;" C -PutLabel src/Dodge/Data/GenWorld.hs 64;" C +PutLabel src/Dodge/Data/GenWorld.hs 65;" C PutLineBlock src/Dodge/Data/GenWorld.hs 49;" C PutMachine src/Dodge/Data/GenWorld.hs 34;" C PutMod src/Dodge/Data/GenWorld.hs 47;" C -PutNothing src/Dodge/Data/GenWorld.hs 61;" C +PutNothing src/Dodge/Data/GenWorld.hs 62;" C PutOnEquipment src/Dodge/Data/RightButtonOptions.hs 19;" C PutProp src/Dodge/Data/GenWorld.hs 42;" C PutSlideDr src/Dodge/Data/GenWorld.hs 56;" C PutTerminal src/Dodge/Data/GenWorld.hs 43;" C PutTrigger src/Dodge/Data/GenWorld.hs 48;" C PutWall src/Dodge/Data/GenWorld.hs 55;" C -PutWorldUpdate src/Dodge/Data/GenWorld.hs 60;" C +PutWorldUpdate src/Dodge/Data/GenWorld.hs 61;" C QFloat src/Geometry/Data.hs 50;" t QuarterRes src/Dodge/Data/Config.hs 98;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C @@ -1093,7 +1093,7 @@ RadialDistortion src/Dodge/Data/Distortion.hs 11;" C RandImpulse src/Dodge/Data/ActionPlan.hs 49;" t RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 51;" C RandImpulseList src/Dodge/Data/ActionPlan.hs 50;" C -RandPS src/Dodge/Data/GenWorld.hs 58;" C +RandPS src/Dodge/Data/GenWorld.hs 59;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 31;" C RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C @@ -1129,7 +1129,7 @@ Rocket src/Dodge/Data/Projectile.hs 32;" C RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C -Room src/Dodge/Data/GenWorld.hs 123;" t +Room src/Dodge/Data/GenWorld.hs 124;" t RoomClipping src/Dodge/Data/Config.hs 108;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t @@ -2100,11 +2100,11 @@ _pjSpin src/Dodge/Data/Projectile.hs 19;" f _pjTimer src/Dodge/Data/Projectile.hs 22;" f _pjType src/Dodge/Data/Projectile.hs 24;" f _pjVel src/Dodge/Data/Projectile.hs 17;" f -_plExternalID src/Dodge/Data/GenWorld.hs 112;" f -_plIDCont src/Dodge/Data/GenWorld.hs 113;" f -_plMID src/Dodge/Data/GenWorld.hs 111;" f -_plSpot src/Dodge/Data/GenWorld.hs 109;" f -_plType src/Dodge/Data/GenWorld.hs 110;" f +_plExternalID src/Dodge/Data/GenWorld.hs 113;" f +_plIDCont src/Dodge/Data/GenWorld.hs 114;" f +_plMID src/Dodge/Data/GenWorld.hs 112;" f +_plSpot src/Dodge/Data/GenWorld.hs 110;" f +_plType src/Dodge/Data/GenWorld.hs 111;" f _playStatus src/Sound/Data.hs 15;" f _playingSounds src/Dodge/Data/World.hs 40;" f _posture src/Dodge/Data/Creature/Stance.hs 17;" f @@ -2136,24 +2136,24 @@ _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 36;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 35;" f _proxSensorType src/Dodge/Data/Machine/Sensor.hs 26;" f _proxToggle src/Dodge/Data/Machine/Sensor.hs 27;" f -_psFallback src/Dodge/Data/GenWorld.hs 100;" f -_psPos src/Dodge/Data/GenWorld.hs 95;" f -_psRandShift src/Dodge/Data/GenWorld.hs 104;" f -_psRoomEff src/Dodge/Data/GenWorld.hs 99;" f -_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 103;" f -_psRot src/Dodge/Data/GenWorld.hs 95;" f -_psSelect src/Dodge/Data/GenWorld.hs 98;" f +_psFallback src/Dodge/Data/GenWorld.hs 101;" f +_psPos src/Dodge/Data/GenWorld.hs 96;" f +_psRandShift src/Dodge/Data/GenWorld.hs 105;" f +_psRoomEff src/Dodge/Data/GenWorld.hs 100;" f +_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 104;" f +_psRot src/Dodge/Data/GenWorld.hs 96;" f +_psSelect src/Dodge/Data/GenWorld.hs 99;" f _pulseBalls src/Dodge/Data/LWorld.hs 113;" f _pulseLasers src/Dodge/Data/LWorld.hs 112;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 54;" f _pulseRate src/Dodge/Data/Creature/Misc.hs 53;" f _putBlock src/Dodge/Data/GenWorld.hs 45;" f _putButton src/Dodge/Data/GenWorld.hs 41;" f -_putChasmPoly src/Dodge/Data/GenWorld.hs 63;" f +_putChasmPoly src/Dodge/Data/GenWorld.hs 64;" f _putEndPoint src/Dodge/Data/GenWorld.hs 53;" f -_putID src/Dodge/Data/GenWorld.hs 62;" f +_putID src/Dodge/Data/GenWorld.hs 63;" f _putItem src/Dodge/Data/GenWorld.hs 44;" f -_putLabel src/Dodge/Data/GenWorld.hs 64;" f +_putLabel src/Dodge/Data/GenWorld.hs 65;" f _putMachineMachine src/Dodge/Data/GenWorld.hs 36;" f _putMachineMaybeItem src/Dodge/Data/GenWorld.hs 38;" f _putMachinePoly src/Dodge/Data/GenWorld.hs 35;" f @@ -2192,28 +2192,28 @@ _rkSmoke src/Dodge/Data/Projectile.hs 34;" f _rlDir src/Dodge/Data/Room.hs 27;" f _rlPos src/Dodge/Data/Room.hs 26;" f _rlType src/Dodge/Data/Room.hs 25;" f -_rmBound src/Dodge/Data/GenWorld.hs 138;" f -_rmChildren src/Dodge/Data/GenWorld.hs 149;" f -_rmClusterStatus src/Dodge/Data/GenWorld.hs 151;" f -_rmConnectsTo src/Dodge/Data/GenWorld.hs 146;" f -_rmEndWires src/Dodge/Data/GenWorld.hs 145;" f -_rmFloor src/Dodge/Data/GenWorld.hs 139;" f +_rmBound src/Dodge/Data/GenWorld.hs 139;" f +_rmChildren src/Dodge/Data/GenWorld.hs 150;" f +_rmClusterStatus src/Dodge/Data/GenWorld.hs 152;" f +_rmConnectsTo src/Dodge/Data/GenWorld.hs 147;" f +_rmEndWires src/Dodge/Data/GenWorld.hs 146;" f +_rmFloor src/Dodge/Data/GenWorld.hs 140;" f _rmHeight src/Dodge/Data/Room.hs 39;" f -_rmInPmnt src/Dodge/Data/GenWorld.hs 137;" f -_rmLinkEff src/Dodge/Data/GenWorld.hs 127;" f -_rmLinks src/Dodge/Data/GenWorld.hs 125;" f -_rmMID src/Dodge/Data/GenWorld.hs 147;" f -_rmMParent src/Dodge/Data/GenWorld.hs 148;" f -_rmName src/Dodge/Data/GenWorld.hs 140;" f -_rmPath src/Dodge/Data/GenWorld.hs 135;" f -_rmPmnts src/Dodge/Data/GenWorld.hs 136;" f -_rmPolys src/Dodge/Data/GenWorld.hs 124;" f -_rmPos src/Dodge/Data/GenWorld.hs 134;" f -_rmRandPSs src/Dodge/Data/GenWorld.hs 143;" f -_rmShift src/Dodge/Data/GenWorld.hs 141;" f -_rmStartWires src/Dodge/Data/GenWorld.hs 144;" f -_rmType src/Dodge/Data/GenWorld.hs 150;" f -_rmViewpoints src/Dodge/Data/GenWorld.hs 142;" f +_rmInPmnt src/Dodge/Data/GenWorld.hs 138;" f +_rmLinkEff src/Dodge/Data/GenWorld.hs 128;" f +_rmLinks src/Dodge/Data/GenWorld.hs 126;" f +_rmMID src/Dodge/Data/GenWorld.hs 148;" f +_rmMParent src/Dodge/Data/GenWorld.hs 149;" f +_rmName src/Dodge/Data/GenWorld.hs 141;" f +_rmPath src/Dodge/Data/GenWorld.hs 136;" f +_rmPmnts src/Dodge/Data/GenWorld.hs 137;" f +_rmPolys src/Dodge/Data/GenWorld.hs 125;" f +_rmPos src/Dodge/Data/GenWorld.hs 135;" f +_rmRandPSs src/Dodge/Data/GenWorld.hs 144;" f +_rmShift src/Dodge/Data/GenWorld.hs 142;" f +_rmStartWires src/Dodge/Data/GenWorld.hs 145;" f +_rmType src/Dodge/Data/GenWorld.hs 151;" f +_rmViewpoints src/Dodge/Data/GenWorld.hs 143;" f _rmWidth src/Dodge/Data/Room.hs 38;" f _rpDir src/Dodge/Data/Room.hs 17;" f _rpFlags src/Dodge/Data/Room.hs 18;" f @@ -2523,7 +2523,7 @@ addCrGibs src/Dodge/Prop/Gib.hs 17;" f addDepth src/Picture/Base.hs 133;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" f -addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 49;" f +addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 61;" 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 @@ -2538,7 +2538,7 @@ addGirderNS' src/Dodge/Room/Modify/Girder.hs 55;" f addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f -addPane src/Dodge/Placement/PlaceSpot.hs 183;" f +addPane src/Dodge/Placement/PlaceSpot.hs 185;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 134;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2560,12 +2560,12 @@ aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 181;" f airlock src/Dodge/Room/Airlock.hs 23;" f airlock0 src/Dodge/Room/Airlock.hs 67;" f -airlock90 src/Dodge/Room/Airlock.hs 165;" f -airlockCrystal src/Dodge/Room/Airlock.hs 204;" f -airlockDoor src/Dodge/Room/Airlock.hs 93;" f -airlockDoubleDoor src/Dodge/Room/Airlock.hs 96;" f -airlockSimple src/Dodge/Room/Airlock.hs 108;" f -airlockZ src/Dodge/Room/Airlock.hs 133;" f +airlock90 src/Dodge/Room/Airlock.hs 179;" f +airlockCrystal src/Dodge/Room/Airlock.hs 221;" f +airlockDoor src/Dodge/Room/Airlock.hs 94;" f +airlockDoubleDoor src/Dodge/Room/Airlock.hs 97;" f +airlockSimple src/Dodge/Room/Airlock.hs 109;" f +airlockZ src/Dodge/Room/Airlock.hs 141;" f allVisibleWalls src/Dodge/Base/Collide.hs 225;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f @@ -2763,7 +2763,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 17;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f -cChasm src/Dodge/Room/Tutorial.hs 114;" f +cChasm src/Dodge/Room/Tutorial.hs 115;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2798,7 +2798,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 181;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 182;" f chasmTest src/Dodge/Creature/Update.hs 132;" f chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f @@ -2904,6 +2904,7 @@ combineTree src/Dodge/Tree/Compose.hs 67;" f commandColor src/Dodge/Terminal.hs 114;" f commonPrefix src/Dodge/Debug/Terminal.hs 149;" f comp src/Quaternion.hs 61;" f +compP2A src/Dodge/ShiftPoint.hs 10;" f compactDraw src/Dodge/LevelGen.hs 94;" f compactDraw' src/Dodge/LevelGen.hs 105;" f compactDrawTree src/Dodge/LevelGen.hs 88;" f @@ -3220,7 +3221,7 @@ doDebugTestF12 src/Dodge/Update/Input/DebugTest.hs 84;" f doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f -doDrWdWd src/Dodge/DrWdWd.hs 17;" f +doDrWdWd src/Dodge/DrWdWd.hs 19;" f doDrag src/Dodge/Update/Input/InGame.hs 127;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f @@ -3263,9 +3264,9 @@ doWorldEvents src/Dodge/Update.hs 428;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 14;" f doorBetween src/Dodge/Placement/Instance/Door.hs 39;" f -doorLerp src/Dodge/DrWdWd.hs 56;" f -doorMechanism src/Dodge/DrWdWd.hs 26;" f -doorMechanismStepwise src/Dodge/DrWdWd.hs 91;" f +doorLerp src/Dodge/DrWdWd.hs 58;" f +doorMechanism src/Dodge/DrWdWd.hs 28;" f +doorMechanismStepwise src/Dodge/DrWdWd.hs 103;" f dotV src/Geometry/Vector.hs 76;" f dotV3 src/Geometry/Vector3D.hs 119;" f doubleCorridorBarrels src/Dodge/Room/Room.hs 276;" f @@ -3551,7 +3552,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f -foldMTRS src/Dodge/Room/Tutorial.hs 59;" f +foldMTRS src/Dodge/Room/Tutorial.hs 60;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3612,8 +3613,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 330;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 317;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 331;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 318;" f getDebugMouseOver src/Dodge/Update.hs 376;" f getDistortions src/Dodge/Render.hs 435;" f getEdgesCrossing src/Dodge/Path.hs 43;" f @@ -3630,7 +3631,7 @@ getNodePos src/Dodge/Path.hs 40;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 313;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 314;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3827,7 +3828,7 @@ invRootMap src/Dodge/Item/Grammar.hs 226;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 180;" f invSetSelectionPos src/Dodge/Inventory.hs 188;" f -invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f +invShiftPointBy src/Dodge/ShiftPoint.hs 13;" f invSize src/Dodge/Inventory/CheckSlots.hs 33;" f inventoryX src/Dodge/Creature.hs 113;" f inverseSelNumPos src/Dodge/SelectionSections.hs 193;" f @@ -3944,7 +3945,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f -lChasm src/Dodge/Room/Tutorial.hs 123;" f +lChasm src/Dodge/Room/Tutorial.hs 124;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 90;" f @@ -4194,7 +4195,7 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 151;" f -midChasm src/Dodge/Room/Tutorial.hs 144;" f +midChasm src/Dodge/Room/Tutorial.hs 145;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4256,17 +4257,17 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 678;" f muzzlePos src/Dodge/HeldUse.hs 769;" f muzzleRandPos src/Dodge/HeldUse.hs 778;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 191;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 194;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 201;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 193;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 196;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 203;" f mvGust src/Dodge/Update.hs 784;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 273;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 275;" f mvP src/Dodge/Wall/Move.hs 54;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 188;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 190;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f @@ -4402,25 +4403,25 @@ pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 16;" f -plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 18;" f +plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 20;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 48;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 204;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 248;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f +plMachine' src/Dodge/Placement/PlaceSpot.hs 250;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f -plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 75;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 217;" f -placeChasm src/Dodge/Placement/PlaceSpot.hs 159;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 262;" f +plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 87;" f +plTurret src/Dodge/Placement/PlaceSpot.hs 219;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 264;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 42;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 104;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 67;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 177;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 179;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4490,8 +4491,8 @@ pokeWall src/Shader/Poke.hs 78;" f pokeWallsWindows src/Shader/Poke.hs 50;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f -polyChasm src/Dodge/Room/Tutorial.hs 165;" f -polyChasmC src/Dodge/Room/Tutorial.hs 174;" f +polyChasm src/Dodge/Room/Tutorial.hs 166;" f +polyChasmC src/Dodge/Room/Tutorial.hs 175;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4652,7 +4653,7 @@ rectVV src/Geometry/Polygon.hs 40;" f rectWH src/Geometry/Polygon.hs 19;" f rectXH src/Geometry/Polygon.hs 34;" f rectXY src/Geometry/Polygon.hs 37;" f -rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f +rectanglePairs src/Dodge/LevelGen/DoorPane.hs 5;" f red src/Color.hs 14;" f reduceLocDT src/Dodge/DoubleTree.hs 398;" f reduceLocLDT src/Dodge/DoubleTree.hs 393;" f @@ -4679,7 +4680,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 230;" f +removeLights src/Dodge/Room/Tutorial.hs 231;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 58;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4858,7 +4859,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 339;" f +sensorTut src/Dodge/Room/Tutorial.hs 340;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f @@ -4885,7 +4886,7 @@ setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f -setRoomInt src/Dodge/Room/Tutorial.hs 66;" f +setRoomInt src/Dodge/Room/Tutorial.hs 67;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -4895,7 +4896,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f setToggle src/Dodge/Prop/Update.hs 44;" f -setTreeInts src/Dodge/Room/Tutorial.hs 73;" f +setTreeInts src/Dodge/Room/Tutorial.hs 74;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 440;" f @@ -4947,8 +4948,8 @@ shiftLinkBy src/Dodge/Room/Link.hs 87;" f shiftPSBy src/Dodge/Placement/Shift.hs 12;" f shiftPathBy src/Dodge/Room/Link.hs 92;" f shiftPlacement src/Dodge/Placement/Shift.hs 21;" f -shiftPoint3By src/Dodge/ShiftPoint.hs 11;" f -shiftPointBy src/Dodge/ShiftPoint.hs 5;" f +shiftPoint3By src/Dodge/ShiftPoint.hs 16;" f +shiftPointBy src/Dodge/ShiftPoint.hs 7;" f shiftPosDirBy src/Dodge/Room/Link.hs 84;" f shiftRelativeToPS src/Dodge/Placement/Shift.hs 18;" f shiftRoomBy src/Dodge/Room/Link.hs 37;" f @@ -5334,12 +5335,12 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 37;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 41;" f -tutDrop src/Dodge/Room/Tutorial.hs 78;" f -tutHub src/Dodge/Room/Tutorial.hs 237;" f -tutLight src/Dodge/Room/Tutorial.hs 202;" f -tutRezBox src/Dodge/Room/Tutorial.hs 350;" f +tutDrop src/Dodge/Room/Tutorial.hs 79;" f +tutHub src/Dodge/Room/Tutorial.hs 238;" f +tutLight src/Dodge/Room/Tutorial.hs 203;" f +tutRezBox src/Dodge/Room/Tutorial.hs 351;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 374;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 375;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 81;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f @@ -5399,8 +5400,8 @@ updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortions src/Dodge/Update.hs 558;" f updateDoor src/Dodge/Update.hs 310;" f -updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 67;" f -updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 64;" f +updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 79;" f +updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 76;" f updateDust src/Dodge/Update.hs 822;" f updateDusts src/Dodge/Update.hs 672;" f updateEdge src/Dodge/Path.hs 49;" f @@ -5652,7 +5653,7 @@ yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 132;" f +zChasm src/Dodge/Room/Tutorial.hs 133;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f