From fcccd6384494089a372c426827e82e540fb25782 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 23 Aug 2025 22:10:33 +0100 Subject: [PATCH] Refactor floor items, removing ids (not fully checked) --- saveSlot/LevelStart0 | 2 +- src/Dodge/Base/NewID.hs | 6 +-- src/Dodge/Data/FloorItem.hs | 3 +- src/Dodge/Data/HUD.hs | 2 +- src/Dodge/Data/Item/Location.hs | 3 +- src/Dodge/Data/LWorld.hs | 2 +- src/Dodge/Default.hs | 2 +- src/Dodge/Default/World.hs | 11 ++---- src/Dodge/DisplayInventory.hs | 3 +- src/Dodge/FloorItem.hs | 15 +++----- src/Dodge/Inventory.hs | 6 +-- src/Dodge/Inventory/Add.hs | 14 +++---- src/Dodge/Inventory/SelectionList.hs | 6 +-- src/Dodge/Item/Location.hs | 53 +++++++++++++-------------- src/Dodge/Item/Location/Initialize.hs | 27 +++++++------- src/Dodge/Placement/PlaceSpot.hs | 22 +++++------ src/Dodge/Projectile/Update.hs | 6 +-- src/Dodge/RadarSweep.hs | 2 +- src/Dodge/Render/HUD.hs | 2 +- src/Dodge/Render/ShapePicture.hs | 3 +- src/Dodge/SelectedClose.hs | 2 +- src/Dodge/Terminal.hs | 2 +- src/Dodge/TractorBeam/Update.hs | 5 +-- src/Dodge/Update/Input/InGame.hs | 4 +- 24 files changed, 94 insertions(+), 109 deletions(-) diff --git a/saveSlot/LevelStart0 b/saveSlot/LevelStart0 index ee0c43a37..94df5a746 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":[],"_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 +{"_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":[],"_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/Base/NewID.hs b/src/Dodge/Base/NewID.hs index 8911d0395..6b7cdfe78 100644 --- a/src/Dodge/Base/NewID.hs +++ b/src/Dodge/Base/NewID.hs @@ -10,11 +10,7 @@ plNewID l x w = (i,w & l #%~ IM.insert i x) i = IM.newKey $ w ^# l -- | place an new object into an intmap and update its id -plNewUpID :: ALens' b (IM.IntMap a) - -> ALens' a Int - -> a - -> b - -> (Int,b) +plNewUpID :: ALens' b (IM.IntMap a) -> ALens' a Int -> a -> b -> (Int,b) plNewUpID l li x w = (i,w & l #%~ IM.insert i (x & li #~ i)) where i = IM.newKey $ w ^# l diff --git a/src/Dodge/Data/FloorItem.hs b/src/Dodge/Data/FloorItem.hs index 1e342b00d..1e7fcd4c4 100644 --- a/src/Dodge/Data/FloorItem.hs +++ b/src/Dodge/Data/FloorItem.hs @@ -5,7 +5,6 @@ module Dodge.Data.FloorItem where -import NewInt import Control.Lens import Data.Aeson import Data.Aeson.TH @@ -13,7 +12,7 @@ import Dodge.Data.Item import Geometry.Data -data FloorItem = FlIt {_flIt :: Item, _flItPos :: Point2, _flItRot :: Float, _flItID :: NewInt FloorInt} +data FloorItem = FlIt {_flIt :: Item, _flItPos :: Point2, _flItRot :: Float}--, _flItID :: NewInt FloorInt} --deriving (Eq, Show, Read) --Generic, Flat) makeLenses ''FloorItem diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index 463c40cee..bdbebfee3 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -44,7 +44,7 @@ data HUD = HUD , _carteCenter :: Point2 , _carteZoom :: Float , _carteRot :: Float - , _closeItems :: [NewInt FloorInt] + , _closeItems :: [NewInt ItmInt] , _closeButtons :: [Int] } diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index db5b7dfe5..1c9785a32 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -9,7 +9,6 @@ import Dodge.Data.Equipment.Misc import Control.Lens import Data.Aeson import Data.Aeson.TH -import NewInt -- it would be nice to have these as empty types, but I'm not sure how to get -- aeson to handle that @@ -35,7 +34,7 @@ data ItemLocation , _ilEquipSite :: Maybe EquipSite } | OnTurret {_ilTuID :: Int} - | OnFloor {_ilFlID :: NewInt FloorInt} + | OnFloor-- {_ilFlID :: NewInt FloorInt} | InVoid deriving (Eq, Show, Ord, Read) --Generic, Flat) diff --git a/src/Dodge/Data/LWorld.hs b/src/Dodge/Data/LWorld.hs index 016b880cd..042804dd3 100644 --- a/src/Dodge/Data/LWorld.hs +++ b/src/Dodge/Data/LWorld.hs @@ -131,7 +131,7 @@ data LWorld = LWorld , _blocks :: IM.IntMap Block , _coordinates :: IM.IntMap Point2 , _triggers :: IM.IntMap Bool - , _floorItems :: NewIntMap FloorInt FloorItem + , _floorItems :: IM.IntMap FloorItem , _modifications :: IM.IntMap Modification , _worldEvents :: [WdWd] , _delayedEvents :: [(Int, WdWd)] diff --git a/src/Dodge/Default.hs b/src/Dodge/Default.hs index 7c9ae67e3..81f592afe 100644 --- a/src/Dodge/Default.hs +++ b/src/Dodge/Default.hs @@ -25,7 +25,7 @@ defaultEquipment :: Item defaultEquipment = defaultHeldItem & itUse .~ UseNothing defaultFlIt :: FloorItem -defaultFlIt = FlIt{_flItRot = 0, _flIt = defaultHeldItem, _flItPos = V2 0 0, _flItID = 0} +defaultFlIt = FlIt{_flItRot = 0, _flIt = defaultHeldItem, _flItPos = V2 0 0} defaultMachine :: Machine defaultMachine = diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index 5a2eca319..099b0483b 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -1,6 +1,4 @@ -module Dodge.Default.World ( - defaultWorld, -) where +module Dodge.Default.World (defaultWorld) where import Data.Graph.Inductive.Graph hiding ((&)) import qualified Data.Map as M @@ -8,7 +6,6 @@ import Dodge.Data.World import Geometry.Data import Geometry.Polygon import qualified IntMapHelp as IM -import NewInt import System.Random defaultInput :: Input @@ -87,7 +84,6 @@ defaultCWorld = { _lWorld = defaultLWorld , _cwGen = defaultCWGen , _cClock = 0 --- , _seenWalls = mempty , _pathGraph = Data.Graph.Inductive.Graph.empty , _cwTiles = mempty , _numberFloorVerxs = 0 @@ -133,7 +129,7 @@ defaultLWorld = , _doors = IM.empty , _coordinates = IM.empty , _triggers = IM.empty - , _floorItems = NIntMap IM.empty + , _floorItems = mempty , _worldEvents = [] , _delayedEvents = [] , _pressPlates = IM.empty @@ -156,7 +152,7 @@ defaultLWorld = , _imHotkeys = mempty , _lAimPos = 0 , _lInvLock = False - , _respawnPos = (V2 20 20, pi/2) + , _respawnPos = (V2 20 20, pi / 2) } defaultHUD :: HUD @@ -176,7 +172,6 @@ defaultDisplayInventory = { _subInventory = NoSubInventory , _diSections = mempty , _diSelection = Just (1, 0, mempty) --- , _diSelectionExtra = mempty , _diInvFilter = mempty , _diCloseFilter = mempty } diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index d45ddda27..ba6b4a38f 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -9,6 +9,7 @@ module Dodge.DisplayInventory ( toggleCombineInv, ) where +import NewInt import Control.Applicative import Control.Lens import Control.Monad @@ -158,7 +159,7 @@ updateDisplaySections w cfig = cr = you w closeitms = IM.fromDistinctAscList . zip [0 ..] $ - mapMaybe (closeItemToSelectionItem w) (w ^. hud . closeItems) + mapMaybe (closeItemToSelectionItem w) (map _unNInt $ w ^. hud . closeItems) invitems = IM.map (uncurry (invSelectionItem w)) diff --git a/src/Dodge/FloorItem.hs b/src/Dodge/FloorItem.hs index 69f761821..68bc4a7f6 100644 --- a/src/Dodge/FloorItem.hs +++ b/src/Dodge/FloorItem.hs @@ -16,28 +16,25 @@ import System.Random -- | Copy an item to the floor. copyItemToFloor :: Point2 -> Item -> World -> World -copyItemToFloor pos it = snd . copyItemToFloorID pos it +copyItemToFloor pos it = copyItemToFloorID pos it -- | Copy an item to the floor, returns the floor item's id. -copyItemToFloorID :: Point2 -> Item -> World -> (NewInt FloorInt, World) +copyItemToFloorID :: Point2 -> Item -> World -> World copyItemToFloorID pos it w = - (,) (NInt flid) $ w' - & cWorld . lWorld . floorItems . unNIntMap %~ IM.insert flid theflit - & cWorld . lWorld . itemLocations %~ IM.insert (_unNInt $ _itID it) (OnFloor $ NInt flid) - & hud . closeItems %~ (NInt flid:) + & cWorld . lWorld . floorItems %~ IM.insert (_unNInt $ _itID it) theflit + & cWorld . lWorld . itemLocations %~ IM.insert (_unNInt $ _itID it) OnFloor + & hud . closeItems %~ (_itID it:) -- & hud . hudElement . diSections . ix 3 . ssOffset .~ 0 -- ensures dropped item is at the top of the close item selection list where (p', w') = findWallFreeDropPoint (_dimRad $ itDim it) pos w rot = fst . randomR (- pi, pi) $ _randGen w - flid = IM.newKey . _unNIntMap . _floorItems . _lWorld $ _cWorld w theflit = FlIt - { _flIt = it & itLocation .~ OnFloor (NInt flid) + { _flIt = it & itLocation .~ OnFloor , _flItPos = p' , _flItRot = rot - , _flItID = NInt flid } cardinalVectors :: [Point2] diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index c3499ed54..57f3ed2e0 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -66,9 +66,9 @@ destroyItem itid w = case w ^? cWorld . lWorld . itemLocations . ix itid of Nothing -> error $ "Tried to destroy item that does not exist; item id: " ++ show itid Just InInv{_ilCrID = cid, _ilInvID = invid} -> destroyInvItem cid invid w Just OnTurret{} -> error "need to write code for destroying items on turrets" - Just (OnFloor (NInt i)) -> + Just OnFloor -> w & cWorld . lWorld . itemLocations . at itid .~ Nothing - & cWorld . lWorld . floorItems . unNIntMap . at i .~ Nothing + & cWorld . lWorld . floorItems . at itid .~ Nothing Just InVoid -> w & cWorld . lWorld . itemLocations . at itid .~ Nothing -- note rmInvItem does not fully destroy the item, other updates to the item @@ -125,7 +125,7 @@ updateCloseObjects w = g oldbts = intersect oldbts cbts `union` cbts f olditems = intersect olditems citems `union` citems lw = w ^. cWorld . lWorld - citems = lw^..floorItems . unNIntMap . each . filtered (isclose . _flItPos) . to _flItID + citems = lw^..floorItems . each . filtered (isclose . _flItPos) . to (_itID . _flIt) isclose x = dist y x < 40 && hasButtonLOS y x w y = _crPos $ you w cbts = lw^..buttons . each . filtered canpress . filtered (isclose . _btPos) . to _btID diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index cf7298c81..1d90d5e6b 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -23,9 +23,9 @@ import Dodge.FloorItem import Dodge.Inventory.CheckSlots import qualified IntMapHelp as IM -tryPutFloorItemIDInInv :: Int -> NewInt FloorInt -> World -> Maybe (Int, World) -tryPutFloorItemIDInInv cid flitid w = do - flit <- w ^? cWorld . lWorld . floorItems . unNIntMap . ix (_unNInt flitid) +tryPutFloorItemIDInInv :: Int -> Int -> World -> Maybe (Int, World) +tryPutFloorItemIDInInv cid i w = do + flit <- w ^? cWorld . lWorld . floorItems . ix i tryPutItemInInv cid flit w -- not sure why we have the cid here, this will probably only work for cid == 0 @@ -46,7 +46,7 @@ tryPutItemInInv cid flit w = case maybeInvSlot of Just ( i , w - & cWorld . lWorld . floorItems . unNIntMap %~ IM.delete (_unNInt $ _flItID flit) + & cWorld . lWorld . floorItems %~ IM.delete (flit ^. flIt . itID . unNInt) & cWorld . lWorld . creatures . ix cid . crInv %~ IM.insert i it & updateItLocation i -- I forget whether using "at" rather than "IM.insert" here caused problems @@ -93,14 +93,14 @@ tryPutItemInInv cid flit w = case maybeInvSlot of -- return (Just i, w') createItemYou :: Item -> World -> (ItemLocation, World) -createItemYou itm w = fromMaybe (OnFloor flid, w') $ do - (invid, w'') <- tryPutFloorItemIDInInv 0 flid w' +createItemYou itm w = fromMaybe (OnFloor, w') $ do + (invid, w'') <- tryPutFloorItemIDInInv 0 itid w' itloc <- w'' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix invid . itLocation return (itloc, w'') where itid = IM.newKey $ w ^. cWorld . lWorld . itemLocations pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos - (flid,w') = copyItemToFloorID pos (itm & itID .~ NInt itid) w + w' = copyItemToFloorID pos (itm & itID .~ NInt itid) w -- | Pick up a specific item. diff --git a/src/Dodge/Inventory/SelectionList.hs b/src/Dodge/Inventory/SelectionList.hs index 052056d0a..2c92fc574 100644 --- a/src/Dodge/Inventory/SelectionList.hs +++ b/src/Dodge/Inventory/SelectionList.hs @@ -202,9 +202,9 @@ hotkeyToChar = \case Hotkey9 -> '9' Hotkey0 -> '0' -closeItemToSelectionItem :: World -> NewInt FloorInt -> Maybe (SelectionItem ()) -closeItemToSelectionItem w (NInt i) = do - e <- w ^? cWorld . lWorld . floorItems . unNIntMap . ix i +closeItemToSelectionItem :: World -> Int -> Maybe (SelectionItem ()) +closeItemToSelectionItem w i = do + e <- w ^? cWorld . lWorld . floorItems . ix i let (pics, col) = closeItemToTextPictures e return SelItem diff --git a/src/Dodge/Item/Location.hs b/src/Dodge/Item/Location.hs index b5bcdc880..67f55a326 100644 --- a/src/Dodge/Item/Location.hs +++ b/src/Dodge/Item/Location.hs @@ -1,6 +1,6 @@ module Dodge.Item.Location ( pointerToItemID, - pointerToItemLocation, + --pointerToItemLocation, pointerToItem, pointerYourSelectedItem, pointerYourRootItem, @@ -11,42 +11,41 @@ import Control.Lens import Data.Maybe import Dodge.Data.World -pointerToItemLocation :: - Applicative f => - ItemLocation -> - (Item -> f Item) -> - World -> - f World -pointerToItemLocation InInv {_ilCrID = cid, _ilInvID = invid} - = cWorld . lWorld . creatures . ix cid . crInv . ix invid -pointerToItemLocation (OnFloor flid) = cWorld . lWorld . floorItems . unNIntMap . ix (_unNInt flid) . flIt -pointerToItemLocation _ = const pure +--pointerToItemLocation :: +-- Applicative f => +-- ItemLocation -> +-- (Item -> f Item) -> +-- World -> +-- f World +--pointerToItemLocation InInv {_ilCrID = cid, _ilInvID = invid} +-- = cWorld . lWorld . creatures . ix cid . crInv . ix invid +--pointerToItemLocation (OnFloor) = \f w -> +---- cWorld . lWorld . floorItems . ix (_unNInt flid) . flIt +--pointerToItemLocation _ = const pure pointerYourSelectedItem :: Applicative a => (Item -> a Item) -> World -> a World pointerYourSelectedItem f w = fromMaybe (pure w) $ do itinvid <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . imSelectedItem - Just $ pointerToItemLocation (InInv 0 itinvid True True True Nothing) f w + Just $ (cWorld . lWorld . creatures . ix 0 . crInv . ix itinvid) f w -- note the ilIsRoot/Selected/Attached booleans are irrelevant pointerYourRootItem :: Applicative a => (Item -> a Item) -> World -> a World pointerYourRootItem f w = fromMaybe (pure w) $ do itinvid <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . imRootSelectedItem - Just $ pointerToItemLocation (InInv 0 itinvid True True True Nothing) f w + Just $ (cWorld . lWorld . creatures . ix 0 . crInv . ix itinvid) f w -pointerToItem :: - Applicative f => - Item -> - (Item -> f Item) -> - World -> - f World -pointerToItem = pointerToItemLocation . _itLocation +pointerToItem :: Applicative f => Item -> (Item -> f Item) -> World -> f World +pointerToItem x = case x ^. itLocation of + OnFloor -> cWorld . lWorld . floorItems . ix (x ^. itID . unNInt) . flIt + OnTurret tid -> cWorld . lWorld . machines . ix tid . mcType . mctTurret . tuWeapon + InInv cid invid _ _ _ _ -> cWorld . lWorld . creatures . ix cid . crInv . ix invid + InVoid -> const pure -pointerToItemID :: - Applicative f => - NewInt ItmInt -> - (Item -> f Item) -> - World -> - f World +pointerToItemID :: Applicative f => NewInt ItmInt -> (Item -> f Item) -> World -> f World pointerToItemID itid f w = fromMaybe (pure w) $ do itloc <- w ^? cWorld . lWorld . itemLocations . ix (_unNInt itid) - return $ pointerToItemLocation itloc f w + return $ (\x -> x f w) $ case itloc of + OnFloor -> cWorld . lWorld . floorItems . ix (_unNInt itid) . flIt + OnTurret tid -> cWorld . lWorld . machines . ix tid . mcType . mctTurret . tuWeapon + InInv cid invid _ _ _ _ -> cWorld . lWorld . creatures . ix cid . crInv . ix invid + InVoid -> const pure diff --git a/src/Dodge/Item/Location/Initialize.hs b/src/Dodge/Item/Location/Initialize.hs index 4ce595017..5806fe3ff 100644 --- a/src/Dodge/Item/Location/Initialize.hs +++ b/src/Dodge/Item/Location/Initialize.hs @@ -10,17 +10,18 @@ import qualified IntMapHelp as IM import Data.Traversable initItemLocations :: LWorld -> LWorld -initItemLocations = initCrsItemLocations . initFlItemsLocations . initTusItemLocations +--initItemLocations = initCrsItemLocations . initFlItemsLocations . initTusItemLocations +initItemLocations = initCrsItemLocations . initTusItemLocations initCrsItemLocations :: LWorld -> LWorld initCrsItemLocations w = w' & creatures .~ newcreatures where (w', newcreatures) = mapAccumR initCrItemLocations w (w ^. creatures) -initFlItemsLocations :: LWorld -> LWorld -initFlItemsLocations w = w' & floorItems .~ NIntMap newfloorItems - where - (w', newfloorItems) = mapAccumR initFlItemLocation w (w ^. floorItems . unNIntMap) +--initFlItemsLocations :: LWorld -> LWorld +--initFlItemsLocations w = w' & floorItems .~ newfloorItems +-- where +-- (w', newfloorItems) = mapAccumR initFlItemLocation w (w ^. floorItems) initTusItemLocations :: LWorld -> LWorld initTusItemLocations w = w' & machines .~ newmachines @@ -54,14 +55,14 @@ initCrItemLocation cr invid w it = (w & itemLocations . at locid ?~ loc } -initFlItemLocation :: LWorld -> FloorItem -> (LWorld, FloorItem) -initFlItemLocation w flit = (w & itemLocations . at locid ?~ loc - , flit & flIt . itID .~ NInt locid - & flIt . itLocation .~ loc - ) - where - locid = IM.newKey (w ^. itemLocations ) - loc = OnFloor (_flItID flit) +--initFlItemLocation :: LWorld -> FloorItem -> (LWorld, FloorItem) +--initFlItemLocation w flit = (w & itemLocations . at locid ?~ loc +-- , flit & flIt . itID .~ NInt locid +-- & flIt . itLocation .~ loc +-- ) +-- where +-- locid = IM.newKey (w ^. itemLocations ) +-- loc = OnFloor (_flItID flit) initTuItemLocation :: LWorld -> Machine -> (LWorld, Machine) initTuItemLocation w mc = case mc ^? mcType . _McTurret . tuWeapon of diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index ea78ff5c5..701be2249 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -2,9 +2,7 @@ {- | deals with placement of objects within the world after they have had their coordinates set by the layout -} -module Dodge.Placement.PlaceSpot ( - placeSpot, -) where +module Dodge.Placement.PlaceSpot (placeSpot) where import Color import LensHelp @@ -22,7 +20,6 @@ import Dodge.Placement.Shift import Dodge.ShiftPoint import Geometry import qualified IntMapHelp as IM -import NewInt import System.Random -- when placing a placement, we update the world and the room and assign an id @@ -111,12 +108,15 @@ placeSpotID' ps pt w = case pt of PutProp prp -> plNewUpID (cWorld . lWorld . props) prID (mvProp p rot prp) w PutButton bt -> plNewUpID (cWorld . lWorld . buttons) btID (mvButton p rot bt) w PutTerminal tm -> plNewUpID (cWorld . lWorld . terminals) tmID tm w - PutFlIt itm -> - plNewUpID - (cWorld . lWorld . floorItems . unNIntMap) - (flItID . unNInt) - (createFlIt p rot itm) - w + PutFlIt itm -> let i = IM.newKey (w ^. cWorld . lWorld . itemLocations) + in (i, w & cWorld . lWorld . itemLocations . at i ?~ OnFloor + & cWorld . lWorld . floorItems . at i ?~ createFlIt p rot itm + ) +-- plNewUpID +-- (cWorld . lWorld . floorItems . unNIntMap) +-- (flItID . unNInt) +-- (createFlIt p rot itm) +-- w PutCrit cr -> plNewUpID (cWorld . lWorld . creatures) crID (mvCr p rot cr) w PutForeground fs -> plNewUpID (cWorld . lWorld . foregroundShapes) fsID (mvFS p rot fs) w PutMachine pps mc wl -> plMachine (map doShift pps) mc wl p rot w @@ -180,7 +180,7 @@ mvButton p a = (btRot +~ a) . (btPos %~ ((p +.+) . rotateV a)) {- Creates a floor item at a given point.-} createFlIt :: Point2 -> Float -> Item -> FloorItem -createFlIt p rot itm = FlIt{_flItPos = p, _flItRot = rot, _flItID = 0, _flIt = itm} +createFlIt p rot itm = FlIt{_flItPos = p, _flItRot = rot, _flIt = itm} mvPP :: Point2 -> Float -> PressPlate -> PressPlate mvPP p rot pp = pp{_ppPos = p, _ppRot = rot} diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index 1ff335e35..dacf7df01 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -163,9 +163,9 @@ destroyProjectile mitid pjid w = & removelink where removelink = fromMaybe id $ do - itid <- fmap _unNInt mitid - loc <- w ^? cWorld . lWorld . itemLocations . ix itid - return $ pointerToItemLocation loc . itUse . uaParams . apProjectiles %~ delete pjid + itid <- mitid +-- loc <- w ^? cWorld . lWorld . itemLocations . ix itid + return $ pointerToItemID itid . itUse . uaParams . apProjectiles %~ delete pjid trySpin :: Projectile -> World -> World trySpin pj = fromMaybe id $ do diff --git a/src/Dodge/RadarSweep.hs b/src/Dodge/RadarSweep.hs index e67c73e3b..0d5a77ec1 100644 --- a/src/Dodge/RadarSweep.hs +++ b/src/Dodge/RadarSweep.hs @@ -91,7 +91,7 @@ crBlips p r = (,mempty) . IM.elems . IM.filter f . fmap _crPos . IM.filter g . _ g cr = _crID cr /= 0 itemBlips :: Point2 -> Float -> World -> ([Point2], S.Set (Point2, Point2)) -itemBlips p r = (,mempty) . IM.elems . IM.filter f . fmap _flItPos . _unNIntMap . _floorItems . _lWorld . _cWorld +itemBlips p r = (,mempty) . IM.elems . IM.filter f . fmap _flItPos . _floorItems . _lWorld . _cWorld where f q = dist p q <= r && dist p q > r - 4 diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index ca08fd696..230bd3d3e 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -234,7 +234,7 @@ yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of Just (SelectedItem i _ _) -> f $ yourInv w ^?! ix i Just (SelCloseItem i) -> fromMaybe x $ do j <- w ^? hud . closeItems . ix i . unNInt - flit <- w ^? cWorld . lWorld . floorItems . unNIntMap . ix j + flit <- w ^? cWorld . lWorld . floorItems . ix j return . g $ Left flit Just (SelCloseButton i) -> fromMaybe x $ do j <- w ^? hud . closeButtons . ix i diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index a487e7ba3..83880f147 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -13,7 +13,6 @@ import Dodge.RadarBlip import Dodge.Render.Picture import Geometry import qualified IntMapHelp as IM -import NewInt import Picture import Shape import ShapePicture @@ -30,7 +29,7 @@ worldSPic cfig u = <> foldup (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn _fsPos _foregroundShapes) <> foldup (shiftDraw' _cpPos _cpDir _cpSPic) (filtOn _cpPos _corpses) <> foldup drawCreature (filtOn _crPos _creatures) - <> foldup floorItemSPic (filtOn _flItPos (_unNIntMap . _floorItems)) + <> foldup floorItemSPic (filtOn _flItPos (_floorItems)) <> foldup btSPic (filtOn _btPos _buttons) <> foldup (mcSPic (u ^. uvWorld . cWorld . lWorld)) (filtOn _mcPos _machines) <> foldMap' drawChasm (u ^. uvWorld . cWorld . chasms) diff --git a/src/Dodge/SelectedClose.hs b/src/Dodge/SelectedClose.hs index 75ed1d6c1..5eccf0112 100644 --- a/src/Dodge/SelectedClose.hs +++ b/src/Dodge/SelectedClose.hs @@ -17,7 +17,7 @@ getSelectedCloseObj w = do case i of 3 -> do NInt k <- w ^? hud . closeItems . ix j - fmap Left $ w ^? cWorld . lWorld . floorItems . unNIntMap . ix k + fmap Left $ w ^? cWorld . lWorld . floorItems . ix k 5 -> do k <- w ^? hud . closeButtons . ix j fmap Right $ w ^? cWorld . lWorld . buttons . ix k diff --git a/src/Dodge/Terminal.hs b/src/Dodge/Terminal.hs index 3f1380694..89ebda546 100644 --- a/src/Dodge/Terminal.hs +++ b/src/Dodge/Terminal.hs @@ -64,7 +64,7 @@ getCommand w tm = \case TCSensorInfo -> sensorCommand w tm damageCodeCommand :: World -> Terminal -> PTE.TrieMap Char (PTE.TrieMap Char [TerminalLine]) -damageCodeCommand w tm +damageCodeCommand w _ = PTE.singleton "DAMAGECODE" $ PTE.fromList $ mapMaybe f [minBound ..] where f :: SensorType -> Maybe (String, [TerminalLine]) diff --git a/src/Dodge/TractorBeam/Update.hs b/src/Dodge/TractorBeam/Update.hs index 12c0c149b..5e718e6b4 100644 --- a/src/Dodge/TractorBeam/Update.hs +++ b/src/Dodge/TractorBeam/Update.hs @@ -1,6 +1,5 @@ -module Dodge.TractorBeam.Update where +module Dodge.TractorBeam.Update (updateTractorBeam) where -import NewInt import Control.Lens import Dodge.Data.World import Geometry @@ -12,7 +11,7 @@ updateTractorBeam w pj | otherwise = ( w & cWorld . lWorld . creatures %~ IM.map (tractCr pullVel pos outpos) - & cWorld . lWorld . floorItems . unNIntMap %~ IM.map (tractFlIt pullVel pos outpos) + & cWorld . lWorld . floorItems %~ IM.map (tractFlIt pullVel pos outpos) , Just (pj & tbTime -~ 1) ) where diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 8318b06ed..d616187f3 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -150,7 +150,7 @@ tryPickupSelected k mpos w = do where g i = do NInt j <- w ^? hud . closeItems . ix i - w ^? cWorld . lWorld . floorItems . unNIntMap . ix j + w ^? cWorld . lWorld . floorItems . ix j updateMouseReleaseInGame :: World -> World updateMouseReleaseInGame w = case w ^. input . mouseContext of @@ -531,7 +531,7 @@ getCloseObj w = getSelectedCloseObj w <|> topcitem <|> topcbut k' <- (w ^? hud . hudElement . diSections . ix 3 . ssItems) >>= (fmap fst . IM.lookupMin) NInt k <- w ^? hud . closeItems . ix k' - Left <$> w ^? cWorld . lWorld . floorItems . unNIntMap . ix k + Left <$> w ^? cWorld . lWorld . floorItems . ix k topcbut = do k <- w ^? hud . closeButtons . ix 0 Right <$> w ^? cWorld . lWorld . buttons . ix k