diff --git a/log/aGeneratedRoomLayout b/log/aGeneratedRoomLayout index 7e5e3c74f..9c0698f8d 100644 --- a/log/aGeneratedRoomLayout +++ b/log/aGeneratedRoomLayout @@ -1,27 +1,13 @@ Seed: 7114951007332849727 Room layout (compact): 0,1,2,3 -| -+- 4,5,6,7 -| -8 Layout with room names: -tutRezBox-0 +Corridor-0 | -autoDoor-1 +6gon-1 | -Corridor-2 +defaultRoom-2 | -doorToggle-6gon-3 -| -+- triggerDoorRoom-4 -| | -| 6gon-5 -| | -| triggerDoorRoom-6 -| | -| 6gon-7 -| -triggerDoorRoom-8 +autoRect-3 diff --git a/log/attemptedSeeds b/log/attemptedSeeds index 0b3308ef0..d86853147 100644 --- a/log/attemptedSeeds +++ b/log/attemptedSeeds @@ -1,4 +1,4 @@ Generating level with seed 7114951007332849727 After 1 attempt(s), Successful generation of level with seed 7114951007332849727 -9 rooms in total +4 rooms in total diff --git a/log/treeCluster b/log/treeCluster index ae43b8dd4..a171134c6 100644 --- a/log/treeCluster +++ b/log/treeCluster @@ -1,37 +1,55 @@ Seed: 7114951007332849727 -0:TutStartRez +0:teststart | -1:corDoor +1:TutDrop | -2:DoorTest +2:TutStartRez | -3:PickupTest +3:corDoor | -4:WeaponTestTest - -0:0:TutStartRez - -0:0:0:tutRezBox - -1:0:corDoor - -1:0:0:autoDoor +4:DoorTest | -1:0:1:Corridor +5:TutDrop -2:0:DoorTest +0:0:teststart -2:0:0:doorToggle-6gon +0:0:0:Corridor + +1:0:TutDrop + +1:0:0:6gon | -+- 2:0:1:triggerDoorRoom +1:0:1:defaultRoom | -2:0:2:triggerDoorRoom +1:0:2:autoRect -3:0:PickupTest +2:0:TutStartRez -3:0:0:6gon +2:0:0:tutRezBox + +3:0:corDoor + +3:0:0:autoDoor | -3:0:1:triggerDoorRoom +3:0:1:Corridor -4:0:6gon +4:0:DoorTest + +4:0:0:doorToggle-6gon +| ++- 4:0:1:triggerDoorRoom +| | +| 4:0:2:autoRect +| ++- 4:0:3:triggerDoorRoom +| | +| 4:0:4:autoRect +| +4:0:5:Corridor + +5:0:6gon +| +5:1:defaultRoom +| +5:2:autoRect diff --git a/saveSlot/LevelStart0 b/saveSlot/LevelStart0 index cc2eac7f7..ee0c43a37 100644 --- a/saveSlot/LevelStart0 +++ b/saveSlot/LevelStart0 @@ -1 +1 @@ -{"_lWorld":{"_creatures":[[0,{"_crPos":[20.0,20.0],"_crOldPos":[20.0,0.0],"_crZ":0.0,"_crZVel":0.0,"_crDir":1.5707964,"_crMvDir":1.5707964,"_crMvAim":1.5707964,"_crType":{"tag":"Avatar","_avatarPulse":{"_pulseRate":55,"_pulseProgress":0},"_avatarMaterial":"Flesh","_avStrength":50,"_avDexterity":50,"_avIntelligence":50,"_avMoveSpeed":3.0},"_crID":0,"_crHP":10000,"_crInv":[],"_crManipulation":{"tag":"Manipulator","_manObject":{"tag":"SelNothing"}},"_crEquipment":[],"_crDamage":[],"_crPain":0,"_crStance":{"_carriage":{"tag":"Walking","_strideAmount":0.0,"_currentFoot":"LeftForward"},"_posture":"AtEase","_strideLength":40.0},"_crActionPlan":{"tag":"ActionPlan","_apImpulse":[],"_apAction":[],"_apStrategy":{"tag":"StrategyActions","contents":[{"tag":"WatchAndWait"},[{"tag":"StartSentinelPost"}]]},"_apGoal":[{"tag":"LiveLongAndProsper"}]},"_crPerception":{"_cpVigilance":"Lethargic","_cpAttention":{"tag":"AttentiveTo","_getAttentiveTo":[]},"_cpAwareness":[],"_cpVision":{"_viFOV":{"tag":"FloatFOV","contents":0.8},"_viDist":{"tag":"FloatDistLinearNearFar","contents":[500.0,10.0,1.0]}},"_cpAudition":{"_auDist":{"tag":"FloatID"}}},"_crMemory":{"_soundsToInvestigate":[],"_nodesSearched":[]},"_crVocalization":{"tag":"Mute"},"_crFaction":{"tag":"PlayerFaction"},"_crGroup":{"tag":"LoneWolf"},"_crIntention":{"_targetCr":null,"_mvToPoint":null,"_viewPoint":null},"_crName":"DEFAULTCRNAME","_crDeathTimer":0}]],"_creatureGroups":[],"_itemLocations":[[0,{"tag":"OnFloor","_ilFlID":{"_unNInt":1}}],[1,{"tag":"OnFloor","_ilFlID":{"_unNInt":0}}]],"_clouds":[],"_dusts":[],"_gusts":[],"_props":[],"_debris":[],"_projectiles":[],"_bullets":[],"_radarSweeps":[],"_energyBalls":[],"_flames":[],"_sparks":[],"_radarBlips":[],"_flares":[],"_teslaArcs":[],"_arcNode":[],"_shockwaves":[],"_lasers":[],"_pulseLasers":[],"_pulseBalls":[],"_linearShockwaves":[],"_tractorBeams":[],"_walls":[[0,{"_wlLine":[[334.65588,134.99991],[276.9209,234.99995]],"_wlID":0,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[1,{"_wlLine":[[276.92084,34.999954],[334.65588,134.99991]],"_wlID":1,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[2,{"_wlLine":[[161.45078,35.000015],[276.92084,34.999954]],"_wlID":2,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[3,{"_wlLine":[[103.71578,135.0],[161.45078,35.000015]],"_wlID":3,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[4,{"_wlLine":[[122.58331,167.6795],[103.71578,135.0]],"_wlID":4,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[5,{"_wlLine":[[161.45084,234.99998],[142.58333,202.32051]],"_wlID":5,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[6,{"_wlLine":[[199.18582,234.99997],[161.45084,234.99998]],"_wlID":6,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[7,{"_wlLine":[[276.9209,234.99995],[239.18582,234.99997]],"_wlID":7,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[8,{"_wlLine":[[276.92084,264.99997],[334.65588,365.0]],"_wlID":8,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[9,{"_wlLine":[[239.18582,264.99997],[276.92084,264.99997]],"_wlID":9,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[10,{"_wlLine":[[161.45082,264.99994],[199.18582,264.99994]],"_wlID":10,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[11,{"_wlLine":[[142.58328,297.67947],[161.45082,264.99994]],"_wlID":11,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[12,{"_wlLine":[[103.71578,364.99997],[122.58328,332.3205]],"_wlID":12,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[13,{"_wlLine":[[161.45078,464.99994],[103.71578,364.99997]],"_wlID":13,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[14,{"_wlLine":[[276.92084,464.99997],[161.45078,464.99994]],"_wlID":14,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[15,{"_wlLine":[[334.65588,365.0],[276.92084,464.99997]],"_wlID":15,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[16,{"_wlLine":[[116.60253,217.32053],[135.47003,250.00003]],"_wlID":16,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[17,{"_wlLine":[[77.73503,150.0],[96.60254,182.6795]],"_wlID":17,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[18,{"_wlLine":[[40.0,150.0],[77.73503,150.0]],"_wlID":18,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[19,{"_wlLine":[[-37.73504,150.0],[0.0,150.0]],"_wlID":19,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[20,{"_wlLine":[[-95.47006,249.99997],[-37.73504,150.0]],"_wlID":20,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[21,{"_wlLine":[[-37.735023,350.0],[-95.47006,249.99997]],"_wlID":21,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[22,{"_wlLine":[[77.735,350.0],[-37.735023,350.0]],"_wlID":22,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[23,{"_wlLine":[[96.60253,317.3205],[77.735,350.0]],"_wlID":23,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[24,{"_wlLine":[[135.47003,250.00003],[116.60254,282.67947]],"_wlID":24,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[25,{"_wlLine":[[40.0,60.0],[40.0,80.0]],"_wlID":25,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[26,{"_wlLine":[[40.0,55.0],[40.0,60.0]],"_wlID":26,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[27,{"_wlLine":[[0.0,60.0],[0.0,55.0]],"_wlID":27,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[28,{"_wlLine":[[0.0,80.0],[0.0,60.0]],"_wlID":28,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[29,{"_wlLine":[[0.0,55.0],[0.0,0.0]],"_wlID":29,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[30,{"_wlLine":[[0.0,0.0],[40.0,0.0]],"_wlID":30,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[31,{"_wlLine":[[40.0,0.0],[40.0,55.0]],"_wlID":31,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[32,{"_wlLine":[[0.0,150.0],[0.0,95.0]],"_wlID":32,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[33,{"_wlLine":[[0.0,95.0],[0.0,80.0]],"_wlID":33,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[34,{"_wlLine":[[40.0,80.0],[40.0,95.0]],"_wlID":34,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[35,{"_wlLine":[[40.0,95.0],[40.0,150.0]],"_wlID":35,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[36,{"_wlLine":[[122.58328,332.3205],[96.60253,317.3205]],"_wlID":36,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[37,{"_wlLine":[[116.60254,282.67947],[142.58328,297.67947]],"_wlID":37,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[38,{"_wlLine":[[199.18582,264.99994],[199.18582,234.99997]],"_wlID":38,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[39,{"_wlLine":[[239.18582,234.99997],[239.18582,264.99997]],"_wlID":39,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[40,{"_wlLine":[[142.58333,202.32051],[116.60253,217.32053]],"_wlID":40,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[41,{"_wlLine":[[96.60254,182.6795],[122.58331,167.6795]],"_wlID":41,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[42,{"_wlLine":[[0.0,66.0],[0.0,84.0]],"_wlID":42,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[43,{"_wlLine":[[0.0,84.0],[20.0,84.0]],"_wlID":43,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[44,{"_wlLine":[[20.0,84.0],[20.0,66.0]],"_wlID":44,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[45,{"_wlLine":[[20.0,66.0],[0.0,66.0]],"_wlID":45,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[46,{"_wlLine":[[40.0,84.0],[40.0,66.0]],"_wlID":46,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[47,{"_wlLine":[[40.0,66.0],[20.0,66.0]],"_wlID":47,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[48,{"_wlLine":[[20.0,66.0],[20.0,84.0]],"_wlID":48,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[49,{"_wlLine":[[20.0,84.0],[40.0,84.0]],"_wlID":49,"_wlColor":[0.8333333,0.8333333,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":9},"_wlPathable":true,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[50,{"_wlLine":[[30.0,10.0],[30.0,-10.0]],"_wlID":50,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[51,{"_wlLine":[[30.0,-10.0],[10.0,-10.0]],"_wlID":51,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[52,{"_wlLine":[[10.0,-10.0],[10.0,10.0]],"_wlID":52,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[53,{"_wlLine":[[10.0,10.0],[30.0,10.0]],"_wlID":53,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[54,{"_wlLine":[[179.18582,264.99997],[179.18582,284.99997]],"_wlID":54,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[55,{"_wlLine":[[179.18582,284.99997],[199.18582,284.99997]],"_wlID":55,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[56,{"_wlLine":[[199.18582,284.99997],[199.18582,264.99997]],"_wlID":56,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[57,{"_wlLine":[[199.18582,264.99997],[179.18582,264.99997]],"_wlID":57,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[58,{"_wlLine":[[114.43748,218.57053],[97.11697,228.57053]],"_wlID":58,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[59,{"_wlLine":[[97.11697,228.57053],[107.11697,245.89102]],"_wlID":59,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[60,{"_wlLine":[[107.11697,245.89102],[124.43748,235.89102]],"_wlID":60,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[61,{"_wlLine":[[124.43748,235.89102],[114.43748,218.57053]],"_wlID":61,"_wlColor":[0.8,-0.2,0.8,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[62,{"_wlLine":[[126.60254,265.359],[109.28203,255.35901]],"_wlID":62,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[63,{"_wlLine":[[109.28203,255.35901],[99.28203,272.6795]],"_wlID":63,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[64,{"_wlLine":[[99.28203,272.6795],[116.60254,282.6795]],"_wlID":64,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[65,{"_wlLine":[[116.60254,282.6795],[126.60254,265.359]],"_wlID":65,"_wlColor":[0.0,1.0,0.5,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":true,"_wlBouncy":false,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":false,"_wlStructure":{"tag":"MachinePart","_wsMachine":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[66,{"_wlLine":[[121.7987,214.32053],[137.38716,205.32053]],"_wlID":66,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[67,{"_wlLine":[[137.38716,205.32053],[127.38715,188.00002]],"_wlID":67,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[68,{"_wlLine":[[127.38715,188.00002],[111.7987,197.00002]],"_wlID":68,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[69,{"_wlLine":[[111.7987,197.00002],[121.7987,214.32053]],"_wlID":69,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[70,{"_wlLine":[[117.38715,170.6795],[101.7987,179.6795]],"_wlID":70,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[71,{"_wlLine":[[101.7987,179.6795],[111.7987,197.00002]],"_wlID":71,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[72,{"_wlLine":[[111.7987,197.00002],[127.38715,188.00002]],"_wlID":72,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[73,{"_wlLine":[[127.38715,188.00002],[117.38715,170.6795]],"_wlID":73,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[74,{"_wlLine":[[239.18582,258.99997],[239.18582,240.99997]],"_wlID":74,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":4},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[75,{"_wlLine":[[239.18582,240.99997],[219.18582,240.99997]],"_wlID":75,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":4},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[76,{"_wlLine":[[219.18582,240.99997],[219.18582,258.99997]],"_wlID":76,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":4},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[77,{"_wlLine":[[219.18582,258.99997],[239.18582,258.99997]],"_wlID":77,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":4},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[78,{"_wlLine":[[199.18582,240.99997],[199.18582,258.99997]],"_wlID":78,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":5},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[79,{"_wlLine":[[199.18582,258.99997],[219.18582,258.99997]],"_wlID":79,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":5},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[80,{"_wlLine":[[219.18582,258.99997],[219.18582,240.99997]],"_wlID":80,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":5},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[81,{"_wlLine":[[219.18582,240.99997],[199.18582,240.99997]],"_wlID":81,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":5},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[82,{"_wlLine":[[101.79868,320.3205],[117.38714,329.3205]],"_wlID":82,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":6},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[83,{"_wlLine":[[117.38714,329.3205],[127.38714,312.0]],"_wlID":83,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":6},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[84,{"_wlLine":[[127.38714,312.0],[111.79868,303.0]],"_wlID":84,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":6},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[85,{"_wlLine":[[111.79868,303.0],[101.79868,320.3205]],"_wlID":85,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":6},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[86,{"_wlLine":[[137.38713,294.67947],[121.79866,285.67947]],"_wlID":86,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":7},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[87,{"_wlLine":[[121.79866,285.67947],[111.798676,303.0]],"_wlID":87,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":7},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[88,{"_wlLine":[[111.798676,303.0],[127.387146,312.0]],"_wlID":88,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":7},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[89,{"_wlLine":[[127.387146,312.0],[137.38713,294.67947]],"_wlID":89,"_wlColor":[1.0,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":7},"_wlHeight":100.0,"_wlMaterial":"Metal"}]],"_wallDamages":[],"_doors":[[0,{"_drID":0,"_drWallIDs":[42,43,44,45],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlCrFilterNearPoint","contents":[40.0,[20.0,75.0],"CrIsAnimate"]},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[0.0,75.0],[20.0,75.0]],"_drOpenPos":[[-19.0,75.0],[1.0,75.0]],"_drClosePos":[[0.0,75.0],[20.0,75.0]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":3.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":5,"_penEnd":6,"_penPathEdge":{"_peStart":[20.0,60.0],"_peEnd":[20.0,90.0],"_peDist":30.0,"_peObstacles":[]}},{"_penStart":6,"_penEnd":5,"_penPathEdge":{"_peStart":[20.0,90.0],"_peEnd":[20.0,60.0],"_peDist":30.0,"_peObstacles":[]}}],"_drObstacleType":"AutoDoorObstacle"}],[1,{"_drID":1,"_drWallIDs":[46,47,48,49],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlCrFilterNearPoint","contents":[40.0,[20.0,75.0],"CrIsAnimate"]},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[40.0,75.0],[20.0,75.0]],"_drOpenPos":[[59.0,75.0],[39.0,75.0]],"_drClosePos":[[40.0,75.0],[20.0,75.0]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":3.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":5,"_penEnd":6,"_penPathEdge":{"_peStart":[20.0,60.0],"_peEnd":[20.0,90.0],"_peDist":30.0,"_peObstacles":[]}},{"_penStart":6,"_penEnd":5,"_penPathEdge":{"_peStart":[20.0,90.0],"_peEnd":[20.0,60.0],"_peDist":30.0,"_peObstacles":[]}}],"_drObstacleType":"AutoDoorObstacle"}],[2,{"_drID":2,"_drWallIDs":[66,67,68,69],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":1},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[129.59293,209.82053],[119.592926,192.50002]],"_drOpenPos":[[139.09293,226.27501],[129.09293,208.9545]],"_drClosePos":[[129.59293,209.82053],[119.592926,192.50002]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":12,"_penEnd":14,"_penPathEdge":{"_peStart":[106.60255,200.00002],"_peEnd":[132.58331,185.00003],"_peDist":29.999996,"_peObstacles":[]}},{"_penStart":14,"_penEnd":12,"_penPathEdge":{"_peStart":[132.58331,185.00003],"_peEnd":[106.60255,200.00002],"_peDist":29.999996,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}],[3,{"_drID":3,"_drWallIDs":[70,71,72,73],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":1},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[109.592926,175.1795],[119.592926,192.50002]],"_drOpenPos":[[100.092926,158.72502],[110.092926,176.04553]],"_drClosePos":[[109.592926,175.1795],[119.592926,192.50002]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[],"_drObstacleType":"DoorObstacle"}],[4,{"_drID":4,"_drWallIDs":[74,75,76,77],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":0},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[239.18582,249.99997],[219.18582,249.99997]],"_drOpenPos":[[258.18582,249.99997],[238.18582,249.99997]],"_drClosePos":[[239.18582,249.99997],[219.18582,249.99997]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":15,"_penEnd":16,"_penPathEdge":{"_peStart":[219.18582,234.99997],"_peEnd":[219.18582,264.99997],"_peDist":30.0,"_peObstacles":[]}},{"_penStart":16,"_penEnd":15,"_penPathEdge":{"_peStart":[219.18582,264.99997],"_peEnd":[219.18582,234.99997],"_peDist":30.0,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}],[5,{"_drID":5,"_drWallIDs":[78,79,80,81],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":0},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[199.18582,249.99997],[219.18582,249.99997]],"_drOpenPos":[[180.18582,249.99997],[200.18582,249.99997]],"_drClosePos":[[199.18582,249.99997],[219.18582,249.99997]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":15,"_penEnd":16,"_penPathEdge":{"_peStart":[219.18582,234.99997],"_peEnd":[219.18582,264.99997],"_peDist":30.0,"_peObstacles":[]}},{"_penStart":16,"_penEnd":15,"_penPathEdge":{"_peStart":[219.18582,264.99997],"_peEnd":[219.18582,234.99997],"_peDist":30.0,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}],[6,{"_drID":6,"_drWallIDs":[82,83,84,85],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":2},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[109.59291,324.8205],[119.59291,307.5]],"_drOpenPos":[[100.09291,341.27496],[110.09291,323.95447]],"_drClosePos":[[109.59291,324.8205],[119.59291,307.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[],"_drObstacleType":"DoorObstacle"}],[7,{"_drID":7,"_drWallIDs":[86,87,88,89],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdTrig","contents":2},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[129.5929,290.17947],[119.59291,307.5]],"_drOpenPos":[[139.09288,273.72498],[129.0929,291.0455]],"_drClosePos":[[129.5929,290.17947],[119.59291,307.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":11,"_penEnd":13,"_penPathEdge":{"_peStart":[106.60252,300.0],"_peEnd":[132.58328,314.99997],"_peDist":29.99998,"_peObstacles":[]}},{"_penStart":13,"_penEnd":11,"_penPathEdge":{"_peStart":[132.58328,314.99997],"_peEnd":[106.60252,300.0],"_peDist":29.99998,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}]],"_machines":[[0,{"_mcID":0,"_mcWallIDs":[50,51,52,53],"_mcMaterial":"Electronics","_mcPos":[20.0,0.0],"_mcDir":0.0,"_mcColor":[0.8,-0.2,0.8,1.0],"_mcHP":100,"_mcDamage":[],"_mcType":{"tag":"McTerminal"},"_mcMounts":[["OTTerminal",0],["OTButton",0]],"_mcName":"","_mcCloseSound":{"_getSoundID":29},"_mcWidth":10.0}],[1,{"_mcID":1,"_mcWallIDs":[54,55,56,57],"_mcMaterial":"Electronics","_mcPos":[189.18582,274.99997],"_mcDir":9.424778,"_mcColor":[0.0,1.0,0.5,1.0],"_mcHP":100,"_mcDamage":[],"_mcType":{"tag":"McSensor","contents":{"tag":"ProximitySensor","_proxStatus":"NotClose","_proxDist":40.0,"_proxRequirement":{"tag":"RequireEquipment","_proxReqEquipment":{"tag":"AMMOMAG","_ibtAmmoMag":"DRUMMAG"}},"_sensToggle":false}},"_mcMounts":[["OTTerminal",1],["OTButton",1],["OTTrigger",0]],"_mcName":"","_mcCloseSound":{"_getSoundID":29},"_mcWidth":10.0}],[2,{"_mcID":2,"_mcWallIDs":[58,59,60,61],"_mcMaterial":"Electronics","_mcPos":[110.77722,232.23077],"_mcDir":4.1887903,"_mcColor":[0.8,-0.2,0.8,1.0],"_mcHP":100,"_mcDamage":[],"_mcType":{"tag":"McTerminal"},"_mcMounts":[["OTTerminal",2],["OTButton",2]],"_mcName":"","_mcCloseSound":{"_getSoundID":29},"_mcWidth":10.0}],[3,{"_mcID":3,"_mcWallIDs":[62,63,64,65],"_mcMaterial":"Electronics","_mcPos":[112.94228,269.01926],"_mcDir":5.2359877,"_mcColor":[0.0,1.0,0.5,1.0],"_mcHP":100,"_mcDamage":[],"_mcType":{"tag":"McSensor","contents":{"tag":"ProximitySensor","_proxStatus":"NotClose","_proxDist":40.0,"_proxRequirement":{"tag":"RequireEquipment","_proxReqEquipment":{"tag":"AMMOMAG","_ibtAmmoMag":"DRUMMAG"}},"_sensToggle":false}},"_mcMounts":[["OTTerminal",3],["OTButton",3],["OTTrigger",2]],"_mcName":"","_mcCloseSound":{"_getSoundID":29},"_mcWidth":10.0}]],"_terminals":[[0,{"_tmID":0,"_tmBootLines":[{"_tlPause":1,"_tlString":[["SYNTHESIS SUCCESSFUL. MOVEMENT TEST 1 INITIATED [WASD].",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[["INTERACTION TEST 1 IN QUEUE [SPACE].",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[],"_tlEffect":{"tag":"TmTmSetStatus","contents":{"tag":"TerminalPressTo","_tptString":"QUIT"}}},{"_tlPause":1,"_tlString":[],"_tlEffect":{"tag":"TmWdWdDeactivateTerminal"}}],"_tmButtonID":0,"_tmMachineID":0,"_tmExternalColor":[0.8,-0.2,0.8,1.0],"_tmDisplayedLines":[],"_tmFutureLines":[{"_tlPause":1,"_tlString":[["SYNTHESIS SUCCESSFUL. MOVEMENT TEST 1 INITIATED [WASD].",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[["INTERACTION TEST 1 IN QUEUE [SPACE].",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[],"_tlEffect":{"tag":"TmTmSetStatus","contents":{"tag":"TerminalPressTo","_tptString":"QUIT"}}},{"_tlPause":1,"_tlString":[],"_tlEffect":{"tag":"TmWdWdDeactivateTerminal"}}],"_tmCommands":[{"tag":"TCBase"}],"_tmDeathEffect":{"tag":"TmWdWdDoDeathTriggers"},"_tmStatus":{"tag":"TerminalLineRead"},"_tmCommandHistory":[],"_tmToggles":{}}],[1,{"_tmID":1,"_tmBootLines":[{"_tlPause":0,"_tlString":[],"_tlEffect":{"tag":"TmWdWdTermSound","contents":{"_getSoundID":99}}},{"_tlPause":0,"_tlString":[["LOADING TEXT INTERFACE...",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":10,"_tlString":[["READY FOR INPUT",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmTmSetStatus","contents":{"tag":"TerminalTextInput","_tiText":""}}}],"_tmButtonID":1,"_tmMachineID":1,"_tmExternalColor":[0.8,-0.2,0.8,1.0],"_tmDisplayedLines":[],"_tmFutureLines":[],"_tmCommands":[{"tag":"TCSensorInfo"},{"tag":"TCBase"}],"_tmDeathEffect":{"tag":"TmWdWdDoDeathTriggers"},"_tmStatus":{"tag":"TerminalOff"},"_tmCommandHistory":[],"_tmToggles":{}}],[2,{"_tmID":2,"_tmBootLines":[{"_tlPause":0,"_tlString":[],"_tlEffect":{"tag":"TmWdWdTermSound","contents":{"_getSoundID":99}}},{"_tlPause":0,"_tlString":[["LOADING TEXT INTERFACE...",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[["INTERACTION TEST 1: USE KEYBOARD OR SCROLL TO ENTER",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":1,"_tlString":[["COMMANDS.",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":10,"_tlString":[["READY FOR INPUT",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmTmSetStatus","contents":{"tag":"TerminalTextInput","_tiText":""}}}],"_tmButtonID":2,"_tmMachineID":2,"_tmExternalColor":[0.8,-0.2,0.8,1.0],"_tmDisplayedLines":[],"_tmFutureLines":[],"_tmCommands":[{"tag":"TCBase"}],"_tmDeathEffect":{"tag":"TmWdWdDoDeathTriggers"},"_tmStatus":{"tag":"TerminalOff"},"_tmCommandHistory":[],"_tmToggles":{"DOOR":{"_ttTriggerID":1,"_ttDeathEffect":{"tag":"BlConst","contents":true}}}}],[3,{"_tmID":3,"_tmBootLines":[{"_tlPause":0,"_tlString":[],"_tlEffect":{"tag":"TmWdWdTermSound","contents":{"_getSoundID":99}}},{"_tlPause":0,"_tlString":[["LOADING TEXT INTERFACE...",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmWdId"}},{"_tlPause":10,"_tlString":[["READY FOR INPUT",[0.9,0.9,0.9,1.0]]],"_tlEffect":{"tag":"TmTmSetStatus","contents":{"tag":"TerminalTextInput","_tiText":""}}}],"_tmButtonID":3,"_tmMachineID":3,"_tmExternalColor":[0.8,-0.2,0.8,1.0],"_tmDisplayedLines":[],"_tmFutureLines":[],"_tmCommands":[{"tag":"TCSensorInfo"},{"tag":"TCBase"}],"_tmDeathEffect":{"tag":"TmWdWdDoDeathTriggers"},"_tmStatus":{"tag":"TerminalOff"},"_tmCommandHistory":[],"_tmToggles":{}}]],"_oldMagnets":[],"_magnets":[],"_blocks":[],"_coordinates":[],"_triggers":[[0,false],[1,false],[2,false]],"_floorItems":{"_unNIntMap":[[0,{"_flIt":{"_itUse":{"tag":"UseHeld"},"_itConsumables":null,"_itType":{"tag":"HELD","_ibtHeld":{"tag":"BURSTRIFLE"}},"_itID":{"_unNInt":1},"_itLocation":{"tag":"OnFloor","_ilFlID":{"_unNInt":0}},"_itTargeting":{"tag":"NoItTargeting"},"_itParams":{"tag":"NoParams"},"_itScroll":{"tag":"NoItemScroll"},"_itTimeLastUsed":0},"_flItPos":[219.18584,134.99997],"_flItRot":11.519173,"_flItID":{"_unNInt":0}}],[1,{"_flIt":{"_itUse":{"tag":"UseNothing"},"_itConsumables":100,"_itType":{"tag":"AMMOMAG","_ibtAmmoMag":"DRUMMAG"},"_itID":{"_unNInt":0},"_itLocation":{"tag":"OnFloor","_ilFlID":{"_unNInt":1}},"_itTargeting":{"tag":"NoItTargeting"},"_itParams":{"tag":"NoParams"},"_itScroll":{"tag":"NoItemScroll"},"_itTimeLastUsed":0},"_flItPos":[219.18582,364.99997],"_flItRot":4.1887903,"_flItID":{"_unNInt":1}}]]},"_modifications":[[0,{"tag":"ModIDID","_mdID":0,"_mdExternalID1":4,"_mdExternalID2":0,"_mdUpdate":{"tag":"MdTrigIf","contents":[{"tag":"MdSetLSCol","contents":[0.0,0.5,0.0]},{"tag":"MdSetLSCol","contents":[0.5,0.0,0.0]}]}}],[1,{"tag":"ModIDID","_mdID":1,"_mdExternalID1":5,"_mdExternalID2":1,"_mdUpdate":{"tag":"MdTrigIf","contents":[{"tag":"MdSetLSCol","contents":[0.0,0.5,0.0]},{"tag":"MdSetLSCol","contents":[0.5,0.0,0.0]}]}}],[2,{"tag":"ModIDID","_mdID":2,"_mdExternalID1":6,"_mdExternalID2":2,"_mdUpdate":{"tag":"MdTrigIf","contents":[{"tag":"MdSetLSCol","contents":[0.0,0.5,0.0]},{"tag":"MdSetLSCol","contents":[0.5,0.0,0.0]}]}}]],"_worldEvents":[],"_delayedEvents":[],"_pressPlates":[],"_buttons":[[0,{"_btPos":[20.0,0.0],"_btRot":0.0,"_btEvent":{"tag":"ButtonAccessTerminal","_btTermID":0},"_btID":0}],[1,{"_btPos":[189.18582,274.99997],"_btRot":9.424778,"_btEvent":{"tag":"ButtonAccessTerminal","_btTermID":1},"_btID":1}],[2,{"_btPos":[110.77722,232.23077],"_btRot":4.1887903,"_btEvent":{"tag":"ButtonAccessTerminal","_btTermID":2},"_btID":2}],[3,{"_btPos":[112.94228,269.01926],"_btRot":5.2359877,"_btEvent":{"tag":"ButtonAccessTerminal","_btTermID":3},"_btID":3}]],"_foregroundShapes":[[0,{"_fsID":0,"_fsPos":[209.18587,234.99997],"_fsDir":12.56637,"_fsRad":21.06066,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[28.93934,1.0606602,98.0],[28.93934,1.0606602,95.0],[8.93934,-18.93934,98.0],[8.93934,-18.93934,95.0],[11.06066,-21.06066,98.0],[11.06066,-21.06066,95.0],[31.06066,-1.0606602,98.0],[31.06066,-1.0606602,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[-11.060659,-1.0606602,98.0],[-11.060659,-1.0606602,95.0],[8.93934,-21.06066,98.0],[8.93934,-21.06066,95.0],[11.06066,-18.93934,98.0],[11.06066,-18.93934,95.0],[-8.939341,1.0606602,98.0],[-8.939341,1.0606602,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[1,{"_fsID":1,"_fsPos":[199.18582,264.99997],"_fsDir":9.424778,"_fsRad":2.0,"_fsSPic":[[{"_sfType":{"tag":"Cylinder","_cylinderSize":4},"_sfVs":[[-2.5330493e-8,-2.9802322e-8,0.0],[-2.5330493e-8,-2.9802322e-8,80.0],[1.5,0.0,0.0],[1.5,0.0,80.0],[-6.556708e-8,1.5,0.0],[-6.556708e-8,1.5,80.0],[-1.5,-1.3113416e-7,0.0],[-1.5,-1.3113416e-7,80.0],[1.788732e-8,-1.5,0.0],[1.788732e-8,-1.5,80.0]],"_sfColor":[1.0,1.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[2,{"_fsID":2,"_fsPos":[128.64851,300.31516],"_fsDir":8.377581,"_fsRad":10.75,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[29.25,-10.75,98.0],[29.25,-10.75,95.0],[29.25,-20.75,98.0],[29.25,-20.75,95.0],[32.25,-20.75,98.0],[32.25,-20.75,95.0],[32.25,-10.75,98.0],[32.25,-10.75,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[29.68934,-19.689339,98.0],[29.68934,-19.689339,95.0],[19.689339,-29.68934,98.0],[19.689339,-29.68934,95.0],[21.810661,-31.81066,98.0],[21.810661,-31.81066,95.0],[31.81066,-21.810661,98.0],[31.81066,-21.810661,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[20.75,-29.25,98.0],[20.75,-29.25,95.0],[10.75,-29.25,98.0],[10.75,-29.25,95.0],[10.75,-32.25,98.0],[10.75,-32.25,95.0],[20.75,-32.25,98.0],[20.75,-32.25,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[3,{"_fsID":3,"_fsPos":[116.60252,282.6795],"_fsDir":5.2359877,"_fsRad":2.0,"_fsSPic":[[{"_sfType":{"tag":"Cylinder","_cylinderSize":4},"_sfVs":[[-2.5330493e-8,-2.9802322e-8,0.0],[-2.5330493e-8,-2.9802322e-8,80.0],[1.5,0.0,0.0],[1.5,0.0,80.0],[-6.556708e-8,1.5,0.0],[-6.556708e-8,1.5,80.0],[-1.5,-1.3113416e-7,0.0],[-1.5,-1.3113416e-7,80.0],[1.788732e-8,-1.5,0.0],[1.788732e-8,-1.5,80.0]],"_sfColor":[1.0,1.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[4,{"_fsID":4,"_fsPos":[30.75,139.25],"_fsDir":3.1415927,"_fsRad":10.75,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[29.25,-10.75,98.0],[29.25,-10.75,95.0],[29.25,-30.75,98.0],[29.25,-30.75,95.0],[32.25,-30.75,98.0],[32.25,-30.75,95.0],[32.25,-10.75,98.0],[32.25,-10.75,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[30.75,-29.25,98.0],[30.75,-29.25,95.0],[10.75,-29.25,98.0],[10.75,-29.25,95.0],[10.75,-32.25,98.0],[10.75,-32.25,95.0],[30.75,-32.25,98.0],[30.75,-32.25,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}]],"_corpses":[],"_lightSources":[[0,{"_lsID":0,"_lsParam":{"_lsPos":[219.27,214.94594,94.0],"_lsRad":200.0,"_lsCol":[0.6,0.6,0.6]}}],[1,{"_lsID":1,"_lsParam":{"_lsPos":[149.90851,325.09982,94.0],"_lsRad":200.0,"_lsCol":[0.6,0.6,0.6]}}],[2,{"_lsID":2,"_lsParam":{"_lsPos":[19.915852,170.05403,94.0],"_lsRad":200.0,"_lsCol":[0.6,0.6,0.6]}}],[3,{"_lsID":3,"_lsParam":{"_lsPos":[20.0,1.0,90.0],"_lsRad":300.0,"_lsCol":[0.0,0.1,0.5]}}],[4,{"_lsID":4,"_lsParam":{"_lsPos":[200.68582,267.49997,78.0],"_lsRad":75.0,"_lsCol":[0.5,0.0,0.0]}}],[5,{"_lsID":5,"_lsParam":{"_lsPos":[95.187485,185.22855,78.0],"_lsRad":75.0,"_lsCol":[0.5,0.0,0.0]}}],[6,{"_lsID":6,"_lsParam":{"_lsPos":[113.68747,282.72855,78.0],"_lsRad":75.0,"_lsCol":[0.5,0.0,0.0]}}]],"_lights":[],"_seenLocations":[[0,[{"tag":"WdYouPos"},"CURRENT POSITION"]],[1,[{"tag":"WdP2Const","contents":[0.0,0.0]},"START POSITION"]]],"_selLocation":0,"_distortions":[],"_lClock":0,"_lTestString":[],"_lTestInt":0,"_hotkeys":[],"_imHotkeys":{"_unNIntMap":[]},"_lAimPos":[0.0,0.0],"_lInvLock":false,"_respawnPos":[[20.0,20.0],1.5707964]},"_cwGen":{"_cwgParams":{"_sensorCoding":[["LaserSensor",["AZURE","SQUARE"]],["ElectricSensor",["RED","THREELINES"]],["ThermalSensor",["ORANGE","CIRCLE"]],["PhysicalSensor",["GREEN","PLUS"]]]},"_cwgWorldBounds":{"_bdMinX":-95.47006,"_bdMaxX":334.65588,"_bdMinY":-10.0,"_bdMaxY":464.99997},"_cwgGameRooms":[{"_grViewpoints":[[40.0,60.0],[0.0,60.0],[0.0,0.0],[40.0,0.0],[20.0,60.0],[40.0,40.0],[20.0,0.0],[20.0,0.0],[0.0,20.0],[0.0,40.0],[40.0,20.0]],"_grViewpointsEx":[[30.0,60.0],[10.0,60.0]],"_grBound":[[80.35534,-40.35534],[80.35534,100.35534],[-40.35534,100.35534],[-40.35534,-40.35534]],"_grDir":0.0,"_grLinkDirs":[1.5707964],"_grName":"tutRezBox"},{"_grViewpoints":[[40.0,95.0],[0.0,95.0],[0.0,55.0],[40.0,55.0]],"_grViewpointsEx":[[30.0,90.0],[10.0,90.0],[10.0,60.0],[30.0,60.0]],"_grBound":[[75.35534,19.64466],[75.35534,130.35535],[-35.35534,130.35535],[-35.35534,19.64466]],"_grDir":3.1415927,"_grLinkDirs":[1.5707964,4.712389],"_grName":"autoDoor"},{"_grViewpoints":[[40.0,160.0],[0.0,160.0],[0.0,80.0],[40.0,80.0],[20.0,150.0],[20.0,150.0]],"_grViewpointsEx":[[10.0,90.0],[30.0,90.0],[30.0,150.0],[10.0,150.0]],"_grBound":[[72.31875,41.849003],[94.829636,105.87596],[94.829636,134.12404],[72.31875,198.151],[-32.31875,198.151],[-54.82963,134.12404],[-54.82963,105.87596],[-32.31875,41.849003]],"_grDir":3.1415927,"_grLinkDirs":[4.712389,1.5707964],"_grName":"Corridor"},{"_grViewpoints":[[-95.47006,249.99997],[-37.73504,150.0],[77.73503,150.0],[135.47003,250.00003],[77.735,350.0],[-37.735023,350.0],[19.999973,350.0],[-66.60255,200.0],[-66.60256,300.0]],"_grViewpointsEx":[[111.60253,291.33975],[101.60252,308.66028],[101.60255,191.33975],[111.60254,208.66026],[9.999999,150.0],[30.0,150.0]],"_grBound":[[-62.735023,393.30127],[-145.47008,249.99997],[-62.73503,106.69873],[102.73504,106.69873],[185.47003,250.00003],[102.734985,393.30127]],"_grDir":3.1415927,"_grLinkDirs":[6.8067846,5.7595863,4.712389],"_grName":"doorToggle-6gon"},{"_grViewpoints":[[146.91342,300.17947],[126.91342,334.8205],[92.2724,314.8205],[112.2724,280.17947]],"_grViewpointsEx":[[101.60252,308.66025],[111.60252,291.33972],[137.58328,306.33972],[127.58329,323.66025]],"_grBound":[[99.331436,231.88318],[195.2097,287.23853],[139.85437,383.1168],[43.976112,327.76144]],"_grDir":8.377581,"_grLinkDirs":[9.948377,6.806784],"_grName":"triggerDoorRoom"},{"_grViewpoints":[[161.45082,264.99994],[276.92084,264.99997],[334.65588,365.0],[276.92084,464.99997],[161.45078,464.99994],[103.71578,364.99997],[305.78836,415.0],[219.1858,464.99997],[305.78836,314.99997],[132.58327,414.99994]],"_grViewpointsEx":[[127.58329,323.66022],[137.58328,306.3397],[209.18582,264.99997],[229.18582,264.99997]],"_grBound":[[53.71579,364.99997],[136.4508,221.69868],[301.92084,221.6987],[384.65588,365.0],[301.9208,508.30124],[136.45076,508.3012]],"_grDir":8.377581,"_grLinkDirs":[9.948378,10.995575],"_grName":"6gon"},{"_grViewpoints":[[199.18582,229.99997],[239.18582,229.99997],[239.18582,269.99997],[199.18582,269.99997]],"_grViewpointsEx":[[209.18582,234.99997],[229.18582,234.99997],[229.18582,264.99997],[209.18582,264.99997]],"_grBound":[[163.83047,305.35532],[163.83047,194.64462],[274.54117,194.64462],[274.54117,305.35532]],"_grDir":12.566371,"_grLinkDirs":[10.995574,14.137167],"_grName":"triggerDoorRoom"},{"_grViewpoints":[[276.92084,34.999954],[334.65588,134.99991],[276.9209,234.99995],[161.45084,234.99998],[103.71578,135.0],[161.45078,35.000015],[305.78836,84.99992],[132.58328,85.0],[305.7884,184.99994],[132.58331,185.0],[219.1858,34.99997]],"_grViewpointsEx":[[229.18588,234.99997],[209.18587,234.99997]],"_grBound":[[136.45074,-8.301239],[301.9208,-8.301346],[384.65588,134.99988],[301.92093,278.3012],[136.45087,278.30127],[53.715775,135.00002]],"_grDir":12.56637,"_grLinkDirs":[14.137167],"_grName":"6gon"},{"_grViewpoints":[[126.91344,165.1795],[146.91344,199.82053],[112.272415,219.82053],[92.272415,185.1795],[132.58331,185.00003]],"_grViewpointsEx":[[111.60254,208.66028],[101.60255,191.33977]],"_grBound":[[43.976128,172.23856],[139.8544,116.883224],[195.20972,212.76149],[99.33146,268.11682]],"_grDir":7.3303833,"_grLinkDirs":[8.901179],"_grName":"triggerDoorRoom"}],"_cwgRoomClipping":[{"_cpPoints":[[276.9209,234.99995],[161.45084,234.99998],[103.71578,135.0],[161.45078,35.000015],[276.92084,34.999954],[334.65588,134.99991]],"_cpCen":[219.18584,134.99995],"_cpRad":115.47007},{"_cpPoints":[[334.65588,365.0],[276.92084,464.99997],[161.45078,464.99994],[103.71578,364.99997],[161.45082,264.99994],[276.92084,264.99997]],"_cpCen":[219.18584,365.0],"_cpRad":115.4701},{"_cpPoints":[[77.73503,150.0],[135.47003,250.00003],[77.735,350.0],[-37.735023,350.0],[-95.47006,249.99997],[-37.73504,150.0]],"_cpCen":[19.99999,250.0],"_cpRad":115.47006},{"_cpPoints":[[-5.0,130.0],[-5.0,110.0],[45.0,110.0],[45.0,130.0]],"_cpCen":[20.0,120.0],"_cpRad":26.925823},{"_cpPoints":[[0.0,76.0],[0.0,74.0],[40.0,74.0],[40.0,76.0]],"_cpCen":[20.0,75.0],"_cpRad":20.024984},{"_cpPoints":[[-5.0,65.0],[-5.0,-5.0],[45.0,-5.0],[45.0,65.0]],"_cpCen":[20.0,30.0],"_cpRad":43.011627}],"_cwgSeed":7114951007332849727},"_cClock":0,"_cwTiles":[{"_tilePoly":[[0.0,60.0],[0.0,0.0],[40.0,0.0],[40.0,60.0]],"_tileZero":[0.0,0.0],"_tileTangentPos":[50.0,0.0],"_tileArrayZ":16.0},{"_tilePoly":[[40.0,95.0],[0.0,95.0],[0.0,55.0],[40.0,55.0]],"_tileZero":[0.0,55.0],"_tileTangentPos":[50.0,55.0],"_tileArrayZ":16.0},{"_tilePoly":[[0.0,160.0],[0.0,80.0],[40.0,80.0],[40.0,160.0]],"_tileZero":[0.0,160.0],"_tileTangentPos":[0.0,110.0],"_tileArrayZ":5.0},{"_tilePoly":[[77.73503,150.0],[135.47003,250.00003],[77.735,350.0],[-37.735023,350.0],[-95.47006,249.99997],[-37.73504,150.0]],"_tileZero":[77.73503,150.0],"_tileTangentPos":[102.73502,193.30128],"_tileArrayZ":2.0},{"_tilePoly":[[146.91342,300.17947],[126.91342,334.8205],[92.2724,314.8205],[112.2724,280.17947]],"_tileZero":[150.00745,414.8205],"_tileTangentPos":[100.00743,414.8205],"_tileArrayZ":2.0},{"_tilePoly":[[334.65588,365.0],[276.92084,464.99997],[161.45078,464.99994],[103.71578,364.99997],[161.45082,264.99994],[276.92084,264.99997]],"_tileZero":[334.65588,365.0],"_tileTangentPos":[309.65588,408.30124],"_tileArrayZ":2.0},{"_tilePoly":[[199.18582,229.99997],[239.18582,229.99997],[239.18582,269.99997],[199.18582,269.99997]],"_tileZero":[296.92087,169.99997],"_tileTangentPos":[321.92084,213.30124],"_tileArrayZ":2.0},{"_tilePoly":[[276.9209,234.99995],[161.45084,234.99998],[103.71578,135.0],[161.45078,35.000015],[276.92084,34.999954],[334.65588,134.99991]],"_tileZero":[276.9209,234.99995],"_tileTangentPos":[226.9209,234.99997],"_tileArrayZ":2.0},{"_tilePoly":[[126.91344,165.1795],[146.91344,199.82053],[112.272415,219.82053],[92.272415,185.1795]],"_tileZero":[227.74246,219.82054],"_tileTangentPos":[202.74246,263.1218],"_tileArrayZ":2.0}],"_pathGraph":[[0,[[[3,[{"_peStart":[20.0,20.0],"_peEnd":[0.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]],[0.0,20.0],[[3,[{"_peStart":[0.0,20.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[1,[[[4,[{"_peStart":[20.0,40.0],"_peEnd":[0.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]],[0.0,40.0],[[4,[{"_peStart":[0.0,40.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[2,[[[3,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,0.0],"_peDist":20.0,"_peObstacles":[]}]]],[20.0,0.0],[[3,[{"_peStart":[20.0,0.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[3,[[[0,[{"_peStart":[0.0,20.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]],[2,[{"_peStart":[20.0,0.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]],[3,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,20.0],"_peDist":0.0,"_peObstacles":[]}]],[4,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]],[9,[{"_peStart":[40.0,20.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]],[20.0,20.0],[[0,[{"_peStart":[20.0,20.0],"_peEnd":[0.0,20.0],"_peDist":20.0,"_peObstacles":[]}]],[2,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,0.0],"_peDist":20.0,"_peObstacles":[]}]],[3,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,20.0],"_peDist":0.0,"_peObstacles":[]}]],[4,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[9,[{"_peStart":[20.0,20.0],"_peEnd":[40.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[4,[[[1,[{"_peStart":[0.0,40.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[3,[{"_peStart":[20.0,20.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[4,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,40.0],"_peDist":0.0,"_peObstacles":[]}]],[5,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[10,[{"_peStart":[40.0,40.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]],[20.0,40.0],[[1,[{"_peStart":[20.0,40.0],"_peEnd":[0.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[3,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]],[4,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,40.0],"_peDist":0.0,"_peObstacles":[]}]],[5,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,60.0],"_peDist":20.0,"_peObstacles":[]}]],[10,[{"_peStart":[20.0,40.0],"_peEnd":[40.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[5,[[[4,[{"_peStart":[20.0,40.0],"_peEnd":[20.0,60.0],"_peDist":20.0,"_peObstacles":[]}]],[6,[{"_peStart":[20.0,90.0],"_peEnd":[20.0,60.0],"_peDist":30.0,"_peObstacles":["AutoDoorObstacle"]}]]],[20.0,60.0],[[4,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]],[6,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,90.0],"_peDist":30.0,"_peObstacles":["AutoDoorObstacle"]}]]]]],[6,[[[5,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,90.0],"_peDist":30.0,"_peObstacles":["AutoDoorObstacle"]}]],[7,[{"_peStart":[20.0,140.0],"_peEnd":[20.0,90.0],"_peDist":50.0,"_peObstacles":[]}]]],[20.0,90.0],[[5,[{"_peStart":[20.0,90.0],"_peEnd":[20.0,60.0],"_peDist":30.0,"_peObstacles":["AutoDoorObstacle"]}]],[7,[{"_peStart":[20.0,90.0],"_peEnd":[20.0,140.0],"_peDist":50.0,"_peObstacles":[]}]]]]],[7,[[[6,[{"_peStart":[20.0,90.0],"_peEnd":[20.0,140.0],"_peDist":50.0,"_peObstacles":[]}]],[8,[{"_peStart":[20.0,150.0],"_peEnd":[20.0,140.0],"_peDist":10.0,"_peObstacles":[]}]]],[20.0,140.0],[[6,[{"_peStart":[20.0,140.0],"_peEnd":[20.0,90.0],"_peDist":50.0,"_peObstacles":[]}]],[8,[{"_peStart":[20.0,140.0],"_peEnd":[20.0,150.0],"_peDist":10.0,"_peObstacles":[]}]]]]],[8,[[[7,[{"_peStart":[20.0,140.0],"_peEnd":[20.0,150.0],"_peDist":10.0,"_peObstacles":[]}]]],[20.0,150.0],[[7,[{"_peStart":[20.0,150.0],"_peEnd":[20.0,140.0],"_peDist":10.0,"_peObstacles":[]}]]]]],[9,[[[3,[{"_peStart":[20.0,20.0],"_peEnd":[40.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]],[40.0,20.0],[[3,[{"_peStart":[40.0,20.0],"_peEnd":[20.0,20.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[10,[[[4,[{"_peStart":[20.0,40.0],"_peEnd":[40.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]],[40.0,40.0],[[4,[{"_peStart":[40.0,40.0],"_peEnd":[20.0,40.0],"_peDist":20.0,"_peObstacles":[]}]]]]],[11,[[[13,[{"_peStart":[132.58328,314.99997],"_peEnd":[106.60252,300.0],"_peDist":29.99998,"_peObstacles":["DoorObstacle"]}]]],[106.60252,300.0],[[13,[{"_peStart":[106.60252,300.0],"_peEnd":[132.58328,314.99997],"_peDist":29.99998,"_peObstacles":["DoorObstacle"]}]]]]],[12,[[[14,[{"_peStart":[132.58331,185.00003],"_peEnd":[106.60255,200.00002],"_peDist":29.999996,"_peObstacles":["DoorObstacle"]}]]],[106.60255,200.00002],[[14,[{"_peStart":[106.60255,200.00002],"_peEnd":[132.58331,185.00003],"_peDist":29.999996,"_peObstacles":["DoorObstacle"]}]]]]],[13,[[[11,[{"_peStart":[106.60252,300.0],"_peEnd":[132.58328,314.99997],"_peDist":29.99998,"_peObstacles":["DoorObstacle"]}]]],[132.58328,314.99997],[[11,[{"_peStart":[132.58328,314.99997],"_peEnd":[106.60252,300.0],"_peDist":29.99998,"_peObstacles":["DoorObstacle"]}]]]]],[14,[[[12,[{"_peStart":[106.60255,200.00002],"_peEnd":[132.58331,185.00003],"_peDist":29.999996,"_peObstacles":["DoorObstacle"]}]]],[132.58331,185.00003],[[12,[{"_peStart":[132.58331,185.00003],"_peEnd":[106.60255,200.00002],"_peDist":29.999996,"_peObstacles":["DoorObstacle"]}]]]]],[15,[[[16,[{"_peStart":[219.18582,264.99997],"_peEnd":[219.18582,234.99997],"_peDist":30.0,"_peObstacles":["DoorObstacle"]}]]],[219.18582,234.99997],[[16,[{"_peStart":[219.18582,234.99997],"_peEnd":[219.18582,264.99997],"_peDist":30.0,"_peObstacles":["DoorObstacle"]}]]]]],[16,[[[15,[{"_peStart":[219.18582,234.99997],"_peEnd":[219.18582,264.99997],"_peDist":30.0,"_peObstacles":["DoorObstacle"]}]]],[219.18582,264.99997],[[15,[{"_peStart":[219.18582,264.99997],"_peEnd":[219.18582,234.99997],"_peDist":30.0,"_peObstacles":["DoorObstacle"]}]]]]]],"_numberFloorVerxs":0,"_chasms":[],"_numberChasmVerxs":0} \ No newline at end of file +{"_lWorld":{"_creatures":[[0,{"_crPos":[20.0,20.0],"_crOldPos":[20.0,0.0],"_crZ":0.0,"_crZVel":0.0,"_crDir":1.5707964,"_crMvDir":1.5707964,"_crMvAim":1.5707964,"_crType":{"tag":"Avatar","_avatarPulse":{"_pulseRate":55,"_pulseProgress":0},"_avatarMaterial":"Flesh","_avStrength":50,"_avDexterity":50,"_avIntelligence":50,"_avMoveSpeed":3.0},"_crID":0,"_crHP":10000,"_crInv":[],"_crManipulation":{"tag":"Manipulator","_manObject":{"tag":"SelNothing"}},"_crEquipment":[],"_crDamage":[],"_crPain":0,"_crStance":{"_carriage":{"tag":"Walking","_strideAmount":0.0,"_currentFoot":"LeftForward"},"_posture":"AtEase","_strideLength":40.0},"_crActionPlan":{"tag":"ActionPlan","_apImpulse":[],"_apAction":[],"_apStrategy":{"tag":"StrategyActions","contents":[{"tag":"WatchAndWait"},[{"tag":"StartSentinelPost"}]]},"_apGoal":[{"tag":"LiveLongAndProsper"}]},"_crPerception":{"_cpVigilance":"Lethargic","_cpAttention":{"tag":"AttentiveTo","_getAttentiveTo":[]},"_cpAwareness":[],"_cpVision":{"_viFOV":{"tag":"FloatFOV","contents":0.8},"_viDist":{"tag":"FloatDistLinearNearFar","contents":[500.0,10.0,1.0]}},"_cpAudition":{"_auDist":{"tag":"FloatID"}}},"_crMemory":{"_soundsToInvestigate":[],"_nodesSearched":[]},"_crVocalization":{"tag":"Mute"},"_crFaction":{"tag":"PlayerFaction"},"_crGroup":{"tag":"LoneWolf"},"_crIntention":{"_targetCr":null,"_mvToPoint":null,"_viewPoint":null},"_crName":"DEFAULTCRNAME","_crDeathTimer":0}]],"_creatureGroups":[],"_itemLocations":[],"_clouds":[],"_dusts":[],"_gusts":[],"_props":[],"_debris":[],"_projectiles":[],"_bullets":[],"_radarSweeps":[],"_energyBalls":[],"_flames":[],"_sparks":[],"_radarBlips":[],"_flares":[],"_teslaArcs":[],"_arcNode":[],"_shockwaves":[],"_lasers":[],"_pulseLasers":[],"_pulseBalls":[],"_linearShockwaves":[],"_tractorBeams":[],"_walls":[[0,{"_wlLine":[[188.56406,198.03847],[168.56406,232.67949]],"_wlID":0,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[1,{"_wlLine":[[162.5833,183.03848],[188.56406,198.03847]],"_wlID":1,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[2,{"_wlLine":[[142.5833,217.67949],[162.5833,183.03848]],"_wlID":2,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[3,{"_wlLine":[[102.583305,286.96152],[122.583305,252.32051]],"_wlID":3,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[4,{"_wlLine":[[128.56407,301.96152],[102.583305,286.96152]],"_wlID":4,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[5,{"_wlLine":[[148.56407,267.3205],[128.56407,301.96152]],"_wlID":5,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[6,{"_wlLine":[[77.73503,70.0],[135.47006,169.99998]],"_wlID":6,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[7,{"_wlLine":[[40.0,70.00001],[77.73503,70.0]],"_wlID":7,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[8,{"_wlLine":[[-37.735043,70.00002],[0.0,70.000015]],"_wlID":8,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[9,{"_wlLine":[[-95.47006,170.0],[-37.735043,70.00002]],"_wlID":9,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[10,{"_wlLine":[[-37.735035,270.0],[-95.47006,170.0]],"_wlID":10,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[11,{"_wlLine":[[77.73503,270.0],[-37.735035,270.0]],"_wlID":11,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[12,{"_wlLine":[[96.60254,237.32051],[77.73503,270.0]],"_wlID":12,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[13,{"_wlLine":[[135.47006,169.99998],[116.60254,202.67949]],"_wlID":13,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[14,{"_wlLine":[[0.0,70.000015],[0.0,0.0]],"_wlID":14,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[15,{"_wlLine":[[0.0,0.0],[40.0,0.0]],"_wlID":15,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[16,{"_wlLine":[[40.0,0.0],[40.0,70.00001]],"_wlID":16,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[17,{"_wlLine":[[174.54483,282.3205],[148.56407,267.3205]],"_wlID":17,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[18,{"_wlLine":[[122.583305,252.32051],[96.60254,237.32051]],"_wlID":18,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[19,{"_wlLine":[[116.60254,202.67949],[142.5833,217.67949]],"_wlID":19,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[20,{"_wlLine":[[168.56406,232.67949],[198.87495,250.1795]],"_wlID":20,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[21,{"_wlLine":[[281.14737,297.6795],[261.14737,332.32053]],"_wlID":21,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[22,{"_wlLine":[[261.14737,332.32053],[178.87497,284.8205]],"_wlID":22,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[23,{"_wlLine":[[178.87497,284.8205],[174.54483,282.3205]],"_wlID":23,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[24,{"_wlLine":[[198.87495,250.1795],[281.14737,297.6795]],"_wlID":24,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":11},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":100.0,"_wlMaterial":"Stone"}],[25,{"_wlLine":[[101.7987,240.32051],[117.38715,249.32051]],"_wlID":25,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[26,{"_wlLine":[[117.38715,249.32051],[127.38715,232.0]],"_wlID":26,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[27,{"_wlLine":[[127.38715,232.0],[111.7987,223.0]],"_wlID":27,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[28,{"_wlLine":[[111.7987,223.0],[101.7987,240.32051]],"_wlID":28,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":0},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[29,{"_wlLine":[[137.38716,214.67949],[121.7987,205.67949]],"_wlID":29,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[30,{"_wlLine":[[121.7987,205.67949],[111.7987,223.0]],"_wlID":30,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[31,{"_wlLine":[[111.7987,223.0],[127.38715,232.0]],"_wlID":31,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[32,{"_wlLine":[[127.38715,232.0],[137.38716,214.67949]],"_wlID":32,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":1},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[33,{"_wlLine":[[153.76022,270.3205],[169.34866,279.3205]],"_wlID":33,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[34,{"_wlLine":[[169.34866,279.3205],[179.34866,262.0]],"_wlID":34,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[35,{"_wlLine":[[179.34866,262.0],[163.76022,253.0]],"_wlID":35,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[36,{"_wlLine":[[163.76022,253.0],[153.76022,270.3205]],"_wlID":36,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":2},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[37,{"_wlLine":[[189.34868,244.67949],[173.76021,235.67949]],"_wlID":37,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[38,{"_wlLine":[[173.76021,235.67949],[163.76021,253.0]],"_wlID":38,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[39,{"_wlLine":[[163.76021,253.0],[179.34868,262.0]],"_wlID":39,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[40,{"_wlLine":[[179.34868,262.0],[189.34868,244.67949]],"_wlID":40,"_wlColor":[0.8333333,0.0,0.0,1.0],"_wlOpacity":{"tag":"Opaque","_opTexture":0},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":false,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":true,"_wlRotateTo":true,"_wlStructure":{"tag":"DoorPart","_wsDoor":3},"_wlHeight":100.0,"_wlMaterial":"Metal"}],[41,{"_wlLine":[[124.23394,299.46152],[129.23395,290.80127]],"_wlID":41,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":false,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":0.0,"_wlMaterial":"Stone"}],[42,{"_wlLine":[[106.91344,289.46152],[124.23394,299.46152]],"_wlID":42,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":false,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":0.0,"_wlMaterial":"Stone"}],[43,{"_wlLine":[[111.91344,280.80127],[106.91344,289.46152]],"_wlID":43,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":false,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":0.0,"_wlMaterial":"Stone"}],[44,{"_wlLine":[[129.23395,290.80127],[111.91344,280.80127]],"_wlID":44,"_wlColor":[0.6,0.6,0.6,1.0],"_wlOpacity":{"tag":"SeeAbove"},"_wlPathable":false,"_wlPenetrable":false,"_wlBouncy":true,"_wlWalkable":false,"_wlTouchThrough":true,"_wlFireThrough":false,"_wlReflect":false,"_wlUnshadowed":false,"_wlRotateTo":true,"_wlStructure":{"tag":"StandaloneWall"},"_wlHeight":0.0,"_wlMaterial":"Stone"}]],"_wallDamages":[],"_doors":[[0,{"_drID":0,"_drWallIDs":[25,26,27,28],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlNegate","contents":{"tag":"WdBlBtOn","contents":0}},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[109.592926,244.82051],[119.592926,227.5]],"_drOpenPos":[[100.092926,261.275],[110.092926,243.95448]],"_drClosePos":[[109.592926,244.82051],[119.592926,227.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":3,"_penEnd":4,"_penPathEdge":{"_peStart":[106.60254,220.0],"_peEnd":[141.24356,240.0],"_peDist":40.000004,"_peObstacles":[]}},{"_penStart":4,"_penEnd":3,"_penPathEdge":{"_peStart":[141.24356,240.0],"_peEnd":[106.60254,220.0],"_peDist":40.000004,"_peObstacles":[]}},{"_penStart":5,"_penEnd":4,"_penPathEdge":{"_peStart":[184.54483,265.0],"_peEnd":[141.24356,240.0],"_peDist":50.0,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}],[1,{"_drID":1,"_drWallIDs":[29,30,31,32],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlNegate","contents":{"tag":"WdBlBtOn","contents":0}},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[129.59293,210.17949],[119.592926,227.5]],"_drOpenPos":[[139.09293,193.725],[129.09293,211.04552]],"_drClosePos":[[129.59293,210.17949],[119.592926,227.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[],"_drObstacleType":"DoorObstacle"}],[2,{"_drID":2,"_drWallIDs":[33,34,35,36],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlBtOn","contents":0},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[161.55444,274.8205],[171.55444,257.5]],"_drOpenPos":[[152.05444,291.27496],[162.05444,273.95447]],"_drClosePos":[[161.55444,274.8205],[171.55444,257.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":4,"_penEnd":5,"_penPathEdge":{"_peStart":[141.24356,240.0],"_peEnd":[184.54483,265.0],"_peDist":50.0,"_peObstacles":[]}},{"_penStart":5,"_penEnd":4,"_penPathEdge":{"_peStart":[184.54483,265.0],"_peEnd":[141.24356,240.0],"_peDist":50.0,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}],[3,{"_drID":3,"_drWallIDs":[37,38,39,40],"_drStatus":{"tag":"DoorClosed"},"_drTrigger":{"tag":"WdBlBtOn","contents":0},"_drMech":{"tag":"DoorMechanism"},"_drPos":[[181.55444,240.17949],[171.55444,257.5]],"_drOpenPos":[[191.05444,223.725],[181.05444,241.04552]],"_drClosePos":[[181.55444,240.17949],[171.55444,257.5]],"_drHP":10000,"_drDeath":{"tag":"DrWdMakeDoorDebris"},"_drSpeed":2.0,"_drPushedBy":{"tag":"PushesItself"},"_drPushes":null,"_drMounts":[],"_drObstructs":[{"_penStart":4,"_penEnd":5,"_penPathEdge":{"_peStart":[141.24356,240.0],"_peEnd":[184.54483,265.0],"_peDist":50.0,"_peObstacles":[]}},{"_penStart":5,"_penEnd":4,"_penPathEdge":{"_peStart":[184.54483,265.0],"_peEnd":[141.24356,240.0],"_peDist":50.0,"_peObstacles":[]}}],"_drObstacleType":"DoorObstacle"}]],"_machines":[],"_terminals":[],"_oldMagnets":[],"_magnets":[],"_blocks":[],"_coordinates":[],"_triggers":[],"_floorItems":{"_unNIntMap":[]},"_modifications":[],"_worldEvents":[],"_delayedEvents":[],"_pressPlates":[],"_buttons":[[0,{"_btPos":[118.07369,290.1314],"_btRot":-2.6179938,"_btEvent":{"tag":"ButtonSwitch","_bonEff":{"tag":"NoWorldEffect"},"_boffEff":{"tag":"NoWorldEffect"},"_bsColor1":[0.8333333,0.0,0.0,1.0],"_bsColor2":[1.0,0.0,0.0,1.0],"_btOn":false},"_btID":0}]],"_foregroundShapes":[[0,{"_fsID":0,"_fsPos":[189.54483,256.33975],"_fsDir":2.0943952,"_fsRad":21.06066,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[28.93934,1.0606602,98.0],[28.93934,1.0606602,95.0],[8.93934,-18.93934,98.0],[8.93934,-18.93934,95.0],[11.06066,-21.06066,98.0],[11.06066,-21.06066,95.0],[31.06066,-1.0606602,98.0],[31.06066,-1.0606602,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[-11.060659,-1.0606602,98.0],[-11.060659,-1.0606602,95.0],[8.93934,-21.06066,98.0],[8.93934,-21.06066,95.0],[11.06066,-18.93934,98.0],[11.06066,-18.93934,95.0],[-8.939341,1.0606602,98.0],[-8.939341,1.0606602,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[1,{"_fsID":1,"_fsPos":[115.54036,190.51924],"_fsDir":-1.0471976,"_fsRad":20.0,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[-50.5,32.0,53.0],[-50.5,32.0,50.0],[-50.5,72.0,53.0],[-50.5,72.0,50.0],[-53.5,72.0,53.0],[-53.5,72.0,50.0],[-53.5,32.0,53.0],[-53.5,32.0,50.0]],"_sfColor":[1.0,0.5,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[2,{"_fsID":2,"_fsPos":[30.75,59.25],"_fsDir":3.1415927,"_fsRad":10.75,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[29.25,-10.75,98.0],[29.25,-10.75,95.0],[29.25,-30.75,98.0],[29.25,-30.75,95.0],[32.25,-30.75,98.0],[32.25,-30.75,95.0],[32.25,-10.75,98.0],[32.25,-10.75,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"},{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[30.75,-29.25,98.0],[30.75,-29.25,95.0],[10.75,-29.25,98.0],[10.75,-29.25,95.0],[10.75,-32.25,98.0],[10.75,-32.25,95.0],[30.75,-32.25,98.0],[30.75,-32.25,95.0]],"_sfColor":[0.0,0.0,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}],[3,{"_fsID":3,"_fsPos":[39.5,20.0],"_fsDir":0.0,"_fsRad":20.0,"_fsSPic":[[{"_sfType":{"tag":"FlatFaces","_topBoxSize":4},"_sfVs":[[-39.5,18.0,53.0],[-39.5,18.0,50.0],[0.5,18.0,53.0],[0.5,18.0,50.0],[0.5,21.0,53.0],[0.5,21.0,50.0],[-39.5,21.0,53.0],[-39.5,21.0,50.0]],"_sfColor":[1.0,0.5,0.0,1.0],"_sfShadowImportance":"Typical","_sfSize":"Medium"}],[]]}]],"_corpses":[],"_lightSources":[[0,{"_lsID":0,"_lsParam":{"_lsPos":[201.87006,275.09988,94.0],"_lsRad":200.0,"_lsCol":[0.6,0.6,0.6]}}],[1,{"_lsID":1,"_lsParam":{"_lsPos":[134.57368,261.55255,45.0],"_lsRad":450.0,"_lsCol":[0.75,0.75,0.75]}}],[2,{"_lsID":2,"_lsParam":{"_lsPos":[19.915852,90.05403,94.0],"_lsRad":200.0,"_lsCol":[0.6,0.6,0.6]}}],[3,{"_lsID":3,"_lsParam":{"_lsPos":[20.0,39.5,45.0],"_lsRad":450.0,"_lsCol":[0.75,0.75,0.75]}}]],"_lights":[],"_seenLocations":[[0,[{"tag":"WdYouPos"},"CURRENT POSITION"]],[1,[{"tag":"WdP2Const","contents":[0.0,0.0]},"START POSITION"]]],"_selLocation":0,"_distortions":[],"_lClock":0,"_lTestString":[],"_lTestInt":0,"_hotkeys":[],"_imHotkeys":{"_unNIntMap":[]},"_lAimPos":[0.0,0.0],"_lInvLock":false,"_respawnPos":[[20.0,20.0],1.5707964]},"_cwGen":{"_cwgParams":{"_sensorCoding":[["LaserSensor",["AZURE","SQUARE"]],["ElectricSensor",["RED","THREELINES"]],["ThermalSensor",["ORANGE","CIRCLE"]],["PhysicalSensor",["GREEN","PLUS"]]]},"_cwgWorldBounds":{"_bdMinX":-95.47006,"_bdMaxX":281.14737,"_bdMinY":0.0,"_bdMaxY":332.32053},"_cwgGameRooms":[{"_grViewpoints":[[40.0,80.0],[0.0,80.0],[0.0,0.0],[40.0,0.0],[20.0,10.0],[20.0,70.0],[20.0,70.0]],"_grViewpointsEx":[[30.0,70.0],[10.0,70.0]],"_grBound":[[72.31875,-38.150997],[94.829636,25.875957],[94.829636,54.124043],[72.31875,118.151],[-32.31875,118.151],[-54.82963,54.124043],[-54.82963,25.875957],[-32.31875,-38.150997]],"_grDir":0.0,"_grLinkDirs":[1.5707964],"_grName":"Corridor"},{"_grViewpoints":[[77.73503,70.0],[135.47006,169.99998],[77.73503,270.0],[-37.735035,270.0],[-95.47006,170.0],[-37.735043,70.00002],[-66.60254,120.0],[19.999996,270.0],[-66.60254,220.0],[106.60254,119.999985]],"_grViewpointsEx":[[111.60254,211.33974],[101.60254,228.66025],[10.0,69.99999],[30.0,69.99999]],"_grBound":[[-62.73505,26.698761],[102.73503,26.698715],[185.47006,169.99997],[102.73503,313.30127],[-62.735035,313.30127],[-145.47006,169.99998]],"_grDir":3.1415927,"_grLinkDirs":[0.5235988,4.712389],"_grName":"6gon"},{"_grViewpoints":[[168.56406,232.67949],[112.272415,200.17949],[92.272415,234.82051],[122.583305,252.32051],[178.87497,284.8205],[198.87497,250.17949],[188.56406,198.03847],[148.56407,267.3205],[128.56407,301.96152],[102.583305,286.96152],[142.58331,217.67949],[162.5833,183.03848],[106.60254,220.0]],"_grViewpointsEx":[[189.54483,256.33975],[179.54483,273.66025],[101.60254,228.66025],[111.60254,211.33975]],"_grBound":[[80.53114,161.54672],[167.45633,133.2765],[229.22267,168.93732],[248.20258,258.35184],[210.61624,323.4533],[123.69104,351.7235],[61.924694,316.06268],[42.94481,226.64816]],"_grDir":2.0943952,"_grLinkDirs":[0.5235988,3.6651914],"_grName":"defaultRoom"},{"_grViewpoints":[[174.54483,282.3205],[194.54483,247.6795],[281.14737,297.6795],[261.14737,332.32053],[184.54483,265.0],[243.82686,322.32053],[271.14737,315.0],[263.82687,287.6795],[211.86534,257.6795],[191.86534,292.32053],[271.14737,315.0]],"_grViewpointsEx":[[179.54483,273.66025],[189.54483,256.33975]],"_grBound":[[275.91846,387.44696],[119.41843,297.0916],[179.77377,192.55309],[336.2738,282.90842]],"_grDir":2.0943952,"_grLinkDirs":[3.6651917],"_grName":"autoRect"}],"_cwgRoomClipping":[{"_cpPoints":[[192.7147,240.84937],[287.9775,295.84937],[262.97748,339.15063],[167.7147,284.15063]],"_cpCen":[227.8461,290.0],"_cpRad":60.41524},{"_cpPoints":[[157.22433,272.3205],[105.262794,242.32051],[125.262794,207.67949],[177.22433,237.67949]],"_cpCen":[141.24356,240.0],"_cpRad":36.055523},{"_cpPoints":[[128.56407,301.96152],[102.583305,286.96152],[162.5833,183.03848],[188.56406,198.03847]],"_cpCen":[145.57367,242.5],"_cpRad":61.846596},{"_cpPoints":[[77.73503,270.0],[-37.735035,270.0],[-95.47006,170.0],[-37.735043,70.00002],[77.73503,70.0],[135.47006,169.99998]],"_cpCen":[19.999998,170.0],"_cpRad":115.47006},{"_cpPoints":[[-5.0,50.0],[-5.0,30.0],[45.0,30.0],[45.0,50.0]],"_cpCen":[20.0,40.0],"_cpRad":26.925823}],"_cwgSeed":7114951007332849727},"_cClock":0,"_cwTiles":[{"_tilePoly":[[0.0,80.0],[0.0,0.0],[40.0,0.0],[40.0,80.0]],"_tileZero":[0.0,80.0],"_tileTangentPos":[0.0,30.0],"_tileArrayZ":5.0},{"_tilePoly":[[77.73503,270.0],[-37.735035,270.0],[-95.47006,170.0],[-37.735043,70.00002],[77.73503,70.0],[135.47006,169.99998]],"_tileZero":[77.73503,270.0],"_tileTangentPos":[27.735027,270.0],"_tileArrayZ":2.0},{"_tilePoly":[[188.56406,198.03847],[198.87497,250.17949],[178.87497,284.8205],[128.56407,301.96152],[102.583305,286.96152],[92.272415,234.82051],[112.272415,200.17949],[162.5833,183.03848]],"_tileZero":[150.00745,334.8205],"_tileTangentPos":[100.00745,334.8205],"_tileArrayZ":2.0},{"_tilePoly":[[194.54483,247.6795],[281.14737,297.6795],[261.14737,332.32053],[174.54483,282.3205]],"_tileZero":[281.14737,297.6795],"_tileTangentPos":[256.14737,340.98077],"_tileArrayZ":16.0}],"_pathGraph":[[0,[[[1,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,10.0],"_peDist":50.0,"_peObstacles":[]}]]],[20.0,10.0],[[1,[{"_peStart":[20.0,10.0],"_peEnd":[20.0,60.0],"_peDist":50.0,"_peObstacles":[]}]]]]],[1,[[[0,[{"_peStart":[20.0,10.0],"_peEnd":[20.0,60.0],"_peDist":50.0,"_peObstacles":[]}]],[2,[{"_peStart":[20.0,70.0],"_peEnd":[20.0,60.0],"_peDist":10.0,"_peObstacles":[]}]]],[20.0,60.0],[[0,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,10.0],"_peDist":50.0,"_peObstacles":[]}]],[2,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,70.0],"_peDist":10.0,"_peObstacles":[]}]]]]],[2,[[[1,[{"_peStart":[20.0,60.0],"_peEnd":[20.0,70.0],"_peDist":10.0,"_peObstacles":[]}]]],[20.0,70.0],[[1,[{"_peStart":[20.0,70.0],"_peEnd":[20.0,60.0],"_peDist":10.0,"_peObstacles":[]}]]]]],[3,[[[4,[{"_peStart":[141.24356,240.0],"_peEnd":[106.60254,220.0],"_peDist":40.000004,"_peObstacles":["DoorObstacle"]}]]],[106.60254,220.0],[[4,[{"_peStart":[106.60254,220.0],"_peEnd":[141.24356,240.0],"_peDist":40.000004,"_peObstacles":["DoorObstacle"]}]]]]],[4,[[[3,[{"_peStart":[106.60254,220.0],"_peEnd":[141.24356,240.0],"_peDist":40.000004,"_peObstacles":["DoorObstacle"]}]],[5,[{"_peStart":[184.54483,265.0],"_peEnd":[141.24356,240.0],"_peDist":50.0,"_peObstacles":["DoorObstacle"]}]]],[141.24356,240.0],[[3,[{"_peStart":[141.24356,240.0],"_peEnd":[106.60254,220.0],"_peDist":40.000004,"_peObstacles":["DoorObstacle"]}]],[5,[{"_peStart":[141.24356,240.0],"_peEnd":[184.54483,265.0],"_peDist":50.0,"_peObstacles":["DoorObstacle"]}]]]]],[5,[[[4,[{"_peStart":[141.24356,240.0],"_peEnd":[184.54483,265.0],"_peDist":50.0,"_peObstacles":["DoorObstacle"]}]],[7,[{"_peStart":[201.86534,275.0],"_peEnd":[184.54483,265.0],"_peDist":20.000002,"_peObstacles":[]}]]],[184.54483,265.0],[[4,[{"_peStart":[184.54483,265.0],"_peEnd":[141.24356,240.0],"_peDist":50.0,"_peObstacles":["DoorObstacle"]}]],[7,[{"_peStart":[184.54483,265.0],"_peEnd":[201.86534,275.0],"_peDist":20.000002,"_peObstacles":[]}]]]]],[6,[[[7,[{"_peStart":[201.86534,275.0],"_peEnd":[191.86534,292.32053],"_peDist":20.000015,"_peObstacles":[]}]]],[191.86534,292.32053],[[7,[{"_peStart":[191.86534,292.32053],"_peEnd":[201.86534,275.0],"_peDist":20.000015,"_peObstacles":[]}]]]]],[7,[[[5,[{"_peStart":[184.54483,265.0],"_peEnd":[201.86534,275.0],"_peDist":20.000002,"_peObstacles":[]}]],[6,[{"_peStart":[191.86534,292.32053],"_peEnd":[201.86534,275.0],"_peDist":20.000015,"_peObstacles":[]}]],[7,[{"_peStart":[201.86534,275.0],"_peEnd":[201.86534,275.0],"_peDist":0.0,"_peObstacles":[]}]],[8,[{"_peStart":[211.86534,257.6795],"_peEnd":[201.86534,275.0],"_peDist":19.999989,"_peObstacles":[]}]],[10,[{"_peStart":[253.82686,305.0],"_peEnd":[201.86534,275.0],"_peDist":59.999992,"_peObstacles":[]}]]],[201.86534,275.0],[[5,[{"_peStart":[201.86534,275.0],"_peEnd":[184.54483,265.0],"_peDist":20.000002,"_peObstacles":[]}]],[6,[{"_peStart":[201.86534,275.0],"_peEnd":[191.86534,292.32053],"_peDist":20.000015,"_peObstacles":[]}]],[7,[{"_peStart":[201.86534,275.0],"_peEnd":[201.86534,275.0],"_peDist":0.0,"_peObstacles":[]}]],[8,[{"_peStart":[201.86534,275.0],"_peEnd":[211.86534,257.6795],"_peDist":19.999989,"_peObstacles":[]}]],[10,[{"_peStart":[201.86534,275.0],"_peEnd":[253.82686,305.0],"_peDist":59.999992,"_peObstacles":[]}]]]]],[8,[[[7,[{"_peStart":[201.86534,275.0],"_peEnd":[211.86534,257.6795],"_peDist":19.999989,"_peObstacles":[]}]]],[211.86534,257.6795],[[7,[{"_peStart":[211.86534,257.6795],"_peEnd":[201.86534,275.0],"_peDist":19.999989,"_peObstacles":[]}]]]]],[9,[[[10,[{"_peStart":[253.82686,305.0],"_peEnd":[243.82686,322.32053],"_peDist":20.000015,"_peObstacles":[]}]]],[243.82686,322.32053],[[10,[{"_peStart":[243.82686,322.32053],"_peEnd":[253.82686,305.0],"_peDist":20.000015,"_peObstacles":[]}]]]]],[10,[[[7,[{"_peStart":[201.86534,275.0],"_peEnd":[253.82686,305.0],"_peDist":59.999992,"_peObstacles":[]}]],[9,[{"_peStart":[243.82686,322.32053],"_peEnd":[253.82686,305.0],"_peDist":20.000015,"_peObstacles":[]}]],[10,[{"_peStart":[253.82686,305.0],"_peEnd":[253.82686,305.0],"_peDist":0.0,"_peObstacles":[]}]],[11,[{"_peStart":[263.82687,287.6795],"_peEnd":[253.82686,305.0],"_peDist":19.999996,"_peObstacles":[]}]],[12,[{"_peStart":[271.14737,315.0],"_peEnd":[253.82686,305.0],"_peDist":20.000002,"_peObstacles":[]}]]],[253.82686,305.0],[[7,[{"_peStart":[253.82686,305.0],"_peEnd":[201.86534,275.0],"_peDist":59.999992,"_peObstacles":[]}]],[9,[{"_peStart":[253.82686,305.0],"_peEnd":[243.82686,322.32053],"_peDist":20.000015,"_peObstacles":[]}]],[10,[{"_peStart":[253.82686,305.0],"_peEnd":[253.82686,305.0],"_peDist":0.0,"_peObstacles":[]}]],[11,[{"_peStart":[253.82686,305.0],"_peEnd":[263.82687,287.6795],"_peDist":19.999996,"_peObstacles":[]}]],[12,[{"_peStart":[253.82686,305.0],"_peEnd":[271.14737,315.0],"_peDist":20.000002,"_peObstacles":[]}]]]]],[11,[[[10,[{"_peStart":[253.82686,305.0],"_peEnd":[263.82687,287.6795],"_peDist":19.999996,"_peObstacles":[]}]]],[263.82687,287.6795],[[10,[{"_peStart":[263.82687,287.6795],"_peEnd":[253.82686,305.0],"_peDist":19.999996,"_peObstacles":[]}]]]]],[12,[[[10,[{"_peStart":[253.82686,305.0],"_peEnd":[271.14737,315.0],"_peDist":20.000002,"_peObstacles":[]}]]],[271.14737,315.0],[[10,[{"_peStart":[271.14737,315.0],"_peEnd":[253.82686,305.0],"_peDist":20.000002,"_peObstacles":[]}]]]]]],"_numberFloorVerxs":0,"_chasms":[],"_numberChasmVerxs":0} \ No newline at end of file diff --git a/src/Dodge/Data/GenWorld.hs b/src/Dodge/Data/GenWorld.hs index ef80952d0..524f953ba 100644 --- a/src/Dodge/Data/GenWorld.hs +++ b/src/Dodge/Data/GenWorld.hs @@ -110,8 +110,9 @@ data Room = Room , _rmPos :: [RoomPos] , _rmPath :: S.Set (Point2, Point2) , _rmPmnts :: [Placement] - , _rmInPmnt :: [InPlacement] - , _rmOutPmnt :: [OutPlacement] + , _rmInPmnt :: [InPlacement] + -- note that in placements form a list: multiple InPlacements can use the same id + , _rmOutPmnt :: IM.IntMap Placement , _rmBound :: [[Point2]] , _rmFloor :: Floor , _rmName :: String @@ -128,13 +129,10 @@ data Room = Room , _rmClusterStatus :: ClusterStatus } -data OutPlacement = OutPlacement - { _opPlacement :: Placement - , _opPlacementID :: Int - } +--data OutPlacement = OutPlacement { _opPlacement :: Placement } data InPlacement = InPlacement - { _ipPlacement :: [Placement] -> Placement + { _ipPlacement :: World -> [Placement] -> Placement , _ipPlacementID :: Int } diff --git a/src/Dodge/Default/Wall.hs b/src/Dodge/Default/Wall.hs index f743fc3ef..7015ee199 100644 --- a/src/Dodge/Default/Wall.hs +++ b/src/Dodge/Default/Wall.hs @@ -79,7 +79,8 @@ defaultDirtWall = } dirtColor :: Color -dirtColor = V4 (150 / 256) (75 / 256) 0 (250 / 256) +dirtColor = dark $ dark orange +--dirtColor = V4 (150 / 256) (75 / 256) 0 (250 / 256) defaultWindow :: Wall defaultWindow = diff --git a/src/Dodge/Layout.hs b/src/Dodge/Layout.hs index dfeaa4ad2..4db1da63f 100644 --- a/src/Dodge/Layout.hs +++ b/src/Dodge/Layout.hs @@ -97,7 +97,7 @@ doInPlacements (im, w) = doRoomInPlacements :: IM.IntMap [Placement] -> GenWorld -> Room -> (GenWorld, Room) doRoomInPlacements im w rm = foldr f (w, rm) $ _rmInPmnt rm where - f (InPlacement plf i) (w', r') = fst $ placeSpot (w', r') (plf $ im IM.! i) + f (InPlacement plf i) (w', r') = fst $ placeSpot (w', r') (plf (w' ^. gwWorld) $ im IM.! i) doOutPlacements :: GenWorld -> (IM.IntMap [Placement], GenWorld) doOutPlacements w = @@ -108,9 +108,9 @@ doRoomOutPlacements :: (IM.IntMap [Placement], GenWorld) -> Room -> ((IM.IntMap [Placement], GenWorld), Room) -doRoomOutPlacements imw r = foldr f (imw, r) $ _rmOutPmnt r +doRoomOutPlacements imw r = foldr f (imw, r) $ IM.toList $ _rmOutPmnt r where - f (OutPlacement pl i) ((im, w), rm) = + f (i, pl) ((im, w), rm) = let ((neww, newrm), plmnts) = placeSpot (w, rm) pl in ((IM.insert i plmnts im, neww), newrm) diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 57a421245..ea78ff5c5 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -26,7 +26,8 @@ import NewInt import System.Random -- when placing a placement, we update the world and the room and assign an id --- to the placement +-- to the placement. This id should be associated with the type of placement and +-- match up with the created id for the object (creature id, flitid id, etc) placeSpot :: (GenWorld, Room) -> Placement -> ((GenWorld, Room), [Placement]) placeSpot (w, rm) plmnt = case plmnt of Placement{_plSpot = PSRoomRand i f} -> placeSpotRoomRand rm i f plmnt w diff --git a/src/Dodge/PlacementSpot.hs b/src/Dodge/PlacementSpot.hs index ec5591a6e..6fe7a0725 100644 --- a/src/Dodge/PlacementSpot.hs +++ b/src/Dodge/PlacementSpot.hs @@ -1,52 +1,51 @@ --{-# LANGUAGE LambdaCase #-} -module Dodge.PlacementSpot - ( atFstLnkOut - , atNthLnkOutShiftBy - , rpIsOnPath - , rpIsOffPath - , rpOffPathFromEdge - , rpOnPathFromEdge - , useUnusedLnk - , psRandRanges - , useRoomPosCond - , isUsedLnkUnplaced - , anyUnusedSpot - , unusedSpotAwayFromLink - , isUnusedLnk - , isInLnk - , isOutLnk - , unusedSpotNearInLink - , randDirPS - , unusedSpotAwayFromInLink - , useLnkRoomPos - , atFstLnkOutShiftInward - , atFstLnkOutShiftBy - , atNthLnkOutShiftInward - , unusedOffPathAwayFromLink - , setFallback - , twoRoomPoss - , isUnusedLnkType - , rprBoolShift - , rprShift - , rprBool - , shiftInBy - , resetPLUse - , psposAddLabel - , shiftByV2 - , usedRoomLinkPoss - , usedRoomInLinkPoss - , atNthLinkOut - ) where - -import Dodge.Data.GenWorld -import Geometry +module Dodge.PlacementSpot ( + atFstLnkOut, + atNthLnkOutShiftBy, + rpIsOnPath, + rpIsOffPath, + rpOffPathFromEdge, + rpOnPathFromEdge, + useUnusedLnk, + psRandRanges, + useRoomPosCond, + isUsedLnkUnplaced, + anyUnusedSpot, + unusedSpotAwayFromLink, + isUnusedLnk, + isInLnk, + isOutLnk, + unusedSpotNearInLink, + randDirPS, + unusedSpotAwayFromInLink, + useLnkRoomPos, + atFstLnkOutShiftInward, + atFstLnkOutShiftBy, + atNthLnkOutShiftInward, + unusedOffPathAwayFromLink, + setFallback, + twoRoomPoss, + isUnusedLnkType, + rprBoolShift, + rprShift, + rprBool, + shiftInBy, + resetPLUse, + psposAddLabel, + shiftByV2, + usedRoomLinkPoss, + usedRoomInLinkPoss, + atNthLinkOut, +) where import Control.Lens -import Data.Maybe -import Data.Bifunctor import Control.Monad.State -import System.Random +import Data.Bifunctor +import Data.Maybe import qualified Data.Set as S +import Dodge.Data.GenWorld +import Geometry +import System.Random setDirPS :: Float -> PlacementSpot -> PlacementSpot setDirPS a ps = case ps of @@ -57,16 +56,16 @@ setDirPS a ps = case ps of randDirPS :: RandomGen g => PlacementSpot -> State g PlacementSpot randDirPS ps = do - a <- state $ randomR (0,pi*2) + a <- state $ randomR (0, pi * 2) return $ setDirPS a ps isUnusedLnk :: RoomPos -> Room -> Bool isUnusedLnk rp _ = case _rpLinkStatus rp of - UnusedLink {} -> _rpPlacementUse rp == 0 + UnusedLink{} -> _rpPlacementUse rp == 0 _ -> False anyUnusedSpot :: PlacementSpot -anyUnusedSpot = rprBool $ \rp _ -> _rpLinkStatus rp == NotLink && _rpPlacementUse rp == 0 +anyUnusedSpot = rprBool $ \rp _ -> _rpLinkStatus rp == NotLink && _rpPlacementUse rp == 0 psposAddLabel :: RoomPosType -> PlacementSpot -> PlacementSpot psposAddLabel lab = psSelect %~ (\f rp r -> f rp r & _Just . _2 . rpType %~ S.insert lab) @@ -77,23 +76,25 @@ rprBool t = PSPos (useRoomPosRoomCond t) (const id) Nothing rpIsOnPath :: RoomPos -> Bool rpIsOnPath = any f . _rpType where - f RoomPosOnPath {} = True + f RoomPosOnPath{} = True f _ = False + rpIsOffPath :: RoomPos -> Bool rpIsOffPath = any f . _rpType where - f RoomPosOffPath {} = True + f RoomPosOffPath{} = True f _ = False + rpOffPathFromEdge :: PathFromEdge -> RoomPos -> Bool rpOffPathFromEdge pe = any f . _rpType where - f rt = maybe False (pe `elem`) (rt ^? offPathFromEdges) + f rt = maybe False (pe `elem`) (rt ^? offPathFromEdges) -- test whether a roomPos is on the path with a given from edge value rpOnPathFromEdge :: PathFromEdge -> RoomPos -> Bool rpOnPathFromEdge pe = any f . _rpType where - f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges) + f rt = maybe False (pe `elem`) (rt ^? onPathFromEdges) resetPLUse :: PlacementSpot -> PlacementSpot resetPLUse (PSPos f g fallback) = PSPos f' g fallback @@ -101,58 +102,64 @@ resetPLUse (PSPos f g fallback) = PSPos f' g fallback f' rp = fmap (second (rpPlacementUse .~ 0)) . f rp resetPLUse _ = error "Tried to reset _rpPlacementUse of non PSPos placement" -rprShift - :: (RoomPos -> Room -> Maybe (Point2,Float)) - -> PlacementSpot +rprShift :: + (RoomPos -> Room -> Maybe (Point2, Float)) -> + PlacementSpot rprShift t = PSPos f (const id) Nothing where f rp r = case t rp r of - Just (p,a) -> Just (PS p a, rp & rpPlacementUse +~ 1) - Nothing -> Nothing + Just (p, a) -> Just (PS p a, rp & rpPlacementUse +~ 1) + Nothing -> Nothing -rprBoolShift :: (RoomPos -> Room -> Bool) - -> ((Point2,Float) -> (Point2,Float)) - -> PlacementSpot +rprBoolShift :: + (RoomPos -> Room -> Bool) -> + ((Point2, Float) -> (Point2, Float)) -> + PlacementSpot rprBoolShift t shift = PSPos f (const id) Nothing where f rp r - | t rp r = Just (PS p a, rp & rpPlacementUse +~ 1) + | t rp r = Just (PS p a, rp & rpPlacementUse +~ 1) | otherwise = Nothing where - (p,a) = shift (_rpPos rp, _rpDir rp) + (p, a) = shift (_rpPos rp, _rpDir rp) unusedSpotAwayFromLink :: Float -> PlacementSpot -unusedSpotAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink - && _rpPlacementUse rp == 0 - && all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r) +unusedSpotAwayFromLink x = rprBool $ \rp r -> + _rpLinkStatus rp == NotLink + && _rpPlacementUse rp == 0 + && all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r) setFallback :: Placement -> Placement -> Placement -setFallback fallback - = (plSpot . psFallback %~ maybe (Just fallback) Just) - . (plIDCont %~ fmap (fmap (fmap $ setFallback fallback)) - ) +setFallback fallback = + (plSpot . psFallback %~ maybe (Just fallback) Just) + . ( plIDCont %~ fmap (fmap (fmap $ setFallback fallback)) + ) unusedOffPathAwayFromLink :: Float -> PlacementSpot ---unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink -unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpPlacementUse rp == 0 - && all ( (>x) . dist (_rpPos rp) ) (usedRoomLinkPoss r) - && rpIsOffPath rp +--unusedOffPathAwayFromLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink +unusedOffPathAwayFromLink x = rprBool $ \rp r -> + _rpPlacementUse rp == 0 + && all ((> x) . dist (_rpPos rp)) (usedRoomLinkPoss r) + && rpIsOffPath rp unusedSpotAwayFromInLink :: Float -> PlacementSpot -unusedSpotAwayFromInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink - && _rpPlacementUse rp == 0 - && all ( (>x) . dist (_rpPos rp) ) (usedRoomInLinkPoss r) +unusedSpotAwayFromInLink x = rprBool $ \rp r -> + _rpLinkStatus rp == NotLink + && _rpPlacementUse rp == 0 + && all ((> x) . dist (_rpPos rp)) (usedRoomInLinkPoss r) --twoUnusedLinks :: (PlacementSpot -> PlacementSpot -> Placement) -> Placement --twoUnusedLinks = twoRoomPoss isUnusedLnk isUnusedLnk -twoRoomPoss :: (RoomPos -> Room -> Bool) - -> (RoomPos -> Room -> Bool) - -> (PlacementSpot -> PlacementSpot -> Placement) - -> Placement -twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing - $ \_ pl1 -> Just $ Placement 10 (rprBool cond2) PutNothing Nothing - $ \_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2) +twoRoomPoss :: + (RoomPos -> Room -> Bool) -> + (RoomPos -> Room -> Bool) -> + (PlacementSpot -> PlacementSpot -> Placement) -> + Placement +twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing $ + \_ pl1 -> Just $ + Placement 10 (rprBool cond2) PutNothing Nothing $ + \_ pl2 -> Just $ f (_plSpot pl1) (_plSpot pl2) --isUnusedLnk :: RoomPos -> Bool --isUnusedLnk rp = case _rpLinkStatus rp of @@ -161,26 +168,27 @@ twoRoomPoss cond1 cond2 f = Placement 10 (rprBool cond1) PutNothing Nothing isInLnk :: RoomPos -> Bool isInLnk rp = case _rpLinkStatus rp of - UsedInLink {} -> _rpPlacementUse rp == 0 + UsedInLink{} -> _rpPlacementUse rp == 0 _ -> False + isOutLnk :: RoomPos -> Bool isOutLnk rp = case _rpLinkStatus rp of - UsedOutLink {} -> _rpPlacementUse rp == 0 + UsedOutLink{} -> _rpPlacementUse rp == 0 _ -> False useUnusedLnk :: PlacementSpot useUnusedLnk = rprBool isUnusedLnk isUsedLnkUnplaced :: RoomPos -> Bool -isUsedLnkUnplaced rp = case _rpLinkStatus rp of - UsedOutLink {} -> _rpPlacementUse rp == 0 - UsedInLink {} -> _rpPlacementUse rp == 0 +isUsedLnkUnplaced rp = case _rpLinkStatus rp of + UsedOutLink{} -> _rpPlacementUse rp == 0 + UsedInLink{} -> _rpPlacementUse rp == 0 _ -> False -useRoomPosCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) +useRoomPosCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot, RoomPos) useRoomPosCond f = useRoomPosRoomCond $ \rp r -> f rp r -useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) +useRoomPosRoomCond :: (RoomPos -> Room -> Bool) -> RoomPos -> Room -> Maybe (PlacementSpot, RoomPos) useRoomPosRoomCond t rp r | t rp r = Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1) | otherwise = Nothing @@ -191,23 +199,24 @@ isUnusedLnkType rlt rp _ = case _rpLinkStatus rp of _ -> False unusedSpotNearInLink :: Float -> PlacementSpot -unusedSpotNearInLink x = rprBool $ \rp r -> _rpLinkStatus rp == NotLink - && _rpPlacementUse rp == 0 - && any ( ( + _rpLinkStatus rp == NotLink + && _rpPlacementUse rp == 0 + && any ((< x) . dist (_rpPos rp)) (usedRoomInLinkPoss r) usedRoomInLinkPoss :: Room -> [Point2] usedRoomInLinkPoss r = mapMaybe f $ _rmPos r where f rp = case _rpLinkStatus rp of - UsedInLink {} -> Just $ _rpPos rp + UsedInLink{} -> Just $ _rpPos rp _ -> Nothing usedRoomLinkPoss :: Room -> [Point2] usedRoomLinkPoss r = mapMaybe f $ _rmPos r where f rp = case _rpLinkStatus rp of - UsedInLink {} -> Just $ _rpPos rp - UsedOutLink {} -> Just $ _rpPos rp + UsedInLink{} -> Just $ _rpPos rp + UsedOutLink{} -> Just $ _rpPos rp _ -> Nothing atFstLnkOut :: PlacementSpot @@ -216,44 +225,45 @@ atFstLnkOut = atNthLinkOut 0 atNthLinkOut :: Int -> PlacementSpot atNthLinkOut n = rprBool $ \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n -atNthLnkOutShiftBy :: Int -> ((Point2,Float) -> (Point2,Float)) -> PlacementSpot -atNthLnkOutShiftBy n = rprBoolShift - $ \ rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n +atNthLnkOutShiftBy :: Int -> ((Point2, Float) -> (Point2, Float)) -> PlacementSpot +atNthLnkOutShiftBy n = rprBoolShift $ + \rp _ -> rp ^? rpLinkStatus . rplsChildNum == Just n + --atNthLnkOutShiftBy n theshift = PSPos f (const id) Nothing -- where -- f rp _ = case _rpLinkStatus rp of --- UsedOutLink {_rplsChildNum = i} | i == n +-- UsedOutLink {_rplsChildNum = i} | i == n -- -> Just (PS p a, rp & rpPlacementUse +~ 1) -- _ -> Nothing -- where -- (p,a) = theshift (_rpPos rp,_rpDir rp) -atFstLnkOutShiftBy :: ((Point2,Float) -> (Point2,Float)) -> PlacementSpot +atFstLnkOutShiftBy :: ((Point2, Float) -> (Point2, Float)) -> PlacementSpot atFstLnkOutShiftBy = atNthLnkOutShiftBy 0 atFstLnkOutShiftInward :: Float -> PlacementSpot atFstLnkOutShiftInward = atNthLnkOutShiftInward 0 atNthLnkOutShiftInward :: Int -> Float -> PlacementSpot -atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n - $ \ (p,a) -> (p +.+ rotateV a (V2 0 (negate x)),a) +atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n $ + \(p, a) -> (p +.+ rotateV a (V2 0 (negate x)), a) -shiftInBy :: Float -> (Point2,Float) -> (Point2,Float) -shiftInBy x (p,a) = (p +.+ rotateV a (V2 0 (negate x)),a) +shiftInBy :: Float -> (Point2, Float) -> (Point2, Float) +shiftInBy x (p, a) = (p +.+ rotateV a (V2 0 (negate x)), a) -shiftByV2 :: Point2 -> (Point2,Float) -> (Point2,Float) -shiftByV2 x (p,a) = (p +.+ rotateV a x,a) +shiftByV2 :: Point2 -> (Point2, Float) -> (Point2, Float) +shiftByV2 x (p, a) = (p +.+ rotateV a x, a) -- this should probably check the placement use, but so should others: should -- unify these -useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot,RoomPos) +useLnkRoomPos :: RoomPos -> Room -> Maybe (PlacementSpot, RoomPos) useLnkRoomPos rp _ = case _rpLinkStatus rp of - UnusedLink {} -> Just (PS (_rpPos rp) (_rpDir rp) , rp & rpPlacementUse +~ 1) + UnusedLink{} -> Just (PS (_rpPos rp) (_rpDir rp), rp & rpPlacementUse +~ 1) _ -> Nothing -psRandRanges :: (Float,Float) -> (Float,Float) -> (Float,Float) -> State StdGen (Point2,Float) +psRandRanges :: (Float, Float) -> (Float, Float) -> (Float, Float) -> State StdGen (Point2, Float) psRandRanges xranges yranges aranges = do x <- state $ randomR xranges y <- state $ randomR yranges a <- state $ randomR aranges - return (V2 x y,a) + return (V2 x y, a) diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 176fce15e..27d4437f4 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -3,6 +3,7 @@ {- Rooms that contain two doors and a switch alternating both. -} module Dodge.Room.Airlock where +import Dodge.Annotation.Data import Dodge.Data.GenWorld import Dodge.Default.Door import Dodge.Default.Room @@ -14,12 +15,36 @@ import Dodge.RoomLink import Geometry import Picture import RandomHelp +import Control.Lens -- | A passage with a switch that opens forward access while closing backwards access. airlock :: RandomGen g => State g Room airlock = takeOne [airlock0, airlock90, airlockCrystal, airlockZ] --airlock = takeOne [airlockCrystal] +decontamRoom :: State LayoutVars Room +decontamRoom = do + return $ defaultRoom + & rmPolys .~ [rectNSWE 100 0 0 40, switchcut] + & rmLinks .~ muout lnks ++ muin [last lnks] + & rmPath .~ foldMap doublePairSet [(V2 20 95, V2 20 45), (V2 20 45, V2 20 5)] + & rmPmnts .~ + [ pContID (PS (V2 (-35) 50) (negate $ pi / 2)) (PutButton $ makeSwitch col red NoWorldEffect NoWorldEffect) $ + \btid -> Just $ + putDoubleDoorThen DoorObstacle thewall (WdBlNegate $ WdBlBtOn btid) 1 (V2 0 20) (V2 40 20) 2 $ + \_ _ -> Just $ putDoubleDoor DoorObstacle thewall (WdBlBtOn btid) (V2 0 80) (V2 40 80) 2 + , invisibleWall $ rectNSWE 60 40 (-40) (-30) + , spanLightI (V2 (-2) 30) (V2 (-2) 70) + ] + & rmBound .~ [rectNSWE 75 15 0 40, switchcut] + where + thewall = switchWallCol col + switchcut = rectNSWE 65 35 (-40) 80 + lnks = + [ (V2 20 95, 0) + , (V2 20 5, pi) + ] + col = dim $ dim $ bright red -- | Straight airlock airlock0 :: Room @@ -124,7 +149,7 @@ airlock90 = defaultRoom { _rmPolys = [ rectNSWE 100 10 10 100 - , rectNSWE 20 0 20 60 + , rectNSWE 20 (-0.1) 20 60 , rectNSWE 20 60 20 0 , map toV2 diff --git a/src/Dodge/Room/Door.hs b/src/Dodge/Room/Door.hs index 2101910ae..972c1abaf 100644 --- a/src/Dodge/Room/Door.hs +++ b/src/Dodge/Room/Door.hs @@ -39,6 +39,6 @@ triggerDoorRoom inplid = -- note no bounds } where - f (pmnt : _) = putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2 - f _ = error "tried to put a door using an empty placement list" + f _ (pmnt : _) = putDoubleDoor DoorObstacle (switchWallCol red) (cond pmnt) (V2 0 20) (V2 40 20) 2 + f _ _ = error "tried to put a door using an empty placement list" cond pmnt = WdTrig $ fromJust (_plMID pmnt) diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index 89d76f3f0..c03459685 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -35,24 +35,24 @@ cenLasTur = covershape = rectNSWE 10 (-10) (-20) 20 lightSensInsideDoor :: Int -> Room -> Room -lightSensInsideDoor outplid rm = +lightSensInsideDoor i rm = rm & rmPmnts .++~ [ psPt atFstLnkOut (PutForeground $ floorWire (V2 20 0) (V2 20 (-100))) , psPt atFstLnkOut (PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100))) , psPt atFstLnkOut (PutForeground $ verticalWire (V2 20 0) 0 80) ] - & rmOutPmnt .~ [OutPlacement (sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100)) outplid] + & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100)) lightSensByDoor :: Int -> Room -> Room -lightSensByDoor outplid rm = +lightSensByDoor i rm = rm & rmPmnts .++~ [ psPt atFstLnkOut $ PutForeground $ verticalWire (V2 20 0) 0 80 , heightWallPS (atNthLnkOutShiftInward 1 100) 30 covershape , heightWallPS (atFstLnkOutShiftInward 100) 30 covershape ] - & rmOutPmnt .~ [OutPlacement (sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift)) outplid] + & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift)) where covershape = rectNSWE 10 (-10) (-20) 20 sensorshift (p, a) = (p +.+ rotateV a (V2 60 (-20)), a) @@ -76,21 +76,19 @@ healthAnalyserByDoor :: Int -> Room -> Room healthAnalyserByDoor = analyserByDoor (RequireHealth 1100) analyserByNthLink :: Int -> ProximityRequirement -> Int -> Room -> Room -analyserByNthLink n proxreq outplid rm = +analyserByNthLink n proxreq i rm = rm & rmPmnts .++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80 ] - & rmOutPmnt - .:~ OutPlacement + & rmOutPmnt . at i ?~ ( analyser proxreq (atNthLnkOutShiftBy n (\(p, a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) (atNthLnkOutShiftBy n sensorshift) ) - outplid where - sensorshift (p, a) = (p +.+ rotateV a (V2 30 (-10)), a) + sensorshift (p, a) = (p +.+ rotateV a (V2 (-30) (-10)), a) analyserByDoor :: ProximityRequirement -> Int -> Room -> Room analyserByDoor = analyserByNthLink 0 diff --git a/src/Dodge/Room/RoadBlock.hs b/src/Dodge/Room/RoadBlock.hs index a6cb5d01e..0d5ca61f6 100644 --- a/src/Dodge/Room/RoadBlock.hs +++ b/src/Dodge/Room/RoadBlock.hs @@ -61,7 +61,7 @@ longBlockedCorridor maxn = do n <- state $ randomR (0, maxn) let plmnts = [ sPS (V2 20 40) r $ dirtPoly $ square 10 - , sPS (V2 20 15) 0 putLamp +-- , sPS (V2 20 15) 0 putLamp ] sequence $ treeFromPost (replicate n $ shuffleLinks corridor) $ diff --git a/src/Dodge/Room/RunPast.hs b/src/Dodge/Room/RunPast.hs index 6b1a31ec8..fba5fb1dd 100644 --- a/src/Dodge/Room/RunPast.hs +++ b/src/Dodge/Room/RunPast.hs @@ -2,6 +2,7 @@ module Dodge.Room.RunPast ( lockedStart, ) where +import qualified Data.IntMap.Strict as IM import Color import qualified Data.Set as S import Dodge.Cleat @@ -50,7 +51,7 @@ lockedStart i = do map (over root $ rmConnectsTo .~ S.member theedge) doorrooms ++ [ return smallRoom - { _rmOutPmnt = [OutPlacement (putLitButOnPosExtTrig red useUnusedLnk) i] + { _rmOutPmnt = IM.singleton i (putLitButOnPosExtTrig red useUnusedLnk) , _rmPmnts = [plRRpt 0 (PutFlIt theweapon)] , _rmBound = [rectNSWE 70 30 0 40] } diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 7f8914f0f..2539b8910 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -56,7 +56,7 @@ sensAboveDoor sensetype wth ps = (\tp -> Just $ damageSensor sensetype wth (_plMID tp) ps) sensInsideDoor :: SensorType -> Int -> Room -> Room -sensInsideDoor senseType outplid rm = rm +sensInsideDoor senseType i rm = rm & rmName .++~ take 4 (show senseType) & rmPmnts .++~ [ psPt atFstLnkOut . PutForeground $ floorWire (V2 20 0) (V2 20 (-100)) @@ -66,4 +66,4 @@ sensInsideDoor senseType outplid rm = rm (textTerminal & tmCommands .:~ TCDamageCommand) & plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10) ] - & rmOutPmnt .~ [OutPlacement (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) outplid] + & rmOutPmnt . at i ?~ (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 6e6ddf521..f75cc9336 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -1,5 +1,9 @@ module Dodge.Room.Tutorial (tutAnoTree) where +import Dodge.Room.Corridor +import Dodge.Room.Airlock +import Dodge.Room.RoadBlock +import Dodge.Room.Room import Dodge.Item.Held.Cane import Dodge.Item.Ammo import Dodge.Annotation.Data @@ -22,7 +26,6 @@ import Dodge.Room.Ngon --import Dodge.Room.Link import Dodge.Room.Procedural import Dodge.Room.RezBox -import Dodge.Room.Room import Dodge.Room.Warning --import Dodge.Room.RoadBlock import Dodge.RoomLink @@ -40,25 +43,21 @@ import TreeHelp tutAnoTree :: Annotation tutAnoTree = OnwardList $ - [ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox + [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor + , AnTree $ tutDrop + , AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , AnTree corDoor , AnTree $ tutRooms - , AnTree $ pickupTut - , AnTree $ weaponTut + , AnTree $ tutDrop +-- , AnTree $ pickupTut +-- , AnTree $ weaponTut ] -weaponTut :: State LayoutVars (MetaTree Room String) -weaponTut = do +tutDrop :: State LayoutVars (MetaTree Room String) +tutDrop = do x <- shuffleLinks $ roomNgon 6 100 - & rmPmnts .:~ sps (PS 0 0) (PutFlIt $ burstRifle) - return $ tToBTree "WeaponTestTest" $ treePost $ [x] - -pickupTut :: State LayoutVars (MetaTree Room String) -pickupTut = do - i <- nextLayoutInt - x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i $ roomNgon 6 100 - & rmPmnts .:~ sps (PS 0 0) (PutFlIt $ drumMag & itConsumables ?~ 100) - return $ tToBTree "PickupTest" $ treePost $ [x, cleatOnward $ triggerDoorRoom i] + y <- decontamRoom + return $ tToBTree "TutDrop" $ treePost [x,y,roomRectAutoLinks 40 100] tutRooms :: State LayoutVars (MetaTree Room String) tutRooms = do @@ -67,12 +66,15 @@ tutRooms = do x <- shuffleLinks $ analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i $ addDoorAtNthLinkToggleTerminal 1 (makeTermPara s) j $ roomNgon 6 100 + bcor <- blockedCorridor return $ tToBTree "DoorTest" $ Node x - [Node (cleatOnward $ triggerDoorRoom i) [] - ,Node ( triggerDoorRoom j) [] + [treeFromPost [triggerDoorRoom i] (r burstRifle) + ,treeFromPost [triggerDoorRoom j] (r (drumMag & itConsumables ?~ 100)) + ,bcor ] where - s = "INTERACTION TEST 1: USE KEYBOARD OR SCROLL TO ENTER COMMANDS." + s = "INTERACTION TEST: USE KEYBOARD OR SCROLL TO ENTER COMMANDS." + r x = roomRectAutoLinks 100 100 & rmPmnts .:~ sps (PS 50 0) (PutFlIt x) tutRezBox :: RandomGen g => State g Room tutRezBox = do @@ -91,4 +93,4 @@ tutRezBox = do s = tutorialMessage1 tutorialMessage1 :: String -tutorialMessage1 = "SYNTHESIS SUCCESSFUL. MOVEMENT TEST 1 INITIATED [WASD]. INTERACTION TEST 1 IN QUEUE [SPACE]." +tutorialMessage1 = "SYNTHESIS SUCCESSFUL. MOBILITY TEST INITIATED [WASD]. INTERACTION TEST IN QUEUE [SPACE]." diff --git a/src/Dodge/Room/Warning.hs b/src/Dodge/Room/Warning.hs index bd1db4091..23bf5578e 100644 --- a/src/Dodge/Room/Warning.hs +++ b/src/Dodge/Room/Warning.hs @@ -36,7 +36,7 @@ addDoorToggleTerminal = addDoorAtNthLinkToggleTerminal 0 addDoorAtNthLinkToggleTerminal :: Int -> [TerminalLine] -> Int -> Room -> Room addDoorAtNthLinkToggleTerminal j xs i = (rmName .++~ "doorToggle-") - . (rmOutPmnt .:~ OutPlacement outplace i) + . (rmOutPmnt . at i ?~ outplace) where outplace = extTrigLitPos diff --git a/src/Dodge/Terminal.hs b/src/Dodge/Terminal.hs index 7e11fa586..3f1380694 100644 --- a/src/Dodge/Terminal.hs +++ b/src/Dodge/Terminal.hs @@ -16,6 +16,7 @@ module Dodge.Terminal ( tlDoEffect, ) where +import Dodge.Item.Display import Color import Data.Char import qualified Data.List as List @@ -59,11 +60,12 @@ getCommand :: World getCommand w tm = \case TCInfo x z -> PTE.singleton x (PTE.singleton "" (makeTermPara z)) TCBase -> quitCommand <> toggleCommands tm - TCDamageCommand -> damageCodeCommand w + TCDamageCommand -> damageCodeCommand w tm TCSensorInfo -> sensorCommand w tm -damageCodeCommand :: World -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) -damageCodeCommand w = PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..] +damageCodeCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) +damageCodeCommand w tm + = PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..] where f :: SensorType -> Maybe (String, [TerminalLine]) f st = do @@ -82,12 +84,17 @@ decodeSensorType st w = fromMaybe [] $ do -- ugly sensorCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) sensorCommand w tm = PTE.singleton "SENSOR" $ fromMaybe mempty $ do - ProximitySensor _ d r b <- w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor + ProximitySensor _ _ r b <- w ^? cWorld . lWorld . machines . ix (tm ^. tmMachineID) . mcType . _McSensor return $ PTE.fromList - [ ("REQUIREMENT", [makeTermLine $ show r] ) - , ("RADIUS", [makeTermLine $ show d]) - , ("STATUS", [makeTermLine $ show b]) + [ ("", makeTermPara $ sensorReqToString r b) ] + +sensorReqToString :: ProximityRequirement -> Bool -> String +sensorReqToString pr = \case + True -> "SENSOR TEST PASSED." + False -> "SENSOR REQUIRES: " ++ case pr of + RequireHealth x -> "HEALTH ABOVE " ++ show x + RequireEquipment x -> itemBaseName x toggleCommands :: Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) diff --git a/tags b/tags index 7e57d3cbf..dea7bff45 100644 --- a/tags +++ b/tags @@ -590,7 +590,7 @@ InDream src/Dodge/Data/Scenario.hs 19;" C InInv src/Dodge/Data/Item/Location.hs 29;" C InLink src/Dodge/Data/Room.hs 44;" C InParallelUniverse src/Dodge/Data/Scenario.hs 21;" C -InPlacement src/Dodge/Data/GenWorld.hs 136;" t +InPlacement src/Dodge/Data/GenWorld.hs 134;" t InRealWorld src/Dodge/Data/Scenario.hs 18;" C InSimulation src/Dodge/Data/Scenario.hs 20;" C InVoid src/Dodge/Data/Item/Location.hs 39;" C @@ -953,7 +953,6 @@ OptionScreen src/Dodge/Data/Universe.hs 82;" C OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t OutAction src/Dodge/Creature/Action.hs 45;" t OutLink src/Dodge/Data/Room.hs 43;" C -OutPlacement src/Dodge/Data/GenWorld.hs 131;" t OutsideTerminal src/Dodge/Data/Input.hs 33;" C OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" C OverCombCombine src/Dodge/Data/Input.hs 29;" C @@ -1941,8 +1940,8 @@ _impulseUseTarget src/Dodge/Data/ActionPlan.hs 53;" f _impulseUseTargetCID src/Dodge/Data/ActionPlan.hs 50;" f _impulsesListList src/Dodge/Data/ActionPlan.hs 98;" f _input src/Dodge/Data/World.hs 42;" f -_ipPlacement src/Dodge/Data/GenWorld.hs 137;" f -_ipPlacementID src/Dodge/Data/GenWorld.hs 138;" f +_ipPlacement src/Dodge/Data/GenWorld.hs 135;" f +_ipPlacementID src/Dodge/Data/GenWorld.hs 136;" f _isWarming src/Dodge/Data/Item/Params.hs 23;" f _ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" f _ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f @@ -2109,8 +2108,6 @@ _offPathFromEdges src/Dodge/Data/Room.hs 74;" f _oldMagnets src/Dodge/Data/LWorld.hs 129;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f _opDraw src/Dodge/Data/Wall.hs 43;" f -_opPlacement src/Dodge/Data/GenWorld.hs 132;" f -_opPlacementID src/Dodge/Data/GenWorld.hs 133;" f _opSel src/Dodge/Data/RightButtonOptions.hs 15;" f _opTexture src/Dodge/Data/Wall.hs 44;" f _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 20;" f @@ -2247,29 +2244,29 @@ _rkSmoke src/Dodge/Data/Projectile.hs 36;" f _rlDir src/Dodge/Data/Room.hs 26;" f _rlPos src/Dodge/Data/Room.hs 25;" f _rlType src/Dodge/Data/Room.hs 24;" f -_rmBound src/Dodge/Data/GenWorld.hs 115;" f -_rmChildren src/Dodge/Data/GenWorld.hs 126;" f -_rmClusterStatus src/Dodge/Data/GenWorld.hs 128;" f -_rmConnectsTo src/Dodge/Data/GenWorld.hs 123;" f -_rmEndWires src/Dodge/Data/GenWorld.hs 122;" f -_rmFloor src/Dodge/Data/GenWorld.hs 116;" f +_rmBound src/Dodge/Data/GenWorld.hs 116;" f +_rmChildren src/Dodge/Data/GenWorld.hs 127;" f +_rmClusterStatus src/Dodge/Data/GenWorld.hs 129;" f +_rmConnectsTo src/Dodge/Data/GenWorld.hs 124;" f +_rmEndWires src/Dodge/Data/GenWorld.hs 123;" f +_rmFloor src/Dodge/Data/GenWorld.hs 117;" f _rmHeight src/Dodge/Data/Room.hs 38;" f _rmInPmnt src/Dodge/Data/GenWorld.hs 113;" f _rmLinkEff src/Dodge/Data/GenWorld.hs 103;" f _rmLinks src/Dodge/Data/GenWorld.hs 101;" f -_rmMID src/Dodge/Data/GenWorld.hs 124;" f -_rmMParent src/Dodge/Data/GenWorld.hs 125;" f -_rmName src/Dodge/Data/GenWorld.hs 117;" f -_rmOutPmnt src/Dodge/Data/GenWorld.hs 114;" f +_rmMID src/Dodge/Data/GenWorld.hs 125;" f +_rmMParent src/Dodge/Data/GenWorld.hs 126;" f +_rmName src/Dodge/Data/GenWorld.hs 118;" f +_rmOutPmnt src/Dodge/Data/GenWorld.hs 115;" f _rmPath src/Dodge/Data/GenWorld.hs 111;" f _rmPmnts src/Dodge/Data/GenWorld.hs 112;" f _rmPolys src/Dodge/Data/GenWorld.hs 100;" f _rmPos src/Dodge/Data/GenWorld.hs 110;" f -_rmRandPSs src/Dodge/Data/GenWorld.hs 120;" f -_rmShift src/Dodge/Data/GenWorld.hs 118;" f -_rmStartWires src/Dodge/Data/GenWorld.hs 121;" f -_rmType src/Dodge/Data/GenWorld.hs 127;" f -_rmViewpoints src/Dodge/Data/GenWorld.hs 119;" f +_rmRandPSs src/Dodge/Data/GenWorld.hs 121;" f +_rmShift src/Dodge/Data/GenWorld.hs 119;" f +_rmStartWires src/Dodge/Data/GenWorld.hs 122;" f +_rmType src/Dodge/Data/GenWorld.hs 128;" f +_rmViewpoints src/Dodge/Data/GenWorld.hs 120;" f _rmWidth src/Dodge/Data/Room.hs 37;" f _rpDir src/Dodge/Data/Room.hs 16;" f _rpLinkStatus src/Dodge/Data/Room.hs 18;" f @@ -2576,7 +2573,7 @@ addButtonSlowDoor src/Dodge/Room/LongDoor.hs 97;" f addCrGibs src/Dodge/Prop/Gib.hs 16;" f addDepth src/Picture/Base.hs 133;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 37;" f -addDoorToggleTerminal src/Dodge/Room/Warning.hs 33;" f +addDoorToggleTerminal src/Dodge/Room/Warning.hs 34;" f addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f addEdges src/Dodge/Path.hs 122;" f addGib4 src/Dodge/Prop/Gib.hs 51;" f @@ -2594,7 +2591,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f -addPane src/Dodge/Placement/PlaceSpot.hs 169;" f +addPane src/Dodge/Placement/PlaceSpot.hs 170;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 102;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2615,14 +2612,14 @@ aimDelaySweep src/Dodge/Render/Picture.hs 288;" f aimStance src/Dodge/Item/AimStance.hs 10;" f aimStanceInfo src/Dodge/Item/Info.hs 244;" f aimTurn src/Dodge/Creature/YourControl.hs 165;" f -airlock src/Dodge/Room/Airlock.hs 19;" f -airlock0 src/Dodge/Room/Airlock.hs 25;" f -airlock90 src/Dodge/Room/Airlock.hs 122;" f -airlockCrystal src/Dodge/Room/Airlock.hs 161;" f -airlockDoor src/Dodge/Room/Airlock.hs 51;" f -airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f -airlockSimple src/Dodge/Room/Airlock.hs 66;" f -airlockZ src/Dodge/Room/Airlock.hs 91;" f +airlock src/Dodge/Room/Airlock.hs 21;" f +airlock0 src/Dodge/Room/Airlock.hs 50;" f +airlock90 src/Dodge/Room/Airlock.hs 147;" f +airlockCrystal src/Dodge/Room/Airlock.hs 186;" f +airlockDoor src/Dodge/Room/Airlock.hs 76;" f +airlockDoubleDoor src/Dodge/Room/Airlock.hs 79;" f +airlockSimple src/Dodge/Room/Airlock.hs 91;" f +airlockZ src/Dodge/Room/Airlock.hs 116;" f allVisibleWalls src/Dodge/Base/Collide.hs 215;" f alongSegBy src/Geometry.hs 41;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f @@ -2631,7 +2628,8 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 145;" f amr src/Dodge/Item/Held/Rod.hs 34;" f anRoom src/Dodge/Floor.hs 130;" f analyser src/Dodge/Placement/Instance/Analyser.hs 10;" f -analyserByDoor src/Dodge/Room/LasTurret.hs 77;" f +analyserByDoor src/Dodge/Room/LasTurret.hs 93;" f +analyserByNthLink src/Dodge/Room/LasTurret.hs 78;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 161;" f angleVV src/Geometry/Vector.hs 57;" f @@ -2682,11 +2680,12 @@ arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f assignHotkey src/Dodge/AssignHotkey.hs 13;" f assignPushDoors src/Dodge/LevelGen.hs 43;" f -atFstLnkOut src/Dodge/PlacementSpot.hs 212;" f -atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 227;" f -atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 230;" f -atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 215;" f -atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 233;" f +atFstLnkOut src/Dodge/PlacementSpot.hs 222;" f +atFstLnkOutShiftBy src/Dodge/PlacementSpot.hs 241;" f +atFstLnkOutShiftInward src/Dodge/PlacementSpot.hs 244;" f +atNthLinkOut src/Dodge/PlacementSpot.hs 225;" f +atNthLnkOutShiftBy src/Dodge/PlacementSpot.hs 228;" f +atNthLnkOutShiftInward src/Dodge/PlacementSpot.hs 247;" f attachBranch src/Dodge/Tree/Compose.hs 83;" f attachInfo src/Dodge/Item/Info.hs 58;" f attachList' src/Dodge/Tree/Compose.hs 80;" f @@ -2956,7 +2955,7 @@ combineList src/Dodge/Combine.hs 20;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineTree src/Dodge/Tree/Compose.hs 66;" f -commandColor src/Dodge/Terminal.hs 130;" f +commandColor src/Dodge/Terminal.hs 136;" f commonPrefix src/Dodge/Debug/Terminal.hs 146;" f comp src/Quaternion.hs 65;" f compactDraw src/Dodge/LevelGen.hs 93;" f @@ -2970,8 +2969,8 @@ conEffects src/Dodge/Concurrent.hs 12;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f concurrentIS src/Dodge/Update/Input/InGame.hs 281;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f -connectionBlurb src/Dodge/Terminal.hs 45;" f -connectionBlurbLines src/Dodge/Terminal.hs 37;" f +connectionBlurb src/Dodge/Terminal.hs 46;" f +connectionBlurbLines src/Dodge/Terminal.hs 38;" f constructEdges src/Polyhedra.hs 34;" f constructEdgesList src/Polyhedra.hs 43;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f @@ -3038,7 +3037,7 @@ crZoneSize src/Dodge/Zoning/Creature.hs 41;" f craftInfo src/Dodge/Item/Info.hs 169;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f -createFlIt src/Dodge/Placement/PlaceSpot.hs 181;" f +createFlIt src/Dodge/Placement/PlaceSpot.hs 182;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f createHeadLamp src/Dodge/Euse.hs 55;" f @@ -3097,7 +3096,7 @@ dShadCol src/Dodge/Render/List.hs 215;" f damMatSideEffect src/Dodge/Material/Damage.hs 13;" f damThingHitWith src/Dodge/Damage.hs 72;" f damToExpBarrel src/Dodge/Barreloid.hs 49;" f -damageCodeCommand src/Dodge/Terminal.hs 65;" f +damageCodeCommand src/Dodge/Terminal.hs 66;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f damageDirection src/Dodge/Damage.hs 35;" f @@ -3138,9 +3137,10 @@ debugMenuOptions src/Dodge/Menu.hs 122;" f debugOn src/Dodge/Data/Config.hs 151;" f debugSelectCreatureList src/Dodge/Debug.hs 86;" f debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f -decodeSensorType src/Dodge/Terminal.hs 77;" f +decodeSensorType src/Dodge/Terminal.hs 78;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f +decontamRoom src/Dodge/Room/Airlock.hs 25;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f @@ -3200,7 +3200,7 @@ defaultSwitchWall src/Dodge/Default/Door.hs 22;" f defaultTerminal src/Dodge/Default/Terminal.hs 10;" f defaultVision src/Dodge/Default/Creature.hs 85;" f defaultWall src/Dodge/Default/Wall.hs 17;" f -defaultWindow src/Dodge/Default/Wall.hs 84;" f +defaultWindow src/Dodge/Default/Wall.hs 85;" f defaultWorld src/Dodge/Default/World.hs 34;" f degToRad src/Geometry/Vector.hs 117;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -3550,7 +3550,7 @@ errorHead src/ListHelp.hs 76;" f errorIsLHS src/Geometry.hs 66;" f errorNormalizeV src/Geometry.hs 55;" f errorPointInPolygon src/Geometry.hs 47;" f -evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 150;" f +evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 151;" f evenOddSplit src/Dodge/Base.hs 160;" f exitTerminalSubInv src/Dodge/WorldEffect.hs 107;" f expandLine src/Dodge/Picture.hs 30;" f @@ -3689,8 +3689,8 @@ getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 169;" f getBulletType src/Dodge/HeldUse.hs 943;" f getCloseObj src/Dodge/Update/Input/InGame.hs 527;" f -getCommand src/Dodge/Terminal.hs 57;" f -getCommands src/Dodge/Terminal.hs 54;" f +getCommand src/Dodge/Terminal.hs 58;" f +getCommands src/Dodge/Terminal.hs 55;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDistortions src/Dodge/Render.hs 435;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f @@ -3788,8 +3788,8 @@ headLampShape src/Dodge/Item/Draw/SPic.hs 455;" f headMap src/Dodge/DoubleTree.hs 248;" f headPQ src/Dodge/Creature/HandPos.hs 108;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f -healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 74;" f -healthTest src/Dodge/Room/LasTurret.hs 95;" f +healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 75;" f +healthTest src/Dodge/Room/LasTurret.hs 96;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimZoom src/Dodge/Update/Camera.hs 142;" f @@ -3808,7 +3808,7 @@ heldItemWeight src/Dodge/Creature/Statistics.hs 72;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f heldTorqueAmount src/Dodge/HeldUse.hs 584;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f -helpPara src/Dodge/Terminal.hs 106;" f +helpPara src/Dodge/Terminal.hs 112;" f helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 221;" f hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f @@ -3932,7 +3932,7 @@ isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f isElectrical src/Dodge/Machine/Update.hs 80;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 188;" f -isInLnk src/Dodge/PlacementSpot.hs 161;" f +isInLnk src/Dodge/PlacementSpot.hs 169;" f isJust' src/MaybeHelp.hs 29;" f isLHS src/Geometry/LHS.hs 8;" f isLeftOf src/Geometry.hs 202;" f @@ -3940,14 +3940,14 @@ isLeftOfA src/Geometry.hs 196;" f isNHS src/Geometry/Intersect.hs 51;" f isNothing' src/MaybeHelp.hs 33;" f isOnSeg src/Geometry.hs 240;" f -isOutLnk src/Dodge/PlacementSpot.hs 165;" f +isOutLnk src/Dodge/PlacementSpot.hs 174;" f isOverTerminalScreen src/Dodge/Update.hs 414;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f isRHS src/Geometry/LHS.hs 24;" f isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f -isUnusedLnkType src/Dodge/PlacementSpot.hs 187;" f -isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 173;" f +isUnusedLnkType src/Dodge/PlacementSpot.hs 196;" f +isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 182;" f isValidCommand src/Dodge/Debug/Terminal.hs 131;" f isVowel src/StringHelp.hs 8;" f isWalkable src/Dodge/Base/Collide.hs 317;" f @@ -4014,8 +4014,8 @@ justify src/Justify.hs 9;" f k src/ShortShow.hs 33;" f k' src/ShortShow.hs 33;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f -keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f -keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f +keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 72;" f +keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 60;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 471;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f @@ -4027,12 +4027,12 @@ lamp src/Dodge/Creature/Lamp.hs 21;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 73;" f -lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f +lasCenSensEdge src/Dodge/Room/LasTurret.hs 115;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 424;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f -lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f -lasTunnel src/Dodge/Room/LasTurret.hs 126;" f -lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f +lasSensorTurretTest src/Dodge/Room/LasTurret.hs 108;" f +lasTunnel src/Dodge/Room/LasTurret.hs 127;" f +lasTunnelRunPast src/Dodge/Room/LasTurret.hs 168;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f lastMap src/Dodge/DoubleTree.hs 252;" f @@ -4060,8 +4060,8 @@ leftRightCombine src/Dodge/Item/Grammar.hs 196;" f legsSPic src/Dodge/Item/Draw/SPic.hs 480;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f -lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f -lightSensInsideDoor src/Dodge/Room/LasTurret.hs 36;" f +lightSensByDoor src/Dodge/Room/LasTurret.hs 47;" f +lightSensInsideDoor src/Dodge/Room/LasTurret.hs 37;" f lightSensor src/Dodge/Placement/Instance/Sensor.hs 47;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f lightx4 src/Color.hs 145;" f @@ -4116,7 +4116,7 @@ locUp' src/Dodge/DoubleTree.hs 287;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 15;" f -lockedStart src/Dodge/Room/RunPast.hs 34;" f +lockedStart src/Dodge/Room/RunPast.hs 35;" f logistic src/Dodge/Base.hs 98;" f longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f longCrit src/Dodge/Creature.hs 71;" f @@ -4159,8 +4159,8 @@ makeBullet src/Dodge/HeldUse.hs 1021;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f -makeColorTermLine src/Dodge/Terminal.hs 127;" f -makeColorTermPara src/Dodge/Terminal.hs 124;" f +makeColorTermLine src/Dodge/Terminal.hs 133;" f +makeColorTermPara src/Dodge/Terminal.hs 130;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f makeDebris src/Dodge/Block/Debris.hs 45;" f makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f @@ -4196,8 +4196,8 @@ makeSourcedShader src/Shader/Compile.hs 167;" f makeSpark src/Dodge/Spark.hs 45;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f -makeTermLine src/Dodge/Terminal.hs 112;" f -makeTermPara src/Dodge/Terminal.hs 121;" f +makeTermLine src/Dodge/Terminal.hs 118;" f +makeTermPara src/Dodge/Terminal.hs 127;" f makeTeslaArc src/Dodge/Tesla.hs 29;" f makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f makeTileFromPoly src/Tile.hs 34;" f @@ -4310,7 +4310,6 @@ moveProjectile src/Dodge/Projectile/Update.hs 262;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f -moveToSideFirstOutLink src/Dodge/Room/Warning.hs 74;" f moveToSideNthOutLink src/Dodge/Room/Warning.hs 60;" f moveWall src/Dodge/Wall/Move.hs 29;" f moveWallID src/Dodge/Wall/Move.hs 24;" f @@ -4327,18 +4326,18 @@ multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f muout src/Dodge/RoomLink.hs 129;" f muzFlareAt src/Dodge/HeldUse.hs 676;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 178;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 188;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 191;" f mvGust src/Dodge/Update.hs 806;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 218;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 219;" f mvP src/Dodge/Wall/Move.hs 54;" f -mvPP src/Dodge/Placement/PlaceSpot.hs 184;" f +mvPP src/Dodge/Placement/PlaceSpot.hs 185;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 174;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 175;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 207;" f myIntersectSegSeg src/Geometry/Intersect.hs 185;" f @@ -4465,7 +4464,6 @@ picMap src/Picture/Base.hs 67;" f pickUpItem src/Dodge/Inventory/Add.hs 107;" f pickUpItemAt src/Dodge/Inventory/Add.hs 113;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f -pickupTut src/Dodge/Room/Tutorial.hs 56;" f pincerP src/Dodge/Creature/Boid.hs 61;" f pincerP' src/Dodge/Creature/Boid.hs 94;" f pincerP'' src/Dodge/Creature/Boid.hs 104;" f @@ -4479,24 +4477,24 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 227;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 193;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 194;" f plNew src/Dodge/Base/NewID.hs 23;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 31;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 208;" f -placePickOne src/Dodge/Placement/PlaceSpot.hs 42;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 54;" f -placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 45;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 30;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 100;" f -placeSpotID' src/Dodge/Placement/PlaceSpot.hs 106;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 209;" f +placePickOne src/Dodge/Placement/PlaceSpot.hs 43;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 55;" f +placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 46;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f +placeSpotID' src/Dodge/Placement/PlaceSpot.hs 107;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 71;" f placeString src/Dodge/Render/MenuScreen.hs 61;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 163;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 164;" f plainRegex src/Dodge/DisplayInventory.hs 196;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4639,7 +4637,7 @@ psPt src/Dodge/LevelGen/PlacementHelper.hs 24;" f psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f -psRandRanges src/Dodge/PlacementSpot.hs 250;" f +psRandRanges src/Dodge/PlacementSpot.hs 264;" f psj src/Dodge/LevelGen/PlacementHelper.hs 70;" f psposAddLabel src/Dodge/PlacementSpot.hs 70;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 54;" f @@ -4683,7 +4681,7 @@ qToV2 src/Quaternion.hs 56;" f qToV3 src/Quaternion.hs 53;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f -quitCommand src/Dodge/Terminal.hs 109;" f +quitCommand src/Dodge/Terminal.hs 115;" f qz src/Quaternion.hs 71;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f @@ -4774,7 +4772,7 @@ renderShadows src/Render.hs 117;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 162;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f -resetPLUse src/Dodge/PlacementSpot.hs 97;" f +resetPLUse src/Dodge/PlacementSpot.hs 99;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 24;" f resetTerminal src/Dodge/WorldEffect.hs 101;" f resizeFBOTO src/Framebuffer/Update.hs 203;" f @@ -4819,7 +4817,7 @@ rmOutLinks src/Dodge/RoomLink.hs 138;" f roomC src/Dodge/Room/Room.hs 38;" f roomCCrits src/Dodge/Room/Room.hs 260;" f roomCenterPillar src/Dodge/Room/Room.hs 119;" f -roomCritLS src/Dodge/Room/RunPast.hs 24;" f +roomCritLS src/Dodge/Room/RunPast.hs 25;" f roomCross src/Dodge/Room/Boss.hs 84;" f roomGlassOctogon src/Dodge/Room/Boss.hs 21;" f roomMiniIntro src/Dodge/Room/Room.hs 114;" f @@ -4861,13 +4859,13 @@ rotateXY src/Polyhedra.hs 31;" f roundPoint2 src/Geometry/Intersect.hs 246;" f roundTank src/Dodge/Placement/Instance/Tank.hs 25;" f roundTankCross src/Dodge/Placement/Instance/Tank.hs 31;" f -rpIsOffPath src/Dodge/PlacementSpot.hs 81;" f +rpIsOffPath src/Dodge/PlacementSpot.hs 82;" f rpIsOnPath src/Dodge/PlacementSpot.hs 76;" f -rpOffPathFromEdge src/Dodge/PlacementSpot.hs 86;" f -rpOnPathFromEdge src/Dodge/PlacementSpot.hs 92;" f +rpOffPathFromEdge src/Dodge/PlacementSpot.hs 88;" f +rpOnPathFromEdge src/Dodge/PlacementSpot.hs 94;" f rprBool src/Dodge/PlacementSpot.hs 73;" f -rprBoolShift src/Dodge/PlacementSpot.hs 112;" f -rprShift src/Dodge/PlacementSpot.hs 103;" f +rprBoolShift src/Dodge/PlacementSpot.hs 114;" f +rprShift src/Dodge/PlacementSpot.hs 105;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f runPastStart src/Dodge/Room/Start.hs 72;" f runStateWorld src/Dodge/Randify.hs 17;" f @@ -4940,7 +4938,8 @@ selectedItemScroll src/Dodge/Update/Scroll.hs 50;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 52;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 58;" f senseDamage src/Dodge/Machine/Update.hs 160;" f -sensorCommand src/Dodge/Terminal.hs 83;" f +sensorCommand src/Dodge/Terminal.hs 84;" f +sensorReqToString src/Dodge/Terminal.hs 91;" f sensorRoom src/Dodge/Room/SensorDoor.hs 25;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 45;" f sensorSPic src/Dodge/Machine/Draw.hs 70;" f @@ -4954,7 +4953,7 @@ setClickWorldPos src/Dodge/Update.hs 106;" f setClusterID src/Dodge/Combine/Graph.hs 116;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 50;" f -setFallback src/Dodge/PlacementSpot.hs 128;" f +setFallback src/Dodge/PlacementSpot.hs 132;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f @@ -5018,11 +5017,11 @@ shellMag src/Dodge/Item/Ammo.hs 49;" f shellModule src/Dodge/Item/Scope.hs 123;" f shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f -shiftByV2 src/Dodge/PlacementSpot.hs 240;" f +shiftByV2 src/Dodge/PlacementSpot.hs 254;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f -shiftInBy src/Dodge/PlacementSpot.hs 237;" f +shiftInBy src/Dodge/PlacementSpot.hs 251;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 299;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 338;" f shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 332;" f @@ -5075,7 +5074,7 @@ shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 151;" f simpleCrSprings src/Dodge/Update.hs 883;" f -simpleTermMessage src/Dodge/Terminal.hs 180;" f +simpleTermMessage src/Dodge/Terminal.hs 186;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f singleAmmo src/Dodge/Item/AmmoSlots.hs 62;" f @@ -5102,7 +5101,7 @@ smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 646;" f smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f smallPillar src/Dodge/Room/Pillar.hs 37;" f -smallRoom src/Dodge/Room/RunPast.hs 31;" f +smallRoom src/Dodge/Room/RunPast.hs 32;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f sndV2 src/Geometry/Data.hs 73;" f @@ -5223,8 +5222,8 @@ t src/ShortShow.hs 33;" f tEast src/Dodge/Room/Corridor.hs 90;" f tToBTree src/Dodge/Tree/Compose.hs 92;" f tWest src/Dodge/Room/Corridor.hs 115;" f -tabComplete src/Dodge/Terminal.hs 133;" f -tabComplete' src/Dodge/Terminal.hs 139;" f +tabComplete src/Dodge/Terminal.hs 139;" f +tabComplete' src/Dodge/Terminal.hs 145;" f takeN src/RandomHelp.hs 44;" f takeNMore src/RandomHelp.hs 41;" f takeOne src/RandomHelp.hs 22;" f @@ -5252,10 +5251,10 @@ targetingScope src/Dodge/Item/Scope.hs 38;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f termScreenColor src/Dodge/Terminal/Color.hs 10;" f -termSoundLine src/Dodge/Terminal.hs 48;" f -termTextColor src/Dodge/Terminal.hs 51;" f +termSoundLine src/Dodge/Terminal.hs 49;" f +termTextColor src/Dodge/Terminal.hs 52;" f terminalColor src/Dodge/Placement/Instance/Terminal.hs 70;" f -terminalReturnEffect src/Dodge/Terminal.hs 184;" f +terminalReturnEffect src/Dodge/Terminal.hs 190;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f @@ -5274,7 +5273,7 @@ textJustifyCenter src/Picture/Base.hs 212;" f textJustifyLeft src/Picture/Base.hs 208;" f textJustifyRight src/Picture/Base.hs 198;" f textRight src/Picture/Base.hs 203;" f -textTerminal src/Dodge/Terminal.hs 34;" f +textTerminal src/Dodge/Terminal.hs 35;" f textVMirror src/Picture/Base.hs 216;" f tflat2 src/Picture/Data.hs 60;" f tflat3 src/Picture/Data.hs 64;" f @@ -5309,8 +5308,8 @@ tingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 574;" f tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 566;" f titleOptionsMenu src/Dodge/Menu.hs 102;" f titleOptionsNoWrite src/Dodge/Menu.hs 105;" f -tlDoEffect src/Dodge/Terminal.hs 118;" f -tlSetStatus src/Dodge/Terminal.hs 115;" f +tlDoEffect src/Dodge/Terminal.hs 124;" f +tlSetStatus src/Dodge/Terminal.hs 121;" f tmUpdate src/Dodge/Update.hs 499;" f toBinary src/Dodge/Inventory/SelectionList.hs 138;" f toBothLnk src/Dodge/RoomLink.hs 121;" f @@ -5325,7 +5324,7 @@ toV2 src/Geometry/Data.hs 54;" f toV3 src/Geometry/Data.hs 57;" f toV4 src/Geometry/Data.hs 60;" f toggleCombineInv src/Dodge/DisplayInventory.hs 318;" f -toggleCommands src/Dodge/Terminal.hs 93;" f +toggleCommands src/Dodge/Terminal.hs 99;" f toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 65;" f toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 103;" f toggleJust src/MaybeHelp.hs 41;" f @@ -5417,11 +5416,12 @@ tryUseParent src/Dodge/Creature/State.hs 143;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f -tutAnoTree src/Dodge/Room/Tutorial.hs 40;" f -tutRezBox src/Dodge/Room/Tutorial.hs 77;" f +tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f +tutDrop src/Dodge/Room/Tutorial.hs 56;" f +tutRezBox src/Dodge/Room/Tutorial.hs 79;" f tutRoomTree src/Dodge/Floor.hs 26;" f -tutRooms src/Dodge/Room/Tutorial.hs 63;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 93;" f +tutRooms src/Dodge/Room/Tutorial.hs 62;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 95;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f @@ -5429,7 +5429,7 @@ twists src/Dodge/Creature/Test.hs 109;" f twoFlat src/Dodge/Creature/Test.hs 106;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 80;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f -twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f +twoRoomPoss src/Dodge/PlacementSpot.hs 154;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 544;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 596;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 586;" f @@ -5448,10 +5448,10 @@ unsafeSwapKeys src/IntMapHelp.hs 74;" f unshadowBlock src/Dodge/Block.hs 39;" f untilJust src/MonadHelp.hs 7;" f untilJustCount src/MonadHelp.hs 14;" f -unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 134;" f -unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 140;" f -unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 123;" f -unusedSpotNearInLink src/Dodge/PlacementSpot.hs 192;" f +unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 138;" f +unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 145;" f +unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 126;" f +unusedSpotNearInLink src/Dodge/PlacementSpot.hs 201;" f updateAimPos src/Dodge/Update.hs 321;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f @@ -5592,19 +5592,19 @@ useHotkey src/Dodge/Creature/YourControl.hs 70;" f useInventoryPath src/Dodge/HeldUse.hs 1446;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f -useLnkRoomPos src/Dodge/PlacementSpot.hs 245;" f +useLnkRoomPos src/Dodge/PlacementSpot.hs 259;" f useLoadedAmmo src/Dodge/HeldUse.hs 719;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f useRewindGun src/Dodge/HeldUse.hs 1406;" f -useRoomPosCond src/Dodge/PlacementSpot.hs 179;" f -useRoomPosRoomCond src/Dodge/PlacementSpot.hs 182;" f +useRoomPosCond src/Dodge/PlacementSpot.hs 188;" f +useRoomPosRoomCond src/Dodge/PlacementSpot.hs 191;" f useStopWatch src/Dodge/HeldUse.hs 1387;" f useTimeScrollGun src/Dodge/HeldUse.hs 1395;" f -useUnusedLnk src/Dodge/PlacementSpot.hs 170;" f -usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 197;" f -usedRoomLinkPoss src/Dodge/PlacementSpot.hs 204;" f +useUnusedLnk src/Dodge/PlacementSpot.hs 179;" f +usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 207;" f +usedRoomLinkPoss src/Dodge/PlacementSpot.hs 214;" f v2z src/Geometry/Vector3D.hs 93;" f vCen3 src/Geometry/Vector3D.hs 115;" f vInverse src/Geometry/Vector.hs 153;" f @@ -5645,7 +5645,7 @@ wallToSurface src/Dodge/Base/Collide.hs 172;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f warmupSound src/Dodge/HeldUse.hs 1440;" f -warningRooms src/Dodge/Room/Warning.hs 25;" f +warningRooms src/Dodge/Room/Warning.hs 26;" f wasdAim src/Dodge/Creature/YourControl.hs 126;" f wasdDir src/Dodge/WASD.hs 17;" f wasdM src/Dodge/WASD.hs 9;" f @@ -5659,7 +5659,6 @@ weaponBetweenPillars src/Dodge/Room/Room.hs 191;" f weaponEmptyRoom src/Dodge/Room/Room.hs 137;" f weaponLongCorridor src/Dodge/Room/Room.hs 216;" f weaponRoom src/Dodge/Room/Room.hs 249;" f -weaponTut src/Dodge/Room/Tutorial.hs 50;" f weaponUnderCrits src/Dodge/Room/Room.hs 154;" f wedgeGeom src/Dodge/Base.hs 42;" f wedgeOfThickness src/Dodge/Picture.hs 9;" f