diff --git a/src/Dodge/Machine/Update.hs b/src/Dodge/Machine/Update.hs index 833fe23a1..f8b2d7046 100644 --- a/src/Dodge/Machine/Update.hs +++ b/src/Dodge/Machine/Update.hs @@ -52,6 +52,7 @@ terminalScreenGlow mc w = fromMaybe w $ do . lights .:~ LSParam (_mcPos mc `v2z` 20) 30 (V3 x y z) +-- aiming sweeps, probably don't want this for non-laser turrets updateTurret :: Float -> Machine -> World -> World updateTurret rotSpeed mc w = w @@ -73,7 +74,9 @@ updateTurret rotSpeed mc w = mcid = _mcID mc ypos = you w ^. crPos . _xy aimpos = ypos + offset * vNormal (normalize (ypos - mcpos)) - offset = 10 * sin (fromIntegral (w ^. cWorld . cClock) / (pi * 10)) + -- note this is slightly less than your default radius, if changing check + -- with front shield + offset = 9 * sin (fromIntegral (w ^. cWorld . cClock) / (pi * 10)) mcpos = _mcPos mc seesYou = hasLOSIndirect mcpos ypos w mcdir = _mcDir mc diff --git a/src/Dodge/Placement/Instance/Turret.hs b/src/Dodge/Placement/Instance/Turret.hs index b26d1afa4..ede96f860 100644 --- a/src/Dodge/Placement/Instance/Turret.hs +++ b/src/Dodge/Placement/Instance/Turret.hs @@ -28,7 +28,7 @@ putLasTurret rotSpeed = ( defaultMachine -- & mcColor .~ blue & mcType .~ (lasTurret & mctTurret . tuTurnSpeed .~ rotSpeed) - & mcHP .~ 50000 + & mcHP .~ 1500 ) (Just laser) diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index 05bc63384..481ae707a 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -8,7 +8,8 @@ module Dodge.Room.LasTurret ( keyCardRoomRunPast, lasSensorTurretTest, healthTest, - lasCenRunClose, + lasRunYinYangCenter, + lasRunYinYang, lasCenRunClose', lasCenRunClose1, lasCenRunCloseLongCor, @@ -147,8 +148,56 @@ lasCenSensEdge n = do , treePost [door, cleatLabel 0 corridor] ] -lasCenRunClose :: (RandomGen g) => State g (MetaTree Room String) -lasCenRunClose = do +lasRunYinYang :: (RandomGen g) => State g (MetaTree Room String) +lasRunYinYang = do + npoly <- takeOne [6,8,10,12] + thelight <- mntLightLnkCond $ rprBool $ const . isInLnk + thelight1 <- mntLightLnkCond $ rprBool $ const . isOutLnk + thelight2 <- mntLightLnkCond $ rprBool $ const . (\rp -> PolyEdge ((npoly + 1) `div` 4) `S.member` + (fold $ rp ^? rpType . rplsType)) + thelight3 <- mntLightLnkCond $ rprBool $ const . (\rp -> PolyEdge (3*(npoly + 1) `div` 4) `S.member` + (fold $ rp ^? rpType . rplsType)) + r <- shuffleLinks =<< + (roomNgon npoly 250 + <&> rmPmnts + .~ + [angwall a | a <- [0,pi/8..pi-pi/9]] <> + [bngwall a | a <- [0,pi/8..pi-pi/9]] <> + [ awall 0 (rectWH 15 5) + , putLasTurret 0.02 & plSpot . psPos .~ negate offxy + , putLasTurret 0.02 & plSpot . psPos .~ offxy +-- , awall (V2 0 50) (square 10) + , thelight + , thelight1 + , thelight2 + , thelight3 + ] + <&> rmPath %~ (addNodesCrossingCirc 0 30 + . flip (foldr ($)) [apath a | a <- [0,pi/8..pi-2*pi/9]] + . flip (foldr ($)) [bpath a | a <- [0,pi/8..pi-2*pi/9]] + ) + <&> rmLinks %~ setInLinksByType (PolyEdge 0) + <&> rmLinks %~ setOutLinksByType (PolyEdge (npoly `div` 2)) + ) + rToOnward "lasCenRunClose" $ return $ cleatOnward r + where + awall x v = heightWallPS (PS x 0) 30 v + --angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a/2)) $ rectWH 5 (25 - a*10/pi )) + rf = 0.8 + offxy = V2 0 (-100) + angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a*rf)) $ rectWH 5 (23 - a*13/pi )) + apath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100),x - f (V2 0 100))) (V2 0 100 + rotateV a (V2 0 100)) + where + a = a' + pi/16 + f = rotateV (pi/4 + a *0.8) + bngwall a = awall (V2 0 (-100) + rotateV a (V2 0 (-100))) (fmap (rotateV (pi/4 + a*rf)) $ rectWH 5 (23 - a*13/pi )) + bpath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100),x - f (V2 0 100))) (V2 0 (-100) + rotateV a (V2 0 (-100))) + where + a = a' + pi/16 + f = rotateV (pi/4 + a *0.8) + +lasRunYinYangCenter :: (RandomGen g) => State g (MetaTree Room String) +lasRunYinYangCenter = do npoly <- takeOne [6,8,10,12] thelight <- mntLightLnkCond $ rprBool $ const . isInLnk thelight1 <- mntLightLnkCond $ rprBool $ const . isOutLnk diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index b2b228a26..169ecd1e2 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -55,7 +55,7 @@ tutAnoTree = do -- , return . tToBTree "door" $ treePost [corridor, cleatOnward door] , corDoor -- , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor) - , lasCenRunClose' + , lasRunYinYang -- , passthroughLockKeyLists lockRoomKeyItems itemRooms , tToBTree "door" . return <$> return (cleatOnward door) , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor) diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 861a84a51..644108b84 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -32,7 +32,7 @@ import Data.Foldable import Data.Monoid testStringInit :: Universe -> [String] -testStringInit _ = [] +testStringInit u = fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcHP --testStringInit u = map show (u ^.. uvWorld . cWorld . lWorld . machines . traverse . mcDir) --testStringInit u = map show -- (u ^.. uvWorld . cWorld . lWorld . machines . traverse .mcType . _McDistributer) diff --git a/tags b/tags index 1d50d4c2f..8e971ac71 100644 --- a/tags +++ b/tags @@ -2585,8 +2585,8 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 128;" 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 116;" f -analyserByNthLink src/Dodge/Room/LasTurret.hs 100;" f +analyserByDoor src/Dodge/Room/LasTurret.hs 117;" f +analyserByNthLink src/Dodge/Room/LasTurret.hs 101;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 158;" f angleVV src/Geometry/Vector.hs 58;" f @@ -2785,7 +2785,7 @@ cardinalBetweenAdj src/Dodge/Base/CardinalPoint.hs 28;" f cardinalVectors src/Dodge/FloorItem.hs 24;" f cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f ceilingTo src/Geometry/Zone.hs 15;" f -cenLasTur src/Dodge/Room/LasTurret.hs 40;" f +cenLasTur src/Dodge/Room/LasTurret.hs 41;" f centerText src/Picture/Base.hs 176;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f centerVaultRoom src/Dodge/Room/Procedural.hs 269;" f @@ -3065,7 +3065,7 @@ damageMetal src/Dodge/Material/Damage.hs 68;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 13;" f damageStone src/Dodge/Material/Damage.hs 36;" f damageThingHit src/Dodge/Bullet.hs 180;" f -damageTypeThreshold src/Dodge/Machine/Update.hs 140;" f +damageTypeThreshold src/Dodge/Machine/Update.hs 127;" f damageTypeThreshold' src/Dodge/Wall/Damage.hs 84;" f damageWall src/Dodge/Wall/Damage.hs 31;" f damsToExpBarrel src/Dodge/Barreloid.hs 50;" f @@ -3626,7 +3626,7 @@ getItemValue src/Dodge/Inventory/SelectionList.hs 144;" f getLaserColor src/Dodge/HeldUse.hs 710;" f getLaserDamage src/Dodge/HeldUse.hs 707;" f getLaserPhaseV src/Dodge/HeldUse.hs 704;" f -getLinksOfType src/Dodge/RoomLink.hs 41;" f +getLinksOfType src/Dodge/RoomLink.hs 40;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMenuMouseContext src/Dodge/Update.hs 436;" f getNodePos src/Dodge/Path.hs 34;" f @@ -3718,8 +3718,8 @@ headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f headMap src/Dodge/DoubleTree.hs 249;" f headPQ src/Dodge/Creature/HandPos.hs 116;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f -healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 97;" f -healthTest src/Dodge/Room/LasTurret.hs 119;" f +healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 98;" f +healthTest src/Dodge/Room/LasTurret.hs 120;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimZoom src/Dodge/Update/Camera.hs 157;" f @@ -3757,7 +3757,7 @@ iShape src/Dodge/Placement/Instance/LightSource.hs 51;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f ildtPropagate src/Dodge/DoubleTree.hs 111;" f -inLink src/Dodge/RoomLink.hs 130;" f +inLink src/Dodge/RoomLink.hs 128;" f inSegArea src/Geometry/Intersect.hs 317;" f inSimplePoly src/Geometry/Polygon.hs 98;" f inTextInputFocus src/Dodge/InputFocus.hs 8;" f @@ -3850,7 +3850,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 720;" f isAnimate src/Dodge/Creature/Test.hs 134;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f -isCornerLink src/Dodge/RoomLink.hs 67;" f +isCornerLink src/Dodge/RoomLink.hs 66;" f isFlyable src/Dodge/WorldEvent/ThingsHit.hs 176;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 198;" f isInLnk src/Dodge/PlacementSpot.hs 163;" f @@ -3858,7 +3858,7 @@ isJust' src/MaybeHelp.hs 27;" f isLHS src/Geometry/LHS.hs 12;" f isLeftOf src/Geometry.hs 199;" f isLeftOfA src/Geometry.hs 193;" f -isMidEdgeLink src/Dodge/RoomLink.hs 56;" f +isMidEdgeLink src/Dodge/RoomLink.hs 55;" f isNHS src/Geometry/Intersect.hs 53;" f isNothing' src/MaybeHelp.hs 31;" f isOnSeg src/Geometry.hs 237;" f @@ -3942,8 +3942,8 @@ justify src/Justify.hs 9;" f k src/ShortShow.hs 48;" f k' src/ShortShow.hs 48;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f -keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 94;" f -keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 82;" f +keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 95;" f +keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 83;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 439;" f keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f @@ -3955,16 +3955,17 @@ lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 54;" f lamp src/Dodge/Creature/Lamp.hs 18;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 116;" f -lasCenRunClose src/Dodge/Room/LasTurret.hs 150;" f -lasCenRunClose' src/Dodge/Room/LasTurret.hs 195;" f -lasCenRunClose1 src/Dodge/Room/LasTurret.hs 271;" f -lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 241;" f -lasCenSensEdge src/Dodge/Room/LasTurret.hs 138;" f +lasCenRunClose' src/Dodge/Room/LasTurret.hs 196;" f +lasCenRunClose1 src/Dodge/Room/LasTurret.hs 273;" f +lasCenRunClose2 src/Dodge/Room/LasTurret.hs 325;" f +lasCenRunCloseLongCor src/Dodge/Room/LasTurret.hs 242;" f +lasCenSensEdge src/Dodge/Room/LasTurret.hs 139;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 414;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 731;" f -lasSensorTurretTest src/Dodge/Room/LasTurret.hs 131;" f -lasTunnel src/Dodge/Room/LasTurret.hs 301;" f -lasTunnelRunPast src/Dodge/Room/LasTurret.hs 342;" f +lasRunYinYangCenter src/Dodge/Room/LasTurret.hs 151;" f +lasSensorTurretTest src/Dodge/Room/LasTurret.hs 132;" f +lasTunnel src/Dodge/Room/LasTurret.hs 355;" f +lasTunnelRunPast src/Dodge/Room/LasTurret.hs 396;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 35;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f laserSpark src/Dodge/Material/Damage.hs 33;" f @@ -3999,8 +4000,8 @@ legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f liShape src/Dodge/Placement/Instance/LightSource.hs 79;" f light src/Color.hs 131;" f -lightSensByDoor src/Dodge/Room/LasTurret.hs 67;" f -lightSensInsideDoor src/Dodge/Room/LasTurret.hs 55;" f +lightSensByDoor src/Dodge/Room/LasTurret.hs 68;" f +lightSensInsideDoor src/Dodge/Room/LasTurret.hs 56;" f lightSensor src/Dodge/Placement/Instance/Sensor.hs 26;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f lightx4 src/Color.hs 155;" f @@ -4150,25 +4151,25 @@ maybeOpenConsole src/Dodge/Update.hs 134;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 118;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f -mcBackgroundSound src/Dodge/Machine/Update.hs 164;" f +mcBackgroundSound src/Dodge/Machine/Update.hs 151;" f mcColor src/Dodge/Machine/Draw.hs 83;" f -mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 128;" f -mcDamSensorUpdate src/Dodge/Machine/Update.hs 175;" f +mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 115;" f +mcDamSensorUpdate src/Dodge/Machine/Update.hs 162;" f mcDamSensorUpdate' src/Dodge/Wall/Damage.hs 57;" f mcKillBut src/Dodge/Machine/Destroy.hs 38;" f mcKillTerm src/Dodge/Machine/Destroy.hs 30;" f -mcNoItemsTest src/Dodge/Machine/Update.hs 183;" f -mcPlaySound src/Dodge/Machine/Update.hs 148;" f -mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 134;" f -mcProxSensorUpdate src/Dodge/Machine/Update.hs 178;" f -mcProxTest src/Dodge/Machine/Update.hs 259;" f -mcProximitySensorUpdate src/Dodge/Machine/Update.hs 220;" f +mcNoItemsTest src/Dodge/Machine/Update.hs 170;" f +mcPlaySound src/Dodge/Machine/Update.hs 135;" f +mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 121;" f +mcProxSensorUpdate src/Dodge/Machine/Update.hs 165;" f +mcProxTest src/Dodge/Machine/Update.hs 246;" f +mcProximitySensorUpdate src/Dodge/Machine/Update.hs 207;" f mcSPic src/Dodge/Render/ShapePicture.hs 163;" f mcShootAuto src/Dodge/HeldUse.hs 1165;" f mcShootLaser src/Dodge/HeldUse.hs 1157;" f mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f mcUseHeld src/Dodge/HeldUse.hs 1081;" f -mcUseItem src/Dodge/Machine/Update.hs 119;" f +mcUseItem src/Dodge/Machine/Update.hs 106;" f megaBattery src/Dodge/Item/Ammo.hs 53;" f megaShellMag src/Dodge/Item/Ammo.hs 43;" f megaTinMag src/Dodge/Item/Ammo.hs 20;" f @@ -4253,12 +4254,12 @@ moveZoomCamera src/Dodge/Update/Camera.hs 93;" f mtTopLabels src/Dodge/Tree/Compose.hs 51;" f mtUnderLabels src/Dodge/Tree/Compose.hs 54;" f muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f -muin src/Dodge/RoomLink.hs 149;" f +muin src/Dodge/RoomLink.hs 147;" f multGunCrit src/Dodge/Creature.hs 75;" f multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f -muout src/Dodge/RoomLink.hs 146;" f +muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 681;" f muzzlePos src/Dodge/HeldUse.hs 767;" f muzzleRandPos src/Dodge/HeldUse.hs 776;" f @@ -4340,15 +4341,15 @@ orientAttachment src/Dodge/Item/Orientation.hs 80;" f orientByParentChSF src/Dodge/Item/Orientation.hs 35;" f orientChild src/Dodge/Item/Orientation.hs 19;" f orthogonalPointOnSeg src/Geometry/Intersect.hs 310;" f -outLink src/Dodge/RoomLink.hs 122;" f +outLink src/Dodge/RoomLink.hs 120;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f outwardIntegers src/Dodge/Base.hs 181;" f overCol src/Picture/Base.hs 303;" f overColObj src/Shape.hs 270;" f overColSH src/Shape.hs 238;" f overDebugEvent src/Dodge/Debug.hs 38;" f -overLnkPosDir src/Dodge/RoomLink.hs 117;" f -overLnkType src/Dodge/RoomLink.hs 107;" f +overLnkPosDir src/Dodge/RoomLink.hs 115;" f +overLnkType src/Dodge/RoomLink.hs 106;" f overPos src/Picture/Base.hs 298;" f overPosObj src/Shape.hs 274;" f overPosSH src/Shape.hs 258;" f @@ -4692,9 +4693,9 @@ resizeFBOTO3 src/Framebuffer/Update.hs 127;" f resizeFBOTO3' src/Framebuffer/Update.hs 154;" f resizeRBO src/Framebuffer/Update.hs 101;" f respawn src/Dodge/SpawnAt.hs 11;" f -restrictInLinks src/Dodge/RoomLink.hs 44;" f -restrictLinkType src/Dodge/RoomLink.hs 34;" f -restrictOutLinks src/Dodge/RoomLink.hs 47;" f +restrictInLinks src/Dodge/RoomLink.hs 43;" f +restrictLinkType src/Dodge/RoomLink.hs 33;" f +restrictOutLinks src/Dodge/RoomLink.hs 46;" f restrictRMInLinksPD src/Dodge/Room/Link.hs 25;" f resumeSound src/Dodge/SoundLogic.hs 48;" f retreatPointForFrom src/Dodge/Creature/Impulse/Flee.hs 9;" f @@ -4721,12 +4722,12 @@ rightLegPQ src/Dodge/Creature/HandPos.hs 101;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rightWristPQ src/Dodge/Creature/HandPos.hs 58;" f -rlPosDir src/Dodge/RoomLink.hs 114;" f +rlPosDir src/Dodge/RoomLink.hs 112;" f rlauncherPic src/Dodge/Item/Draw/SPic.hs 399;" f -rmInLinks src/Dodge/RoomLink.hs 155;" f +rmInLinks src/Dodge/RoomLink.hs 153;" f rmInvItem src/Dodge/Inventory.hs 74;" f -rmLinksOfType src/Dodge/RoomLink.hs 152;" f -rmOutLinks src/Dodge/RoomLink.hs 155;" f +rmLinksOfType src/Dodge/RoomLink.hs 150;" f +rmOutLinks src/Dodge/RoomLink.hs 153;" f roomC src/Dodge/Room/Room.hs 50;" f roomCCrits src/Dodge/Room/Room.hs 285;" f roomCenterPillar src/Dodge/Room/Room.hs 136;" f @@ -4848,14 +4849,14 @@ selectedItemScroll src/Dodge/Update/Scroll.hs 47;" f semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 785;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f -senseDamage src/Dodge/Machine/Update.hs 275;" f +senseDamage src/Dodge/Machine/Update.hs 262;" f senseDamage' src/Dodge/Wall/Damage.hs 60;" f -sensorReqToString src/Dodge/Machine/Update.hs 253;" f +sensorReqToString src/Dodge/Machine/Update.hs 240;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 99;" f sensorTut src/Dodge/Room/Tutorial.hs 472;" f -sensorTypeDamages src/Dodge/Machine/Update.hs 299;" f +sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 91;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f @@ -4867,19 +4868,19 @@ setClip src/Dodge/Debug.hs 202;" f setDepth src/Picture/Base.hs 120;" f setDirPS src/Dodge/PlacementSpot.hs 51;" f setFallback src/Dodge/PlacementSpot.hs 127;" f -setInLinks src/Dodge/RoomLink.hs 53;" f -setInLinksByType src/Dodge/RoomLink.hs 74;" f -setInLinksPD src/Dodge/RoomLink.hs 94;" f +setInLinks src/Dodge/RoomLink.hs 52;" f +setInLinksByType src/Dodge/RoomLink.hs 73;" f +setInLinksPD src/Dodge/RoomLink.hs 93;" f setInvPosFromSS src/Dodge/Inventory/Location.hs 92;" f setLayer src/Picture/Base.hs 131;" f -setLinkType src/Dodge/RoomLink.hs 80;" f -setLinkTypePD src/Dodge/RoomLink.hs 87;" f +setLinkType src/Dodge/RoomLink.hs 79;" f +setLinkTypePD src/Dodge/RoomLink.hs 86;" f setMusicVolume src/Sound.hs 164;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f setOldPos src/Dodge/Update.hs 538;" f -setOutLinks src/Dodge/RoomLink.hs 50;" f -setOutLinksByType src/Dodge/RoomLink.hs 77;" f -setOutLinksPD src/Dodge/RoomLink.hs 97;" f +setOutLinks src/Dodge/RoomLink.hs 49;" f +setOutLinksByType src/Dodge/RoomLink.hs 76;" f +setOutLinksPD src/Dodge/RoomLink.hs 96;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f setRoomInt src/Dodge/Room/Tutorial.hs 103;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 342;" f @@ -5133,7 +5134,7 @@ subMap src/TreeHelp.hs 119;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f succB src/Dodge/Debug.hs 122;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f -swapInOutLinks src/Dodge/RoomLink.hs 100;" f +swapInOutLinks src/Dodge/RoomLink.hs 99;" f swapIndices src/ListHelp.hs 50;" f swapInvItems src/Dodge/Inventory/Swap.hs 22;" f swapItemWith src/Dodge/Inventory.hs 164;" f @@ -5239,7 +5240,7 @@ tmDistributeAmmo src/Dodge/WorldEffect.hs 120;" f tmDistributeLines src/Dodge/Room/Room.hs 465;" f tmMachine src/Dodge/Placement/Instance/Terminal.hs 54;" f toBinary src/Dodge/Inventory/SelectionList.hs 138;" f -toBothLnk src/Dodge/RoomLink.hs 138;" f +toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 158;" f toFloatVAs src/Shader/Compile.hs 66;" f @@ -5484,7 +5485,7 @@ updateTeslaArc src/Dodge/Update.hs 618;" f updateTeslaArcs src/Dodge/Update.hs 615;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f updateTractorBeams src/Dodge/Update.hs 687;" f -updateTurret src/Dodge/Machine/Update.hs 55;" f +updateTurret src/Dodge/Machine/Update.hs 56;" f updateUniverse src/Dodge/Update.hs 82;" f updateUniverseFirst src/Dodge/Update.hs 93;" f updateUniverseLast src/Dodge/Update.hs 144;" f