diff --git a/log/aGeneratedRoomLayout b/log/aGeneratedRoomLayout index 22328d91a..9c0698f8d 100644 --- a/log/aGeneratedRoomLayout +++ b/log/aGeneratedRoomLayout @@ -1,7 +1,13 @@ Seed: 7114951007332849727 Room layout (compact): -0 +0,1,2,3 Layout with room names: Corridor-0 +| +6gon-1 +| +defaultRoom-2 +| +autoRect-3 diff --git a/log/attemptedSeeds b/log/attemptedSeeds index 85761fe75..d86853147 100644 --- a/log/attemptedSeeds +++ b/log/attemptedSeeds @@ -1,4 +1,4 @@ Generating level with seed 7114951007332849727 After 1 attempt(s), Successful generation of level with seed 7114951007332849727 -1 rooms in total +4 rooms in total diff --git a/log/treeCluster b/log/treeCluster index f919e2cba..2bc7ebb0b 100644 --- a/log/treeCluster +++ b/log/treeCluster @@ -1,5 +1,15 @@ Seed: 7114951007332849727 0:teststart +| +1:TutDrop -0:0:Corridor +0:0:teststart + +0:0:0:Corridor + +1:0:6gon +| +1:1:defaultRoom +| +1:2:autoRect diff --git a/saveSlot/LevelStart0 b/saveSlot/LevelStart0 index 038863308..563e4ede0 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":{"_unNIntMap":[]},"_crManipulation":{"tag":"Manipulator","_manObject":{"tag":"SelNothing"}},"_crEquipment":[],"_crDamage":[],"_crPain":0,"_crStance":{"_carriage":{"tag":"Walking","_strideAmount":0.0,"_currentFoot":"LeftForward"},"_posture":{"tag":"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":[],"_items":[],"_clouds":[],"_dusts":[],"_gusts":[],"_props":[],"_debris":[],"_projectiles":[],"_bullets":[],"_radarSweeps":[],"_energyBalls":[],"_flames":[],"_sparks":[],"_radarBlips":[],"_flares":[],"_teslaArcs":[],"_arcNode":[],"_shockwaves":[],"_lasers":[],"_pulseLasers":[],"_pulseBalls":[],"_linearShockwaves":[],"_tractorBeams":[],"_walls":[[0,{"_wlLine":[[40.0,80.0],[0.0,80.0]],"_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":[[0.0,80.0],[0.0,0.0]],"_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":[[0.0,0.0],[40.0,0.0]],"_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":[[40.0,0.0],[40.0,80.0]],"_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"}]],"_wallDamages":[],"_doors":[],"_machines":[],"_terminals":[],"_oldMagnets":[],"_magnets":[],"_blocks":[],"_coordinates":[],"_triggers":[],"_floorItems":[],"_modifications":[],"_worldEvents":[],"_delayedEvents":[],"_pressPlates":[],"_buttons":[],"_foregroundShapes":[[0,{"_fsID":0,"_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":[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":0.0,"_bdMaxX":40.0,"_bdMinY":0.0,"_bdMaxY":80.0},"_cwgGameRooms":[{"_grViewpoints":[[40.0,80.0],[0.0,80.0],[0.0,0.0],[40.0,0.0],[20.0,70.0],[20.0,70.0],[20.0,10.0],[20.0,70.0]],"_grViewpointsEx":[],"_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":[],"_grName":"Corridor"}],"_cwgRoomClipping":[{"_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}],"_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":[]}]]]]]],"_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":{"_unNIntMap":[]},"_crManipulation":{"tag":"Manipulator","_manObject":{"tag":"SelNothing"}},"_crEquipment":[],"_crDamage":[],"_crPain":0,"_crStance":{"_carriage":{"tag":"Walking","_strideAmount":0.0,"_currentFoot":"LeftForward"},"_posture":{"tag":"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":[],"_items":[],"_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/Annotation.hs b/src/Dodge/Annotation.hs index e327a7e44..095696de9 100644 --- a/src/Dodge/Annotation.hs +++ b/src/Dodge/Annotation.hs @@ -30,7 +30,7 @@ annoToRoomTree an = case an of i <- nextLayoutInt (functionlockroom, randomitemidentity) <- takeOne ls lr <- zoom lyGen $ functionlockroom i - ii <- zoom lyGen $ randomitemidentity + ii <- zoom lyGen randomitemidentity keyroom <- zoom lyGen . fromJust $ lookup ii ks return $ MTree diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 1573d8638..9f13d1928 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -168,7 +168,7 @@ dropExcept :: Creature -> Int -> World -> World dropExcept cr invid w = foldr (dropItem cr) w . IM.keys $ -- invid `IM.delete` _crInv cr - invid `IM.delete` (_unNIntMap $ _crInv cr) + invid `IM.delete` _unNIntMap (_crInv cr) -- why not a cid (Int)? dropItem :: Creature -> Int -> World -> World diff --git a/src/Dodge/Creature/HandPos.hs b/src/Dodge/Creature/HandPos.hs index e1c29f33e..9471571ea 100644 --- a/src/Dodge/Creature/HandPos.hs +++ b/src/Dodge/Creature/HandPos.hs @@ -36,14 +36,6 @@ equipSitePQ = \case translatePointToRightHand :: Creature -> Point3 -> Point3 translatePointToRightHand cr p = fst (rightHandPQ cr `Q.comp` (p,Q.qID)) ---equipSitePQ :: EquipSite -> IM.IntMap Item -> Creature -> Point3Q ---equipSitePQ = \case --- OnRightWrist -> rightHandPQ --- OnLeftWrist -> leftHandPQ --- OnBack -> backPQ --- OnChest -> chestPQ --- _ -> undefined - rightHandPQ :: Creature -> Point3Q rightHandPQ cr | oneH cr = (V3 11 (-3) 20, Q.qID) diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index e0a211c5e..66815ea7b 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -19,7 +19,7 @@ import Dodge.Item.Location useItem :: Int -> Int -> World -> Maybe World useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do cr <- w ^? cWorld . lWorld . creatures . ix 0 - itmloc <- invIndents (fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ _crInv cr) ^? ix invid . _2 + itmloc <- invIndents ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) ^? ix invid . _2 useItemLoc cr itmloc pt w useItemLoc :: Creature -> LocationDT OItem -> Int -> World -> Maybe World diff --git a/src/Dodge/Creature/Test.hs b/src/Dodge/Creature/Test.hs index cd090c85b..46dfecf77 100644 --- a/src/Dodge/Creature/Test.hs +++ b/src/Dodge/Creature/Test.hs @@ -87,9 +87,6 @@ crAwayFromPost cr = case find sentinelGoal . _apGoal $ _crActionPlan cr of sentinelGoal (SentinelAt _ _) = True sentinelGoal _ = False ---crCanShoot :: Creature -> Bool ---crCanShoot cr = crIsAiming cr && crWeaponReady cr - crInAimStance :: AimStance -> Creature -> Bool crInAimStance as cr = cr ^? crStance . posture . aimStance == Just as diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 4335edb5e..56efbb71c 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -156,11 +156,11 @@ updateDisplaySections w cfig = cr = you w closeitms = IM.fromDistinctAscList . zip [0 ..] $ - mapMaybe (closeItemToSelectionItem w) (map _unNInt $ w ^. hud . closeItems) + mapMaybe (closeItemToSelectionItem w . _unNInt) (w ^. hud . closeItems) invitems = IM.map (uncurry (invSelectionItem w)) - (invIndents $ fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ _crInv cr) + (invIndents $ (\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) filterSectionsPair :: Bool -> -- check for whether filter is in focus, changes string at the end diff --git a/src/Dodge/Equipment.hs b/src/Dodge/Equipment.hs index e7521923f..6f67d02ad 100644 --- a/src/Dodge/Equipment.hs +++ b/src/Dodge/Equipment.hs @@ -13,6 +13,7 @@ import Dodge.Wall.ForceField import Dodge.Wall.Move import Geometry import qualified IntMapHelp as IM +import NewInt effectOnRemove :: Item -> Creature -> World -> World effectOnRemove itm = case itm ^. itType of @@ -49,11 +50,14 @@ setWristShieldPos itm cr w = w & moveWallIDUnsafe i wlline where i = _itParamID $ _itParams itm wlline = (f (V3 (-10) 7 0), f (V3 10 7 0)) - invid = _ilInvID (_itLocation itm) - handtrans = case cr ^? crInv . ix invid >>= \k -> w ^? cWorld . lWorld . items . ix k . itLocation . ilEquipSite . _Just of - Just x -> translateToES cr x -- . g - _ -> undefined --- g --- | twists cr = (+.+.+ V3 (-5) 10 0) --- | otherwise = id + handtrans = case w ^? cWorld . lWorld . items + . ix (itm ^. itID . unNInt) + . itLocation + . ilEquipSite + . _Just of + Just x -> translateToES cr x -- . g + _ -> undefined + -- g + -- | twists cr = (+.+.+ V3 (-5) 10 0) + -- | otherwise = id f = (+.+ _crPos cr) . stripZ . rotate3 (_crDir cr) . handtrans diff --git a/src/Dodge/Euse.hs b/src/Dodge/Euse.hs index e72c6bdd7..c839ca650 100644 --- a/src/Dodge/Euse.hs +++ b/src/Dodge/Euse.hs @@ -33,7 +33,7 @@ useMagShield mt _ cr w = } setWristShieldPos :: Item -> Creature -> EquipSite -> World -> World -setWristShieldPos itm cr x w = moveWallIDUnsafe i wlline w +setWristShieldPos itm cr x = moveWallIDUnsafe i wlline where i = _itParamID $ _itParams itm wlline = (f (V3 (-10) 7 0), f (V3 10 7 0)) diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 1fecef501..144ddf813 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -128,4 +128,4 @@ intAnno f = do zoom lyGen (f i) anRoom :: State StdGen Room -> Annotation -anRoom t = AnTree $ zoom lyGen $ (tToBTree "anRoom" . return . cleatOnward <$> t) +anRoom t = AnTree $ zoom lyGen (tToBTree "anRoom" . return . cleatOnward <$> t) diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index afa571a55..76e33b288 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -419,8 +419,7 @@ itemSidePush = \case applyInvLock :: Item -> Creature -> World -> World applyInvLock itm cr = case itemInvLock itm of - i - | i > 0 && cid == 0 -> + i | i > 0 && cid == 0 -> (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv)) . lockInv _ -> id where @@ -668,12 +667,11 @@ makeMuzzleFlare mz loc cr = case mz ^. mzFlareType of --{-# OPTIONS -Wno-incomplete-uni-patterns #-} muzFlareAt :: Color -> Point3 -> Float -> World -> World -muzFlareAt col tranv dir w = - w & randGen .~ g - & cWorld . lWorld . flares <>~ thepic +muzFlareAt col x dir w = + w & randGen .~ g & cWorld . lWorld . flares <>~ thepic where thepic = - setLayer BloomLayer . translate3 tranv . color col . rotate dir . polygon $ + setLayer BloomLayer . translate3 x . color col . rotate dir . polygon $ [ V2 0 0 , V2 a (- b) , V2 c d @@ -779,11 +777,7 @@ itemDetectorEffect itm mitid armitid cr w = fromMaybe w $ do walkNozzle :: Muzzle -> Item -> World -> World walkNozzle mz itm w = w - & cWorld . lWorld . items - . ix (itm ^. itID . unNInt) - . itParams - . nzAngle - %~ f + & cWorld . lWorld . items . ix (itm ^. itID . unNInt) . itParams . nzAngle %~ f & randGen .~ g where nz = _mzEffect mz @@ -1118,8 +1112,13 @@ mcUseHeld hit = case hit of LASER -> mcShootLaser _ -> mcShootAuto -useGasParams :: Maybe (NewInt InvInt) - -> Muzzle -> LocationDT OItem -> Creature -> World -> World +useGasParams :: + Maybe (NewInt InvInt) -> + Muzzle -> + LocationDT OItem -> + Creature -> + World -> + World useGasParams mmagid mz loc cr w = w & createGas gastype pressure pos dir cr @@ -1319,25 +1318,17 @@ createProjectile :: Creature -> World -> World -createProjectile x pjtype magtree stab muz cr w = - w - & ( fromMaybe failsound $ do - magid <- magtree ^? dtValue . _1 . itLocation . ilInvID - ammoitem <- cr ^? crInv . ix magid >>= \k -> w ^? cWorld . lWorld . items . ix k - let rdetonate = - (^. dtValue . _1 . itID) - <$> find isrdet (magtree ^. dtLeft) - rscreen = - (^. dtValue . _1 . itID) - <$> find isrscreen (magtree ^. dtLeft) - aparams <- - ((magtree ^? dtLeft) >>= find isampay >>= (^? dtValue . _1 . itType . ibtAttach . shellPayload)) - -- <|> ammoitem ^? itConsumables . magParams . ampPayload - <|> magAmmoParams ammoitem ^? _Just . ampPayload - return $ - createShell x rdetonate rscreen stab pjtype aparams muz cr - . startthesound - ) +createProjectile x pjtype mtree stab muz cr w = fromMaybe (failsound w) $ do + magitid <- mtree ^? dtValue . _1 . itID . unNInt + ammoitem <- w ^? cWorld . lWorld . items . ix magitid + let rdetonate = + (^. dtValue . _1 . itID) <$> find isrdet (mtree ^. dtLeft) + rscreen = + (^. dtValue . _1 . itID) <$> find isrscreen (mtree ^. dtLeft) + aparams <- + ((mtree ^? dtLeft) >>= find isampay >>= (^? dtValue . _1 . itType . ibtAttach . shellPayload)) + <|> magAmmoParams ammoitem ^? _Just . ampPayload + return . makesound $ createShell x rdetonate rscreen stab pjtype aparams muz cr w where isrdet :: DTree OItem -> Bool isrdet y = case y ^. dtValue . _2 of @@ -1353,7 +1344,7 @@ createProjectile x pjtype magtree stab muz cr w = _ -> False -- the sound should be moved to the projectile firing - startthesound = + makesound = soundMultiFrom [CrWeaponSound (_crID cr) j | j <- [0 .. 3]] (_crPos cr) diff --git a/src/Dodge/InputFocus.hs b/src/Dodge/InputFocus.hs index 46cf0e4af..4e4ec16ce 100644 --- a/src/Dodge/InputFocus.hs +++ b/src/Dodge/InputFocus.hs @@ -6,27 +6,19 @@ import Dodge.Data.World import LensHelp inTextInputFocus :: World -> Bool -inTextInputFocus = isJust . inputFocusI +inTextInputFocus = isJust . textInputFocus -inputFocusI :: World -> Maybe ((String -> Identity String) -> World -> Identity World) -inputFocusI = textInputFocus - -textInputFocus :: - Applicative f => - World -> - Maybe ((String -> f String) -> World -> f World) -textInputFocus w = case w ^? hud . subInventory of - Just NoSubInventory{} -> case he ^? diSelection . _Just . slSec of +textInputFocus :: World -> Maybe ((String -> Identity String) -> World -> Identity World) +textInputFocus w = case w ^. hud . subInventory of + NoSubInventory{} -> case he ^? diSelection . _Just . slSec of Just (-1) -> Just $ hud . diInvFilter . _Just Just 2 -> Just $ hud . diCloseFilter . _Just _ -> Nothing - Just CombineInventory{} -> case he ^? subInventory . ciSelection . _Just . slSec of + CombineInventory{} -> case he ^? subInventory . ciSelection . _Just . slSec of Just (-1) -> Just $ hud . subInventory . ciFilter . _Just _ -> Nothing - Just DisplayTerminal{_termID = tmid} -> do --- connectionstatus <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus - -- guard $ connectionstatus == TerminalTextInput - return $ cWorld . lWorld . terminals . ix tmid . tmStatus . tiText + DisplayTerminal{_termID = tmid} -> return + $ cWorld . lWorld . terminals . ix tmid . tmStatus . tiText _ -> Nothing where he = w ^. hud diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 5beb7c835..65fe4ad6d 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -19,7 +19,6 @@ import Dodge.SoundLogic import qualified IntMapHelp as IM import NewInt --- should check that the item is not already in your inventory -- this assumes that this item is currently on the floor tryPutItemInInv :: Int -> Int -> World -> Maybe (NewInt InvInt, World) tryPutItemInInv cid itid w = do @@ -44,7 +43,7 @@ tryPutItemInInv cid itid w = do where updateselectionextra i | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i)) - . (hud . diSelection . _Just . slInt %~ (f i)) + . (hud . diSelection . _Just . slInt %~ f i) | otherwise = id f j i | i >= _unNInt j = i + 1 | otherwise = i diff --git a/src/Dodge/Inventory/RBList.hs b/src/Dodge/Inventory/RBList.hs index 30fae344c..ec24b64e7 100644 --- a/src/Dodge/Inventory/RBList.hs +++ b/src/Dodge/Inventory/RBList.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE TupleSections #-} +--{-# LANGUAGE TupleSections #-} module Dodge.Inventory.RBList ( updateRBList, diff --git a/src/Dodge/Item/Draw.hs b/src/Dodge/Item/Draw.hs index 54c8e31e2..cd374412e 100644 --- a/src/Dodge/Item/Draw.hs +++ b/src/Dodge/Item/Draw.hs @@ -1,29 +1,26 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.Item.Draw ( - itemSPic, - itemEquipPict, -) where -import qualified Quaternion as Q -import Dodge.Data.Equipment.Misc -import Dodge.Data.ComposedItem -import Dodge.Data.DoubleTree -import Geometry.Data +module Dodge.Item.Draw (itemEquipPict) where + import Control.Lens import Dodge.Creature.HandPos +import Dodge.Data.ComposedItem import Dodge.Data.Creature +import Dodge.Data.DoubleTree +import Dodge.Data.Equipment.Misc import Dodge.Item.Draw.SPic import Dodge.Item.HeldOffset +import Geometry.Data +import qualified Quaternion as Q import ShapePicture itemEquipPict :: Creature -> DTree CItem -> SPic itemEquipPict cr itmtree - | --Just i <- itm ^? itLocation . ilInvID - Just esite <- itm ^? itLocation . ilEquipSite . _Just - , Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip - = equipPosition esite cr attachpos (itemSPic itm) - | itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem - = overPosSP (Q.prePos $ handHandleOrient loc cr) (itemTreeSPic itmtree) + | Just esite <- itm ^? itLocation . ilEquipSite . _Just + , Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip = + equipPosition esite cr attachpos (itemSPic itm) + | itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem = + overPosSP (Q.prePos $ handHandleOrient loc cr) (itemTreeSPic itmtree) | otherwise = mempty where itm = itmtree ^. dtValue . _1 @@ -31,23 +28,13 @@ itemEquipPict cr itmtree equipAttachPos :: EquipItemType -> Point3Q equipAttachPos = \case - BATTERYPACK -> (V3 (-8) 0 10, Q.qID) + BATTERYPACK -> (V3 (-8) 0 10, Q.qID) FUELPACK -> (V3 (-9) 0 10, Q.qID) BULLETBELTPACK -> (V3 (-9) 0 10, Q.qID) BULLETBELTBRACER -> (V3 (-9) 0 10, Q.qID) _ -> (0, Q.qID) equipPosition :: EquipSite -> Creature -> Point3Q -> SPic -> SPic -equipPosition es cr q = overPosSP - (\x -> fst $ equipSitePQ es cr `Q.comp` q `Q.comp` (x,Q.qID)) --- case epos of --- --OnLeftWrist -> translateToLeftWrist cr --- --OnRightWrist -> translateToRightWrist cr --- OnLeftWrist -> overPosSP (translateToES cr OnLeftWrist) --- OnRightWrist -> overPosSP (translateToES cr OnRightWrist) --- OnLegs -> --- translateToLeftLeg cr --- <> translateToRightLeg cr-- (mirrorSPxz sh) --- OnHead -> overPosSP (translateToES cr OnHead) --- OnChest -> overPosSP (translateToES cr OnChest) --- OnBack -> overPosSP (\x -> fst $ backPQ cr `Q.comp` (p + x,Q.qID)) +equipPosition es cr q = + overPosSP + (\x -> fst $ equipSitePQ es cr `Q.comp` q `Q.comp` (x, Q.qID)) diff --git a/src/Dodge/Item/Location/Initialize.hs b/src/Dodge/Item/Location/Initialize.hs deleted file mode 100644 index b0a8cdc50..000000000 --- a/src/Dodge/Item/Location/Initialize.hs +++ /dev/null @@ -1,76 +0,0 @@ -module Dodge.Item.Location.Initialize - ( -- initSpecificCrItemLocations - --, initItemLocations - ) - where ---import NewInt ---import Dodge.Data.LWorld ---import Control.Lens ---import qualified IntMapHelp as IM ---import Data.Traversable - ---initItemLocations :: LWorld -> LWorld -----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 .~ newfloorItems ----- where ----- (w', newfloorItems) = mapAccumR initFlItemLocation w (w ^. floorItems) --- -----initTusItemLocations :: LWorld -> LWorld -----initTusItemLocations w = w' & machines .~ newmachines ----- where ----- (w', newmachines) = mapAccumR initTuItemLocation w (w ^. machines) --- ---initSpecificCrItemLocations :: Int -> LWorld -> LWorld ---initSpecificCrItemLocations crid w = w' & creatures . ix crid .~ newcr --- where --- (w',newcr) = initCrItemLocations w (w ^?! creatures . ix crid) --- ---initCrItemLocations :: LWorld -> Creature -> (LWorld, Creature) ---initCrItemLocations w cr = (w', cr & crInv .~ newinv) --- where --- (w',newinv) = imapAccumR (initCrItemLocation cr) w (_crInv cr) --- ----- does not worry about creature manipulation for now ---initCrItemLocation :: Creature -> Int -> LWorld -> Int -> (LWorld,Item) ---initCrItemLocation cr invid w itid = (w & itemLocations . at locid ?~ loc --- ,it & itID .~ NInt locid --- & itLocation .~ loc) --- where --- locid = IM.newKey ( w ^. itemLocations) --- loc = InInv --- { _ilCrID = _crID cr --- , _ilInvID = invid --- , _ilIsRoot = False --- , _ilIsSelected = False --- , _ilIsAttached = False --- , _ilEquipSite = Nothing --- } --- --- -----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 ----- Nothing -> (w, mc) ----- Just _ -> ----- let locid = IM.newKey ( w ^. itemLocations) ----- loc = OnTurret (_mcID mc) ----- in ( w & itemLocations . at locid ?~ loc ----- , mc & mcType . _McTurret . tuWeapon . itID .~ NInt locid ----- & mcType . _McTurret . tuWeapon . itLocation .~ loc ----- ) diff --git a/src/Dodge/Machine/Update.hs b/src/Dodge/Machine/Update.hs index 81a3fe617..99f8435e1 100644 --- a/src/Dodge/Machine/Update.hs +++ b/src/Dodge/Machine/Update.hs @@ -154,7 +154,7 @@ mcProxTest :: Machine -> World -> Bool mcProxTest mc w = case mc ^? mcType . _McSensor . proxRequirement of Just (RequireHealth x) -> _crHP cr >= x Just (RequireEquipment ct) -> any (\itm -> _itType itm == ct) - (fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ _crInv cr) + ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) _ -> False where cr = you w diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 225124194..6ca4fa579 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -1,12 +1,12 @@ +{-# LANGUAGE LambdaCase #-} {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} + {- | deals with placement of objects within the world after they have had their coordinates set by the layout -} module Dodge.Placement.PlaceSpot (placeSpot) where -import NewInt import Color -import LensHelp import Control.Monad.State import Data.Bifunctor import Data.Foldable @@ -21,6 +21,8 @@ import Dodge.Placement.Shift import Dodge.ShiftPoint import Geometry import qualified IntMapHelp as IM +import LensHelp +import NewInt import System.Random -- when placing a placement, we update the world and the room and assign an id @@ -109,17 +111,21 @@ 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 -> let i = IM.newKey (w ^. cWorld . lWorld . items) - in (i, w - & cWorld . lWorld . floorItems . at i ?~ createFlIt p rot - & cWorld . lWorld . items . at i ?~ (itm & itID .~ NInt i - & itLocation .~ OnFloor) + PutFlIt itm -> + let i = IM.newKey (w ^. cWorld . lWorld . items) + in ( i + , w + & cWorld . lWorld . floorItems . at i ?~ FlIt p rot + & cWorld . lWorld . items . at i + ?~ ( itm & itID .~ NInt i + & itLocation .~ OnFloor + ) ) --- plNewUpID --- (cWorld . lWorld . floorItems . unNIntMap) --- (flItID . unNInt) --- (createFlIt p rot itm) --- w + -- 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 mitm -> plMachine (map doShift pps) mc wl mitm p rot w @@ -181,10 +187,6 @@ mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a)) mvButton :: Point2 -> Float -> Button -> Button mvButton p a = (btRot +~ a) . (btPos %~ ((p +.+) . rotateV a)) -{- Creates a floor item at a given point.-} -createFlIt :: Point2 -> Float -> FloorItem -createFlIt p rot = FlIt{_flItPos = p, _flItRot = rot} - mvPP :: Point2 -> Float -> PressPlate -> PressPlate mvPP p rot pp = pp{_ppPos = p, _ppRot = rot} @@ -194,8 +196,9 @@ mvCr p rot cr = cr{_crPos = p, _crOldPos = p, _crDir = rot} mvFS :: Point2 -> Float -> ForegroundShape -> ForegroundShape mvFS p a = (fsDir +~ a) . (fsPos %~ ((p +.+) . rotateV a)) -plMachine :: [Point2] -> Machine -> Wall -> Maybe Item -> Point2 -> Float -> World -> (Int, World) -plMachine wallpoly mc wl mitm = case mitm of +plMachine :: + [Point2] -> Machine -> Wall -> Maybe Item -> Point2 -> Float -> World -> (Int, World) +plMachine wallpoly mc wl = \case Nothing -> plMachine' wallpoly mc wl Just itm -> plTurret wallpoly mc wl itm @@ -207,15 +210,20 @@ plTurret wallpoly mc wl itm p rot gw = & cWorld . lWorld . items . at itid ?~ itm' ) where - itm' = itm & itID .~ NInt itid - & itLocation .~ OnTurret mcid + itm' = + itm & itID .~ NInt itid + & itLocation .~ OnTurret mcid itid = IM.newKey $ gw ^. cWorld . lWorld . items col = _mcColor mc mcid = IM.newKey $ gw ^. cWorld . lWorld . machines wlid = IM.newKey $ gw ^. cWorld . lWorld . walls wlids = IS.fromList [wlid .. wlid + length wallpoly - 1] - addMc = IM.insert mcid (mc{_mcPos = p, _mcDir = rot, _mcID = mcid, _mcWallIDs = wlids} - & mcType . mctTurret . tuWeapon .~ itid) + addMc = + IM.insert + mcid + ( mc{_mcPos = p, _mcDir = rot, _mcID = mcid, _mcWallIDs = wlids} + & mcType . mctTurret . tuWeapon .~ itid + ) plMachine' :: [Point2] -> Machine -> Wall -> Point2 -> Float -> World -> (Int, World) plMachine' wallpoly mc wl p rot gw = diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index a0223eeb1..f8ae1f4d7 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -43,8 +43,6 @@ createShell (p,q) mdetonator mscreen stab pjtype payload muz cr w = , _pjPayload = payload , _pjTimer = lifespan , _pjBarrelSpin = bs --- , _pjUpdates = --- anyspin , _pjType = pjtype , _pjDetonatorID = mdetonator , _pjScreenID = mscreen diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index d051c897a..05fe0454c 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -209,8 +209,6 @@ doThrust pj smoke w = (sparkD, _) = randomR (-0.2, 0.2) $ _randGen w r1 = randInCirc 10 & evalState $ _randGen w --- there doesn't seem to be a more sensible way to filter the first occurence of --- a list than deleteBy doBarrelSpin :: Int -> Float -> Projectile -> World -> World doBarrelSpin cid i pj w = w & cWorld . lWorld . projectiles . ix pjid . pjSpin .~ newSpin diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index b028bf30e..3d2e0ff83 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -2,6 +2,7 @@ module Dodge.Render.ShapePicture ( worldSPic, ) where +import Dodge.Item.Draw.SPic import Control.Lens import Data.Foldable import Data.Strict.Tuple @@ -30,7 +31,7 @@ worldSPic cfig u = <> foldup (shiftDraw' _cpPos _cpDir _cpSPic) (filtOn _cpPos _corpses) <> foldup (drawCreature (u ^. uvWorld . cWorld . lWorld . items)) (filtOn _crPos _creatures) - <> foldup (Prelude.uncurry floorItemSPic) (IM.intersectionWith (,) (u^.uvWorld.cWorld.lWorld.items) (filtOn _flItPos (_floorItems))) + <> foldup (Prelude.uncurry floorItemSPic) (IM.intersectionWith (,) (u^.uvWorld.cWorld.lWorld.items) (filtOn _flItPos _floorItems)) <> foldup btSPic (filtOn _btPos _buttons) <> foldup (mcSPic (u ^. uvWorld . cWorld . lWorld)) (filtOn _mcPos _machines) <> foldMap' drawChasm (u ^. uvWorld . cWorld . chasms) @@ -123,7 +124,7 @@ floorItemSPic itm flit = uncurryV translateSPxy (_flItPos flit) $ rotateSP (_flItRot flit) - (itemSPic $ itm) + (itemSPic itm) btSPic :: Button -> SPic btSPic bt = diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs index c03459685..bd7a8ee78 100644 --- a/src/Dodge/Room/LasTurret.hs +++ b/src/Dodge/Room/LasTurret.hs @@ -42,7 +42,7 @@ lightSensInsideDoor i rm = , psPt atFstLnkOut (PutForeground $ floorWire (V2 0 (-100)) (V2 20 (-100))) , psPt atFstLnkOut (PutForeground $ verticalWire (V2 20 0) 0 80) ] - & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100)) + & rmOutPmnt . at i ?~ sensAboveDoor LaserSensor 10 (atFstLnkOutShiftInward 100) lightSensByDoor :: Int -> Room -> Room lightSensByDoor i rm = @@ -52,7 +52,7 @@ lightSensByDoor i rm = , heightWallPS (atNthLnkOutShiftInward 1 100) 30 covershape , heightWallPS (atFstLnkOutShiftInward 100) 30 covershape ] - & rmOutPmnt . at i ?~ (sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift)) + & rmOutPmnt . at i ?~ sensAboveDoor LaserSensor 20 (atFstLnkOutShiftBy sensorshift) where covershape = rectNSWE 10 (-10) (-20) 20 sensorshift (p, a) = (p +.+ rotateV a (V2 60 (-20)), a) @@ -82,11 +82,10 @@ analyserByNthLink n proxreq i rm = .++~ [ psPt (atNthLinkOut n) $ PutForeground $ verticalWire (V2 20 0) 0 80 ] & rmOutPmnt . at i ?~ - ( analyser + analyser proxreq (atNthLnkOutShiftBy n (\(p, a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) (atNthLnkOutShiftBy n sensorshift) - ) where sensorshift (p, a) = (p +.+ rotateV a (V2 (-30) (-10)), a) diff --git a/src/Dodge/Room/SensorDoor.hs b/src/Dodge/Room/SensorDoor.hs index 2539b8910..46831731c 100644 --- a/src/Dodge/Room/SensorDoor.hs +++ b/src/Dodge/Room/SensorDoor.hs @@ -66,4 +66,4 @@ sensInsideDoor senseType i rm = rm (textTerminal & tmCommands .:~ TCDamageCommand) & plSpot .~ rprBoolShift isUnusedLnk (shiftInBy 10) ] - & rmOutPmnt . at i ?~ (sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100)) + & rmOutPmnt . at i ?~ sensAboveDoor senseType 10 (atFstLnkOutShiftInward 100) diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index cc42929df..09caf8478 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -42,9 +42,9 @@ import TreeHelp tutAnoTree :: Annotation tutAnoTree = - OnwardList $ + OnwardList [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor --- , AnTree $ tutDrop + , AnTree $ tutDrop ---- , AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox -- , AnTree corDoor -- , AnTree $ tutRooms diff --git a/src/Dodge/Room/Warning.hs b/src/Dodge/Room/Warning.hs index 23bf5578e..21e157c17 100644 --- a/src/Dodge/Room/Warning.hs +++ b/src/Dodge/Room/Warning.hs @@ -52,10 +52,11 @@ addDoorAtNthLinkToggleTerminal j xs i = (rmName .++~ "doorToggle-") addWarningTerminal :: String -> Int -> Room -> Room -addWarningTerminal str = addDoorToggleTerminal (makeColorTermLine red "WARNING" : makeTermPara str) +addWarningTerminal str = addDoorToggleTerminal + (makeColorTermLine red "WARNING" : makeTermPara str) lineOutputTerminal :: [TerminalLine] -> Terminal -lineOutputTerminal tls = defaultTerminal & tmBootLines .~ connectionBlurbLines tls +lineOutputTerminal tls = defaultTerminal & tmBootLines .~ textInputBlurb tls moveToSideNthOutLink :: Int -> RoomPos -> Room -> Maybe (Point2, Float) moveToSideNthOutLink i rp rm = do diff --git a/src/Dodge/Terminal.hs b/src/Dodge/Terminal.hs index 89ebda546..307056b41 100644 --- a/src/Dodge/Terminal.hs +++ b/src/Dodge/Terminal.hs @@ -2,7 +2,7 @@ module Dodge.Terminal ( makeTermLine, - connectionBlurbLines, + textInputBlurb, textTerminal, simpleTermMessage, damageCodeCommand, @@ -33,19 +33,16 @@ import LensHelp import Sound.Data textTerminal :: Terminal -textTerminal = defaultTerminal{_tmBootLines = connectionBlurb} +textTerminal = defaultTerminal{_tmBootLines = textInputBlurb []} -connectionBlurbLines :: [TerminalLine] -> [TerminalLine] -connectionBlurbLines tls = +textInputBlurb :: [TerminalLine] -> [TerminalLine] +textInputBlurb tls = [ termSoundLine computerBeepingS , TLine 0 [TerminalLineConst "LOADING TEXT INTERFACE..." termTextColor] TmWdId ] ++ tls ++ [TLine 10 [TerminalLineConst "READY FOR INPUT" termTextColor] (TmTmSetStatus (TerminalTextInput ""))] -connectionBlurb :: [TerminalLine] -connectionBlurb = connectionBlurbLines [] - termSoundLine :: SoundID -> TerminalLine termSoundLine sid = TLine 0 [] (TmWdWdTermSound sid) diff --git a/src/Dodge/Terminal/Color.hs b/src/Dodge/Terminal/Color.hs index 3dcb47171..aaaa15d35 100644 --- a/src/Dodge/Terminal/Color.hs +++ b/src/Dodge/Terminal/Color.hs @@ -1,6 +1,4 @@ -module Dodge.Terminal.Color ( - termScreenColor, -) where +module Dodge.Terminal.Color (termScreenColor) where import Dodge.Data.Terminal.Status import Dodge.Data.Terminal diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 95009e0ee..14b162130 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -364,7 +364,6 @@ updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of mpos = w ^. input . mousePos disss = w ^. hud . diSections invdrag i' = fromMaybe (OverInvDrag i' Nothing) $ do --- sss <- w ^? hud . diSections (i, j) <- inverseSelNumPos cfig invDP mpos disss return $ OverInvDrag i' (Just (i, j)) overinv = do diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index 58b336091..c4760e152 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -545,7 +545,7 @@ tryCombine (i, j) w = fromMaybe w $ do . ciSections . ix i . ssItems . ix j . siPayload . _Just p <- w ^? cWorld . lWorld . creatures . ix 0 . crPos return $ - (createItemYou it (foldr (destroyInvItem 0 . NInt) w (sort is))) + createItemYou it (foldr (destroyInvItem 0 . NInt) w (sort is)) & soundStart InventorySound p wrench1S Nothing & hud . diSelection . _Just . slSet .~ mempty diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index f96954e78..838bd0419 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -3,22 +3,22 @@ module Dodge.Update.Scroll ( updateWheelEvent, ) where -import NewInt import Control.Applicative -import qualified Data.ListTrie.Patricia.Map.Enum as PTE -import Dodge.Data.Terminal.Status -import Dodge.Data.EquipType -import Padding import Control.Monad +import qualified Data.ListTrie.Patricia.Map.Enum as PTE import qualified Data.Map.Strict as M import Data.Maybe import Dodge.Base +import Dodge.Data.EquipType +import Dodge.Data.Terminal.Status import Dodge.Data.Universe import Dodge.Inventory import Dodge.SelectionSections import Dodge.Terminal import Geometry import LensHelp +import NewInt +import Padding import SDL -- yi should be nonzero @@ -33,7 +33,7 @@ updateWheelEvent yi w = case w ^. hud . subInventory of -- yi should be nonzero updateBaseWheelEvent :: Int -> World -> World updateBaseWheelEvent yi w --- | Just True <- w ^? cWorld . lWorld . creatures . ix 0 . crInvLock = w + -- | Just True <- w ^? cWorld . lWorld . creatures . ix 0 . crInvLock = w | Just True <- w ^? cWorld . lWorld . lInvLock = w | bdown ButtonRight = case _rbState w of EquipOptions{} -> w & rbState . opSel %~ scrollRBOption yi rbscrollmax @@ -56,8 +56,9 @@ selectedItemScroll yi w = do itemScroll :: Int -> Item -> World -> World itemScroll yi itm w - | Just xs <- itm ^? itUse . uaParams . apProjectiles = w - & itmlens . itUse . uaParams . apProjectiles .~ rotateList yi xs + | Just xs <- itm ^? itUse . uaParams . apProjectiles = + w + & itmlens . itUse . uaParams . apProjectiles .~ rotateList yi xs | ATTACH ZOOMSCOPE <- itm ^. itType = updateScopeZoom (itm ^. itID) w | HELD ALTERIFLE <- itm ^. itType , yi /= 0 = @@ -65,8 +66,9 @@ itemScroll yi itm w & itmlens . itParams . alteRifleSwitch %~ ((`mod` 2) . (+ 1)) | isJust $ itm ^? itScroll . itsInt = w & itmlens . itScroll . itsInt +~ yi - | Just y <- itm ^? itScroll . itsMax = w & itmlens . itScroll . itsRangeInt - %~ ((`mod` y) . (+ yi)) + | Just y <- itm ^? itScroll . itsMax = + w & itmlens . itScroll . itsRangeInt + %~ ((`mod` y) . (+ yi)) | otherwise = w where --itmlens = cWorld . lWorld . creatures . ix 0 . crInv . ix invid @@ -140,77 +142,60 @@ terminalWheelEvent yi tmid w wrapdown s coms = PTE.findPredecessor s coms <|> PTE.findMax coms f tm = fromMaybe tm $ do let coms = getCommands w tm - x <- tm ^? tmStatus . tiText + x <- tm ^? tmStatus . tiText let s = fromMaybe "" $ x ^? to words . ix 0 - (s',_) <- dowrap s coms + (s', _) <- dowrap s coms return $ tm & tmStatus . tiText .~ s' g tm = fromMaybe tm $ do let coms = getCommands w tm x <- tm ^? tmStatus . tiText let s = fromMaybe "" $ x ^? to words . ix 0 y = fromMaybe "" $ x ^? to words . ix 1 --- (s',m) <- fmap (s,) (PTE.lookup s coms) <|> dowrap s coms --- (arg,_) <- dowrap y m - (s',arg,_) <- if yi > 0 then doubleFindSucc s y coms <|> doubleFindMin coms - else doubleFindPred s y coms <|> doubleFindMax coms + (s', arg, _) <- + if yi > 0 + then doubleFindSucc s y coms <|> doubleFindMin coms + else doubleFindPred s y coms <|> doubleFindMax coms return $ tm & tmStatus . tiText .~ s' ++ " " ++ arg - --case tm ^? tmInput . tiSel of --- Nothing -> tm & tmInput . tiSel .~ (0, 0) --- Just (i, _) -> --- let newi = (i - yi) `mod` length (scrollCommandStrings w tm) --- in tm & setInput newi 0 --- updatetermsubsel tm = case tm ^? tmInput . tiSel of --- Nothing -> tm & tmInput . tiSel .~ (0, 0) --- Just (i, j) -> --- let newj = (j - yi) `mod` length (getArguments' (scrollCommands tm !! i) tm w) --- in tm & setInput i newj --- setInput i j tm = --- tm --- & tmInput . tiSel .~ (i, j) --- & tmStatus . tiText .~ comstr ++ arg --- where --- comstr = scrollCommandStrings w tm !! i --- tc = scrollCommands tm !! i --- arg = getArguments' tc tm w !! j -doubleFindMin :: (Enum a,Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a],[b],c) +doubleFindMin :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c) doubleFindMin m = do - (x,n) <- PTE.findMin m + (x, n) <- PTE.findMin m case PTE.findMin n of - Just (y,z) -> Just (x,y,z) + Just (y, z) -> Just (x, y, z) Nothing -> Nothing -doubleFindSucc :: (Enum a,Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a],[b],c) +doubleFindSucc :: (Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c) doubleFindSucc xs ys m = case PTE.lookup xs m of Just m' -> case PTE.findSuccessor ys m' of - Just (ys',z) -> Just (xs,ys',z) + Just (ys', z) -> Just (xs, ys', z) Nothing -> dfs xs m Nothing -> dfs xs m where dfs xs' m' = case PTE.findSuccessor xs' m' of - Just (xs'',n) -> case PTE.findMin n of - Just (ys',z) -> Just (xs'',ys',z) + Just (xs'', n) -> case PTE.findMin n of + Just (ys', z) -> Just (xs'', ys', z) Nothing -> dfs xs'' m' Nothing -> Nothing -- there are edge cases where this doesn't behave as might be expected -doubleFindMax :: (Enum a,Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a],[b],c) +doubleFindMax :: (Enum a, Enum b) => PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c) doubleFindMax m = do - (x,n) <- PTE.findMax m + (x, n) <- PTE.findMax m case PTE.findMax n of - Just (y,z) -> Just (x,y,z) + Just (y, z) -> Just (x, y, z) Nothing -> Nothing -doubleFindPred :: (Enum a,Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a],[b],c) +doubleFindPred :: + (Enum a, Enum b) => [a] -> [b] -> PTE.TrieMap a (PTE.TrieMap b c) -> Maybe ([a], [b], c) doubleFindPred xs ys m = case PTE.lookup xs m of Just m' -> case PTE.findPredecessor ys m' of - Just (ys',z) -> Just (xs,ys',z) + Just (ys', z) -> Just (xs, ys', z) Nothing -> dfs xs m Nothing -> dfs xs m where dfs xs' m' = case PTE.findPredecessor xs' m' of - Just (xs'',n) -> case PTE.findMax n of - Just (ys',z) -> Just (xs'',ys',z) + Just (xs'', n) -> case PTE.findMax n of + Just (ys', z) -> Just (xs'', ys', z) Nothing -> dfs xs'' m' Nothing -> Nothing diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index e43d6d2a4..881cbb9b3 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -93,9 +93,9 @@ doTmWdWd tmwdwd = case tmwdwd of TmWdId -> const id TmWdWdPowerDownTerminal -> resetTerminal TerminalOff TmWdWdDeactivateTerminal -> resetTerminal TerminalDeactivated - TmWdWdTermSound sid -> \tm w -> - let tpos = fromMaybe 0 $ w ^? cWorld . lWorld . buttons . ix (_tmButtonID tm) . btPos - in soundStart TerminalSound tpos sid Nothing w + TmWdWdTermSound sid -> \tm w -> fromMaybe w $ do + tpos <- w ^? cWorld . lWorld . buttons . ix (_tmButtonID tm) . btPos + return $ soundStart TerminalSound tpos sid Nothing w TmWdWdDoDeathTriggers -> doDeathTriggers TmWdWdfromWdWd f -> \_ -> doWdWd f diff --git a/tags b/tags index 4535eced2..c74c7652c 100644 --- a/tags +++ b/tags @@ -2597,7 +2597,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f -addPane src/Dodge/Placement/PlaceSpot.hs 173;" f +addPane src/Dodge/Placement/PlaceSpot.hs 179;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 102;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2633,7 +2633,7 @@ ammoMagSPic src/Dodge/Item/Draw/SPic.hs 145;" f amr src/Dodge/Item/Held/Rod.hs 34;" f anRoom src/Dodge/Floor.hs 130;" f analyser src/Dodge/Placement/Instance/Analyser.hs 10;" f -analyserByDoor src/Dodge/Room/LasTurret.hs 93;" f +analyserByDoor src/Dodge/Room/LasTurret.hs 92;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 78;" f andOrRegex src/Dodge/DisplayInventory.hs 80;" f angleBetween src/Geometry.hs 161;" f @@ -2652,11 +2652,11 @@ applyMagnetsToBul src/Dodge/Bullet.hs 31;" f applyPastDamages src/Dodge/Creature/State.hs 48;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f -applyRecoil src/Dodge/HeldUse.hs 451;" f +applyRecoil src/Dodge/HeldUse.hs 450;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 551;" f -applySoundCME src/Dodge/HeldUse.hs 441;" f +applySidePush src/Dodge/HeldUse.hs 550;" f +applySoundCME src/Dodge/HeldUse.hs 440;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -2664,7 +2664,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 562;" f +applyTorqueCME src/Dodge/HeldUse.hs 561;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -2710,7 +2710,7 @@ axisInt src/Geometry/Intersect.hs 257;" f azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f -backPQ src/Dodge/Creature/HandPos.hs 138;" f +backPQ src/Dodge/Creature/HandPos.hs 127;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f backpackShape src/Dodge/Item/Draw/SPic.hs 200;" f backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f @@ -2722,7 +2722,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Render/ShapePicture.hs 68;" f +barrelShape src/Dodge/Render/ShapePicture.hs 69;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 418;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCI src/Dodge/Item/Grammar.hs 158;" f @@ -2744,7 +2744,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 703;" f +basicMuzFlare src/Dodge/HeldUse.hs 701;" f battery src/Dodge/Item/Ammo.hs 63;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f belowNumX src/Dodge/Combine/Graph.hs 86;" f @@ -2752,7 +2752,7 @@ beltMag src/Dodge/Item/Ammo.hs 39;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 118;" f -bgunSound src/Dodge/HeldUse.hs 506;" f +bgunSound src/Dodge/HeldUse.hs 505;" f bindFBO src/Render.hs 245;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -2805,7 +2805,7 @@ branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 67;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f -btSPic src/Dodge/Render/ShapePicture.hs 128;" f +btSPic src/Dodge/Render/ShapePicture.hs 129;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f @@ -2869,7 +2869,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 75;" f -chestPQ src/Dodge/Creature/HandPos.hs 135;" f +chestPQ src/Dodge/Creature/HandPos.hs 124;" f chooseCursorBorders src/Dodge/Render/List.hs 156;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 34;" f @@ -3010,10 +3010,10 @@ crHasTargetLOS src/Dodge/Creature/Test.hs 67;" f crHit src/Dodge/WorldEvent/ThingsHit.hs 86;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 32;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 14;" f -crInAimStance src/Dodge/Creature/Test.hs 93;" f +crInAimStance src/Dodge/Creature/Test.hs 90;" f crIntelligence src/Dodge/Creature/Statistics.hs 37;" f crIsAiming src/Dodge/Creature/Test.hs 59;" f -crIsArmouredFrom src/Dodge/Creature/Test.hs 108;" f +crIsArmouredFrom src/Dodge/Creature/Test.hs 105;" f crMass src/Dodge/Creature/Mass.hs 5;" f crMaterial src/Dodge/Creature/Material.hs 8;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f @@ -3021,7 +3021,7 @@ crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 28;" f crMvBy src/Dodge/Creature/Impulse/Movement.hs 20;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 42;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f -crNearPoint src/Dodge/Creature/Test.hs 130;" f +crNearPoint src/Dodge/Creature/Test.hs 127;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crOnWall src/Dodge/WallCreatureCollisions.hs 86;" f crRad src/Dodge/Creature/Radius.hs 7;" f @@ -3041,23 +3041,23 @@ crZoneSize src/Dodge/Zoning/Creature.hs 41;" f craftInfo src/Dodge/Item/Info.hs 169;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 590;" f -createFlIt src/Dodge/Placement/PlaceSpot.hs 185;" f +createFlIt src/Dodge/Placement/PlaceSpot.hs 191;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f createHeadLamp src/Dodge/Euse.hs 55;" f -createItemYou src/Dodge/Inventory/Add.hs 61;" f +createItemYou src/Dodge/Inventory/Add.hs 60;" f createLightMap src/Render.hs 26;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 1313;" f -createProjectileR src/Dodge/HeldUse.hs 1262;" f +createProjectile src/Dodge/HeldUse.hs 1312;" f +createProjectileR src/Dodge/HeldUse.hs 1261;" f createShell src/Dodge/Projectile/Create.hs 21;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 11;" f -creatureShootLaser src/Dodge/HeldUse.hs 816;" f -creatureShootPulseBall src/Dodge/HeldUse.hs 893;" f -creatureShootPulseLaser src/Dodge/HeldUse.hs 860;" f +creatureShootLaser src/Dodge/HeldUse.hs 810;" f +creatureShootPulseBall src/Dodge/HeldUse.hs 887;" f +creatureShootPulseLaser src/Dodge/HeldUse.hs 854;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 53;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 74;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 63;" f @@ -3075,7 +3075,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 38;" f crsNearSeg src/Dodge/Zoning/Creature.hs 23;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f cubeShape src/Dodge/Block/Debris.hs 103;" f -cullPoint src/Dodge/Render/ShapePicture.hs 90;" f +cullPoint src/Dodge/Render/ShapePicture.hs 91;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f @@ -3230,7 +3230,7 @@ detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 465;" f detectorInfo src/Dodge/Item/Info.hs 225;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1233;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1232;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 208;" f @@ -3262,7 +3262,7 @@ doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 153;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 140;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f -doBarrelSpin src/Dodge/Projectile/Update.hs 214;" f +doBarrelSpin src/Dodge/Projectile/Update.hs 212;" f doBlBl src/Dodge/BlBl.hs 5;" f doBlSh src/Dodge/Block/Draw.hs 14;" f doBounce src/Dodge/Base/Collide.hs 66;" f @@ -3292,7 +3292,7 @@ doDrag src/Dodge/Update/Input/InGame.hs 126;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1189;" f +doGenFloat src/Dodge/HeldUse.hs 1188;" f doGravityPU src/Dodge/Projectile/Update.hs 36;" f doHeldUseEffect src/Dodge/HeldUse.hs 343;" f doInPlacements src/Dodge/Layout.hs 92;" f @@ -3366,9 +3366,9 @@ drawBoundingBox src/Dodge/Debug/Picture.hs 336;" f drawBullet src/Dodge/Bullet/Draw.hs 9;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChasm src/Dodge/Render/ShapePicture.hs 44;" f +drawChasm src/Dodge/Render/ShapePicture.hs 45;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 116;" f -drawCliff src/Dodge/Render/ShapePicture.hs 47;" f +drawCliff src/Dodge/Render/ShapePicture.hs 48;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 268;" f drawCombineInventory src/Dodge/Render/HUD.hs 178;" f @@ -3376,7 +3376,7 @@ drawConcurrentMessage src/Dodge/Render/Picture.hs 69;" f drawCoord src/Dodge/Debug/Picture.hs 364;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 385;" f -drawCreature src/Dodge/Render/ShapePicture.hs 61;" f +drawCreature src/Dodge/Render/ShapePicture.hs 62;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 197;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f @@ -3440,7 +3440,7 @@ drawPlus src/Dodge/Render/Picture.hs 160;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 26;" f -drawPulseBall src/Dodge/Render/ShapePicture.hs 53;" f +drawPulseBall src/Dodge/Render/ShapePicture.hs 54;" f drawQuitTerminal src/Dodge/Render/Picture.hs 133;" f drawRBOptions src/Dodge/Render/HUD.hs 247;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f @@ -3486,7 +3486,7 @@ drawZoneCol src/Dodge/Debug/Picture.hs 147;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 284;" f dropAll src/Dodge/Creature/Update.hs 119;" f dropExcept src/Dodge/Creature/Action.hs 167;" f -dropInventoryPath src/Dodge/HeldUse.hs 1409;" f +dropInventoryPath src/Dodge/HeldUse.hs 1400;" f dropItem src/Dodge/Creature/Action.hs 174;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 34;" f @@ -3516,8 +3516,8 @@ ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f edgeToPic src/Dodge/Debug/Picture.hs 436;" f -effectOnEquip src/Dodge/Equipment.hs 30;" f -effectOnRemove src/Dodge/Equipment.hs 17;" f +effectOnEquip src/Dodge/Equipment.hs 31;" f +effectOnRemove src/Dodge/Equipment.hs 18;" f eitType src/Dodge/Data/EquipType.hs 15;" f ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 656;" f elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 508;" f @@ -3538,13 +3538,13 @@ eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqTypeToSites src/Dodge/Inventory/RBList.hs 77;" f equipAllocString src/Dodge/Render/HUD.hs 306;" f -equipAttachPos src/Dodge/Item/Draw.hs 32;" f +equipAttachPos src/Dodge/Item/Draw.hs 29;" f equipBackgroundEffect src/Dodge/Euse.hs 15;" f equipInfo src/Dodge/Item/Info.hs 141;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 171;" f -equipPosition src/Dodge/Item/Draw.hs 40;" f +equipPosition src/Dodge/Item/Draw.hs 37;" f equipSiteInfo src/Dodge/Item/Info.hs 254;" f -equipSitePQ src/Dodge/Creature/HandPos.hs 25;" f +equipSitePQ src/Dodge/Creature/HandPos.hs 26;" f equipType src/Dodge/Data/EquipType.hs 10;" f equipmentDesignation src/Dodge/Inventory/RBList.hs 52;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 54;" f @@ -3555,7 +3555,7 @@ errorHead src/ListHelp.hs 76;" f errorIsLHS src/Geometry.hs 66;" f errorNormalizeV src/Geometry.hs 55;" f errorPointInPolygon src/Geometry.hs 47;" f -evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 154;" f +evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 160;" f evenOddSplit src/Dodge/Base.hs 160;" f exitTerminalSubInv src/Dodge/WorldEffect.hs 108;" f expandLine src/Dodge/Picture.hs 30;" f @@ -3564,13 +3564,13 @@ expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f expireAndDamage src/Dodge/Bullet.hs 185;" f -explodeShell src/Dodge/Projectile/Update.hs 284;" f +explodeShell src/Dodge/Projectile/Update.hs 282;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 95;" f +extraPics src/Dodge/Render/ShapePicture.hs 96;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f @@ -3609,7 +3609,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 48;" f flamerPic src/Dodge/Item/Draw/SPic.hs 406;" f -flareCircleAt src/Dodge/HeldUse.hs 684;" f +flareCircleAt src/Dodge/HeldUse.hs 682;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f @@ -3629,7 +3629,7 @@ flockPointTargetR src/Dodge/Creature/Boid.hs 267;" f flockToPointUsing src/Dodge/Creature/Boid.hs 215;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 228;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 227;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 121;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 122;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f @@ -3675,7 +3675,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 134;" f gameplayMenuOptions src/Dodge/Menu.hs 137;" f -gasType src/Dodge/HeldUse.hs 1146;" f +gasType src/Dodge/HeldUse.hs 1145;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 40;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -3688,27 +3688,27 @@ geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 141;" f getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f -getAttachedSFLink src/Dodge/HeldUse.hs 758;" f +getAttachedSFLink src/Dodge/HeldUse.hs 756;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 170;" f -getBulletType src/Dodge/HeldUse.hs 933;" f +getBulletType src/Dodge/HeldUse.hs 927;" f getCloseObj src/Dodge/Update/Input/InGame.hs 531;" f getCommand src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 55;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 48;" f getDistortions src/Dodge/Render.hs 435;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1301;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1300;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f -getLaserColor src/Dodge/HeldUse.hs 700;" f -getLaserDamage src/Dodge/HeldUse.hs 697;" f -getLaserPhaseV src/Dodge/HeldUse.hs 694;" f +getLaserColor src/Dodge/HeldUse.hs 698;" f +getLaserDamage src/Dodge/HeldUse.hs 695;" f +getLaserPhaseV src/Dodge/HeldUse.hs 692;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 9;" f getMenuMouseContext src/Dodge/Update.hs 397;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1288;" f +getPJStabiliser src/Dodge/HeldUse.hs 1287;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 6;" f getRootItemBounds src/Dodge/Render/HUD.hs 96;" f @@ -3790,10 +3790,10 @@ head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f headLampShape src/Dodge/Item/Draw/SPic.hs 455;" f headMap src/Dodge/DoubleTree.hs 249;" f -headPQ src/Dodge/Creature/HandPos.hs 126;" f +headPQ src/Dodge/Creature/HandPos.hs 115;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 75;" f -healthTest src/Dodge/Room/LasTurret.hs 96;" f +healthTest src/Dodge/Room/LasTurret.hs 95;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimZoom src/Dodge/Update/Camera.hs 147;" f @@ -3803,14 +3803,14 @@ heldHandlePos src/Dodge/Item/HeldOffset.hs 90;" f heldInfo src/Dodge/Item/Info.hs 92;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 19;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 193;" f -heldItemInvLock src/Dodge/HeldUse.hs 434;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1030;" f +heldItemInvLock src/Dodge/HeldUse.hs 433;" f +heldItemMuzVel src/Dodge/HeldUse.hs 1024;" f heldItemMuzzles src/Dodge/HeldUse.hs 182;" f -heldItemRifling src/Dodge/HeldUse.hs 1073;" f +heldItemRifling src/Dodge/HeldUse.hs 1067;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 247;" f heldItemWeight src/Dodge/Creature/Statistics.hs 78;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f -heldTorqueAmount src/Dodge/HeldUse.hs 578;" f +heldTorqueAmount src/Dodge/HeldUse.hs 577;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f helpPara src/Dodge/Terminal.hs 113;" f helpPoly3D src/Polyhedra.hs 125;" f @@ -3921,8 +3921,8 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 56;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 710;" f -isAnimate src/Dodge/Creature/Test.hs 133;" f +isAmmoIntLink src/Dodge/HeldUse.hs 708;" f +isAnimate src/Dodge/Creature/Test.hs 130;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 76;" f isElectrical src/Dodge/Machine/Update.hs 80;" f @@ -3963,9 +3963,9 @@ itemBlips src/Dodge/RadarSweep.hs 93;" f itemBulkiness src/Dodge/Creature/YourControl.hs 187;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f -itemDetectorEffect src/Dodge/HeldUse.hs 764;" f +itemDetectorEffect src/Dodge/HeldUse.hs 762;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f -itemEquipPict src/Dodge/Item/Draw.hs 19;" f +itemEquipPict src/Dodge/Item/Draw.hs 17;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f itemFromAmmoMag src/Dodge/Item.hs 42;" f itemFromAttachType src/Dodge/Item.hs 51;" f @@ -3975,7 +3975,7 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 34;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 429;" f +itemInvLock src/Dodge/HeldUse.hs 428;" f itemMuzzles src/Dodge/HeldUse.hs 161;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f @@ -4022,13 +4022,13 @@ lShape src/Dodge/Placement/Instance/LightSource.hs 76;" f lamp src/Dodge/Creature/Lamp.hs 21;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 73;" f -lasCenSensEdge src/Dodge/Room/LasTurret.hs 115;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 74;" f +lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 424;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f -lasSensorTurretTest src/Dodge/Room/LasTurret.hs 108;" f -lasTunnel src/Dodge/Room/LasTurret.hs 127;" f -lasTunnelRunPast src/Dodge/Room/LasTurret.hs 168;" f +lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f +lasTunnel src/Dodge/Room/LasTurret.hs 126;" f +lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 40;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f lastMap src/Dodge/DoubleTree.hs 253;" f @@ -4048,13 +4048,12 @@ ldtToIndentList src/Dodge/DoubleTree.hs 222;" f ldtToLoc src/Dodge/DoubleTree.hs 268;" f left src/DoubleStack.hs 16;" f leftChildList src/Dodge/Item/Grammar.hs 185;" f -leftHandPQ src/Dodge/Creature/HandPos.hs 71;" f +leftHandPQ src/Dodge/Creature/HandPos.hs 60;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 163;" f -leftLegPQ src/Dodge/Creature/HandPos.hs 95;" f +leftLegPQ src/Dodge/Creature/HandPos.hs 84;" f leftPad src/Padding.hs 15;" f leftRightCombine src/Dodge/Item/Grammar.hs 197;" f -leftWristPQ src/Dodge/Creature/HandPos.hs 92;" f -legsPQ src/Dodge/Creature/HandPos.hs 35;" f +leftWristPQ src/Dodge/Creature/HandPos.hs 81;" f legsSPic src/Dodge/Item/Draw/SPic.hs 480;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f @@ -4069,7 +4068,7 @@ lineCol src/Picture/Base.hs 230;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 126;" f -lineOutputTerminal src/Dodge/Room/Warning.hs 57;" f +lineOutputTerminal src/Dodge/Room/Warning.hs 58;" f lineSplit src/Justify.hs 26;" f lineThick src/Picture/Base.hs 234;" f lineUp src/Dodge/Creature/Boid.hs 148;" f @@ -4088,7 +4087,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 390;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f -loadMuzzle src/Dodge/HeldUse.hs 622;" f +loadMuzzle src/Dodge/HeldUse.hs 621;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4138,7 +4137,7 @@ machineAddSound src/Dodge/Machine.hs 49;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f -magAmmoParams src/Dodge/HeldUse.hs 954;" f +magAmmoParams src/Dodge/HeldUse.hs 948;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 171;" f @@ -4153,7 +4152,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 34;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 1011;" f +makeBullet src/Dodge/HeldUse.hs 1005;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4175,7 +4174,7 @@ makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 35;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 644;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 643;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4225,14 +4224,14 @@ mcKillTerm src/Dodge/Machine/Destroy.hs 29;" f mcPlaySound src/Dodge/Machine/Update.hs 105;" f mcProxTest src/Dodge/Machine/Update.hs 153;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 131;" f -mcSPic src/Dodge/Render/ShapePicture.hs 133;" f +mcSPic src/Dodge/Render/ShapePicture.hs 134;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 94;" f mcSensorUpdate src/Dodge/Machine/Update.hs 126;" f -mcShootAuto src/Dodge/HeldUse.hs 1200;" f -mcShootLaser src/Dodge/HeldUse.hs 1193;" f +mcShootAuto src/Dodge/HeldUse.hs 1199;" f +mcShootLaser src/Dodge/HeldUse.hs 1192;" f mcTriggerVal src/Dodge/Machine/Update.hs 100;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f -mcUseHeld src/Dodge/HeldUse.hs 1116;" f +mcUseHeld src/Dodge/HeldUse.hs 1110;" f mcUseItem src/Dodge/Machine/Update.hs 85;" f megaBattery src/Dodge/Item/Ammo.hs 55;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f @@ -4303,11 +4302,11 @@ moveCombineSel src/Dodge/Update/Scroll.hs 119;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f movePenBullet src/Dodge/Bullet.hs 200;" f -moveProjectile src/Dodge/Projectile/Update.hs 262;" f +moveProjectile src/Dodge/Projectile/Update.hs 260;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 13;" f -moveStuckGrenade src/Dodge/Projectile/Update.hs 248;" f -moveToSideNthOutLink src/Dodge/Room/Warning.hs 60;" f +moveStuckGrenade src/Dodge/Projectile/Update.hs 246;" f +moveToSideNthOutLink src/Dodge/Room/Warning.hs 61;" f moveWall src/Dodge/Wall/Move.hs 29;" f moveWallID src/Dodge/Wall/Move.hs 24;" f moveWallIDToward src/Dodge/Wall/Move.hs 47;" f @@ -4322,19 +4321,19 @@ multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 670;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 181;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 191;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 194;" f +muzFlareAt src/Dodge/HeldUse.hs 669;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 187;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 197;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 200;" f mvGust src/Dodge/Update.hs 800;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 245;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 257;" f mvP src/Dodge/Wall/Move.hs 54;" f -mvPP src/Dodge/Placement/PlaceSpot.hs 188;" f +mvPP src/Dodge/Placement/PlaceSpot.hs 194;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 178;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 184;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 207;" f myIntersectSegSeg src/Geometry/Intersect.hs 185;" f @@ -4380,10 +4379,10 @@ numTraversable src/TreeHelp.hs 183;" f obstacleColor src/Dodge/Debug/Picture.hs 262;" f obstructPathsCrossing src/Dodge/Path.hs 138;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f -onEquipWristShield src/Dodge/Equipment.hs 35;" f -onRemoveWristShield src/Dodge/Equipment.hs 22;" f +onEquipWristShield src/Dodge/Equipment.hs 36;" f +onRemoveWristShield src/Dodge/Equipment.hs 23;" f onXY src/Geometry/Vector3D.hs 130;" f -oneH src/Dodge/Creature/Test.hs 96;" f +oneH src/Dodge/Creature/Test.hs 93;" f openConsole src/Dodge/Update.hs 136;" f optionMenu src/Dodge/Menu.hs 108;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 52;" f @@ -4458,8 +4457,8 @@ pesNearRect src/Dodge/Zoning/Pathing.hs 40;" f pesNearSeg src/Dodge/Zoning/Pathing.hs 37;" f picFormat src/Polyhedra.hs 23;" f picMap src/Picture/Base.hs 67;" f -pickUpItem src/Dodge/Inventory/Add.hs 69;" f -pickUpItemAt src/Dodge/Inventory/Add.hs 74;" f +pickUpItem src/Dodge/Inventory/Add.hs 68;" f +pickUpItemAt src/Dodge/Inventory/Add.hs 73;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 624;" f pincerP src/Dodge/Creature/Boid.hs 61;" f pincerP' src/Dodge/Creature/Boid.hs 94;" f @@ -4469,30 +4468,30 @@ pingPongBetween src/Render.hs 221;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 321;" f -pjRemoteSetDirection src/Dodge/Projectile/Update.hs 227;" f +pjRemoteSetDirection src/Dodge/Projectile/Update.hs 225;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 197;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 220;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 203;" f +plMachine' src/Dodge/Placement/PlaceSpot.hs 232;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 78;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 202;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 235;" f -placePickOne src/Dodge/Placement/PlaceSpot.hs 41;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 53;" f -placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 44;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 29;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 99;" f -placeSpotID' src/Dodge/Placement/PlaceSpot.hs 105;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 88;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 69;" f +plTurret src/Dodge/Placement/PlaceSpot.hs 209;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 247;" f +placePickOne src/Dodge/Placement/PlaceSpot.hs 43;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 55;" f +placeRandomPlacement src/Dodge/Placement/PlaceSpot.hs 46;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 31;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f +placeSpotID' src/Dodge/Placement/PlaceSpot.hs 107;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 71;" f placeString src/Dodge/Render/MenuScreen.hs 61;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 167;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 173;" f plainRegex src/Dodge/DisplayInventory.hs 194;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4595,7 +4594,7 @@ powlist src/Multiset.hs 61;" f powlistUpToN src/Multiset.hs 23;" f powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f -ppDraw src/Dodge/Render/ShapePicture.hs 118;" f +ppDraw src/Dodge/Render/ShapePicture.hs 119;" f ppEvents src/Dodge/Update.hs 763;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 83;" f @@ -4723,7 +4722,7 @@ randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 225;" f readSaveSlot src/Dodge/Save.hs 45;" f -recoilAmount src/Dodge/HeldUse.hs 459;" f +recoilAmount src/Dodge/HeldUse.hs 458;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -4753,7 +4752,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 158;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 922;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 916;" f removeDot src/ShortShow.hs 40;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f @@ -4800,12 +4799,12 @@ rhombus src/Polyhedra.hs 72;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f right src/DoubleStack.hs 16;" f rightChildList src/Dodge/Item/Grammar.hs 191;" f -rightHandPQ src/Dodge/Creature/HandPos.hs 50;" f +rightHandPQ src/Dodge/Creature/HandPos.hs 39;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 174;" f -rightLegPQ src/Dodge/Creature/HandPos.hs 111;" f +rightLegPQ src/Dodge/Creature/HandPos.hs 100;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f -rightWristPQ src/Dodge/Creature/HandPos.hs 68;" f +rightWristPQ src/Dodge/Creature/HandPos.hs 57;" f rlPosDir src/Dodge/RoomLink.hs 94;" f rlauncherPic src/Dodge/Item/Draw/SPic.hs 409;" f rmInLinks src/Dodge/RoomLink.hs 138;" f @@ -4979,7 +4978,7 @@ setViewDistance src/Dodge/Update/Camera.hs 234;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 63;" f setViewport src/Dodge/Render.hs 440;" f setVol src/Dodge/Config/Update.hs 30;" f -setWristShieldPos src/Dodge/Equipment.hs 47;" f +setWristShieldPos src/Dodge/Equipment.hs 48;" f setWristShieldPos src/Dodge/Euse.hs 35;" f setupConLoop src/Loop.hs 102;" f setupConLoop' src/Loop.hs 192;" f @@ -5017,8 +5016,8 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shiftByV2 src/Dodge/PlacementSpot.hs 254;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f -shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 79;" f +shiftDraw' src/Dodge/Render/ShapePicture.hs 85;" f shiftInBy src/Dodge/PlacementSpot.hs 251;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 305;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 350;" f @@ -5037,16 +5036,16 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 200;" f shineTorch src/Dodge/Creature/State.hs 237;" f -shootBullet src/Dodge/HeldUse.hs 996;" f -shootBullets src/Dodge/HeldUse.hs 986;" f +shootBullet src/Dodge/HeldUse.hs 990;" f +shootBullets src/Dodge/HeldUse.hs 980;" f shootFirstMiss src/Dodge/Creature/Volition.hs 34;" f -shootLaser src/Dodge/HeldUse.hs 839;" f -shootPulseBall src/Dodge/HeldUse.hs 907;" f -shootPulseLaser src/Dodge/HeldUse.hs 880;" f +shootLaser src/Dodge/HeldUse.hs 833;" f +shootPulseBall src/Dodge/HeldUse.hs 901;" f +shootPulseLaser src/Dodge/HeldUse.hs 874;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 1216;" f +shootTeslaArc src/Dodge/HeldUse.hs 1215;" f shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f -shootTractorBeam src/Dodge/HeldUse.hs 795;" f +shootTractorBeam src/Dodge/HeldUse.hs 789;" f shootersRoom src/Dodge/Room/Room.hs 315;" f shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f @@ -5337,12 +5336,12 @@ topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 71;" f torch src/Dodge/Item/Held/Utility.hs 23;" f torchShape src/Dodge/Item/Draw/SPic.hs 290;" f -torqueAmount src/Dodge/HeldUse.hs 573;" f +torqueAmount src/Dodge/HeldUse.hs 572;" f torqueCr src/Dodge/WorldEffect.hs 71;" f torso src/Dodge/Creature/Picture.hs 102;" f tractCr src/Dodge/TractorBeam/Update.hs 27;" f tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f -tractorBeamAt src/Dodge/HeldUse.hs 807;" f +tractorBeamAt src/Dodge/HeldUse.hs 801;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 449;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 32;" f @@ -5355,8 +5354,8 @@ translate3 src/Picture/Base.hs 120;" f translateFloatingCamera src/Dodge/Update/Camera.hs 46;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 63;" f translateH src/Picture/Base.hs 112;" f -translatePointToLeftHand src/Dodge/Creature/HandPos.hs 86;" f -translatePointToRightHand src/Dodge/Creature/HandPos.hs 39;" f +translatePointToLeftHand src/Dodge/Creature/HandPos.hs 75;" f +translatePointToRightHand src/Dodge/Creature/HandPos.hs 36;" f translateSH src/Shape.hs 245;" f translateSHxy src/Shape.hs 249;" f translateSHz src/Shape.hs 253;" f @@ -5364,11 +5363,11 @@ translateSP src/ShapePicture.hs 53;" f translateSPxy src/ShapePicture.hs 45;" f translateSPz src/ShapePicture.hs 49;" f translateScreenPos src/Dodge/ScreenPos.hs 12;" f -translateToES src/Dodge/Creature/HandPos.hs 22;" f -translateToLeftHand src/Dodge/Creature/HandPos.hs 89;" f -translateToLeftLeg src/Dodge/Creature/HandPos.hs 108;" f -translateToRightHand src/Dodge/Creature/HandPos.hs 65;" f -translateToRightLeg src/Dodge/Creature/HandPos.hs 123;" f +translateToES src/Dodge/Creature/HandPos.hs 23;" f +translateToLeftHand src/Dodge/Creature/HandPos.hs 78;" f +translateToLeftLeg src/Dodge/Creature/HandPos.hs 97;" f +translateToRightHand src/Dodge/Creature/HandPos.hs 54;" f +translateToRightLeg src/Dodge/Creature/HandPos.hs 112;" f translateWallID src/Dodge/Wall/Move.hs 37;" f translateXY src/Polyhedra.hs 26;" f trapezionBWHW src/Geometry/Polygon.hs 24;" f @@ -5398,8 +5397,8 @@ tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 22;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 38;" f tryPickupSelected src/Dodge/Update/Input/InGame.hs 144;" f tryPlay src/Sound.hs 84;" f -tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f -tryPutItemInInvAt src/Dodge/Inventory/Add.hs 53;" f +tryPutItemInInv src/Dodge/Inventory/Add.hs 23;" f +tryPutItemInInvAt src/Dodge/Inventory/Add.hs 52;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f trySpin src/Dodge/Projectile/Update.hs 170;" f trySynthBullet src/Dodge/Creature/State.hs 166;" f @@ -5417,8 +5416,8 @@ tutorialMessage1 src/Dodge/Room/Tutorial.hs 95;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f -twists src/Dodge/Creature/Test.hs 102;" f -twoFlat src/Dodge/Creature/Test.hs 99;" f +twists src/Dodge/Creature/Test.hs 99;" f +twoFlat src/Dodge/Creature/Test.hs 96;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 81;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 165;" f twoRoomPoss src/Dodge/PlacementSpot.hs 154;" f @@ -5579,21 +5578,21 @@ upperPrismPolySU src/Shape.hs 114;" f upperPrismPolyTS src/Shape.hs 120;" f upperRounded src/Shape.hs 185;" f useBulletPayload src/Dodge/Bullet.hs 114;" f -useGasParams src/Dodge/HeldUse.hs 1121;" f +useGasParams src/Dodge/HeldUse.hs 1115;" f useHotkey src/Dodge/Creature/YourControl.hs 76;" f -useInventoryPath src/Dodge/HeldUse.hs 1440;" f +useInventoryPath src/Dodge/HeldUse.hs 1431;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 25;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 259;" f -useLoadedAmmo src/Dodge/HeldUse.hs 713;" f +useLoadedAmmo src/Dodge/HeldUse.hs 711;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1400;" f +useRewindGun src/Dodge/HeldUse.hs 1391;" f useRoomPosCond src/Dodge/PlacementSpot.hs 188;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 191;" f -useStopWatch src/Dodge/HeldUse.hs 1381;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1389;" f +useStopWatch src/Dodge/HeldUse.hs 1372;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1380;" f useUnusedLnk src/Dodge/PlacementSpot.hs 179;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 207;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 214;" f @@ -5627,7 +5626,7 @@ visionCheck src/Dodge/Creature/Perception.hs 153;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 369;" f -walkNozzle src/Dodge/HeldUse.hs 779;" f +walkNozzle src/Dodge/HeldUse.hs 777;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f @@ -5636,7 +5635,7 @@ wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallToSurface src/Dodge/Base/Collide.hs 172;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f -warmupSound src/Dodge/HeldUse.hs 1434;" f +warmupSound src/Dodge/HeldUse.hs 1425;" f warningRooms src/Dodge/Room/Warning.hs 26;" f wasdAim src/Dodge/Creature/YourControl.hs 132;" f wasdDir src/Dodge/WASD.hs 17;" f @@ -5696,7 +5695,7 @@ wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f wlsNearSeg src/Dodge/Zoning/Wall.hs 42;" f wordsBy src/ListHelp.hs 116;" f worldPosToScreen src/Dodge/Base/Coordinate.hs 28;" f -worldSPic src/Dodge/Render/ShapePicture.hs 21;" f +worldSPic src/Dodge/Render/ShapePicture.hs 22;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 148;" f wrench1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 546;" f