From cc04bd05645f86dae754d00eb2da553070ee3b13 Mon Sep 17 00:00:00 2001 From: InvalidArgument3 Date: Wed, 16 Oct 2024 17:16:34 -0500 Subject: [PATCH] some station work --- SANDBOX_0_0_0_.sbs | 6255 ++++++++++++++--- SANDBOX_0_0_0_.sbsB5 | Bin 1381148 -> 1438651 bytes Sandbox.sbc | 934 ++- Sandbox_config.sbc | 2 +- .../BlockRestrictions.cfg | 84 + .../BlockRestrictions.log | 10 +- .../NpcProviderExport.csv | 44 + thumb.jpg | Bin 29585 -> 34030 bytes 8 files changed, 5931 insertions(+), 1398 deletions(-) create mode 100644 Storage/3099943209.sbm_NpcProvider/NpcProviderExport.csv diff --git a/SANDBOX_0_0_0_.sbs b/SANDBOX_0_0_0_.sbs index 7e4ba6a..068bb37 100644 --- a/SANDBOX_0_0_0_.sbs +++ b/SANDBOX_0_0_0_.sbs @@ -54,6 +54,9 @@ 100 Sphere + + 118338829513043268 + 127953776666271375 @@ -95,9 +98,6 @@ 500 Box - - 118338829513043268 - 76271685505250507 @@ -107,11 +107,11 @@ - 8263615235011172880 + -2374037726505752285 CastShadows InScene - Moonlet-1435915802d28148.93-8263615235011172880 + Moonlet-487734075d28417.4--2374037726505752285 - + @@ -144,12 +144,12 @@ false false - Moonlet-1435915802d28148.93 - 14074.4629 + Moonlet-487734075d28417.4 + 14208.6992 false - 24630.31 - 14355.9521 - 14778.1855 + 24865.2227 + 14492.873 + 14919.1338 0.65 0.57 @@ -195,15 +195,15 @@ false true Moonlet - 1435915802 + 487734075 - -2374037726505752285 + 8263615235011172880 CastShadows InScene - Moonlet-487734075d28417.4--2374037726505752285 + Moonlet-1435915802d28148.93-8263615235011172880 - + @@ -236,12 +236,12 @@ false false - Moonlet-487734075d28417.4 - 14208.6992 + Moonlet-1435915802d28148.93 + 14074.4629 false - 24865.2227 - 14492.873 - 14919.1338 + 24630.31 + 14355.9521 + 14778.1855 0.65 0.57 @@ -287,15 +287,15 @@ false true Moonlet - 487734075 + 1435915802 - 7855250210484038131 + 2687093118127834035 CastShadows InScene - Moonlet-1728203382d21671.46-7855250210484038131 + Moonlet-1105789088d27987.53-2687093118127834035 - + @@ -328,12 +328,12 @@ false false - Moonlet-1728203382d21671.46 - 10835.7275 + Moonlet-1105789088d27987.53 + 13993.7646 false - 18962.5234 - 11052.4424 - 11377.5137 + 24489.0879 + 14273.64 + 14693.4531 0.65 0.57 @@ -379,15 +379,15 @@ false true Moonlet - 1728203382 + 1105789088 - 2687093118127834035 + 8663975914586124475 CastShadows InScene - Moonlet-1105789088d27987.53-2687093118127834035 + Moonlet-1377520387d21228.74-8663975914586124475 - + @@ -420,12 +420,12 @@ false false - Moonlet-1105789088d27987.53 - 13993.7646 + Moonlet-1377520387d21228.74 + 10614.3691 false - 24489.0879 - 14273.64 - 14693.4531 + 18575.1465 + 10826.6563 + 11145.0879 0.65 0.57 @@ -471,15 +471,15 @@ false true Moonlet - 1105789088 + 1377520387 - 8663975914586124475 + 7855250210484038131 CastShadows InScene - Moonlet-1377520387d21228.74-8663975914586124475 + Moonlet-1728203382d21671.46-7855250210484038131 - + @@ -512,12 +512,12 @@ false false - Moonlet-1377520387d21228.74 - 10614.3691 + Moonlet-1728203382d21671.46 + 10835.7275 false - 18575.1465 - 10826.6563 - 11145.0879 + 18962.5234 + 11052.4424 + 11377.5137 0.65 0.57 @@ -563,15 +563,15 @@ false true Moonlet - 1377520387 + 1728203382 - -4835497880819590571 + 2671854769088975014 CastShadows InScene - Moonlet-643052328d23302.69--4835497880819590571 + Moonlet-2085811507d25164.6-2671854769088975014 - + @@ -604,12 +604,12 @@ false false - Moonlet-643052328d23302.69 - 11651.3467 + Moonlet-2085811507d25164.6 + 12582.2988 false - 20389.8574 - 11884.374 - 12233.9141 + 22019.0234 + 12833.9443 + 13211.4141 0.65 0.57 @@ -655,15 +655,15 @@ false true Moonlet - 643052328 + 2085811507 - 2671854769088975014 + -4835497880819590571 CastShadows InScene - Moonlet-2085811507d25164.6-2671854769088975014 + Moonlet-643052328d23302.69--4835497880819590571 - + @@ -696,12 +696,12 @@ false false - Moonlet-2085811507d25164.6 - 12582.2988 + Moonlet-643052328d23302.69 + 11651.3467 false - 22019.0234 - 12833.9443 - 13211.4141 + 20389.8574 + 11884.374 + 12233.9141 0.65 0.57 @@ -747,7 +747,7 @@ false true Moonlet - 2085811507 + 643052328 @@ -1027,11 +1027,11 @@ - 5253721918303354406 + -2824036948706213207 CastShadows InScene - Moonlet-1741641249d17675.66-5253721918303354406 + Moonlet-650423365d11742.64--2824036948706213207 - + @@ -1064,12 +1064,12 @@ false false - Moonlet-1741641249d17675.66 - 8837.831 + Moonlet-650423365d11742.64 + 5871.32227 false - 15466.2041 - 9014.588 - 9279.723 + 10274.8145 + 5988.74854 + 6164.888 0.65 0.57 @@ -1115,7 +1115,7 @@ false true Moonlet - 1741641249 + 650423365 @@ -1211,11 +1211,11 @@ - -2824036948706213207 + 5253721918303354406 CastShadows InScene - Moonlet-650423365d11742.64--2824036948706213207 + Moonlet-1741641249d17675.66-5253721918303354406 - + @@ -1248,12 +1248,12 @@ false false - Moonlet-650423365d11742.64 - 5871.32227 + Moonlet-1741641249d17675.66 + 8837.831 false - 10274.8145 - 5988.74854 - 6164.888 + 15466.2041 + 9014.588 + 9279.723 0.65 0.57 @@ -1299,7 +1299,7 @@ false true Moonlet - 650423365 + 1741641249 @@ -1393,112 +1393,20 @@ Moonlet 2041574333 - - - 7521879847894048566 - CastShadows InScene - Moonlet-1691323877d29577.2-7521879847894048566 - - - - - - 0 - 0 - 0 - 1 - - - - - - - MyPlanetEnvironmentComponent - - - - - - - - - - - - - false - - - - false - false - Moonlet-1691323877d29577.2 - 14788.6016 - false - 25880.0527 - 15084.374 - 15528.0313 - - 0.65 - 0.57 - 0.475 - - 7 - true - - - 1 - 1 - 1 - - 0 - - 1 - 1 - 1 - - 0 - 0 - 0 - 0 - 0.999832332 - 0 - 0 - 0 - 0 - 0 - - 2 - 2 - 2 - - - 2 - 2 - 2 - - - 0.3 - false - false - true - Moonlet - 1691323877 - Default_Astronaut 118338829513043268 CastShadows InScene 118338829513043268 - - - + + + - 0.002468882 - 0.6999726 - 0.0004910684 - 0.7141653 + 0.04045385 + 0.973776 + 0.008507011 + -0.223721713 @@ -1510,7 +1418,7 @@ SpaceCharacterHealth - 0.88 + 1 1 1 0 @@ -1587,7 +1495,7 @@ - Default_Astronaut + Astronaut M (2xAccel) true @@ -1639,12 +1547,12 @@ false - 9.983796E-06 + 1E-05 false - + 0 false @@ -1653,8 +1561,8 @@ Invalid true true - 0.2714547 - 0 + 0.9790108 + 0.14993158 @@ -1662,7 +1570,7 @@ - 0.2714547 + 0.9790108 @@ -1677,6 +1585,98 @@ true + + + 7521879847894048566 + CastShadows InScene + Moonlet-1691323877d29577.2-7521879847894048566 + + + + + + 0 + 0 + 0 + 1 + + + + + + + MyPlanetEnvironmentComponent + + + + + + + + + + + + + false + + + + false + false + Moonlet-1691323877d29577.2 + 14788.6016 + false + 25880.0527 + 15084.374 + 15528.0313 + + 0.65 + 0.57 + 0.475 + + 7 + true + + + 1 + 1 + 1 + + 0 + + 1 + 1 + 1 + + 0 + 0 + 0 + 0 + 0.999832332 + 0 + 0 + 0 + 0 + 0 + + 2 + 2 + 2 + + + 2 + 2 + 2 + + + 0.3 + false + false + true + Moonlet + 1691323877 + 4175020287138896627 @@ -17259,7 +17259,7 @@ class AutoDoorScreenManager 1 true false - 0.9910321 + 0.9873951 false @@ -17297,7 +17297,7 @@ class AutoDoorScreenManager 2 true false - 0.9910321 + 0.9873951 false @@ -25530,7 +25530,7 @@ Custom auto close time (s)=3 true false Frame100 - 300 + 500 900 false @@ -29756,20 +29756,13 @@ Custom auto close time (s)=3 31 - + -12 -18 -8 - - - 0 - 3 - 21 - - 0 @@ -29791,13 +29784,6 @@ Custom auto close time (s)=3 13 - - - 0 - 2 - 17 - - 0 @@ -29875,13 +29861,6 @@ Custom auto close time (s)=3 22 - - - 0 - 2 - 24 - - -1 @@ -29903,13 +29882,6 @@ Custom auto close time (s)=3 30 - - - 2 - 2 - 30 - - -3 @@ -30120,10 +30092,38 @@ Custom auto close time (s)=3 42 + + + 0 + 2 + 17 + + + + + 0 + 3 + 21 + + - -9 - 1 + 0 + 2 + 28 + + + + + 2 + 2 + 32 + + + + + -7 + 2 35 @@ -37299,7 +37299,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Airlock A Hatch O + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A1] Airlock Exterior false false true @@ -39441,7 +39462,7 @@ Custom auto close time (s)=3 - Connector - Worker B + Connector 02 false false true @@ -45476,6 +45497,7 @@ Custom auto close time (s)=3 + Shipyard Corner 7 false false true @@ -45622,6 +45644,7 @@ Custom auto close time (s)=3 + Shipyard Corner 1 false false true @@ -45658,6 +45681,7 @@ Custom auto close time (s)=3 + Shipyard Corner 2 false false true @@ -45804,6 +45828,7 @@ Custom auto close time (s)=3 + Shipyard Corner 4 false false true @@ -45910,6 +45935,7 @@ Custom auto close time (s)=3 + Shipyard Corner 5 false false true @@ -46216,6 +46242,7 @@ Custom auto close time (s)=3 + Shipyard Corner 3 false false true @@ -47367,7 +47394,7 @@ Custom auto close time (s)=3 - Manual Parts Access F + Small Cargo Container 07 false false true @@ -47433,7 +47460,7 @@ Custom auto close time (s)=3 - Manual Parts Access A + Small Cargo Container 02 false false true @@ -48582,7 +48609,7 @@ Custom auto close time (s)=3 - Manual Parts Access D + Small Cargo Container 05 false false true @@ -48648,7 +48675,7 @@ Custom auto close time (s)=3 - Manual Parts Access C + Small Cargo Container 04 false false true @@ -48864,7 +48891,7 @@ Custom auto close time (s)=3 - Manual Parts Access B + Small Cargo Container 03 false false true @@ -48930,7 +48957,7 @@ Custom auto close time (s)=3 - Manual Parts Access E + Small Cargo Container 06 false false true @@ -59756,6 +59783,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 01 false false true @@ -59782,6 +59810,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 12 false false true @@ -59808,6 +59837,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 23 false false true @@ -59843,6 +59873,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 29 false false true @@ -59869,6 +59900,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 35 false false true @@ -59895,6 +59927,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 39 false false true @@ -59921,6 +59954,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 40 false false true @@ -59947,6 +59981,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 41 false false true @@ -59973,6 +60008,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 42 false false true @@ -59999,6 +60035,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 02 false false true @@ -60025,6 +60062,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 03 false false true @@ -60051,6 +60089,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 04 false false true @@ -60077,6 +60116,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 05 false false true @@ -60103,6 +60143,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 06 false false true @@ -60129,6 +60170,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 07 false false true @@ -60155,6 +60197,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 08 false false true @@ -60181,6 +60224,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 09 false false true @@ -60207,6 +60251,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 10 false false true @@ -60233,6 +60278,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 11 false false true @@ -60259,6 +60305,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 13 false false true @@ -60285,6 +60332,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 14 false false true @@ -60311,6 +60359,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 15 false false true @@ -60337,6 +60386,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 16 false false true @@ -60376,6 +60426,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 17 false false true @@ -60402,6 +60453,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 18 false false true @@ -60434,6 +60486,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 19 false false true @@ -60466,6 +60519,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 20 false false true @@ -60543,6 +60597,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 21 false false true @@ -60569,6 +60624,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 22 false false true @@ -60595,6 +60651,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 24 false false true @@ -60621,6 +60678,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 25 false false true @@ -60647,6 +60705,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 26 false false true @@ -60673,6 +60732,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 27 false false true @@ -60699,6 +60759,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 28 false false true @@ -60725,6 +60786,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 30 false false true @@ -60751,6 +60813,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 31 false false true @@ -60777,6 +60840,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 32 false false true @@ -60803,6 +60867,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 33 false false true @@ -60829,6 +60894,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 34 false false true @@ -60855,6 +60921,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 36 false false true @@ -60890,6 +60957,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 37 false false true @@ -61434,6 +61502,7 @@ Custom auto close time (s)=3 + Small Cargo Container 08 false false true @@ -61761,7 +61830,7 @@ Custom auto close time (s)=3 - Shipyard - Control + Control Seat 4 false false true @@ -62467,7 +62536,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Reactor IN + Conveyor Sorter 1 false false true @@ -62652,7 +62721,7 @@ Custom auto close time (s)=3 true - 99999.957984 + 99999.941609 Uranium @@ -62677,14 +62746,14 @@ Custom auto close time (s)=3 true false Frame100 - 600 + 800 900 false - Main Reactor + Large Warfare Reactor 1 false false true @@ -62692,7 +62761,7 @@ Custom auto close time (s)=3 1 true true - 99999.95 + 99999.94 LargeBlockConveyorPipeEnd @@ -63034,7 +63103,7 @@ Custom auto close time (s)=3 Battered_Armor - Reactor Room Interior Light + Interior Light 26 false false true @@ -63949,6 +64018,7 @@ Custom auto close time (s)=3 + Connector 07 false false true @@ -64034,7 +64104,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gate Reactor + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Gate 5 false false true @@ -64043,8 +64134,7 @@ Custom auto close time (s)=3 true true false - true - 4.83 + 0 ArcBlockDoorHangar ArcBlockDoorHangar @@ -64420,7 +64510,7 @@ Custom auto close time (s)=3 - Connector Hangar A2 + Connector 11 false false true @@ -65290,6 +65380,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 01 false false true @@ -65298,8 +65410,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -65319,6 +65430,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Sliding Hatch Door 7 false false true @@ -65327,8 +65460,7 @@ Custom auto close time (s)=3 true true false - true - 3.55 + 0 ArcBlockDoorHangar ArcBlockDoorHangar @@ -65662,6 +65794,7 @@ Custom auto close time (s)=3 + Armory Lockers 1 false false true @@ -65721,6 +65854,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 03 false false true @@ -65729,8 +65884,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -65897,6 +66051,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 01 false false false @@ -65991,7 +66146,7 @@ Custom auto close time (s)=3 - Industrial Assembler F + Industrial Assembler 06 false false true @@ -66015,6 +66170,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 12 false false false @@ -66176,7 +66332,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 2 + Warfare Hangar Door 4 false false true @@ -66225,6 +66381,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 23 false false false @@ -66243,6 +66400,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 27 false false false @@ -66261,6 +66419,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 28 false false false @@ -66279,6 +66438,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 29 false false false @@ -66582,6 +66742,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 30 false false false @@ -66621,7 +66782,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 7 Windowed + Warfare Hangar Door Windowed 02 false false true @@ -66770,6 +66931,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 31 false false false @@ -66788,6 +66950,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 32 false false false @@ -66806,6 +66969,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 02 false false false @@ -66973,7 +67137,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 3 + Warfare Hangar Door 2 09 false false true @@ -67082,7 +67246,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 1 + Warfare Hangar Door 1 false false true @@ -67218,7 +67382,7 @@ Custom auto close time (s)=3 - Ingot Container 2 + Large Industrial Cargo Container 02 false false true @@ -67254,7 +67418,7 @@ Custom auto close time (s)=3 - Ingot Container 1 + Large Industrial Cargo Container 01 false false true @@ -67316,7 +67480,7 @@ Custom auto close time (s)=3 - Ingot Container 4 + Large Industrial Cargo Container 04 false false true @@ -67352,7 +67516,7 @@ Custom auto close time (s)=3 - Ingot Container 3 + Large Industrial Cargo Container 03 false false true @@ -67447,7 +67611,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Reactor IN 2 + Industrial Conveyor Sorter 7 false false true @@ -67988,7 +68152,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gate A2 + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Gate 2 false false true @@ -68011,7 +68196,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gate A1 + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Gate 1 false false true @@ -69158,6 +69364,7 @@ Custom auto close time (s)=3 Battered_Armor + Bathroom 1 false false false @@ -69912,6 +70119,7 @@ Custom auto close time (s)=3 + Small Cargo Container 09 false false true @@ -70250,6 +70458,7 @@ Custom auto close time (s)=3 + Small Cargo Container 10 false false true @@ -70305,7 +70514,7 @@ Custom auto close time (s)=3 - Connector Pad B + Connector 15 false false true @@ -70745,7 +70954,7 @@ Custom auto close time (s)=3 - Parts Container 5 + Large Industrial Cargo Container 09 false false true @@ -70781,7 +70990,7 @@ Custom auto close time (s)=3 - Parts Container 6 + Large Industrial Cargo Container 10 false false true @@ -70958,7 +71167,7 @@ Custom auto close time (s)=3 - Parts Container 3 + Large Industrial Cargo Container 07 false false true @@ -70994,7 +71203,7 @@ Custom auto close time (s)=3 - Parts Container 4 + Large Industrial Cargo Container 08 false false true @@ -71106,6 +71315,7 @@ Custom auto close time (s)=3 Retrofuture_Armor + Heat Vent 1 false false true @@ -71437,7 +71647,7 @@ Custom auto close time (s)=3 - Assembly - Control + Control Seat 1 false true true @@ -71920,7 +72130,7 @@ Custom auto close time (s)=3 - Factory - Control + Control Seat 2 false false true @@ -72519,6 +72729,7 @@ Custom auto close time (s)=3 + Sci-Fi Four-Button Panel 1 false false true @@ -72732,7 +72943,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - EStop Button Panel 5 + Vertical Button Panel 7 false false true @@ -73550,7 +73761,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 5 + Warfare Hangar Door 2 03 false false true @@ -73718,7 +73929,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 9 Windowed + Warfare Hangar Door Windowed 08 false false true @@ -73773,6 +73984,7 @@ Custom auto close time (s)=3 Battered_Armor + Exhaust Pipe 1 false false true @@ -74265,7 +74477,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 1 + Warfare Hangar Door 3 false false true @@ -74443,7 +74655,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 3 + Warfare Hangar Door 2 05 false false true @@ -74812,7 +75024,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 2 + Warfare Hangar Door 6 false false true @@ -75004,7 +75216,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 9 Windowed + Warfare Hangar Door Windowed 12 false false true @@ -75140,7 +75352,7 @@ Custom auto close time (s)=3 Battered_Armor - Factory - Light Panel 15 + Light Panel 01 false false true @@ -75376,7 +75588,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 5 + Warfare Hangar Door 2 11 false false true @@ -75462,7 +75674,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 2 + Warfare Hangar Door 2 false false true @@ -75525,6 +75737,7 @@ Custom auto close time (s)=3 Battered_Armor + Exhaust Pipe 2 false false true @@ -75717,7 +75930,7 @@ Custom auto close time (s)=3 - Connector Pad A + Connector 14 false false true @@ -75979,6 +76192,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 02 false false true @@ -75987,8 +76222,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -76252,7 +76486,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gate B1 + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Gate 3 false false true @@ -76275,7 +76530,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gate B2 + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Gate 4 false false true @@ -76349,7 +76625,7 @@ Custom auto close time (s)=3 - Connector Hangar B1 + Connector 12 false false true @@ -76679,7 +76955,7 @@ Custom auto close time (s)=3 - Connector Hangar B2 + Connector 13 false false true @@ -76978,7 +77254,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 10 Windowed + Warfare Hangar Door Windowed 01 false false true @@ -77008,6 +77284,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Rotor 1 false false true @@ -77038,6 +77315,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Rotor 3 false false true @@ -77195,7 +77473,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Sound Block EStop + Sound Block 1 false false true @@ -77284,7 +77562,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - EStop Button Panel 4 + Vertical Button Panel 6 false false true @@ -77414,7 +77692,7 @@ Custom auto close time (s)=3 Battered_Armor - Rotating Light EStop + Rotating Light 3 false false true @@ -77443,7 +77721,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - EStop Button Panel 2 + Vertical Button Panel 4 false false true @@ -77588,6 +77866,7 @@ Custom auto close time (s)=3 + Lockers 01 false false true @@ -78028,7 +78307,7 @@ Custom auto close time (s)=3 - Industrial Assembler G + Industrial Assembler 07 false false true @@ -78058,7 +78337,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 4 + Warfare Hangar Door 2 06 false false true @@ -78096,7 +78375,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 3 + Warfare Hangar Door 2 01 false false true @@ -78118,7 +78397,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 8 Windowed + Warfare Hangar Door Windowed 03 false false true @@ -78270,7 +78549,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 10 Windowed + Warfare Hangar Door Windowed 05 false false true @@ -78537,7 +78816,7 @@ Custom auto close time (s)=3 Battered_Armor - Factory - Light Panel 18 + Light Panel 03 false false true @@ -78594,7 +78873,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 1 + Warfare Hangar Door 5 false false true @@ -78694,7 +78973,7 @@ Custom auto close time (s)=3 Battered_Armor - Factory - Light Panel 16 + Light Panel 02 false false true @@ -78770,7 +79049,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 6 + Warfare Hangar Door 2 12 false false true @@ -78863,7 +79142,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 6 + Warfare Hangar Door 2 04 false false true @@ -78897,6 +79176,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 04 false false true @@ -78905,8 +79206,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -78989,7 +79289,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 7 Windowed + Warfare Hangar Door Windowed 06 false false true @@ -79109,7 +79409,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 4 + Warfare Hangar Door 2 10 false false true @@ -79533,7 +79833,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 9 Windowed + Warfare Hangar Door Windowed 04 false false true @@ -80251,7 +80551,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Assemblers RETURN + Industrial Conveyor Sorter 3 false false true @@ -81074,7 +81374,7 @@ Custom auto close time (s)=3 - Parts Container 1 + Large Industrial Cargo Container 05 false false true @@ -81159,7 +81459,7 @@ Custom auto close time (s)=3 - Industrial Assembler H + Industrial Assembler 08 false false true @@ -81683,7 +81983,7 @@ Custom auto close time (s)=3 - Connector - Worker F + Connector 06 false false true @@ -81745,7 +82045,7 @@ Custom auto close time (s)=3 - Connector - Worker A + Connector 01 false false true @@ -81834,7 +82134,7 @@ Custom auto close time (s)=3 - Connector - Worker E + Connector 05 false false true @@ -81950,7 +82250,7 @@ Custom auto close time (s)=3 - Connector - Worker D + Connector 04 false false true @@ -82012,7 +82312,7 @@ Custom auto close time (s)=3 - Connector - Worker C + Connector 03 false false true @@ -82074,7 +82374,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Airlock A Hatch I + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A1] Airlock Interior false false true @@ -82097,7 +82418,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Air Vent Airlock A + Air Vent 4 false false true @@ -82897,7 +83218,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Rotor 1 + Rotor 2 false false true @@ -84120,7 +84441,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 10 Windowed + Warfare Hangar Door Windowed 09 false false true @@ -84245,6 +84566,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 03 false false false @@ -84263,6 +84585,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 04 false false false @@ -84281,6 +84604,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 05 false false false @@ -84299,6 +84623,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 06 false false false @@ -84341,6 +84666,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 07 false false false @@ -84365,6 +84691,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 08 false false false @@ -84450,7 +84777,7 @@ Custom auto close time (s)=3 - Industrial Assembler B + Industrial Assembler 02 false false true @@ -84474,6 +84801,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 09 false false false @@ -84559,7 +84887,7 @@ Custom auto close time (s)=3 - Industrial Assembler D + Industrial Assembler 04 false false true @@ -84583,6 +84911,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 10 false false false @@ -84634,6 +84963,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 11 false false false @@ -84652,6 +84982,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 13 false false false @@ -84721,7 +85052,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory A Door 4 + Warfare Hangar Door 2 02 false false true @@ -84758,6 +85089,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 14 false false false @@ -84843,7 +85175,7 @@ Custom auto close time (s)=3 - Industrial Assembler E + Industrial Assembler 05 false false true @@ -84934,7 +85266,7 @@ Custom auto close time (s)=3 - Industrial Assembler C + Industrial Assembler 03 false false true @@ -85025,7 +85357,7 @@ Custom auto close time (s)=3 - Industrial Assembler A + Industrial Assembler 01 false false true @@ -85164,7 +85496,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 8 Windowed + Warfare Hangar Door Windowed 11 false false true @@ -85782,6 +86114,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 15 false false false @@ -85818,7 +86151,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Assemblers IN + Industrial Conveyor Sorter 1 false false true @@ -86443,6 +86776,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 16 false false false @@ -86473,6 +86807,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 17 false false false @@ -86491,6 +86826,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 18 false false false @@ -86542,7 +86878,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - EStop Button Panel 1 + Vertical Button Panel 3 false false true @@ -86617,6 +86953,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 19 false false false @@ -86689,6 +87026,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 20 false false false @@ -86707,6 +87045,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 21 false false false @@ -86725,6 +87064,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 22 false false false @@ -87038,6 +87378,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 01 false false false @@ -87085,6 +87426,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 03 false false false @@ -87132,6 +87474,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk Corner 1 false false false @@ -89663,6 +90006,7 @@ Custom auto close time (s)=3 + Dispenser 1 false false true @@ -89820,6 +90164,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 24 false false false @@ -89965,6 +90310,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 25 false false false @@ -89983,6 +90329,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Speed Module 26 false false false @@ -90219,7 +90566,7 @@ Custom auto close time (s)=3 - Connector DOCK PAD + Connector 09 false false true @@ -90292,7 +90639,7 @@ Custom auto close time (s)=3 SciFi_Armor - Main - Light Panel 4 + Light Panel 13 false false true @@ -90456,6 +90803,7 @@ Custom auto close time (s)=3 + Bed 01 false false true @@ -90523,6 +90871,7 @@ Custom auto close time (s)=3 + Bed 03 false false true @@ -90671,6 +91020,7 @@ Custom auto close time (s)=3 + Bed 04 false false true @@ -90756,6 +91106,7 @@ Custom auto close time (s)=3 + Bed 05 false false true @@ -90833,6 +91184,7 @@ Custom auto close time (s)=3 + Bed 06 false false true @@ -90910,6 +91262,7 @@ Custom auto close time (s)=3 + Bed 07 false false true @@ -91022,6 +91375,7 @@ Custom auto close time (s)=3 + Bed 08 false false true @@ -91089,6 +91443,7 @@ Custom auto close time (s)=3 + Bed 09 false false true @@ -91156,6 +91511,7 @@ Custom auto close time (s)=3 + Bed 10 false false true @@ -91223,6 +91579,7 @@ Custom auto close time (s)=3 + Bed 02 false false true @@ -91685,7 +92042,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Airlock C Hatch O + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A3] Airlock Exterior false false true @@ -91708,6 +92086,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Air Vent 1 false false true @@ -91731,7 +92110,7 @@ Custom auto close time (s)=3 SciFi_Armor - Main - Light Panel 3 + Light Panel 12 false false true @@ -91770,7 +92149,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Airlock B Hatch O + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A2] Airlock Exterior false false true @@ -91840,6 +92240,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Couch 1 false false false @@ -91990,7 +92391,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Gravity Generator + Gravity Generator 1 false false true @@ -92978,7 +93379,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Air Vent Airlock C + Air Vent 6 false false true @@ -93040,7 +93441,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Airlock C Hatch I + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A3] Airlock Interior false false true @@ -93072,7 +93494,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Auxiliary Hydrogen Engine A + Hydrogen Engine 1 false false true @@ -93092,7 +93514,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Auxiliary Hydrogen Engine B + Hydrogen Engine 2 false false true @@ -93112,7 +93534,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Airlock B Hatch I + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + [A2] Airlock Interior false false true @@ -93143,7 +93586,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Air Vent Airlock B + Air Vent 5 false false true @@ -93354,6 +93797,7 @@ Custom auto close time (s)=3 + Medical Room 1 false false true @@ -93385,6 +93829,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Air Vent 2 false false true @@ -93515,6 +93960,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 05 false false true @@ -93620,6 +94087,7 @@ Custom auto close time (s)=3 + Curved LCD Panel 1 false true true @@ -93745,7 +94213,7 @@ Custom auto close time (s)=3 Battered_Armor - Medbay - Light Panel + Light Panel 14 false false true @@ -93769,7 +94237,7 @@ Custom auto close time (s)=3 Battered_Armor - Medbay - Light Panel 2 + Light Panel 15 false false true @@ -93817,6 +94285,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 06 false false true @@ -93825,8 +94315,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -94504,7 +94993,7 @@ Custom auto close time (s)=3 Battered_Armor - Reactor Room Interior Light 2 + Interior Light 27 false false true @@ -94530,7 +95019,7 @@ Custom auto close time (s)=3 Battered_Armor - Reactor Room Interior Light 3 + Interior Light 28 false false true @@ -94556,7 +95045,7 @@ Custom auto close time (s)=3 Battered_Armor - Reactor Room Interior Light 4 + Interior Light 29 false false true @@ -94582,7 +95071,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light + Corner Light 10 false false true @@ -94608,7 +95097,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light 2 + Corner Light 11 false false true @@ -94634,7 +95123,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light 3 + Corner Light 12 false false true @@ -94660,7 +95149,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light 4 + Corner Light 13 false false true @@ -94686,7 +95175,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light 5 + Corner Light 14 false false true @@ -94712,7 +95201,7 @@ Custom auto close time (s)=3 SciFi_Armor - Reactor Room - Corner Light 6 + Corner Light 15 false false true @@ -94766,13 +95255,14 @@ Custom auto close time (s)=3 true false Frame100 - 600 + 800 900 false + Admin Battery 3 false true true @@ -94817,13 +95307,14 @@ Custom auto close time (s)=3 true false Frame100 - 600 + 800 900 false + Admin Battery 2 false true true @@ -94869,13 +95360,14 @@ Custom auto close time (s)=3 true false Frame100 - 600 + 800 900 false + Admin Battery 1 false true true @@ -95317,7 +95809,7 @@ Custom auto close time (s)=3 - Reactor Room - Control + Control Seat 3 false false true @@ -95456,6 +95948,7 @@ Custom auto close time (s)=3 SciFi_Armor + Desk 04 false false false @@ -95996,6 +96489,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 07 false false true @@ -97151,7 +97666,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Drop Pad OUT + Industrial Conveyor Sorter 4 false false true @@ -98310,7 +98825,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Button Panel Hangar Outer + Button Panel 2 false false true @@ -98365,7 +98880,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Button Panel Hangar Inner + Button Panel 1 false false true @@ -98430,6 +98945,7 @@ Custom auto close time (s)=3 Battered_Armor + Spotlight 38 false false true @@ -98540,7 +99056,7 @@ Custom auto close time (s)=3 - Connector DOCK + Connector 08 false false true @@ -98644,6 +99160,7 @@ Custom auto close time (s)=3 + LCD Panel 1 false false true @@ -98745,7 +99262,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 5 + Interior Light 19 false false true @@ -98789,7 +99306,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 8 + Interior Light 20 false false true @@ -98815,7 +99332,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 22 + Interior Light 07 false false true @@ -98847,7 +99364,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 11 + Interior Light 01 false false true @@ -98873,7 +99390,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 12 + Interior Light 02 false false true @@ -98899,7 +99416,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 13 + Interior Light 03 false false true @@ -98925,7 +99442,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 14 + Interior Light 04 false false true @@ -98951,7 +99468,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 15 + Interior Light 05 false false true @@ -98977,7 +99494,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 16 + Interior Light 06 false false true @@ -99248,7 +99765,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Ingot Storage IN + Industrial Conveyor Sorter 5 false false true @@ -99346,7 +99863,7 @@ Custom auto close time (s)=3 - Connector Hangar A1 + Connector 10 false false true @@ -99922,7 +100439,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 6 + Warfare Hangar Door 2 08 false false true @@ -100524,7 +101041,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory C Door 7 Windowed + Warfare Hangar Door Windowed 10 false false true @@ -100649,7 +101166,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 5 + Warfare Hangar Door 2 07 false false true @@ -100845,7 +101362,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - EStop Button Panel 3 + Vertical Button Panel 5 false false true @@ -101418,7 +101935,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Factory B Door 8 Windowed + Warfare Hangar Door Windowed 07 false false true @@ -101477,7 +101994,7 @@ Custom auto close time (s)=3 - Parts Container 2 + Large Industrial Cargo Container 06 false false true @@ -101667,6 +102184,7 @@ Custom auto close time (s)=3 Battered_Armor + Exhaust Pipe 3 false false true @@ -102820,6 +103338,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Beacon 1 false true true @@ -102858,6 +103377,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Antenna 1 false false true @@ -102916,6 +103436,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Laser Antenna 1 false false true @@ -103026,6 +103547,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Oxygen Farm 1 false false true @@ -103044,6 +103566,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Antenna Dish 1 false false true @@ -103181,7 +103704,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light 3 + Interior Light 23 false false true @@ -103207,7 +103730,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light 1 + Interior Light 21 false false true @@ -103233,7 +103756,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light 2 + Interior Light 22 false false true @@ -103259,7 +103782,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light 4 + Interior Light 24 false false true @@ -103285,7 +103808,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light 5 + Interior Light 25 false false true @@ -103311,7 +103834,7 @@ Custom auto close time (s)=3 Battered_Armor - Rotating Light - Hangar + Rotating Light 1 false false true @@ -103338,7 +103861,7 @@ Custom auto close time (s)=3 Battered_Armor - Rotating Light - Hangar 2 + Rotating Light 2 false false true @@ -103697,6 +104220,7 @@ Custom auto close time (s)=3 + Lockers 10 false false true @@ -103795,6 +104319,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 05 false false false @@ -103966,6 +104491,7 @@ Custom auto close time (s)=3 + Medical Station 1 false false false @@ -104096,6 +104622,7 @@ Custom auto close time (s)=3 + Lab Equipment 1 false false false @@ -104241,6 +104768,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 06 false false false @@ -104288,6 +104816,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 07 false false false @@ -104417,6 +104946,7 @@ Custom auto close time (s)=3 + Lockers 11 false false true @@ -104476,7 +105006,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 7 + Light Panel 07 false false true @@ -104502,7 +105032,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 8 + Light Panel 08 false false true @@ -104528,7 +105058,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 9 + Light Panel 09 false false true @@ -104554,7 +105084,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 10 + Light Panel 04 false false true @@ -104580,7 +105110,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 14 + Light Panel 06 false false true @@ -104606,7 +105136,7 @@ Custom auto close time (s)=3 Battered_Armor - Habitation - Light Panel 13 + Light Panel 05 false false true @@ -104697,6 +105227,7 @@ Custom auto close time (s)=3 Battered_Armor + Couch 1 false false false @@ -104788,6 +105319,7 @@ Custom auto close time (s)=3 + Lockers 12 false false true @@ -105274,7 +105806,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Aux Engine A Button Panel + Vertical Button Panel 1 false false true @@ -105317,7 +105849,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction - Aux Engine B Button Panel + Vertical Button Panel 2 false false true @@ -105740,7 +106272,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Ingot Storage OUT + Industrial Conveyor Sorter 6 false false true @@ -106062,7 +106594,7 @@ Custom auto close time (s)=3 - Oxygen Tank + Oxygen Tank 1 false false true @@ -106071,7 +106603,7 @@ Custom auto close time (s)=3 true true false - 0.5390676 + 0.47565037 false @@ -106152,7 +106684,7 @@ Custom auto close time (s)=3 - O2/H2 Generator + O2/H2 Generator 1 false false true @@ -106313,7 +106845,7 @@ Custom auto close time (s)=3 Battered_Armor - Hangar - Light Panel 1 + Light Panel 10 false false true @@ -106366,6 +106898,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 06 false false true @@ -108155,7 +108688,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 23 + Interior Light 08 false false true @@ -108181,7 +108714,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 24 + Interior Light 09 false false true @@ -108207,7 +108740,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 25 + Interior Light 10 false false true @@ -108242,7 +108775,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 26 + Interior Light 11 false false true @@ -108268,7 +108801,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 27 + Interior Light 12 false false true @@ -108363,7 +108896,7 @@ Custom auto close time (s)=3 - Recycler A + Industrial Assembler 09 false false true @@ -108463,7 +108996,7 @@ Custom auto close time (s)=3 - Recycler B + Industrial Assembler 10 false false true @@ -108577,7 +109110,7 @@ Custom auto close time (s)=3 - Conveyor Sorter - Assemblers OUT + Industrial Conveyor Sorter 2 false false true @@ -108740,7 +109273,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 28 + Interior Light 13 false false true @@ -108766,7 +109299,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 29 + Interior Light 14 false false true @@ -108810,7 +109343,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 30 + Interior Light 15 false false true @@ -108836,7 +109369,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 31 + Interior Light 16 false false true @@ -108862,7 +109395,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 32 + Interior Light 17 false false true @@ -108888,7 +109421,7 @@ Custom auto close time (s)=3 Battered_Armor - Assembling - Interior Light 33 + Interior Light 18 false false true @@ -109093,6 +109626,7 @@ Custom auto close time (s)=3 + Lockers 13 false false true @@ -109108,6 +109642,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 09 false false true @@ -109300,6 +109835,7 @@ Custom auto close time (s)=3 + ATM 1 false false true @@ -109436,6 +109972,7 @@ Custom auto close time (s)=3 + Mission Contract Block 2 false false true @@ -109570,6 +110107,7 @@ Custom auto close time (s)=3 + Mission Contract Block 1 false false true @@ -110300,6 +110838,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 08 false false true @@ -110308,8 +110868,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -110359,6 +110918,7 @@ Custom auto close time (s)=3 + Lockers 14 false false true @@ -110394,6 +110954,7 @@ Custom auto close time (s)=3 + Lockers 15 false false true @@ -110429,6 +110990,7 @@ Custom auto close time (s)=3 + Lockers 16 false false true @@ -110464,6 +111026,7 @@ Custom auto close time (s)=3 + Lockers 17 false false true @@ -110499,6 +111062,7 @@ Custom auto close time (s)=3 + Lockers 02 false false true @@ -110534,6 +111098,7 @@ Custom auto close time (s)=3 + Lockers 03 false false true @@ -110569,6 +111134,7 @@ Custom auto close time (s)=3 + Lockers 04 false false true @@ -110604,6 +111170,7 @@ Custom auto close time (s)=3 + Lockers 05 false false true @@ -110639,6 +111206,7 @@ Custom auto close time (s)=3 + Lockers 06 false false true @@ -110674,6 +111242,7 @@ Custom auto close time (s)=3 + Lockers 07 false false true @@ -110845,6 +111414,7 @@ Custom auto close time (s)=3 + Weapon Rack 1 false false true @@ -110978,6 +111548,7 @@ Custom auto close time (s)=3 + Lockers 08 false false true @@ -111215,6 +111786,28 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 09 false false true @@ -111223,8 +111816,7 @@ Custom auto close time (s)=3 true true false - true - 1.2 + 0 ArcBlockDoorSmallOpen ArcBlockDoorSmallClose @@ -111557,6 +112149,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 08 false false false @@ -111604,6 +112197,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 09 false false false @@ -111651,6 +112245,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 10 false false false @@ -111698,6 +112293,7 @@ Custom auto close time (s)=3 Battered_Armor + Desk 02 false false false @@ -111953,6 +112549,28 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + + + + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - Door Config] +Use default auto close time=true +; To use a custom auto close time, set "Use default auto close time" to false +Custom auto close time (s)=3 + + + + + + + + + Offset Door 10 false false true @@ -112088,6 +112706,7 @@ Custom auto close time (s)=3 SciFi_Armor 144115188075855902 Faction + Air Vent 3 false false true @@ -112385,6 +113004,7 @@ Custom auto close time (s)=3 + Jukebox 1 false false true @@ -112512,6 +113132,7 @@ Custom auto close time (s)=3 + Corner LCD Flat Bottom 1 false false true @@ -112718,6 +113339,7 @@ Custom auto close time (s)=3 + Corner LCD Top 1 false false true @@ -112789,16 +113411,18 @@ Custom auto close time (s)=3 255 0 + SCRIPT 2 + true - 4288108544 + 4278190080 0 - 88 - 151 + 0 + 0 0 - 88 - 151 + 0 + 0 255 @@ -112870,402 +113494,1693 @@ Custom auto close time (s)=3 - - - PB Autoclosedoor - false - true - true - true - 1 - true - - - - LargeBlockCorner_LCD_1 - 96175541863346083 - 96175541863346083 - - - - Battered_Armor - 144115188075855902 - Faction - - - - MyLcdSurfaceComponent - - 0 - - 0 - - 4.8 - HABITATION - NONE - - 4288059030 - 150 - 150 - 150 - 150 - 150 - 150 - 255 - - - 4288033280 - 0 - 50 - 150 - 0 - 50 - 150 - 255 - - 0 - 2 - TEXT_AND_IMAGE - - 2 - - 4288108544 - 0 - 88 - 151 - 0 - 88 - 151 - 255 - - - 4294962611 - 179 - 237 - 255 - 179 - 237 - 255 - 255 - - - 0 - - - - - - - false - false - true - true - 2 - true - true - - Title - READ_AND_WRITE_FACTION - 0 - - 1 - - Public title - NONE - - - 0 - 2 - 0 - - - - 0 - - - - - LargeBlockCorner_LCD_1 - 109187660984962552 - 109187660984962552 - - - - Battered_Armor - 144115188075855902 - Faction - - - - MyLcdSurfaceComponent - - 0 - - 0 - - 4.8 - POWER CONTROL - NONE - - 4288059030 - 150 - 150 - 150 - 150 - 150 - 150 - 255 - - - 4288033280 - 0 - 50 - 150 - 0 - 50 - 150 - 255 - - 0 - 2 - TEXT_AND_IMAGE - - 2 - - 4288108544 - 0 - 88 - 151 - 0 - 88 - 151 - 255 - - - 4294962611 - 179 - 237 - 255 - 179 - 237 - 255 - 255 - - - 0 - - - - - - - false - false - true - true - 3 - true - true - - Title - READ_AND_WRITE_FACTION - 0 - - 1 - - Public title - NONE - - - 0 - 2 - 0 - - - - 0 - - - - - LargeBlockCorner_LCD_1 - 81566407673297026 - 81566407673297026 - - - - Battered_Armor - 144115188075855902 - Faction - - - MyLcdSurfaceComponent - - 0 - - 0 - - 4.8 - MEDICAL - NONE - - 4288059030 - 150 - 150 - 150 - 150 - 150 - 150 - 255 - - - 4288033280 - 0 - 50 - 150 - 0 - 50 - 150 - 255 - - 0 - 2 - TEXT_AND_IMAGE - - 2 - - 4288108544 - 0 - 88 - 151 - 0 - 88 - 151 - 255 - - - 4294962611 - 179 - 237 - 255 - 179 - 237 - 255 - 255 - - - 0 - - + MyModStorageComponentBase + + + + + 74de02b3-27f9-4960-b1c4-27351f2b06d1 + [Auto Door and Airlock - General Config] +Enable automatic door closing=true +Enable airlock system=true +Ignore all hangar doors=true +Default regular door auto close time (s)=3 +Default hangar door auto close time (s)=10 +Auto door exclusion name tag=Excluded +Interior airlock door name tag=Airlock Interior +Exterior airlock door name tag=Airlock Exterior +Airlock light name tag=Airlock Light +Airlock sound block name tag=Airlock Sound +Draw title screen=true +Auto close only fully open doors=true + + + + + Programmable Block doors false - false + true true true - 4 - true + 1 true - - Title - READ_AND_WRITE_FACTION - 0 - - 1 - - Public title - NONE - - - 0 - 2 - 0 - - - - 0 - - - - - LargeBlockLockers - 74016181184959687 - 74016181184959687 - - - - Battered_Armor - 144115188075855902 - Faction - - - - MyInventoryBase - - true - - 0 - 1 - 9223372036854.775807 - 2147483647 - - CanReceive CanSend - false - - - - - false - false - true - true - 17 - true - - - StorageShelf3 - 137604965771897238 - 137604965771897238 - - - - Battered_Armor - - - FoodDispenser - 128445030692583763 - 128445030692583763 - - - - Battered_Armor - 144115188075855902 - Faction - - - - MyMultiTextPanelComponent - - - - 0 - - 1 - NONE - - 4294967295 - 255 - 255 - 255 - 255 - 255 - 255 - 255 - - + +/* +/ //// / Whip's Auto Door and Airlock Script / //// / +_______________________________________________________________________ +///DESCRIPTION/// + + This script will automatically close doors after a set amount of time. + It can also support an arbitrary amount of simple airlock systems. + +_______________________________________________________________________ +///AUTO DOOR CLOSER/// + + The script will fetch ALL doors on the grid and automatically close any + door that has been fully open for over 3 seconds (10 seconds for hangar doors). + + You can change the door auto close interval: + GLOBALLY: In the programmable block custom data + PER DOOR: In each door's custom data + + Doors can also be excluded from this feature. + +Excluding Doors: + * Add the tag "Excluded" to the front or rear of the door(s) name. +_______________________________________________________________________ +///AIRLOCKS/// + + This script supports the optional feature of simple airlock systems. + Airlock systems are composed of AT LEAST one Interior Door AND one Exterior Door. + The airlock status light does NOT affect the functionality of the doors + so if you don't have space for one, don't fret :) + +Airlock system names should follow these patterns: + + * Interior Airlock Doors: "[Prefix] Airlock Interior" + + * Exterior Airlock Doors: "[Prefix] Airlock Exterior" + + * Airlock Status Lights: "[Prefix] Airlock Light" + + You can make the [Prefix] whatever you wish, but in order for doors in an airlock + system to be linked by the script, they MUST have the same prefix. +_____________________________________________________________________ + +If you have any questions, comments, or concerns, feel free to leave a comment on +the workshop page: http://steamcommunity.com/sharedfiles/filedetails/?id=416932930 +- Whiplash141 :) +_____________________________________________________________________ + + + + + + + + + + + + +DO NOT CHANGE VARIABLES IN THE CODE + USE THE CUSTOM DATA! + + + + + + + + + + + + +DO NOT CHANGE VARIABLES IN THE CODE + USE THE CUSTOM DATA! + + + + + + + + + + + + + +DO NOT CHANGE VARIABLES IN THE CODE + USE THE CUSTOM DATA! + + + + + + + + + +YES TOEDPEREGRINE4 THAT INCLUDES YOU TOO! + + + + + + + + +------------------------------------------------------------------- +============ Don't touch anything below here! <3 ================== +------------------------------------------------------------------- +*/ +const string VERSION = "42.1.2"; +const string DATE = "2021/09/12"; + +// Ini keys +const string INI_SECTION_GENERAL = "Auto Door and Airlock - General Config"; +const string INI_GENERAL_ENABLE_AUTO_DOORS = "Enable automatic door closing"; +const string INI_GENERAL_ENABLE_AIRLOCK = "Enable airlock system"; +const string INI_GENERAL_IGNORE_ALL_HANGAR_DOORS = "Ignore all hangar doors"; +const string INI_GENERAL_REGULAR_DOOR_OPEN_TIME = "Default regular door auto close time (s)"; +const string INI_GENERAL_HANGAR_DOOR_OPEN_TIME = "Default hangar door auto close time (s)"; +const string INI_GENERAL_DOOR_EXCLUDE_NAME = "Auto door exclusion name tag"; +const string INI_GENERAL_INTERIOR_DOOR_NAME = "Interior airlock door name tag"; +const string INI_GENERAL_EXTERIOR_DOOR_NAME = "Exterior airlock door name tag"; +const string INI_GENERAL_LIGHT_NAME = "Airlock light name tag"; +const string INI_GENERAL_SOUND_NAME = "Airlock sound block name tag"; +const string INI_GENERAL_DRAW_TITLE_SCREEN = "Draw title screen"; +const string INI_GENERAL_AUTOCLOSE_FULLY_OPEN = "Auto close only fully open doors"; + +// Custom data configurable +public bool AutoCloseOnlyFullyOpen { get; private set; } = true; + +bool drawTitleScreen = true; +bool enableAutoDoorCloser = true; +bool enableAirlockSystem = true; +bool ignoreAllHangarDoors = true; +double regularDoorOpenDuration = 3; +double hangarDoorOpenDuration = 10; +string doorExcludeString = "Excluded"; + +string airlockInteriorDoorNameTag = "Airlock Interior"; +string airlockExteriorDoorNameTag = "Airlock Exterior"; +string airlockLightNameTag = "Airlock Light"; +string airlockSoundNameTag = "Airlock Sound"; + +const double secondsPerUpdate = 1.0 / 6.0; +const double updateTime = 1.0 / 6.0; +const double refreshTime = 30; + +RuntimeTracker _runtimeTracker; +MyIni _ini = new MyIni(); +Scheduler _scheduler; +ScheduledAction _scheduledGrabBlocks; +ScheduledAction _scheduledMainExecution; + +AutoDoorScreenManager _screenManager; + +Program() +{ + _screenManager = new AutoDoorScreenManager(VERSION, this); + + Runtime.UpdateFrequency = UpdateFrequency.Update10; + _runtimeTracker = new RuntimeTracker(this, 12, 0.005); + + _scheduledGrabBlocks = new ScheduledAction(GrabBlocks, 1.0 / 30.0); + _scheduledMainExecution = new ScheduledAction(MainExecutionLoop, 6); + + _scheduler = new Scheduler(this); + _scheduler.AddScheduledAction(_scheduledMainExecution); + _scheduler.AddScheduledAction(PrintDetailedInfo, 1); + _scheduler.AddScheduledAction(_scheduledGrabBlocks); + _scheduler.AddScheduledAction(DrawTitleScreen, 6); + _scheduler.AddScheduledAction(_screenManager.RestartDraw, 0.2); + + GrabBlocks(); +} + +void ProcessIniConfig() +{ + _ini.Clear(); + + // Read + if (_ini.TryParse(Me.CustomData)) + { + enableAutoDoorCloser = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_ENABLE_AUTO_DOORS).ToBoolean(enableAutoDoorCloser); + enableAirlockSystem = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_ENABLE_AIRLOCK).ToBoolean(enableAirlockSystem); + ignoreAllHangarDoors = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_IGNORE_ALL_HANGAR_DOORS).ToBoolean(ignoreAllHangarDoors); + regularDoorOpenDuration = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_REGULAR_DOOR_OPEN_TIME).ToDouble(regularDoorOpenDuration); + hangarDoorOpenDuration = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_HANGAR_DOOR_OPEN_TIME).ToDouble(hangarDoorOpenDuration); + doorExcludeString = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_DOOR_EXCLUDE_NAME).ToString(doorExcludeString); + airlockInteriorDoorNameTag = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_INTERIOR_DOOR_NAME).ToString(airlockInteriorDoorNameTag); + airlockExteriorDoorNameTag = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_EXTERIOR_DOOR_NAME).ToString(airlockExteriorDoorNameTag); + airlockLightNameTag = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_LIGHT_NAME).ToString(airlockLightNameTag); + airlockSoundNameTag = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_SOUND_NAME).ToString(airlockSoundNameTag); + drawTitleScreen = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_DRAW_TITLE_SCREEN).ToBoolean(drawTitleScreen); + AutoCloseOnlyFullyOpen = _ini.Get(INI_SECTION_GENERAL, INI_GENERAL_AUTOCLOSE_FULLY_OPEN).ToBoolean(AutoCloseOnlyFullyOpen); + } + else if (!string.IsNullOrWhiteSpace(Me.CustomData)) + { + _ini.EndContent = Me.CustomData; + } + + // Write + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_ENABLE_AUTO_DOORS, enableAutoDoorCloser); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_ENABLE_AIRLOCK, enableAirlockSystem); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_IGNORE_ALL_HANGAR_DOORS, ignoreAllHangarDoors); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_REGULAR_DOOR_OPEN_TIME, regularDoorOpenDuration); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_HANGAR_DOOR_OPEN_TIME, hangarDoorOpenDuration); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_DOOR_EXCLUDE_NAME, doorExcludeString); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_INTERIOR_DOOR_NAME, airlockInteriorDoorNameTag); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_EXTERIOR_DOOR_NAME, airlockExteriorDoorNameTag); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_LIGHT_NAME, airlockLightNameTag); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_SOUND_NAME, airlockSoundNameTag); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_DRAW_TITLE_SCREEN, drawTitleScreen); + _ini.Set(INI_SECTION_GENERAL, INI_GENERAL_AUTOCLOSE_FULLY_OPEN, AutoCloseOnlyFullyOpen); + + string output = _ini.ToString(); + if (output != Me.CustomData) + { + Me.CustomData = output; + } +} + +StringBuilder _detailedInfo = new StringBuilder(); +void PrintDetailedInfo() +{ + _detailedInfo.Append($"Whip's Auto Door and Airlock\n(Version {VERSION} - {DATE})\n\n"); + _detailedInfo.Append($"Next refresh in {Math.Round(Math.Max(_scheduledGrabBlocks.RunInterval - _scheduledGrabBlocks.TimeSinceLastRun, 0))} seconds\n\n"); + _detailedInfo.Append(_runtimeEcho); + _detailedInfo.Append("\n").Append(_runtimeTracker.Write()); + Echo(_detailedInfo.ToString()); + _detailedInfo.Clear(); +} + +void Main(string arg, UpdateType updateType) +{ + _runtimeTracker.AddRuntime(); + _scheduler.Update(); + _runtimeTracker.AddInstructions(); +} + +void MainExecutionLoop() +{ + _runtimeEcho.Clear(); + + if (enableAutoDoorCloser) + { + AutoDoors(_scheduledMainExecution.TimeSinceLastRun); //controls auto door closing + } + + if (enableAirlockSystem) + { + Airlocks(); //controls airlock system + } +} + +void DrawTitleScreen() +{ + if (drawTitleScreen) + { + _screenManager.Draw(); + } +} + +bool IsClosed(IMyTerminalBlock b) +{ + return GridTerminalSystem.GetBlockWithId(b.EntityId) == null; +} + +HashSet<string> airlockNames = new HashSet<string>(); +List<IMyDoor> airlockDoors = new List<IMyDoor>(); +List<IMySoundBlock> allSounds = new List<IMySoundBlock>(); +List<IMyLightingBlock> allLights = new List<IMyLightingBlock>(); +List<IMyTerminalBlock> allBlocks = new List<IMyTerminalBlock>(); + +List<Airlock> airlockList = new List<Airlock>(); +List<AutoDoor> autoDoors = new List<AutoDoor>(); +List<IMyDoor> autoDoorsCached = new List<IMyDoor>(); + +void GrabBlocks() +{ + ProcessIniConfig(); + + GridTerminalSystem.GetBlocksOfType(allBlocks, x => x.IsSameConstructAs(Me)); + + airlockDoors.Clear(); + allSounds.Clear(); + allLights.Clear(); + + // Trim out doors that no-longer exist or are no longer valid + for (int i = autoDoors.Count - 1; i >= 0; --i) + { + var door = autoDoors[i].Door; + bool shouldRemove = false; + if (IsClosed(door)) + { + shouldRemove = true; + } + else if (StringExtensions.Contains(door.CustomName, doorExcludeString)) + { + shouldRemove = true; + } + + if (shouldRemove) + { + autoDoors.RemoveAt(i); + } + else + { + autoDoors[i].UpdateSettings(door is IMyAirtightHangarDoor ? hangarDoorOpenDuration : regularDoorOpenDuration); + } + } + + // Fetch all blocks that the code needs + foreach (var block in allBlocks) + { + if (block is IMyDoor) + { + var door = (IMyDoor)block; + if (StringExtensions.Contains(block.CustomName, airlockInteriorDoorNameTag) + || StringExtensions.Contains(block.CustomName, airlockExteriorDoorNameTag)) + { + airlockDoors.Add(door); + } + + if (ShouldAddAutoDoor(block)) + { + if (!autoDoorsCached.Contains(door)) + { + double autoCloseInterval = door is IMyAirtightHangarDoor ? hangarDoorOpenDuration : regularDoorOpenDuration; + autoDoors.Add(new AutoDoor(door, autoCloseInterval, this)); + } + } + } + else if (block is IMyLightingBlock && StringExtensions.Contains(block.CustomName, airlockLightNameTag)) + { + allLights.Add((IMyLightingBlock)block); + } + else if (block is IMySoundBlock && StringExtensions.Contains(block.CustomName, airlockSoundNameTag)) + { + allSounds.Add((IMySoundBlock)block); + } + } + + // Fetch all airlock door names + // Note: This is inefficient as all hell + airlockNames.Clear(); + foreach (var thisDoor in airlockDoors) + { + string nameLowercased = thisDoor.CustomName.ToLowerInvariant(); + if (StringExtensions.Contains(nameLowercased, airlockInteriorDoorNameTag))//lists all airlockDoors with proper name + { + // Remove airlock tag + string thisName = nameLowercased.Replace(airlockInteriorDoorNameTag.ToLowerInvariant(), ""); + + // Remove exclude string + thisName = thisName.Replace($"[{doorExcludeString.ToLowerInvariant()}]", "").Replace(doorExcludeString.ToLowerInvariant(), ""); //remove door exclusion string + + // Remove spaces + thisName = thisName.Replace(" ", ""); + + airlockNames.Add(thisName); + } + } + + // Create airlock objects + foreach (var hashValue in airlockNames) + { + + bool dupe = false; + foreach (var airlock in airlockList) + { + if (airlock.Name.Equals(hashValue)) + { + airlock.GetBlocks(hashValue, airlockDoors, allLights, allSounds, airlockInteriorDoorNameTag, airlockExteriorDoorNameTag); + dupe = true; + break; + } + } + + if (!dupe) + airlockList.Add(new Airlock(hashValue, airlockDoors, allLights, allSounds, airlockInteriorDoorNameTag, airlockExteriorDoorNameTag)); + } + + autoDoorsCached.Clear(); + foreach (var autoDoor in autoDoors) + { + autoDoorsCached.Add(autoDoor.Door); + } +} + +bool ShouldAddAutoDoor(IMyTerminalBlock block) +{ + if (ignoreAllHangarDoors && block is IMyAirtightHangarDoor) + return false; + else if (block.CustomName.ToLower().Contains(doorExcludeString.ToLower())) + return false; + else + return true; +} + +StringBuilder _runtimeEcho = new StringBuilder(512); +void AutoDoors(double timeElapsed) +{ + foreach (var thisDoor in autoDoors) + { + if (CheckInstructions()) + { + _runtimeEcho.AppendLine(" Instruction limit hit\nAborting..."); + return; + } + + thisDoor.Update(timeElapsed); + } + + _runtimeEcho.AppendLine($"Automatic Door Summary:\n Managed Doors: {autoDoors.Count}"); +} + +bool CheckInstructions(double proportion = 0.5) +{ + return Runtime.CurrentInstructionCount >= Runtime.MaxInstructionCount * proportion; +} + +void Airlocks() +{ + _runtimeEcho.AppendLine("\nAirlock Summary:"); + + if (airlockList.Count == 0) + { + _runtimeEcho.AppendLine(" No airlock groups found"); + return; + } + + //Iterate through our airlock groups + _runtimeEcho.AppendLine($" Airlock count: {airlockList.Count}\n\nDetailed Airlock Info:"); + foreach (var airlock in airlockList) + { + if (CheckInstructions()) + { + _runtimeEcho.AppendLine(" Instruction limit hit\nAborting..."); + return; + } + + airlock.DoLogic(); + _runtimeEcho.AppendLine($" Airlock group '{airlock.Name}' found\n{airlock.Info}"); + } +} + +public class AutoDoor +{ + public IMyDoor Door { get; private set; } = null; + double _doorOpenTime = 0; + double _defaultAutoCloseTime; + double _autoCloseTime = 0; + bool _wasOpen = false; + MyIni _ini = new MyIni(); + Program _p; + + const string INI_SECTION_DOOR = "Auto Door and Airlock - Door Config"; + const string INI_DOOR_USE_DEFAULT_AUTO_CLOSE = "Use default auto close time"; + const string INI_DOOR_CUSTOM_AUTO_CLOSE_TIME = "Custom auto close time (s)"; + readonly string INI_COMMENT_DOOR_CUSTOM_AUTO_CLOSE_TIME = $" To use a custom auto close time, set \"{INI_DOOR_USE_DEFAULT_AUTO_CLOSE}\" to false"; + + public AutoDoor(IMyDoor door, double defaultDoorCloseTime, Program program) + { + Door = door; + _defaultAutoCloseTime = defaultDoorCloseTime; + _p = program; + ParseIni(); + } + + public void UpdateSettings(double defaultDoorCloseTime) + { + _defaultAutoCloseTime = defaultDoorCloseTime; + ParseIni(); + } + + void ParseIni() + { + // Read + _ini.Clear(); + bool useDefault = true; + double customAutoCloseTime = _defaultAutoCloseTime; + if (_ini.TryParse(Door.CustomData)) + { + useDefault = _ini.Get(INI_SECTION_DOOR, INI_DOOR_USE_DEFAULT_AUTO_CLOSE).ToBoolean(useDefault); + customAutoCloseTime = _ini.Get(INI_SECTION_DOOR, INI_DOOR_CUSTOM_AUTO_CLOSE_TIME).ToDouble(customAutoCloseTime); + } + else if (!string.IsNullOrWhiteSpace(Door.CustomData)) + { + _ini.EndContent = Door.CustomData; + } + + // Write + _ini.Set(INI_SECTION_DOOR, INI_DOOR_USE_DEFAULT_AUTO_CLOSE, useDefault); + _ini.Set(INI_SECTION_DOOR, INI_DOOR_CUSTOM_AUTO_CLOSE_TIME, customAutoCloseTime); + _ini.SetComment(INI_SECTION_DOOR, INI_DOOR_CUSTOM_AUTO_CLOSE_TIME, INI_COMMENT_DOOR_CUSTOM_AUTO_CLOSE_TIME); + + string output = _ini.ToString(); + if (output != Door.CustomData) + { + Door.CustomData = output; + } + + // Process + _autoCloseTime = useDefault ? _defaultAutoCloseTime : customAutoCloseTime; + } + + public void Update(double time) + { + // We add small epsilons here to account for potential FPE. + float threshold = _p.AutoCloseOnlyFullyOpen ? 0.999f : 0.001f; + if (Door.OpenRatio < threshold) // Not yet "open" + { + _doorOpenTime = 0; + _wasOpen = false; + return; + } + else if (!_wasOpen) //begin new count + { + _wasOpen = true; + _doorOpenTime = 0; + return; + } + else //if _wasOpen + { + _doorOpenTime += time; + } + + if (_autoCloseTime <= _doorOpenTime) + { + Door.CloseDoor(); + _doorOpenTime = 0; + _wasOpen = false; + } + } +} + +public class Airlock +{ + List<IMyDoor> _airlockInteriorList = new List<IMyDoor>(); + List<IMyDoor> _airlockExteriorList = new List<IMyDoor>(); + List<LightConfig> _airlockLightList = new List<LightConfig>(); + List<IMySoundBlock> _airlockSoundList = new List<IMySoundBlock>(); + private const string _soundBlockPlayingString = "%Playing sound...%"; + public string Name { get; private set; } + public string Info { get; private set; } + + MyIni _ini = new MyIni(); + const string INI_SECTION_LIGHT = "Auto Door and Airlock - Light Config"; + + const string INI_LIGHT_OPEN_ENABLE = "Turn on when airlock is open"; + const string INI_LIGHT_OPEN_COLOR = "Airlock open - Color (R,G,B)"; + const string INI_LIGHT_OPEN_INTERVAL = "Airlock open - Blink interval (seconds)"; + const string INI_LIGHT_OPEN_LENGTH = "Airlock open - Blink length (%)"; + + const string INI_LIGHT_CLOSED_ENABLE = "Turn on when airlock is closed"; + const string INI_LIGHT_CLOSED_COLOR = "Airlock closed - Color (R,G,B)"; + const string INI_LIGHT_CLOSED_INTERVAL = "Airlock closed - Blink interval (seconds)"; + const string INI_LIGHT_CLOSED_LENGTH = "Airlock closed - Blink length (%)"; + + class LightConfig + { + public readonly IMyLightingBlock Light; + + public bool OpenLightEnabled; + public Color OpenColor; + public float OpenBlinkInterval; + public float OpenBlinkLength; + + public bool ClosedLightEnabled; + public Color ClosedColor; + public float ClosedBlinkInterval; + public float ClosedBlinkLength; + + public LightConfig(IMyLightingBlock l) + { + Light = l; + + // Defaults + OpenLightEnabled = true; + ClosedLightEnabled = true; + OpenColor = new Color(255, 40, 40); + ClosedColor = new Color(80, 160, 255); + OpenBlinkLength = 50f; + ClosedBlinkLength = 100f; + OpenBlinkInterval = .8f; + ClosedBlinkInterval = .8f; + } + + public void SetColor(bool isOpen) + { + Light.Enabled = isOpen ? OpenLightEnabled : ClosedLightEnabled; + Light.Color = isOpen ? OpenColor : ClosedColor; + Light.BlinkIntervalSeconds = isOpen ? OpenBlinkInterval : ClosedBlinkInterval; + Light.BlinkLength = isOpen ? OpenBlinkLength : ClosedBlinkLength; + } + } + + public Airlock(string airlockName, List<IMyDoor> airlockDoors, List<IMyLightingBlock> allLights, List<IMySoundBlock> allSounds, string airlockInteriorDoorNameTag, string airlockExteriorDoorNameTag) + { + Name = airlockName; + + GetBlocks(this.Name, airlockDoors, allLights, allSounds, airlockInteriorDoorNameTag, airlockExteriorDoorNameTag); + Info = $" Interior Doors: {_airlockInteriorList.Count}\n Exterior Doors: {_airlockExteriorList.Count}\n Lights: {_airlockLightList.Count}\n Sound Blocks: {_airlockSoundList.Count}"; + } + + void ProcessLightBlock(IMyLightingBlock l) + { + LightConfig light = new LightConfig(l); + + // Read + _ini.Clear(); + if (_ini.TryParse(l.CustomData)) + { + light.OpenLightEnabled = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_OPEN_ENABLE).ToBoolean(light.OpenLightEnabled); + light.OpenColor = MyIniHelper.GetColor(INI_SECTION_LIGHT, INI_LIGHT_OPEN_COLOR, _ini, light.OpenColor); + light.OpenBlinkInterval = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_OPEN_INTERVAL).ToSingle(light.OpenBlinkInterval); + light.OpenBlinkLength = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_OPEN_LENGTH).ToSingle(light.OpenBlinkLength); + light.ClosedLightEnabled = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_ENABLE).ToBoolean(light.ClosedLightEnabled); + light.ClosedColor = MyIniHelper.GetColor(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_COLOR, _ini, light.ClosedColor); + light.ClosedBlinkInterval = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_INTERVAL).ToSingle(light.ClosedBlinkInterval); + light.ClosedBlinkLength = _ini.Get(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_LENGTH).ToSingle(light.ClosedBlinkLength); + } + else if (!string.IsNullOrWhiteSpace(l.CustomData)) + { + _ini.EndContent = l.CustomData; + } + + // Write + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_OPEN_ENABLE, light.OpenLightEnabled); + MyIniHelper.SetColor(INI_SECTION_LIGHT, INI_LIGHT_OPEN_COLOR, light.OpenColor, _ini, false); + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_OPEN_INTERVAL, light.OpenBlinkInterval); + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_OPEN_LENGTH,light.OpenBlinkLength); + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_ENABLE, light.ClosedLightEnabled); + MyIniHelper.SetColor(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_COLOR, light.ClosedColor, _ini, false); + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_INTERVAL, light.ClosedBlinkInterval); + _ini.Set(INI_SECTION_LIGHT, INI_LIGHT_CLOSED_LENGTH, light.ClosedBlinkLength); + + string output = _ini.ToString(); + if (output != l.CustomData) + { + l.CustomData = output; + } + + _airlockLightList.Add(light); + } + + public void GetBlocks(string airlockName, List<IMyDoor> airlockDoors, List<IMyLightingBlock> allLights, List<IMySoundBlock> allSounds, string airlockInteriorDoorNameTag, string airlockExteriorDoorNameTag) + { + //sort through all doors + _airlockInteriorList.Clear(); + _airlockExteriorList.Clear(); + _airlockLightList.Clear(); + _airlockSoundList.Clear(); + + airlockInteriorDoorNameTag = airlockInteriorDoorNameTag.ToLowerInvariant().Replace(" ", ""); + airlockExteriorDoorNameTag = airlockExteriorDoorNameTag.ToLowerInvariant().Replace(" ", ""); + + foreach (var d in airlockDoors) + { + string thisDoorName = d.CustomName.ToLowerInvariant().Replace(" ", ""); + if (StringExtensions.Contains(thisDoorName, airlockName)) + { + if (StringExtensions.Contains(thisDoorName, airlockInteriorDoorNameTag)) + { + _airlockInteriorList.Add(d); + } + else if (StringExtensions.Contains(thisDoorName, airlockExteriorDoorNameTag)) + { + _airlockExteriorList.Add(d); + } + } + } + + //sort through all lights + foreach (var l in allLights) + { + if (l.CustomName.Replace(" ", "").ToLowerInvariant().Contains(airlockName)) + { + ProcessLightBlock(l); + } + } + + //sort through all lights + foreach (var s in allSounds) + { + if (s.CustomName.Replace(" ", "").ToLowerInvariant().Contains(airlockName)) + { + _airlockSoundList.Add(s); + } + } + + Info = $" Interior Doors: {_airlockInteriorList.Count}\n Exterior Doors: {_airlockExteriorList.Count}\n Lights: {_airlockLightList.Count}\n Sound Blocks: {_airlockSoundList.Count}"; + } + + public void DoLogic() + { + bool isInteriorClosed; + bool isExteriorClosed; + + //Start checking airlock status + if (_airlockInteriorList.Count != 0 && _airlockExteriorList.Count != 0) //if we have both door types + { + //we assume the airlocks are closed until proven otherwise + isInteriorClosed = true; + isExteriorClosed = true; + + //Door Interior Check + foreach (var airlockInterior in _airlockInteriorList) + { + if (airlockInterior.OpenRatio > 0) + { + Lock(_airlockExteriorList); + isInteriorClosed = false; + break; + //if any doors yield false, bool will persist until comparison + } + } + + //Door Exterior Check + foreach (var airlockExterior in _airlockExteriorList) + { + if (airlockExterior.OpenRatio > 0) + { + Lock(_airlockInteriorList); + isExteriorClosed = false; + break; + } + } + + bool isOpen = !isInteriorClosed || !isExteriorClosed; + PlaySound(isOpen, _airlockSoundList); + foreach (var l in _airlockLightList) + { + l.SetColor(isOpen); + } + + //if all Interior doors closed + if (isInteriorClosed) + Unlock(_airlockExteriorList); + + //if all Exterior doors closed + if (isExteriorClosed) + Unlock(_airlockInteriorList); + } + } + + private void Lock(List<IMyDoor> doorList) + { + //locks all doors with the input list + foreach (IMyDoor lock_door in doorList) + { + //if door is open, then close + if (lock_door.OpenRatio > 0) + lock_door.CloseDoor(); + + //if door is fully closed, then lock + if (lock_door.OpenRatio == 0 && lock_door.Enabled) + lock_door.Enabled = false; + } + } + + private void Unlock(List<IMyDoor> doorList) + { + //unlocks all doors with input list + foreach (IMyDoor unlock_door in doorList) + unlock_door.Enabled = true; + } + + private void PlaySound(bool shouldPlay, List<IMySoundBlock> soundList) + { + foreach (var block in soundList) + { + if (shouldPlay) + { + if (!block.CustomData.Contains(_soundBlockPlayingString)) + { + block.Play(); + block.LoopPeriod = 100f; + block.CustomData += _soundBlockPlayingString; + } + } + else + { + block.Stop(); + block.CustomData = block.CustomData.Replace(_soundBlockPlayingString, ""); + } + } + } +} + +/// <summary> +/// Class that tracks runtime history. +/// </summary> +public class RuntimeTracker +{ + public int Capacity { get; set; } + public double Sensitivity { get; set; } + public double MaxRuntime { get; private set; } + public double MaxInstructions { get; private set; } + public double AverageRuntime { get; private set; } + public double AverageInstructions { get; private set; } + public double LastRuntime { get; private set; } + public double LastInstructions { get; private set; } + + readonly Queue<double> _runtimes = new Queue<double>(); + readonly Queue<double> _instructions = new Queue<double>(); + readonly StringBuilder _sb = new StringBuilder(); + readonly int _instructionLimit; + readonly Program _program; + const double MS_PER_TICK = 16.6666; + + public RuntimeTracker(Program program, int capacity = 100, double sensitivity = 0.005) + { + _program = program; + Capacity = capacity; + Sensitivity = sensitivity; + _instructionLimit = _program.Runtime.MaxInstructionCount; + } + + public void AddRuntime() + { + double runtime = _program.Runtime.LastRunTimeMs; + LastRuntime = runtime; + AverageRuntime += (Sensitivity * runtime); + int roundedTicksSinceLastRuntime = (int)Math.Round(_program.Runtime.TimeSinceLastRun.TotalMilliseconds / MS_PER_TICK); + if (roundedTicksSinceLastRuntime == 1) + { + AverageRuntime *= (1 - Sensitivity); + } + else if (roundedTicksSinceLastRuntime > 1) + { + AverageRuntime *= Math.Pow((1 - Sensitivity), roundedTicksSinceLastRuntime); + } + + _runtimes.Enqueue(runtime); + if (_runtimes.Count == Capacity) + { + _runtimes.Dequeue(); + } + + MaxRuntime = _runtimes.Max(); + } + + public void AddInstructions() + { + double instructions = _program.Runtime.CurrentInstructionCount; + LastInstructions = instructions; + AverageInstructions = Sensitivity * (instructions - AverageInstructions) + AverageInstructions; + + _instructions.Enqueue(instructions); + if (_instructions.Count == Capacity) + { + _instructions.Dequeue(); + } + + MaxInstructions = _instructions.Max(); + } + + public string Write() + { + _sb.Clear(); + _sb.AppendLine("General Runtime Info"); + _sb.AppendLine($" Avg instructions: {AverageInstructions:n2}"); + _sb.AppendLine($" Last instructions: {LastInstructions:n0}"); + _sb.AppendLine($" Max instructions: {MaxInstructions:n0}"); + _sb.AppendLine($" Avg complexity: {MaxInstructions / _instructionLimit:0.000}%"); + _sb.AppendLine($" Avg runtime: {AverageRuntime:n4} ms"); + _sb.AppendLine($" Last runtime: {LastRuntime:n4} ms"); + _sb.AppendLine($" Max runtime: {MaxRuntime:n4} ms"); + return _sb.ToString(); + } +} + +public static class StringExtensions +{ + public static bool Contains(string source, string toCheck, StringComparison comp = StringComparison.OrdinalIgnoreCase) + { + return source?.IndexOf(toCheck, comp) >= 0; + } +} + +public static class MyIniHelper +{ + #region Color + /// <summary> + /// Adds a Color to a MyIni object + /// </summary> + public static void SetColor(string sectionName, string itemName, Color color, MyIni ini, bool writeAlpha = true) + { + if (writeAlpha) + { + ini.Set(sectionName, itemName, string.Format("{0}, {1}, {2}, {3}", color.R, color.G, color.B, color.A)); + } + else + { + ini.Set(sectionName, itemName, string.Format("{0}, {1}, {2}", color.R, color.G, color.B)); + } + } + + /// <summary> + /// Parses a MyIni for a Color + /// </summary> + public static Color GetColor(string sectionName, string itemName, MyIni ini, Color? defaultChar = null) + { + string rgbString = ini.Get(sectionName, itemName).ToString("null"); + string[] rgbSplit = rgbString.Split(','); + + int r = 0, g = 0, b = 0, a = 0; + if (rgbSplit.Length < 3) + { + if (defaultChar.HasValue) + return defaultChar.Value; + else + return Color.Transparent; + } + + int.TryParse(rgbSplit[0].Trim(), out r); + int.TryParse(rgbSplit[1].Trim(), out g); + int.TryParse(rgbSplit[2].Trim(), out b); + bool hasAlpha = rgbSplit.Length >= 4 && int.TryParse(rgbSplit[3].Trim(), out a); + if (!hasAlpha) + a = 255; + + r = MathHelper.Clamp(r, 0, 255); + g = MathHelper.Clamp(g, 0, 255); + b = MathHelper.Clamp(b, 0, 255); + a = MathHelper.Clamp(a, 0, 255); + + return new Color(r, g, b, a); + } + #endregion +} + + +#region Scheduler +/// <summary> +/// Class for scheduling actions to occur at specific frequencies. Actions can be updated in parallel or in sequence (queued). +/// </summary> +public class Scheduler +{ + public double CurrentTimeSinceLastRun = 0; + + ScheduledAction _currentlyQueuedAction = null; + bool _firstRun = true; + bool _inUpdate = false; + + readonly bool _ignoreFirstRun; + readonly List<ScheduledAction> _actionsToAdd = new List<ScheduledAction>(); + readonly List<ScheduledAction> _scheduledActions = new List<ScheduledAction>(); + readonly List<ScheduledAction> _actionsToDispose = new List<ScheduledAction>(); + readonly Queue<ScheduledAction> _queuedActions = new Queue<ScheduledAction>(); + readonly Program _program; + + const double RUNTIME_TO_REALTIME = (1.0 / 60.0) / 0.0166666; + + /// <summary> + /// Constructs a scheduler object with timing based on the runtime of the input program. + /// </summary> + public Scheduler(Program program, bool ignoreFirstRun = false) + { + _program = program; + _ignoreFirstRun = ignoreFirstRun; + } + + /// <summary> + /// Updates all ScheduledAcions in the schedule and the queue. + /// </summary> + public void Update() + { + _inUpdate = true; + double deltaTime = Math.Max(0, _program.Runtime.TimeSinceLastRun.TotalSeconds * RUNTIME_TO_REALTIME); + + if (_ignoreFirstRun && _firstRun) + deltaTime = 0; + + _firstRun = false; + _actionsToDispose.Clear(); + foreach (ScheduledAction action in _scheduledActions) + { + CurrentTimeSinceLastRun = action.TimeSinceLastRun + deltaTime; + action.Update(deltaTime); + if (action.JustRan && action.DisposeAfterRun) + { + _actionsToDispose.Add(action); + } + } + + // Remove all actions that we should dispose + _scheduledActions.RemoveAll((x) => _actionsToDispose.Contains(x)); + + if (_currentlyQueuedAction == null) + { + // If queue is not empty, populate current queued action + if (_queuedActions.Count != 0) + _currentlyQueuedAction = _queuedActions.Dequeue(); + } + + // If queued action is populated + if (_currentlyQueuedAction != null) + { + _currentlyQueuedAction.Update(deltaTime); + if (_currentlyQueuedAction.JustRan) + { + // Set the queued action to null for the next cycle + _currentlyQueuedAction = null; + } + } + _inUpdate = false; + + if (_actionsToAdd.Count > 0) + { + _scheduledActions.AddRange(_actionsToAdd); + _actionsToAdd.Clear(); + } + } + + /// <summary> + /// Adds an Action to the schedule. All actions are updated each update call. + /// </summary> + public void AddScheduledAction(Action action, double updateFrequency, bool disposeAfterRun = false, double timeOffset = 0) + { + ScheduledAction scheduledAction = new ScheduledAction(action, updateFrequency, disposeAfterRun, timeOffset); + if (!_inUpdate) + _scheduledActions.Add(scheduledAction); + else + _actionsToAdd.Add(scheduledAction); + } + + /// <summary> + /// Adds a ScheduledAction to the schedule. All actions are updated each update call. + /// </summary> + public void AddScheduledAction(ScheduledAction scheduledAction) + { + if (!_inUpdate) + _scheduledActions.Add(scheduledAction); + else + _actionsToAdd.Add(scheduledAction); + } + + /// <summary> + /// Adds an Action to the queue. Queue is FIFO. + /// </summary> + public void AddQueuedAction(Action action, double updateInterval) + { + if (updateInterval <= 0) + { + updateInterval = 0.001; // avoids divide by zero + } + ScheduledAction scheduledAction = new ScheduledAction(action, 1.0 / updateInterval, true); + _queuedActions.Enqueue(scheduledAction); + } + + /// <summary> + /// Adds a ScheduledAction to the queue. Queue is FIFO. + /// </summary> + public void AddQueuedAction(ScheduledAction scheduledAction) + { + _queuedActions.Enqueue(scheduledAction); + } +} + +public class ScheduledAction +{ + public bool JustRan { get; private set; } = false; + public bool DisposeAfterRun { get; private set; } = false; + public double TimeSinceLastRun { get; private set; } = 0; + public double RunInterval + { + get + { + return _runInterval; + } + set + { + if (value == _runInterval) + return; + + _runInterval = value < Epsilon ? 0 : value; + _runFrequency = value == 0 ? double.MaxValue : 1.0 / _runInterval; + } + } + public double RunFrequency + { + get + { + return _runFrequency; + } + set + { + if (value == _runFrequency) + return; + + if (value == 0) + RunInterval = double.MaxValue; + else + RunInterval = 1.0 / value; + } + } + + double _runInterval = -1e9; + double _runFrequency = -1e9; + readonly Action _action; + + const double Epsilon = 1e-12; + + /// <summary> + /// Class for scheduling an action to occur at a specified frequency (in Hz). + /// </summary> + /// <param name="action">Action to run</param> + /// <param name="runFrequency">How often to run in Hz</param> + public ScheduledAction(Action action, double runFrequency = 0, bool removeAfterRun = false, double timeOffset = 0) + { + _action = action; + RunFrequency = runFrequency; // Implicitly sets RunInterval + DisposeAfterRun = removeAfterRun; + TimeSinceLastRun = timeOffset; + } + + public void Update(double deltaTime) + { + TimeSinceLastRun += deltaTime; + + if (TimeSinceLastRun + Epsilon >= RunInterval) + { + _action.Invoke(); + TimeSinceLastRun = 0; + + JustRan = true; + } + else + { + JustRan = false; + } + } +} + +#endregion + +class AutoDoorScreenManager +{ + readonly Color _topBarColor = new Color(25, 25, 25); + readonly Color _white = new Color(200, 200, 200); + readonly Color _black = Color.Black; + + const TextAlignment Center = TextAlignment.CENTER; + const SpriteType Texture = SpriteType.TEXTURE; + const float DoorSpriteScale = 1.5f; + const float TitleBarHeightPx = 64f; + const float TextSize = 1.5f; + const float BaseTextHeightPx = 37f; + const string Font = "DEBUG"; + const string TitleFormat = "Whip's Auto Doors - v{0}"; + readonly string _titleText; + + readonly Vector2 _doorSpritePos = new Vector2(0, 20); + + Program _program; + + int _idx = 0; + float[] _openRatios = new float[] {1f, 0.83f, 0.67f, 0.50f, 0.33f, 0.16f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.16f, 0.33f, 0.50f, 0.67f, 0.83f, 1f}; + + bool _clearSpriteCache = false; + IMyTextSurface _surface = null; + + public AutoDoorScreenManager(string version, Program program) + { + _titleText = string.Format(TitleFormat, version); + _program = program; + _surface = _program.Me.GetSurface(0); + } + + public void RestartDraw() + { + _clearSpriteCache = !_clearSpriteCache; + _idx = 0; + } + + public void Draw() + { + if (_surface == null) + return; + + float ratio = 1f; + bool framesLeft = _idx < _openRatios.Length; + if (framesLeft) + { + ratio = _openRatios[_idx]; + _idx++; + } + + SetupDrawSurface(_surface); + + Vector2 screenCenter = _surface.TextureSize * 0.5f; + Vector2 scale = _surface.SurfaceSize / 512f; + float minScale = Math.Min(scale.X, scale.Y); + + using (var frame = _surface.DrawFrame()) + { + if (_clearSpriteCache) + { + frame.Add(new MySprite()); + } + DrawDoorSprites(frame, screenCenter + _doorSpritePos, minScale * DoorSpriteScale, ratio); + DrawTitleBar(_surface, frame, minScale); + } + } + + #region Draw Helper Functions + void DrawTitleBar(IMyTextSurface _surface, MySpriteDrawFrame frame, float scale) + { + float titleBarHeight = scale * TitleBarHeightPx; + Vector2 topLeft = 0.5f * (_surface.TextureSize - _surface.SurfaceSize); + Vector2 titleBarSize = new Vector2(_surface.TextureSize.X, titleBarHeight); + Vector2 titleBarPos = topLeft + new Vector2(_surface.TextureSize.X * 0.5f, titleBarHeight * 0.5f); + Vector2 titleBarTextPos = topLeft + new Vector2(_surface.TextureSize.X * 0.5f, 0.5f * (titleBarHeight - scale * BaseTextHeightPx)); + + // Title bar + frame.Add(new MySprite( + Texture, + "SquareSimple", + titleBarPos, + titleBarSize, + _topBarColor, + null, + Center)); + + // Title bar text + frame.Add(new MySprite( + SpriteType.TEXT, + _titleText, + titleBarTextPos, + null, + _white, + Font, + Center, + TextSize * scale)); + } + + void SetupDrawSurface(IMyTextSurface _surface) + { + _surface.ScriptBackgroundColor = _black; + _surface.ContentType = ContentType.SCRIPT; + _surface.Script = ""; + } + + void DrawDoorSprites(MySpriteDrawFrame frame, Vector2 centerPos, float scale, float doorOpenRatio) + { + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(50f,17f)*scale+centerPos, new Vector2(95f*doorOpenRatio,165f)*scale, _white, null, Center, 0f)); // door right + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(-50f,17f)*scale+centerPos, new Vector2(95f*doorOpenRatio,165f)*scale, _white, null, Center, 0f)); // door left + frame.Add(new MySprite(Texture, "RightTriangle", new Vector2(-37f,-52f)*scale+centerPos, new Vector2(40f,40f)*scale, _black, null, Center, 1.5708f)); // door left cornerCopy + frame.Add(new MySprite(Texture, "RightTriangle", new Vector2(37f,-52f)*scale+centerPos, new Vector2(40f,40f)*scale, _black, null, Center, -3.1416f)); // door right cornerCopy + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(80f,0f)*scale+centerPos, new Vector2(60f,210f)*scale, _black, null, Center, 0f)); // door frame right outline + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(-80f,0f)*scale+centerPos, new Vector2(60f,210f)*scale, _black, null, Center, 0f)); // door frame left outline + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(75f,0f)*scale+centerPos, new Vector2(40f,200f)*scale, _white, null, Center, 0f)); // door frame right + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(-75f,0f)*scale+centerPos, new Vector2(40f,200f)*scale, _white, null, Center, 0f)); // door frame left + frame.Add(new MySprite(Texture, "SquareSimple", new Vector2(0f,-85f)*scale+centerPos, new Vector2(110f,30f)*scale, _white, null, Center, 0f)); // door frame top + frame.Add(new MySprite(Texture, "RightTriangle", new Vector2(40f,-55f)*scale+centerPos, new Vector2(30f,30f)*scale, _white, null, Center, -3.1416f)); // door right corner + frame.Add(new MySprite(Texture, "RightTriangle", new Vector2(-40f,-55f)*scale+centerPos, new Vector2(30f,30f)*scale, _white, null, Center, 1.5708f)); // door left corner + } + #endregion +} + + + + LargeBlockCorner_LCD_1 + 96175541863346083 + 96175541863346083 + + + + Battered_Armor + 144115188075855902 + Faction + + + + MyLcdSurfaceComponent + + 0 + + 0 + + 4.8 + HABITATION + NONE + + 4288059030 + 150 + 150 + 150 + 150 + 150 + 150 + 255 + + + 4288033280 + 0 + 50 + 150 + 0 + 50 + 150 + 255 + + 0 + 2 + TEXT_AND_IMAGE + + 2 + + 4288108544 + 0 + 88 + 151 + 0 + 88 + 151 + 255 + + + 4294962611 + 179 + 237 + 255 + 179 + 237 + 255 + 255 + + + 0 + + + + + + + false + false + true + true + 2 + true + true + + Title + READ_AND_WRITE_FACTION + 0 + + 1 + + Public title + NONE + + + 0 + 2 + 0 + + + + 0 + + + + + LargeBlockCorner_LCD_1 + 109187660984962552 + 109187660984962552 + + + + Battered_Armor + 144115188075855902 + Faction + + + + MyLcdSurfaceComponent + + 0 + + 0 + + 4.8 + POWER CONTROL + NONE + + 4288059030 + 150 + 150 + 150 + 150 + 150 + 150 + 255 + + + 4288033280 + 0 + 50 + 150 + 0 + 50 + 150 + 255 + + 0 + 2 + TEXT_AND_IMAGE + + 2 + + 4288108544 + 0 + 88 + 151 + 0 + 88 + 151 + 255 + + + 4294962611 + 179 + 237 + 255 + 179 + 237 + 255 + 255 + + + 0 + + + + + + + false + false + true + true + 3 + true + true + + Title + READ_AND_WRITE_FACTION + 0 + + 1 + + Public title + NONE + + + 0 + 2 + 0 + + + + 0 + + + + + LargeBlockCorner_LCD_1 + 81566407673297026 + 81566407673297026 + + + + Battered_Armor + 144115188075855902 + Faction + + + + MyLcdSurfaceComponent + + 0 + + 0 + + 4.8 + MEDICAL + NONE + + 4288059030 + 150 + 150 + 150 + 150 + 150 + 150 + 255 + + + 4288033280 + 0 + 50 + 150 + 0 + 50 + 150 + 255 + + 0 + 2 + TEXT_AND_IMAGE + + 2 + + 4288108544 + 0 + 88 + 151 + 0 + 88 + 151 + 255 + + + 4294962611 + 179 + 237 + 255 + 179 + 237 + 255 + 255 + + + 0 + + + + + + + false + false + true + true + 4 + true + true + + Title + READ_AND_WRITE_FACTION + 0 + + 1 + + Public title + NONE + + + 0 + 2 + 0 + + + + 0 + + + + + LargeBlockLockers + 74016181184959687 + 74016181184959687 + + + + Battered_Armor + 144115188075855902 + Faction + + + + MyInventoryBase + + true + + 0 + 1 + 9223372036854.775807 + 2147483647 + + CanReceive CanSend + false + + + + + Lockers 09 + false + false + true + true + 17 + true + + + StorageShelf3 + 137604965771897238 + 137604965771897238 + + + + Battered_Armor + + + FoodDispenser + 128445030692583763 + 128445030692583763 + + + + Battered_Armor + 144115188075855902 + Faction + + + + MyMultiTextPanelComponent + + + + 0 + + 1 + NONE + + 4294967295 + 255 + 255 + 255 + 255 + 255 + 255 + 255 + + 4278190080 0 0 @@ -113309,6 +115224,7 @@ Custom auto close time (s)=3 + Dispenser 4 false false true @@ -113736,7 +115652,7 @@ Custom auto close time (s)=3 - Factory Manual Parts Access + Small Cargo Container 01 false false true @@ -113752,6 +115668,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 05 false false true @@ -113777,6 +115694,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 04 false false true @@ -115259,6 +117177,7 @@ Custom auto close time (s)=3 + Text Panel 1 false false true @@ -115295,6 +117214,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 01 false false true @@ -115353,6 +117273,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 02 false false true @@ -115426,6 +117347,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 03 false false true @@ -115457,6 +117379,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 07 false false true @@ -116308,7 +118231,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Rotor SP1 + Rotor 4 false false true @@ -116762,7 +118685,7 @@ Custom auto close time (s)=3 - Custom Turret Controller SP1 + Custom Turret Controller 1 false false true @@ -119228,7 +121151,7 @@ Custom auto close time (s)=3 - Custom Turret Controller SP2 + Custom Turret Controller 2 false false true @@ -119275,7 +121198,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Rotor SP2 + Rotor 5 false false true @@ -120341,7 +122264,7 @@ Custom auto close time (s)=3 - Custom Turret Controller SP3 + Custom Turret Controller 3 false false true @@ -120440,7 +122363,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction - Rotor SP3 + Rotor 6 false false true @@ -120763,6 +122686,7 @@ Custom auto close time (s)=3 Battered_Armor + Corner Light 08 false false true @@ -120800,6 +122724,7 @@ Custom auto close time (s)=3 Battered_Armor + Light Panel 11 false false true @@ -120850,6 +122775,7 @@ Custom auto close time (s)=3 Battered_Armor 144115188075855902 Faction + Layman's Safezone 1 false false true @@ -122462,6 +124388,7 @@ Custom auto close time (s)=3 + Shipyard Corner 8 false false true @@ -123628,6 +125555,7 @@ Custom auto close time (s)=3 + Shipyard Corner 6 false false true @@ -125390,142 +127318,2277 @@ Custom auto close time (s)=3 - Floodlights + Floodlights + + + -19 + 39 + 18 + + + 19 + -39 + 12 + + + -19 + -39 + 18 + + + 19 + 39 + 18 + + + 19 + -39 + 18 + + + 9 + 26 + 3 + + + -9 + 26 + 3 + + + 9 + -26 + 3 + + + -9 + -26 + 3 + + + 9 + 13 + 3 + + + -9 + 13 + 3 + + + 9 + -13 + 3 + + + -9 + -13 + 3 + + + 9 + 0 + 3 + + + -9 + 0 + 3 + + + -9 + 39 + 3 + + + 9 + 39 + 3 + + + -9 + -39 + 3 + + + 9 + -39 + 3 + + + -19 + 0 + 12 + + + -19 + 0 + 18 + + + 19 + 0 + 18 + + + -19 + 13 + 12 + + + 19 + 13 + 12 + + + -19 + -13 + 12 + + + -19 + 13 + 18 + + + 19 + -13 + 12 + + + -19 + -13 + 18 + + + 19 + 13 + 18 + + + 19 + -13 + 18 + + + -19 + 26 + 12 + + + 19 + 26 + 12 + + + -19 + -26 + 12 + + + -19 + 26 + 18 + + + 19 + -26 + 12 + + + -19 + -26 + 18 + + + 19 + 26 + 18 + + + 19 + -26 + 18 + + + -19 + 39 + 12 + + + 19 + 39 + 12 + + + -19 + -39 + 12 + + + 17 + 0 + 11 + + + + + Airlock A Hatches + + + 19 + 0 + 15 + + + 22 + 0 + 15 + + + + + Airlock B Hatches + + + 24 + -7 + 15 + + + 24 + -4 + 15 + + + + + Airlock C Hatches + + + 25 + 5 + 15 + + + 25 + 7 + 15 + + + + + Auxiliary Generators + + + 34 + -2 + 17 + + + 34 + 2 + 17 + + + + + Factory A Door + + + 27 + 33 + 18 + + + 27 + 33 + 13 + + + 29 + 33 + 13 + + + 25 + 33 + 13 + + + 25 + 33 + 18 + + + 29 + 33 + 18 + + + 28 + 33 + 13 + + + 26 + 33 + 13 + + + 26 + 33 + 18 + + + 28 + 33 + 18 + + + + + Factory B Door + + + 32 + 33 + 18 + + + 32 + 33 + 13 + + + 30 + 33 + 13 + + + 34 + 33 + 13 + + + 34 + 33 + 18 + + + 30 + 33 + 18 + + + 31 + 33 + 18 + + + 33 + 33 + 18 + + + 33 + 33 + 13 + + + 31 + 33 + 13 + + + + + Factory C Door + + + 37 + 33 + 13 + + + 37 + 33 + 18 + + + 35 + 33 + 13 + + + 39 + 33 + 13 + + + 39 + 33 + 18 + + + 35 + 33 + 18 + + + 38 + 33 + 13 + + + 36 + 33 + 13 + + + 36 + 33 + 18 + + + 38 + 33 + 18 + + + + + Shipyard Corners + + + 18 + -40 + 2 + + + -18 + -40 + 2 + + + -19 + 39 + 28 + + + 19 + -40 + 27 + + + -19 + -40 + 27 + + + 19 + 39 + 28 + + + 19 + 40 + 3 + + + -19 + 40 + 3 + + + + + default - -19 - 39 - 18 + 22 + 0 + 15 + + + 35 + 0 + 15 + + + 35 + -1 + 15 + + + 35 + 1 + 15 + + + 22 + -2 + 15 + + + 34 + 0 + 7 + + + 32 + 0 + 9 + + + 21 + -1 + 15 + + + 23 + -6 + 15 + + + 24 + 6 + 15 + + + 19 + 0 + 15 + + + 24 + -4 + 15 + + + 24 + -7 + 15 + + + 25 + 5 + 15 + + + 25 + 7 + 15 + + + 32 + 0 + -1 + + + 36 + 0 + 2 + + + 24 + -22 + 15 + + + 21 + 1 + 15 + + + 20 + 1 + 15 + + + 25 + -22 + 15 + + + 30 + 21 + 14 + + + 36 + 1 + 9 + + + 36 + -1 + 9 + + + 35 + 1 + 9 + + + 35 + -1 + 9 + + + 30 + 8 + 17 + + + 30 + 11 + 17 + + + 32 + 11 + 17 + + + 32 + 8 + 17 + + + 30 + 14 + 17 + + + 32 + 14 + 17 + + + 32 + 12 + 13 + + + 32 + 16 + 13 + + + 30 + 18 + 13 + + + 30 + 10 + 13 + + + 30 + 17 + 17 + + + 32 + 17 + 17 + + + 38 + 10 + 18 + + + 38 + 14 + 18 + + + 38 + 18 + 18 + + + 38 + 18 + 15 + + + 38 + 14 + 15 + + + 38 + 10 + 15 + + + 30 + 14 + 13 + + + 32 + 8 + 13 + + + 31 + 20 + 14 + + + 26 + 2 + 15 + + + 33 + -2 + 17 + + + 33 + 2 + 17 + + + 34 + -2 + 17 + + + 34 + 2 + 17 + + + 27 + -2 + 9 + + + 26 + 6 + 12 + + + 35 + -2 + 9 + + + 33 + 0 + 2 + + + 35 + -6 + 8 + + + 35 + -2 + 8 + + + 33 + -6 + 8 + + + 27 + -2 + 8 + + + 27 + -6 + 8 + + + 29 + -6 + 8 + + + 31 + -6 + 8 + + + 29 + -2 + 8 + + + 31 + -2 + 8 + + + 33 + -2 + 8 + + + 29 + -29 + 15 + + + 29 + -31 + 15 + + + 17 + -39 + 14 + + + 17 + -26 + 14 + + + 17 + -13 + 14 + + + 17 + 13 + 14 + + + 17 + 26 + 14 + + + 17 + 39 + 14 + + + 35 + -22 + 16 + + + 46 + -12 + 14 + + + 41 + -12 + 14 + + + 32 + -23 + 15 + + + 32 + -23 + 13 + + + 26 + -23 + 15 + + + 26 + -23 + 13 + + + 31 + 12 + 9 + + + 31 + -12 + 9 + + + 31 + 7 + 16 + + + 35 + 18 + 17 + + + 37 + 11 + 16 + + + 33 + -12 + 14 + + + 33 + -12 + 12 + + + 34 + -6 + 15 + + + 32 + -1 + 16 + + + 31 + -5 + 17 + + + 34 + 3 + 8 + + + 34 + 5 + 8 + + + 25 + -3 + 15 + + + 26 + -2 + 15 + + + 22 + -1 + 12 + + + 30 + 5 + 8 + + + 31 + -1 + 8 + + + 28 + 1 + 8 + + + 24 + -3 + 14 + + + 23 + 0 + 14 + + + 25 + 4 + 14 + + + 25 + 0 + 8 + + + 25 + -1 + 11 + + + 25 + 1 + 12 + + + 23 + 1 + 12 + + + 35 + 28 + 13 + + + 34 + 28 + 13 + + + 30 + 28 + 13 + + + 29 + -25 + 14 + + + 29 + -26 + 14 + + + 35 + -22 + 14 + + + 29 + 28 + 13 + + + 24 + -6 + 15 + + + 21 + 0 + 15 + + + 23 + -1 + 12 + + + 27 + -4 + 9 + + + 31 + 0 + 9 + + + 33 + 0 + 9 + + + 24 + 1 + 15 + + + 36 + 29 + 24 + + + 28 + 29 + 24 + + + 32 + -27 + 18 + + + 36 + -5 + 9 + + + 29 + 5 + 9 + + + 36 + -4 + 9 + + + 27 + 1 + 13 + + + 24 + 6 + 12 + + + 22 + 5 + 12 + + + 26 + 4 + 12 + + + 26 + 5 + 9 + + + 26 + 4 + 9 + + + 28 + 5 + 9 + + + 35 + -5 + 9 + + + 35 + -4 + 9 + + + 27 + 5 + 9 + + + 27 + 4 + 9 + + + 29 + 4 + 9 + + + 28 + 4 + 9 + + + 26 + -3 + 15 + + + 32 + 3 + 8 + + + 27 + 3 + 9 + + + 26 + 0 + 13 + + + 37 + 25 + 15 + + + 25 + 24 + 15 + + + 39 + 24 + 15 + + + 27 + 25 + 15 + + + 32 + 25 + 15 + + + 37 + 28 + 8 + + + 32 + 28 + 8 + + + 27 + 28 + 8 + + + 32 + 23 + 14 + + + 27 + 23 + 13 + + + 29 + 23 + 13 + + + 37 + 23 + 13 + + + 27 + 33 + 18 + + + 28 + 33 + 18 + + + 27 + 33 + 13 + + + 29 + 33 + 13 + + + 25 + 33 + 13 + + + 25 + 33 + 18 + + + 29 + 33 + 18 + + + 28 + 33 + 13 + + + 26 + 33 + 13 + + + 26 + 33 + 18 + + + 32 + 33 + 18 + + + 31 + 33 + 13 + + + 32 + 33 + 13 + + + 30 + 33 + 13 + + + 34 + 33 + 13 + + + 34 + 33 + 18 + + + 30 + 33 + 18 + + + 31 + 33 + 18 + + + 33 + 33 + 18 + + + 33 + 33 + 13 + + + 37 + 33 + 13 + + + 38 + 33 + 18 + + + 37 + 33 + 18 + + + 35 + 33 + 13 + + + 39 + 33 + 13 + + + 39 + 33 + 18 + + + 35 + 33 + 18 + + + 38 + 33 + 13 + + + 36 + 33 + 13 + + + 36 + 33 + 18 + + + 38 + 22 + 15 + + + 32 + -30 + 14 + + + 31 + -30 + 14 + + + 27 + -30 + 14 + + + 26 + -30 + 14 + + + 27 + 0 + 15 + + + 32 + 29 + 5 + + + 29 + -22 + 8 + + + 32 + 0 + 12 + + + 29 + 4 + 7 + + + 33 + -4 + 7 + + + 29 + -4 + 7 + + + 33 + 0 + 7 + + + 29 + 0 + 7 + + + 33 + 4 + 7 + + + 29 + -29 + 14 + + + 33 + -26 + 13 + + + 27 + -21 + 13 + + + 31 + -21 + 13 + + + 25 + -26 + 13 + + + 25 + -21 + 13 + + + 41 + 29 + 19 + + + 41 + 27 + 17 + + + 41 + 27 + 19 + + + 41 + 29 + 17 + + + 28 + 8 + 16 + + + 34 + 8 + 16 + + + 28 + 11 + 16 + + + 34 + 11 + 16 + + + 28 + 14 + 16 + + + 34 + 14 + 16 + + + 28 + 17 + 16 + + + 34 + 17 + 16 + + + 31 + -10 + 19 + + + 31 + -14 + 19 + + + 31 + -9 + 12 + + + 31 + -9 + 15 + + + 31 + -15 + 12 + + + 31 + -15 + 15 + + + 30 + 4 + 8 + + + 25 + 3 + 12 + + + 22 + 4 + 12 + + + 33 + -1 + 2 + + + 33 + 1 + 2 + + + 22 + 1 + 17 + + + 46 + -12 + 13 + + + 25 + 6 + 14 + + + 33 + 21 + 14 + + + 35 + -3 + 9 + + + 33 + -3 + 9 + + + 29 + -3 + 9 + + + 30 + -5 + 9 + + + 31 + -5 + 9 + + + 32 + -5 + 9 + + + 35 + 5 + 9 + + + 27 + -1 + 13 + + + 25 + -2 + 12 + + + 25 + 6 + 12 + + + 22 + 1 + 12 + + + 24 + -21 + 15 + + + 26 + -3 + 9 + + + 27 + -3 + 9 + + + 26 + -5 + 9 + + + 36 + -3 + 9 + + + 25 + -1 + 14 + + + 25 + 3 + 14 + + + 32 + 0 + 14 + + + 18 + -39 + 15 + + + 18 + -26 + 15 + + + 18 + -13 + 15 + + + 18 + 13 + 15 + + + 18 + 26 + 15 + + + 18 + 39 + 15 + + + 24 + 5 + 11 + + + 24 + 4 + 11 + + + 23 + 5 + 12 + + + 26 + 3 + 12 + + + 23 + 4 + 15 + + + 22 + 4 + 15 + + + 27 + -9 + 13 + + + 24 + 1 + 12 + + + 34 + -22 + 15 + + + 28 + 21 + 15 + + + 25 + 21 + 15 + + + 24 + 2 + 15 + + + 23 + 2 + 12 + + + 31 + -20 + 15 + + + 31 + -2 + 9 + + + 28 + 2 + 9 + + + 34 + 0 + 9 + + + 31 + 0 + 1 + + + 27 + -9 + 15 + + + 41 + 18 + 15 + + + 41 + 18 + 18 + + + 41 + 14 + 15 + + + 41 + 14 + 18 + + + 41 + 10 + 15 + + + 41 + 10 + 18 + + + 19 + -2 + 8 + + + 27 + 0 + 13 + + + 31 + 3 + 16 + + + 31 + -3 + 16 + + + 29 + 3 + 16 + + + 29 + -3 + 16 + + + 33 + 3 + 16 + + + 33 + -3 + 16 + + + 30 + -2 + 12 + + + 30 + 2 + 12 + + + 33 + -2 + 12 + + + 33 + 2 + 12 + + + 37 + 15 + 16 + + + 37 + 12 + 16 + + + 29 + -29 + 13 + + + 29 + -31 + 14 + + + 32 + 24 + 12 + + + 27 + 26 + 16 + + + 37 + 26 + 16 + + + 32 + 26 + 16 + + + 36 + 29 + 26 + + + 28 + 29 + 26 + + + 32 + -27 + 20 + + + 27 + 24 + 15 + + + 37 + 24 + 15 + + + 32 + 24 + 15 + + + 17 + 0 + 8 + + + 18 + -40 + 2 + + + -18 + -40 + 2 + + + -19 + 39 + 28 + + + 19 + -40 + 27 + + + -19 + -40 + 27 + + + 19 + 39 + 28 + + + 19 + 40 + 3 + + + -19 + 40 + 3 + + + 26 + -1 + 11 + + + 32 + -22 + 15 + + + 22 + 5 + 15 + + + 26 + -22 + 15 + + + 32 + 24 + 11 + + + 34 + 8 + 17 + + + 33 + 12 + 16 + + + 33 + 11 + 14 + + + 33 + 8 + 14 + + + 29 + 8 + 14 + + + 29 + 11 + 14 + + + 34 + 14 + 14 + + + 29 + 11 + 17 - 19 - -39 - 12 + 34 + 14 + 17 - -19 - -39 - 18 + 29 + 8 + 17 - 19 - 39 - 18 + 34 + 15 + 16 - 19 - -39 - 18 + 34 + 11 + 17 - 9 - 26 - 3 + 34 + 15 + 15 - -9 - 26 - 3 + 29 + 14 + 17 - 9 - -26 - 3 + 28 + 16 + 15 - -9 - -26 - 3 + 33 + 17 + 14 - 9 - 13 - 3 + 29 + 7 + 16 - -9 + 29 + 7 + 15 + + + 29 13 - 3 + 16 - 9 - -13 - 3 + 29 + 10 + 16 - -9 - -13 - 3 + 29 + 10 + 15 - 9 - 0 - 3 + 33 + 17 + 17 - -9 - 0 - 3 + 28 + 16 + 16 - -9 - 39 - 3 + 33 + 18 + 16 - 9 - 39 - 3 + 33 + 18 + 15 - -9 - -39 - 3 + 28 + 17 + 14 - 9 - -39 - 3 + 29 + 14 + 14 - -19 - 0 - 12 + 29 + 13 + 15 - -19 - 0 - 18 + 28 + 17 + 17 - 19 - 0 - 18 + 33 + 9 + 16 - -19 - 13 - 12 + 33 + 9 + 15 - 19 - 13 - 12 + 33 + 12 + 15 -19 -13 12 - - -19 - 13 - 18 - 19 -13 - 12 + 18 -19 @@ -125534,13 +129597,13 @@ Custom auto close time (s)=3 19 - 13 - 18 + 26 + 12 19 -13 - 18 + 12 -19 @@ -125549,23 +129612,23 @@ Custom auto close time (s)=3 19 - 26 - 12 + 13 + 18 -19 - -26 + -39 12 -19 - 26 + 39 18 19 -26 - 12 + 18 -19 @@ -125573,304 +129636,169 @@ Custom auto close time (s)=3 18 - 19 - 26 + -19 + 13 18 19 - -26 - 18 - - - -19 39 12 19 - 39 + -26 12 -19 - -39 + 39 12 - - 17 - 0 - 11 - - - - - Airlock A Hatches - 19 - 0 - 15 - - - 22 - 0 - 15 - - - - - Airlock B Hatches - - - 24 - -7 - 15 - - - 24 - -4 - 15 - - - - - Airlock C Hatches - - - 25 - 5 - 15 - - - 25 - 7 - 15 - - - - - Auxiliary Generators - - - 34 - -2 - 17 - - - 34 - 2 - 17 - - - - - Factory A Door - - - 27 - 33 - 18 - - - 27 - 33 - 13 - - - 29 - 33 - 13 - - - 25 - 33 - 13 - - - 25 - 33 + 26 18 - 29 - 33 + 19 + -39 18 - 28 - 33 - 13 - - - 26 - 33 - 13 - - - 26 - 33 + -19 + -39 18 - 28 - 33 - 18 + 19 + -39 + 12 - - - - Factory B Door - - 32 - 33 + 19 + 39 18 - 32 - 33 - 13 - - - 30 - 33 - 13 - - - 34 - 33 - 13 - - - 34 - 33 - 18 + 9 + 26 + 3 - 30 - 33 - 18 + -9 + 26 + 3 - 31 - 33 + 19 + 0 18 - 33 - 33 - 18 + 9 + -26 + 3 - 33 - 33 - 13 + -9 + -26 + 3 - 31 - 33 - 13 + 9 + 13 + 3 - - - - Factory C Door - - 37 - 33 - 13 + -9 + 13 + 3 - 37 - 33 - 18 + 9 + -13 + 3 - 35 - 33 - 13 + 19 + 13 + 12 - 39 - 33 - 13 + -9 + -13 + 3 - 39 - 33 - 18 + 9 + 0 + 3 - 35 - 33 - 18 + -9 + 0 + 3 - 38 - 33 - 13 + -9 + 39 + 3 - 36 - 33 - 13 + 9 + 39 + 3 - 36 - 33 - 18 + -19 + 0 + 12 - 38 - 33 - 18 + -9 + -39 + 3 - - - - Shipyard Corners - - 18 - -40 - 2 + 9 + -39 + 3 - -18 - -40 - 2 + 17 + 0 + 11 -19 - 39 - 28 + 13 + 12 - 19 - -40 - 27 + -19 + 0 + 18 -19 - -40 - 27 + -26 + 12 - 19 - 39 - 28 + -19 + 26 + 18 - 19 - 40 - 3 + 36 + 22 + 14 - -19 - 40 - 3 + 36 + 0 + 9 @@ -125881,41 +129809,13 @@ Custom auto close time (s)=3 18 - + -21 -43 -5 - - - 21 - -1 - 15 - - - - - 22 - -2 - 15 - - - - - 24 - 6 - 15 - - - - - 23 - -6 - 15 - - 35 @@ -125923,13 +129823,6 @@ Custom auto close time (s)=3 9 - - - 22 - 2 - 14 - - 31 @@ -125986,6 +129879,62 @@ Custom auto close time (s)=3 24 + + + 28 + -1 + 15 + + + + + 22 + 2 + 14 + + + + + 23 + 3 + 12 + + + + + 24 + -5 + 15 + + + + + 25 + 21 + 15 + + + + + 19 + 0 + 16 + + + + + 25 + 6 + 15 + + + + + 27 + -1 + 12 + + Tier1 diff --git a/SANDBOX_0_0_0_.sbsB5 b/SANDBOX_0_0_0_.sbsB5 index 956c2550fb1c0e5dba8936a1d0ea8e86aa1e1336..8d7ce787f9ba54ad0e041b5d11655fe3e147ad98 100644 GIT binary patch delta 19953 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 delta 13233 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 - 578986560000 + 592850400000 RingsOfSaturnSubvival - - - + + + - -0.1356062 - 0.872255564 - 0.12114381 - 0.4539883 + -0.279848129 + 0.3647052 + 0.115916893 + 0.880476236 - + false Entity 118338829513043268 118338829513043268 - 2024-10-16T07:35:12.5060922-05:00 + 2024-10-16T17:16:02.6105969-05:00 2.5 @@ -499,6 +499,12 @@ <GeneralDamageMultiplier>1</GeneralDamageMultiplier> <DeviateShotAngle>0.00523598772</DeviateShotAngle> </WeaponParameter> + <WeaponParameter> + <ObjectBuilderName>MyObjectBuilder_InteriorTurret/Nerd_JammingBlock</ObjectBuilderName> + <AITargetingRange>0</AITargetingRange> + <GeneralDamageMultiplier>1</GeneralDamageMultiplier> + <DeviateShotAngle>0</DeviateShotAngle> + </WeaponParameter> </WeaponParameters> <WeaponAmmoParameters> <WeaponAmmoParameter> @@ -564,6 +570,13 @@ <DamageType>MissileHealthPool</DamageType> <MaxTrajectory>250</MaxTrajectory> </WeaponAmmoParameter> + <WeaponAmmoParameter> + <SubtypeId>Jammer_FakeEntry</SubtypeId> + <Damage>0</Damage> + <DefaultDamage>0</DefaultDamage> + <DamageType>ProjectileMassDamage</DamageType> + <MaxTrajectory>1</MaxTrajectory> + </WeaponAmmoParameter> </WeaponAmmoParameters> </WeaponsParametersStorage> <PlanetsParametersStorage> @@ -1203,7 +1216,7 @@ PaintUnfinishedBlocks=False NPCProviderContracts - 1000608373058233864;948590291769483082;946596398619201270;960930052848030422 + 982652785719639467;1006530410362043857;992563697548439742;951150276558424492;1002505861544100416;964419268201884819;1004576824415360201;962274141492715519;987323044607516317;977948211111502699;979990232796885849;938359800699451861;950362557931544388;956670560037531352;972859505660608632;990955726448927045 NPCProviderRepResets @@ -19586,7 +19599,6 @@ PaintUnfinishedBlocks=False Steam - @@ -19595,7 +19607,7 @@ PaintUnfinishedBlocks=False John Enceladus 0 0 - 2024-10-16T07:31:08.9793604-05:00 + 2024-10-16T16:51:39.0974239-05:00 2024-09-03T21:28:39.1026926-05:00 @@ -19608,14 +19620,14 @@ PaintUnfinishedBlocks=False 144115188075855895 Invalid 118338829513043268 - Default_Astronaut + Astronaut M (2xAccel) 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 118338829513043268 - 2024-10-16T07:35:12.5060922-05:00 + 2024-10-16T17:16:02.6105969-05:00 @@ -19627,7 +19639,7 @@ PaintUnfinishedBlocks=False Space Pirates 0 0 - 2024-10-16T07:31:29.3958607-05:00 + 2024-10-16T16:51:53.8384238-05:00 0001-01-01T00:00:00 @@ -19641,7 +19653,7 @@ PaintUnfinishedBlocks=False ENC NPC2183 0 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 2024-07-01T22:28:38.3656074-05:00 @@ -19655,7 +19667,7 @@ PaintUnfinishedBlocks=False GLF NPC8850 0 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 2024-07-01T22:39:00.8826858-05:00 @@ -19669,7 +19681,7 @@ PaintUnfinishedBlocks=False ADM NPC1717 0 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 2024-07-02T06:23:11.1914996-05:00 @@ -19683,7 +19695,7 @@ PaintUnfinishedBlocks=False Dangerous Encounter 0 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 2024-07-21T18:43:43.8860693-05:00 @@ -19697,7 +19709,7 @@ PaintUnfinishedBlocks=False Great Leader 0 0 - 2024-10-16T07:31:08.9798622-05:00 + 2024-10-16T16:51:39.1014252-05:00 2024-09-03T21:28:39.1026926-05:00 @@ -19793,7 +19805,7 @@ PaintUnfinishedBlocks=False - false + true 2.5 @@ -19970,8 +19982,6 @@ PaintUnfinishedBlocks=False - - 144115188075855896 144115188075855897 @@ -20137,11 +20147,11 @@ PaintUnfinishedBlocks=False 121891778082087523 - 50520 + 137220 132948456757758991 - 50520 + 137220 @@ -20163,7 +20173,7 @@ PaintUnfinishedBlocks=False - + -4911161085436634825 @@ -20361,7 +20371,43 @@ PaintUnfinishedBlocks=False - 960930052848030422 + 982652785719639467 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 15223440000 + + 72000 + + 1012461928080850481 + false + 982652785719639467 + 0 + 0 + 0 + 73430540981178282 + + + Combat Mission (Space) (ECO-NPC) + OBJECTIVES: +Raid hostile trade convoy in space. +Patrol designated position in space and watch for enemies. +REWARD: +Money: 130000 SC, +Reputation: 10, +Difficulty: Easy +(closest to: Moonlet) + + + + 1006530410362043857 true Inactive @@ -20372,34 +20418,32 @@ PaintUnfinishedBlocks=False 0 0 142852154432041540 - 8891130000 + 15223440000 72000 - 1079072897232357197 + 1078249151296226136 false - 960930052848030422 + 1006530410362043857 0 0 0 142852154432041540 - Combat & Assistance Mission (Space) (ECO-NPC) + Combat Mission (Space) (ECO-NPC) OBJECTIVES: Raid hostile trade convoy in space. -Assassinate your targets at the designated position in space. -Protect our space ships at designated position. -Destroy space ships on designated position. +Patrol designated position in space and watch for enemies. REWARD: -Money: 350000 SC, -Reputation: 22, +Money: 130000 SC, +Reputation: 10, Difficulty: Easy (closest to: Moonlet) - 946596398619201270 + 992563697548439742 true Inactive @@ -20410,13 +20454,13 @@ Difficulty: Easy 0 0 73430540981178282 - 8891130000 + 15823600000 72000 - 1079095075892448936 + 1057488181288999867 false - 946596398619201270 + 992563697548439742 0 0 0 @@ -20425,19 +20469,16 @@ Difficulty: Easy Combat & Assistance Mission (Space) (ECO-NPC) OBJECTIVES: -Raid hostile trade convoy in space. -Assassinate your targets at the designated position in space. Protect our space ships at designated position. -Destroy space ships on designated position. REWARD: -Money: 350000 SC, -Reputation: 22, +Money: 90000 SC, +Reputation: 6, Difficulty: Easy (closest to: Moonlet) - 948590291769483082 + 951150276558424492 true Inactive @@ -20448,31 +20489,105 @@ Difficulty: Easy 0 0 142852154432041540 - 8290960000 + 15823600000 72000 - 1057887790739064356 + 1024854918265501128 false - 948590291769483082 + 951150276558424492 0 0 0 142852154432041540 - Assistance Mission (Space) (ECO-NPC) + Combat & Assistance Mission (Space) (ECO-NPC) OBJECTIVES: -Find requested materials in local asteroids. +Protect our space ships at designated position. REWARD: -Money: 200000 SC, -Reputation: 4, +Money: 90000 SC, +Reputation: 6, +Difficulty: Easy +(closest to: Moonlet) + + + + 1002505861544100416 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 16423760000 + + 72000 + + 1051665098398987763 + false + 1002505861544100416 + 0 + 0 + 0 + 73430540981178282 + + + Transport Mission (Space) (ECO-NPC) + OBJECTIVES: +Transport the given cargo to it's destination in space. +Deliver consumables to designated position in space. +Deliver coded message to a trade station. +REWARD: +Money: 220000 SC, +Reputation: 28, Difficulty: Moderate (closest to: Moonlet) - 1000608373058233864 + 964419268201884819 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 16423760000 + + 72000 + + 1057683008030102183 + false + 964419268201884819 + 0 + 0 + 0 + 142852154432041540 + + + Transport Mission (Space) (ECO-NPC) + OBJECTIVES: +Transport the given cargo to it's destination in space. +Deliver consumables to designated position in space. +Deliver coded message to a trade station. +REWARD: +Money: 220000 SC, +Reputation: 28, +Difficulty: Moderate +(closest to: Moonlet) + + + + 1004576824415360201 true Inactive @@ -20483,27 +20598,350 @@ Difficulty: Moderate 0 0 73430540981178282 - 8290960000 + 17624090000 72000 - 1014308323085398117 + 1016758142110722755 false - 1000608373058233864 + 1004576824415360201 0 0 0 73430540981178282 - Assistance Mission (Space) (ECO-NPC) + Transport Mission (Space) (ECO-NPC) OBJECTIVES: -Find requested materials in local asteroids. +Deliver supplies to designated position in space. REWARD: -Money: 200000 SC, +Money: 100000 SC, Reputation: 4, Difficulty: Moderate (closest to: Moonlet) + + + + 962274141492715519 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 17624090000 + + 72000 + + 1079364743185742609 + false + 962274141492715519 + 0 + 0 + 0 + 142852154432041540 + + + Transport Mission (Space) (ECO-NPC) + OBJECTIVES: +Deliver supplies to designated position in space. +REWARD: +Money: 100000 SC, +Reputation: 4, +Difficulty: Moderate +(closest to: Moonlet) + + + + 987323044607516317 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 18224260000 + + 72000 + + 1038650487903660890 + false + 987323044607516317 + 0 + 0 + 0 + 73430540981178282 + + + Combat & Assistance Mission (Planet) (ECO-NPC) + OBJECTIVES: +Protect our atmospheric ship at designated position. +REWARD: +Money: 90000 SC, +Reputation: 6, +Difficulty: Easy +(planet: Moonlet) + + + + 977948211111502699 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 18224260000 + + 72000 + + 1067957296538274736 + false + 977948211111502699 + 0 + 0 + 0 + 142852154432041540 + + + Combat & Assistance Mission (Planet) (ECO-NPC) + OBJECTIVES: +Protect our atmospheric ship at designated position. +REWARD: +Money: 90000 SC, +Reputation: 6, +Difficulty: Easy +(planet: Moonlet) + + + + 979990232796885849 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 18824420000 + + 72000 + + 1041319559141929018 + false + 979990232796885849 + 0 + 0 + 0 + 73430540981178282 + + + Combat & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Transport the given cargo to it's destination in space. +Escort our trade ship to designated position in space. +REWARD: +Money: 220000 SC, +Reputation: 8, +Difficulty: Moderate +(closest to: Moonlet) + + + + 938359800699451861 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 18824420000 + + 72000 + + 1046441847481909463 + false + 938359800699451861 + 0 + 0 + 0 + 142852154432041540 + + + Combat & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Transport the given cargo to it's destination in space. +Escort our trade ship to designated position in space. +REWARD: +Money: 220000 SC, +Reputation: 8, +Difficulty: Moderate +(closest to: Moonlet) + + + + 950362557931544388 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 19424580000 + + 72000 + + 1056665414255571990 + false + 950362557931544388 + 0 + 0 + 0 + 73430540981178282 + + + Combat & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Protect our space ships at designated position. +Destroy space ships on designated position. +Raid hostile trade convoy in space. +REWARD: +Money: 270000 SC, +Reputation: 16, +Difficulty: Easy +(closest to: Moonlet) + + + + 956670560037531352 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 19424580000 + + 72000 + + 1050663392845796694 + false + 956670560037531352 + 0 + 0 + 0 + 142852154432041540 + + + Combat & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Protect our space ships at designated position. +Destroy space ships on designated position. +Raid hostile trade convoy in space. +REWARD: +Money: 270000 SC, +Reputation: 16, +Difficulty: Easy +(closest to: Moonlet) + + + + 972859505660608632 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 73430540981178282 + 20624910000 + + 72000 + + 1033621256932204067 + false + 972859505660608632 + 0 + 0 + 0 + 73430540981178282 + + + Rescue & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Find lost ship at designated location in space. +Rescue escape pod at designated position in space. +REWARD: +Money: 340000 SC, +Reputation: 16, +Difficulty: Moderate +(closest to: Moonlet) + + + + 990955726448927045 + true + Inactive + + 0 + 0 + 0 + 0 + 0 + 0 + 142852154432041540 + 20624910000 + + 72000 + + 1059954444329346054 + false + 990955726448927045 + 0 + 0 + 0 + 142852154432041540 + + + Rescue & Assistance Mission (Space) (ECO-NPC) + OBJECTIVES: +Find lost ship at designated location in space. +Rescue escape pod at designated position in space. +REWARD: +Money: 340000 SC, +Reputation: 16, +Difficulty: Moderate +(closest to: Moonlet) @@ -82875,7 +83313,7 @@ Difficulty: Moderate - 74349 + 78333 @@ -83460,19 +83898,19 @@ Difficulty: Moderate - 281928717.51767939 - -11299561.416450074 - -41465799.706357375 + 52681053.584255859 + 4952849.4491436025 + 91981310.848616213 - 14778.1855 + 14693.4531 - 43106012.748828471 - 14873096.079999659 - -87273540.097650126 + 281928717.51767939 + -11299561.416450074 + -41465799.706357375 - 14919.1338 + 14778.1855 @@ -83482,14 +83920,6 @@ Difficulty: Moderate 11377.5137 - - - 52681053.584255859 - 4952849.4491436025 - 91981310.848616213 - - 14693.4531 - 202142264.24263805 @@ -83500,11 +83930,19 @@ Difficulty: Moderate - 86684260.268817991 - 2339502.4041681434 - 76241838.379001126 + 43106012.748828471 + 14873096.079999659 + -87273540.097650126 - 12233.9141 + 14919.1338 + + + + 159279015.72315872 + 3117752.6068893396 + -84512676.5841042 + + 13211.4141 @@ -83516,11 +83954,11 @@ Difficulty: Moderate - 159279015.72315872 - 3117752.6068893396 - -84512676.5841042 + 86684260.268817991 + 2339502.4041681434 + 76241838.379001126 - 13211.4141 + 12233.9141 @@ -83540,11 +83978,11 @@ Difficulty: Moderate - 254255133.049078 - -14307369.958736703 - 74037540.076578081 + 209650387.84686679 + 481187.91677057877 + -132712543.0291452 - 9279.723 + 6164.888 @@ -83556,11 +83994,11 @@ Difficulty: Moderate - 209650387.84686679 - 481187.91677057877 - -132712543.0291452 + 254255133.049078 + -14307369.958736703 + 74037540.076578081 - 6164.888 + 9279.723 @@ -83738,173 +84176,191 @@ Difficulty: Moderate 11 - Models\Cubes\Large\HangarDoor_base.mwm - Models\Cubes\Large\ConveyorDuct.mwm + Models\Cubes\Large\WindowEdge.mwm + Models\Cubes\Large\GirderStraight.mwm + Models\Cubes\Large\GratedCatwalkStraight.mwm + Models\Cubes\Large\GirderSlope2x1Tip.mwm + Models\Cubes\Large\GirderSlope2x1Base.mwm O:\SteamLibrary\steamapps\workshop\content\244850\1864380341\Models\Cubes\Large\AQD_LG_ConveyorJunction.mwm - Models\Cubes\Large\GatlingTurret.mwm - Models\Cubes\Large\ConveyorDuctCurved.mwm - Models\Cubes\Large\ConveyorDuctT.mwm - Models\Cubes\Large\OffsetDoor.mwm - Models\Cubes\Large\LightPanel.mwm - Models\Cubes\Large\LightArmorPanel.mwm - Models\Cubes\Large\HalfGratedCatwalk.mwm - Models\Cubes\Large\LightArmorSlopedSidePanel.mwm + Models\Cubes\Large\PipeSeamless.mwm + Models\Cubes\Large\PipeJunction.mwm + Models\Cubes\Large\BridgeWindow1x1Slope.mwm + Models\Cubes\Large\HatchDoor.mwm Models\Cubes\Large\Connector.mwm - Models\Cubes\Large\SlideDoor.mwm + O:\SteamLibrary\steamapps\workshop\content\244850\3013053286\Models\ShipyardConveyorMount_Large.mwm + Models\Cubes\Large\LightArmorPanel.mwm + O:\SteamLibrary\steamapps\workshop\content\244850\3013053286\Models\ShipyardCorner_Large.mwm + Models\Cubes\Large\CargoContainerSmall.mwm + Models\Cubes\Large\GirderStraightHalf.mwm + Models\Cubes\Large\GirderSlopeHalf.mwm + Models\Cubes\Large\light.mwm + Models\Cubes\Large\BridgeWindow1x1Face.mwm + Models\Cubes\Large\ArmorCorner.mwm + Models\Cubes\Large\HydrogenTankIndustrial.mwm + Models\Cubes\Large\GirderRound.mwm + Models\Cubes\Large\OpenCockpitLarge.mwm Models\Cubes\Large\PipeEnd.mwm - Models\Cubes\Large\AngledInteriorWallA.mwm - Models\Cubes\Large\EventController.mwm - Models\Cubes\Large\RemoteControl.mwm - Models\Cubes\Large\GirderSlope.mwm - Models\Cubes\Large\WallFanVent.mwm - Models\Cubes\Large\PipeSeamless.mwm - Models\Cubes\Large\PipeworkBlock_Airtight.mwm - Models\Cubes\Large\PipeworkBlock.mwm - Models\Cubes\Large\SciFiWall.mwm - Models\Cubes\Large\OxygenPressurizerFull.mwm - Models\Cubes\Large\RailingStraight.mwm - Models\Cubes\Large\Window1x2Flat.mwm + Models\Cubes\Large\ConveyorSorter.mwm + Models\Cubes\Large\ReactorReskinLarge.mwm + Models\Cubes\Large\InteriorLight.mwm + Models\Cubes\large\Ladder.mwm + Models\Cubes\Large\GratedStairs.mwm + Models\Cubes\Large\GratedCatwalkWall.mwm + Models\Cubes\Large\Gate.mwm + Models\Cubes\Large\PipeCorner.mwm + Models\Cubes\Large\PipeFlange.mwm Models\Cubes\Large\Window1x1Flat.mwm + Models\Cubes\Large\NeonTubesBendDown.mwm + Models\Cubes\Large\RailingDiagonal.mwm + Models\Cubes\Large\PistonTop.mwm + Models\Cubes\Large\GratedCatwalkCorner.mwm + Models\Cubes\Large\OffsetDoor.mwm + Models\Cubes\Large\Window1x1FlatInv.mwm + Models\Cubes\Large\ArmorInvCorner.mwm + Models\Cubes\Large\LockerRoomCorner.mwm + Models\Cubes\Large\GirderStraightEnd.mwm + Models\Cubes\Large\UpgradeProductivity.mwm + Models\Cubes\Large\AdvancedAssemblerIndustrial.mwm + Models\Cubes\Large\ArmorSide.mwm + Models\Cubes\Large\HangarDoorWarfareA_Base.mwm + Models\Cubes\Large\RailingStraight.mwm + Models\Cubes\Large\HangarDoorWarfareB_Base.mwm + Models\Cubes\Large\CylindricalColumn.mwm + Models\Cubes\Large\HangarDoorWarfareC_Base.mwm + Models\Cubes\Large\CargoContainer.mwm + Models\Cubes\Large\ConveyorSorterReskin.mwm + Models\Cubes\Large\GirderSlope.mwm + Models\Cubes\Large\PipeNode.mwm + Models\Cubes\Large\Shower.mwm + Models\Cubes\Large\Bathroom.mwm + Models\Cubes\Large\ConveyorDuct.mwm + Models\Cubes\Large\Stairs.mwm + Models\Cubes\Large\HeatVent.mwm + Models\Cubes\Large\Symbol_6.mwm + Models\Cubes\Large\Symbol_5.mwm + Models\Cubes\Large\Symbol_3.mwm + Models\Cubes\Large\Symbol_4.mwm + Models\Cubes\Large\ButtonPanel_SciFi.mwm + Models\Cubes\Large\VerticalButtonPanel.mwm + Models\Cubes\Large\Ramp.mwm + Models\Cubes\Large\Symbol_B.mwm + Models\Cubes\Large\ExhaustPipe_Racing.mwm + Models\Cubes\Large\WindowSquare.mwm + Models\Cubes\Large\Symbol_A.mwm Models\Cubes\Large\LightArmorHalfPanel.mwm - Models\Cubes\Large\LabEquipment.mwm - Models\Cubes\Large\SimpleMagneticPlate.mwm - Models\Cubes\Large\ButtonPanel.mwm - Models\Cubes\Large\Freight_III.mwm - Models\Cubes\Large\Freight_II.mwm + Models\Cubes\Large\LightPanel.mwm + Models\Cubes\Large\HalfWindowInv.mwm + Models\Cubes\Large\ConveyorDuctCurved.mwm + Models\Cubes\Large\MotorStator.mwm + Models\Cubes\Large\SoundBlock.mwm + Models\Cubes\Large\RotatingLight.mwm Models\Cubes\Large\Lockers.mwm - Models\Cubes\Large\Shelf_1.mwm + Models\Cubes\Large\OxygenPressurizer.mwm + Models\Cubes\Large\NeonTubesStraightEnd2.mwm + Models\Cubes\Large\GratedHalfStairs.mwm + Models\Cubes\Large\Desk.mwm + Models\Cubes\Large\DeskCorner.mwm + Models\Cubes\Large\SciFiWall.mwm + Models\Cubes\Large\GratedCatwalk.mwm + Models\Cubes\Large\WindowWallRight.mwm + Models\Cubes\Large\WindowWallLeft.mwm + Models\Cubes\Large\WindowWallCenter.mwm + Models\Cubes\Large\FoodDispenser.mwm + Models\Cubes\Large\Bed.mwm + Models\Cubes\Large\CouchCorner.mwm + Models\Cubes\Large\PassageStraight.mwm + Models\Cubes\Large\GravityGenerator.mwm + Models\Cubes\Large\HydrogenEngine.mwm + Models\Cubes\Large\MedicalRoom.mwm + Models\Cubes\Large\CurvedLCD.mwm + Models\Cubes\Large\Viewport2_Racing.mwm + Models\Cubes\large\Light_1corner.mwm + Models\Cubes\Large\BatteryLarge.mwm Models\Cubes\Large\Planters.mwm - Models\Cubes\Large\Crate01.mwm - Models\Cubes\Large\InvertedChairlessCornerDesk.mwm - Models\Cubes\Large\ProgrammingBlock.mwm - Models\Cubes\Large\Barrel01Stack.mwm - Models\Cubes\Large\Barrel01Three.mwm - Models\Cubes\Large\Barrel01_Large.mwm + Models\Cubes\Large\Viewport_Racing.mwm + Models\Cubes\Large\Symbol_1.mwm Models\Cubes\Large\NeonTubesStraightDown.mwm - Models\Cubes\Large\NeonTubesStraightEnd1.mwm - Models\Cubes\Large\OxygenStorage.mwm - Models\Cubes\Large\OxygenGenerator.mwm - Models\Cubes\Large\ReactorReskinSmall.mwm - Models\Cubes\Large\HydrogenTankSmall.mwm - Models\Cubes\Large\CouchCorner.mwm - Models\Cubes\Large\Inset_Aquarium.mwm - Models\Cubes\Large\InteriorKitchen.mwm - Models\Cubes\Large\Inset_PlantCouch.mwm - Models\Cubes\Large\Bed.mwm - Models\Cubes\Large\GratedCatwalk.mwm - Models\Cubes\Large\PassageSciFi.mwm + Models\Cubes\Large\NeonTubesStraight1.mwm + Models\Cubes\Large\ButtonPanel.mwm + Models\Cubes\Large\LCDPanel.mwm + Models\Cubes\Large\Symbol_C.mwm + Models\Cubes\Large\beacon.mwm + Models\Cubes\Large\antenna.mwm + Models\Cubes\Large\LaserComBase.mwm + Models\Cubes\Large\SolarHydroponics.mwm + Models\Cubes\Large\AntennaDish.mwm + Models\Cubes\Large\Symbol_2.mwm Models\Cubes\Large\PassageSciFiGate.mwm - Models\Cubes\Large\InteriorBookshelf.mwm - Models\Cubes\Large\LockerRoom.mwm - Models\Cubes\Large\HalfWindow.mwm - Models\Cubes\Large\InsetLightBlock.mwm - Models\Cubes\Large\AngledInteriorWallB.mwm - Models\Cubes\Large\GirderStraightEnd.mwm - Models\Cubes\Large\SteelCatwalk_2Sides.mwm - Models\Cubes\Large\BridgeWindow1x1Slope.mwm - Models\Cubes\Large\HalfWindowInv.mwm - Models\Cubes\Large\Window1x1Slope.mwm + Models\Cubes\Large\Shelf_1.mwm + Models\Cubes\Large\Shelf_2.mwm + Models\Cubes\Large\Shelf_3.mwm Models\Cubes\Large\MedicalStation.mwm - Models\Cubes\Large\MedicalRoomReskin.mwm - Models\Cubes\Large\FullBlockLCD.mwm - Models\Cubes\large\Light_1corner.mwm - Models\Cubes\Large\LockerRoomCorner.mwm - Models\Cubes\Large\TimerBlock.mwm - Models\Cubes\Large\VanillaVerticalButtonPanel.mwm - Models\Cubes\Large\CargoContainerLarge.mwm - Models\Cubes\Large\LightArmor2x1SlopedSideBasePanel.mwm - Models\Cubes\Large\LightArmor2x1SlopeSideBasePanelInv.mwm - Models\Cubes\Large\LightArmor2x1SlopeSideTipPanel.mwm - Models\Cubes\Large\LightArmor2x1SlopeSideTipPanelInv.mwm - Models\Cubes\Large\InteriorLight.mwm + Models\Cubes\Large\LabEquipment.mwm + Models\Cubes\Large\Freight_III.mwm + Models\Cubes\Large\Freight_II.mwm + Models\Cubes\Large\Freight_I.mwm + Models\Cubes\Large\Couch.mwm + Models\Cubes\Large\GratedCatwalkRailingEnd.mwm + Models\Cubes\Large\OxygenStorage.mwm + Models\Cubes\Large\OxygenGenerator.mwm + Models\Cubes\Large\LightArmorHalfSlopedPanel.mwm + Models\Cubes\Large\ATM.mwm + O:\SteamLibrary\steamapps\workshop\content\244850\3099943209\Models\ContractsBlock.mwm + Models\Cubes\Large\BarCounterCorner_SciFi.mwm + Models\Cubes\Large\WeaponRack.mwm + Models\Cubes\Large\BarCounter_SciFi.mwm + Models\Cubes\Large\Kitchen.mwm + Models\Cubes\Large\Jukebox.mwm + Models\Cubes\large\Corner_LCD_Flat_2.mwm + Models\Cubes\large\Corner_LCD_1.mwm + Models\Cubes\Large\ProgrammingBlock.mwm + Models\Cubes\Large\NeonTubesStraightEnd1.mwm + Models\Cubes\Large\TextPanel.mwm + Models\Cubes\Large\TurretControlBlock.mwm + Models\Cubes\Large\GratedCatwalkRailingHalfLeft.mwm + Models\Cubes\Large\GratedCatwalkRailingHalfRight.mwm + Models\Cubes\Large\GatlingTurret.mwm Models\Cubes\Large\InteriorPillar.mwm - Models\Cubes\Large\CylindricalColumn.mwm - Models\Cubes\Large\GirderSlope2x1Base.mwm - Models\Cubes\Large\GirderStraightHalf.mwm - Models\Cubes\Large\GirderSlope2x1Tip.mwm - Models\Cubes\Large\antenna.mwm - Models\Cubes\Large\ArmorSide.mwm - Models\Cubes\Large\OreDetector.mwm - Models\Cubes\Large\ExhaustPipe_Racing.mwm - Models\Cubes\Large\LaserComBase.mwm - Models\Cubes\Large\BatteryLarge.mwm - Models\Cubes\Large\BeaconReskin.mwm - Models\Cubes\Large\DeskChairless.mwm - Models\Cubes\Large\LightArmor2x1SlopedPanel.mwm - Models\Cubes\Large\ArmorCorner.mwm - Models\Cubes\Large\LightArmor2x1HalfSlopedPanelInv.mwm - Models\Cubes\Large\LightArmor2x1HalfSlopedTipPanel.mwm - Models\Cubes\Large\LightArmor2x1HalfSlopedPanel.mwm - Models\Cubes\Large\LightArmor2x1HalfSlopedTipPanelInv.mwm - Models\Cubes\Large\SolarPanelReskin.mwm - Models\Cubes\Large\SolarPanelReskinCorner.mwm - Models\Cubes\Large\SolarPanelReskinCornerInverted.mwm - Models\Cubes\Large\GirderStraight.mwm Models\Cubes\Large\SafeZoneBlock.mwm Models\Characters\Astronaut\SE_astronaut.mwm - Models\Cubes\Large\Armor\SlopePlate.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionTriangleTop.mwm - Models\Cubes\Large\Armor\SquarePlateCorner2BaseBack.mwm - Models\Cubes\Large\Armor\CornerTriangleLeftPlate.mwm - Models\Cubes\Large\Armor\CornerTriangleLeftPlateCorner2TipFront.mwm - Models\Cubes\Large\Armor\CornerTriangleRightPlate.mwm Models\Cubes\Large\Armor\SquarePlate.mwm - Models\Cubes\Large\Armor\SquarePlateSlope2BaseFront.mwm Models\Cubes\Large\Armor\SquarePlateSlope2TipBack.mwm - Models\Cubes\Large\Armor\SlopePlateSlope2Tip.mwm - Models\Cubes\Large\Armor\CornerTriangleRightPlateCorner2TipRight.mwm Models\Cubes\Large\Armor\CornerTriangleLeftPlateSlope2Tip.mwm - Models\Cubes\Large\Armor\CornerTriangleRightPlateCorner2Base.mwm - Models\Cubes\Large\Armor\CornerTriangleLeftPlateCorner2TipBottom.mwm - Models\Cubes\Large\Armor\SquarePlateSlope2BaseRight.mwm - Models\Cubes\Large\Armor\SlopedCornerTipRight.mwm - Models\Cubes\Large\Armor\InvFaceTrianglePlate.mwm - Models\Cubes\Large\Armor\SquarePlateSlope2BaseLeft.mwm - Models\Cubes\Large\Armor\CornerSquareINVLeft.mwm - Models\Cubes\Large\Armor\SlopePlateSlab.mwm + Models\Cubes\Large\Armor\SquarePlateSlope2BaseFront.mwm Models\Cubes\Large\Armor\CornerTriangleRightPlateSlope2Tip.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionBaseMirroredTriangleTop.mwm + Models\Cubes\Large\Armor\SlopePlateSlope2Tip.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlate.mwm + Models\Cubes\Large\Armor\SlopePlate.mwm + Models\Cubes\Large\Armor\CornerTriangleRightPlate.mwm Models\Cubes\Large\Armor\SquarePlateCenter.mwm - Models\Cubes\Large\Armor\SlopedCornerTipTriangle.mwm - Models\Cubes\Large\Armor\CornerSquareINVRight.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionBaseTriangleTop.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionBaseTriangle.mwm - Models\Cubes\Large\Armor\SlopedCornerTipLeft.mwm - Models\Cubes\Large\Armor\SquarePlateCorner2BaseBottom.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionBaseMirroredTriangle.mwm - Models\Cubes\Large\Armor\SlopePlateCorner2BaseTop.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionMirroredTop.mwm - Models\Cubes\Large\InteriorWallBottom.mwm - Models\Cubes\Large\Armor\SlopedCornerBaseTriangle.mwm - Models\Cubes\Large\Armor\SquarePlateSlope2BaseTop.mwm - Models\Cubes\Large\InteriorWallSide.mwm - Models\Cubes\Large\Armor\SlopedCornerTop.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionTipMirroredTriangleFront.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionTipTriangleTop.mwm - Models\Cubes\Large\Armor\FaceTrianglePlate.mwm - Models\Cubes\Large\Armor\SlopedCornerTipLeft_OtherBones.mwm - Models\Cubes\Large\Armor\SlopedCornerTipRight_OtherBones.mwm - Models\Cubes\Large\Armor\FaceTrianglePlateCorner2Tip.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionTipMirroredTriangleTop.mwm - Models\Cubes\Large\Armor\LightArmorSlopeTransitionTipTriangleFront.mwm - Models\Cubes\Large\InteriorWallTop.mwm - Models\Cubes\Large\Armor\CornerRoundTriangleRightPlate.mwm - Models\Cubes\Large\Armor\HalfSlopeCornerTriangle.mwm - Models\Cubes\Large\Armor\HalfSlopeInvertedRight.mwm - Models\Cubes\Large\Armor\CornerRoundTriangleLeftPlate.mwm Models\Cubes\Large\Armor\HalfSlopeInvertedLeft.mwm - Models\Cubes\Large\Armor\FaceRoundTrianglePlate.mwm Models\Cubes\Large\Armor\HalfSlopeInvertedDiagonal.mwm + Models\Cubes\Large\Armor\SquarePlateSlope2BaseLeft.mwm + Models\Cubes\Large\Armor\HalfSlopeInvertedRight.mwm + Models\Cubes\Large\Armor\SquarePlateSlope2BaseTop.mwm + Models\Cubes\Large\Armor\SquarePlateSlope2BaseRight.mwm + Models\Cubes\Large\Armor\InvFaceTrianglePlateInvCorner2Base.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlateInvCorner2BaseBottom.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlateInvCorner2BaseFront.mwm + Models\Cubes\Large\Armor\CornerTriangleRightPlateInvCorner2BaseRight.mwm + Models\Cubes\Large\Armor\InvFaceTrianglePlateInvCorner2Tip.mwm + Models\Cubes\Large\Armor\CornerTriangleRightPlateInvCorner2TipRight.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlateInvCorner2TipFront.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlateInvCorner2TipBottom.mwm + Models\Cubes\Large\Armor\HalfSlopedCornerBaseTop.mwm Models\Cubes\Large\Armor\HalfCornerDiagonal.mwm - Models\Cubes\Large\Armor\HalfSlopedCornerTop.mwm + Models\Cubes\Large\Armor\SquarePlateInvCorner2TipBack.mwm + Models\Cubes\Large\Armor\CornerRoundTriangleLeftPlate.mwm + Models\Cubes\Large\Armor\CornerRoundTriangleRightPlate.mwm + Models\Cubes\Large\Armor\SlopeRoundPlate.mwm + Models\Cubes\Large\Armor\FaceRoundTrianglePlate.mwm + Models\Cubes\Large\Armor\CornerTriangleLeftPlateCorner2TipFront.mwm + Models\Cubes\Large\Armor\SlopePlateSlab.mwm + Models\Cubes\Large\Armor\SlopedCornerBaseTriangle.mwm + Models\Cubes\Large\Armor\InvFaceTrianglePlate.mwm - - GasGiantSurface - + dd5139a0-a776-4b1d-a075-50e7e316b75b - - - \ No newline at end of file diff --git a/Sandbox_config.sbc b/Sandbox_config.sbc index 1ef6a3a..c00d2ae 100644 --- a/Sandbox_config.sbc +++ b/Sandbox_config.sbc @@ -502,5 +502,5 @@ RingsOfSaturnSubvival - 2024-10-16T07:35:12.5060922-05:00 + 2024-10-16T17:16:02.6105969-05:00 \ No newline at end of file diff --git a/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.cfg b/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.cfg index 9b79a15..4ccea83 100644 --- a/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.cfg +++ b/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.cfg @@ -6800,5 +6800,89 @@ false false + + MyObjectBuilder_InteriorTurret/Nerd_JammingBlock + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_TextPanel/Nerd_Radar + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_TextPanel/Nerd_Radar_SG + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_TextPanel/Nerd_Radar_Basic + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_TextPanel/EyeOfSauron + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_Beacon/LargeBlockIFFBeacon + 0 + 0 + 0 + true + true + true + false + false + false + + + MyObjectBuilder_Beacon/SmallBlockIFFBeacon + 0 + 0 + 0 + true + true + true + false + false + false + \ No newline at end of file diff --git a/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.log b/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.log index c12f95a..32a8478 100644 --- a/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.log +++ b/Storage/2053202808.sbm_BlockRestrictions/BlockRestrictions.log @@ -1,5 +1,5 @@ -[07:31:28.452] [T1] [DS=False] DEBUG | Log Started -[07:31:28.508] [T1] [DS=False] DEBUG | BeforeStart() - Checking Group Settings: +[16:51:52.887] [T1] [DS=False] DEBUG | Log Started +[16:51:52.960] [T1] [DS=False] DEBUG | BeforeStart() - Checking Group Settings: -> GroupName = UniqueNameHere ->-> Setting has 1 definitions: ->->-> Definition = (null)/(null) @@ -906,7 +906,7 @@ BeforeStart() - Checking Config for saved settings -> Setting = MyObjectBuilder_Collector/SC_RCS_Computer_small ->-> Setting added successfully -> Setting = MyObjectBuilder_SoundBlock/ChetsMagicMusicBox -->-> Setting added successfully +->-> Unable to retrieve MyCubeBlockDefinition -> Setting = MyObjectBuilder_UpgradeModule/FSDriveSmall ->-> Setting added successfully -> Setting = MyObjectBuilder_UpgradeModule/FSDriveLarge @@ -948,9 +948,9 @@ BeforeStart() - Checking Config for saved settings -> Setting = MyObjectBuilder_Decoy/LargeDecoy_MetalFoam ->-> Setting added successfully -> Setting = MyObjectBuilder_CameraBlock/DeepSpaceScannerL -->-> Setting added successfully +->-> Unable to retrieve MyCubeBlockDefinition -> Setting = MyObjectBuilder_CameraBlock/DeepSpaceScannerS -->-> Setting added successfully +->-> Unable to retrieve MyCubeBlockDefinition -> Setting = MyObjectBuilder_ConveyorSorter/DeltaV_MiningLaserTurret ->-> Unable to retrieve MyCubeBlockDefinition -> Setting = MyObjectBuilder_ConveyorSorter/FixedLaser diff --git a/Storage/3099943209.sbm_NpcProvider/NpcProviderExport.csv b/Storage/3099943209.sbm_NpcProvider/NpcProviderExport.csv new file mode 100644 index 0000000..97305f9 --- /dev/null +++ b/Storage/3099943209.sbm_NpcProvider/NpcProviderExport.csv @@ -0,0 +1,44 @@ +#REGION#HEADER# +Generatedtime +1729116419 +#REGION#ECONOMY# +Name,X,Y,Z,Faction,FreePort,Beneficiary +#REGION#TERRITORY# +Name,X,Y,Z,Radius,Faction +Moonlet,43106012.7488285,14873096.0799997,-87273540.0976501,71040,ECO-NPC +Moonlet,281928717.517679,-11299561.4164501,-41465799.7063574,70370,ECO-NPC +Moonlet,52681053.5842559,4952849.4491436,91981310.8486162,69965,ECO-NPC +Moonlet,202142264.242638,1497525.924888,-137834639.983036,53070,ECO-NPC +Moonlet,98954103.6539746,2235225.04904478,53787698.7111553,54175,ECO-NPC +Moonlet,159279015.723159,3117752.60688934,-84512676.5841042,62910,ECO-NPC +Moonlet,86684260.268818,2339502.40416814,76241838.3790011,58255,ECO-NPC +Moonlet,69949678.3913361,7282454.0616613,10851968.9841018,61190,ECO-NPC +Moonlet,28910285.325463,14363684.2821619,-48693849.2941639,73435,ECO-NPC +Moonlet,67574684.9490513,14338578.7820074,-125520538.538251,40725,ECO-NPC +Moonlet,209650387.846867,481187.916770579,-132712543.029145,29355,ECO-NPC +Moonlet,94859237.9170402,11410077.2115471,-121708029.065023,25085,ECO-NPC +Moonlet,254255133.049078,-14307369.9587367,74037540.0765781,44185,ECO-NPC +Moonlet,252005679.46785,-13614727.484262,64495181.7495385,22715,ECO-NPC +Moonlet,228897747.298325,-11614831.1958012,70901536.3193737,53820,ECO-NPC +#REGION#FACTIONS# +FactionTag,Economy,Military,Friendly,Neutral,Enemy,Color +ECO-NPC,102,100,,,ECO-NPC/GLF-NPC/Danger,0.00 -0.80 -0.45 +GLF-NPC,90,100,,,ECO-NPC/GLF-NPC/Danger,0.00 -0.80 -0.45 +#REGION#PLANETS# +EntityId,Planet,Owner,Control,SpaceSiege,PlanetSiege +2671854769088975014,Moonlet,ECO-NPC,100,True,True +7249104190597792057,Moonlet,ECO-NPC,100,True,True +8263615235011172880,Moonlet,ECO-NPC,100,True,True +8663975914586124475,Moonlet,ECO-NPC,100,True,True +-604249919129624045,Moonlet,ECO-NPC,100,True,True +-2374037726505752285,Moonlet,ECO-NPC,100,True,True +7017031810001225905,Moonlet,ECO-NPC,100,True,True +2687093118127834035,Moonlet,ECO-NPC,100,True,True +7855250210484038131,Moonlet,ECO-NPC,100,True,True +5154847214351026382,Moonlet,ECO-NPC,100,True,True +5253721918303354406,Moonlet,ECO-NPC,100,True,True +5803377973990722717,Moonlet,ECO-NPC,100,True,True +-2824036948706213207,Moonlet,ECO-NPC,100,True,True +-4835497880819590571,Moonlet,ECO-NPC,100,True,True +-125208969261570979,Moonlet,ECO-NPC,100,True,True +0,RealGasGiant,ECO-NPC,100,False,False diff --git a/thumb.jpg b/thumb.jpg index 12e1ad85a06fd2574d43eb538bbd3b073cef95b1..475dc32daa8350bf5d84adcc333b8e72425c6648 100644 GIT binary patch literal 34030 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 ZZX$P!(Gp&0uY^%x(NAoQ^Z)(*e*n^}mKp#6 literal 29585 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 E*=XyxTL1t6