howardxu23 HeavyIndustry Frostbite DecorativeBlocks2 DecorativeBlocks Warfare2 SparksOfTheFuture 136426993239255852 CastShadows InScene 0.710969031 0.06968804 0.07003716 0.6962481 MyModStorageComponent 29ffd684-13d7-4045-bf76-cd48bf80e36a CAAQABiAgAEiACgAMAA6AEIASgBVAAAAAFobCQAAAAAAAAAAIQAAAAAAAAAAOQAAAAAAAAAAYhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAABqCgiAh9bR88sBEARyAHgAgAEAiAEBkAEAmQEAAAAAAAAAAKgBALABALoBGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAADwv8IBGwkAAAAAAAAAACEAAAAAAADwPzkAAAAAAAAAAMoBCgiAh9bR88sBEATSAU4IABAAGAAgACgAMAE4AEAASABQAFgAYABoAHAAeACAAQCIAQCQAQCYAQCgAQCoAQCwAQC4AQDAAQDIAQDQAQDYAQDgAQDoAQDwAQD4AQDaAU4IABAAGAAgACgAMAA4AEAASABQAFgAYABoAHAAeACAAQCIAQCQAQCYAQCgAQCoAQGwAQG4AQHAAQHIAQHQAQDYAQDgAQDoAQDwAQD4AQDiAQCAAgCKAgCSAgCYAgCiAgQIARAP 75bbb4f5-4fb9-4230-beef-bb79c9811502 GAA= 75bbb4f5-4fb9-4230-beef-bb79c9811503 Eg0IABAAIAAtAAAAADAA Large XL_1x_Concrete 87108983922357255 Concrete_Armor 144115188075855996 AQD_LG_ConveyorX 133971759920623178 144115188075855996 XL_1x_Concrete 116593323057613755 Concrete_Armor 144115188075855996 XL_1x_Concrete 131255759130302481 Concrete_Armor 144115188075855996 BetonRamp 109048629882036547 Concrete_Armor 144115188075855996 ConveyorTubeCurved 112329217664832719 144115188075855996 LargeRefineryIndustrial 136639224469972495 Clean_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 0 7.5 9223372036854.775807 2147483647 CanReceive false 0 7.5 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 50 60 false false false false true 2 true 97040 Beton 104800816518036054 Concrete_Armor 144115188075855996 Beton 125586883740967644 Concrete_Armor 144115188075855996 Beton 81224676363532424 144115188075855996 Beton 87606228281358857 Concrete_Armor 144115188075855996 LargeBlockConveyor 92027687322291900 Concrete_Armor 144115188075855996 Beton 115569936472987104 Concrete_Armor 144115188075855996 Beton 100266439646943783 144115188075855996 Beton 113980328766847577 144115188075855996 Beton 116269863034225130 144115188075855996 ConveyorTubeT 126503634208630961 144115188075855996 Beton 74178761538203615 Concrete_Armor 144115188075855996 Beton 142698381298603049 Concrete_Armor 144115188075855996 Beton 76436228316565569 Concrete_Armor 144115188075855996 Beton 99872397703542780 Concrete_Armor 144115188075855996 XL_1x_Concrete 103240381913634041 Concrete_Armor 144115188075855996 Beton 83781404128885242 Concrete_Armor 144115188075855996 Beton 79240324761967917 Concrete_Armor 144115188075855996 Beton 79203924502857439 Concrete_Armor 144115188075855996 Beton 97786747407919410 Concrete_Armor 144115188075855996 Beton 96775356836635938 Concrete_Armor 144115188075855996 Beton 90793815697605197 Concrete_Armor 144115188075855996 Beton 131930371455590394 Concrete_Armor 144115188075855996 ConveyorTube 86644442551585439 144115188075855996 Beton 118072435952048514 Concrete_Armor 144115188075855996 Beton 133292619062737391 Concrete_Armor 144115188075855996 Beton 108101463831250983 Concrete_Armor 144115188075855996 Beton 120474327144508560 Concrete_Armor 144115188075855996 BetonRamp 86413786986753807 Concrete_Armor 144115188075855996 Beton 119215967717729147 Concrete_Armor 144115188075855996 Beton 76503426895014832 Concrete_Armor 144115188075855996 Beton 93310576476898136 Concrete_Armor 144115188075855996 Beton 125875944777576652 Concrete_Armor 144115188075855996 Beton 81347015911136084 Concrete_Armor 144115188075855996 Beton 73337238077959429 Concrete_Armor 144115188075855996 Beton 73921603910276768 Concrete_Armor 144115188075855996 Beton 112986151399354968 Concrete_Armor 144115188075855996 Beton 127787301266523819 Concrete_Armor 144115188075855996 Beton 79080241587202849 Concrete_Armor 144115188075855996 Beton 132893468981655787 Concrete_Armor 144115188075855996 Beton 123785549809643988 Concrete_Armor 144115188075855996 Beton 100039889242616924 Concrete_Armor 144115188075855996 Beton 138056950452450512 Concrete_Armor 144115188075855996 Beton 114179654019871066 Concrete_Armor 144115188075855996 Beton 75023268666742573 Concrete_Armor 144115188075855996 Beton 108449535276085748 Concrete_Armor 144115188075855996 Beton 118279572282866324 Concrete_Armor 144115188075855996 Beton 131273273909597446 Concrete_Armor 144115188075855996 Beton 99208537554493791 Clean_Armor 144115188075855996 Beton 80449389418390249 Concrete_Armor 144115188075855996 Beton 136975555756223727 Concrete_Armor 144115188075855996 Beton 72672937993857907 Concrete_Armor 144115188075855996 Beton 134785463180032030 Concrete_Armor 144115188075855996 Beton 76145060743861146 Concrete_Armor 144115188075855996 Beton 84164996986819127 Concrete_Armor 144115188075855996 Beton 117219536858818363 Concrete_Armor 144115188075855996 Beton 100759335008672543 Concrete_Armor 144115188075855996 Beton 103693402796040717 Concrete_Armor 144115188075855996 ConveyorTubeDuct 140902706414269021 144115188075855996 LargeLCDPanel 113336172581355340 144115188075855996 144115188075855996 Faction MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 Remove a line to show this item on the LCD again! Add an amount to manage the item without being on the LCD. Example: '-SteelPlate=1000' -HydrogenBottle=1 -AngleGrinderItem=0 -HandDrillItem=0 -WelderItem=0 -AutomaticRifleGun_Mag_20rd=0 -AutomaticRifleItem=0 -NATO_25x184mm=0 -Welder2Item=0 -AngleGrinder4Item=1 -Welder4Item=1 -AWE85mmAmmoMagazine=0 -LargeCalibreAmmo=0 LCD Autocrafting false true true true 1 true Title READ_AND_WRITE_FACTION 0 0.6 IIM Autocrafting ============ Component Current | Wanted Ace_400mmShell 134 [A:166] < 300 AutocannonClip 293 > 0 BulletproofGlass 156 [A:44] < 200 C100mmAmmo 100 = 100 C30Ammo 398 [A:2] < 400 CODEXAmmoMagazine 200 = 200 Computer 4743 [A:257] < 5000 Construction 12305 > 5000 Detector 20 = 20 Display 43 > 10 Girder 4838 [A:30] < 5000 GoldPlatedPlate 4 > 0 GravityGenerator 100 > 30 HEShell100mm 400 = 400 InteriorPlate 12933 > 4000 LargeTube 1380 > 500 Magnetron_Component 2 = 2 Medical 3 = 3 MediumCalibreAmmo 3257 > 0 MetalGrid 15131 > 1000 Missile200mm 2595 > 1 Motor 341 [A:17] < 500 OxygenBottle 1 = 1 PlatinumPlatedPlate 1 = 1 PowerCell 141 [A:59] < 200 RadioCommunication 37 > 15 Reactor 1573 > 0 SandGranulat 4513 [A:81142] < 100000 Shield 102 > 100 ShieldComponent 18 > 15 SmallTube 11333 > 2000 SolarCell 30 = 30 SpaceExtensionDeviceMK1 381 [A:19] < 400 SteelPlate 84993 > 10000 Superconductor 1174 > 1000 TBR102_APBC_T_Magazine 0 = 0 Thrust 2664 > 300 UpgradeAIModule 0 = 0 UpgradeAIModuleDual 0 = 0 Zement 11277 [A:81325] < 100000 --- Modifiers (append after wanted amount): 'A' - Assemble only 'D' - Disassemble only 'P' - Always queue first (priority) 'H' - Hide and manage in background 'I' - Hide and ignore 'Y#' - Yield modifier. Set # to the itemamount, one craft yields Craft item manually once to show up here NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 TEXT_AND_IMAGE 2 1 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 Beton 81412812016012850 Concrete_Armor 144115188075855996 Beton 81756175575471725 144115188075855996 BetonRamp 105778223469184567 144115188075855996 Beton 103409133377938470 144115188075855996 Beton 101334299990822160 144115188075855996 Beton 94004088481937553 144115188075855996 Beton 102660079442596572 144115188075855996 Beton 85299796960991447 144115188075855996 Beton 131967718129399654 144115188075855996 ConveyorTube 94587026506562014 144115188075855996 ConveyorTubeT 115422985409113494 144115188075855996 ConveyorTube 102112461610753697 144115188075855996 Beton 137233401723116105 144115188075855996 Beton 143878170616108605 144115188075855996 SmallFloodLight_LB 104483089740928904 144115188075855996 false true true true 3 true 7.5 60 1.5 5 0 10 0 0.5 0.08 Beton 105178615806661725 144115188075855996 Beton 81362774029681231 144115188075855996 Beton 137227357625726149 144115188075855996 WCIS_Reinforced_Conveyor_Tube_5x 122830548444947743 144115188075855996 Beton 116836774770421991 144115188075855996 Beton 129182921142790433 144115188075855996 Beton 128198054800196085 144115188075855996 Beton 98178737944831660 144115188075855996 Beton 115871119460066062 144115188075855996 Beton 92951356421123220 144115188075855996 Beton 117963431678650331 144115188075855996 Beton 110584910029000424 144115188075855996 AzimuthShippingContainer 94143270608688397 144115188075855996 144115188075855996 Faction MyInventoryBase 1 HandDrillItem 0 1 AngleGrinderItem 1 1 WelderItem 2 1 HandDrillItem 3 1 HandDrillItem 4 1 WelderItem 5 1 HandDrillItem 6 1 AngleGrinderItem 7 1 WelderItem 8 1 HandDrillItem 9 1 AngleGrinderItem 10 293 AutocannonClip 0 11 398 C30Ammo 0 12 240 AWE85mmAmmoMagazine 0 13 400 HEShell100mm 0 14 2595 Missile200mm 0 15 1 AngleGrinderItem 16 1 HandDrillItem 17 1 WelderItem 18 3228 MediumCalibreAmmo 0 19 1 WelderItem Welder 78170475648686637 None 20 1 HandDrillItem 21 1 AngleGrinderItem AngleGrinder 79873435381051490 None 22 1 WelderItem Welder 81300431313026316 None 23 3655 SpaceCredit 24 1 AngleGrinderItem 25 1 WelderItem 26 1 HandDrillItem 27 100 C100mmAmmo 0 28 1 PhysicalPaintGun PaintGun 137881769207515010 None 29 1 10 PaintGunMag 0 29 1 PaintGunMag 0 30 1 WelderItem Welder 133223669700528910 None 31 1 AngleGrinderItem 32 372 LargeCalibreAmmo 0 33 1 AngleGrinderItem AngleGrinder 0 None 34 1 WelderItem Welder 0 None 35 1 HandDrillItem 36 6 ARYX_AWE_VECTOR_MINIGUN_AMMO 0 37 1 AngleGrinderItem 38 1 HandDrillItem 39 1 WelderItem 40 1 AngleGrinderItem AngleGrinder 97466279532910606 None 41 1 HandDrillItem 42 1 WelderItem Welder 124343926094412111 None 43 7231 NATO_25x184mm 0 44 1 WelderItem Welder 141228160184490275 None 45 1 HandDrillItem 46 1 AngleGrinderItem AngleGrinder 118737840241185327 None 47 1 WelderItem 48 1 HandDrillItem 49 1 AngleGrinderItem AngleGrinder 72090454339797611 None 50 1 HandDrillItem 51 1 WelderItem 52 1 AngleGrinderItem AngleGrinder 133501787199457493 None 53 1 AngleGrinderItem AngleGrinder 87953693544240307 None 54 1 WelderItem 55 1 HandDrillItem 56 1 WelderItem 57 1 HandDrillItem 58 1 AngleGrinderItem 59 1 WelderItem 60 1 HandDrillItem 61 1 AngleGrinderItem 62 1 Welder4Item 63 1 AngleGrinder4Item 64 134 Ace_400mmShell 0 65 326 80 9223372036854.775807 2147483647 CanReceive CanSend false Azimuth Shipping Container Ammo Tools (55.8%) false false false true 2 Beton 77022521572496486 Concrete_Armor 144115188075855996 ARYX_FW_NovaBlaster 130782634143090267 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzWAQoJCAEQBh0AABZEEsgBCAISPi0AgLtEMjcIABAAGAAgACgBMABAAUgAUABYAHgAgAEAkAEAoAEBsAEAwAEA0AF42AEA6AEA8AEA+AEBkAIAGkQSCQ0AAAAAEAAgNBgAIP2AgICAgICAAjAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgqbv/gQEyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoRCAIgASgAMAE4AEDxAkgAUAAIIg== false true true true 1 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 Energy 0 false true false true Beton 93402254830907456 Concrete_Armor 144115188075855996 LargeBlockOffsetDoor 98235432291437476 144115188075855996 144115188075855996 Faction false false false true 3 true false 0 RealBlockDoorSmallOpen RealBlockDoorSmallClose Beton 135209206324290521 Concrete_Armor 144115188075855996 BetonRamp 87721227517123325 Concrete_Armor 144115188075855996 LargeBlockConveyor 103918194519549956 Concrete_Armor 144115188075855996 Beton 132612698849563720 144115188075855996 Beton 137156721373707817 144115188075855996 Beton 123406335409595856 144115188075855996 ConveyorTubeT 96897726153337684 144115188075855996 WCIS_Reinforced_Conveyor_Tube_9x 124368761229721842 144115188075855996 Beton 79797728526471298 Concrete_Armor 144115188075855996 ConveyorTubeCurved 83862032046958016 144115188075855996 BetonRamp 100457124159792030 Concrete_Armor 144115188075855996 EventControllerLarge 83647574288261670 Battered_Armor 144115188075855996 144115188075855996 Faction MyEventAngleChanged 0 MyEventSurfaceHeight 1 MyEventGridSpeedChanged 200 MyEventNaturalGravityChanged 1 MyEventDistanceToLockedTarget 2500 WeatherEvent WeatherEvent WeatherEvent 0 false false false true 1 true Character 0 OnOff_Off 113841174001822607 0.99 false 1 99703410957108332 false Beton 117612719084692887 Concrete_Armor 144115188075855996 Beton 123722237639969451 Concrete_Armor 144115188075855996 EventControllerLarge 81576005239199484 Battered_Armor 144115188075855996 144115188075855996 Faction MyEventAngleChanged 0 MyEventSurfaceHeight 1 MyEventGridSpeedChanged 200 MyEventNaturalGravityChanged 1 MyEventDistanceToLockedTarget 2500 WeatherEvent WeatherEvent WeatherEvent 0 false false false true 2 true Character 0 OnOff_On 113841174001822607 0.05 false 1 99703410957108332 true Beton 142024685982375232 144115188075855996 WindowWallLeft 131187206071567565 144115188075855996 XL_1x_Concrete 79983835632984482 Concrete_Armor 144115188075855996 Beton 76779960422211188 Concrete_Armor 144115188075855996 Beton 138086047334970692 Concrete_Armor 144115188075855996 ARYX_FW_NovaBlaster 108674170021979089 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzWAQoJCAEQBR0AABZEEsgBCAISPi0AgLtEMjcIABAAGAAgACgBMABAAUgAUABYAHgAgAEAkAEAoAEBsAEAwAEA0AF42AEA6AEA8AEA+AEBkAIAGkQSCQ0AAAAAEAAgNRgAIPyAgICAgICAAjAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgu4yO3gYyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoRCAIgASgAMAE4AECJAUgAUAAIIg== false true true true 2 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 Energy 0 false true false true Beton 109830369224418947 Concrete_Armor 144115188075855996 Beton 125359431328746945 Concrete_Armor 144115188075855996 AQD_LG_ConveyorXArmored 75588385105523123 144115188075855996 Beton 103064630386857079 Concrete_Armor 144115188075855996 Beton 117797939448376091 Concrete_Armor 144115188075855996 Beton 97905996697353518 Concrete_Armor 144115188075855996 Beton 120796442179691750 Concrete_Armor 144115188075855996 Beton 97754372885716442 Concrete_Armor 144115188075855996 Beton 102647411221543646 Concrete_Armor 144115188075855996 Beton 77073589675510670 Concrete_Armor 144115188075855996 Beton 118233677977463097 Concrete_Armor 144115188075855996 Beton 143010627667172926 Concrete_Armor 144115188075855996 Beton 84874445413149794 Concrete_Armor 144115188075855996 Beton 140507666514644471 Concrete_Armor 144115188075855996 Beton 121881918006719755 Concrete_Armor 144115188075855996 Beton 129178834394416534 Concrete_Armor 144115188075855996 Beton 128159582544218190 Concrete_Armor 144115188075855996 Beton 142203381520342396 Concrete_Armor 144115188075855996 BetonRamp 139207783985851691 144115188075855996 BetonRamp 126387714154793275 Dust_Armor 144115188075855996 BetonRamp 113393813982042179 144115188075855996 Beton 115361450820609453 144115188075855996 Beton 125493297765188619 Concrete_Armor 144115188075855996 XL_1x_Concrete 125240034849504346 Concrete_Armor 144115188075855996 XL_1x_Concrete 143067447440005723 Concrete_Armor 144115188075855996 XL_1x_Concrete 125562720765654939 Concrete_Armor 144115188075855996 XL_1x_Concrete 111030919431375599 Concrete_Armor 144115188075855996 Beton 114179877356724891 Concrete_Armor 144115188075855996 Beton 93371911592769513 Concrete_Armor 144115188075855996 Beton 80120943203036296 Concrete_Armor 144115188075855996 Beton 103385048366807805 Concrete_Armor 144115188075855996 Beton 95040611274729935 Concrete_Armor 144115188075855996 Beton 81197396820658209 144115188075855996 Beton 133354024503543422 Concrete_Armor 144115188075855996 Beton 114062960528725062 144115188075855996 Beton 132179388488128264 144115188075855996 Beton 119892354372254043 Concrete_Armor 144115188075855996 BetonRamp 80242792938128985 Concrete_Armor 144115188075855996 ConveyorTubeDuct 93956901505355599 Concrete_Armor 144115188075855996 Beton 126388865943573235 144115188075855996 Beton 108032648382711088 144115188075855996 Beton 87666672905409387 144115188075855996 Beton 113710582645484410 144115188075855996 Beton 109115327313788523 144115188075855996 Beton 138501169213339141 144115188075855996 Beton 109894686011693007 144115188075855996 Beton 124301153533439322 144115188075855996 Beton 109383511456313713 Concrete_Armor 144115188075855996 LargeBlockBatteryBlock 135344956810975055 144115188075855997 144115188075855996 Faction false true true true 11 true 2.98357964 true 0 false false 0 138232302992247167 144115188075855996 144115188075855996 Faction MyInventoryBase 107472.841554 Ice 0 2 4 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame10 60 300 false false false false true 5 true Beton 78230383892207416 144115188075855996 Beton 127942933837953340 Dust_Armor 144115188075855996 Beton 142177370959948435 Dust_Armor 144115188075855996 Beton 119807485440040013 Dust_Armor 144115188075855996 Beton 118749528410596486 Dust_Armor 144115188075855996 Beton 72125668383289793 Concrete_Armor 144115188075855996 Beton 103054956617081475 Concrete_Armor 144115188075855996 Beton 82229000035108509 Dust_Armor 144115188075855996 XL_1x_Concrete 81525917190166032 Concrete_Armor 144115188075855996 Beton 115174878600677381 144115188075855996 Beton 101549945331327772 Concrete_Armor 144115188075855996 XL_1x_Concrete 111080971281108278 Concrete_Armor 144115188075855996 XL_1x_Concrete 112372434798809933 Concrete_Armor 144115188075855996 XL_1x_Concrete 83403545371201536 Concrete_Armor 144115188075855996 XL_1x_Concrete 104711657898722413 Concrete_Armor 144115188075855996 Beton 81653162314871854 Concrete_Armor 144115188075855996 XL_1x_Concrete 138844629122509630 Concrete_Armor 144115188075855996 Beton 94929546102542227 144115188075855996 Beton 138720701797176805 Concrete_Armor 144115188075855996 BetonRamp 126445664403222815 Dust_Armor 144115188075855996 BetonRamp 142648979302677166 Dust_Armor 144115188075855996 LargeProductivityModule 98273112912560982 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 4 true Beton 117894554609297762 Dust_Armor 144115188075855996 Beton 87959972498802558 Concrete_Armor 144115188075855996 Beton 101514994216351950 144115188075855996 BetonRamp 102115723948750107 Dust_Armor 144115188075855996 Beton 103504485586515731 144115188075855996 Beton 73737153719074775 Dust_Armor 144115188075855996 Beton 113693340541961930 Dust_Armor 144115188075855996 BetonRamp 122696585685325376 Dust_Armor 144115188075855996 Beton 112933540469883164 Concrete_Armor 144115188075855996 Beton 112152916988120776 Concrete_Armor 144115188075855996 Beton 107737252879145840 Dust_Armor 144115188075855996 Beton 139448630707703716 Dust_Armor 144115188075855996 Beton 99953334866769867 144115188075855996 Beton 90275757336509749 Concrete_Armor 144115188075855996 Beton 89726706345298120 Concrete_Armor 144115188075855996 Beton 93202818156382147 Concrete_Armor 144115188075855996 LargeBlockBed 80295788039482079 144115188075855996 MyInventoryBase 0 0.4 9223372036854.775807 2147483647 CanSend false false false false false 1 false Character false Character Character false -0.000305180467 0.7803769 0.000152590233 0.625309348 true 0 0 false 0 BetonRamp 132240334581751479 Concrete_Armor 144115188075855996 Beton 141903894143430927 144115188075855996 Beton 79164653582122809 144115188075855996 Beton 87042475772838642 Concrete_Armor 144115188075855996 Beton 105841242403978923 144115188075855996 XL_1x_Concrete 109574539361672177 Concrete_Armor 144115188075855996 Beton 108048716036442033 Concrete_Armor 144115188075855996 BetonRamp 89559617449075524 Dust_Armor 144115188075855996 OparoseShipyardWelder2125 142531966918862011 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 23.4375 9223372036854.775807 2147483647 CanSend false false true true true 5 false ConveyorTube 116972830751298310 144115188075855996 AQD_LG_ConveyorStraightArmored 128102393122788861 144115188075855996 Beton 140482132825119423 Concrete_Armor 144115188075855996 Beton 119605915623833884 Concrete_Armor 144115188075855996 ConveyorTube 93737279672195084 144115188075855996 BetonRamp 99248752453458692 Concrete_Armor 144115188075855996 Beton 103742269854222173 Concrete_Armor 144115188075855996 Beton 123371560808319392 Concrete_Armor 144115188075855996 Beton 89964282729964909 Concrete_Armor 144115188075855996 Beton 111756235080246093 Concrete_Armor 144115188075855996 Beton 91533318309555424 144115188075855996 Beton 138032311886684967 Concrete_Armor 144115188075855996 Beton 114144715451749093 Concrete_Armor 144115188075855996 Beton 88747276056994120 Concrete_Armor 144115188075855996 ConveyorTube 143635086347655932 144115188075855996 BetonRamp 76623959892827231 Concrete_Armor 144115188075855996 Beton 107800021449092537 Concrete_Armor 144115188075855996 Beton 93974197702833558 Concrete_Armor 144115188075855996 Beton 98322018277650920 144115188075855996 Beton 119538714777043283 Concrete_Armor 144115188075855996 ConveyorTube 75392457896771088 144115188075855996 LargeHydrogenEngine 86428387694128732 Battered_Armor 144115188075855996 144115188075855996 Faction false true true true 4 true 100006.141 Beton 112381285959129038 Concrete_Armor 144115188075855996 XL_1x_Concrete 109942135998818128 Concrete_Armor 144115188075855996 ConveyorTubeCurved 131112564521177741 144115188075855996 Beton 103365408847890662 Concrete_Armor 144115188075855996 Beton 134972409522990862 Concrete_Armor 144115188075855996 Beton 87187743283561647 Dust_Armor 144115188075855996 Beton 95535659495070760 Concrete_Armor 144115188075855996 Beton 81033801450254085 Concrete_Armor 144115188075855996 Beton 87409517007784248 Concrete_Armor 144115188075855996 Offline 91318421754089778 144115188075855997 144115188075855996 Faction false true true true 2 true Beton 78627881152196051 144115188075855996 Beton 143473377187076187 Concrete_Armor 144115188075855996 Beton 91508517393603109 Concrete_Armor 144115188075855996 Beton 99476450992033253 Dust_Armor 144115188075855996 XL_1xPlatform_Concrete 104129657323067307 Concrete_Armor 144115188075855996 LargeBlockBatteryBlockWarfare2 126511540487624625 144115188075855996 144115188075855996 Faction false false false true 1 true 2.979624 true 0 false false 0 XL_1x_Concrete 117729393727852307 Concrete_Armor 144115188075855996 Beton 96540909453764199 144115188075855996 Beton 102415544645672630 Concrete_Armor 144115188075855996 Beton 75117925392992937 Concrete_Armor 144115188075855996 Beton 96226667781450699 Concrete_Armor 144115188075855996 Beton 102838050437700213 Concrete_Armor 144115188075855996 LG_DeuteriumProcessor 77849134982221121 SciFi_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase 107472.633132 Ice 0 1 4 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame10 50 300 false false true true true 2 true Beton 98998871482143203 Concrete_Armor 144115188075855996 Beton 94109339237406939 Concrete_Armor 144115188075855996 Beton 111167359183072264 Concrete_Armor 144115188075855996 Beton 76514118888757724 Concrete_Armor 144115188075855996 PassageSciFiProgrammableBlock 105656479253253974 144115188075855996 144115188075855996 Faction MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 ship_mode; itemID;blueprintID MyObjectBuilder_Ore/Scrap;noBP MyObjectBuilder_Ore/Ice;noBP MyObjectBuilder_Component/SteelPlate;MyObjectBuilder_BlueprintDefinition/SteelPlate MyObjectBuilder_Component/Computer;MyObjectBuilder_BlueprintDefinition/ComputerComponent MyObjectBuilder_Component/MetalGrid;MyObjectBuilder_BlueprintDefinition/MetalGrid MyObjectBuilder_Component/LargeTube;MyObjectBuilder_BlueprintDefinition/LargeTube MyObjectBuilder_Component/Display;MyObjectBuilder_BlueprintDefinition/Display MyObjectBuilder_AmmoMagazine/NATO_5p56x45mm;noBP MyObjectBuilder_GasContainerObject/HydrogenBottle;MyObjectBuilder_BlueprintDefinition/HydrogenBottle MyObjectBuilder_Component/BulletproofGlass;MyObjectBuilder_BlueprintDefinition/BulletproofGlass MyObjectBuilder_Ore/Stone;noBP MyObjectBuilder_Ingot/Nickel;noBP MyObjectBuilder_Ingot/Silicon;noBP MyObjectBuilder_Ingot/Iron;noBP MyObjectBuilder_Ingot/Stone;noBP MyObjectBuilder_Component/Construction;MyObjectBuilder_BlueprintDefinition/ConstructionComponent MyObjectBuilder_Component/Motor;MyObjectBuilder_BlueprintDefinition/MotorComponent MyObjectBuilder_Component/SmallTube;MyObjectBuilder_BlueprintDefinition/SmallTube MyObjectBuilder_Component/InteriorPlate;MyObjectBuilder_BlueprintDefinition/InteriorPlate MyObjectBuilder_Component/Detector;MyObjectBuilder_BlueprintDefinition/DetectorComponent MyObjectBuilder_Component/Girder;MyObjectBuilder_BlueprintDefinition/GirderComponent MyObjectBuilder_Component/PowerCell;MyObjectBuilder_BlueprintDefinition/PowerCell MyObjectBuilder_Component/Zement;MyObjectBuilder_BlueprintDefinition/clsZement MyObjectBuilder_Component/SandGranulat;MyObjectBuilder_BlueprintDefinition/clsSandGranulat MyObjectBuilder_PhysicalGunObject/AngleGrinderItem;MyObjectBuilder_BlueprintDefinition/AngleGrinder MyObjectBuilder_OxygenContainerObject/OxygenBottle;MyObjectBuilder_BlueprintDefinition/OxygenBottle MyObjectBuilder_PhysicalGunObject/HandDrillItem;MyObjectBuilder_BlueprintDefinition/HandDrill MyObjectBuilder_PhysicalGunObject/WelderItem;MyObjectBuilder_BlueprintDefinition/Welder MyObjectBuilder_AmmoMagazine/CODEXAmmoMagazine;MyObjectBuilder_BlueprintDefinition/25mmCODEXBP MyObjectBuilder_Ore/Cobalt;noBP MyObjectBuilder_Ingot/Cobalt;noBP MyObjectBuilder_PhysicalGunObject/Welder2Item;MyObjectBuilder_BlueprintDefinition/Welder2 MyObjectBuilder_Component/RadioCommunication;MyObjectBuilder_BlueprintDefinition/RadioCommunicationComponent MyObjectBuilder_Component/SolarCell;MyObjectBuilder_BlueprintDefinition/SolarCell MyObjectBuilder_Ingot/Uranium;noBP MyObjectBuilder_Ingot/Magnesium;noBP MyObjectBuilder_AmmoMagazine/NATO_25x184mm;MyObjectBuilder_BlueprintDefinition/NATO_25x184mmMagazine MyObjectBuilder_Ingot/Gold;noBP MyObjectBuilder_Ingot/Platinum;noBP MyObjectBuilder_Component/Reactor;MyObjectBuilder_BlueprintDefinition/ReactorComponent MyObjectBuilder_Ingot/Silver;noBP MyObjectBuilder_AmmoMagazine/AutomaticRifleGun_Mag_20rd;MyObjectBuilder_BlueprintDefinition/AutomaticRifleGun_Mag_20rd MyObjectBuilder_PhysicalGunObject/AutomaticRifleItem;MyObjectBuilder_BlueprintDefinition/AutomaticRifle MyObjectBuilder_Ore/Gold;noBP MyObjectBuilder_Component/Superconductor;MyObjectBuilder_BlueprintDefinition/Superconductor MyObjectBuilder_AmmoMagazine/C30Ammo;MyObjectBuilder_BlueprintDefinition/C30Ammo MyObjectBuilder_AmmoMagazine/AutocannonClip;MyObjectBuilder_BlueprintDefinition/AutocannonClip MyObjectBuilder_Component/AiEnabled_Comp_RepairBotMaterial;noBP MyObjectBuilder_Component/Thrust;MyObjectBuilder_BlueprintDefinition/ThrustComponent MyObjectBuilder_AmmoMagazine/AWE85mmAmmoMagazine;MyObjectBuilder_BlueprintDefinition/AWE85mmAmmoBP MyObjectBuilder_AmmoMagazine/TBR102_APBC_T_Magazine;MyObjectBuilder_BlueprintDefinition/TBR102_APBC_T_Magazine MyObjectBuilder_AmmoMagazine/HEShell100mm;MyObjectBuilder_BlueprintDefinition/HEShell100mm_Blueprint MyObjectBuilder_Component/Shield;MyObjectBuilder_BlueprintDefinition/ShieldComponent MyObjectBuilder_PhysicalGunObject/AngleGrinder4Item;MyObjectBuilder_BlueprintDefinition/AngleGrinder4 MyObjectBuilder_Component/SpaceExtensionDeviceMK1;MyObjectBuilder_BlueprintDefinition/SpaceExtensionDeviceMK1 MyObjectBuilder_Component/UpgradeAIModuleDual;MyObjectBuilder_BlueprintDefinition/UpgradeAIModuleDual MyObjectBuilder_PhysicalGunObject/Welder4Item;MyObjectBuilder_BlueprintDefinition/Welder4 MyObjectBuilder_Component/GravityGenerator;MyObjectBuilder_BlueprintDefinition/GravityGeneratorComponent MyObjectBuilder_AmmoMagazine/Missile200mm;MyObjectBuilder_BlueprintDefinition/Missile200mm MyObjectBuilder_AmmoMagazine/MediumCalibreAmmo;MyObjectBuilder_BlueprintDefinition/MediumCalibreAmmo MyObjectBuilder_Component/UpgradeAIModule;MyObjectBuilder_BlueprintDefinition/UpgradeAIModule MyObjectBuilder_Component/PlatinumPlatedPlate;MyObjectBuilder_BlueprintDefinition/PlatinumPlatedPlate MyObjectBuilder_AmmoMagazine/C100mmAmmo;MyObjectBuilder_BlueprintDefinition/C100mmAmmo MyObjectBuilder_Component/C100ShellCasing;noBP MyObjectBuilder_Component/AiEnabled_Comp_CrewBotMaterial;noBP MyObjectBuilder_Component/Magnetron_Component;MyObjectBuilder_BlueprintDefinition/Magnetron_Component MyObjectBuilder_Ingot/DeuteriumContainer;noBP MyObjectBuilder_PhysicalObject/SpaceCredit;noBP MyObjectBuilder_AmmoMagazine/PaintGunMag;noBP MyObjectBuilder_PhysicalGunObject/PhysicalPaintGun;noBP MyObjectBuilder_Component/GoldPlatedPlate;MyObjectBuilder_BlueprintDefinition/GoldPlatedPlate MyObjectBuilder_Component/ShieldComponent;MyObjectBuilder_BlueprintDefinition/ShieldComponentBP MyObjectBuilder_AmmoMagazine/LargeCalibreAmmo;MyObjectBuilder_BlueprintDefinition/LargeCalibreAmmo MyObjectBuilder_Component/Medical;MyObjectBuilder_BlueprintDefinition/MedicalComponent MyObjectBuilder_AmmoMagazine/ARYX_AWE_VECTOR_MINIGUN_AMMO;noBP MyObjectBuilder_Component/MilitaryPlateAWE;noBP MyObjectBuilder_Component/ElectromagnetAWE;noBP MyObjectBuilder_AmmoMagazine/Ace_400mmShell;MyObjectBuilder_BlueprintDefinition/Ace_400mmShell MyObjectBuilder_PhysicalGunObject/Ven_RWR_M8_Item;noBP Programmable Block ISY false true true true 1 true 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 // Isy's Inventory Manager // =================== // Version: 2.9.1 // Date: 2023-07-25 // Guide: http://steamcommunity.com/sharedfiles/filedetails/?id=1226261795 // ======================================================================================= // --- Configuration --- // ======================================================================================= // --- Sorting --- // ======================================================================================= // Define the keyword a cargo container has to contain in order to be recognized as a container of the given type. const string oreContainerKeyword = "Ores"; const string ingotContainerKeyword = "Ingots"; const string componentContainerKeyword = "Comps"; const string toolContainerKeyword = "Tools"; const string ammoContainerKeyword = "Ammo"; const string bottleContainerKeyword = "Bottles"; // Keyword a block name has to contain to be skipped by the sorting (= no items will be taken out). // This list is expandable - just separate the entries with a ",". But it's also language specific, so adjust it if needed. // Default: string[] lockedContainerKeywords = { "Locked", "Seat", "Control Station" }; string[] lockedContainerKeywords = { "Locked", "Seat", "Control Station" }; // Keyword a block name has to contain to be excluded from item counting (used by autocrafting and inventory panels) // This list is expandable - just separate the entries with a ",". But it's also language specific, so adjust it if needed. // Default: string[] hiddenContainerKeywords = { "Hidden" }; string[] hiddenContainerKeywords = { "Hidden" }; // Treat inventories that are hidden via disabling the terminal option "Show block in Inventory Screen" as hidden containers // just like adding the 'Hidden' keyword (see above)? (Note: It's not recommended to hide your main type containers!) bool treatNotShownAsHidden = false; // Keyword for connectors to disable sorting of a grid, that is docked to that connector. // This will prevent IIM from pulling any items from that connected grid. // Special containers, reactors and O2/H2 generators will still be filled. string noSortingKeyword = "[No Sorting]"; // Keyword for connectors to disable IIM completely for another grid, that is docked to that connector. string noIIMKeyword = "[No IIM]"; // Balance items between containers of the same type? This will result in an equal amount of all items in all containers of that type. bool balanceTypeContainers = true; // Show a fill level in the container's name? bool showFillLevel = true; // Fill bottles before storing them in the bottle container? bool fillBottles = true; // --- Automated container assignment --- // ======================================================================================= // Master switch. If this is set to false, automated container un-/assignment is disabled entirely. bool autoContainerAssignment = false; // Assign new containers if a type is full or not present? bool assignNewContainers = true; // Unassign empty type containers that aren't needed anymore (at least one of each type always remains). // This doesn't touch containers with manual priority tokens, like [P1]. bool unassignEmptyContainers = true; // Assign ores and ingots containers as one? bool oresIngotsInOne = true; // Assign tool, ammo and bottle containers as one? bool toolsAmmoBottlesInOne = true; // --- Autocrafting --- // ======================================================================================= // Enable autocrafting or autodisassembling (disassembling will disassemble everything above the wanted amounts) // All assemblers will be used. To use one manually, add the manualMachineKeyword to it (by default: "!manual") bool enableAutocrafting = true; bool enableAutodisassembling = false; // A LCD with the keyword "Autocrafting" is required where you can set the wanted amount! // This has multi LCD support. Just append numbers after the keyword, like: "LCD Autocrafting 1", "LCD Autocrafting 2", .. string autocraftingKeyword = "Autocrafting"; // If you want an assembler to only assemble or only disassemble, use the following keywords in its name. // A assembler without a keyword will do both tasks string assembleKeyword = "!assemble-only"; string disassembleKeyword = "!disassemble-only"; // You can teach the script new crafting recipes, by adding one of the following tags to an assembler's name. // There are two tag options to teach new blueprints: // !learn will learn one item and then remove the tag so that the assembler is part of the autocrafting again. // !learnMany will learn everything you queue in it and will never be part of the autorafting again until you remove the tag. // To learn an item, queue it up about 100 times (Shift+Klick) and wait until the script removes it from the queue. string learnKeyword = "!learn"; string learnManyKeyword = "!learnMany"; // Default modifier that gets applied, when a new item is found. Modifiers can be one or more of these: // 'A' (Assemble only), 'D' (Disassemble only), 'P' (Always queue first (priority)), 'H' (Hide and manage in background), 'I' (Hide and ignore) string defaultModifier = ""; // Margins for assembling or disassembling items in percent based on the wanted amount (default: 0 = exact value). // Examples: // assembleMargin = 5 with a wanted amount of 100 items will only produce new items, if less than 95 are available. // disassembleMargin = 10 with a wanted amount of 1000 items will only disassemble items if more than 1100 are available. double assembleMargin = 0; double disassembleMargin = 0; // Show unlearned (mostly modded) items on the autocrafting screen? This adds the [NoBP] tag (no blueprint) like in the old days of IIM. bool showUnlearnedItems = false; // Use assemblers on docked grids? bool useDockedAssemblers = false; // Add the header to every screen when using multiple autocrafting LCDs? bool headerOnEveryScreen = false; // Show available modifiers help on the last screen? bool showAutocraftingModifiers = true; // Split assembler tasks (this is like cooperative mode but splits the whole queue between all assemblers equally) bool splitAssemblerTasks = true; // Sort the assembler queue based on the most needed components? bool sortAssemblerQueue = true; // Autocraft ingots from stone in survival kits until you have proper refineries? bool enableBasicIngotCrafting = true; // Disable autocrafting in survival kits when you have regular assemblers? bool disableBasicAutocrafting = true; // --- Special Loadout Containers --- // ======================================================================================= // Keyword an inventory has to contain to be filled with a special loadout (see in it's custom data after you renamed it!) // Special containers will be filled with your wanted amount of items and never be drained by the auto sorting! const string specialContainerKeyword = "Special"; // Are special containers allowed to 'steal' items from other special containers with a lower priority? bool allowSpecialSteal = true; // --- Refinery handling --- // ======================================================================================= // By enabling ore balancing, the script will balance the ores between all refinieres so that every refinery has the same amount of ore in it. // To still use a refinery manually, add the manualMachineKeyword to it (by default: "!manual") bool enableOreBalancing = true; // Enable script assisted refinery filling? This will move in the most needed ore and will make room, if the refinery is already full // Also, the script puts as many ores into the refinery as possible and will pull ores even from other refineries if needed. bool enableScriptRefineryFilling = true; // Sort the refinery queue based on the most needed ingots? bool sortRefiningQueue = true; // Use refineries on docked grids? bool useDockedRefineries = false; // If you want an ore to always be refined first, simply remove the two // in front of the ore name to enable it. // Enabled ores are refined in order from top to bottom so if you removed several // you can change the order by // copying and pasting them inside the list. Just be careful to keep the syntax correct: "OreName", // By default stone is enabled and will always be refined first. List<String> fixedRefiningList = new List<string> { "Stone", //"Iron", //"Nickel", //"Cobalt", //"Silicon", //"Uranium", //"Silver", //"Gold", //"Platinum", //"Magnesium", //"Scrap", }; // --- O2/H2 generator handling --- // ======================================================================================= // Enable balancing of ice in O2/H2 generators? // All O2/H2 generators will be used. To use one manually, add the manualMachineKeyword to it (by default: "!manual") bool enableIceBalancing = true; // Put ice into O2/H2 generators that are turned off? (default: false) bool fillOfflineGenerators = false; // How much space should be left to fill bottles (aka how many bottles should fit in after it's filled with ice)? // WARNING! O2/H2 generators automatically pull ice and bottles if their inventory volume drops below 30%. // To avoid this, turn off "Use Conveyor" in the generator's terminal settings. int spaceForBottles = 1; // --- Reactor handling --- // ======================================================================================= // Enable balancing of uranium in reactors? (Note: conveyors of reactors are turned off to stop them from pulling more) // All reactors will be used. To use one manually, add the manualMachineKeyword to it (by default: "!manual") bool enableUraniumBalancing = true; // Put uranium into reactors that are turned off? (default: false) bool fillOfflineReactors = false; // Amount of uranium in each reactor? (default: 100 for large grid reactors, 25 for small grid reactors) double uraniumAmountLargeGrid = 100; double uraniumAmountSmallGrid = 25; // --- Assembler Cleanup --- // ======================================================================================= // This cleans up assemblers, if they have no queue and puts the contents back into a cargo container. bool enableAssemblerCleanup = true; // --- Internal item sorting --- // ======================================================================================= // Sort the items inside all containers? // Note, that this could cause inventory desync issues in multiplayer, so that items are invisible // or can't be taken out. Use at your own risk! bool enableInternalSorting = false; // Internal sorting pattern. Always combine one of each category, e.g.: 'Ad' for descending item amount (from highest to lowest) // 1. Quantifier: // A = amount // N = name // T = type (alphabetical) // X = type (number of items) // 2. Direction: // a = ascending // d = descending string sortingPattern = "Na"; // Internal sorting can also be set per inventory. Just use '(sort:PATTERN)' in the block's name. // Example: Small Cargo Container 3 (sort:Ad) // Note: Using this method, internal sorting will always be activated for this container, even if the main switch is turned off! // --- LCD panels --- // ======================================================================================= // To display the main script informations, add the following keyword to any LCD name (default: IIM-main). // You can enable or disable specific informations on the LCD by editing its custom data. string mainLCDKeyword = "IIM-main"; // To display current item amounts of different types, add the following keyword to any LCD name // and follow the on screen instructions. string inventoryLCDKeyword = "IIM-inventory"; // To display all current warnings and problems, add the following keyword to any LCD name (default: IIM-warnings). string warningsLCDKeyword = "IIM-warnings"; // To display all actions, the script did lately, add the following keyword to any LCD name (default: IIM-actions). string actionsLCDKeyword = "IIM-actions"; bool showTimeStamp = true; int maxEntries = 30; // To display the script performance (PB terminal output), add the following keyword to any LCD name (default: IIM-performance). string performanceLCDKeyword = "IIM-performance"; // Default screen font, fontsize and padding, when a screen is first initialized. Fonts: "Debug" or "Monospace" string defaultFont = "Debug"; float defaultFontSize = 0.6f; float defaultPadding = 2f; // --- Settings for enthusiasts --- // ======================================================================================= // Extra breaks between script methods in ticks (1 tick = 16.6ms). double extraScriptTicks = 0; // Use dynamic script speed? The script will slow down automatically if the current runtime exceeds a set value (default: 0.5ms) bool useDynamicScriptSpeed = true; double maxCurrentMs = 0.5; // Exclude welders, grinders or drills from sorting? Set this to true, if you have huge welder or grinder walls! bool excludeWelders = false; bool excludeGrinders = false; bool excludeDrills = false; // Enable connection check for inventories (needed for [No Conveyor] info)? bool connectionCheck = false; // Tag inventories, that have no access to the main type containers with [No Conveyor]? // This only works if the above setting connectionCheck is set to true! bool showNoConveyorTag = true; // Use connected grids as temporary storage for temporary storage? // This only affects balancing methods or Special container unloading if no storage is available on your main grid. bool useConnectedGridsTemporarily = true; // Script mode: "ship", "station" or blank for autodetect string scriptMode = ""; // Protect type containers when docking to another grid running the script? bool protectTypeContainers = true; // If you want to use a machine manually, append the keyword to it. // This works for assemblers, refineries, reactors and O2/H2 generators string manualMachineKeyword = "!manual"; // Enable name correction? This option will automtically correct capitalization, e.g.: iim-main -> IIM-main bool enableNameCorrection = true; // A container is considered full if less than the following amount of volume in liters is available in an inventory (default: 500L) // This is used for various item movement functions or the auto container assignment. double containerFullSpaceLeft = 500; // Format of the actionsLCD timestamp. See https://www.tutorialsteacher.com/articles/datetime-formats-in-csharp for more information. string timeFormat = "HH:mm:ss"; // ======================================================================================= // --- End of Configuration --- // Don't change anything beyond this point! // ======================================================================================= List<IMyTerminalBlock>ʟ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʞ=new List<IMyTerminalBlock>();List< IMyTerminalBlock>ʝ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʜ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʛ=new List< IMyTerminalBlock>();List<IMyTerminalBlock>ʚ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʙ=new List<IMyTerminalBlock>();List< IMyTerminalBlock>ʘ=new List<IMyTerminalBlock>();List<IMyShipConnector>ʗ=new List<IMyShipConnector>();List<IMyRefinery>ʖ=new List< IMyRefinery>();List<IMyRefinery>ʕ=new List<IMyRefinery>();List<IMyRefinery>ʔ=new List<IMyRefinery>();List<IMyRefinery>ʠ=new List< IMyRefinery>();List<IMyAssembler>ʓ=new List<IMyAssembler>();List<IMyAssembler>ʡ=new List<IMyAssembler>();List<IMyAssembler>ʳ=new List<IMyAssembler>();List<IMyAssembler>ʱ=new List<IMyAssembler>();List<IMyGasGenerator>ʰ=new List<IMyGasGenerator>();List< IMyGasTank>ʯ=new List<IMyGasTank>();List<IMyReactor>ʮ=new List<IMyReactor>();List<IMyTextPanel>ʭ=new List<IMyTextPanel>();List< string>ʬ=new List<string>();HashSet<IMyCubeGrid>ʫ=new HashSet<IMyCubeGrid>();HashSet<IMyCubeGrid>ʲ=new HashSet<IMyCubeGrid>(); List<IMyTerminalBlock>ʪ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʩ=new List<IMyTerminalBlock>();List< IMyTerminalBlock>ʨ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʧ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʦ=new List< IMyTerminalBlock>();List<IMyTerminalBlock>ʥ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʤ=new List<IMyTerminalBlock>();string ʣ= "";IMyTerminalBlock ʢ;IMyInventory ʒ;IMyTerminalBlock ʀ;IMyTerminalBlock ɯ,ɾ;bool ɽ=false;int ɼ=0;int ɻ=0;int ɺ=0;int ɹ=0; int ɸ=0;int ɷ=0;int ɶ=0;int ɵ=0;int ɴ=0;int ɳ=0;int ɲ=0;int ɱ=0;int ɰ=0;int ɿ=0;int ʁ=0;string[]ʐ={"/","-","\\","|"};int ʑ= 0;List<String>ʏ=new List<string>();string ʎ="";List<IMyTerminalBlock>ʍ=new List<IMyTerminalBlock>();List<IMyTerminalBlock >ʌ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʋ=new List<IMyTerminalBlock>();List<IMyTerminalBlock>ʊ=new List< IMyTerminalBlock>();List<IMyTerminalBlock>ʉ=new List<IMyTerminalBlock>();StringBuilder ʈ=new StringBuilder();string[]ǝ={ "showHeading=true","showWarnings=true","showContainerStats=true","showManagedBlocks=true","showLastAction=true","scrollTextIfNeeded=true"} ;string[]ʇ={"showHeading=true","scrollTextIfNeeded=true"};string[]ʆ={"showHeading=true","scrollTextIfNeeded=false"}; string ņ;int ʅ=0;string ʄ="";bool ʃ=false;bool ʂ=false;bool ɮ=false;HashSet<string>Ȫ=new HashSet<string>();HashSet<string>ȍ= new HashSet<string>();int Ȩ=0;int ȧ=0;int Ȧ=0;bool ȥ=false;bool Ȥ=true;bool ȣ=false;int Ȣ=0;string ȡ="itemID;blueprintID"; Dictionary<string,string>Ƞ=new Dictionary<string,string>(){{"oreContainer",oreContainerKeyword},{"ingotContainer", ingotContainerKeyword},{"componentContainer",componentContainerKeyword},{"toolContainer",toolContainerKeyword},{"ammoContainer", ammoContainerKeyword},{"bottleContainer",bottleContainerKeyword},{"specialContainer",specialContainerKeyword},{"oreBalancing","true"},{ "iceBalancing","true"},{"uraniumBalancing","true"}};string ȟ="IIM Autocrafting";string Ȟ="Remove a line to show this item on the LCD again!\nAdd an amount to manage the item without being on the LCD.\nExample: '-SteelPlate=1000'" ;char[]ȝ={'=','>','<'};IMyAssembler Ȝ;string ț="";MyDefinitionId Ț;HashSet<string>ȩ=new HashSet<string>{"Uranium", "Silicon","Silver","Gold","Platinum","Magnesium","Iron","Nickel","Cobalt","Stone","Scrap"};List<MyItemType>ȫ=new List<MyItemType> ();List<MyItemType>ȼ=new List<MyItemType>();Dictionary<string,double>Ƚ=new Dictionary<string,double>(){{"Cobalt",0.3},{ "Gold",0.01},{"Iron",0.7},{"Magnesium",0.007},{"Nickel",0.4},{"Platinum",0.005},{"Silicon",0.7},{"Silver",0.1},{"Stone",0.014} ,{"Uranium",0.01}};const string Ȼ="MyObjectBuilder_";const string Ⱥ="Ore";const string ȹ="Ingot";const string ȸ= "Component";const string ȷ="AmmoMagazine";const string ȶ="OxygenContainerObject";const string ȵ="GasContainerObject";const string ȴ ="PhysicalGunObject";const string ȳ="PhysicalObject";const string Ȳ="ConsumableItem";const string ȱ="Datapad";const string Ȱ=Ȼ+"BlueprintDefinition/";SortedSet<MyDefinitionId>ȯ=new SortedSet<MyDefinitionId>(new ū());SortedSet<string>Ȯ=new SortedSet<string>();SortedSet<string>ȭ=new SortedSet<string>();SortedSet<string>Ȭ=new SortedSet<string>();SortedSet<string>ș=new SortedSet<string>();SortedSet<string>Ș=new SortedSet<string>();SortedSet<string>Ǻ=new SortedSet<string>();SortedSet<string>ȉ=new SortedSet<string>();SortedSet<string>Ȉ=new SortedSet<string>();SortedSet<string>ȇ=new SortedSet<string>();SortedSet<string>Ȇ=new SortedSet<string>();Dictionary<MyDefinitionId,double>ȅ=new Dictionary<MyDefinitionId,double>();Dictionary<MyDefinitionId,double>Ȅ =new Dictionary<MyDefinitionId,double>();Dictionary<MyDefinitionId,double>ȃ=new Dictionary<MyDefinitionId,double>(); Dictionary<MyDefinitionId,int>Ȃ=new Dictionary<MyDefinitionId,int>();Dictionary<MyDefinitionId,MyDefinitionId>ȁ=new Dictionary< MyDefinitionId,MyDefinitionId>();Dictionary<MyDefinitionId,MyDefinitionId>Ȁ=new Dictionary<MyDefinitionId,MyDefinitionId>();Dictionary <string,MyDefinitionId>ǿ=new Dictionary<string,MyDefinitionId>();Dictionary<string,string>Ǿ=new Dictionary<string,string> ();Dictionary<string,IMyTerminalBlock>ǽ=new Dictionary<string,IMyTerminalBlock>();bool Ǽ=false;string ǻ="station_mode;\n" ;string Ȋ="ship_mode;\n";string Ȍ="[PROTECTED] ";string Ȗ="";string ȗ="";string ȕ="";DateTime Ȕ;string[]ȓ={ "Get inventory blocks","Find new items","Create item lists","Name correction","Assign containers","Fill special containers","Sort items", "Container balancing","Internal sorting","Add fill level to names","Get global item amount","Get assembler queue","Autocrafting", "Sort assembler queue","Clean up assemblers","Learn unknown blueprints","Fill refineries","Ore balancing","Ice balancing","Uranium balancing"} ;Program(){Echo("Script ready to be launched..\n");containerFullSpaceLeft/=1000;assembleMargin/=100;disassembleMargin/= 100;Runtime.UpdateFrequency=UpdateFrequency.Update10;}void Main(string ȑ){if(ʅ>=10){throw new Exception( "Too many errors in script step "+Ȧ+":\n"+ȓ[Ȧ]+"\n\nPlease recompile!\nScript stoppped!\n\nLast error:\n"+ʄ+"\n");}try{if(Ȥ){if(Ȧ>0)Echo( "Initializing script.. ("+(Ȧ+1)+"/10) \n");if(Ȧ>=2){Echo("Getting inventory blocks..");if(Ȧ==2)ɪ();if(ɽ)return;}if(Ȧ>=3){Echo( "Loading saved items..");if(Ȧ==3){if(!Ó()){ʃ=true;enableAutocrafting=false;enableAutodisassembling=false;}}if(ʃ){Echo("-> No assemblers found!" );Echo("-> Autocrafting deactivated!");}}if(Ȧ>=4){Echo("Clearing assembler queues..");if(Ȧ==4&&(enableAutocrafting|| enableAutodisassembling)){GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(ʭ,u=>u.IsSameConstructAs(Me)&&u.CustomName.Contains( autocraftingKeyword));if(ʭ.Count>0){foreach(var Ƨ in ʓ){Ƨ.Mode=MyAssemblerMode.Disassembly;Ƨ.ClearQueue();Ƨ.Mode=MyAssemblerMode.Assembly;Ƨ .ClearQueue();}}}}if(Ȧ>=5){Echo("Checking blueprints..");if(Ȧ==5){foreach(var L in ȯ){Ƽ(L);}}}if(Ȧ>=6){Echo( "Checking type containers..");if(Ȧ==6)Ɉ();if(Ȧ==6)ɉ();}if(Ȧ>=7){if(scriptMode=="station"){Ǽ=true;}else if(Me.CubeGrid.IsStatic&&scriptMode!="ship"){ Ǽ=true;}Echo("Setting script mode to: "+(Ǽ?"station..":"ship.."));if(Ȧ==7)Me.CustomData=(Ǽ?ǻ:Ȋ)+Me.CustomData.Replace(ǻ, "").Replace(Ȋ,"");}if(Ȧ>=8){Echo("Starting script..");}if(Ȧ>=9){Ȧ=0;Ȥ=false;return;}Ȧ++;return;}if(ȑ!=""){ȕ=ȑ;Ȧ=1;ȗ="";Ȕ= DateTime.Now;}if(useDynamicScriptSpeed){if(Ȩ>0){ǡ("Dynamic script speed control");Í("..");Ȩ--;return;}}if(ȧ<extraScriptTicks){ Runtime.UpdateFrequency=UpdateFrequency.Update1;ȧ++;return;}if(ȣ){if(Ȣ==0)ĉ();if(Ȣ==1)ʼn();if(Ȣ==2)Ō();if(Ȣ==3)Ŋ();if(Ȣ==4)ĺ(); if(Ȣ>4)Ȣ=0;ȣ=false;return;}if(Ȧ==0||ʂ||ɽ){if(!ɮ)ɪ();if(ɽ)return;ʂ=false;ɮ=false;if(!ǟ(30)){ʌ=Ǟ(mainLCDKeyword,ǝ, defaultFont,defaultFontSize,defaultPadding);ʋ=Ǟ(warningsLCDKeyword,ʇ,defaultFont,defaultFontSize,defaultPadding);ʍ=Ǟ( actionsLCDKeyword,ʆ,defaultFont,defaultFontSize,defaultPadding);ʊ=Ǟ(performanceLCDKeyword,ʇ,defaultFont,defaultFontSize,defaultPadding);ʉ =Ǟ(inventoryLCDKeyword,null,defaultFont,defaultFontSize,defaultPadding);}else{ʂ=true;ɮ=true;}if(Ȧ==0){ǡ(ȓ[Ȧ]);Í();Ȧ++;} return;}if(!Ǽ)Ɍ();if(Ȓ(ȕ))return;ȧ=0;Runtime.UpdateFrequency=UpdateFrequency.Update10;ȣ=true;if(showTimeStamp){ʎ=DateTime.Now. ToString(timeFormat)+":\n";}if(Ȧ==1){Ô();}if(Ȧ==2){ë();}if(Ȧ==3){if(enableNameCorrection)ɑ();}if(Ȧ==4){if( autoContainerAssignment){if(unassignEmptyContainers)ɗ();if(assignNewContainers)ȿ();}}if(Ȧ==5){if(ʤ.Count!=0)ά();}if(Ȧ==6){if(!ζ())ȥ=true;}if(Ȧ ==7){if(balanceTypeContainers)ˏ();}if(Ȧ==8){κ();}if(Ȧ==9){Ϛ(ʚ);Ϛ(ʤ);}if(Ȧ==10){ǁ();}if(Ȧ==11){if(enableAutocrafting|| enableAutodisassembling)ƨ();}if(Ȧ==12){if(enableAutocrafting||enableAutodisassembling)ϒ();}if(Ȧ==13){if(splitAssemblerTasks)Γ();if( sortAssemblerQueue)Ζ();}if(Ȧ==14){if(enableAssemblerCleanup)Η();if(enableBasicIngotCrafting){if(ʖ.Count>0){enableBasicIngotCrafting=false; }else{ˡ();}}}if(Ȧ==15){Û();}if(Ȧ==16){ʽ();}if(Ȧ==17){if(enableOreBalancing)ʻ();if(sortRefiningQueue){ʺ(ʔ,ȫ);ʺ(ʠ,ȼ);}}if(Ȧ ==18){if(enableIceBalancing)ǹ();}if(Ȧ==19){if(enableUraniumBalancing){ä("uraniumBalancing","true");ĥ();}else if(! enableUraniumBalancing&&å("uraniumBalancing")=="true"){ä("uraniumBalancing","false");foreach(IMyReactor Ġ in ʮ){Ġ.UseConveyorSystem=true;}}}ǡ( ȓ[Ȧ]);Í();Ȩ=(int)Math.Floor((dž>20?20:dž)/maxCurrentMs);if(ȥ){ȥ=false;}else if(Ȧ>=19){Ȧ=0;Ȫ=new HashSet<string>(ȍ);ȍ.Clear( );if(ʅ>0)ʅ--;if(Ȫ.Count==0)ņ=null;}else{Ȧ++;}}catch(NullReferenceException e){ʅ++;ʂ=true;ɽ=false;ʄ=e.ToString();ǃ( "Execution of script step aborted:\n"+ȓ[Ȧ]+" (ID: "+Ȧ+")\n\nCached block not available..");}catch(Exception e){ʅ++;ʂ=true;ɽ=false;ʄ=e.ToString();ǃ( "Critical error in script step:\n"+ȓ[Ȧ]+" (ID: "+Ȧ+")\n\n"+e);}}bool Ȓ(string ȑ){if(ȑ.Contains("pauseThisPB")){Echo("Script execution paused!\n");var Ȑ=ȑ. Split(';');if(Ȑ.Length==3){Echo("Found:");Echo("'"+Ȑ[1]+"'");Echo("on grid:");Echo("'"+Ȑ[2]+"'");Echo( "also running the script.\n");Echo("Type container protection: "+(protectTypeContainers?"ON":"OFF")+"\n");Echo( "Everything else is managed by the other script.");}return true;}bool ȏ=true;bool Ȏ=true;bool ȋ=false;if(ȑ!="reset"&&ȑ!="msg"){if(!ȑ.Contains(" on")&&!ȑ.Contains(" off") &&!ȑ.Contains(" toggle"))return false;if(ȑ.Contains(" off"))Ȏ=false;if(ȑ.Contains(" toggle"))ȋ=true;}if(ȑ=="reset"){ǂ(); return true;}else if(ȑ=="msg"){}else if(ȑ.StartsWith("balanceTypeContainers")){Ȗ="Balance type containers";if(ȋ)Ȏ=! balanceTypeContainers;balanceTypeContainers=Ȏ;}else if(ȑ.StartsWith("showFillLevel")){Ȗ="Show fill level";if(ȋ)Ȏ=!showFillLevel;showFillLevel =Ȏ;}else if(ȑ.StartsWith("autoContainerAssignment")){Ȗ="Auto assign containers";if(ȋ)Ȏ=!autoContainerAssignment; autoContainerAssignment=Ȏ;}else if(ȑ.StartsWith("assignNewContainers")){Ȗ="Assign new containers";if(ȋ)Ȏ=!assignNewContainers; assignNewContainers=Ȏ;}else if(ȑ.StartsWith("unassignEmptyContainers")){Ȗ="Unassign empty containers";if(ȋ)Ȏ=!unassignEmptyContainers; unassignEmptyContainers=Ȏ;}else if(ȑ.StartsWith("oresIngotsInOne")){Ȗ="Assign ores and ingots as one";if(ȋ)Ȏ=!oresIngotsInOne;oresIngotsInOne=Ȏ ;}else if(ȑ.StartsWith("toolsAmmoBottlesInOne")){Ȗ="Assign tools, ammo and bottles as one";if(ȋ)Ȏ=!toolsAmmoBottlesInOne; toolsAmmoBottlesInOne=Ȏ;}else if(ȑ.StartsWith("fillBottles")){Ȗ="Fill bottles";if(ȋ)Ȏ=!fillBottles;fillBottles=Ȏ;}else if(ȑ.StartsWith( "enableAutocrafting")){Ȗ="Autocrafting";if(ȋ)Ȏ=!enableAutocrafting;enableAutocrafting=Ȏ;}else if(ȑ.StartsWith("enableAutodisassembling")){Ȗ= "Autodisassembling";if(ȋ)Ȏ=!enableAutodisassembling;enableAutodisassembling=Ȏ;}else if(ȑ.StartsWith("showUnlearnedItems")){Ȗ= "Show unlearned items";if(ȋ)Ȏ=!showUnlearnedItems;showUnlearnedItems=Ȏ;}else if(ȑ.StartsWith("useDockedAssemblers")){Ȗ="Use docked assemblers" ;if(ȋ)Ȏ=!useDockedAssemblers;useDockedAssemblers=Ȏ;}else if(ȑ.StartsWith("headerOnEveryScreen")){Ȗ= "Show header on every autocrafting screen";if(ȋ)Ȏ=!headerOnEveryScreen;headerOnEveryScreen=Ȏ;}else if(ȑ.StartsWith("sortAssemblerQueue")){Ȗ="Sort assembler queue" ;if(ȋ)Ȏ=!sortAssemblerQueue;sortAssemblerQueue=Ȏ;}else if(ȑ.StartsWith("enableBasicIngotCrafting")){Ȗ= "Basic ingot crafting";if(ȋ)Ȏ=!enableBasicIngotCrafting;enableBasicIngotCrafting=Ȏ;}else if(ȑ.StartsWith("disableBasicAutocrafting")){Ȗ= "Disable autocrafting in survival kits";if(ȋ)Ȏ=!disableBasicAutocrafting;disableBasicAutocrafting=Ȏ;}else if(ȑ.StartsWith("allowSpecialSteal")){Ȗ= "Allow special container steal";if(ȋ)Ȏ=!allowSpecialSteal;allowSpecialSteal=Ȏ;}else if(ȑ.StartsWith("enableOreBalancing")){Ȗ="Ore balancing";if(ȋ)Ȏ=! enableOreBalancing;enableOreBalancing=Ȏ;}else if(ȑ.StartsWith("enableScriptRefineryFilling")){Ȗ="Script assisted refinery filling";if(ȋ)Ȏ= !enableScriptRefineryFilling;enableScriptRefineryFilling=Ȏ;}else if(ȑ.StartsWith("sortRefiningQueue")){Ȗ= "Sort refinery queue";if(ȋ)Ȏ=!sortRefiningQueue;sortRefiningQueue=Ȏ;}else if(ȑ.StartsWith("useDockedRefineries")){Ȗ="Use docked refineries"; if(ȋ)Ȏ=!useDockedRefineries;useDockedRefineries=Ȏ;}else if(ȑ.StartsWith("enableIceBalancing")){Ȗ="Ice balancing";if(ȋ)Ȏ=! enableIceBalancing;enableIceBalancing=Ȏ;}else if(ȑ.StartsWith("fillOfflineGenerators")){Ȗ="Fill offline O2/H2 generators";if(ȋ)Ȏ=! fillOfflineGenerators;fillOfflineGenerators=Ȏ;}else if(ȑ.StartsWith("enableUraniumBalancing")){Ȗ="Uranium balancing";if(ȋ)Ȏ=! enableUraniumBalancing;enableUraniumBalancing=Ȏ;}else if(ȑ.StartsWith("fillOfflineReactors")){Ȗ="Fill offline reactors";if(ȋ)Ȏ=! fillOfflineReactors;fillOfflineReactors=Ȏ;}else if(ȑ.StartsWith("enableAssemblerCleanup")){Ȗ="Assembler cleanup";if(ȋ)Ȏ=! enableAssemblerCleanup;enableAssemblerCleanup=Ȏ;}else if(ȑ.StartsWith("enableInternalSorting")){Ȗ="Internal sorting";if(ȋ)Ȏ=! enableInternalSorting;enableInternalSorting=Ȏ;}else if(ȑ.StartsWith("useDynamicScriptSpeed")){Ȗ="Dynamic script speed";if(ȋ)Ȏ=! useDynamicScriptSpeed;useDynamicScriptSpeed=Ȏ;}else if(ȑ.StartsWith("excludeWelders")){Ȗ="Exclude welders";if(ȋ)Ȏ=!excludeWelders; excludeWelders=Ȏ;}else if(ȑ.StartsWith("excludeGrinders")){Ȗ="Exclude grinders";if(ȋ)Ȏ=!excludeGrinders;excludeGrinders=Ȏ;}else if(ȑ. StartsWith("excludeDrills")){Ȗ="Exclude drills";if(ȋ)Ȏ=!excludeDrills;excludeDrills=Ȏ;}else if(ȑ.StartsWith("connectionCheck")){Ȗ= "Connection check";if(ȋ)Ȏ=!connectionCheck;connectionCheck=Ȏ;ɉ();}else if(ȑ.StartsWith("showNoConveyorTag")){Ȗ="Show no conveyor access"; if(ȋ)Ȏ=!showNoConveyorTag;showNoConveyorTag=Ȏ;ɉ();}else if(ȑ.StartsWith("protectTypeContainers")){Ȗ= "Protect type containers";if(ȋ)Ȏ=!protectTypeContainers;protectTypeContainers=Ȏ;}else if(ȑ.StartsWith("enableNameCorrection")){Ȗ= "Name correction";if(ȋ)Ȏ=!enableNameCorrection;enableNameCorrection=Ȏ;}else{ȏ=false;}if(ȏ){TimeSpan Ⱦ=DateTime.Now-Ȕ;if(ȗ=="")ȗ=Ȗ+ " temporarily "+(Ȏ?"enabled":"disabled")+"!\n";Echo(ȗ);Echo("Continuing in "+Math.Ceiling(3-Ⱦ.TotalSeconds)+" seconds..");ȕ="msg";if(Ⱦ. TotalSeconds>=3){Ȗ="";ȗ="";ȕ="";}}return ȏ;}void Ɍ(){List<IMyProgrammableBlock>ɥ=new List<IMyProgrammableBlock>();GridTerminalSystem .GetBlocksOfType(ɥ,ɣ=>ɣ!=Me);if(ȕ.StartsWith("pauseThisPB")||ȕ==""){ȕ="";foreach(var ɢ in ɥ){if(ɢ.CustomData.Contains(ǻ) ||(ɢ.CustomData.Contains(Ȋ)&&ê(ɢ)<ê(Me))){ȕ="pauseThisPB;"+ɢ.CustomName+";"+ɢ.CubeGrid.CustomName;foreach(var Z in ʚ){if( protectTypeContainers&&!Z.CustomName.Contains(Ȍ)&&Z.IsSameConstructAs(Me))Z.CustomName=Ȍ+Z.CustomName;}return;}}if(ȕ==""){foreach(var Z in ʙ) {Z.CustomName=Z.CustomName.Replace(Ȍ,"");}}}}void ɡ(){ʫ.Clear();ʲ.Clear();GridTerminalSystem.GetBlocksOfType< IMyShipConnector>(ʗ);foreach(var ɠ in ʗ){if(ɠ.Status!=MyShipConnectorStatus.Connected)continue;if(ɠ.OtherConnector.CubeGrid. IsSameConstructAs(Me.CubeGrid)){if(ɠ.CustomName.Contains(noSortingKeyword))ʫ.Add(ɠ.CubeGrid);if(ɠ.CustomName.Contains(noIIMKeyword))ʲ.Add (ɠ.CubeGrid);}else{if(ɠ.CustomName.Contains(noSortingKeyword))ʫ.Add(ɠ.OtherConnector.CubeGrid);if(ɠ.CustomName.Contains( noIIMKeyword))ʲ.Add(ɠ.OtherConnector.CubeGrid);}}ʫ.Remove(Me.CubeGrid);ʲ.Remove(Me.CubeGrid);}void ɟ(){if(ʒ!=null){try{ʒ=ʢ. GetInventory(0);}catch{ʒ=null;}}if(ʒ==null){try{foreach(var Z in ʚ){foreach(var k in ʞ){if(Z==k)continue;if(Z.GetInventory(0). IsConnectedTo(k.GetInventory(0))){ʢ=ʚ[0];ʒ=ʢ.GetInventory(0);return;}}}}catch{ʒ=null;}}}void ɞ(IMyTerminalBlock k){foreach(var Ë in ʲ ){if(Ë.IsSameConstructAs(Me.CubeGrid)){if(k.CubeGrid==Ë)return;}else{if(k.CubeGrid.IsSameConstructAs(Ë))return;}}if(!λ(k) )return;if(k.BlockDefinition.SubtypeId.Contains("Locker")||k.BlockDefinition.SubtypeId=="VendingMachine"||k. BlockDefinition.TypeIdString.Contains("Parachute"))return;if(k is IMySafeZoneBlock)return;if(k is IMyShipWelder&&excludeWelders)return; if(k is IMyShipGrinder&&excludeGrinders)return;if(k is IMyShipDrill&&excludeDrills)return;string ɐ=k.CustomName;if(ɐ. Contains(Ȍ)){ʙ.Add(k);return;}bool ɝ=ɐ.Contains(specialContainerKeyword),ɜ=false,ɤ=ɐ.Contains(manualMachineKeyword),ɦ=false,ɬ=ɐ. Contains(learnKeyword)||ɐ.Contains(learnManyKeyword),ɭ=true,ɫ=false;foreach(var ì in lockedContainerKeywords){if(ɐ.Contains(ì)){ ɜ=true;break;}}if(!k.ShowInInventory&&treatNotShownAsHidden){ɦ=true;}else{foreach(var ì in hiddenContainerKeywords){if(ɐ. Contains(ì)){ɦ=true;break;}}}foreach(var Ë in ʫ){if(Ë.IsSameConstructAs(Me.CubeGrid)){if(k.CubeGrid==Ë)return;}else{if(!ɝ&&!(k is IMyReactor)&&!(k is IMyGasGenerator)){if(k.CubeGrid.IsSameConstructAs(Ë))return;}}}if(!ɦ)ʞ.Add(k);if(connectionCheck){ if(ʒ!=null){if(!k.GetInventory(0).IsConnectedTo(ʒ)){ɭ=false;}}if(!ɭ){if(showNoConveyorTag)ɛ(k,"[No Conveyor]");return;} else{ɛ(k,"[No Conveyor]",false);}}if(ɐ.Contains(oreContainerKeyword)){ʪ.Add(k);ɫ=true;}if(ɐ.Contains(ingotContainerKeyword)) {ʩ.Add(k);ɫ=true;}if(ɐ.Contains(componentContainerKeyword)){ʨ.Add(k);ɫ=true;}if(ɐ.Contains(toolContainerKeyword)){ʧ.Add(k );ɫ=true;}if(ɐ.Contains(ammoContainerKeyword)){ʦ.Add(k);ɫ=true;}if(ɐ.Contains(bottleContainerKeyword)){ʥ.Add(k);ɫ=true;} if(ɝ){ʤ.Add(k);if(k.CustomData.Length<200)õ(k);}if(ɫ)ʚ.Add(k);if(k.GetType().ToString().Contains("Weapon")&&!(k is IMyShipDrill))return;if(k is IMyRefinery){if((useDockedRefineries||k.IsSameConstructAs(Me))&&!ɝ&&!ɤ&&k.IsWorking){(k as IMyRefinery) .UseConveyorSystem=true;ʖ.Add(k as IMyRefinery);if(k.BlockDefinition.SubtypeId=="Blast Furnace"){ʠ.Add(k as IMyRefinery); }else{ʔ.Add(k as IMyRefinery);}}if(!ɜ&&k.GetInventory(1).ItemCount>0)ʕ.Add(k as IMyRefinery);}else if(k is IMyAssembler){ if((useDockedAssemblers||k.IsSameConstructAs(Me))&&!ɤ&&!ɬ&&k.IsWorking){ʓ.Add(k as IMyAssembler);if(k.BlockDefinition. SubtypeId.Contains("Survival"))ʱ.Add(k as IMyAssembler);}if(!ɜ&&!ɬ&&k.GetInventory(1).ItemCount>0)ʡ.Add(k as IMyAssembler);if(ɬ)ʳ .Add(k as IMyAssembler);}else if(k is IMyGasGenerator){if(!ɝ&&!ɤ&&k.IsFunctional){if(fillOfflineGenerators&&!(k as IMyGasGenerator).Enabled){ʰ.Add(k as IMyGasGenerator);}else if((k as IMyGasGenerator).Enabled){ʰ.Add(k as IMyGasGenerator);}}}else if(k is IMyGasTank){if(!ɝ&&!ɤ&&!ɜ&&k.IsWorking&&k.IsSameConstructAs(Me)){ʯ.Add(k as IMyGasTank);}}else if(k is IMyReactor){if(! ɝ&&!ɤ&&k.IsFunctional){if(fillOfflineReactors&&!(k as IMyReactor).Enabled){ʮ.Add(k as IMyReactor);}else if((k as IMyReactor).Enabled){ʮ.Add(k as IMyReactor);}}}else if(k is IMyCargoContainer){if(k.IsSameConstructAs(Me)&&!ɫ&&!ɜ&&!ɝ)ʘ.Add(k);}if (k.InventoryCount==1&&!ɝ&&!ɜ&&!(k is IMyReactor)){if(k.GetInventory(0).ItemCount>0)ʜ.Add(k);if(!k.BlockDefinition. TypeIdString.Contains("Oxygen")&&!(k is IMyConveyorSorter)){if(k.IsSameConstructAs(Me)){ʛ.Insert(0,k);}else{if( useConnectedGridsTemporarily)ʛ.Add(k);}}}}void ɪ(){if(!ɽ){ɡ();if(connectionCheck)ɟ();try{for(int E=0;E<ʤ.Count;E++){if(!ʤ[E].CustomName.Contains( specialContainerKeyword))ʤ[E].CustomData="";}}catch{}ʚ.Clear();ʪ.Clear();ʩ.Clear();ʨ.Clear();ʧ.Clear();ʦ.Clear();ʥ.Clear();ʤ.Clear();ʘ.Clear(); ʙ.Clear();ʞ.Clear();ʜ.Clear();ʛ.Clear();ʖ.Clear();ʔ.Clear();ʠ.Clear();ʕ.Clear();ʓ.Clear();ʱ.Clear();ʡ.Clear();ʳ.Clear();ʰ .Clear();ʯ.Clear();ʮ.Clear();ʀ=null;ɼ=0;GridTerminalSystem.GetBlocksOfType<IMyTerminalBlock>(ʟ,Ś=>Ś.HasInventory);} Runtime.UpdateFrequency=UpdateFrequency.Update1;for(int E=ɼ;E<ʟ.Count;E++){if(ʟ[E].CubeGrid.CustomName.Contains( noSortingKeyword))ʫ.Add(ʟ[E].CubeGrid);if(ʟ[E].CubeGrid.CustomName.Contains(noIIMKeyword))ʲ.Add(ʟ[E].CubeGrid);ɞ(ʟ[E]);ɼ++;if(E%200==0){ ɽ=true;return;}}if(ɻ==0)ɩ(ʪ);if(ɻ==1)ɩ(ʩ);if(ɻ==2)ɩ(ʨ);if(ɻ==3)ɩ(ʧ);if(ɻ==4)ɩ(ʦ);if(ɻ==5)ɩ(ʤ);if(ɻ==6)ɩ(ʥ);if(ɻ==7)ʘ.Sort ((ɧ,Ś)=>Ś.GetInventory().MaxVolume.ToIntSafe().CompareTo(ɧ.GetInventory().MaxVolume.ToIntSafe()));ɻ++;if(ɻ>7){ɻ=0;}else{ɽ =true;return;}if(disableBasicAutocrafting&&ʓ.Count!=ʱ.Count)ʓ.RemoveAll(Ļ=>Ļ.BlockDefinition.SubtypeId.Contains( "Survival"));if(fillBottles){ʜ.Sort((ɧ,Ś)=>Ś.BlockDefinition.TypeIdString.Contains("Oxygen").CompareTo(ɧ.BlockDefinition. TypeIdString.Contains("Oxygen")));}ɽ=false;Runtime.UpdateFrequency=UpdateFrequency.Update10;}void ɩ(List<IMyTerminalBlock>ɨ){if(ɨ. Count>=2&&ɨ.Count<=500)ɨ.Sort((ɧ,Ś)=>ê(ɧ).CompareTo(ê(Ś)));if(!ǟ())ɻ++;}void ɛ(IMyTerminalBlock k,string ɋ,bool Ɋ=true){if(Ɋ) {if(k.CustomName.Contains(ɋ))return;k.CustomName+=" "+ɋ;}else{if(!k.CustomName.Contains(ɋ))return;k.CustomName=k. CustomName.Replace(" "+ɋ,"").Replace(ɋ,"").TrimEnd(' ');}}void ɉ(){for(int E=0;E<ʞ.Count;E++){ɛ(ʞ[E],"[No Conveyor]",false);}}void Ɉ(){bool ɇ=false;string Ɇ=å("oreContainer");string Ʌ=å("ingotContainer");string Ʉ=å("componentContainer");string Ƀ=å( "toolContainer");string ɂ=å("ammoContainer");string Ɂ=å("bottleContainer");string ɀ=å("specialContainer");if(oreContainerKeyword!=Ɇ){ɇ= true;}else if(ingotContainerKeyword!=Ʌ){ɇ=true;}else if(componentContainerKeyword!=Ʉ){ɇ=true;}else if(toolContainerKeyword!= Ƀ){ɇ=true;}else if(ammoContainerKeyword!=ɂ){ɇ=true;}else if(bottleContainerKeyword!=Ɂ){ɇ=true;}else if( specialContainerKeyword!=ɀ){ɇ=true;}if(ɇ){for(int E=0;E<ʞ.Count;E++){if(ʞ[E].CustomName.Contains(Ɇ)){ʞ[E].CustomName=ʞ[E].CustomName.Replace(Ɇ, oreContainerKeyword);}if(ʞ[E].CustomName.Contains(Ʌ)){ʞ[E].CustomName=ʞ[E].CustomName.Replace(Ʌ,ingotContainerKeyword);}if(ʞ[E].CustomName. Contains(Ʉ)){ʞ[E].CustomName=ʞ[E].CustomName.Replace(Ʉ,componentContainerKeyword);}if(ʞ[E].CustomName.Contains(Ƀ)){ʞ[E]. CustomName=ʞ[E].CustomName.Replace(Ƀ,toolContainerKeyword);}if(ʞ[E].CustomName.Contains(ɂ)){ʞ[E].CustomName=ʞ[E].CustomName. Replace(ɂ,ammoContainerKeyword);}if(ʞ[E].CustomName.Contains(Ɂ)){ʞ[E].CustomName=ʞ[E].CustomName.Replace(Ɂ, bottleContainerKeyword);}if(ʞ[E].CustomName.Contains(ɀ)){ʞ[E].CustomName=ʞ[E].CustomName.Replace(ɀ,specialContainerKeyword);}}ä("oreContainer" ,oreContainerKeyword);ä("ingotContainer",ingotContainerKeyword);ä("componentContainer",componentContainerKeyword);ä( "toolContainer",toolContainerKeyword);ä("ammoContainer",ammoContainerKeyword);ä("bottleContainer",bottleContainerKeyword);ä( "specialContainer",specialContainerKeyword);}}void ȿ(){for(int E=0;E<ʘ.Count;E++){bool ɍ=false;bool ə=false;string ɚ=ʘ[E].CustomName; string ɘ="";if(ʪ.Count==0||ʣ==Ⱥ){if(oresIngotsInOne){ə=true;}else{ʘ[E].CustomName+=" "+oreContainerKeyword;ʪ.Add(ʘ[E]);ɘ= "Ores";}}else if(ʩ.Count==0||ʣ==ȹ){if(oresIngotsInOne){ə=true;}else{ʘ[E].CustomName+=" "+ingotContainerKeyword;ʩ.Add(ʘ[E]);ɘ= "Ingots";}}else if(ʨ.Count==0||ʣ==ȸ){ʘ[E].CustomName+=" "+componentContainerKeyword;ʨ.Add(ʘ[E]);ɘ="Components";}else if(ʧ.Count ==0||ʣ==ȴ||ʣ==ȳ||ʣ==Ȳ||ʣ==ȱ){if(toolsAmmoBottlesInOne){ɍ=true;}else{ʘ[E].CustomName+=" "+toolContainerKeyword;ʧ.Add(ʘ[E]); ɘ="Tools";}}else if(ʦ.Count==0||ʣ==ȷ){if(toolsAmmoBottlesInOne){ɍ=true;}else{ʘ[E].CustomName+=" "+ammoContainerKeyword;ʦ. Add(ʘ[E]);ɘ="Ammo";}}else if(ʥ.Count==0||ʣ==ȶ||ʣ==ȵ){if(toolsAmmoBottlesInOne){ɍ=true;}else{ʘ[E].CustomName+=" "+ bottleContainerKeyword;ʥ.Add(ʘ[E]);ɘ="Bottles";}}if(ə){ʘ[E].CustomName+=" "+oreContainerKeyword+" "+ingotContainerKeyword;ʪ.Add(ʘ[E]);ʩ.Add(ʘ[ E]);ɘ="Ores and Ingots";}if(ɍ){ʘ[E].CustomName+=" "+toolContainerKeyword+" "+ammoContainerKeyword+" "+ bottleContainerKeyword;ʧ.Add(ʘ[E]);ʦ.Add(ʘ[E]);ʥ.Add(ʘ[E]);ɘ="Tools, Ammo and Bottles";}if(ɘ!=""){ʣ="";DŽ("Assigned '"+ɚ+ "' as a new container for type '"+ɘ+"'.");}}}void ɗ(){ɖ(ʪ,oreContainerKeyword);ɖ(ʩ,ingotContainerKeyword);ɖ(ʨ,componentContainerKeyword);ɖ(ʧ, toolContainerKeyword);ɖ(ʦ,ammoContainerKeyword);ɖ(ʥ,bottleContainerKeyword);}void ɖ(List<IMyTerminalBlock>ď,string ɕ){IMyTerminalBlock ɔ= null;if(ǽ.TryGetValue(ɕ,out ɔ)){ǽ.Remove(ɕ);if(ɔ==null)return;if(ɔ.GetInventory(0).ItemCount==0){string ɓ=System.Text. RegularExpressions.Regex.Replace(ɔ.CustomName,@"("+ɕ+@")","");ɓ=System.Text.RegularExpressions.Regex.Replace(ɓ,@"\(\d+\.?\d*\%\)","");ɓ=ɓ. Replace(" "," ");ɔ.CustomName=ɓ.TrimEnd(' ');ʚ.Remove(ɔ);DŽ("Unassigned '"+ɓ+"' from being a container for type '"+ɕ+"'.");} return;}if(ď.Count>1){int ɒ=0;foreach(var Z in ď){if(Z.CustomName.Contains("[P"))continue;if(Z.GetInventory(0).ItemCount==0){ɔ =Z;ɒ++;}}if(ɒ>1){ǽ[ɕ]=ɔ;}}}void ɑ(){string ɐ,ɏ;List<string>Ɏ=new List<string>();for(int E=0;E<ʞ.Count;E++){ɐ=ʞ[E]. CustomName;ɏ=ɐ.ToLower();Ɏ.Clear();if(ɏ.Contains(oreContainerKeyword.ToLower())&&!ɐ.Contains(oreContainerKeyword))Ɏ.Add( oreContainerKeyword);if(ɏ.Contains(ingotContainerKeyword.ToLower())&&!ɐ.Contains(ingotContainerKeyword))Ɏ.Add(ingotContainerKeyword);if(ɏ. Contains(componentContainerKeyword.ToLower())&&!ɐ.Contains(componentContainerKeyword))Ɏ.Add(componentContainerKeyword);if(ɏ. Contains(toolContainerKeyword.ToLower())&&!ɐ.Contains(toolContainerKeyword))Ɏ.Add(toolContainerKeyword);if(ɏ.Contains( ammoContainerKeyword.ToLower())&&!ɐ.Contains(ammoContainerKeyword))Ɏ.Add(ammoContainerKeyword);if(ɏ.Contains(bottleContainerKeyword.ToLower( ))&&!ɐ.Contains(bottleContainerKeyword))Ɏ.Add(bottleContainerKeyword);foreach(var ì in lockedContainerKeywords){if(ɏ. Contains(ì.ToLower())&&!ɐ.Contains(ì)){Ɏ.Add(ì);break;}}foreach(var ì in hiddenContainerKeywords){if(ɏ.Contains(ì.ToLower())&&!ɐ .Contains(ì)){Ɏ.Add(ì);break;}}if(ɏ.Contains(specialContainerKeyword.ToLower())&&!ɐ.Contains(specialContainerKeyword))Ɏ. Add(specialContainerKeyword);if(ɏ.Contains(noSortingKeyword.ToLower())&&!ɐ.Contains(noSortingKeyword))Ɏ.Add( noSortingKeyword);if(ɏ.Contains(noIIMKeyword.ToLower())&&!ɐ.Contains(noIIMKeyword))Ɏ.Add(noIIMKeyword);if(ɏ.Contains( manualMachineKeyword.ToLower())&&!ɐ.Contains(manualMachineKeyword))Ɏ.Add(manualMachineKeyword);if(ɏ.Contains(autocraftingKeyword.ToLower()) &&!ɐ.Contains(autocraftingKeyword))Ɏ.Add(autocraftingKeyword);if(ɏ.Contains(assembleKeyword.ToLower())&&!ɐ.Contains( assembleKeyword))Ɏ.Add(assembleKeyword);if(ɏ.Contains(disassembleKeyword.ToLower())&&!ɐ.Contains(disassembleKeyword))Ɏ.Add( disassembleKeyword);if(ɏ.Contains(learnKeyword.ToLower())&&!ɐ.Contains(learnKeyword))Ɏ.Add(learnKeyword);if(ɏ.Contains(learnManyKeyword. ToLower())&&!ɐ.Contains(learnManyKeyword))Ɏ.Add(learnManyKeyword);if(ɏ.Contains("[p")&&!ɐ.Contains("[P"))Ɏ.Add("[P");if(ɏ. Contains("[pmax]")&&!ɐ.Contains("[PMax]"))Ɏ.Add("[PMax]");if(ɏ.Contains("[pmin]")&&!ɐ.Contains("[PMin]"))Ɏ.Add("[PMin]");foreach (var Ï in Ɏ){ʞ[E].CustomName=ʞ[E].CustomName.ž(Ï,Ï);DŽ("Corrected name\nof: '"+ɐ+"'\nto: '"+ʞ[E].CustomName+"'");}}var ǘ= new List<IMyTerminalBlock>();GridTerminalSystem.GetBlocksOfType<IMyTextSurfaceProvider>(ǘ,Ś=>Ś.IsSameConstructAs(Me));for( int E=0;E<ǘ.Count;E++){ɐ=ǘ[E].CustomName;ɏ=ɐ.ToLower();Ɏ.Clear();if(ɏ.Contains(mainLCDKeyword.ToLower())&&!ɐ.Contains( mainLCDKeyword))Ɏ.Add(mainLCDKeyword);if(ɏ.Contains(warningsLCDKeyword.ToLower())&&!ɐ.Contains(warningsLCDKeyword))Ɏ.Add( warningsLCDKeyword);if(ɏ.Contains(actionsLCDKeyword.ToLower())&&!ɐ.Contains(actionsLCDKeyword))Ɏ.Add(actionsLCDKeyword);if(ɏ.Contains( performanceLCDKeyword.ToLower())&&!ɐ.Contains(performanceLCDKeyword))Ɏ.Add(performanceLCDKeyword);if(ɏ.Contains(inventoryLCDKeyword.ToLower() )&&!ɐ.Contains(inventoryLCDKeyword))Ɏ.Add(inventoryLCDKeyword);foreach(var Ï in Ɏ){ǘ[E].CustomName=ǘ[E].CustomName.ž(Ï,Ï) ;DŽ("Corrected name\nof: '"+ɐ+"'\nto: '"+ǘ[E].CustomName+"'");}}}bool ζ(){if(ɺ==0)ε(Ⱥ,ʪ,oreContainerKeyword);if(ɺ==1)ε(ȹ,ʩ ,ingotContainerKeyword);if(ɺ==2)ε(ȸ,ʨ,componentContainerKeyword);if(ɺ==3)ε(ȴ,ʧ,toolContainerKeyword);if(ɺ==4)ε(ȷ,ʦ, ammoContainerKeyword);if(ɺ==5)ε(ȶ,ʥ,bottleContainerKeyword);if(ɺ==6)ε(ȵ,ʥ,bottleContainerKeyword);if(ɺ==7)ε(ȳ,ʧ,toolContainerKeyword);if(ɺ== 8)ε(Ȳ,ʧ,toolContainerKeyword);if(ɺ==9)ε(ȱ,ʧ,toolContainerKeyword);ɺ++;if(ɺ>9){ɺ=0;return true;}else{return false;}}void ε (string δ,List<IMyTerminalBlock>γ,string β){if(γ.Count==0){ǃ("There are no containers for type '"+β+ "'!\nBuild new ones or add the tag to existing ones!");ʣ=δ;return;}IMyTerminalBlock d=null;int α=int.MaxValue;for(int E=0;E<γ.Count;E++){if(δ==ȶ&&γ[E].BlockDefinition. TypeIdString.Contains("OxygenTank")&&γ[E].BlockDefinition.SubtypeId.Contains("Hydrogen")){continue;}else if(δ==ȵ&&γ[E]. BlockDefinition.TypeIdString.Contains("OxygenTank")&&!γ[E].BlockDefinition.SubtypeId.Contains("Hydrogen")){continue;}var Õ=γ[E]. GetInventory(0);if(Õ.ƣ(containerFullSpaceLeft)){d=γ[E];α=ê(γ[E]);break;}}if(d==null){ǃ("All containers for type '"+β+ "' are full!\nYou should build or tag new cargo containers!");ʣ=δ;return;}IMyTerminalBlock ΰ=null;if(fillBottles&&(δ==ȶ||δ==ȵ)){ΰ=η(δ);}for(int E=0;E<ʜ.Count;E++){if(ʜ[E]==d||(ʜ[E] .CustomName.Contains(β)&&ê(ʜ[E])<=α)||(δ=="Ore"&&ʜ[E].GetType().ToString().Contains("MyGasGenerator"))){continue;}if(ʜ[E] .CustomName.Contains(β)&&balanceTypeContainers&&!ʜ[E].BlockDefinition.TypeIdString.Contains("OxygenGenerator")&&!ʜ[E]. BlockDefinition.TypeIdString.Contains("OxygenTank"))continue;if(ΰ!=null){if(ʜ[E]!=ΰ){Ê(δ,ʜ[E],0,ΰ,0);continue;}}Ê(δ,ʜ[E],0,d,0);}for( int E=0;E<ʕ.Count;E++){if(ʕ[E]==d||(ʕ[E].CustomName.Contains(β)&&ê(ʕ[E])<=α)){continue;}Ê(δ,ʕ[E],1,d,0);}for(int E=0;E<ʡ. Count;E++){if((ʡ[E].Mode==MyAssemblerMode.Disassembly&&ʡ[E].IsProducing)||ʡ[E]==d||(ʡ[E].CustomName.Contains(β)&&ê(ʡ[E])<=α)) {continue;}if(ΰ!=null){Ê(δ,ʡ[E],1,ΰ,0);continue;}Ê(δ,ʡ[E],1,d,0);}}IMyTerminalBlock η(string δ){IMyTerminalBlock ΰ;if(ɯ!= null&&δ==ȶ){ΰ=ɯ;ɯ=null;return ΰ;}if(ɾ!=null&&δ==ȵ){ΰ=ɾ;ɾ=null;return ΰ;}List<IMyGasTank>σ=new List<IMyGasTank>(ʯ);if(δ==ȶ)σ. RemoveAll(ς=>ς.BlockDefinition.SubtypeId.Contains("Hydrogen"));if(δ==ȵ)σ.RemoveAll(ς=>!ς.BlockDefinition.SubtypeId.Contains( "Hydrogen"));foreach(var ρ in σ){if(ρ.FilledRatio>0){var π=ρ.GetInventory();if((float)(π.MaxVolume-π.CurrentVolume)<0.120)continue ;ρ.AutoRefillBottles=true;μ(ρ,δ);return ρ;}}List<IMyGasGenerator>ο=ʰ.Where(ξ=>ξ.IsSameConstructAs(Me)&&ξ.Enabled==true). ToList();MyDefinitionId Ø=MyItemType.MakeOre("Ice");foreach(var ν in ο){if(m(Ø,ν)>100){ν.AutoRefill=true;μ(ν,δ);return ν;}} return null;}void μ(IMyTerminalBlock Z,string δ){if(δ==ȶ){ɯ=Z;}else{ɾ=Z;}}bool λ(IMyTerminalBlock k){if(k.GetOwnerFactionTag() !=Me.GetOwnerFactionTag()){ǃ("'"+k.CustomName+"'\nhas a different owner/faction!\nIt won't be managed by the script!"); return false;}return true;}void κ(){char ι='0';char θ='0';char[]ί={'A','N','T','X'};char[]ή={'a','d'};if(sortingPattern.Length ==2){ι=sortingPattern[0];θ=sortingPattern[1];}ʝ=new List<IMyTerminalBlock>(ʜ);ʝ.AddRange(ʤ);if(enableInternalSorting){if(ι .ToString().IndexOfAny(ί)<0||θ.ToString().IndexOfAny(ή)<0){ǃ("You provided the invalid sorting pattern '"+sortingPattern+ "'!\nCan't sort the inventories!");return;}}else{ʝ=ʝ.FindAll(E=>E.CustomName.ToLower().Contains("(sort:"));}for(var ƒ=ɹ;ƒ<ʝ.Count;ƒ++){if(ǟ())return;if(ɹ >=ʝ.Count-1){ɹ=0;}else{ɹ++;}var Õ=ʝ[ƒ].GetInventory(0);var N=new List<MyInventoryItem>();Õ.GetItems(N);if(N.Count>200) continue;char Χ=ι;char Φ=θ;string Υ=System.Text.RegularExpressions.Regex.Match(ʝ[ƒ].CustomName,@"(\(sort:)(.{2})",System.Text. RegularExpressions.RegexOptions.IgnoreCase).Groups[2].Value;if(Υ.Length==2){ι=Υ[0];θ=Υ[1];if(ι.ToString().IndexOfAny(ί)<0||θ.ToString(). IndexOfAny(ή)<0){ǃ("You provided an invalid sorting pattern in\n'"+ʝ[ƒ].CustomName+"'!\nUsing global pattern!");ι=Χ;θ=Φ;}}var Τ= new List<MyInventoryItem>();Õ.GetItems(Τ);if(ι=='A'){if(θ=='d'){Τ.Sort((ɧ,Ś)=>Ś.Amount.ToIntSafe().CompareTo(ɧ.Amount. ToIntSafe()));}else{Τ.Sort((ɧ,Ś)=>ɧ.Amount.ToIntSafe().CompareTo(Ś.Amount.ToIntSafe()));}}else if(ι=='N'){if(θ=='d'){Τ.Sort((ɧ,Ś) =>Ś.Type.SubtypeId.ToString().CompareTo(ɧ.Type.SubtypeId.ToString()));}else{Τ.Sort((ɧ,Ś)=>ɧ.Type.SubtypeId.ToString(). CompareTo(Ś.Type.SubtypeId.ToString()));}}else if(ι=='T'){if(θ=='d'){Τ.Sort((ɧ,Ś)=>Ś.Type.ToString().CompareTo(ɧ.Type.ToString()) );}else{Τ.Sort((ɧ,Ś)=>ɧ.Type.ToString().CompareTo(Ś.Type.ToString()));}}else if(ι=='X'){if(θ=='d'){Τ.Sort((ɧ,Ś)=>(Ś.Type. TypeId.ToString()+Ś.Amount.ToIntSafe().ToString(@"000000000")).CompareTo((ɧ.Type.TypeId.ToString()+ɧ.Amount.ToIntSafe(). ToString(@"000000000"))));}else{Τ.Sort((ɧ,Ś)=>(ɧ.Type.TypeId.ToString()+ɧ.Amount.ToIntSafe().ToString(@"000000000")).CompareTo(( Ś.Type.TypeId.ToString()+Ś.Amount.ToIntSafe().ToString(@"000000000"))));}}if(Τ.SequenceEqual(N,new Ū()))continue;foreach( var Ï in Τ){string έ=Ï.ToString();for(int E=0;E<N.Count;E++){if(N[E].ToString()==έ){Õ.TransferItemTo(Õ,E,N.Count,false);N. Clear();Õ.GetItems(N);break;}}}ι=Χ;θ=Φ;}}void ά(){for(int ƒ=ɸ;ƒ<ʤ.Count;ƒ++){if(ǟ())return;ɸ++;õ(ʤ[ƒ]);int h=0;if(ʤ[ƒ]. BlockDefinition.SubtypeId.Contains("Assembler")){IMyAssembler Ƨ=ʤ[ƒ]as IMyAssembler;if(Ƨ.Mode==MyAssemblerMode.Disassembly)h=1;}List< string>Ϋ=new List<string>();double Ϊ,Ω,ʾ,Ψ;MyDefinitionId L;string τ="",F="";foreach(var Ï in Ǿ){if(!MyDefinitionId.TryParse(Ȼ +Ï.Key,out L))continue;Ω=m(L,ʤ[ƒ],h);τ=Ï.Value.ToLower();double.TryParse(System.Text.RegularExpressions.Regex.Match(τ, @"\d+").Value,out Ϊ);ʾ=0;Ψ=0;if(τ.Contains("all")){F="all";Ϊ=int.MaxValue;}else if(τ.Contains("m")){F="m";}else if(τ.Contains( "l")||τ.Contains("-")){F="l";}ʾ=Ϊ-Ω;if(ʾ>=1&&F!="l"){var Õ=ʤ[ƒ].GetInventory(h);if(!Õ.ƣ(containerFullSpaceLeft))break; IMyTerminalBlock È=null;if(allowSpecialSteal){È=f(L,true,ʤ[ƒ]);}else{È=f(L);}if(È!=null){Ψ=Ê(L.ToString(),È,0,ʤ[ƒ],h,ʾ,true);}if(ʾ>Ψ&&F !="all"){Ϋ.Add(ʾ-Ψ+" "+L.SubtypeName);}}else if(ʾ<0&&F!="m"){IMyTerminalBlock d=Y(ʤ[ƒ],ʘ);if(d!=null)Ê(L.ToString(),ʤ[ƒ],h ,d,0,Math.Abs(ʾ),true);}}if(Ϋ.Count>0){ǃ(ʤ[ƒ].CustomName+"\nis missing the following items to match its quota:\n"+String. Join(", ",Ϋ));}}ɸ=0;}void Ϛ(List<IMyTerminalBlock>ď){foreach(var Z in ď){string ϙ=Z.CustomName;string ɓ;var Ϙ=System.Text. RegularExpressions.Regex.Match(ϙ,@"\(\d+\.?\d*\%\)").Value;if(Ϙ!=""){ɓ=ϙ.Replace(Ϙ,"").TrimEnd(' ');}else{ɓ=ϙ;}var Õ=Z.GetInventory(0); string dz=((float)Õ.CurrentVolume).Ƌ((float)Õ.MaxVolume);if(showFillLevel){ɓ+=" ("+dz+")";ɓ=ɓ.Replace(" "," ");}if(ɓ!=ϙ)Z. CustomName=ɓ;}}StringBuilder ϗ(){if(ʭ.Count>1){string ϖ=@"("+autocraftingKeyword+@" *)(\d*)";ʭ.Sort((ɧ,Ś)=>System.Text. RegularExpressions.Regex.Match(ɧ.CustomName,ϖ).Groups[2].Value.CompareTo(System.Text.RegularExpressions.Regex.Match(Ś.CustomName,ϖ).Groups [2].Value));}StringBuilder Ĉ=new StringBuilder();if(!ʭ[0].GetText().Contains(ȟ)){ʭ[0].Font=defaultFont;ʭ[0].FontSize= defaultFontSize;ʭ[0].TextPadding=defaultPadding;}foreach(var u in ʭ){Ĉ.Append(u.GetText()+"\n");u.WritePublicTitle( "Craft item manually once to show up here");u.Font=ʭ[0].Font;u.FontSize=ʭ[0].FontSize;u.TextPadding=ʭ[0].TextPadding;u.Alignment=TextAlignment.LEFT;u.ContentType= ContentType.TEXT_AND_IMAGE;}var ϡ=new List<string>(Ĉ.ToString().Split('\n'));var ϐ=new List<string>();var Ϡ=new HashSet<string>(); string ϟ;foreach(var à in ϡ){if(Ã.IndexOfAny(ȝ)<=0)continue;ϟ=Ã.Remove(Ã.IndexOf(" "));if(!Ϡ.Contains(ϟ)){ϐ.Add(Ã);Ϡ.Add(ϟ);}} List<string>Ò=ʭ[0].CustomData.Split('\n').ToList();foreach(var I in ʬ){bool Ϟ=false;if(Ϡ.Contains(I)){continue;}foreach(var à in Ò){if(!Ã.StartsWith("-"))continue;string ϝ="";try{if(Ã.Contains("=")){ϝ=Ã.Substring(1,Ã.IndexOf("=")-1);}else{ϝ=Ã. Substring(1);}}catch{continue;}if(ϝ==I){Ϟ=true;break;}}if(!Ϟ){MyDefinitionId L=ǩ(I);bool ώ;MyDefinitionId Ù=Ʈ(L,out ώ);if(!ώ&&! showUnlearnedItems)continue;double ΐ=Math.Ceiling(m(L));ϐ.Add(I+" "+ΐ+" = "+ΐ+defaultModifier);}}foreach(var à in Ò){if(!Ã.StartsWith("-") )continue;if(Ã.Contains("=")){ϐ.Add(Ã);}}StringBuilder ƚ=new StringBuilder();try{IOrderedEnumerable<string>ϛ;ϛ=ϐ.OrderBy( ɧ=>ɧ);bool ϕ;string ϊ,I,ψ;foreach(var à in ϛ){ϕ=false;if(Ã.StartsWith("-")){I=Ã.Remove(Ã.IndexOf("=")).TrimStart('-');ϊ= "-";}else{I=Ã.Remove(Ã.IndexOf(" "));ϊ="";}ψ=Ã.Replace(ϊ+I,"");foreach(var Ï in ʬ){if(Ï==I){ϕ=true;break;}}if(ϕ)ƚ.Append(ϊ+ I+ψ+"\n");}}catch{}return ƚ;}void χ(StringBuilder Ĉ){if(Ĉ.Length==0){Ĉ.Append("Autocrafting error!\n\nNo items for crafting available!\n\nIf you hid all items, check the custom data of the first autocrafting panel and reenable some of them.\n\nOtherwise, store or build new items manually!" );Ĉ=ʭ[0].ţ(Ĉ,2,false);ʭ[0].WriteText(Ĉ);return;}var Ń=Ĉ.ToString().TrimEnd('\n').Split('\n');int ł=Ń.Length;int Ł=0;float φ=0;foreach(var u in ʭ){float ś=u.Œ();int ŀ=u.ŕ();int Ŀ=0;List<string>ƚ=new List<string>();if(u==ʭ[0]|| headerOnEveryScreen){string υ=ȟ;if(headerOnEveryScreen&&ʭ.Count>1){υ+=" "+(ʭ.IndexOf(u)+1)+"/"+ʭ.Count;try{υ+=" ["+Ń[Ł][0]+"-#]";}catch{υ+= " [Empty]";}}ƚ.Add(υ);ƚ.Add(u.ŏ('=',u.ų(υ)).ToString()+"\n");string ω="Component ";string ϋ="Current | Wanted ";φ=u.ų("Wanted "); string ǯ=u.ŏ(' ',ś-u.ų(ω)-u.ų(ϋ)).ToString();ƚ.Add(ω+ǯ+ϋ+"\n");Ŀ=5;}while((Ł<ł&&Ŀ<ŀ)||(u==ʭ[ʭ.Count-1]&&Ł<ł)){var Ã=Ń[Ł].Split (' ');Ã[0]+=" ";Ã[1]=Ã[1].Replace('$',' ');string ǯ=u.ŏ(' ',ś-u.ų(Ã[0])-u.ų(Ã[1])-φ).ToString();string ϔ=Ã[0]+ǯ+Ã[1]+Ã[2] ;ƚ.Add(ϔ);Ł++;Ŀ++;}if(headerOnEveryScreen&&ʭ.Count>1){ƚ[0]=ƚ[0].Replace('#',Ń[Ł-1][0]);}u.WriteText(String.Join("\n",ƚ)); }if(showAutocraftingModifiers){string ϓ="\n\n---\n\nModifiers (append after wanted amount):\n"+"'A' - Assemble only\n"+ "'D' - Disassemble only\n"+"'P' - Always queue first (priority)\n"+"'H' - Hide and manage in background\n"+"'I' - Hide and ignore\n"+ "'Y#' - Yield modifier. Set # to the itemamount, one craft yields";ʭ[ʭ.Count-1].WriteText(ϓ,true);}}void ϒ(){ʭ.Clear();GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(ʭ,u=>u. IsSameConstructAs(Me)&&u.CustomName.Contains(autocraftingKeyword));if(ʭ.Count==0)return;if(ʓ.Count==0){ǃ( "No assemblers found!\nBuild assemblers to enable autocrafting!");return;}Δ();List<MyDefinitionId>ϑ=new List<MyDefinitionId>();var ϐ=ϗ().ToString().TrimEnd('\n').Split('\n'); StringBuilder ƚ=new StringBuilder();foreach(var à in ϐ){string I="";bool Ϗ=true;if(Ã.StartsWith("-")){Ϗ=false;try{I=Ã.Substring(1,Ã. IndexOf("=")-1);}catch{continue;}}else{try{I=Ã.Substring(0,Ã.IndexOf(" "));}catch{continue;}}MyDefinitionId L=ǩ(I);if(L==null) continue;bool ώ;MyDefinitionId Ù=Ʈ(L,out ώ);if(!ώ&&!showUnlearnedItems)continue;double ύ=Math.Ceiling(m(L));string ό=Ã.Substring (Ã.IndexOfAny(ȝ)+1).ToLower().Replace(" ","");double Ϝ=0;int Σ=1;double.TryParse(System.Text.RegularExpressions.Regex. Match(ό,@"\d+").Value,out Ϝ);string Μ=ύ.ToString();string ˮ=Ϝ.ToString();string ˬ="";bool ç=false;if(ό.Contains("h")&&Ϗ){if(! ʭ[0].CustomData.StartsWith(Ȟ))ʭ[0].CustomData=Ȟ;ʭ[0].CustomData+="\n-"+I+"="+ό.Replace("h","").Replace(" ","").ToUpper(); continue;}else if(ό.Contains("i")&&Ϗ){if(!ʭ[0].CustomData.StartsWith(Ȟ))ʭ[0].CustomData=Ȟ;ʭ[0].CustomData+="\n-"+I;continue;}if( ό.Contains("a")){if(ύ>Ϝ)Ϝ=ύ;ˬ+="A";}if(ό.Contains("d")){if(ύ<Ϝ)Ϝ=ύ;ˬ+="D";}if(ό.Contains("p")){ç=true;ˬ+="P";}if(ό. Contains("y")){int.TryParse(System.Text.RegularExpressions.Regex.Match(ό,@"y\d+").Value.Replace("y",""),out Σ);if(Σ==0)Σ=1;ˬ+= "Y"+Σ;}Ƴ(L,Ϝ);double ˤ=Math.Abs((Ϝ-ύ)/Σ);if(Σ!=1)ˤ=Math.Floor(ˤ);double ˣ=ƴ(Ù);if(ύ>=Ϝ+Ϝ*assembleMargin&&ˣ>0&&Ʋ(Ù)>0){ͼ(Ù); Ʊ(Ù,0);ˣ=0;DŽ("Removed '"+L.SubtypeId.ToString()+"' from the assembling queue.");}if(ύ<=Ϝ-Ϝ*disassembleMargin&&ˣ>0&&Ʋ(Ù)<0 ){ͼ(Ù);Ʊ(Ù,0);ˣ=0;DŽ("Removed '"+L.SubtypeId.ToString()+"' from the disassembling queue.");}string ō="";if(ˣ>0||ˤ>0){if(( enableAutodisassembling||ό.Contains("d"))&&ύ>Ϝ+Ϝ*disassembleMargin){Ʊ(Ù,-1);ō="$[D:";}else if(enableAutocrafting&&ύ<Ϝ-Ϝ*assembleMargin){Ʊ(Ù,1); ō="$[A:";}if(ō!=""){if(ˣ==0){ō+="Wait]";}else{ō+=Math.Round(ˣ)+"]";}}}else{Ʊ(Ù,0);}if(showUnlearnedItems&&!ώ)ō="$[NoBP!]" ;if(ç){ϑ.Add(Ù);}string ˢ="$=$ ";if(ύ>Ϝ)ˢ="$>$ ";if(ύ<Ϝ)ˢ="$<$ ";if(Ϗ)ƚ.Append(I+" "+Μ+ō+ˢ+ˮ+ˬ+"\n");if(ō.Contains( "[D:Wait]")){Ή(Ù,ˤ);}else if(ō.Contains("[A:Wait]")){Ε(Ù,ˤ,ç);DŽ("Queued "+ˤ+" '"+L.SubtypeId.ToString()+"' in the assemblers.");}} Ν(ϑ);χ(ƚ);}void ˡ(){if(ʖ.Count>0)return;MyDefinitionId ˊ=MyItemType.MakeOre("Stone");MyDefinitionId Ù=MyDefinitionId. Parse(Ȱ+"StoneOreToIngotBasic");double ˠ=m(ˊ);if(ˠ>0){double ˑ=Math.Floor(ˠ/500/ʱ.Count);if(ˑ<1)return;foreach(var ː in ʱ){if (ː.IsQueueEmpty)ː.AddQueueItem(Ù,ˑ);}}}void ˏ(){if(ɷ==0)ɷ+=ˎ(ʪ,Ⱥ,true,true);if(ɷ==1)ɷ+=ˎ(ʩ,ȹ,true,true);if(ɷ==2)ɷ+=ˎ(ʨ,ȸ, true,true);if(ɷ==3)ɷ+=ˎ(ʧ,ȴ,true,true);if(ɷ==4)ɷ+=ˎ(ʦ,ȷ,true,true);if(ɷ==5)ɷ+=ˎ(ʥ,"ContainerObject",true,true);ɷ++;if(ɷ>5)ɷ= 0;}int ˎ(List<IMyTerminalBlock>ɨ,string Ͱ="",bool ͷ=false,bool ͺ=false){if(ͷ)ɨ.RemoveAll(Ŵ=>Ŵ.InventoryCount==2||Ŵ. BlockDefinition.TypeIdString.Contains("OxygenGenerator")||Ŵ.BlockDefinition.TypeIdString.Contains("OxygenTank"));if(ͺ)ɨ.RemoveAll(E=>!E .CubeGrid.IsSameConstructAs(Me.CubeGrid));if(ɨ.Count<2){return 1;}Dictionary<MyItemType,double>Ͷ=new Dictionary< MyItemType,double>();for(int E=0;E<ɨ.Count;E++){var N=new List<MyInventoryItem>();ɨ[E].GetInventory(0).GetItems(N);foreach(var Ï in N){if(!Ï.Type.TypeId.ToString().Contains(Ͱ))continue;MyItemType L=Ï.Type;if(Ͷ.ContainsKey(L)){Ͷ[L]+=(double)Ï.Amount;} else{Ͷ[L]=(double)Ï.Amount;}}}Dictionary<MyItemType,double>ʹ=new Dictionary<MyItemType,double>();foreach(var Ï in Ͷ){ʹ[Ï.Key ]=(int)(Ï.Value/ɨ.Count);}for(int ͳ=0;ͳ<ɨ.Count;ͳ++){if(ǟ())return 0;var Ͳ=new List<MyInventoryItem>();ɨ[ͳ].GetInventory( 0).GetItems(Ͳ);Dictionary<MyItemType,double>ͱ=new Dictionary<MyItemType,double>();foreach(var Ï in Ͳ){MyItemType L=Ï.Type ;if(ͱ.ContainsKey(L)){ͱ[L]+=(double)Ï.Amount;}else{ͱ[L]=(double)Ï.Amount;}}double Į=0;foreach(var Ï in Ͷ){ͱ.TryGetValue(Ï .Key,out Į);double ˍ=ʹ[Ï.Key];if(Į<=ˍ+1)continue;for(int ˌ=0;ˌ<ɨ.Count;ˌ++){if(ɨ[ͳ]==ɨ[ˌ])continue;double Ī=m(Ï.Key,ɨ[ˌ]) ;if(Ī>=ˍ-1)continue;double ʾ=ˍ-Ī;if(ʾ>Į-ˍ)ʾ=Į-ˍ;if(ʾ>0){Į-=Ê(Ï.Key.ToString(),ɨ[ͳ],0,ɨ[ˌ],0,ʾ,true);if(Į.Ƒ(ˍ-1,ˍ+1))break ;}}}}return ǟ()?0:1;}void ʽ(){if(ʖ.Count==0)return;if(ɿ==0)ȫ=Κ(ʔ);if(ɿ==1)ȼ=Κ(ʠ);if(enableScriptRefineryFilling){if(ɿ==2) ʿ(ʔ,ȫ);if(ɿ==3)ʿ(ʠ,ȼ);if(ɿ==4)ˉ(ʔ,ȫ);if(ɿ==5)ˉ(ʠ,ȼ);if(ɿ==6&&ʔ.Count>0&&ʠ.Count>0){bool ʼ=false;ʼ=ˀ(ʔ,ʠ,ȫ);if(!ʼ)ˀ(ʠ,ʔ,ȼ) ;}}else{if(ɿ>1)ɿ=6;}ɿ++;if(ɿ>6)ɿ=0;}void ʻ(){if(ʁ==0)ʁ+=ˎ(ʔ.ToList<IMyTerminalBlock>());if(ʁ==1)ʁ+=ˎ(ʠ.ToList< IMyTerminalBlock>());ʁ++;if(ʁ>1)ʁ=0;}void ʺ(List<IMyRefinery>ʹ,List<MyItemType>ʸ){foreach(IMyRefinery Þ in ʹ){var Õ=Þ.GetInventory(0); var N=new List<MyInventoryItem>();Õ.GetItems(N);if(N.Count<2)continue;bool ʷ=false;int ʶ=0;string ʵ="";foreach(var ʴ in ʸ){ for(int E=0;E<N.Count;E++){if(N[E].Type==ʴ){ʶ=E;ʵ=ʴ.SubtypeId;ʷ=true;break;}}if(ʷ)break;}if(ʶ!=0){Õ.TransferItemTo(Õ,ʶ,0, true);DŽ("Sorted the refining queue.\n'"+ʵ+"' is now at the front of the queue.");}}}void ʿ(List<IMyRefinery>ˁ,List< MyItemType>ʸ){if(ˁ.Count==0){ɿ++;return;}MyItemType ˋ=new MyItemType();MyItemType ˊ=MyItemType.MakeOre("Stone");foreach(var ʴ in ʸ ){if(m(ʴ)>100){ˋ=ʴ;break;}}if(!ˋ.ToString().Contains(Ⱥ))return;for(int E=0;E<ˁ.Count;E++){if(ǟ())return;var Õ=ˁ[E]. GetInventory(0);if(!Õ.ƣ(containerFullSpaceLeft)){var N=new List<MyInventoryItem>();Õ.GetItems(N);foreach(var Ï in N){if(Ï.Type==ˋ) return;}IMyTerminalBlock d=Y(ˁ[E],ʪ);if(d!=null){Ê("",ˁ[E],0,d,0);}}}if(!ǟ())ɿ++;}void ˉ(List<IMyRefinery>ˁ,List<MyItemType>ʸ) {if(ˁ.Count==0){ɿ++;return;}double ˈ;foreach(var ʴ in ʸ){if(m(ʴ)==0)continue;IMyTerminalBlock ˇ=f(ʴ,true);if(ˇ==null) continue;for(int E=0;E<ˁ.Count;E++){if(ǟ())return;var Õ=ˁ[E].GetInventory(0);if(!Õ.ƣ(containerFullSpaceLeft))continue;ˈ=Ê(ʴ. ToString(),ˇ,0,ˁ[E],0);if(ˈ==0){ˇ=f(ʴ,true);if(ˇ==null)break;}}}if(!ǟ())ɿ++;}bool ˀ(List<IMyRefinery>ˆ,List<IMyRefinery>ͻ,List< MyItemType>ʸ){for(int E=0;E<ˆ.Count;E++){if((float)ˆ[E].GetInventory(0).CurrentVolume>0.05f)continue;for(int Ƭ=0;Ƭ<ͻ.Count;Ƭ++){if ((float)ͻ[Ƭ].GetInventory(0).CurrentVolume>0){foreach(var ʴ in ʸ){Ê(ʴ.ToString(),ͻ[Ƭ],0,ˆ[E],0,-0.5);}return true;}}} return false;}List<MyItemType>Κ(List<IMyRefinery>ˁ){if(ˁ.Count==0){ɿ++;return null;}List<string>Ι=new List<string>(ȩ);Ι.Sort(( ɧ,Ś)=>(m(MyItemType.MakeIngot(ɧ))/ƪ(ɧ)).CompareTo((m(MyItemType.MakeIngot(Ś))/ƪ(Ś))));Ι.InsertRange(0,fixedRefiningList); List<MyItemType>Θ=new List<MyItemType>();MyItemType L;foreach(var Ï in Ι){L=MyItemType.MakeOre(Ï);foreach(var Þ in ˁ){if(Þ. GetInventory(0).CanItemsBeAdded(1,L)){Θ.Add(L);break;}}}if(!ǟ())ɿ++;return Θ;}void Η(){foreach(var Ƨ in ʓ){var Õ=Ƨ.GetInventory(0); if((float)Õ.CurrentVolume==0)continue;if(Ƨ.IsQueueEmpty||Ƨ.Mode==MyAssemblerMode.Disassembly||!Õ.ƣ(containerFullSpaceLeft) ){IMyTerminalBlock d=Y(Ƨ,ʩ);if(d!=null)Ê("",Ƨ,0,d,0);}}}void Ζ(){foreach(IMyAssembler Ƨ in ʓ){if(Ƨ.Mode==MyAssemblerMode. Disassembly)continue;if(Ƨ.CustomData.Contains("skipQueueSorting")){Ƨ.CustomData="";continue;}var ō=new List<MyProductionItem>();Ƨ. GetQueue(ō);if(ō.Count<2)continue;int ʶ=0;string ʵ="";double Ρ=Double.MaxValue;double Π=Double.MinValue;double Ο,Ξ;for(int E=0;E <ō.Count;E++){MyDefinitionId L=ǭ(ō[E].BlueprintId);Ξ=m(L);Ο=(double)ō[E].Amount;if(Ξ<100&&Ξ<Ρ){Ρ=Ξ;ʶ=E;ʵ=L.SubtypeId. ToString();continue;}if(Ρ==Double.MaxValue&&Ο>Π){Π=Ο;ʶ=E;ʵ=L.SubtypeId.ToString();}}if(ʶ!=0){Ƨ.MoveQueueItemRequest(ō[ʶ].ItemId, 0);DŽ("Sorted the assembling queue.\n'"+ʵ+"' is now at the front of the queue.");}}}void Ν(List<MyDefinitionId>Λ){if(Λ. Count==0)return;if(Λ.Count>1)Λ.Sort((ɧ,Ś)=>m(ǭ(ɧ)).CompareTo(m(ǭ(Ś))));foreach(var Ƨ in ʓ){var ō=new List<MyProductionItem>() ;Ƨ.GetQueue(ō);if(ō.Count<2)continue;foreach(var Ù in Λ){int ƒ=ō.FindIndex(E=>E.BlueprintId==Ù);if(ƒ==-1)continue;if(ƒ==0 ){Ƨ.CustomData="skipQueueSorting";break;}Ƨ.MoveQueueItemRequest(ō[ƒ].ItemId,0);Ƨ.CustomData="skipQueueSorting";DŽ( "Sorted the assembler queue by priority.\n'"+ǭ(Ù).SubtypeId.ToString()+"' is now at the front of the queue.");break;}}}void Ε(MyDefinitionId Ù,double o,bool ç){List <IMyAssembler>Ά=new List<IMyAssembler>();foreach(IMyAssembler Ƨ in ʓ){if(Ƨ.CustomName.Contains(disassembleKeyword)) continue;if(ç==false&&Ƨ.Mode==MyAssemblerMode.Disassembly&&!Ƨ.IsQueueEmpty)continue;if(Ƨ.Mode==MyAssemblerMode.Disassembly){Ƨ. ClearQueue();Ƨ.Mode=MyAssemblerMode.Assembly;}if(Ƨ.CanUseBlueprint(Ù)){Ά.Add(Ƨ);}}if(Ά.Count==0)ǃ( "There's no assembler available to produce '"+Ù.SubtypeName+"'. Make sure, that you have at least one assembler with no tags or the !assemble-only tag!");Έ(Ά,Ù,o);} void Ή(MyDefinitionId Ù,double o){List<IMyAssembler>Ά=new List<IMyAssembler>();foreach(IMyAssembler Ƨ in ʓ){if(Ƨ.CustomName. Contains(assembleKeyword))continue;if(Ƨ.Mode==MyAssemblerMode.Assembly&&Ƨ.IsProducing)continue;if(Ƨ.Mode==MyAssemblerMode. Assembly){Ƨ.ClearQueue();Ƨ.Mode=MyAssemblerMode.Disassembly;}if(Ƨ.Mode==MyAssemblerMode.Assembly)continue;if(Ƨ.CanUseBlueprint(Ù )){Ά.Add(Ƨ);}}if(Ά.Count==0)ǃ("There's no assembler available to dismantle '"+Ù.SubtypeName+ "'. Make sure, that you have at least one assembler with no tags or the !disassemble-only tag!");Έ(Ά,Ù,o);}void Έ(List<IMyAssembler>Ά,MyDefinitionId Ù,double o){if(Ά.Count==0)return;double ͽ=Math.Ceiling(o/Ά.Count); foreach(IMyAssembler Ƨ in Ά){if(ͽ>o)ͽ=Math.Ceiling(o);if(o>0){Ƨ.InsertQueueItem(0,Ù,ͽ);o-=ͽ;}else{break;}}}void ͼ( MyDefinitionId Ù){foreach(IMyAssembler Ƨ in ʓ){var ō=new List<MyProductionItem>();Ƨ.GetQueue(ō);for(int E=0;E<ō.Count;E++){if(ō[E]. BlueprintId==Ù)Ƨ.RemoveQueueItem(E,ō[E].Amount);}}}void Δ(){foreach(IMyAssembler Ƨ in ʓ){Ƨ.UseConveyorSystem=true;Ƨ.CooperativeMode =false;Ƨ.Repeating=false;}}void Γ(){List<IMyAssembler>Β=new List<IMyAssembler>(ʓ);Β.RemoveAll(ɧ=>ɧ.IsQueueEmpty);if(Β. Count==0)return;List<IMyAssembler>Α=new List<IMyAssembler>(ʓ);Α.RemoveAll(ɧ=>!ɧ.IsQueueEmpty);if(Α.Count==0)return;double ΐ,Ώ =0,Ύ;IMyAssembler Ό=null;List<MyProductionItem>ō=new List<MyProductionItem>();foreach(var Ί in Β){ō.Clear();Ί.GetQueue(ō) ;ΐ=0;foreach(var Ï in ō){ΐ+=(double)Ï.Amount;}if(ΐ>Ώ){Ώ=ΐ;Ό=Ί;}}if(Ό==null)return;ō.Clear();Ό.GetQueue(ō);for(int E=0;E<ō .Count;E++){ΐ=(double)ō[E].Amount;if(ΐ<10)continue;Ύ=Math.Floor(ΐ/(Α.Count+1));if(Ύ<1)Ύ=1;for(int Ƭ=0;Ƭ<Α.Count;Ƭ++){if(! Α[Ƭ].CanUseBlueprint(ō[0].BlueprintId))continue;if(Ό.Mode==MyAssemblerMode.Assembly&&Α[Ƭ].CustomName.Contains( disassembleKeyword))continue;if(Ό.Mode==MyAssemblerMode.Disassembly&&Α[Ƭ].CustomName.Contains(assembleKeyword))continue;Α[Ƭ].Mode=Ό.Mode; if(Α[Ƭ].Mode!=Ό.Mode)continue;Α[Ƭ].AddQueueItem(ō[E].BlueprintId,Ύ);Ό.RemoveQueueItem(E,Ύ);ΐ-=Ύ;if(ΐ<=1)break;}}}void ǹ(){ if(ʰ.Count==0)return;double ĝ=spaceForBottles*0.12;MyDefinitionId Ø=MyItemType.MakeOre("Ice");string ě=Ø.ToString();double Ě=0.00037;foreach(IMyGasGenerator Ĕ in ʰ){var Õ=Ĕ.GetInventory(0);double ę=m(Ø,Ĕ);double Ę=ę*Ě;double ė=(double)Õ. MaxVolume-ĝ-Ě;if(Ę>ė+Ě){IMyTerminalBlock d=Y(Ĕ,ʪ);if(d!=null){double ø=(Ę-ė)/Ě;Ê(ě,Ĕ,0,d,0,ø);}}else if(Ę<ė-Ě){IMyTerminalBlock È =f(Ø,true);if(È!=null){double ø=(ė-Ę)/Ě;Ê(ě,È,0,Ĕ,0,ø);}}}double Ė=0;double ĕ=0;foreach(var Ĕ in ʰ){Ė+=m(Ø,Ĕ);var Õ=Ĕ. GetInventory(0);ĕ+=(double)Õ.MaxVolume;}double Ĝ=(Ė*Ě)/ĕ;foreach(var Ğ in ʰ){var P=Ğ.GetInventory(0);double Į=m(Ø,Ğ);double ĭ=Į*Ě; double Ĭ=(double)P.MaxVolume;if(ĭ>Ĭ*(Ĝ+0.001)){foreach(var ī in ʰ){if(Ğ==ī)continue;var O=ī.GetInventory(0);double Ī=m(Ø,ī); double ĩ=Ī*Ě;double Ĩ=(double)O.MaxVolume;if(ĩ<Ĩ*(Ĝ-0.001)){double ħ=((Ĩ*Ĝ)-ĩ)/Ě;if((Į-ħ)*Ě>=Ĭ*Ĝ&&ħ>5){Į-=Ê(ě,Ğ,0,ī,0,ħ); continue;}if((Į-ħ)*Ě<Ĭ*Ĝ&&ħ>5){double Ħ=(Į*Ě-Ĭ*Ĝ)/Ě;Ê(ě,Ğ,0,ī,0,Ħ);break;}}}}}}void ĥ(){if(ʮ.Count==0)return;MyDefinitionId Ĥ= MyItemType.MakeIngot("Uranium");string ģ=Ĥ.ToString();double Ģ=0;double ġ=0;foreach(IMyReactor Ġ in ʮ){Ġ.UseConveyorSystem=false; double ğ=m(Ĥ,Ġ);double ē=uraniumAmountLargeGrid;if(Ġ.CubeGrid.GridSize==0.5f)ē=uraniumAmountSmallGrid;ġ+=ē;if(ğ>ē+0.05){ IMyTerminalBlock d=Y(Ġ,ʩ);if(d!=null){double ø=ğ-ē;Ê(ģ,Ġ,0,d,0,ø);}}else if(ğ<ē-0.05){IMyTerminalBlock È=f(Ĥ,true);if(È!=null){double ø= ē-ğ;Ê(ģ,È,0,Ġ,0,ø);}}Ģ+=m(Ĥ,Ġ);}double Ą=Ģ/ġ;foreach(var ă in ʮ){double Ă=m(Ĥ,ă);double ā=Ą*uraniumAmountLargeGrid;if(ă. CubeGrid.GridSize==0.5f)ā=Ą*uraniumAmountSmallGrid;if(Ă>ā+0.05){foreach(var Ā in ʮ){if(ă==Ā)continue;double ÿ=m(Ĥ,Ā);double þ=Ą* uraniumAmountLargeGrid;if(Ā.CubeGrid.GridSize==0.5f)þ=Ą*uraniumAmountSmallGrid;if(ÿ<þ-0.05){Ă=m(Ĥ,ă);double ý=þ-ÿ;if(Ă-ý>=ā){Ê(ģ,ă,0,Ā,0,ý); continue;}if(Ă-ý<ā){ý=Ă-ā;Ê(ģ,ă,0,Ā,0,ý);break;}}}}}}StringBuilder ü(IMyTextSurface u,bool û=true,bool ú=true,bool ù=true,bool ą =true,bool Ć=true){bool Ē=false;StringBuilder Æ=new StringBuilder();if(û){Æ.Append("Isy's Inventory Manager\n");Æ.Append( u.ŏ('=',u.ų(Æ))).Append("\n\n");}if(ú&&ņ!=null){Æ.Append("Warning!\n"+ņ+"\n\n");Ē=true;}if(ù){Æ.Append(Đ(u,ʪ,"Ores"));Æ. Append(Đ(u,ʩ,"Ingots"));Æ.Append(Đ(u,ʨ,"Components"));Æ.Append(Đ(u,ʧ,"Tools"));Æ.Append(Đ(u,ʦ,"Ammo"));Æ.Append(Đ(u,ʥ, "Bottles"));Æ.Append("=> "+ʚ.Count+" type containers: Balancing "+(balanceTypeContainers?"ON":"OFF")+"\n\n");Ē=true;}if(ą){Æ. Append("Managed blocks:\n");float đ=u.ų(ʞ.Count.ToString());Æ.Append(ʞ.Count+" Inventories (total) / "+ʜ.Count+ " inventories contain items\n");if(ʤ.Count>0){Æ.Append(u.ŏ(' ',đ-u.ų(ʤ.Count.ToString())).ToString()+ʤ.Count+" Special Containers\n");}if(ʖ.Count>0){Æ .Append(u.ŏ(' ',đ-u.ų(ʖ.Count.ToString())).ToString()+ʖ.Count+" Refineries: ");Æ.Append("Ore Balancing "+( enableOreBalancing?"ON":"OFF")+"\n");}if(ʰ.Count>0){Æ.Append(u.ŏ(' ',đ-u.ų(ʰ.Count.ToString())).ToString()+ʰ.Count+" O2/H2 Generators: "); Æ.Append("Ice Balancing "+(enableIceBalancing?"ON":"OFF")+"\n");}if(ʮ.Count>0){Æ.Append(u.ŏ(' ',đ-u.ų(ʮ.Count.ToString()) ).ToString()+ʮ.Count+" Reactors: ");Æ.Append("Uranium Balancing "+(enableUraniumBalancing?"ON":"OFF")+"\n");}if(ʓ.Count>0 ){Æ.Append(u.ŏ(' ',đ-u.ų(ʓ.Count.ToString())).ToString()+ʓ.Count+" Assemblers: ");Æ.Append("Craft "+(enableAutocrafting? "ON":"OFF")+" | ");Æ.Append("Uncraft "+(enableAutodisassembling?"ON":"OFF")+" | ");Æ.Append("Cleanup "+( enableAssemblerCleanup?"ON":"OFF")+"\n");}if(ʱ.Count>0){Æ.Append(u.ŏ(' ',đ-u.ų(ʱ.Count.ToString())).ToString()+ʱ.Count+" Survival Kits: ");Æ. Append("Ingot Crafting "+(enableBasicIngotCrafting?"ON":"OFF")+(ʖ.Count>0?" (Auto OFF - refineries exist)":"")+"\n");}Æ.Append ("\n");Ē=true;}if(Ć&&ʏ.Count!=0){Æ.Append("Last Action:\n"+ʏ[0]);Ē=true;}if(!Ē){Æ.Append("-- No informations to show --") ;}return Æ;}StringBuilder Đ(IMyTextSurface u,List<IMyTerminalBlock>ď,string J){double Ď=0,č=0;foreach(var Z in ď){var Õ=Z .GetInventory(0);Ď+=(double)Õ.CurrentVolume;č+=(double)Õ.MaxVolume;}string Î=ď.Count+"x "+J+":";string Č=Ď.Ɛ();string ċ=č .Ɛ();StringBuilder Ċ=Ǩ(u,Î,Ď,č,Č,ċ);return Ċ;}void ĉ(string Ĉ=null){if(ʌ.Count==0){Ȣ++;return;}for(int E=ɶ;E<ʌ.Count;E++) {if(ǟ())return;ɶ++;var ć=ʌ[E].ƙ(mainLCDKeyword);foreach(var į in ć){var Ĵ=į.Key;var ö=į.Value;bool û=ö.ƥ("showHeading"); bool ú=ö.ƥ("showWarnings");bool ù=ö.ƥ("showContainerStats");bool ą=ö.ƥ("showManagedBlocks");bool Ć=ö.ƥ("showLastAction"); bool İ=ö.ƥ("scrollTextIfNeeded");StringBuilder Æ=new StringBuilder();if(Ĉ!=null){Æ.Append(Ĉ);}else{Æ=ü(Ĵ,û,ú,ù,ą,Ć);}Æ=Ĵ.ţ(Æ ,û?3:0,İ);Ĵ.WriteText(Æ);}}Ȣ++;ɶ=0;}void ʼn(){if(ʋ.Count==0){Ȣ++;return;}StringBuilder ň=new StringBuilder();if(Ȫ.Count==0 ){ň.Append("- No problems detected -");}else{int Ň=1;foreach(var ņ in Ȫ){ň.Append(Ň+". "+ņ.Replace("\n"," ")+"\n");Ň++;}} for(int E=ɵ;E<ʋ.Count;E++){if(ǟ())return;ɵ++;var ć=ʋ[E].ƙ(warningsLCDKeyword);foreach(var į in ć){var Ĵ=į.Key;var ö=į.Value ;bool û=ö.ƥ("showHeading");bool İ=ö.ƥ("scrollTextIfNeeded");StringBuilder Æ=new StringBuilder();if(û){Æ.Append( "Isy's Inventory Manager Warnings\n");Æ.Append(Ĵ.ŏ('=',Ĵ.ų(Æ))).Append("\n\n");}Æ.Append(ň);Æ=Ĵ.ţ(Æ,û?3:0,İ);Ĵ.WriteText(Æ);}}Ȣ++;ɵ=0;}void Ō(){if(ʍ.Count== 0){Ȣ++;return;}StringBuilder ŋ=new StringBuilder();if(ʏ.Count==0){ŋ.Append("- Nothing to show yet -");}else{foreach(var ì in ʏ){ŋ.Append(ì.Replace(": "," ").Replace("\n"," ")+"\n");}}for(int E=ɴ;E<ʍ.Count;E++){if(ǟ())return;ɴ++;var ć=ʍ[E].ƙ( actionsLCDKeyword);foreach(var į in ć){var Ĵ=į.Key;var ö=į.Value;bool û=ö.ƥ("showHeading");bool İ=ö.ƥ("scrollTextIfNeeded");StringBuilder Æ=new StringBuilder();if(û){Æ.Append("Isy's Inventory Manager Actions\n");Æ.Append(Ĵ.ŏ('=',Ĵ.ų(Æ))).Append("\n\n");}Æ. Append(ŋ);Æ=Ĵ.ţ(Æ,û?3:0,İ);Ĵ.WriteText(Æ);}}Ȣ++;ɴ=0;}void Ŋ(){if(ʊ.Count==0){Ȣ++;return;}for(int E=ɳ;E<ʊ.Count;E++){if(ǟ()) return;ɳ++;var ć=ʊ[E].ƙ(performanceLCDKeyword);foreach(var į in ć){var Ĵ=į.Key;var ö=į.Value;bool û=ö.ƥ("showHeading");bool İ= ö.ƥ("scrollTextIfNeeded");StringBuilder Æ=new StringBuilder();if(û){Æ.Append("Isy's Inventory Manager Performance\n");Æ. Append(Ĵ.ŏ('=',Ĵ.ų(Æ))).Append("\n\n");}Æ.Append(ʈ);Æ=Ĵ.ţ(Æ,û?3:0,İ);Ĵ.WriteText(Æ);}}Ȣ++;ɳ=0;}void ĺ(){if(ʉ.Count==0){Ȣ++; return;}Dictionary<IMyTextSurface,string>Ĺ=new Dictionary<IMyTextSurface,string>();Dictionary<IMyTextSurface,string>ĸ=new Dictionary<IMyTextSurface,string>();List<IMyTextSurface>ķ=new List<IMyTextSurface>();List<IMyTextSurface>Ķ=new List<IMyTextSurface >();foreach(var k in ʉ){var ć=k.ƙ(inventoryLCDKeyword);foreach(var į in ć){if(į.Value.Contains(inventoryLCDKeyword+":")){ Ĺ[į.Key]=į.Value;ķ.Add(į.Key);}else{ĸ[į.Key]=į.Value;Ķ.Add(į.Key);}}}HashSet<string>ĵ=new HashSet<string>();foreach(var Ĵ in Ĺ){ĵ.Add(System.Text.RegularExpressions.Regex.Match(Ĵ.Value,inventoryLCDKeyword+@":[A-Za-z]+").Value);}ĵ.RemoveWhere(ij =>ij=="");List<string>IJ=ĵ.ToList();for(int E=ɲ;E<IJ.Count;E++){if(ǟ())return;ɲ++;var ı=Ĺ.Where(Ļ=>Ļ.Value.Contains(IJ[E])); var ļ=from pair in ı orderby System.Text.RegularExpressions.Regex.Match(pair.Value,inventoryLCDKeyword+@":\w+").Value ascending select pair;IMyTextSurface Ņ=ļ.ElementAt(0).Key;string ö=ļ.ElementAt(0).Value;StringBuilder Æ=Ľ(Ņ,ö);if(!ö.ToLower(). Contains("noscroll")){int ń=0;foreach(var ľ in ļ){ń+=ľ.Key.ŕ();}Æ=Ņ.ţ(Æ,0,true,ń);}var Ń=Æ.ToString().Split('\n');int ł=Ń.Length ;int Ł=0;int ŀ,Ŀ;foreach(var ľ in ļ){IMyTextSurface Ĵ=ľ.Key;Ĵ.FontSize=Ņ.TextureSize.Y/Ĵ.TextureSize.Y*Ņ.FontSize;Ĵ.Font= Ņ.Font;Ĵ.TextPadding=Ņ.TextPadding;Ĵ.Alignment=Ņ.Alignment;Ĵ.ContentType=ContentType.TEXT_AND_IMAGE;ŀ=Ĵ.ŕ();Ŀ=0;Æ.Clear() ;while(Ł<ł&&Ŀ<ŀ){Æ.Append(Ń[Ł]+"\n");Ł++;Ŀ++;}Ĵ.WriteText(Æ);}}for(int E=ɱ;E<Ķ.Count;E++){if(ǟ())return;ɱ++; IMyTextSurface Ĵ=Ķ[E];string ö=ĸ[Ĵ];StringBuilder Æ=Ľ(Ĵ,ö);if(!ö.ToLower().Contains("noscroll")){Æ=Ĵ.ţ(Æ,0);}Ĵ.WriteText(Æ);Ĵ. Alignment=TextAlignment.LEFT;Ĵ.ContentType=ContentType.TEXT_AND_IMAGE;}Ȣ++;ɲ=0;ɱ=0;}StringBuilder Ľ(IMyTextSurface u,string ö){ StringBuilder Æ=new StringBuilder();var T=ö.Split('\n').ToList();T.RemoveAll(Å=>Å.StartsWith("@")||Å.Length<=1);bool Ä=true;try{if(T[ 0].Length<=1)Ä=false;}catch{Ä=false;}if(!Ä){Æ.Append("Put an item, type name or Echo command in the custom data.\n\n"+ "Examples:\nComponent\nIngot\nSteelPlate\nEcho My cool text\n\n"+"Optionally, add a max amount for the bars as a 2nd parameter.\n\n"+"Example:\nIngot 100000\n\n"+ "At last, add any of these 5 modifiers (optional):\n\n"+"'noHeading' to hide the heading\n"+"'singleLine' to force one line per item\n"+"'noBar' to hide the bars\n"+ "'noScroll' to prevent the screen from scrolling\n"+"'hideEmpty' to hide items that have an amount of 0\n\n"+ "Examples:\nComponent 100000 noBar\nSteelPlate noHeading noBar hideEmpty\n\n"+"To display multiple different items, use a new line for every item!\n"+ "Full guide: https://steamcommunity.com/sharedfiles/filedetails/?id=1226261795");}else{foreach(var à in T){var Â=Ã.Split(' ');double Á=-1;bool À=false;bool º=false;bool µ=false;bool ª=false;if(Â. Length>=2){try{Á=Convert.ToDouble(Â[1]);}catch{Á=-1;}}string z=Ã.ToLower();if(z.Contains("noheading"))À=true;if(z.Contains( "nobar"))º=true;if(z.Contains("hideempty"))µ=true;if(z.Contains("singleline"))ª=true;if(z.StartsWith("echoc")){string w=Ã.ž( "echoc ","").ž("echoc","");Æ.Append(u.ŏ(' ',(u.Œ()-u.ų(w))/2)).Append(w+"\n");}else if(z.StartsWith("echor")){string w=Ã.ž( "echor ","").ž("echor","");Æ.Append(u.ŏ(' ',u.Œ()-u.ų(w))).Append(w+"\n");}else if(z.StartsWith("echo")){Æ.Append(Ã.ž("echo ","" ).ž("echo","")+"\n");}else{Æ.Append(v(u,Â[0],Á,À,º,µ,ª));}}}if(Æ.Length>2){return Æ.Replace("\n","",0,2);}else{return new StringBuilder("Nothing to show at the moment...");}}StringBuilder v(IMyTextSurface u,string r,double Á,bool À=false,bool º=false,bool µ=false,bool ª=false){StringBuilder Æ=new StringBuilder();bool Ð=Á==-1?true:false;foreach(var Ï in ȯ){if(Ï.ToString(). ToLower().Contains(r.ToLower())){if(Æ.Length==0&&!À){string Î="Items containing '"+char.ToUpper(r[0])+r.Substring(1).ToLower()+ "'";Æ.Append("\n"+u.ŏ(' ',(u.Œ()-u.ų(Î))/2)).Append(Î+"\n\n");}double o=m(Ï);if(o==0&&µ)continue;if(Ð){Á=ư(Ï,true);if(Á==0) continue;}Æ.Append(Ǩ(u,Ï.SubtypeId.ToString(),o,Á,o.Ǝ(),Á.Ǝ(),º,ª));}}if(Æ.Length==0&&!µ){Æ.Append("Error!\n\n");Æ.Append( "No items containing '"+r+"' found!\nCheck the custom data of this LCD and enter a valid type or item name!\n");}return Æ;}void Í(string Ì=""){ ʑ=ʑ>=3?0:ʑ+1;Echo("Isy's Inventory Manager "+ʐ[ʑ]+"\n====================\n");if(ņ!=null){Echo("Warning!\n"+ņ+"\n");} StringBuilder Æ=new StringBuilder();Æ.Append("Script is running in "+(Ǽ?"station":"ship")+" mode\n\n");Æ.Append("Task: "+ȓ[Ȧ]+Ì+"\n") ;Æ.Append("Script step: "+Ȧ+" / "+(ȓ.Length-1)+"\n\n");Æ.Append(NJ);if(ʫ.Count>0){Æ.Append( "[No Sorting] grids:\n==============\n");foreach(var Ë in ʫ){Æ.Append(Ë.CustomName+"\n");}Æ.Append("\n");}if(ʲ.Count>0){Æ.Append( "[No IIM] grids:\n===========\n");foreach(var Ë in ʲ){Æ.Append(Ë.CustomName+"\n");}}ʈ=Æ;Echo(Æ.ToString());if(ʌ.Count==0){Echo( "Hint:\nBuild a LCD and add the main LCD\nkeyword '"+mainLCDKeyword+"' to its name to get\nmore informations about your base\nand the current script actions.\n");}}double Ê (string É,IMyTerminalBlock È,int Ç,IMyTerminalBlock d,int q,double o=-1,bool A=false){var P=È.GetInventory(Ç);var O=d. GetInventory(q);if(O.IsFull||o==0){return 0;}var N=new List<MyInventoryItem>();P.GetItems(N);if(N.Count==0)return 0;double M=0; MyDefinitionId L=new MyDefinitionId();MyDefinitionId K=new MyDefinitionId();string J,I,H="";bool G=false;double F=o;for(int E=N.Count- 1;E>=0;E--){L=N[E].Type;if(A?L.ToString()==É:L.ToString().Contains(É)){if(F<0&&L!=K)M=0;K=L;J=L.TypeId.ToString().Replace (Ȼ,"");I=L.SubtypeId.ToString();G=true;if(!P.CanTransferItemTo(O,L)){ǃ("'"+I+"' couldn't be transferred\nfrom '"+È. CustomName+"'\nto '"+d.CustomName+"'\nThere's no valid conveyor path!");return 0;}double D=(double)N[E].Amount;double C=0;bool B= false;if(F==-1){B=P.TransferItemTo(O,E,null,true);}else if(F==-0.5){double Q=Math.Ceiling((double)N[E].Amount/2);B=P. TransferItemTo(O,E,null,true,(VRage.MyFixedPoint)Q);}else{if(!J.Contains(ȹ))o=Math.Ceiling(o);B=P.TransferItemTo(O,E,null,true,(VRage. MyFixedPoint)o);}if(!B){ǃ("'"+I+"' couldn't be transferred\nfrom '"+È.CustomName+"'\nto '"+d.CustomName+"'\nThe inventory is full!") ;return 0;}N.Clear();P.GetItems(N);try{if((MyDefinitionId)N[E].Type==L){C=(double)N[E].Amount;}}catch{C=0;}double S=D-C;M +=S;o-=S;if(S>0){if(H!="")H+=", ";H+=Math.Round(S,2)+" "+I+" "+J;}if(o<=0&&F>=0)break;if(!O.ƣ(containerFullSpaceLeft)) break;}}if(!G)return 0;if(M>0){DŽ("Moved: "+H+"\nfrom: '"+È.CustomName+"'\nto: '"+d.CustomName+"'");}else{H=Math.Round(o,2)+ " "+É.Replace(Ȼ,"");if(F==-1)H="all items";if(F==-0.5)H="half of the items";ǃ("Couldn't transfer '"+H+"'\nfrom '"+È. CustomName+"'\nto '"+d.CustomName+"'\nCheck conveyor connection!");}return M;}double m(MyDefinitionId L,IMyTerminalBlock k,int h=0 ){return(double)k.GetInventory(h).GetItemAmount(L);;}IMyTerminalBlock f(MyDefinitionId L,bool e=false,IMyTerminalBlock d= null){try{if(ʀ.GetInventory(0).FindItem(L)!=null&&ʀ!=d){return ʀ;}}catch{}foreach(var Z in ʜ){if(L.SubtypeId.ToString()== "Ice"&&Z.GetType().ToString().Contains("MyGasGenerator"))continue;if(Z.GetInventory(0).FindItem(L)!=null){ʀ=Z;return Z;}}if(e ){foreach(var Z in ʤ){if(d!=null){if(ê(Z)<=ê(d))continue;}if(Z.GetInventory(0).FindItem(L)!=null){return Z;}}}return null ;}IMyTerminalBlock Y(IMyTerminalBlock V,List<IMyTerminalBlock>U){IMyTerminalBlock X;X=W(V,U);if(X!=null)return X;X=W(V,ʛ) ;if(X==null)ǃ("'"+V.CustomName+"'\nhas no empty containers to move its items!");return X;}IMyTerminalBlock W( IMyTerminalBlock V,List<IMyTerminalBlock>U){var R=V.GetInventory(0);foreach(var Z in U){if(Z==V)continue;var Õ=Z.GetInventory(0);if(Õ.ƣ( containerFullSpaceLeft)){if(!Z.GetInventory(0).IsConnectedTo(R))continue;return Z;}}return null;}int ê(IMyTerminalBlock k){string è=System. Text.RegularExpressions.Regex.Match(k.CustomName,@"\[p(\d+|max|min)\]",System.Text.RegularExpressions.RegexOptions. IgnoreCase).Groups[1].Value.ToLower();int ç=0;bool æ=true;if(è=="max"){ç=int.MinValue;}else if(è=="min"){ç=int.MaxValue;}else{æ= Int32.TryParse(è,out ç);}if(!æ){string Ë=k.IsSameConstructAs(Me)?"":"1";Int32.TryParse(Ë+k.EntityId.ToString().Substring(0,4) ,out ç);}return ç;}string å(string ã){é();var á=Storage.Split('\n');foreach(var à in á){if(Ã.Contains(ã)){return Ã. Replace(ã+"=","");}}return"";}void ä(string ã,string â=""){é();var á=Storage.Split('\n');string à="";foreach(var à in á){if(Ã. Contains(ã)){à+=ã+"="+â+"\n";}else{à+=Ã+"\n";}}Storage=à.TrimEnd('\n');}void é(){var á=Storage.Split('\n');if(á.Length!=Ƞ.Count) {string à="";foreach(var Ï in Ƞ){à+=Ï.Key+"="+Ï.Value+"\n";}Storage=à.TrimEnd('\n');}}void õ(IMyTerminalBlock Z){foreach( var ô in Ǿ.Keys.ToList()){Ǿ[ô]="0";}string ó="Special Container modes:";List<string>ò=new List<string>();List<string>ñ=Z. CustomData.Replace("\n\n\n","\n\n").Split('\n').ToList();bool ð=false,ï=false,î=false;int í=-1;for(int E=0;E<ñ.Count;E++){if(í==-1 ){if(ñ[E].Contains(ó)){í=E;continue;}else{ò.Add(ñ[E]);continue;}}if(ñ[E].StartsWith("- "))continue;var ì=ñ[E].Split('='); if(!ï&&ì.Length!=2){continue;}else if(ï&&ì.Length!=2){î=true;}if(î){ò.Add(ñ[E]);continue;}ï=true;if(!Ǿ.ContainsKey(ì[0])){ MyDefinitionId L;if(MyDefinitionId.TryParse(Ȼ+ì[0],out L)){Ý(L);ð=true;}}Ǿ[ì[0]]=ì[1];}if(ð)Ó();for(int E=ò.Count-1;E>=0;E--){if(ò[E] ==string.Empty){ò.RemoveAt(E);}else{break;}}try{while(ò[0]==string.Empty){ò.RemoveAt(0);}}catch{}if(í>0)ò.Add("");ò.Add( "@"+ó);ò.Add("");ò.Add("- Normal: stores wanted amount, removes excess. Usage: item=100");ò.Add( "- Minimum: stores wanted amount, ignores excess. Usage: item=100M");ò.Add("- Limiter: doesn't store items, only removes excess. Usage: item=100L");ò.Add( "- All: stores all items it can get until it's full. Usage: item=All");ò.Add("");foreach(var Ï in Ǿ){ò.Add(Ï.Key+"="+Ï.Value);}Z.CustomData=string.Join("\n",ò);}void ë(){ʬ.Clear();ʬ. AddRange(Ȭ);ʬ.AddRange(Ȯ);ʬ.AddRange(ȭ);ʬ.AddRange(ș);ʬ.AddRange(Ș);ʬ.AddRange(Ǻ);ʬ.AddRange(ȉ);ʬ.AddRange(Ȉ);ʬ.AddRange(ȇ);ʬ. AddRange(Ȇ);Ǿ.Clear();foreach(var Ï in Ȭ){Ǿ[ȸ+"/"+Ï]="0";}foreach(var Ï in Ȯ){Ǿ[Ⱥ+"/"+Ï]="0";}foreach(var Ï in ȭ){Ǿ[ȹ+"/"+Ï]="0" ;}foreach(var Ï in ș){Ǿ[ȷ+"/"+Ï]="0";}foreach(var Ï in Ș){Ǿ[ȶ+"/"+Ï]="0";}foreach(var Ï in Ǻ){Ǿ[ȵ+"/"+Ï]="0";}foreach(var Ï in ȉ){Ǿ[ȴ+"/"+Ï]="0";}foreach(var Ï in Ȉ){Ǿ[ȳ+"/"+Ï]="0";}foreach(var Ï in ȇ){Ǿ[Ȳ+"/"+Ï]="0";}foreach(var Ï in Ȇ){Ǿ[ȱ+ "/"+Ï]="0";}}void Ô(){for(int E=ɰ;E<ʞ.Count;E++){if(ǟ())return;if(ɰ>=ʞ.Count-1){ɰ=0;}else{ɰ++;}var N=new List< MyInventoryItem>();ʞ[E].GetInventory(0).GetItems(N);foreach(var Ï in N){MyDefinitionId L=Ï.Type;if(ȯ.Contains(L))continue;DŽ( "Found new item!\n"+L.SubtypeId.ToString()+" ("+L.TypeId.ToString().Replace(Ȼ,"")+")");ß(L);Ý(L);Ƽ(L);}}}bool Ó(){Ü();var Ò=Me.CustomData. Split('\n');GridTerminalSystem.GetBlocksOfType(ʓ);bool Ñ=false;foreach(var à in Ò){var Ö=Ã.Split(';');if(Ö.Length<2)continue; MyDefinitionId L;if(!MyDefinitionId.TryParse(Ö[0],out L))continue;if(ʓ.Count==0){Ñ=true;}else{MyDefinitionId Ù;if(MyDefinitionId. TryParse(Ö[1],out Ù)){if(ƽ(Ù)){ǫ(L,Ù);}else{Dž(L);continue;}}}ß(L);Ǫ(L);}if(Ñ)return false;return true;}void ß(MyDefinitionId L){ string J=L.TypeId.ToString().Replace(Ȼ,"");string I=L.SubtypeId.ToString();if(J==Ⱥ){Ȯ.Add(I);ƫ(I);if(!I.Contains("Ice")){ foreach(var Þ in ʖ){if(Þ.GetInventory(0).CanItemsBeAdded(1,L)){ȩ.Add(I);break;}}}}else if(J==ȹ){ȭ.Add(I);}else if(J==ȸ){Ȭ.Add(I );}else if(J==ȷ){ș.Add(I);}else if(J==ȶ){Ș.Add(I);}else if(J==ȵ){Ǻ.Add(I);}else if(J==ȴ){ȉ.Add(I);}else if(J==ȳ){Ȉ.Add(I) ;}else if(J==Ȳ){ȇ.Add(I);}else if(J==ȱ){Ȇ.Add(I);}}void Ý(MyDefinitionId L){Ü();var Ò=Me.CustomData.Split('\n').ToList(); foreach(var à in Ò){try{if(Ã.Substring(0,Ã.IndexOf(";"))==L.ToString())return;}catch{}}for(int E=Ò.Count-1;E>=0;E--){if(Ò[E]. Contains(";")){Ò.Insert(E+1,L+";noBP");break;}}Me.CustomData=String.Join("\n",Ò);Ǫ(L);}void Ü(){if(!Me.CustomData.Contains(ȡ)){ Me.CustomData=(Ǽ?ǻ:Ȋ)+ȡ;}}void Û(){if(Ȝ!=null){string Ú="Blueprint learning aborted!\nExactly 1 itemstack in the queue and output is needed to learn new recipes! Also, did you queue up at least 100 items?" ;MyDefinitionId Ù,L;var N=new List<MyInventoryItem>();Ȝ.GetInventory(1).GetItems(N);var ō=new List<MyProductionItem>();Ȝ. GetQueue(ō);try{Ù=ō[0].BlueprintId;L=N[0].Type;}catch{ǃ(Ú);Ȝ.CustomName=ț;Ȝ=null;return;}Ȝ.CustomName=ț;if(Ȝ.Mode== MyAssemblerMode.Assembly&&Ù==Ț){if(!ț.Contains(learnManyKeyword))Ȝ.CustomName=ț.Replace(" "+learnKeyword,"").Replace(learnKeyword+" ", "");Ȝ.ClearQueue();Ț=new MyDefinitionId();DŽ("Learned new Blueprint!\n'"+Ù.ToString().Replace(Ȼ,"")+"'\nproduces: '"+L. ToString().Replace(Ȼ,"")+"'");Ǫ(L);ß(L);ǫ(L,Ù);Ý(L);Ʒ(L,Ù);ƾ(Ȝ);Ȝ=null;return;}else if(ō.Count!=1){ǃ(Ú);}}Ȝ=null;Ț=new MyDefinitionId();foreach(var Ƨ in ʳ){var ō=new List<MyProductionItem>();Ƨ.GetQueue(ō);if(ō.Count==1&&Ƨ.Mode==MyAssemblerMode.Assembly) {if(!ƾ(Ƨ))return;Ȝ=Ƨ;Ț=ō[0].BlueprintId;ț=Ƨ.CustomName;Ƨ.CustomName="Learning "+Ț.SubtypeName+" in: "+Ƨ.CustomName;return ;}}}bool ƾ(IMyAssembler Ƨ){if(Ƨ.GetInventory(1).ItemCount!=0){IMyTerminalBlock d=Y(Ƨ,ʨ);if(d!=null){Ê("",Ƨ,1,d,0);return true;}else{ǃ("Can't learn blueprint!\nNo free containers to clear the output inventory found!");return false;}}return true;} bool ƽ(MyDefinitionId Ù){try{foreach(var Ƨ in ʓ){if(Ƨ.CanUseBlueprint(Ù))return true;}}catch{return false;}return false;} void Ƽ(MyDefinitionId L){if(ʓ.Count==0)return;MyDefinitionId Ù;bool ƭ=ȁ.TryGetValue(L,out Ù);if(ƭ)ƭ=ƽ(Ù);if(!ƭ){var ƻ=new List<string>{"AutoPistol","BP","","Component","Magazine","_Blueprint"};bool ƺ=false;foreach(var ƹ in ƻ){string Ƹ=Ȱ+L. SubtypeId.ToString().Replace("AutoPistolItem","").Replace("PistolItem","").Replace("Item","")+ƹ;MyDefinitionId.TryParse(Ƹ,out Ù); ƺ=ƽ(Ù);if(ƺ){ǫ(L,Ù);Ʒ(L,Ù);ƭ=true;return;}}}}void Ʒ(MyDefinitionId L,MyDefinitionId Ù){Ü();var Ò=Me.CustomData.Split('\n' );for(var E=0;E<Ò.Length;E++){if(Ò[E].Substring(0,Ò[E].IndexOf(";"))!=L.ToString())continue;var Ö=Ò[E].Split(';');Ò[E]=Ö[ 0]+";"+Ù.ToString();Me.CustomData=String.Join("\n",Ò);return;}}void Dž(MyDefinitionId L){Ü();var Ò=Me.CustomData.Split( '\n').ToList();Ò.RemoveAll(E=>E.Contains(L.ToString()+";"));Me.CustomData=String.Join("\n",Ò);}void DŽ(string Ĉ){ʏ.Insert(0,ʎ +Ĉ);if(ʏ.Count>=maxEntries)ʏ.RemoveAt(maxEntries-1);}void ǃ(string Ĉ){Ȫ.Add(Ĉ);ȍ.Add(Ĉ);ņ=Ȫ.ElementAt(0);}void ǂ(){Me. CustomData="";foreach(var Z in ʤ){List<string>Ò=Z.CustomData.Replace(" ","").TrimEnd('\n').Split('\n').ToList();Ò.RemoveAll(Ã=>!Ã. Contains("=")||Ã.Contains("=0"));Z.CustomData=string.Join("\n",Ò);}Echo("Stored items deleted!\n");if(ʤ.Count>0)Echo( "Also deleted itemlists of "+ʤ.Count+" Special containers!\n");Echo("Please hit 'Recompile'!\n\nScript stopped!");}void ǁ(){ȅ.Clear();List< IMyTerminalBlock>ǀ=ʡ.ToList<IMyTerminalBlock>();List<IMyTerminalBlock>ƿ=ʕ.ToList<IMyTerminalBlock>();ƶ(ʞ,0);ƶ(ǀ,1);ƶ(ƿ,1);}void ƶ(List< IMyTerminalBlock>Ƶ,int h){for(int E=0;E<Ƶ.Count;E++){var N=new List<MyInventoryItem>();Ƶ[E].GetInventory(h).GetItems(N);for(int Ƭ=0;Ƭ<N. Count;Ƭ++){MyDefinitionId L=N[Ƭ].Type;if(ȅ.ContainsKey(L)){ȅ[L]+=(double)N[Ƭ].Amount;}else{ȅ[L]=(double)N[Ƭ].Amount;}}}} double m(MyDefinitionId L){double Ƈ;ȅ.TryGetValue(L,out Ƈ);return Ƈ;}void ƫ(string Ʃ){if(!Ƚ.ContainsKey(Ʃ)){Ƚ[Ʃ]=0.5;}}double ƪ(string Ʃ){double Ƈ;Ʃ=Ʃ.Replace(Ȼ+Ⱥ+"/","");Ƚ.TryGetValue(Ʃ,out Ƈ);return Ƈ!=0?Ƈ:0.5;}void ƨ(){Ȅ.Clear();foreach( IMyAssembler Ƨ in ʓ){var ō=new List<MyProductionItem>();Ƨ.GetQueue(ō);if(ō.Count>0&&!Ƨ.IsProducing){if(Ƨ.Mode==MyAssemblerMode. Assembly)ǃ("'"+Ƨ.CustomName+"' has a queue but is currently not assembling!\nAre there enough ingots for the craft?");if(Ƨ.Mode ==MyAssemblerMode.Disassembly)ǃ("'"+Ƨ.CustomName+ "' has a queue but is currently not disassembling!\nAre the items to disassemble missing?");}foreach(var Ï in ō){MyDefinitionId Ù=Ï.BlueprintId;if(Ȅ.ContainsKey(Ù)){Ȅ[Ù]+=(double)Ï.Amount;}else{Ȅ[Ù]=(double)Ï. Amount;}}}}double ƴ(MyDefinitionId Ù){double Ƈ;Ȅ.TryGetValue(Ù,out Ƈ);return Ƈ;}void Ƴ(MyDefinitionId L,double o){ȃ[L]=o;} double Ʋ(MyDefinitionId Ù){int Ƈ;if(!Ȃ.TryGetValue(Ù,out Ƈ))Ƈ=0;return Ƈ;}void Ʊ(MyDefinitionId L,int â){Ȃ[L]=â;}double ư( MyDefinitionId L,bool Ư=false){double Ƈ;if(!ȃ.TryGetValue(L,out Ƈ)&&Ư)Ƈ=10000;return Ƈ;}MyDefinitionId Ʈ(MyDefinitionId L,out bool ƭ){ MyDefinitionId Ù;ƭ=ȁ.TryGetValue(L,out Ù);return Ù;}MyDefinitionId ǭ(MyDefinitionId Ù){MyDefinitionId L;Ȁ.TryGetValue(Ù,out L);return L;}void ǫ(MyDefinitionId L,MyDefinitionId Ù){ȁ[L]=Ù;Ȁ[Ù]=L;}void Ǫ(MyDefinitionId L){ȯ.Add(L);ǿ[L.SubtypeId.ToString()]=L ;}MyDefinitionId ǩ(string I){MyDefinitionId L=new MyDefinitionId();ǿ.TryGetValue(I,out L);return L;}StringBuilder Ǩ( IMyTextSurface u,string Î,double â,double ǧ,string Ǭ=null,string Ǧ=null,bool º=false,bool Ǹ=false,string đ=""){string Č=â.ToString(); string ċ=ǧ.ToString();if(Ǭ!=null){Č=Ǭ;}if(Ǧ!=null){ċ=Ǧ;}float ŵ=u.FontSize;float Ƕ=0.61f;float ǵ=1.01f;if(u.Font=="Monospace") {Ƕ=0.41f;ǵ=0.81f;}float ś=u.Œ();char Ƿ=' ';float Ǵ=u.Ŧ(Ƿ);StringBuilder dz=new StringBuilder(" "+â.Ƌ(ǧ));dz=u.ŏ(Ƿ,u.ų( "9999.9%")-u.ų(dz)).Append(dz);StringBuilder Dz=new StringBuilder(Č+" / "+ċ);StringBuilder DZ=new StringBuilder();StringBuilder ǰ=new StringBuilder();StringBuilder ǯ;if(ǧ==0){DZ.Append(đ+Î+" ");ǯ=u.ŏ(Ƿ,ś-u.ų(DZ)-u.ų(Č));DZ.Append(ǯ).Append(Č);return DZ.Append("\n");} double ǖ=0;if(ǧ>0)ǖ=â/ǧ>=1?1:â/ǧ;if(Ǹ&&!º){if(ŵ<Ƕ||(ŵ<ǵ&&ś>512)){DZ.Append(Ǯ(u,ś*0.25f,ǖ,đ)+" "+Î+" ");ǯ=u.ŏ(Ƿ,ś*0.75-u.ų(DZ)-u. ų(Č+" /"));DZ.Append(ǯ).Append(Dz);ǯ=u.ŏ(Ƿ,ś-u.ų(DZ)-u.ų(dz));DZ.Append(ǯ);DZ.Append(dz);}else{DZ.Append(Ǯ(u,ś*0.3f,ǖ,đ)+" "+Î+ " ");ǯ=u.ŏ(Ƿ,ś-u.ų(DZ)-u.ų(dz));DZ.Append(ǯ);DZ.Append(dz);}}else{DZ.Append(đ+Î+" ");if(ŵ<Ƕ||(ŵ<ǵ&&ś>512)){ǯ=u.ŏ(Ƿ,ś*0.5-u.ų(DZ)-u .ų(Č+" /"));DZ.Append(ǯ).Append(Dz);ǯ=u.ŏ(Ƿ,ś-u.ų(DZ)-u.ų(dz));DZ.Append(ǯ).Append(dz);if(!º){ǰ=Ǯ(u,ś,ǖ,đ).Append("\n");}}else{ ǯ=u.ŏ(Ƿ,ś-u.ų(DZ)-u.ų(Dz));DZ.Append(ǯ).Append(Dz);if(!º){ǰ=Ǯ(u,ś-u.ų(dz),ǖ,đ);ǰ.Append(dz).Append("\n");}}}return DZ.Append( "\n").Append(ǰ);}StringBuilder Ǯ(IMyTextSurface u,float Ŷ,double ǖ,string đ){StringBuilder ǔ,Ǔ;char ǒ='[';char Ǒ=']';char ǐ= 'I';char Ǐ='∙';float ǎ=u.Ŧ(ǒ);float Ǎ=u.Ŧ(Ǒ);float nj=0;if(đ!="")nj=u.ų(đ);float Nj=Ŷ-ǎ-Ǎ-nj;ǔ=u.ŏ(ǐ,Nj*ǖ);Ǔ=u.ŏ(Ǐ,Nj-u.ų(ǔ)); return new StringBuilder().Append(đ).Append(ǒ).Append(ǔ).Append(Ǔ).Append(Ǒ);}StringBuilder NJ=new StringBuilder( "No performance Information available!");Dictionary<string,int>lj=new Dictionary<string,int>();List<int>Lj=new List<int>(new int[600]);List<double>LJ=new List< double>(new double[600]);double dž,Ǖ,Ǘ,Ǥ,ǥ;int ǣ,Ǣ=0;void ǡ(string Ǡ){Ǣ=Ǣ>=599?0:Ǣ+1;ǣ=Runtime.CurrentInstructionCount;if(ǣ>Ǖ)Ǖ =ǣ;Lj[Ǣ]=ǣ;Ǥ=Lj.Sum()/Lj.Count;NJ.Clear();NJ.Append("Instructions: "+ǣ+" / "+Runtime.MaxInstructionCount+"\n");NJ.Append( "Max. Instructions: "+Ǖ+" / "+Runtime.MaxInstructionCount+"\n");NJ.Append("Avg. Instructions: "+Math.Floor(Ǥ)+" / "+Runtime. MaxInstructionCount+"\n\n");dž=Runtime.LastRunTimeMs;if(dž>Ǘ&&lj.ContainsKey(Ǡ))Ǘ=dž;LJ[Ǣ]=dž;ǥ=LJ.Sum()/LJ.Count;NJ.Append("Last runtime: "+Math. Round(dž,4)+" ms\n");NJ.Append("Max. runtime: "+Math.Round(Ǘ,4)+" ms\n");NJ.Append("Avg. runtime: "+Math.Round(ǥ,4)+" ms\n\n");NJ .Append("Instructions per Method:\n");lj[Ǡ]=ǣ;foreach(var Ï in lj.OrderByDescending(E=>E.Value)){NJ.Append("- "+Ï.Key+": "+Ï .Value+"\n");}NJ.Append("\n");}bool ǟ(double â=10){return Runtime.CurrentInstructionCount>â*1000;}List<IMyTerminalBlock>Ǟ( string Ƙ,string[]ǝ=null,string ǜ="Debug",float Ǜ=0.6f,float ǚ=2f){string Ǚ="[IsyLCD]";var ǘ=new List<IMyTerminalBlock>(); GridTerminalSystem.GetBlocksOfType<IMyTextSurfaceProvider>(ǘ,Ś=>Ś.IsSameConstructAs(Me)&&(Ś.CustomName.Contains(Ƙ)||(Ś.CustomName.Contains (Ǚ)&&Ś.CustomData.Contains(Ƙ))));var ű=ǘ.FindAll(Ś=>Ś.CustomName.Contains(Ƙ));foreach(var u in ű){u.CustomName=u. CustomName.Replace(Ƙ,"").Replace(" "+Ƙ,"").TrimEnd(' ');bool ů=false;bool Ů=false;int ŭ=0;if(u is IMyTextSurface){if(!u.CustomName .Contains(Ǚ))ů=true;if(!u.CustomData.Contains(Ƙ)){Ů=true;u.CustomData="@0 "+Ƙ+(ǝ!=null?"\n"+String.Join("\n",ǝ):"");}} else if(u is IMyTextSurfaceProvider){if(!u.CustomName.Contains(Ǚ))ů=true;int Ŭ=(u as IMyTextSurfaceProvider).SurfaceCount; for(int E=0;E<Ŭ;E++){if(!u.CustomData.Contains("@"+E)){Ů=true;ŭ=E;u.CustomData+=(u.CustomData==""?"":"\n\n")+"@"+E+" "+Ƙ+(ǝ !=null?"\n"+String.Join("\n",ǝ):"");break;}}}else{ǘ.Remove(u);}if(ů)u.CustomName+=" "+Ǚ;if(Ů){var Ĵ=(u as IMyTextSurfaceProvider).GetSurface(ŭ);Ĵ.Font=ǜ;Ĵ.FontSize=Ǜ;Ĵ.TextPadding=ǚ;Ĵ.Alignment=TextAlignment.LEFT;Ĵ.ContentType=ContentType. TEXT_AND_IMAGE;}}return ǘ;} }class ū:IComparer<MyDefinitionId>{public int Compare(MyDefinitionId ũ,MyDefinitionId Ũ){return ũ.ToString().CompareTo(Ũ. ToString());}}class Ū:IEqualityComparer<MyInventoryItem>{public bool Equals(MyInventoryItem ũ,MyInventoryItem Ũ){return ũ. ToString()==Ũ.ToString();}public int GetHashCode(MyInventoryItem Ï){return Ï.ToString().GetHashCode();}}public static partial class ŧ{private static Dictionary<char,float>Ű=new Dictionary<char,float>();public static void Ų(string Ź,float ź){foreach( char Ŵ in Ź){Ű[Ŵ]=ź;}}public static void Ÿ(){if(Ű.Count>0)return;Ų( "3FKTabdeghknopqsuy£µÝàáâãäåèéêëðñòóôõöøùúûüýþÿāăąďđēĕėęěĝğġģĥħĶķńņňʼnōŏőśŝşšŢŤŦũūŭůűųŶŷŸșȚЎЗКЛбдекруцяёђћўџ",18);Ų("ABDNOQRSÀÁÂÃÄÅÐÑÒÓÔÕÖØĂĄĎĐŃŅŇŌŎŐŔŖŘŚŜŞŠȘЅЊЖф□",22);Ų("#0245689CXZ¤¥ÇßĆĈĊČŹŻŽƒЁЌАБВДИЙПРСТУХЬ€",20);Ų( "¥$&GHPUVY§ÙÚÛÜÞĀĜĞĠĢĤĦŨŪŬŮŰŲОФЦЪЯжы†‡",21);Ų("! !I`ijl ¡¨¯´¸ÌÍÎÏìíîïĨĩĪīĮįİıĵĺļľłˆˇ˘˙˚˛˜˝ІЇії‹›∙",9);Ų("?7?Jcz¢¿çćĉċčĴźżžЃЈЧавийнопсъьѓѕќ",17);Ų( "():《》,。、;【】(),.1:;[]ft{}·ţťŧț",10);Ų("+<=>E^~¬±¶ÈÉÊË×÷ĒĔĖĘĚЄЏЕНЭ−",19);Ų("L_vx«»ĹĻĽĿŁГгзлхчҐ–•",16);Ų("\"-rª­ºŀŕŗř",11);Ų("WÆŒŴ—…‰",32);Ų("'|¦ˉ‘’‚",7) ;Ų("@©®мшњ",26);Ų("mw¼ŵЮщ",28);Ų("/ijтэє",15);Ų("\\°“”„",13);Ų("*²³¹",12);Ų("¾æœЉ",29);Ų("%IJЫ",25);Ų("MМШ",27);Ų("½Щ",30); Ų("ю",24);Ų("ј",8);Ų("љ",23);Ų("ґ",14);Ų("™",31);}public static Vector2 ŷ(this IMyTextSurface Ĵ,StringBuilder Ĉ){Ÿ(); Vector2 Ŷ=new Vector2();if(Ĵ.Font=="Monospace"){float ŵ=Ĵ.FontSize;Ŷ.X=(float)(Ĉ.Length*19.4*ŵ);Ŷ.Y=(float)(28.8*ŵ);return Ŷ;} else{float ŵ=(float)(Ĵ.FontSize*0.779);foreach(char Ŵ in Ĉ.ToString()){try{Ŷ.X+=Ű[Ŵ]*ŵ;}catch{}}Ŷ.Y=(float)(28.8*Ĵ.FontSize) ;return Ŷ;}}public static float ų(this IMyTextSurface u,StringBuilder Ĉ){Vector2 œ=u.ŷ(Ĉ);return œ.X;}public static float ų(this IMyTextSurface u,string Ĉ){Vector2 œ=u.ŷ(new StringBuilder(Ĉ));return œ.X;}public static float Ŧ(this IMyTextSurface u,char ŗ){float Ŗ=ų(u,new string(ŗ,1));return Ŗ;}public static int ŕ(this IMyTextSurface u){Vector2 ő=u.SurfaceSize; float Ő=u.TextureSize.Y;if(ő.X<512||Ő!=ő.Y)ő.Y*=512/Ő;float Ŕ=ő.Y*(100-u.TextPadding*2)/100;Vector2 œ=u.ŷ(new StringBuilder( "T"));return(int)(Ŕ/œ.Y);}public static float Œ(this IMyTextSurface u){Vector2 ő=u.SurfaceSize;float Ő=u.TextureSize.Y;if(ő .X<512||Ő!=ő.Y)ő.X*=512/Ő;return ő.X*(100-u.TextPadding*2)/100;}public static StringBuilder ŏ(this IMyTextSurface u,char Ŏ,double Ř){int ř=(int)(Ř/Ŧ(u,Ŏ));if(ř<0)ř=0;return new StringBuilder().Append(Ŏ,ř);}private static DateTime Ť=DateTime. Now;private static Dictionary<int,List<int>>ť=new Dictionary<int,List<int>>();public static StringBuilder ţ(this IMyTextSurface u,StringBuilder Ĉ,int Ţ=3,bool İ=true,int ŀ=0){int š=u.GetHashCode();if(!ť.ContainsKey(š)){ť[š]=new List<int>{1,3,Ţ,0}; }int Š=ť[š][0];int ş=ť[š][1];int Ş=ť[š][2];int ŝ=ť[š][3];var Ŝ=Ĉ.ToString().TrimEnd('\n').Split('\n');List<string>Ń=new List<string>();if(ŀ==0)ŀ=u.ŕ();float ś=u.Œ();StringBuilder đ,Â=new StringBuilder();for(int E=0;E<Ŝ.Length;E++){if(E<Ţ||E<Ş|| Ń.Count-Ş>ŀ||u.ų(Ŝ[E])<=ś){Ń.Add(Ŝ[E]);}else{try{Â.Clear();float ƈ,ƞ;var Ɲ=Ŝ[E].Split(' ');string Ɯ=System.Text. RegularExpressions.Regex.Match(Ŝ[E],@"\d+(\.|\:)\ ").Value;đ=u.ŏ(' ',u.ų(Ɯ));foreach(var ƛ in Ɲ){ƈ=u.ų(Â);ƞ=u.ų(ƛ);if(ƈ+ƞ>ś){Ń.Add(Â. ToString());Â=new StringBuilder(đ+ƛ+" ");}else{Â.Append(ƛ+" ");}}Ń.Add(Â.ToString());}catch{Ń.Add(Ŝ[E]);}}}if(İ){if(Ń.Count>ŀ){ if(DateTime.Now.Second!=ŝ){ŝ=DateTime.Now.Second;if(ş>0)ş--;if(ş<=0)Ş+=Š;if(Ş+ŀ-Ţ>=Ń.Count&&ş<=0){Š=-1;ş=3;}if(Ş<=Ţ&&ş<=0) {Š=1;ş=3;}}}else{Ş=Ţ;Š=1;ş=3;}ť[š][0]=Š;ť[š][1]=ş;ť[š][2]=Ş;ť[š][3]=ŝ;}else{Ş=Ţ;}StringBuilder ƚ=new StringBuilder();for( var Ã=0;Ã<Ţ;Ã++){ƚ.Append(Ń[Ã]+"\n");}try{for(var Ã=Ş;Ã<Ń.Count;Ã++){ƚ.Append(Ń[Ã]+"\n");}}catch{}return ƚ;}public static Dictionary<IMyTextSurface,string>ƙ(this IMyTerminalBlock k,string Ƙ,Dictionary<string,string>Ɨ=null){var Ɩ=new Dictionary< IMyTextSurface,string>();if(k is IMyTextSurface){Ɩ[k as IMyTextSurface]=k.CustomData;}else if(k is IMyTextSurfaceProvider){var ƕ= System.Text.RegularExpressions.Regex.Matches(k.CustomData,@"@(\d).*("+Ƙ+@")");int Ɣ=(k as IMyTextSurfaceProvider).SurfaceCount ;foreach(System.Text.RegularExpressions.Match Ɠ in ƕ){int ƒ=-1;if(int.TryParse(Ɠ.Groups[1].Value,out ƒ)){if(ƒ>=Ɣ)continue ;string Ò=k.CustomData;int Ɵ=Ò.IndexOf("@"+ƒ);int Ʀ=Ò.IndexOf("@",Ɵ+1)-Ɵ;string ö=Ʀ<=0?Ò.Substring(Ɵ):Ò.Substring(Ɵ,Ʀ);Ɩ[ (k as IMyTextSurfaceProvider).GetSurface(ƒ)]=ö;}}}return Ɩ;}public static bool ƥ(this string ö,string ã){var Ò=ö.Replace( " ","").Split('\n');foreach(var à in Ò){if(Ã.StartsWith(ã+"=")){try{return Convert.ToBoolean(Ã.Replace(ã+"=",""));}catch{ return true;}}}return true;}public static string Ƥ(this string ö,string ã){var Ò=ö.Replace(" ","").Split('\n');foreach(var à in Ò){if(Ã.StartsWith(ã+"=")){return Ã.Replace(ã+"=","");}}return"";}}public static partial class ŧ{public static bool ƣ( this IMyInventory Õ,double Ƣ=200){float ơ=(float)Õ.CurrentVolume;float Ơ=(float)Õ.MaxVolume;if(Ơ<Ƣ){if(ơ<Ơ*0.98){return true ;}}else{if(ơ<Ơ-Ƣ){return true;}}return false;}}public static partial class ŧ{public static bool Ƒ(this double â,double Ɔ, double ċ,bool ƅ=false,bool Ƅ=false){bool ƃ=â>=Ɔ;bool Ƃ=â<=ċ;if(Ƅ)ƃ=â>Ɔ;if(ƅ)Ƃ=â<ċ;return ƃ&&Ƃ;}}public static partial class ŧ{ public static string Ɓ(this char ƀ,int ſ){if(ſ<=0){return"";}return new string(ƀ,ſ);}}public static partial class ŧ{public static string ž(this string Ž,string ż,string Ż){string Ƈ=System.Text.RegularExpressions.Regex.Replace(Ž,System.Text. RegularExpressions.Regex.Escape(ż),Ż,System.Text.RegularExpressions.RegexOptions.IgnoreCase);return Ƈ;}}public static partial class ŧ{ public static string Ɛ(this float â){string ƍ="kL";if(â<1){â*=1000;ƍ="L";}else if(â>=1000&&â<1000000){â/=1000;ƍ="ML";}else if( â>=1000000&&â<1000000000){â/=1000000;ƍ="BL";}else if(â>=1000000000){â/=1000000000;ƍ="TL";}return Math.Round(â,1)+" "+ƍ;} public static string Ɛ(this double â){float Ə=(float)â;return Ə.Ɛ();}}public static partial class ŧ{public static string Ǝ( this double â){string ƍ="";if(â>=1000&&â<1000000){â/=1000;ƍ=" k";}else if(â>=1000000&&â<1000000000){â/=1000000;ƍ=" M";}else if(â>=1000000000){â/=1000000000;ƍ=" B";}return Math.Round(â,1)+ƍ;}}public static partial class ŧ{public static string Ƌ( this double Ɗ,double ƌ){double Ɖ=Math.Round(Ɗ/ƌ*100,1);if(ƌ==0){return"0%";}else{return Ɖ+"%";}}public static string Ƌ(this float Ɗ,float ƌ){double Ɖ=Math.Round(Ɗ/ƌ*100,1);if(ƌ==0){return"0%";}else{return Ɖ+"%";}} AQD_LG_ConveyorJunctionTubes 127057432607076923 144115188075855996 SurvivalKitLarge 79458246601791103 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 0 2 9223372036854.775807 2147483647 CanReceive false 0 2 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 30 60 false false true true true 1 true 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 222 0 false false false false Howard Base Spawn LargeAssembler 97339813129784327 Dust_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 24.975 Gold 0 49.6 Iron 1 15.9 Nickel 2 12.225 Magnesium 3 4 Silicon 4 482.5 Stone 5 7 4 9223372036854.775807 2147483647 CanReceive false 1 OxygenBottle 0 0 107 315 4 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 50 60 false Assembler learnMany false true true true 1 true 2034 0 false false false false BetonRamp 132358364241859272 144115188075855996 Beton 89994291967883573 Dust_Armor 144115188075855996 Beton 98618124245188822 Dust_Armor 144115188075855996 BetonRamp 122474889961155253 Dust_Armor 144115188075855996 BetonRamp 121209848246868185 Dust_Armor 144115188075855996 LargeDecoy 116017975353245952 144115188075855996 144115188075855996 Faction MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 1 false false false true 3 true XL_1xMount_Concrete 97954143565620301 Concrete_Armor 144115188075855996 BetonRamp 101155276206285748 144115188075855996 Beton 125892641426646598 Concrete_Armor 144115188075855996 Beton 94995460247767057 Dust_Armor 144115188075855996 Beton 117770466926050445 Dust_Armor 144115188075855996 BetonRampCornerInner 77296977704426555 Concrete_Armor 144115188075855996 Beton 116495574443320858 Concrete_Armor 144115188075855996 Beton 111521995479927524 Concrete_Armor 144115188075855996 Beton 106336206723475026 Concrete_Armor 144115188075855996 Beton 73656254223890819 Concrete_Armor 144115188075855996 Beton 102664580958631861 Concrete_Armor 144115188075855996 Beton 85468532023368991 Concrete_Armor 144115188075855996 Beton 101786302352920847 Concrete_Armor 144115188075855996 Beton 76993717827910381 Concrete_Armor 144115188075855996 Beton 95160703929271621 Dust_Armor 144115188075855996 Beton 121920506912101754 Dust_Armor 144115188075855996 Beton 97314397927799050 Concrete_Armor 144115188075855996 Beton 93884734497274701 144115188075855996 Beton 134892885702902540 Concrete_Armor 144115188075855996 Beton 91003593583241918 Concrete_Armor 144115188075855996 XL_1x_Concrete 92649818611397128 Concrete_Armor 144115188075855996 XL_1x_Concrete 137968413076369515 Concrete_Armor 144115188075855996 Beton 108166765095992968 144115188075855996 Beton 129784062304389530 Dust_Armor 144115188075855996 Beton 76955593937634167 Dust_Armor 144115188075855996 RB_Piston_20_Base_Large 103709888873267514 144115188075855996 144115188075855996 Faction false true true true 1 true 120674985478709311 false 5 0.853531063 0.6896552 0 false 99.99992 50000 50000 ConveyorTubeDuctT 117522393325111474 144115188075855996 88507425198745186 144115188075855996 144115188075855996 Faction MyInventoryBase 107473.604309 Ice 0 1 4 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 80 300 false false false false true 2 true LargeRefineryIndustrial 87067360536570285 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 0 7.5 9223372036854.775807 2147483647 CanReceive false 0 7.5 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 40 60 false false true false true 1 true 112623 Beton 124766364861961369 Concrete_Armor 144115188075855996 LargeBlockConveyor 136397830511550999 144115188075855996 Beton 111931932736660960 Dust_Armor 144115188075855996 BetonRamp 103886703749274021 Concrete_Armor 144115188075855996 ConveyorTubeCurved 143155320512915155 144115188075855996 C30mmSingleT 74185886256805355 144115188075855996 144115188075855996 Faction MyInventoryBase 5 C30Ammo 0 0 1 0.6 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzPAQoJCAEQPB0AAAAAEsEBCAISOC0AAJZEMjEIABAAGAAgACgBMABAAXgAgAEAkAEAoAEAsAEAwAEA0AEA2AEA6AEA8AEA+AEBkAIAGkQSCQ0AAAAAEAAgNhgAIPyAgICAgICAAjAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgtNKXhAcyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoQCAIgASgAMAA4BUBWSABQAAgi 30mm AutoCannon Turret 3 Hidden false true true true 3 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 Energy 0 false true false true 118856694380338244 144115188075855996 144115188075855996 Faction MyInventoryBase 107473.452064 Ice 0 1 4 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame10 60 300 false false false false true 3 true LG_DeuteriumProcessor 96441904721540359 144115188075855996 144115188075855996 Faction MyInventoryBase 107473.001505 Ice 0 1 4 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame10 50 300 false false true false true 1 true false BetonRamp 122576528194693105 144115188075855996 BetonRamp 81882801104137129 144115188075855996 Beton 132514639464744081 Concrete_Armor 144115188075855996 ConveyorTubeCurved 124196660030206335 144115188075855996 LargeEffectivenessModule 100226765249883615 144115188075855996 false false false true 1 true Beton 141401854784204520 144115188075855996 Beton 118652477165685907 144115188075855996 Beton 77800441004705937 Battered_Armor 144115188075855996 LargeAssembler 99324598925573617 Battered_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 1 Iron 0 25 Gold 1 8 Superconductor 3 25 Cobalt 4 18 Silver 5 30 Nickel 7 12.6 Magnesium 8 482.5 Stone 9 4 Silicon 10 11 4 9223372036854.775807 2147483647 CanReceive false 309 4 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 30 60 false false true true true 2 true 1695 0 false false false false LargeHydrogenEngine 95694667091479392 Battered_Armor 144115188075855996 144115188075855996 Faction false true true true 2 true 100006.141 LargeHydrogenEngine 107268414144791547 Battered_Armor 144115188075855996 144115188075855996 Faction false true true true 3 true 100006.141 WCIS_Reinforced_Conveyor_Tube_9x 122620420509830151 144115188075855996 BetonRamp 138955122023305562 Concrete_Armor 144115188075855996 XL_1x_Concrete 98436693690003692 Concrete_Armor 144115188075855996 Beton 98565371220873717 Concrete_Armor 144115188075855996 Beton 134810217216217919 144115188075855996 Beton 85518975975514456 144115188075855996 Beton 121805918336386390 144115188075855996 Beton 131414571649341999 Dust_Armor 144115188075855996 AzimuthShippingContainer 109572268786389298 Dust_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase 3635 Ice 33 34 80 9223372036854.775807 2147483647 CanReceive CanSend false Azimuth Shipping Container Ores (0.2%) false false false true 2 BetonRamp 110377924760667089 Dust_Armor 144115188075855996 BetonRamp 72903327481623842 Dust_Armor 144115188075855996 ConveyorTubeCurved 135549412984681571 144115188075855996 Beton 138292814395303311 144115188075855996 Beton 84561606726123647 144115188075855996 Beton 143315174821680785 144115188075855996 BetonRamp 108495209422896142 144115188075855996 Beton 111898534213906594 144115188075855996 Beton 84917981043912074 144115188075855996 BetonRampCornerInner 77541297191218119 Concrete_Armor 144115188075855996 ConveyorTubeCurved 89080051998315623 144115188075855996 ConveyorTubeCurved 138325947529055359 144115188075855996 BetonRamp 125202479823149512 144115188075855996 ConveyorTubeCurved 133242059181687695 Battered_Armor 144115188075855996 LargeBlockConveyor 142908599865658844 144115188075855996 BetonRamp 90292990772190769 144115188075855996 C30mmSingleT 101362461048404864 144115188075855996 144115188075855996 Faction MyInventoryBase 4 C30Ammo 0 0 1 0.6 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzPAQoJCAEQeB0AAAAAEsEBCAISOC0AAJZEMjEIABAAGAAgACgBMABAAXgAgAEAkAEAoAEAsAEAwAEA0AEA2AEA6AEA8AEA+AEBkAIAGkQSCQ0AAAAAEAAgNxgAIPyAgICAgICAAjAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgxOG+8wcyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoQCAIgASgAMAA4BEBqSABQAAgi 30mm AutoCannon Turret 4 Hidden false true true true 4 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 Energy 0 false true false true LargeBlockDesk 79330654382755863 144115188075855996 false false false true 1 false Character 0 false Character Character false -0.0001373312 -0.20701915 -0.000122072161 0.9783369 true 0 0 false 0 AQD_LG_ConveyorStraightArmored 101507014031084147 144115188075855996 XL_BlockHazard_Concrete 98397627179453278 144115188075855996 LargeShipLargeShieldGeneratorBase 109999560480674115 144115188075855996 144115188075855996 Faction MyInventoryBase Inventory 0 4 9223372036854.775807 2147483647 CanReceive false 0 4 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 50 60 false MyModStorageComponent 20c6c85c-fcac-48eb-88c2-a432bad5bddb DQC620k= Large Shield Generator: (1800000/1800000) true true true true 1 true LargePrdEffModuleTier2 90258282663624421 144115188075855996 false false false true 1 true LargePrdEffModuleTier2 90589035570171397 144115188075855996 false false false true 2 true LargeEffectivenessModule 106548551519979282 144115188075855996 false false false true 6 true ConveyorTubeCurved 80399522153332787 144115188075855996 LargeEffectivenessModule 118321114941540355 144115188075855996 false false false true 8 true ConveyorTubeCurved 110312767094352522 144115188075855996 LargeEffectivenessModule 101525732888675855 144115188075855996 false false false true 7 true LargeEffectivenessModule 102107907945508932 144115188075855996 false false false true 5 true LargeEffectivenessModule 104401182255025265 144115188075855996 false false false true 3 true RoboFactory 117913486352906659 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0.4 9223372036854.775807 2147483647 CanSend false MyEntityStorageComponent false true true true 1 true true false RoboFactory 111006959866389241 144115188075855997 144115188075855996 Faction MyInventoryBase 1 AiEnabled_Comp_CrewBotMaterial 0 1 AiEnabled_Comp_RepairBotMaterial 1 2 0.4 9223372036854.775807 2147483647 CanSend false MyEntityStorageComponent false true true true 2 true true false XL_BlockHazard_Concrete 79859194833152351 144115188075855996 ConveyorTube 79113670501562367 144115188075855996 ConveyorTube 120045122491100819 144115188075855996 BetonRamp 82331791313374733 144115188075855996 LargeProductivityModule 86331261405503362 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 2 true LargeProductivityModule 131958756562731742 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 1 true LG_Small_DeuteriumTank 138035191809984393 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false false true false false 1 true false 1 true ConveyorTube 104467640418810494 144115188075855996 LargeHydrogenEngine 95684975085555282 Battered_Armor 144115188075855996 144115188075855996 Faction false true true true 4 true 100006.141 Beton 112714853508263548 144115188075855996 XL_1x_Concrete 129079547163118777 144115188075855996 LargeBlockConveyorPipeSeamless 83383689516036916 144115188075855996 LargeBlockConveyorPipeSeamless 138906246301773070 144115188075855996 AQD_LG_ConveyorCornerArmored 95426752017496564 144115188075855996 ConveyorTubeCurved 95815526520680489 144115188075855996 ConveyorTube 132356210910377027 144115188075855996 Beton 126334483599624965 144115188075855996 SmallFloodLight_LB 142904091857114398 144115188075855996 false true true true 2 false 7.5 60 1.5 5 0 10 0 0.5 0.08 Connector 73026270592474847 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 70 80 false false true true true 10 true true false 0 0 true false LargeBlockLargeContainerTier2 95180719939660057 144115188075855996 144115188075855996 Faction MyInventoryBase 788509 Gold 0 201499.184607 Magnesium 1 540456.9 Cobalt 2 475399 Silver 3 822780 Platinum 4 599996.492228 Nickel 5 7928080.92348 Iron 6 402749.453534 Stone 7 1035670.086724 Silicon 8 374070.73764 Uranium 9 1 HydrogenBottle 1 11 12 843.750016 9223372036854.775807 2147483647 CanReceive CanSend false Large Cargo Container Ingots Bottles (23.6%) false false false true 1 WCIS_Conveyor_Tube_9x 108423050274460578 Concrete_Armor 144115188075855996 ConveyorTube 88281231193014448 144115188075855996 ConveyorTubeCurved 89299356517659449 144115188075855996 ConveyorTubeCurved 134957748198059912 144115188075855996 ConveyorTubeCurved 143665078456966530 144115188075855996 ConveyorTubeCurved 96584232446761501 144115188075855996 BetonCorner 103771075968493807 144115188075855996 BetonRamp 142179124193820565 144115188075855996 BetonRamp 139762865557905185 144115188075855996 Beton 124196833509128948 144115188075855996 Beton 124541026885014232 144115188075855996 Beton 109209375219559917 144115188075855996 Beton 135218778490317729 144115188075855996 Beton 73394741969173751 144115188075855996 Beton 131314319742248645 144115188075855996 Beton 106344145744070629 144115188075855996 XL_1x_Concrete 117796572037549239 144115188075855996 XL_1x_Concrete 123204676651584434 Concrete_Armor 144115188075855996 Beton 94554515467583912 Concrete_Armor 144115188075855996 XL_1x_Concrete 141855005481383385 Concrete_Armor 144115188075855996 XL_1x_Concrete 143362785308081859 Concrete_Armor 144115188075855996 XL_1x_Concrete 120091999891404036 Concrete_Armor 144115188075855996 ConveyorTube 81565572206090193 144115188075855996 Beton 77517954116743996 Concrete_Armor 144115188075855996 Beton 106714653704803348 Concrete_Armor 144115188075855996 Connector 77315493533193412 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 60 80 false false true true true 7 true true false 0 0 true false Connector 122241201098794378 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 50 80 false false true true true 5 true true false 0 0 true false Beton 79893249666875996 Concrete_Armor 144115188075855996 Beton 127551323310402210 Concrete_Armor 144115188075855996 Connector 126384572566464859 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 60 80 false false true true true 8 true 72210409068406240 0.9999695 0.006118868 -0.00106813165 -0.00473853434 false false 0 99484 true false Beton 133064859576593313 Concrete_Armor 144115188075855996 Beton 139996562984866041 Concrete_Armor 144115188075855996 Beton 136042989497464928 Concrete_Armor 144115188075855996 Beton 117116932785555904 Concrete_Armor 144115188075855996 Beton 137603883791008041 Concrete_Armor 144115188075855996 Connector 102988522715609873 Concrete_Armor 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 40 80 false false true true true 9 true true false 0 0 true false Beton 102229688904399028 144115188075855996 Beton 122162201462492295 Concrete_Armor 144115188075855996 Beton 99672148002760047 Concrete_Armor 144115188075855996 Beton 132252468619612112 144115188075855996 Beton 124795046529751900 Concrete_Armor 144115188075855996 Beton 125513337702040662 Concrete_Armor 144115188075855996 Beton 87553209506759496 Concrete_Armor 144115188075855996 Beton 99930711153386454 Concrete_Armor 144115188075855996 XL_1x_Concrete 104621686114109687 144115188075855996 Beton 128965904368778410 Concrete_Armor 144115188075855996 Beton 121516106998066642 Concrete_Armor 144115188075855996 Beton 109756447418190372 Concrete_Armor 144115188075855996 Beton 85912842556776544 Concrete_Armor 144115188075855996 Beton 129109072463300111 Concrete_Armor 144115188075855996 Beton 102451302796791128 Concrete_Armor 144115188075855996 Beton 83922992347763865 144115188075855996 Beton 116913202442647863 Concrete_Armor 144115188075855996 Beton 92672619863180156 Concrete_Armor 144115188075855996 Beton 100416147944604608 Concrete_Armor 144115188075855996 Beton 77650646258744372 Concrete_Armor 144115188075855996 Beton 123739632540760412 144115188075855996 Beton 144027920368230893 Concrete_Armor 144115188075855996 Beton 128297837163441162 Concrete_Armor 144115188075855996 Beton 126010114031861844 Concrete_Armor 144115188075855996 Beton 137640174977773936 Concrete_Armor 144115188075855996 XL_1x_Concrete 127505375177864907 Concrete_Armor 144115188075855996 XL_1xPlatform_Concrete 122461732175575292 Concrete_Armor 144115188075855996 XL_1xPlatform_Concrete 105205270270362609 Concrete_Armor 144115188075855996 AQD_LG_ConveyorTArmored 97521528244513698 144115188075855996 AQD_LG_ConveyorTArmored 72116281497972227 144115188075855996 AQD_LG_ConveyorTArmored 95370290241434876 144115188075855996 AQD_LG_ConveyorTArmored 108400886792245693 144115188075855996 AQD_LG_ConveyorStraight5x1 86574475250708096 144115188075855996 ConveyorTubeT 84573183984393245 144115188075855996 AQD_LG_ConveyorStraight5x1 106229089069604547 144115188075855996 AQD_LG_ConveyorX 72651199294380120 144115188075855996 AQD_LG_ConveyorStraight5x1 94915638471699693 144115188075855996 WCIS_Conveyor_Tube_9x 108498613057974592 144115188075855996 AzimuthShippingContainer 89037697472780708 144115188075855996 144115188075855996 Faction MyInventoryBase 3634 Ice 32 33 80 9223372036854.775807 2147483647 CanReceive CanSend false Azimuth Shipping Container Ores (0.2%) false true true true 3 OparoseShipyardWelder2125 118417545881591732 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 23.4375 9223372036854.775807 2147483647 CanSend false false true true true 3 false AirtightHangarDoorWarfare2B 105828791710844121 144115188075855996 144115188075855996 Faction false false false true 1 true false false 0 ConveyorTubeCurved 137236047840765517 144115188075855996 ConveyorTubeCurved 114165178661677591 144115188075855996 ConveyorTubeCurved 92011265416602351 144115188075855996 ConveyorTube 112257422307946445 144115188075855996 LargeBlockSmallContainer 99703410957108332 144115188075855996 144115188075855996 Faction MyInventoryBase 51449 Ice 63 64 15.625 9223372036854.775807 2147483647 CanReceive CanSend false MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 @Special Container modes: - Normal: stores wanted amount, removes excess. Usage: item=100 - Minimum: stores wanted amount, ignores excess. Usage: item=100M - Limiter: doesn't store items, only removes excess. Usage: item=100L - All: stores all items it can get until it's full. Usage: item=All Component/AiEnabled_Comp_CrewBotMaterial=0 Component/AiEnabled_Comp_RepairBotMaterial=0 Component/BulletproofGlass=0 Component/C100ShellCasing=0 Component/Computer=0 Component/Construction=0 Component/Detector=0 Component/Display=0 Component/ElectromagnetAWE=0 Component/Girder=0 Component/GoldPlatedPlate=0 Component/GravityGenerator=0 Component/InteriorPlate=0 Component/LargeTube=0 Component/Magnetron_Component=0 Component/Medical=0 Component/MetalGrid=0 Component/MilitaryPlateAWE=0 Component/Motor=0 Component/PlatinumPlatedPlate=0 Component/PowerCell=0 Component/RadioCommunication=0 Component/Reactor=0 Component/SandGranulat=0 Component/Shield=0 Component/ShieldComponent=0 Component/SmallTube=0 Component/SolarCell=0 Component/SpaceExtensionDeviceMK1=0 Component/SteelPlate=0 Component/Superconductor=0 Component/Thrust=0 Component/UpgradeAIModule=0 Component/UpgradeAIModuleDual=0 Component/Zement=0 Ore/Cobalt=0 Ore/Gold=0 Ore/Ice=All Ore/Scrap=0 Ore/Stone=0 Ingot/Cobalt=0 Ingot/DeuteriumContainer=0 Ingot/Gold=0 Ingot/Iron=0 Ingot/Magnesium=0 Ingot/Nickel=0 Ingot/Platinum=0 Ingot/Silicon=0 Ingot/Silver=0 Ingot/Stone=0 Ingot/Uranium=0 AmmoMagazine/Ace_400mmShell=0 AmmoMagazine/ARYX_AWE_VECTOR_MINIGUN_AMMO=0 AmmoMagazine/AutocannonClip=0 AmmoMagazine/AutomaticRifleGun_Mag_20rd=0 AmmoMagazine/AWE85mmAmmoMagazine=0 AmmoMagazine/C100mmAmmo=0 AmmoMagazine/C30Ammo=0 AmmoMagazine/CODEXAmmoMagazine=0 AmmoMagazine/HEShell100mm=0 AmmoMagazine/LargeCalibreAmmo=0 AmmoMagazine/MediumCalibreAmmo=0 AmmoMagazine/Missile200mm=0 AmmoMagazine/NATO_25x184mm=0 AmmoMagazine/NATO_5p56x45mm=0 AmmoMagazine/PaintGunMag=0 AmmoMagazine/TBR102_APBC_T_Magazine=0 OxygenContainerObject/OxygenBottle=0 GasContainerObject/HydrogenBottle=0 PhysicalGunObject/AngleGrinder4Item=0 PhysicalGunObject/AngleGrinderItem=0 PhysicalGunObject/AutomaticRifleItem=0 PhysicalGunObject/HandDrillItem=0 PhysicalGunObject/PhysicalPaintGun=0 PhysicalGunObject/Ven_RWR_M8_Item=0 PhysicalGunObject/Welder2Item=0 PhysicalGunObject/Welder4Item=0 PhysicalGunObject/WelderItem=0 PhysicalObject/SpaceCredit=0 Ice Cargo Container Special [P1] (12.1%) false true true true 1 AQD_LG_ConveyorStraight5x1 118749892525747553 Concrete_Armor 144115188075855996 Beton 99533131028467767 Concrete_Armor 144115188075855996 Beton 129568082686399855 Concrete_Armor 144115188075855996 XL_1x_Concrete 97393088666558751 Concrete_Armor 144115188075855996 XL_1x_Concrete 86601369911635868 Concrete_Armor 144115188075855996 XL_1x_Concrete 121967232274028797 Concrete_Armor 144115188075855996 AirtightHangarDoorWarfare2B 84854879439671181 144115188075855996 144115188075855996 Faction false false false true 4 true false false 0 AirtightHangarDoorWarfare2B 118816894479938081 144115188075855996 144115188075855996 Faction false false false true 3 true false false 0 XL_1x_Concrete 127419068228177718 Concrete_Armor 144115188075855996 AirtightHangarDoorWarfare2B 134151835217409057 144115188075855996 144115188075855996 Faction false false false true 2 true false false 0 XL_HalfSlopeTip_Concrete 87020356811316399 Concrete_Armor 144115188075855996 XL_1x_Concrete 123338682316985345 Concrete_Armor 144115188075855996 XL_1x_Concrete 88108219665922482 Concrete_Armor 144115188075855996 XL_HalfSlopeTip_Concrete 121044536566788363 Concrete_Armor 144115188075855996 XL_HalfSlopeTip_Concrete 119334566695926742 Concrete_Armor 144115188075855996 XL_1x_Concrete 136227417867498969 Concrete_Armor 144115188075855996 XL_1x_Concrete 133240608586284285 Concrete_Armor 144115188075855996 XL_1x_Concrete 128309810895788067 Concrete_Armor 144115188075855996 XL_1x_Concrete 123212208874458086 Concrete_Armor 144115188075855996 XL_1x_Concrete 126617958400519185 Concrete_Armor 144115188075855996 XL_1x_Concrete 136802985339395790 Concrete_Armor 144115188075855996 XL_1x_Concrete 141525091133860642 Concrete_Armor 144115188075855996 XL_HalfSlopeTip_Concrete 79091191689032045 Concrete_Armor 144115188075855996 XL_1x_Concrete 93758348810761862 Concrete_Armor 144115188075855996 XL_1x_Concrete 99261143663350614 Concrete_Armor 144115188075855996 HXL_BlockFrame 101795969854831397 Concrete_Armor 144115188075855996 AirtightHangarDoorWarfare2B 75347722232833526 144115188075855996 144115188075855996 Faction false false false true 19 true false false 0 AirtightHangarDoorWarfare2B 126157340890831878 144115188075855996 144115188075855996 Faction false false false true 18 true false false 0 AirtightHangarDoorWarfare2B 109491290960857693 144115188075855996 144115188075855996 Faction false false false true 17 true false false 0 AirtightHangarDoorWarfare2B 97928254566734929 144115188075855996 144115188075855996 Faction false false false true 15 true false false 0 AirtightHangarDoorWarfare2B 140073130243412300 144115188075855996 144115188075855996 Faction false false false true 16 true false false 0 AirtightHangarDoorWarfare2B 104002849413938311 144115188075855996 144115188075855996 Faction false false false true 14 true false false 0 AirtightHangarDoorWarfare2B 109681702364821946 144115188075855996 144115188075855996 Faction false false false true 13 true false false 0 AirtightHangarDoorWarfare2B 114138943768267297 144115188075855996 144115188075855996 Faction false false false true 12 true false false 0 AirtightHangarDoorWarfare2B 91388615268285121 144115188075855996 144115188075855996 Faction false false false true 11 true false false 0 AirtightHangarDoorWarfare2B 125298195507384984 144115188075855996 144115188075855996 Faction false false false true 10 true false false 0 AirtightHangarDoorWarfare2B 140174647953979946 144115188075855996 144115188075855996 Faction false false false true 9 true false false 0 AirtightHangarDoorWarfare2B 135727332684055499 144115188075855996 144115188075855996 Faction false false false true 8 true false false 0 AirtightHangarDoorWarfare2B 106772377213130407 144115188075855996 144115188075855996 Faction false false false true 7 true false false 0 AirtightHangarDoorWarfare2B 138770955366504052 144115188075855996 144115188075855996 Faction false false false true 6 true false false 0 AirtightHangarDoorWarfare2B 72642198303376845 144115188075855996 144115188075855996 Faction false false false true 5 true false false 0 AirtightHangarDoorWarfare2B 103313117719687880 144115188075855996 144115188075855996 Faction false false false true 20 true false false 0 XL_1x_Concrete 137480224716304431 Concrete_Armor 144115188075855996 XL_1x_Concrete 85311364948345470 Concrete_Armor 144115188075855996 XL_1x_Concrete 96011145339270870 Concrete_Armor 144115188075855996 XL_1x_Concrete 95078081731484627 Concrete_Armor 144115188075855996 AQD_LG_ConveyorStraightArmored 104066749463027366 Concrete_Armor 144115188075855996 AQD_LG_ConveyorStraightArmored 109492696213273756 Concrete_Armor 144115188075855996 AQD_LG_ConveyorStraightArmored 127414284079368386 Concrete_Armor 144115188075855996 Beton 131714782882514906 Concrete_Armor 144115188075855996 Beton 117354629269660272 Concrete_Armor 144115188075855996 AQD_LG_ConveyorStraight5x1 111577133832735620 144115188075855996 Beton 129633440855545175 Concrete_Armor 144115188075855996 Beton 106613418607744665 Concrete_Armor 144115188075855996 Beton 92505909250397672 Concrete_Armor 144115188075855996 Beton 92008793306611432 Concrete_Armor 144115188075855996 Beton 128169778666180283 Concrete_Armor 144115188075855996 Beton 128000220922733013 Concrete_Armor 144115188075855996 Beton 85893741960395920 Concrete_Armor 144115188075855996 Beton 106181260309782412 Concrete_Armor 144115188075855996 Beton 139165658236908112 Concrete_Armor 144115188075855996 Beton 94423173458532813 Concrete_Armor 144115188075855996 Beton 111759747820060920 Concrete_Armor 144115188075855996 Beton 115291251787736156 Concrete_Armor 144115188075855996 Beton 95417382469799400 Concrete_Armor 144115188075855996 Beton 95121604076071821 Concrete_Armor 144115188075855996 Beton 130731085548382223 Concrete_Armor 144115188075855996 Beton 127951159346106725 Concrete_Armor 144115188075855996 Beton 112234791827993600 Concrete_Armor 144115188075855996 Beton 142777775986104877 Concrete_Armor 144115188075855996 Beton 99305009913294163 Concrete_Armor 144115188075855996 Beton 90223248564633532 Concrete_Armor 144115188075855996 Beton 82329887256164005 Concrete_Armor 144115188075855996 Beton 117751078411123930 Concrete_Armor 144115188075855996 XL_1x_Concrete 131560163188736150 Concrete_Armor 144115188075855996 XL_1x_Concrete 101476740023903124 Concrete_Armor 144115188075855996 Beton 131544413298326681 Concrete_Armor 144115188075855996 Beton 106397747967883592 Concrete_Armor 144115188075855996 Beton 123504926657808541 Concrete_Armor 144115188075855996 Beton 127351384001419874 Concrete_Armor 144115188075855996 Beton 86473842872482259 Concrete_Armor 144115188075855996 Beton 72812818053767213 Concrete_Armor 144115188075855996 Beton 112826456653213544 Concrete_Armor 144115188075855996 Beton 102489085926938053 Concrete_Armor 144115188075855996 Beton 137073061841154100 Concrete_Armor 144115188075855996 Beton 99196390493861077 Concrete_Armor 144115188075855996 Beton 91547939675863832 Concrete_Armor 144115188075855996 Beton 141962550110123112 Concrete_Armor 144115188075855996 Beton 97895420148537907 Concrete_Armor 144115188075855996 Beton 88416625659850440 Concrete_Armor 144115188075855996 Beton 106314875084428341 Concrete_Armor 144115188075855996 Beton 87816079309493739 Concrete_Armor 144115188075855996 Beton 96459413086164028 Concrete_Armor 144115188075855996 Beton 110454243821870880 Concrete_Armor 144115188075855996 Beton 89558090511572410 Concrete_Armor 144115188075855996 Beton 83904810499383777 Concrete_Armor 144115188075855996 Beton 74025578648254327 Concrete_Armor 144115188075855996 Beton 101835413809492733 Concrete_Armor 144115188075855996 Beton 134645407497749964 Concrete_Armor 144115188075855996 Beton 94942748298952213 Concrete_Armor 144115188075855996 Beton 102009155496649653 Concrete_Armor 144115188075855996 Beton 124778631814524758 Concrete_Armor 144115188075855996 Beton 109007285568356791 Concrete_Armor 144115188075855996 Beton 114794108308524888 Concrete_Armor 144115188075855996 Beton 123870514522136865 Concrete_Armor 144115188075855996 Beton 112227693424921882 Concrete_Armor 144115188075855996 Beton 107200260576265474 Concrete_Armor 144115188075855996 Beton 79457716287576992 Concrete_Armor 144115188075855996 Beton 108960575262174360 Concrete_Armor 144115188075855996 Beton 116367602298443656 Concrete_Armor 144115188075855996 BetonRamp 116789409405026304 Concrete_Armor 144115188075855996 BetonRamp 73323228407319589 Concrete_Armor 144115188075855996 BetonRamp 124042157274106803 Concrete_Armor 144115188075855996 BetonRamp 124057339591579329 Concrete_Armor 144115188075855996 BetonRamp 83806065266285182 Concrete_Armor 144115188075855996 BetonRamp 111757777499242382 Concrete_Armor 144115188075855996 BetonRamp 140258013977742290 Concrete_Armor 144115188075855996 BetonRamp 128463401727506056 Concrete_Armor 144115188075855996 BetonRamp 118191206717573908 Concrete_Armor 144115188075855996 BetonRamp 129324514436960993 Concrete_Armor 144115188075855996 BetonRamp 92618130536732744 Concrete_Armor 144115188075855996 LargeNaniteControlFacility 136416553529108328 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 14 Computer 0 537 Girder 1 4 LargeTube 2 1 RadioCommunication 3 99 NATO_25x184mm 0 4 2997.03282 Uranium 5 700 Platinum 6 3446.361932 Gold 7 5629 SteelPlate 8 1 Welder4Item Welder4 74536559020671371 None 9 1 AngleGrinder4Item AngleGrinder4 112798682446218240 None 10 1 HandDrillItem 11 1469.473714 Silver 12 29 MediumCalibreAmmo 0 13 2 Display 14 19 Construction 15 15 Motor 16 1271 InteriorPlate 17 1 HydrogenBottle 0.298449576 68 1 WelderItem Welder 75193502167583984 None 69 1 AngleGrinderItem AngleGrinder 93520255531824563 None 70 1 HandDrillItem HandDrill 99672167943726745 None 71 72 140.624992 9223372036854.775807 2147483647 CanReceive CanSend false Nanite Control Facility Locked false true false true 1 true XL_1x_Concrete 127175091081401079 Concrete_Armor 144115188075855996 XL_1x_Concrete 97674600473302247 Concrete_Armor 144115188075855996 Beton 122958375389160555 Concrete_Armor 144115188075855996 Beton 131920849792124546 Concrete_Armor 144115188075855996 Beton 118072450469108206 Concrete_Armor 144115188075855996 Beton 119961394149554773 Concrete_Armor 144115188075855996 Beton 84500132490084748 Concrete_Armor 144115188075855996 Beton 116079283533653662 Concrete_Armor 144115188075855996 Beton 130806746295471935 Concrete_Armor 144115188075855996 Beton 128377648423027265 Concrete_Armor 144115188075855996 Beton 130489089988422940 Concrete_Armor 144115188075855996 Beton 141959784995083629 Concrete_Armor 144115188075855996 Beton 97876350531981789 Concrete_Armor 144115188075855996 Beton 97013049096641456 Concrete_Armor 144115188075855996 Beton 78757547887066206 Concrete_Armor 144115188075855996 Beton 91113999738958272 Concrete_Armor 144115188075855996 Beton 93474675969321673 Concrete_Armor 144115188075855996 Beton 134867868056485521 Concrete_Armor 144115188075855996 Beton 98348180596227453 Concrete_Armor 144115188075855996 Beton 81106822046529210 Concrete_Armor 144115188075855996 Beton 130145907606753367 Concrete_Armor 144115188075855996 Beton 75312898280246832 Concrete_Armor 144115188075855996 Beton 126967158385655186 Concrete_Armor 144115188075855996 Beton 83517962685682957 Concrete_Armor 144115188075855996 Beton 126504609021632989 Concrete_Armor 144115188075855996 Beton 99581017257375407 Concrete_Armor 144115188075855996 Beton 74286782912485034 Concrete_Armor 144115188075855996 Beton 81851087675620685 Concrete_Armor 144115188075855996 Beton 96124119224390566 Concrete_Armor 144115188075855996 Beton 142262594726893820 Concrete_Armor 144115188075855996 Beton 142897714354983988 Concrete_Armor 144115188075855996 Beton 143362081788193562 Concrete_Armor 144115188075855996 Beton 128867233109739091 Concrete_Armor 144115188075855996 Beton 85717264380190465 Concrete_Armor 144115188075855996 Beton 126755493111209348 Concrete_Armor 144115188075855996 Beton 77842405854987928 Concrete_Armor 144115188075855996 Beton 86734676461134491 Concrete_Armor 144115188075855996 Beton 111222395096608074 Concrete_Armor 144115188075855996 Beton 103846785625316794 Concrete_Armor 144115188075855996 Beton 137452565468853956 Concrete_Armor 144115188075855996 Beton 82933257665697482 Concrete_Armor 144115188075855996 Beton 129738550727006696 Concrete_Armor 144115188075855996 AirVentFull 112348415496216378 144115188075855996 144115188075855996 Faction false true true true 1 true false ConveyorTubeT 143529041067519026 144115188075855996 ConveyorTubeCurved 87759622270310725 Concrete_Armor 144115188075855996 ConveyorTube 106162444351038262 144115188075855996 OparoseShipyardWelder2125 83884600418421226 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 57 23.4375 9223372036854.775807 2147483647 CanSend false false true true true 27 false ARYXCodexPDC 105872916017680198 144115188075855996 144115188075855996 Faction MyInventoryBase 472 CODEXAmmoMagazine 0 0 1 0.2 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzPAQoJCAEQYR0AAAAAEsEBCAISOC0AAJZEMjEIABAAGAAgACgBMABAAXgAgAEAkAEAoAEBsAEAwAEA0AF42AEA6AEA8AEA+AEBkAIAGkQSCQ0AAAAAEAAgOBgAIPyAgICAgICAAjAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIqCAIQACAAKgUg7paoQjIbCQAAAAAAAAAAIQAAAAAAAAAAOQAAAAAAAAAAKhEIAiABKAAwADjYA0BxSABQAAgi MG25 Rampart Chaingun Turret Hidden false true true true 1 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 CODEXAmmoMagazine 0 false true true true ARYXCodexPDC 110748172007033819 144115188075855996 144115188075855996 Faction MyInventoryBase 475 CODEXAmmoMagazine 0 0 1 0.2 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzRAQoKCAEQlgEdAAAAABLCAQgCEjgtAACWRDIxCAAQABgAIAAoATAAQAF4AIABAJABAKABAbABAMABANABeNgBAOgBAPABAPgBAZACABpEEgkNAAAAABAAIDkYACD8gICAgICAgAIwADgAQABIAFIjGhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAAAgACgAMAAiKwgCEAAgACoGIPmXn+oEMhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAAAqEQgCIAEoADAAONsDQG1IAFAACCI= MG25 Rampart Chaingun Turret 4 Hidden false true true true 4 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 CODEXAmmoMagazine 0 false true true true 107046375021978792 144115188075855996 144115188075855996 Faction false true true true 1 true false InteriorLightBulb 98089464338444211 144115188075855996 false true true true 1 true 50 120 1.3 5 0 10 0 0.5 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Base 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 LargeBlockArmorSlope2Tip 144115188075855996 ShieldCapacitor 88673651491104047 144115188075855996 144115188075855996 Faction false false false true 1 true ShieldCapacitor 141947133202008171 144115188075855996 144115188075855996 Faction false false false true 2 true ShieldCapacitor 110835543618264640 144115188075855996 144115188075855996 Faction false false false true 3 true ShieldCapacitor 82288588044798226 144115188075855996 144115188075855996 Faction false false false true 4 true ShieldCapacitor 88152676822269806 144115188075855996 144115188075855996 Faction false false false true 5 true ShieldCapacitor 134010577784248680 144115188075855996 144115188075855996 Faction false false false true 6 true ShieldCapacitor 137755205803287799 144115188075855996 144115188075855996 Faction false false false true 7 true ShieldCapacitor 75241288697845979 144115188075855996 144115188075855996 Faction false false false true 8 true GanymedeBatteryLG2 76979349197423843 144115188075855996 144115188075855996 Faction false true true true 2 true 19.8313885 true 0 false false 0 LargeEnergyModuleTier3 76127761630771812 144115188075855996 false false false true 1 true NaniteConstructUpgrade 126076035068531628 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 2 true NaniteConstructUpgrade 76996494164464597 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 3 true NaniteDeconstructUpgrade 78655921780222093 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 1 true NaniteDeconstructUpgrade 116860336658107539 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 2 true NaniteCleanupUpgrade 114180281681858058 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 1 true NaniteSpeedUpgrade 84097099202162245 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 1 true NaniteConstructUpgrade 131774565418300201 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 4 true NaniteDeconstructUpgrade 84257859613849852 Battered_Armor 144115188075855996 144115188075855996 Faction false false false true 3 true LargeBlockDesk 125141515486968052 144115188075855996 false false false true 2 false Character false Character Character false 9.155413E-05 0.0680399761 0.000167849241 0.9976826 true 0 0 false 0 LargeBlockDeskCorner 116350166748837458 144115188075855996 false false false true 1 false Character false Character Character false -0.0001373312 -0.742504 -3.02570122E-12 0.6698416 true 0 0 false 0 LargeBlockDeskCorner 81835531217730978 144115188075855996 false false false true 2 false Character false Character Character false true 0 0 false 0 LargeBlockDeskCorner 137049545488909689 144115188075855996 false false false true 3 false Character false Character Character false true 0 0 false 0 LargeBlockDeskCorner 93890066636073923 144115188075855996 false false false true 4 false Character false Character Character false -7.629512E-05 0.86924547 0.00032043946 -0.494380623 true 0 0 false 0 LargeBlockBed 98690553340774838 144115188075855996 MyInventoryBase 0 0.4 9223372036854.775807 2147483647 CanSend false MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 false false false false 2 false Character false Character Character false -0.000274662423 0.8959182 -1.09388158E-11 0.444219023 true 0 0 false 0 LargeProjector 121247665853629403 144115188075855996 144115188075855996 Faction MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 false true true true 1 true 0 0 0 0 0 0 false false false 5 200 0 false 1 XL_1x_Concrete 77080269539991318 144115188075855996 DeuteriumandUraniumAssembler 92877482104173135 144115188075855997 144115188075855996 Faction MyInventoryBase Inventory 0 4 9223372036854.775807 2147483647 CanReceive false 0 4 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 40 60 false Queue-able Deuterium Processor false true true true 1 true 3 0 false false false false LargeBlockConveyorPipeSeamless 96848474669230767 144115188075855996 LargeBlockConveyorPipeCorner 130835114048937318 144115188075855996 Connector 106266085762764605 144115188075855996 144115188075855996 Faction 0.5 MyInventoryBase 0 8 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 0 80 false false true true true 6 true true false 0 0 true false Ace_Chair_FoldingChair 75555324517294648 144115188075855996 MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false false true true true 1 false Character false Character Character false -1.05358127E-12 0.9440452 -6.103609E-05 0.329816163 true 0 0 false 0 LargeBlockBatteryBlock 75430966333930682 144115188075855997 144115188075855996 Faction false false false true 1 true 2.97995162 true 0 false false 0 XL_1x_Concrete 114067529149596678 144115188075855996 ConveyorTubeDuct 117133619485701090 144115188075855996 ConveyorTubeCurved 121740491681748017 144115188075855996 LargeBlockLargeContainerTier2 139716505290351825 144115188075855997 144115188075855996 Faction MyInventoryBase 41 Display 0 2664 Thrust 1 2 Magnetron_Component 2 1376 LargeTube 3 36 RadioCommunication 4 15131 MetalGrid 5 3 Medical 6 79364 SteelPlate 7 18 ShieldComponent 8 4 GoldPlatedPlate 9 1573 Reactor 10 30 SolarCell 11 12286 Construction 12 11333 SmallTube 13 102 Shield 14 1166 Superconductor 15 381 SpaceExtensionDeviceMK1 16 4301 Girder 17 100 GravityGenerator 18 4729 Computer 19 398 MilitaryPlateAWE 20 11662 InteriorPlate 21 141 PowerCell 22 20 Detector 23 400 ElectromagnetAWE 24 1 PlatinumPlatedPlate 25 156 BulletproofGlass 26 326 Motor 27 11383 Zement 57 4537 SandGranulat 71 72 843.750016 9223372036854.775807 2147483647 CanReceive CanSend false Large Cargo Container x2 Comps (10.5%) false true true true 3 Beton 75785115289947523 Weldless 144115188075855996 Beton 106688614216515725 144115188075855996 Beton 120755527666908764 144115188075855996 Beton 77328823161021843 144115188075855996 Beton 143397232140383106 144115188075855996 Beton 89783426923397063 144115188075855996 Beton 125172931364815273 144115188075855996 Beton 131274905606527455 144115188075855996 Beton 112766493543133486 144115188075855996 Beton 141468139676454208 144115188075855996 Beton 100457136059949094 144115188075855996 Beton 80565453616578486 144115188075855996 Beton 90626988706212268 144115188075855996 Beton 142627831538292464 144115188075855996 Beton 114609102920744867 144115188075855996 Beton 76038532796278284 144115188075855996 Beton 132252225829801262 144115188075855996 Beton 111907166678808670 144115188075855996 Beton 74004403321353220 144115188075855996 Beton 100408945319844881 144115188075855996 Beton 113748185316582535 144115188075855996 Beton 94842186831785514 144115188075855996 Beton 102231890811130329 144115188075855996 LargeStator 127920249747789574 144115188075855996 144115188075855996 Faction Rotor 2 false true true true 2 false 116910998704482707 false 5 0 6.283185 false 0.11 true 3.36E+07 1E+09 LargeProgrammableBlock 74765782138027808 SciFi_Armor 144115188075855996 144115188075855996 Faction MyModStorageComponent 74de02b3-27f9-4960-b1c4-27351f2b06d1 [General Config] Turret Group name tag=Turret Group Designator Turret name tag (Vanilla only)=Designator Azimuth rotor name tag=Azimuth Elevation rotor name tag=Elevation Fire Timer name tag=Fire Allow Main Target Tracking=false Allow Line Of Sight Checking (Performance intensive)=true Minor Cycles=500 Print Debug=true [Turret Group Iron Dome] Maximum turning speed=5 Engagement distance (m)=1500 Maximum divergence from target=1.5 Offset ticks between shots=0 Invert Elevation Rotor Rotation=true Minimum Target Threat Level=0 Only allow blocks on rotor grids=true Only target grids above the turret=false Programmable Block FCS false true true true 1 false 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 /* * Installation * -------------------- * * You need at least one WeaponCore weapon and a cockpit on your main grid. * You also should have atleast 1 block turret on your grid. * A turret should have: * - 1 rotor named "Azimuth" * - 1 or more rotors on the Azimuth grid named "Elevation" * - 1 or more weapons on each Elevation grid * Additionally you may have: * - timers named "Fire" * - vanilla turrets named "Designator" * All of these should be groubed in a block group named "Turret Group" * * If the Elevation rotors move in the wrong directions when aiming set the * invertElevation config option in the Custom Data to true. */ public const string VERSION = "1.18.2"; public const string GENERAL_INI_TAG = "General Config"; public const string GROUP_NAME_KEY = "Turret Group name tag"; public const string DESIGNATOR_NAME_KEY = "Designator Turret name tag (Vanilla only)"; public const string AZIMUTH_NAME_KEY = "Azimuth rotor name tag"; public const string ELEVATION_NAME_KEY = "Elevation rotor name tag"; public const string TIMER_NAME_KEY = "Fire Timer name tag"; public const string WC_TARGET_KEY = "Allow Main Target Tracking"; public const string LOS_CHECK_KEY = "Allow Line Of Sight Checking (Performance intensive)"; public const string WAIT_CYCLES_KEY = "Minor Cycles"; public const string DEBUG_KEY = "Print Debug"; public const string MAX_SPEED_KEY = "Maximum turning speed"; public const string ENGAGE_DIST_KEY = "Engagement distance (m)"; public const string MAX_DIVERGE_KEY = "Maximum divergence from target"; public const string OFFSET_KEY = "Offset ticks between shots"; public const string INVERT_ELEVATION_KEY = "Invert Elevation Rotor Rotation"; public const string MINIMUM_THREAT_KEY = "Minimum Target Threat Level"; public const string STRICT_GRIDS_KEY = "Only allow blocks on rotor grids"; public const string TARGET_ABOVE_KEY = "Only target grids above the turret"; public const string WHIP_REST_ANGLE_TAG = "Turret Slaver - Rotor Config"; public const string WHIP_HAS_REST_KEY = "Use manual rest angle"; public const string WHIP_REST_ANGLE_KEY = "Manual rest angle(deg)"; public static string ElevationNameTag = "Elevation"; public static string AzimuthNameTag = "Azimuth"; public static string DesignatorNameTag = "Designator"; public static string TimerNameTag = "Fire"; public static string GroupNameTag = "Turret Group"; public static bool AllowWcTargeting = false; public static bool AllowLOS = false; public static int WaitCycles = 500; public static bool IsDebug = false; public static WcPbAPI Api = new WcPbAPI(); public static bool IsApiActivated = false; public static List<MyDefinitionId> WeaponDefinitions = new List<MyDefinitionId>(); public static List<MyDefinitionId> TurretDefinitions = new List<MyDefinitionId>(); public static List<string> StaticWeaponDefinitionSubIds = new List<string>(); public static List<string> TurretDefinitionSubIds = new List<string>(); public static List<Turret> Turrets = new List<Turret>(); public List<IMyBlockGroup> TurretGroups = new List<IMyBlockGroup>(); public static Dictionary<MyDetectedEntityInfo, float> Targets = new Dictionary<MyDetectedEntityInfo, float>(); public static List<IMyLargeTurretBase> Directors = new List<IMyLargeTurretBase>(); public IMyLargeTurretBase Director; public static StringBuilder EchoString = new StringBuilder(); public static List<string> ErrorLog = new List<string>(); public static MyIni ConfigIni = new MyIni(); public static List<string> IniSections = new List<string>(); public int RunCount = WaitCycles; public Program() { Runtime.UpdateFrequency = UpdateFrequency.Update1; } public void Main(string argument, UpdateType updateSource) { RunCount++; EchoString.Clear(); EchoString.Append($"Managing {Turrets.Count} Turret(s)\n"); if (!IsApiActivated) { try { Api.Activate(Me); IsApiActivated = true; WeaponDefinitions.Clear(); TurretDefinitions.Clear(); Api.GetAllCoreStaticLaunchers(WeaponDefinitions); Api.GetAllCoreTurrets(TurretDefinitions); StaticWeaponDefinitionSubIds.Clear(); TurretDefinitionSubIds.Clear(); WeaponDefinitions.ForEach(d => StaticWeaponDefinitionSubIds.Add(d.SubtypeName)); TurretDefinitions.ForEach(t => TurretDefinitionSubIds.Add(t.SubtypeName)); } catch { EchoString.Append("WeaponCore Api is failing!\nMake sure WeaponCore is enabled!\n"); } } if (IsApiActivated && Api.HasGridAi(Me.CubeGrid.EntityId)) { EchoString.Append("Attempting WC Targeting\n"); EchoString.Append($"Detected {Targets.Count} target(s)!\n"); if (RunCount >= WaitCycles) { Targets.Clear(); Api.GetSortedThreats(Me, Targets); } Turrets.ForEach(t => t.AimAtTarget()); } else { AttemptVanillaTargeting(); } if (RunCount >= WaitCycles) { TurretGroups.Clear(); GridTerminalSystem.GetBlockGroups(TurretGroups, g => g.Name.Contains(GroupNameTag)); TurretGroups.ForEach(g => { Turret newTurret = Turret.AttemptCreateFromGroup(g); if (newTurret != null) Turrets.Add(newTurret); }); ParseIni(); RunCount = 0; } if (IsDebug) { EchoString.Append("------------------------------------\ndebug area:\n"); ErrorLog.ForEach(e => EchoString.AppendLine(e)); EchoString.AppendLine(); Turrets.ForEach(t => t.Debug()); } Echo(EchoString.ToString()); } public void AttemptVanillaTargeting() { if (RunCount >= WaitCycles) { RunCount = 0; } if (Directors.Count != 0) { EchoString.Append("Attempting Vanilla Targeting\n"); foreach (var item in Directors) { if (item.IsShooting && item.HasTarget) { Director = item; break; } } if (Director != null && Director.HasTarget) { Turrets.ForEach(t => t.AimAtTarget()); } } else { Turrets.ForEach(t => t.MoveToRest()); } } public static int ConvertOffenseRatingToThreatLevel(float offenseRating) { if (offenseRating >= 5) return 9; if (offenseRating >= 4) return 8; if (offenseRating >= 3) return 7; if (offenseRating >= 2) return 6; if (offenseRating >= 1) return 5; if (offenseRating >= 0.5f) return 4; if (offenseRating >= 0.25f) return 3; if (offenseRating >= 0.125f) return 2; if (offenseRating >= 0.0625f) return 1; if (offenseRating >= 0) return 0; return -1; } public static float ConvertThreatLevelToOffenseRating(int threatLevel) { switch(threatLevel) { case 9: return 5; case 8: return 4; case 7: return 3; case 6: return 2; case 5: return 1; case 4: return 0.5f; case 3: return 0.25f; case 2: return 0.125f; case 1: return 0.0625f; case 0: return 0f; default: return -1; } } public void ParseIni() { ConfigIni.Clear(); ConfigIni.TryParse(Me.CustomData); IniSections.Clear(); ConfigIni.GetSections(IniSections); if (IniSections.Count == 0) ConfigIni.EndContent = Me.CustomData; Me.CustomData = ""; GroupNameTag = ConfigIni.Get(GENERAL_INI_TAG, GROUP_NAME_KEY).ToString(GroupNameTag); DesignatorNameTag = ConfigIni.Get(GENERAL_INI_TAG, DESIGNATOR_NAME_KEY).ToString(DesignatorNameTag); AzimuthNameTag = ConfigIni.Get(GENERAL_INI_TAG, AZIMUTH_NAME_KEY).ToString(AzimuthNameTag); ElevationNameTag = ConfigIni.Get(GENERAL_INI_TAG, ELEVATION_NAME_KEY).ToString(ElevationNameTag); TimerNameTag = ConfigIni.Get(GENERAL_INI_TAG, TIMER_NAME_KEY).ToString(TimerNameTag); AllowWcTargeting = ConfigIni.Get(GENERAL_INI_TAG, WC_TARGET_KEY).ToBoolean(AllowWcTargeting); AllowLOS = ConfigIni.Get(GENERAL_INI_TAG, LOS_CHECK_KEY).ToBoolean(AllowLOS); WaitCycles = ConfigIni.Get(GENERAL_INI_TAG, WAIT_CYCLES_KEY).ToInt32(WaitCycles); IsDebug = ConfigIni.Get(GENERAL_INI_TAG, DEBUG_KEY).ToBoolean(IsDebug); Turrets.ForEach(t => t.ParseTurretIni()); WriteIni(); } public void WriteIni() { ConfigIni.Set(GENERAL_INI_TAG, GROUP_NAME_KEY, GroupNameTag); ConfigIni.Set(GENERAL_INI_TAG, DESIGNATOR_NAME_KEY, DesignatorNameTag); ConfigIni.Set(GENERAL_INI_TAG, AZIMUTH_NAME_KEY, AzimuthNameTag); ConfigIni.Set(GENERAL_INI_TAG, ELEVATION_NAME_KEY, ElevationNameTag); ConfigIni.Set(GENERAL_INI_TAG, TIMER_NAME_KEY, TimerNameTag); ConfigIni.Set(GENERAL_INI_TAG, WC_TARGET_KEY, AllowWcTargeting); ConfigIni.Set(GENERAL_INI_TAG, LOS_CHECK_KEY, AllowLOS); ConfigIni.Set(GENERAL_INI_TAG, WAIT_CYCLES_KEY, WaitCycles); ConfigIni.Set(GENERAL_INI_TAG, DEBUG_KEY, IsDebug); Turrets.ForEach(t => t.WriteTurretIni()); string output = ConfigIni.ToString(); if (!string.Equals(output, Me.CustomData)) Me.CustomData = output; } public class RotorController { public IMyMotorStator Rotor { get; } public RotorController(IMyMotorStator rotor) { Rotor = rotor; } public void MoveToRest(float maxSpeed) { var neg = Rotor.CustomData.Contains("-"); var pos = 0; try { pos = Convert.ToInt32(Rotor.CustomData); } catch { var has_rest = ConfigIni.Get(WHIP_REST_ANGLE_TAG, WHIP_HAS_REST_KEY).ToBoolean(); if (has_rest) pos = ConfigIni.Get(WHIP_REST_ANGLE_TAG, WHIP_REST_ANGLE_KEY).ToInt16(); } if (Math.Abs(MathHelper.ToRadians(pos) - Rotor.Angle) < 0.01) { Rotor.TargetVelocityRad = 0; } else { Rotor.RotorLock = false; SetRestSpeed(maxSpeed, pos); } } private void SetRestSpeed(float maxSpeed, float targetAngleDeg) { float currentAngleDeg = MathHelper.ToDegrees(Rotor.Angle); float angleDiff = 180 - Math.Abs(Math.Abs(targetAngleDeg - currentAngleDeg) - 180); if (currentAngleDeg < 180) { angleDiff *= -1; } float targetSpeed = angleDiff / 360 * (float)maxSpeed; if (Rotor.BlockDefinition.SubtypeName.Contains("Hinge")) { targetSpeed = (targetAngleDeg - currentAngleDeg) / 180 * (float)maxSpeed; } Rotor.TargetVelocityRad = MathHelper.Clamp(targetSpeed, -1 * (float)maxSpeed, (float)maxSpeed); } public void SetRotorSpeedFromOffset(float offset, float multiplier, float maxSpeed) { Rotor.RotorLock = false; Rotor.TargetVelocityRad = MathHelper.Clamp(offset * multiplier, -1 * maxSpeed, maxSpeed); } public void RotateElevation(float upperOffset, float maxSpeed, Vector3D Up) { bool inv = Rotor != null && Rotor.WorldMatrix.Up != Up || Rotor.BlockDefinition.SubtypeName.Contains("Hinge"); int invFac = inv ? -1 : 1; SetRotorSpeedFromOffset(-upperOffset * invFac, 4, maxSpeed); } public Vector3 GetPosition() { return Rotor.GetPosition(); } public bool IsPointInAzimuthRange(Vector3D point) { var upLimit = Rotor.UpperLimitDeg; var lowLimit = Rotor.LowerLimitDeg; var angle = GetAzimuthAngleTo(point); return angle <= upLimit && angle >= lowLimit; } public float GetAzimuthAngleTo(Vector3D point) { var forward = Rotor.WorldMatrix.Backward; var up = Rotor.WorldMatrix.Up; if (Rotor.BlockDefinition.SubtypeId.Contains("Hinge")) { up = Rotor.WorldMatrix.Down; forward = Rotor.WorldMatrix.Left; } var targetVec = point - GetPosition(); var planeVec = Vector3D.ProjectOnPlane(ref targetVec, ref up); return MathHelper.ToDegrees(MyMath.AngleBetween(forward, planeVec)); } public MatrixD GetAzimuthRotationMatrixTo(Vector3D point) { var angle = GetAzimuthAngleTo(point); return MatrixD.CreateFromAxisAngle(Rotor.WorldMatrix.Up, angle); } public bool IsPointInElevationRange(Vector3D point, MatrixD azimuthRotation) { var upLimit = Rotor.UpperLimitDeg; var lowLimit = Rotor.LowerLimitDeg; var angle = GetElevationAngleTo(point, azimuthRotation); return angle <= upLimit && angle >= lowLimit; } public float GetElevationAngleTo(Vector3D point, MatrixD azimuthRotation) { var matrix = Rotor.WorldMatrix; var newMatrix = MatrixD.Multiply(azimuthRotation, matrix); var forward = newMatrix.Backward; var up = newMatrix.Up; if (Rotor.BlockDefinition.SubtypeId.Contains("Hinge")) { up = newMatrix.Down; forward = newMatrix.Left; } var targetVec = point - GetPosition(); var planeVec = Vector3D.ProjectOnPlane(ref targetVec, ref up); return MathHelper.ToDegrees(MyMath.AngleBetween(forward, planeVec)); } } public class StaticWeaponController : WeaponController { public StaticWeaponController(IMyTerminalBlock weapon) : base(weapon) { if (IsWC) { if (!StaticWeaponDefinitionSubIds.Contains(Weapon.BlockDefinition.SubtypeName)) { throw new Exception("Expected a Static Weapon for Controller"); } } } public bool LineOfSightCheck(Vector3 TargetPos, IMyCubeGrid parentGrid) { Vector3 step = Weapon.WorldMatrix.Forward; Vector3 temp = GetPosition(); while ((temp - GetPosition()).Length() < (TargetPos - GetPosition()).Length()) { temp += step; if (parentGrid.CubeExists(parentGrid.WorldToGridInteger(temp))) { return false; } } return true; } public Vector3 CalculatePredictedTargetPosition(long targetId, Vector3 TargetPos) { if (IsWC) { var targetposraw = Api.GetPredictedTargetPosition(Weapon, targetId, 0); if (targetposraw != null && targetposraw.HasValue) return targetposraw.Value; } return TargetPos; } } public class Turret { public static List<string> Names = new List<string>(); private readonly static List<IMyTerminalBlock> s_helper = new List<IMyTerminalBlock>(); public string Name; public List<RotorController> Elevations = new List<RotorController>(); public List<StaticWeaponController> StaticWeapons = new List<StaticWeaponController>(); public RotorController Azimuth; public RotorController MainElevation; public TurretWeaponController Designator; public IMyTimerBlock Timer; public IMyBlockGroup BlockGroup; public float MaxSpeed = 5; public int EngageDist = 1000; public float MaxDiverge = 1.5F; private int _sequenceIdx = 0; private int _offsetTimer = 0; private int _offsetTimerLength = 5; private bool _isResting = false; private bool _isAimed = false; private bool _shouldInvertRotation = false; private float _minimumOffenseRating = 1.0001f; private bool _strictGridTesting = true; private bool _targetAbove = false; private Vector3D _targetPos = Vector3D.Zero; public static Turret AttemptCreateFromGroup(IMyBlockGroup blocks) { if (blocks != null) { string name = blocks.Name; if (Names.Contains(name)) { AttemptUpdateFromGroup(blocks, name); return null; } Turret newTurret = new Turret(); newTurret.Name = name; Names.Add(name); newTurret.UpdateTurret(blocks); return newTurret; } return null; } public static void AttemptUpdateFromGroup(IMyBlockGroup blocks, string name) { Turret oldTurret = Turrets.Find(t => t.Name.ToLower().Equals(name.ToLower())); oldTurret.UpdateTurret(blocks); } public void UpdateTurret(IMyBlockGroup blocks) { s_helper.Clear(); BlockGroup = blocks; if (Azimuth == null || Azimuth.Rotor == null) { blocks.GetBlocksOfType<IMyMotorStator>(s_helper, b => !b.CustomName.Contains(ElevationNameTag) && b.CustomName.Contains(AzimuthNameTag)); if (s_helper.Count == 0) return; Azimuth = new RotorController((IMyMotorStator)s_helper[0]); } Elevations.Clear(); blocks.GetBlocksOfType<IMyMotorStator>(s_helper, b => b.CustomName.Contains(ElevationNameTag) && !b.CustomName.Contains(AzimuthNameTag) && (!Turrets.Contains(this) || !_strictGridTesting || b.CubeGrid == Azimuth.Rotor.TopGrid)); s_helper.ForEach(r => Elevations.Add(new RotorController((IMyMotorStator)r))); if (Elevations.Count == 0) return; MainElevation = Elevations[0]; if (MainElevation.Rotor.CustomName.Contains("#LEFT#")) _shouldInvertRotation = true; StaticWeapons.Clear(); if (_strictGridTesting && Turrets.Contains(this)) { foreach (RotorController e in Elevations) { GetElevationBlocks(blocks, e.Rotor.TopGrid); } } else { GetElevationBlocks(blocks, null); } s_helper.Clear(); blocks.GetBlocksOfType<IMyTerminalBlock>(s_helper, b => b.CustomName.Contains(DesignatorNameTag) && b.IsWorking); s_helper.Sort((lhs, rhs) => CompareByDistanceToAzimuth(lhs, rhs)); IMyTerminalBlock tempDes = null; if (s_helper.Count != 0) { tempDes = s_helper[0]; Designator = new TurretWeaponController(tempDes); } s_helper.Clear(); blocks.GetBlocksOfType<IMyTimerBlock>(s_helper, b => b.CustomName.Contains(TimerNameTag)); if (s_helper.Count != 0) Timer = (IMyTimerBlock)s_helper[0]; } public void GetElevationBlocks(IMyBlockGroup blocks, IMyCubeGrid elevationGrid) { s_helper.Clear(); blocks.GetBlocksOfType<IMyFunctionalBlock>(s_helper, b => (StaticWeaponDefinitionSubIds.Contains(b.BlockDefinition.SubtypeName) || b is IMyUserControllableGun) && (elevationGrid == null || b.CubeGrid == elevationGrid) && b.IsWorking); s_helper.ForEach(b => StaticWeapons.Add(new StaticWeaponController(b))); } public void ParseTurretIni() { MaxSpeed = (float)ConfigIni.Get(Name, MAX_SPEED_KEY).ToDouble(MaxSpeed); EngageDist = ConfigIni.Get(Name, ENGAGE_DIST_KEY).ToInt32(EngageDist); MaxDiverge = ConfigIni.Get(Name, MAX_DIVERGE_KEY).ToSingle(MaxDiverge); _offsetTimerLength = ConfigIni.Get(Name, OFFSET_KEY).ToInt32(_offsetTimerLength); _shouldInvertRotation = ConfigIni.Get(Name, INVERT_ELEVATION_KEY).ToBoolean(_shouldInvertRotation); _minimumOffenseRating = ConvertThreatLevelToOffenseRating(ConfigIni.Get(Name, MINIMUM_THREAT_KEY).ToInt32(ConvertOffenseRatingToThreatLevel(_minimumOffenseRating))); _strictGridTesting = ConfigIni.Get(Name, STRICT_GRIDS_KEY).ToBoolean(_strictGridTesting); _targetAbove = ConfigIni.Get(Name, TARGET_ABOVE_KEY).ToBoolean(_targetAbove); } public void WriteTurretIni() { ConfigIni.Set(Name, MAX_SPEED_KEY, MaxSpeed); ConfigIni.Set(Name, ENGAGE_DIST_KEY, EngageDist); ConfigIni.Set(Name, MAX_DIVERGE_KEY, MaxDiverge); ConfigIni.Set(Name, OFFSET_KEY, _offsetTimerLength); ConfigIni.Set(Name, INVERT_ELEVATION_KEY, _shouldInvertRotation); ConfigIni.Set(Name, MINIMUM_THREAT_KEY, ConvertOffenseRatingToThreatLevel(_minimumOffenseRating)); ConfigIni.Set(Name, STRICT_GRIDS_KEY, _strictGridTesting); ConfigIni.Set(Name, TARGET_ABOVE_KEY, _targetAbove); } public void AimAtTarget() { if(!IsWorking()) { return; } MyDetectedEntityInfo? info = FindTarget(); if (info.HasValue && !info.Value.IsEmpty()) { MyDetectedEntityInfo target = info.Value; _targetPos = target.Position; _isResting = false; StaticWeaponController targetLead = StaticWeapons.Count != 0 ? StaticWeapons[0] : null; if (MainElevation == null || Elevations.Count == 0 || Azimuth == null || targetLead == null) return; Vector3D middle = targetLead.GetPosition(); if (StaticWeapons.Count != 0) { StaticWeapons.ForEach(w => { middle += (w.GetPosition() - middle) / 2; _targetPos = w.CalculatePredictedTargetPosition(target.EntityId, _targetPos); }); } Vector3D targetVec = Vector3D.Normalize(_targetPos - middle); double distance = (_targetPos - middle).Length(); if (distance <= EngageDist) { Vector3D aimVec = targetLead.WorldMatrix.Forward; Vector3D down = Azimuth.Rotor.WorldMatrix.Down; double armAngle = MathHelper.Clamp(Vector3D.Dot(aimVec, targetVec), -1, 1); double hemiSphereAngle = Vector3D.Dot(Vector3D.Cross(aimVec, targetVec), down); double armOffset = (-Math.Acos(armAngle)) * Math.Sign(hemiSphereAngle); if (armOffset == double.NaN || double.IsInfinity(armOffset)) { armOffset = 0; } Azimuth.SetRotorSpeedFromOffset(-(float)armOffset, 10, MaxSpeed); double biggestUpperOffset = RotateElevators(targetVec); _isAimed = IsAimed(armOffset, biggestUpperOffset); if (_isAimed) { FireWeapons(target); } return; } } MoveToRest(); } private bool IsAimed(double armOffset, double biggestUpperOffset) { return Math.Abs(armOffset) < MathHelper.ToRadians(MaxDiverge) && Math.Abs(biggestUpperOffset) < MathHelper.ToRadians(MaxDiverge); } private void FireWeapons(MyDetectedEntityInfo target) { if (_offsetTimer > 0) _offsetTimer--; if (_offsetTimer == 0 && StaticWeapons.Count != 0) { StaticWeaponController w = StaticWeapons[_sequenceIdx]; try { if (w.CanShootTarget(target.EntityId)) { if (w.IsReady() && Timer != null && Timer.IsWorking && !Timer.IsCountingDown) Timer.Trigger(); if (!AllowLOS || w.LineOfSightCheck(_targetPos, Azimuth.Rotor.CubeGrid)) w.ShootOnce(); }; _offsetTimer = _offsetTimerLength; _sequenceIdx++; if (_sequenceIdx >= StaticWeapons.Count) _sequenceIdx = 0; } catch (NullReferenceException) { Targets.Remove(target); } catch (Exception e) { ErrorLog.Add($"Turret {Name} error: FireWeapons: {e}\n"); } } } private double RotateElevators(Vector3D targetVec) { StaticWeaponController targetLead = StaticWeapons.Count != 0 ? StaticWeapons[0] : null; Vector3D down = Azimuth.Rotor.WorldMatrix.Down; double biggestUpperOffset = 0; if (Elevations.Count != 0) { Elevations.ForEach(e => { StaticWeapons.ForEach(w => { if (e != null && w.CubeGrid.Equals(e.Rotor.TopGrid)) targetLead = w; }); Vector3D aimVec = targetLead.WorldMatrix.Forward; double aimUpperAngle = Math.Acos(Vector3D.Dot(aimVec, -down)); double targetUpperAngle = Math.Acos(Vector3D.Dot(targetVec, -down)); double upperOffset = aimUpperAngle - targetUpperAngle; if (upperOffset == double.NaN || double.IsInfinity(upperOffset)) { upperOffset = 0; } if (upperOffset > biggestUpperOffset) biggestUpperOffset = Math.Abs(upperOffset); int invFac = _shouldInvertRotation ? -1 : 1; e.RotateElevation((float)upperOffset * invFac, MaxSpeed, MainElevation.Rotor.WorldMatrix.Up); }); } return biggestUpperOffset; } private MyDetectedEntityInfo? FindTarget() { if (Designator != null) { if (Api.HasCoreWeapon(Designator.Weapon)) { return Api.GetWeaponTarget(Designator.Weapon); } else if (Designator is IMyLargeTurretBase) { return (Designator as IMyLargeTurretBase).GetTargetedEntity(); } } MyDetectedEntityInfo? ai_focus = null; bool has_focus = false; if (AllowWcTargeting) { ai_focus = Api.GetAiFocus(Azimuth.Rotor.CubeGrid.EntityId); if (ai_focus.HasValue && !ai_focus.Value.IsEmpty() && !(ai_focus.Value.TimeStamp < (DateTime.Now.TimeOfDay - new TimeSpan(0, 0, 10)).TotalMilliseconds)) has_focus = true; } double highestScore = -1; if (Targets.Count != 0) { MyDetectedEntityInfo? info = null; foreach (MyDetectedEntityInfo k in Targets.Keys) { if (!k.IsEmpty() && IsValidTarget(k, Targets[k])) { Vector3D distance = (k.Position - Azimuth.GetPosition()); if (_targetAbove) { var up = Azimuth.Rotor.WorldMatrix.Up; var vec = Vector3D.Normalize(Vector3D.ProjectOnVector(ref distance, ref up)); if ((up - vec).Length() > 0.01) continue; } if (distance.Length() <= EngageDist) { double targetScore = CalculateTargetScore(Targets[k], distance); if (has_focus && k.EntityId == ai_focus.Value.EntityId) targetScore += 10000; if (targetScore > highestScore) { highestScore = targetScore; info = k; } } } } return info; } return null; } private double CalculateTargetScore(float threat, Vector3D distance) { return threat * 1000 + MyMath.Clamp(5000 - (float)distance.Length(), 0, 5000); } public bool IsValidTarget(MyDetectedEntityInfo target, float offenseRating) { return offenseRating >= _minimumOffenseRating && target.Relationship == MyRelationsBetweenPlayerAndBlock.Enemies; } public void MoveToRest() { _sequenceIdx = 0; _offsetTimer = 0; _isResting = true; _isAimed = false; if (!IsWorking()) { return; } Azimuth.MoveToRest(MaxSpeed); Elevations.ForEach(e => e.MoveToRest(MaxSpeed)); } public bool IsWorking() { if (Azimuth == null || Azimuth.Rotor == null) { EchoString.Append("No AZIMUTH rotor found!\n"); return false; } if (MainElevation == null || MainElevation.Rotor == null) { EchoString.Append("No ELEVATION rotor found!\n"); return false; } if (StaticWeapons.Count == 0) { EchoString.Append("No WEAPONS found!\n"); return false; } return true; } public void Debug() { EchoString.Append($"Debug for turret group: {Name}\n"); EchoString.Append($"Resting: {_isResting}\n"); EchoString.Append($"Is Aimed: {_isAimed}\n"); EchoString.Append($"Elevation Reversed: {_shouldInvertRotation}\n"); EchoString.Append($"Engagement Distance: {EngageDist}\n"); EchoString.Append($"Minimum Target Threat Level: {ConvertOffenseRatingToThreatLevel(_minimumOffenseRating)}({_minimumOffenseRating})\n"); int wc = 0; int v = 0; StaticWeapons.ForEach(w => { if (w.IsWC) wc++; else v++; }); EchoString.Append($"{wc} WC weapons\n{v} Vanilla Weapons\n"); EchoString.Append($"Has Designator: {Designator != null}\n"); EchoString.AppendLine(); } private int CompareByDistanceToAzimuth(IMyCubeBlock lhs, IMyCubeBlock rhs) => (lhs.Position - Azimuth.Rotor.Position).Length() - (rhs.Position - Azimuth.Rotor.Position).Length(); } public class TurretWeaponController : WeaponController { public bool IsUnderControl { get { if (IsWC) return Api.GetPlayerController(Weapon) != -1; return (Weapon as IMyLargeTurretBase).IsUnderControl; } } public TurretWeaponController(IMyTerminalBlock weapon) : base(weapon) { if (IsWC) { if (!TurretDefinitionSubIds.Contains(Weapon.BlockDefinition.SubtypeName)) { throw new Exception("Expected a Turret Weapon for Controller"); } } else { if (!(Weapon is IMyLargeTurretBase)) { throw new Exception("Expected a Turret Weapon for Controller"); } } } public override MyDetectedEntityInfo? GetTarget() { if (IsWC) { return Api.GetWeaponTarget(Weapon); } return (Weapon as IMyLargeTurretBase).GetTargetedEntity(); } public override float GetMaxRange(int weaponId = 0) { if (IsWC) { return Api.GetMaxWeaponRange(Weapon, weaponId); } return (Weapon as IMyLargeTurretBase).Range; } public override bool IsTargetAligned(long targetId, int weaponId = 0) { if (IsWC) { return Api.IsTargetAligned(Weapon, targetId, weaponId); } return (Weapon as IMyLargeTurretBase).IsShooting; } } public class WcPbAPI { private Action<ICollection<MyDefinitionId>> _getCoreStaticLaunchers; private Action<ICollection<MyDefinitionId>> _getCoreTurrets; private Action<IMyTerminalBlock, IDictionary<MyDetectedEntityInfo, float>> _getSortedThreats; private Func<long, int, MyDetectedEntityInfo> _getAiFocus; private Func<IMyTerminalBlock, int, MyDetectedEntityInfo> _getWeaponTarget; private Action<IMyTerminalBlock, bool, int> _fireWeaponOnce; private Action<IMyTerminalBlock, bool, bool, int> _toggleWeaponFire; private Func<IMyTerminalBlock, int, bool, bool, bool> _isWeaponReadyToFire; private Func<IMyTerminalBlock, int, float> _getMaxWeaponRange; private Func<IMyTerminalBlock, long, int, bool> _isTargetAligned; private Func<IMyTerminalBlock, long, int, bool> _canShootTarget; private Func<IMyTerminalBlock, long, int, Vector3D?> _getPredictedTargetPos; private Func<long, bool> _hasGridAi; private Func<IMyTerminalBlock, bool> _hasCoreWeapon; private Func<IMyTerminalBlock, long> _getPlayerController; public bool Activate(IMyTerminalBlock pbBlock) { var dict = pbBlock.GetProperty("WcPbAPI")?.As<IReadOnlyDictionary<string, Delegate>>().GetValue(pbBlock); if (dict == null) throw new Exception($"WcPbAPI failed to activate"); return ApiAssign(dict); } private bool ApiAssign(IReadOnlyDictionary<string, Delegate> delegates) { if (delegates == null) return false; AssignMethod(delegates, "GetCoreStaticLaunchers", ref _getCoreStaticLaunchers); AssignMethod(delegates, "GetCoreTurrets", ref _getCoreTurrets); AssignMethod(delegates, "GetSortedThreats", ref _getSortedThreats); AssignMethod(delegates, "GetAiFocus", ref _getAiFocus); AssignMethod(delegates, "GetWeaponTarget", ref _getWeaponTarget); AssignMethod(delegates, "FireWeaponOnce", ref _fireWeaponOnce); AssignMethod(delegates, "ToggleWeaponFire", ref _toggleWeaponFire); AssignMethod(delegates, "IsWeaponReadyToFire", ref _isWeaponReadyToFire); AssignMethod(delegates, "GetMaxWeaponRange", ref _getMaxWeaponRange); AssignMethod(delegates, "IsTargetAligned", ref _isTargetAligned); AssignMethod(delegates, "CanShootTarget", ref _canShootTarget); AssignMethod(delegates, "GetPredictedTargetPosition", ref _getPredictedTargetPos); AssignMethod(delegates, "HasGridAi", ref _hasGridAi); AssignMethod(delegates, "HasCoreWeapon", ref _hasCoreWeapon); AssignMethod(delegates, "GetPlayerController", ref _getPlayerController); return true; } private void AssignMethod<T>(IReadOnlyDictionary<string, Delegate> delegates, string name, ref T field) where T : class { if (delegates == null) { field = null; return; } Delegate del; if (!delegates.TryGetValue(name, out del)) throw new Exception($"{GetType().Name} :: Couldn't find {name} delegate of type {typeof(T)}"); field = del as T; if (field == null) throw new Exception( $"{GetType().Name} :: Delegate {name} is not type {typeof(T)}, instead it's: {del.GetType()}"); } public void GetAllCoreStaticLaunchers(ICollection<MyDefinitionId> collection) => _getCoreStaticLaunchers?.Invoke(collection); public void GetAllCoreTurrets(ICollection<MyDefinitionId> collection) => _getCoreTurrets?.Invoke(collection); public void GetSortedThreats(IMyTerminalBlock pbBlock, IDictionary<MyDetectedEntityInfo, float> collection) => _getSortedThreats?.Invoke(pbBlock, collection); public MyDetectedEntityInfo? GetAiFocus(long shooter, int priority = 0) => _getAiFocus?.Invoke(shooter, priority); public MyDetectedEntityInfo? GetWeaponTarget(IMyTerminalBlock weapon, int weaponId = 0) => _getWeaponTarget?.Invoke(weapon, weaponId) ?? null; public void FireWeaponOnce(IMyTerminalBlock weapon, bool allWeapons = true, int weaponId = 0) => _fireWeaponOnce?.Invoke(weapon, allWeapons, weaponId); public void ToggleWeaponFire(IMyTerminalBlock weapon, bool on, bool allWeapons, int weaponId = 0) => _toggleWeaponFire?.Invoke(weapon, on, allWeapons, weaponId); public bool IsWeaponReadyToFire(IMyTerminalBlock weapon, int weaponId = 0, bool anyWeaponReady = true, bool shootReady = false) => _isWeaponReadyToFire?.Invoke(weapon, weaponId, anyWeaponReady, shootReady) ?? false; public float GetMaxWeaponRange(IMyTerminalBlock weapon, int weaponId) => _getMaxWeaponRange?.Invoke(weapon, weaponId) ?? 0f; public bool IsTargetAligned(IMyTerminalBlock weapon, long targetEnt, int weaponId) => _isTargetAligned?.Invoke(weapon, targetEnt, weaponId) ?? false; public bool CanShootTarget(IMyTerminalBlock weapon, long targetEnt, int weaponId) => _canShootTarget?.Invoke(weapon, targetEnt, weaponId) ?? false; public Vector3D? GetPredictedTargetPosition(IMyTerminalBlock weapon, long targetEnt, int weaponId) => _getPredictedTargetPos?.Invoke(weapon, targetEnt, weaponId) ?? null; public bool HasGridAi(long entity) => _hasGridAi?.Invoke(entity) ?? false; public bool HasCoreWeapon(IMyTerminalBlock weapon) => _hasCoreWeapon?.Invoke(weapon) ?? false; public long GetPlayerController(IMyTerminalBlock weapon) => _getPlayerController?.Invoke(weapon) ?? -1; } public class WeaponController { public IMyTerminalBlock Weapon { get; } public bool IsWC { get; } public IMyCubeGrid CubeGrid { get { return Weapon.CubeGrid; } } public MatrixD WorldMatrix { get { return Weapon.WorldMatrix; } } public Vector3I Position { get { return Weapon.Position; } } public WeaponController(IMyTerminalBlock weapon) { Weapon = weapon; IsWC = Api.HasCoreWeapon(Weapon); } public void ShootOnce(int weaponId = 0) { if (IsWC) { Api.FireWeaponOnce(Weapon, false, weaponId); } else { Weapon.ApplyAction("ShootOnce"); } } public virtual MyDetectedEntityInfo? GetTarget() { if (IsWC) { return Api.GetWeaponTarget(Weapon); } return null; } public bool IsReady() { if (IsWC) { return Api.IsWeaponReadyToFire(Weapon, 0, true, true); } return Weapon.IsWorking; } public virtual float GetMaxRange(int weaponId = 0) { if (IsWC) { return Api.GetMaxWeaponRange(Weapon, weaponId); } return 800.0f; } public virtual bool IsTargetAligned(long targetId, int weaponId = 0) { if (IsWC) { return Api.IsTargetAligned(Weapon, targetId, weaponId); } return false; } public bool CanShootTarget(long targetId, int weaponId = 0) { if (IsWC) { return Api.CanShootTarget(Weapon, targetId, weaponId); } return Weapon.IsWorking; } public Vector3 GetPosition() { return Weapon.GetPosition(); } } LargeBlockBatteryBlock 103429091033978444 Clean_Armor 144115188075855996 144115188075855996 Faction false false false true 4 true 2.98347044 true 0 false false 0 LargeBlockBatteryBlock 143972606036172665 Clean_Armor 144115188075855996 144115188075855996 Faction false false false true 5 true 2.98344922 true 0 false false 0 LargeBlockBatteryBlock 110685449962598311 Clean_Armor 144115188075855997 144115188075855996 Faction false false false true 6 true 2.98040271 true 0 false false 0 LargeBlockBatteryBlock 84792697630531057 Clean_Armor 144115188075855997 144115188075855996 Faction false false false true 7 true 2.98042941 true 0 false false 0 LargeBlockBatteryBlock 103846606369500110 Clean_Armor 144115188075855997 144115188075855996 Faction false false false true 8 true 2.980429 true 0 false false 0 Beton 113458796274894969 Weldless 144115188075855996 Beton 93022857990634752 Weldless 144115188075855996 Beton 131187837279470860 Weldless 144115188075855996 Beton 127169195560059953 Weldless 144115188075855996 AzimuthFusionGenerator2Port 95694482897679550 Clean_Armor 144115188075855997 144115188075855996 Faction MyInventoryBase 99.94152 Uranium 0 1 8 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame100 200 900 false false true true true 1 true 9994.152 false Beton 116045448730193417 Weldless 144115188075855996 Beton 106635082586371936 Weldless 144115188075855996 Beton 138745570157027573 Weldless 144115188075855996 Beton 103932874585591097 Weldless 144115188075855996 Beton 108734782783752882 Weldless 144115188075855996 Beton 120990963849389864 Weldless 144115188075855996 Beton 107782488819412282 Weldless 144115188075855996 Serg_25MW_Wind_Turbine 138633155879577665 Weldless 144115188075855996 144115188075855996 Faction false false false true 1 true 1 1 1 1 1 1 1 1 1 XL_BlockHazard_Concrete 121883380793414726 144115188075855996 XL_BlockHazard_Concrete 113133862195786973 144115188075855996 XL_BlockHazard_Concrete 105888642229813792 144115188075855996 XL_Block_Concrete 129364151036571787 144115188075855996 XL_BlockHazard_Concrete 115876021033968763 144115188075855996 LargeBlockConveyorPipeSeamless 105704484442893819 144115188075855996 XL_Block_Concrete 142201672180558486 144115188075855996 XL_Block_Concrete 118822915297079451 144115188075855996 XL_BlockHazard_Concrete 126103226985061800 144115188075855996 XL_BlockHazard_Concrete 79748466258847142 144115188075855996 LargeStator 141845581729817081 144115188075855997 144115188075855996 Faction false true true true 3 true 100980484451049770 false 5 0 0.000161567892 false false 3.36E+07 0 LargeBlockConveyorPipeSeamless 79927967232171463 144115188075855996 LargeBlockConveyorPipeSeamless 91830614222001450 144115188075855996 ControlPanel 105427969222144852 144115188075855996 144115188075855996 Faction false true true true 2 XL_BlockHazard_Concrete 89103385438335397 144115188075855996 XL_1x_Concrete 139908270594909758 144115188075855996 Ace_Turret_400mmVanquisher 131434217575637701 144115188075855996 144115188075855996 Faction MyInventoryBase 0 1.368 9223372036854.775807 2147483647 CanSend false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzSAQoJCAAQAB0AAAAAEsQBCAESPC0AwFpFMjUIABAAGAAgACgBMABAA1AAWAB4AIABAJABAKABALABAMABANABeNgBAOgBAPABAPgBAZACABpEEgkNAAAAABAAIDoYACD8gICAgICAgAIwADgAQABIAFIjGhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAAAgACgAMAAiKggBEAAgACoFIJvcpz8yGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoQCAEgBCgAMAA4AEAsSABQAAgi 74de02b3-27f9-4960-b1c4-27351f2b06d1 @Special Container modes: - Normal: stores wanted amount, removes excess. Usage: item=100 - Minimum: stores wanted amount, ignores excess. Usage: item=100M - Limiter: doesn't store items, only removes excess. Usage: item=100L - All: stores all items it can get until it's full. Usage: item=All Component/AiEnabled_Comp_CrewBotMaterial=0 Component/AiEnabled_Comp_RepairBotMaterial=0 Component/BulletproofGlass=0 Component/C100ShellCasing=0 Component/Computer=0 Component/Construction=0 Component/Detector=0 Component/Display=0 Component/ElectromagnetAWE=0 Component/Girder=0 Component/GoldPlatedPlate=0 Component/GravityGenerator=0 Component/InteriorPlate=0 Component/LargeTube=0 Component/Magnetron_Component=0 Component/Medical=0 Component/MetalGrid=0 Component/MilitaryPlateAWE=0 Component/Motor=0 Component/PlatinumPlatedPlate=0 Component/PowerCell=0 Component/RadioCommunication=0 Component/Reactor=0 Component/SandGranulat=0 Component/Shield=0 Component/ShieldComponent=0 Component/SmallTube=0 Component/SolarCell=0 Component/SpaceExtensionDeviceMK1=0 Component/SteelPlate=0 Component/Superconductor=0 Component/Thrust=0 Component/UpgradeAIModule=0 Component/UpgradeAIModuleDual=0 Component/Zement=0 Ore/Cobalt=0 Ore/Gold=0 Ore/Ice=0 Ore/Scrap=0 Ore/Stone=0 Ingot/Cobalt=0 Ingot/DeuteriumContainer=0 Ingot/Gold=0 Ingot/Iron=0 Ingot/Magnesium=0 Ingot/Nickel=0 Ingot/Platinum=0 Ingot/Silicon=0 Ingot/Silver=0 Ingot/Stone=0 Ingot/Uranium=0 AmmoMagazine/Ace_400mmShell=0 AmmoMagazine/ARYX_AWE_VECTOR_MINIGUN_AMMO=0 AmmoMagazine/AutocannonClip=0 AmmoMagazine/AutomaticRifleGun_Mag_20rd=0 AmmoMagazine/AWE85mmAmmoMagazine=0 AmmoMagazine/C100mmAmmo=0 AmmoMagazine/C30Ammo=0 AmmoMagazine/CODEXAmmoMagazine=0 AmmoMagazine/HEShell100mm=0 AmmoMagazine/LargeCalibreAmmo=0 AmmoMagazine/MediumCalibreAmmo=0 AmmoMagazine/Missile200mm=0 AmmoMagazine/NATO_25x184mm=0 AmmoMagazine/NATO_5p56x45mm=0 AmmoMagazine/PaintGunMag=0 AmmoMagazine/TBR102_APBC_T_Magazine=0 OxygenContainerObject/OxygenBottle=0 GasContainerObject/HydrogenBottle=0 PhysicalGunObject/AngleGrinder4Item=0 PhysicalGunObject/AngleGrinderItem=0 PhysicalGunObject/AutomaticRifleItem=0 PhysicalGunObject/HandDrillItem=0 PhysicalGunObject/PhysicalPaintGun=0 PhysicalGunObject/Ven_RWR_M8_Item=0 PhysicalGunObject/Welder2Item=0 PhysicalGunObject/Welder4Item=0 PhysicalGunObject/WelderItem=0 PhysicalObject/SpaceCredit=0 400mm Vanquisher Battery Special (0%) false true true true 1 false false false ARYXCodexPDC 119759776167734107 144115188075855996 144115188075855996 Faction MyInventoryBase 200 CODEXAmmoMagazine 0 0 1 0.2 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 0 10 false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzDAQoJCAEQch0AAAAAErUBCAISNi0AAJZEMi8IABAAGAAgACgAMAB4AIABAJABAKABAbABAMABANABeNgBAOgBAPABAPgBAZACABo6EgkNAAAAABAAIDsYADAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIqCAIQACAAKgUg67mmQzIbCQAAAAAAAAAAIQAAAAAAAAAAOQAAAAAAAAAAKhEIAiABKAAwADjIAUAESABQAAgi false true true true 3 true false false true 0.1 1.04719758 0.1 0 0 false 0 0 CODEXAmmoMagazine 0 false true true true WCIS_Conveyor_Tube_5x 109923262106486183 144115188075855996 LargeBlockConveyorPipeJunction 104871747886927896 144115188075855996 LargeBlockBatteryBlock 144111484927597697 144115188075855997 144115188075855996 Faction false true true true 10 true 2.98077 true 0 false false 0 LargeBlockBatteryBlock 73034730827246430 144115188075855997 144115188075855996 Faction false true true true 9 true 2.98088026 true 0 false false 0 Beton 100225587545291324 144115188075855996 Beton 116884873832125148 144115188075855996 BetonRamp 114803646981706806 144115188075855996 BetonRamp 137116024351798726 144115188075855996 BetonRamp 117768181804891981 144115188075855996 BetonRamp 109940834722376056 144115188075855996 BetonRamp 105832616081257164 144115188075855996 Beton 140226846528200738 144115188075855996 BetonRamp 89241793305690474 144115188075855996 Beton 76358803625137649 144115188075855996 WindowWallRight 102396379080975407 144115188075855996 WindowWallLeft 133897547473220488 144115188075855996 WindowWallRight 84258311291287287 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeHeavyBlockArmorBlock 144115188075855996 LargeBlockOffsetDoor 103883445032016437 144115188075855996 144115188075855996 Faction false true true true 3 true false 0 RealBlockDoorSmallOpen RealBlockDoorSmallClose LargeHeavyBlockArmorBlock 144115188075855996 BetonRamp 126690983281629520 144115188075855996 BetonRamp 123026129797040982 144115188075855996 WindowWallLeft 122500317264626681 144115188075855996 WindowWallRight 134276322555111480 144115188075855996 WindowWallRight 108558025758446977 144115188075855996 WindowWallLeft 81680196348101235 144115188075855996 BetonRamp 105758326287364005 144115188075855996 BetonRamp 74071298564089958 144115188075855996 BetonRamp 93083799834537709 144115188075855996 BetonRamp 81630707314823105 144115188075855996 BetonRamp 131360465236689286 144115188075855996 BetonRamp 101722095810756125 144115188075855996 ConveyorTubeT 137389146997143610 144115188075855996 AQD_LG_ConveyorStraightArmored 101426056764594341 144115188075855996 Beton 118602330510192070 144115188075855996 Beton 114629689895203675 144115188075855996 Beton 96154763517163302 144115188075855996 Beton 95066264472716440 144115188075855996 Beton 79788036019467862 144115188075855996 Beton 133258816424412050 144115188075855996 Beton 82451760621096576 144115188075855996 BetonRamp 142735671094291608 144115188075855996 BetonRamp 113381617063633506 144115188075855996 BetonRamp 88475990147663835 144115188075855996 BetonRamp 96777708696739626 144115188075855996 BetonRamp 110319617807686162 144115188075855996 Beton 102448413485665928 144115188075855996 BetonRamp 123963366487309691 144115188075855996 BetonRamp 129414776517374193 144115188075855996 BetonRamp 113982663371438795 144115188075855996 BetonRamp 135158256635178624 144115188075855996 BetonRamp 99904025569876531 144115188075855996 BetonRamp 102686611802549090 144115188075855996 BetonRamp 76995679255334338 144115188075855996 BetonRamp 111697417441097641 144115188075855996 Ace_Turret_400mmAssault 99422293981384528 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0.912 9223372036854.775807 2147483647 CanSend false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzTAQoJCAAQAB0AAAAAEsUBCAESPC0AwFpFMjUIABAAGAAgACgBMABAA1AAWAB4AIABAJABAKABALABAMABANABeNgBAOgBAPABAPgBAZACABpEEgkNAAAAABAAIDwYACD8gICAgICAgAIwADgAQABIAFIjGhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAAAgACgAMAAiKwgBEAAgACoGIO/S178EMhsJAAAAAAAAAAAhAAAAAAAAAAA5AAAAAAAAAAAqEAgBIAEoADAAOABAAEgAUAAIIg== 74de02b3-27f9-4960-b1c4-27351f2b06d1 @Special Container modes: - Normal: stores wanted amount, removes excess. Usage: item=100 - Minimum: stores wanted amount, ignores excess. Usage: item=100M - Limiter: doesn't store items, only removes excess. Usage: item=100L - All: stores all items it can get until it's full. Usage: item=All Component/AiEnabled_Comp_CrewBotMaterial=0 Component/AiEnabled_Comp_RepairBotMaterial=0 Component/BulletproofGlass=0 Component/C100ShellCasing=0 Component/Computer=0 Component/Construction=0 Component/Detector=0 Component/Display=0 Component/ElectromagnetAWE=0 Component/Girder=0 Component/GoldPlatedPlate=0 Component/GravityGenerator=0 Component/InteriorPlate=0 Component/LargeTube=0 Component/Magnetron_Component=0 Component/Medical=0 Component/MetalGrid=0 Component/MilitaryPlateAWE=0 Component/Motor=0 Component/PlatinumPlatedPlate=0 Component/PowerCell=0 Component/RadioCommunication=0 Component/Reactor=0 Component/SandGranulat=0 Component/Shield=0 Component/ShieldComponent=0 Component/SmallTube=0 Component/SolarCell=0 Component/SpaceExtensionDeviceMK1=0 Component/SteelPlate=0 Component/Superconductor=0 Component/Thrust=0 Component/UpgradeAIModule=0 Component/UpgradeAIModuleDual=0 Component/Zement=0 Ore/Cobalt=0 Ore/Gold=0 Ore/Ice=0 Ore/Scrap=0 Ore/Stone=0 Ingot/Cobalt=0 Ingot/DeuteriumContainer=0 Ingot/Gold=0 Ingot/Iron=0 Ingot/Magnesium=0 Ingot/Nickel=0 Ingot/Platinum=0 Ingot/Silicon=0 Ingot/Silver=0 Ingot/Stone=0 Ingot/Uranium=0 AmmoMagazine/Ace_400mmShell=0 AmmoMagazine/ARYX_AWE_VECTOR_MINIGUN_AMMO=0 AmmoMagazine/AutocannonClip=0 AmmoMagazine/AutomaticRifleGun_Mag_20rd=0 AmmoMagazine/AWE85mmAmmoMagazine=0 AmmoMagazine/C100mmAmmo=0 AmmoMagazine/C30Ammo=0 AmmoMagazine/CODEXAmmoMagazine=0 AmmoMagazine/HEShell100mm=0 AmmoMagazine/LargeCalibreAmmo=0 AmmoMagazine/MediumCalibreAmmo=0 AmmoMagazine/Missile200mm=0 AmmoMagazine/NATO_25x184mm=0 AmmoMagazine/NATO_5p56x45mm=0 AmmoMagazine/PaintGunMag=0 AmmoMagazine/TBR102_APBC_T_Magazine=0 OxygenContainerObject/OxygenBottle=0 GasContainerObject/HydrogenBottle=0 PhysicalGunObject/AngleGrinder4Item=0 PhysicalGunObject/AngleGrinderItem=0 PhysicalGunObject/AutomaticRifleItem=0 PhysicalGunObject/HandDrillItem=0 PhysicalGunObject/PhysicalPaintGun=0 PhysicalGunObject/Ven_RWR_M8_Item=0 PhysicalGunObject/Welder2Item=0 PhysicalGunObject/Welder4Item=0 PhysicalGunObject/WelderItem=0 PhysicalObject/SpaceCredit=0 400mm Assault Turret Special (0%) false true true true 1 false false false XL_1x_Concrete 143738354968372312 144115188075855996 XL_1x_Concrete 74679841913335809 144115188075855996 XL_BlockHazard_Concrete 104930820466815048 144115188075855996 BetonRamp 123208301404744031 144115188075855996 XL_Block_Concrete 91018727964239020 144115188075855996 XL_Block_Concrete 133388029515937720 144115188075855996 XL_1x_Concrete 132549763951942598 144115188075855996 WCIS_Reinforced_Conveyor_Tube_21x 100169968998805680 144115188075855996 OpenCockpitLarge 115409248136828603 144115188075855997 144115188075855996 Faction MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false false true true true 1 false Character Character Character 0.420645446 0.5053788 0.6697795 -0.345029235 true 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ArtificialHorizon 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_EnergyHydrogen 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_Gravity 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ClockAnalog 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 false 0 XL_BlockHazard_Concrete 133049925582711533 144115188075855996 XL_BlockHazard_Concrete 89185023572810512 144115188075855996 XL_BlockHazard_Concrete 140148180662921614 144115188075855996 WCIS_Reinforced_Conveyor_Tube_21x 136889082197855700 144115188075855996 XL_1x_Concrete 97116745611771456 144115188075855996 WCIS_Reinforced_Conveyor_Tube_21x 142410431574300951 144115188075855996 WCIS_Reinforced_Conveyor_Tube_21x 136090610497436249 144115188075855996 XL_BlockHazard_Concrete 114484075137001464 144115188075855996 XL_BlockHazard_Concrete 115080297819707060 144115188075855996 XL_BlockHazard_Concrete 94151851473458511 144115188075855996 XL_BlockHazard_Concrete 76972804721092435 144115188075855996 XL_1x_Concrete 96672417797892506 144115188075855996 XL_BlockHazard_Concrete 141346346991717954 144115188075855996 XL_BlockHazard_Concrete 101530520145391778 144115188075855996 XL_BlockHazard_Concrete 99620110730401433 144115188075855996 XL_BlockHazard_Concrete 106492567385107844 144115188075855996 XL_BlockHazard_Concrete 81729723199891454 144115188075855996 Down Forward
LARGE_LINE Forward Backward LARGE_LINE Backward Forward LARGE_LINE Backward Forward LARGE_LINE Left Right LARGE_LINE Backward Left
LARGE_LINE Backward Forward LARGE_LINE Up Down LARGE_LINE Right Left LARGE_LINE Left Right LARGE_LINE Forward Backward LARGE_LINE Up Down LARGE_LINE Left Right LARGE_LINE Forward Backward LARGE_LINE Backward Forward LARGE_LINE Up Forward
LARGE_LINE Up Down LARGE_LINE Up Down LARGE_LINE Up Down LARGE_LINE Backward Forward LARGE_LINE Right Backward
LARGE_LINE FORWARD Forward Backward LARGE_LINE BACKWARD Left Right LARGE_LINE Left Right LARGE_LINE Left Right LARGE_LINE Backward Left
LARGE_LINE Up Down LARGE_LINE Forward Backward LARGE_LINE Left Forward
LARGE_LINE Right Backward
LARGE_LINE Forward Backward
LARGE_LINE Down Up LARGE_LINE Right Up
LARGE_LINE Up Down LARGE_LINE Up Down LARGE_LINE Down Up LARGE_LINE Up Down LARGE_LINE Down Up LARGE_LINE Down Up LARGE_LINE Backward Forward LARGE_LINE Left Right LARGE_LINE Backward Forward LARGE_LINE Backward Forward LARGE_LINE Down Up LARGE_LINE Forward Backward
LARGE_LINE Up Down LARGE_LINE Up Down LARGE_LINE Up Down LARGE_LINE Left Right LARGE_LINE Down Up LARGE_LINE Up Down LARGE_LINE Backward Forward LARGE_LINE Backward Down
LARGE_LINE Backward Up
LARGE_LINE Up Down LARGE_LINE Forward Backward LARGE_LINE Up Down LARGE_LINE Right Left LARGE_LINE Backward Forward LARGE_LINE Right Left LARGE_LINE Down Forward
LARGE_LINE Forward Backward LARGE_LINE Backward Forward LARGE_LINE Up Down LARGE_LINE Right Up
LARGE_LINE Left Right LARGE_LINE Down Up LARGE_LINE Down Up LARGE_LINE Forward Right
LARGE_LINE Down Up LARGE_LINE Down Up LARGE_LINE Down Up LARGE_LINE base hanger doors 7 2 -28 -2 2 -28 -2 7 -28 -1 7 -28 0 7 -28 1 7 -28 2 7 -28 3 7 -28 4 7 -28 5 7 -28 6 7 -28 6 2 -28 7 7 -28 5 2 -28 4 2 -28 3 2 -28 2 2 -28 1 2 -28 0 2 -28 -1 2 -28 station batts -4 2 -7 7 6 7 7 5 7 7 3 7 7 4 7 7 2 7 -7 2 -3 Outpost Gamma true false 120 93367602189451825 CastShadows InScene 0.710970342 0.0696888 0.07003365 0.696247041 Small SmallRotor 116910998704482707 144115188075855996 127920249747789574 false SmallBlockRadioAntenna 101004307656733056 144115188075855996 144115188075855996 Faction false false false true 1 true 10000 false true 0 false true Outpost Gamma Small Grid 3014 true false 0 107742844307770941 CastShadows InScene -0.06968805 0.710970044 -0.6962471 0.07003711 Large LargePistonTop 120674985478709311 144115188075855996 103709888873267514 false Collector 113841174001822607 144115188075855996 144115188075855996 Faction MyInventoryBase 1140 6.25 9223372036854.775807 2147483647 CanSend false false true true true 1 true Up Down LARGE_LINE Large Grid 3294 true false 0 77955324269396012 CastShadows InScene 0.453255624 0.5415611 0.5522184 0.443086684 Small SmallRotor 100980484451049770 144115188075855996 141845581729817081 false SmallProjector 124230291855066102 144115188075855997 144115188075855996 Faction false true true true 1 true 0 0 0 0 0 0 false false false 5 200 0 false 1 SmallControlPanel 136928658530986228 144115188075855997 144115188075855996 Faction false true true true 1 Small Grid 8798 true false 0 142853689550393378 CastShadows InScene 0.456059963 0.5402728 0.548048556 0.446942359 MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811502 GAA= 75bbb4f5-4fb9-4230-beef-bb79c9811503 Eg0IABAAIAAtAAAAADAA Small SmallBlockCylindricalColumn 87484765466432576 144115188075855996 SmallBlockCylindricalColumn 79791937102854958 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockSmallAtmosphericThrust 104624606480002103 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster false true true true 5 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallThrust 116978633954926233 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 6 false true true true 7 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockCylindricalColumn 94145099911345480 144115188075855996 SmallArmorPanelHeavy 105505301058622002 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallArmorPanelHeavy 117518561223924533 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockSmallHydrogenThrust 129076743677357344 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 12 false true true true 3 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockSmallAtmosphericThrust 121287033771164187 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 22 true SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallSymbol0 85933630299757342 Silver_Armor 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockSmallThrust 139434923951819048 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 9 false true true true 13 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 110336890755154579 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 36 false true true true 20 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockBatteryBlock 125346563245272647 144115188075855997 144115188075855996 Faction Battery 4 false true true true 3 true 0.9938538 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 98847451038975405 144115188075855997 144115188075855996 Faction Small Battery 10 false true true true 5 true 0.04969464 true 0 false false 0 SmallBlockSmallBatteryBlock 91113385015894779 144115188075855997 144115188075855996 Faction Small Battery 12 false true true true 7 true 0.04969387 true 0 false false 0 SmallBlockSmallBatteryBlock 138876908129485714 144115188075855997 144115188075855996 Small Battery 14 false true true true 9 true 0.04969623 true 0 false false 0 SmallBlockSmallBatteryBlock 124747566690379604 144115188075855997 144115188075855996 Small Battery 2 false true true true 3 true 0.0496967025 true 0 false false 0 SmallBlockSmallThrust 110980571100487372 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 22 false true true true 1 true SmallBlockSmallThrust 106806383131705763 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 21 false true true true 2 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallGenerator 108320320853528491 144115188075855997 144115188075855996 MyInventoryBase 24.987445 Uranium 0 1 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor false true true true 1 false 24.9874439 false SmallBlockArmorBlock 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockGyro 113468502963257751 144115188075855997 144115188075855996 Gyroscope 9 false true true true 5 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 107652397585158439 144115188075855997 144115188075855996 Small Battery 3 false true true true 28 true 0.0497001521 true 0 false false 0 SmallBlockBatteryBlock 92604251800676728 144115188075855997 144115188075855996 Faction Battery 3 false true true true 2 true 0.993993461 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 77604372243322923 144115188075855997 144115188075855996 Small Battery 13 false true true true 8 true 0.04970115 true 0 false false 0 SmallBlockSmallBatteryBlock 100758099806527645 144115188075855997 144115188075855996 Small Battery 15 false true true true 10 true 0.0497004054 true 0 false false 0 SmallBlockSmallBatteryBlock 92734092831327662 144115188075855997 144115188075855996 Small Battery 11 false true true true 6 true 0.0497025959 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 87525036550661073 144115188075855997 144115188075855996 Small Battery 16 false true true true 19 true 0.0497018546 true 0 false false 0 SmallBlockSmallBatteryBlock 74207733710680504 144115188075855997 144115188075855996 Small Battery 6 false true true true 31 true 0.0497040451 true 0 false false 0 HalfArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 95774331126632509 144115188075855997 144115188075855996 Small Battery false true true true 2 true 0.0497033074 true 0 false false 0 SmallBlockSmallBatteryBlock 123500683170136515 144115188075855997 144115188075855996 Small Battery 5 false true true true 30 true 0.04970549 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 101466397424377422 144115188075855997 144115188075855996 Small Battery 4 false true true true 29 true 0.04970476 true 0 false false 0 SmallBlockSmallBatteryBlock 142424747005877737 144115188075855997 144115188075855996 Small Battery 18 false true true true 21 true 0.04970694 true 0 false false 0 SmallBlockSmallBatteryBlock 141335682177586302 144115188075855997 144115188075855996 Faction Small Battery 19 false true true true 4 true 0.04970621 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockGyro 99265098619882447 144115188075855997 144115188075855996 Faction Gyroscope 11 false true true true 3 true SmallBlockGyro 93563509624320955 144115188075855997 144115188075855996 Faction Gyroscope 13 false true true true 1 true HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockGyro 140967009818033639 144115188075855997 144115188075855996 Faction Gyroscope 8 false true true true 14 true SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 119305235990500552 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallArmorPanelHeavy 114449973966311272 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallHydrogenTank 109720153025449277 144115188075855997 144115188075855996 Faction MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 5 false true true true 4 true false 0.9970501 false SmallBlockSmallHydrogenThrust 130416232329545224 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 18 false true true true 8 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockLargeAtmosphericThrust 106535642632294167 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Large Atmospheric Thruster 2 false true true true 2 true SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 79993422118906379 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 135137710840217639 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallArmorPanelHeavy 94390779545057102 144115188075855996 SmallArmorPanelHeavy 118314694980391360 144115188075855996 SmallBlockSmallHydrogenThrust 107963292928894994 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 31 false true true true 11 true SmallArmorPanelHeavy 141472992347137641 144115188075855996 SmallArmorPanelHeavy 141448471401990447 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmorPanelHeavy 123151000762888090 144115188075855996 SmallBlockArmorCorner 144115188075855996 ConveyorTubeSmallCurved 140145182822671452 144115188075855996 SmallArmorPanelHeavy 82314037203436408 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 80221904038201306 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 21 true SmallBlockSmallThrust 119829567599811058 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 15 false true true true 23 true SmallBlockArmorSlope2Base 144115188075855996 SmallBlockSmallThrust 121552639510075632 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 19 false true true true 19 true SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCornerInv 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 ConnectorMedium 72210409068406240 144115188075855997 144115188075855996 0.5 MyInventoryBase 0 1.152 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 20 80 false Connector 2 false true true true 1 true 126384572566464859 0.9999695 0.006118868 -0.00106813165 -0.00473853434 0.4954384 0.5035049 -0.502657354 -0.498356551 4.083258 -5.90218973 0.905827165 0.4954384 0.5035049 -0.502657354 -0.498356551 true false 0 99484 true false SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 109972034694099480 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 13 false true true true 1 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 DBSmallBlockFighterCockpit 101938051536326795 144115188075855996 144115188075855996 Faction MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false Fighter Cockpit 2 false true true true 1 false Character 1 true Character Character 0.0550545566 0.912260652 0.121538118 -0.3872699 true 0.9 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ArtificialHorizon 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ClockAnalog 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_Gravity 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_EnergyHydrogen 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 false 0 SmallBlockArmorCorner Hazard_Armor 144115188075855996 AzimuthSmallBlockAtmosphericThruster 99807640589014151 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 2 true SmallBlockArmorSlope2Base 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockSmallThrust 119302431146420058 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 29 true SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockSmallHydrogenThrust 112728345329016152 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 16 false true true true 6 true SmallBlockSmallHydrogenThrust 127651978389960082 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 29 false true true true 10 true SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockGyro 127362663436199918 144115188075855997 144115188075855996 Gyroscope 10 false true true true 6 true SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 HalfArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 OxygenGeneratorSmall 89141119929379791 144115188075855996 144115188075855996 Faction MyInventoryBase 26639.569098 Ice 0 1 1 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 90 300 false O2/H2 Generator 2 false true true true 2 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallThrust 109553908381050985 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 16 false true true true 24 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockGyro 140201778420444420 144115188075855997 144115188075855996 Gyroscope 12 false true true true 4 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockLargeHydrogenThrust 97320066729085665 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Large Hydrogen Thruster 3 false true true true 1 true SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallThrust 134892726845239896 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 26 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockGyro 77903374785256952 144115188075855997 144115188075855996 Gyroscope 7 false true true true 13 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 124822997015181730 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 18 true SmallBlockArmorBlock 144115188075855996 OxygenGeneratorSmall 116098299646340473 144115188075855997 144115188075855996 MyInventoryBase 7572.181381 Ice 0 1 OxygenBottle 1 0 1 1 HydrogenBottle 1 2 1 OxygenBottle 1 0 3 1 OxygenBottle 1 0 4 1 OxygenBottle 1 0 5 1 OxygenBottle 1 0 6 1 OxygenBottle 1 0 7 1 OxygenBottle 1 0 8 1 OxygenBottle 1 0 9 1 HydrogenBottle 1 10 1 OxygenBottle 1 0 11 1 OxygenBottle 1 0 12 1 OxygenBottle 1 0 13 1 OxygenBottle 1 0 14 1 OxygenBottle 1 0 15 1 OxygenBottle 1 0 16 1 OxygenBottle 1 0 17 1 OxygenBottle 1 0 18 1 OxygenBottle 1 0 19 1 OxygenBottle 1 0 20 1 OxygenBottle 1 0 21 1 OxygenBottle 1 0 22 1 OxygenBottle 1 0 23 1 OxygenBottle 1 0 24 1 OxygenBottle 1 0 25 1 OxygenBottle 1 0 26 1 OxygenBottle 1 0 27 28 1 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 110 300 false O2/H2 Generator false true true true 1 true SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallArmorPanelHeavy 130915356648206735 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 HalfArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 81924846154923790 144115188075855997 144115188075855996 Small Battery 17 false true true true 20 true 0.0496513136 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 ConveyorTubeMedium 72793018538864757 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallArmorPanelHeavy 78542280816897079 144115188075855996 ConveyorTubeSmall 136326371224074625 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallArmorPanelHeavy 108106311579540455 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockSmallThrust 128986262838203721 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 27 true SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockConveyor 143559016210613487 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockSmallGenerator 72163945970390183 144115188075855997 144115188075855996 MyInventoryBase 24.982171 Uranium 0 1 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 2 false true true true 2 false 24.982172 false SmallBlockGyro 127762077588954187 144115188075855997 144115188075855996 Faction Gyroscope 6 false true true true 12 true SmallBlockLargeAtmosphericThrust 85426179917579563 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Large Atmospheric Thruster false true true true 1 true SmallBlockArmorSlope2Tip 144115188075855996 SmallHydrogenTank 98444547449905518 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 2 false true true true 1 true false 0.9970501 false SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallArmorPanelHeavy 122023707193681948 144115188075855996 SmallBlockArmorCorner Neon_Colorable_Surface 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 ConveyorTubeSmallCurved 73193164974669652 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockGyro 98105594203497726 144115188075855997 144115188075855996 Gyroscope 14 false true true true 2 true SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 96449767047882661 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallArmor2x1SlopedSideBasePanelHeavy 88519972923740990 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 105122315630516435 144115188075855997 144115188075855996 Small Battery 22 false true true true 14 true 0.04965855 true 0 false false 0 ConveyorTubeMedium 98157545077197661 144115188075855996 SmallHeavyBlockArmorBlock 144115188075855996 SmallBlockConveyor 97771825293118284 144115188075855996 SmallArmorPanelHeavy 114206694614548713 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockCylindricalColumn 142411404292411945 144115188075855996 SmallBlockBatteryBlock 128897185914431601 144115188075855997 144115188075855996 Battery false true true true 1 true 0.9932289 true 0 false false 0 SmallBlockArmorSlope2Base 144115188075855996 HalfArmorBlock 144115188075855996 SmallAzimuthFusionGenerator2Port 122220446198862647 144115188075855997 144115188075855996 MyInventoryBase 0 1 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false false true true true 1 true 0 false SmallBlockArmorSlope 144115188075855996 SmallBlockGyro 72970186264704061 144115188075855997 144115188075855996 Gyroscope 5 false true true true 11 true SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 83159261764180021 144115188075855997 144115188075855996 Small Battery 21 false true true true 26 true 0.04966434 true 0 false false 0 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockConveyor 98121928628335953 144115188075855996 SmallArmorPanelHeavy 119185708844905463 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallBlockArmorCorner Neon_Colorable_Surface 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmorPanelHeavy 85156565529548447 144115188075855996 SmallBlockArmorCornerInv 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockSmallThrust 116064114409495588 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 5 false true true true 8 true SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallHeavyBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockLargeHydrogenThrust 79346966979780588 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Large Hydrogen Thruster 4 false true true true 2 true HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockSmallBatteryBlock 133336937790932759 144115188075855997 144115188075855996 Small Battery 7 false true true true 24 true 0.04971837 true 0 false false 0 SmallArmor2x1SlopedSideBasePanelHeavyInv 137131921591388464 144115188075855996 SmallSymbol1 92013781683035718 Silver_Armor 144115188075855996 SmallBlockSmallThrust 93805492280899927 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 20 false true true true 20 true SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavy 141337898659023421 144115188075855996 SmallArmorPanelHeavy 73476537034589570 144115188075855996 SmallArmorPanelHeavy 114583668434734520 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavy 84921132837558080 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockSmallThrust 123563467697559803 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 14 false true true true 18 true SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 79901098856429928 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 15 false true true true 5 true SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockConveyor 106968348984387123 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 79922869847109234 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 35 false true true true 19 true SmallBlockSmallAtmosphericThrust 101980486979377303 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 23 false true true true 4 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorCornerInv 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 112678587334588502 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 22 false true true true 3 true SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 128529918594148540 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 34 false true true true 14 true SmallArmorPanelHeavy 123704204849327259 144115188075855996 SmallArmorPanelHeavy 114470637823504669 144115188075855996 SmallArmorPanelHeavy 113286154085052732 144115188075855996 SmallArmorPanelHeavy 110178903493789725 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmorPanelHeavy 102112785350097039 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockSmallThrust 139972923558815809 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 13 false true true true 17 true SmallArmorPanelHeavy 129367904976104146 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockSmallBatteryBlock 95898296216003226 144115188075855997 144115188075855996 Small Battery 24 false true true true 13 true 0.0496734753 true 0 false false 0 SmallBlockSmallBatteryBlock 133715856637605929 144115188075855997 144115188075855996 Small Battery 26 false true true true 16 true 0.0496741 true 0 false false 0 SmallBlockArmorSlope2Base 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavyInv 108279440188595015 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallHeavyBlockArmorSlope2Base 144115188075855996 HeavyHalfArmorBlock 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 110885748570484567 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 11 false true true true 4 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallThrust 133807549629575084 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 28 true SmallBlockArmorCorner2Tip 144115188075855996 SmallHydrogenTank 86124268671809555 144115188075855997 144115188075855996 MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 3 false true true true 2 true false 0.9970501 false SmallBlockArmorSlope2Base 144115188075855996 SmallArmorPanelHeavy 112039891563379214 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Neon_Colorable_Surface 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 120786298212561313 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 ConveyorTubeSmall 86962698978050863 144115188075855996 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallNeonTubesT 91366076321651839 144115188075855996 ConveyorTubeMedium 91330534015724862 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallThrust 76365135106933792 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 25 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallArmorPanelHeavy 119067964442509706 144115188075855996 SmallArmorPanelHeavy 140512493617375430 144115188075855996 SmallBlockSmallHydrogenThrust 113901665397003116 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 30 false true true true 9 true SmallArmorPanelHeavy 87438306136926591 144115188075855996 SmallArmorPanelHeavy 121448611817043788 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockSmallThrust 90899814111186374 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 30 true SmallBlockSmallBatteryBlock 144112977696734480 144115188075855997 144115188075855996 Small Battery 23 false true true true 12 true 0.049679514 true 0 false false 0 SmallBlockSmallBatteryBlock 102612979296240108 144115188075855997 144115188075855996 Small Battery 25 false true true true 11 true 0.0498075821 true 0 false false 0 SmallBlockSmallBatteryBlock 84018505217171250 144115188075855997 144115188075855996 Small Battery 27 false true true true 15 true 0.04968219 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 130702696302450084 144115188075855997 144115188075855996 Small Battery 9 false true true true 25 true 0.0496814027 true 0 false false 0 SmallBlockArmorSlope Hazard_Armor 144115188075855996 87217116780437606 144115188075855997 144115188075855996 Faction MyInventoryBase 0 0.064 9223372036854.775807 2147483647 CanReceive false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzDAQoJCAEQAB0AAAAAErUBCAISNi0AgLtEMi8IABAAGAAgACgAMAB4AIABAJABAKABALABAMABANABeNgBAegBAPABAPgBAZACABo6EgkNAAAAABAAID0YADAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgwuaKvgUyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoQCAIgASgAMAA4AEAASABQAAgi false true true true 1 true false false false 0.1 1.04719758 Energy 0 SmallArmorPanelHeavy 91384997814529720 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 111073663319023008 144115188075855996 SmallShipConveyorHub 106141023867383314 144115188075855996 SmallBlockCylindricalColumn 117652717049920816 144115188075855996 SmallBlockCylindricalColumn 128719785259087914 144115188075855996 SmallBlockCylindricalColumn 118864153187717840 144115188075855996 SmallBlockCylindricalColumn 116052508800808597 144115188075855996 SmallBlockArmorCorner 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallArmorPanelHeavy 122561515016222069 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallProjector 115712248036241788 144115188075855997 144115188075855996 Faction Fighter projector false true true true 2 false 83065385926291388 CastShadows InScene 83065385926291388 -0.07412834 0.9845121 -0.157015339 -0.0242309961 MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811502 GAA= 75bbb4f5-4fb9-4230-beef-bb79c9811503 EhYIABD///////////8BIAAtAAAAADAA Small SmallBlockArmorCorner Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockSmallBatteryBlock 85631256863095894 Plastic Small Battery 8 false true true true 1 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallCameraBlock 85563852104762811 Plastic Camera 2 false true true true 1 true false 1.04719758 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallAtmosphericThrust 87147039388179425 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 26 false true true true 1 true SmallBlockSmallAtmosphericThrust 91283276610415665 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 27 false true true true 2 true SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorBlock Plastic DBSmallBlockFighterCockpit 96010620863156572 Plastic MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false Fighter Cockpit 2 false true true true 1 false Character 2 View 141863793663109019 1 true Character Character 0.0489509478 0.7838408 0.0187991168 0.618743956 false 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ArtificialHorizon 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ClockAnalog 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_Gravity 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_EnergyHydrogen 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 false 0 SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallHeavyBlockArmorInvCorner2Base Plastic SmallHeavyBlockArmorInvCorner2Base Plastic SmallBlockFrontLight 89193649914792767 Plastic false true true true 1 true 10 120 1.5 3 0 10 0 0.5 0.08 SmallBlockConveyor 84200514563392902 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 131317720118789696 Plastic Small Battery false true true true 2 true 0 true 0 false false 0 HeavyHalfSlopeArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallAtmosphericThrust 133932419205720389 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 22 false true true true 3 true SmallBlockSmallAtmosphericThrust 82289547723770675 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 23 false true true true 4 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorCorner2Base Plastic SmallBlockSmallBatteryBlock 116906279827438421 Plastic Small Battery 2 false true true true 3 true 0 true 0 false false 0 SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 142896496862452027 Plastic Small Battery 19 false true true true 4 true 0 true 0 false false 0 SmallBlockSmallThrust 137321540821032056 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 22 false true true true 1 true ConveyorFrameMedium 109721731543614441 Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 82033906659355362 Plastic Small Battery 10 false true true true 5 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 114142155259392713 Plastic Small Battery 11 false true true true 6 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 91311912241075855 Plastic Small Battery 12 false true true true 7 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 81697598229408659 Plastic Small Battery 13 false true true true 8 true 0 true 0 false false 0 SmallBlockBatteryBlock 94489506827549652 Plastic Battery false true true true 1 true 0 true 0 false false 0 OxygenGeneratorSmall 73304139659195768 Plastic MyInventoryBase 0 1 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 10 300 false O2/H2 Generator false true true true 1 true DBSmallBlockFighterCockpit 86756875865965997 Plastic MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false Fighter Cockpit 4 false true true true 2 false Character 0 Control 101263899859779493 0 Control 101263899859779493 Character Character -0.1270924 -0.833615661 -0.100404374 0.5280639 true 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ArtificialHorizon 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ClockAnalog 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_Gravity 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_EnergyHydrogen 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 false 0 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockGyro 131418089884857872 Plastic Gyroscope 13 false true true true 1 true SmallBlockGyro 125045760878435782 Plastic Gyroscope 14 false true true true 2 true SmallBlockGyro 108335358561948007 Plastic Gyroscope 11 false true true true 3 true SmallBlockGyro 75527632150330118 Plastic Gyroscope 12 false true true true 4 true SmallBlockGyro 96704001956145485 Plastic Gyroscope 9 false true true true 5 true SmallBlockGyro 73524776583950962 Plastic Gyroscope 10 false true true true 6 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeMedium 79697064876085186 Plastic SmallShipConveyorHub 135844490139011637 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 99000349283589328 Plastic Small Battery 14 false true true true 9 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 87383040171568057 Plastic Small Battery 15 false true true true 10 true 0 true 0 false false 0 SmallBlockSmallThrust 119384695190562549 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 21 false true true true 2 true SmallBlockBatteryBlock 139405025164052046 Plastic Battery 3 false true true true 2 true 0 true 0 false false 0 SmallBlockBatteryBlock 79368823588587024 Plastic Battery 4 false true true true 3 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeSmall 127119294406376496 Plastic ConveyorTubeSmall 122571538470641108 Plastic ConveyorTubeSmallCurved 123465163637360500 Plastic ConveyorTubeSmallCurved 93147551576685819 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 132159042855070092 Plastic Small Battery 25 false true true true 11 true 0 true 0 false false 0 ConveyorTubeSmallCurved 120116317493136131 Plastic ConveyorTubeSmallCurved 80946308010184786 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeSmall 112132810057693957 Plastic ConveyorTubeSmall 124605706109526355 Plastic SmallBlockSmallBatteryBlock 93786941127986610 Plastic Small Battery 23 false true true true 12 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 125901892383461970 Plastic Small Battery 24 false true true true 13 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 107380904963190089 Plastic Small Battery 22 false true true true 14 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 99052902411141501 Plastic Small Battery 27 false true true true 15 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 131801839737562326 Plastic Small Battery 26 false true true true 16 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic ConveyorTubeSmallCurved 129735016392747374 Plastic ConveyorTubeSmallCurved 113296648321936737 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeSmallCurved 82831720161795984 Plastic ConveyorTubeSmallCurved 136393314521673330 Plastic ConveyorTubeSmallCurved 95170949599013336 Plastic ConveyorTubeSmallCurved 139280018745600052 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockSmallBatteryBlock 130636138457995345 Plastic Small Battery 29 false true true true 17 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 74474440350342082 Plastic Small Battery 28 false true true true 18 true 0 true 0 false false 0 SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeSmall 124445721934262472 Plastic ConveyorTubeSmall 142071899688783244 Plastic ConveyorTubeSmall 82949299966868095 Plastic ConveyorTubeSmall 105677570974982744 Plastic ConveyorTubeSmall 115515919968555552 Plastic ConveyorTubeSmall 109484523500546910 Plastic ConveyorTubeSmall 134582089963097506 Plastic ConveyorTubeSmall 90876208382801993 Plastic SmallShipConveyorHub 109203622926607701 Plastic SmallShipConveyorHub 81930150929281503 Plastic SmallHydrogenTank 138438477761719069 Plastic MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 2 false true true true 1 true false 0 false SmallHydrogenTank 127369849939003636 Plastic MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 3 false true true true 2 true false 0 false SmallHydrogenTank 137557970014538985 Hazard_Armor MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 4 false true true true 3 true false 0 false SmallHydrogenTank 76025289150383818 Plastic MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 5 false true true true 4 true false 0 false SmallBlockSmallHydrogenThrust 75258958557335508 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 13 false true true true 1 true SmallBlockSmallHydrogenThrust 136619003763014394 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 14 false true true true 2 true SmallBlockLargeHydrogenThrust 82033830220596716 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Large Hydrogen Thruster 3 false true true true 1 true SmallBlockLargeHydrogenThrust 100461362879697603 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Large Hydrogen Thruster 4 false true true true 2 true SmallBlockSmallHydrogenThrust 135672628396392314 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 12 false true true true 3 true SmallBlockSmallHydrogenThrust 100860231050346113 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 11 false true true true 4 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic ConveyorTubeMedium 135549148871353697 Plastic ConveyorTubeMedium 102248289490931627 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockMediumContainer 131589615015034966 Plastic MyInventoryBase 0 3.375 9223372036854.775807 2147483647 CanSend false Medium Cargo Container false true true true 1 ConveyorTubeSmall 113048178197746466 Plastic ConveyorTubeSmall 117322102677679148 Plastic ConveyorTubeSmallCurved 90869151257259165 Plastic ConveyorTubeSmallCurved 98131661202171858 Plastic SmallBlockSmallBatteryBlock 120131085260630929 Plastic Small Battery 16 false true true true 19 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 89153739727933693 Plastic Small Battery 17 false true true true 20 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 137599233634480224 Plastic Small Battery 18 false true true true 21 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 87180771177380881 Plastic Small Battery 30 false true true true 22 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 95904208785344079 Plastic Small Battery 31 false true true true 23 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Hazard_Armor SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockLargeAtmosphericThrust 100389760035237441 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Large Atmospheric Thruster false true true true 1 true SmallBlockLargeAtmosphericThrust 79439148329969258 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Large Atmospheric Thruster 2 false true true true 2 true SmallBlockSmallGenerator 114729115668849730 Plastic MyInventoryBase 0 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor false true true true 1 true 0 SmallBlockSmallGenerator 83478905612818267 Plastic MyInventoryBase 0 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 2 false true true true 2 true 0 SmallBlockGyro 96959183460586204 Plastic Gyroscope false true true true 7 true SmallBlockGyro 75483963483107159 Plastic Gyroscope 2 false true true true 8 true SmallBlockGyro 94148849482229099 Plastic Gyroscope 3 false true true true 9 true SmallBlockGyro 105009255766407191 Plastic Gyroscope 4 false true true true 10 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallHeavyBlockArmorBlock Plastic SmallHeavyBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallAtmosphericThrust 133422816143658877 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster false true true true 5 true SmallBlockSmallAtmosphericThrust 72279636691676363 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 2 false true true true 6 true SmallBlockSmallAtmosphericThrust 128052616967435338 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 3 false true true true 7 true SmallBlockCylindricalColumn 75923894153787652 Plastic SmallBlockCylindricalColumn 125507050927083449 Plastic SmallBlockCylindricalColumn 123278323713153675 Plastic SmallBlockCylindricalColumn 119973388034893496 Plastic ConveyorTubeSmallCurved 102092966564580360 Plastic ConveyorTubeSmallCurved 85441369859701087 Plastic ConveyorTubeSmall 100576183639244406 Plastic ConveyorTubeSmall 80190039357502340 Plastic ConveyorTubeSmall 100662201645973796 Plastic ConveyorTubeSmall 131608641686298159 Plastic ConveyorTubeSmallCurved 75461186685102519 Plastic ConveyorTubeSmallCurved 118483683582220647 Plastic ConveyorTubeSmall 119904086853033501 Plastic ConveyorTubeSmall 121495189354436889 Plastic SmallBlockConveyor 139736054465970655 Plastic SmallBlockConveyor 111768679738028981 Plastic SmallBlockConveyor 74621183758473913 Plastic SmallBlockConveyor 106935978489403712 Plastic SmallBlockConveyor 92080993672865385 Plastic SmallBlockConveyor 131173040414454061 Plastic SmallBlockConveyor 99486009517482827 Plastic SmallBlockConveyor 97175801249662776 Plastic SmallBlockConveyor 76991812962224183 Plastic SmallBlockConveyor 111352046356068691 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockCylindricalColumn 127466935186656519 Plastic SmallBlockCylindricalColumn 129175999669513029 Plastic SmallBlockCylindricalColumn 98643553910470295 Plastic SmallBlockCylindricalColumn 120401333693829906 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockSmallHydrogenThrust 93390131059361148 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 15 false true true true 5 true SmallBlockSmallHydrogenThrust 122419319578116420 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 16 false true true true 6 true SmallBlockSmallHydrogenThrust 103411696609599534 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 17 false true true true 7 true SmallBlockSmallHydrogenThrust 115051301896561454 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 18 false true true true 8 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic OxygenGeneratorSmall 79787825925009919 Plastic MyInventoryBase 0 1 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 true false Frame10 20 300 false O2/H2 Generator 2 false true true true 2 true HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockSmallThrust 75264154509958123 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 25 true SmallBlockSmallThrust 88604931591235360 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 26 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorCornerInv Plastic SmallBlockArmorCornerInv Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallThrust 130498059496177301 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 6 false true true true 7 true SmallBlockSmallThrust 129712966717773225 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 5 false true true true 8 true SmallBlockSmallThrust 88636586710219524 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 4 false true true true 9 true SmallBlockSmallThrust 129857716201740184 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 3 false true true true 10 true SmallBlockCylindricalColumn 108908077814092535 Plastic SmallBlockArmorCornerInv Plastic SmallBlockArmorCornerInv Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockLandingGear 136379482832395531 Plastic Landing Gear 3 false true true true 1 true false -INF true false ArcShipLandGearOn ArcShipLandGearOff ArcShipLandGearNothing01 Unlocked true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockCylindricalColumn 114192883153313562 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallHydrogenThrust 116295430577871747 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 30 false true true true 9 true SmallBlockCylindricalColumn 101032537283937223 Plastic SmallBlockSmallHydrogenThrust 98646010602761144 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 29 false true true true 10 true SmallBlockSmallHydrogenThrust 100294275774431602 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 31 false true true true 11 true SmallBlockSmallHydrogenThrust 87975580176783612 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 32 false true true true 12 true SmallBlockSmallHydrogenThrust 125034214566170559 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 33 false true true true 13 true SmallBlockSmallHydrogenThrust 119468763727995576 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 34 false true true true 14 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallAtmosphericThrust 86929175218390268 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 24 false true true true 8 true SmallBlockSmallAtmosphericThrust 127913437391112799 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 25 false true true true 9 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallBatteryBlock 80985054932933490 Plastic Small Battery 7 false true true true 24 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 76628877938483332 Plastic Small Battery 9 false true true true 25 true 0 true 0 false false 0 SmallBlockArmorBlock Plastic ConnectorMedium 90465664132205551 Plastic 0.5 MyInventoryBase 0 1.152 9223372036854.775807 2147483647 CanSend false MyTimerComponent true 0 0 true false Frame10 60 80 false Connector 2 false true true true 1 true true false 0 0 true false SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorCorner Neon_Colorable_Surface SmallBlockArmorCorner Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorSlope Neon_Colorable_Surface SmallBlockArmorCorner Neon_Colorable_Surface SmallBlockArmorCorner Neon_Colorable_Surface SmallBlockArmorBlock Plastic SmallBlockCylindricalColumn 113372308932429146 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockCylindricalColumn 113206866530834268 Plastic SmallBlockCylindricalColumn 137424407463019877 Plastic SmallBlockCylindricalColumn 81336885041243706 Plastic SmallBlockCylindricalColumn 124259588426725977 Plastic SmallBlockCylindricalColumn 108216721681991630 Plastic SmallBlockCylindricalColumn 82475577380484025 Plastic SmallBlockCylindricalColumn 130681085992248733 Plastic SmallBlockCylindricalColumn 132467050227411319 Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallArmorPanelHeavy 115388930633797772 Plastic SmallArmorPanelHeavy 140275211438344102 Plastic SmallArmorPanelHeavy 142808995262299220 Plastic SmallArmorPanelHeavy 120170263802230775 Plastic SmallArmorPanelHeavy 108412480144308701 Plastic SmallArmorPanelHeavy 132025724779801228 Plastic SmallArmorPanelHeavy 137515125106862263 Plastic SmallArmorPanelHeavy 111669091278120853 Plastic SmallArmorPanelHeavy 127060813925546140 Plastic SmallArmorPanelHeavy 132154311286041211 Plastic SmallArmorPanelHeavy 131610104341947490 Plastic SmallArmorPanelHeavy 88130403926476944 Plastic SmallArmorPanelHeavy 142073550589525790 Plastic SmallArmorPanelHeavy 111055964154367781 Plastic SmallArmorPanelHeavy 73533770237745682 Plastic SmallArmorPanelHeavy 74899239335270309 Plastic SmallArmorPanelHeavy 127960766597688432 Plastic SmallArmorPanelHeavy 108145724438927979 Plastic SmallArmorPanelHeavy 89556416210722685 Plastic SmallArmorPanelHeavy 132817953288999929 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallGenerator 103552348217686789 Plastic MyInventoryBase 0 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 3 false true true true 3 true 0 SmallBlockSmallGenerator 77234188090237268 Plastic MyInventoryBase 0 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 4 false true true true 4 true 0 SmallBlockSmallHydrogenThrust 92609113860440599 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 23 false true true true 15 true SmallBlockSmallHydrogenThrust 101674064219561390 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 24 false true true true 16 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockSmallHydrogenThrust 122894655462054658 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 27 false true true true 17 true SmallBlockSmallHydrogenThrust 129061266327216495 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 28 false true true true 18 true SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockSmallThrust 111817311949039040 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 9 false true true true 13 true SmallBlockSmallThrust 104039329025091569 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 10 false true true true 14 true HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallBlockSmallThrust 100864558061982968 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 13 false true true true 17 true SmallBlockSmallThrust 124856487580664782 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 14 false true true true 18 true SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockSmallThrust 93927717297133715 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 27 true SmallBlockSmallThrust 99855885664885390 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 28 true SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockCylindricalColumn 129990648932374191 Plastic SmallBlockCylindricalColumn 122211933941660607 Plastic SmallBlockCylindricalColumn 97268915152686124 Plastic SmallBlockCylindricalColumn 77762471010170310 Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockHeavyArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockSmallBatteryBlock 97749709265720993 Plastic Small Battery 21 false true true true 26 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 118519432583620170 Plastic Small Battery 20 false true true true 27 true 0 true 0 false false 0 SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockSmallThrust 89864615855680744 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 19 false true true true 19 true SmallBlockSmallThrust 133594403031643965 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 20 false true true true 20 true SmallBlockSmallHydrogenThrust 109767002190240743 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 22 true SmallBlockSmallHydrogenThrust 106558559165389745 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 21 true SmallBlockSmallThrust 118987289212029776 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 15 false true true true 23 true SmallBlockSmallThrust 97815403588980502 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 16 false true true true 24 true SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorSlope Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockArmorCorner Hazard_Armor SmallBlockSmallBatteryBlock 134791831712933323 Plastic Small Battery 3 false true true true 28 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 120845599798464230 Plastic Small Battery 4 false true true true 29 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 84363716241914365 Plastic Small Battery 5 false true true true 30 true 0 true 0 false false 0 SmallBlockSmallBatteryBlock 94335335758970421 Plastic Small Battery 6 false true true true 31 true 0 true 0 false false 0 SmallBlockArmorSlope2Tip Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockSmallHydrogenThrust 90507071847278912 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 35 false true true true 19 true SmallBlockSmallHydrogenThrust 139291708968621613 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 36 false true true true 20 true HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockGyro 94577772380475874 Plastic Gyroscope 5 false true true true 11 true SmallBlockGyro 104405437498634874 Plastic Gyroscope 6 false true true true 12 true SmallBlockGyro 141829532201548223 Plastic Gyroscope 7 false true true true 13 true SmallBlockGyro 79632666565810103 Plastic Gyroscope 8 false true true true 14 true SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallHeavyBlockArmorInvCorner2Tip Plastic SmallHeavyBlockArmorInvCorner2Tip Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockCylindricalColumn 86608267501890639 Plastic SmallBlockCylindricalColumn 89520935363742936 Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorBlock Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorInvCorner2Base Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorHalfSlopeInverted Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorInvCorner2Tip Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Base Plastic SmallBlockArmorCorner2Base Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Base Plastic SmallBlockArmorSlope2Base Plastic SmallArmorPanelHeavy 111368800896711139 Plastic SmallArmorPanelHeavy 114082942319784409 Plastic SmallArmorPanelHeavy 144053466273637016 Plastic SmallArmorPanelHeavy 117365788853946693 Plastic SmallArmorPanelHeavy 72762823425453017 Plastic SmallArmorPanelHeavy 101982773603012448 Plastic SmallBlockArmorSlope2Tip Plastic SmallArmorSlopedSidePanelHeavy 100479022280458358 Plastic SmallBlockArmorSlope2Tip Plastic SmallArmorPanelHeavy 103408226968761466 Plastic SmallArmorSlopedSidePanelHeavy 83758789669042512 Plastic SmallBlockArmorCorner2Tip Plastic SmallBlockArmorCorner2Tip Plastic SmallArmorPanelHeavy 90966951222067552 Plastic SmallArmorPanelHeavy 110674159582044638 Plastic SmallArmorPanelHeavy 101883148107252615 Plastic SmallArmorPanelHeavy 98658381937569439 Plastic SmallArmorPanelHeavy 82918663884001431 Plastic SmallArmorPanelHeavy 95314113330961969 Plastic SmallArmorPanelHeavy 137419201611639215 Plastic SmallArmorPanelHeavy 121229592381810136 Plastic SmallArmorPanelHeavy 129098209648234370 Plastic SmallArmorPanelHeavy 94590752616758237 Plastic SmallArmorPanelHeavy 133196071728997020 Plastic SmallArmorPanelHeavy 117128122637919335 Plastic SmallArmorPanelHeavy 142447675056902063 Plastic SmallArmorPanelHeavy 117120475972989279 Plastic SmallArmorPanelHeavy 89388986621636244 Plastic SmallArmorPanelHeavy 110508187821004789 Plastic SmallArmor2x1SlopedSideBasePanelHeavy 114967362358297243 Plastic SmallArmor2x1SlopedSideBasePanelHeavyInv 138780261805316455 Plastic SmallArmor2x1SlopedSideTipPanelHeavy 121691422487953156 Plastic SmallArmor2x1SlopedSideTipPanelHeavyInv 102310916605381521 Plastic SmallArmor2x1SlopedSideTipPanelHeavy 114461321645428456 Plastic SmallArmor2x1SlopedSideTipPanelHeavyInv 100081761553408662 Plastic SmallArmor2x1SlopedSideBasePanelHeavyInv 74396252543617001 Plastic SmallArmor2x1SlopedSideBasePanelHeavy 93176505108530321 Plastic SmallBlockArmorCorner Plastic SmallBlockArmorCorner Plastic HalfArmorBlock Plastic HalfArmorBlock Plastic SmallBlockArmorSlope2Tip Plastic SmallBlockArmorSlope2Tip Plastic HalfArmorBlock Plastic SmallArmor2x1SlopedSideTipPanelHeavy 97033929915496813 Plastic SmallArmor2x1SlopedSideTipPanelHeavyInv 92529894195689897 Plastic SmallNeonTubesT 127243180883508776 Plastic SmallNeonTubesT 115384115810856069 Plastic SmallNeonTubesBendDown 76852336001611414 Plastic SmallNeonTubesBendDown 131227449474424111 Plastic SmallNeonTubesBendDown 138652133732935355 Plastic SmallNeonTubesBendDown 81457438881360692 Plastic SmallNeonTubesStraight1 87657686140392927 Plastic SmallArmorPanelHeavy 139117198563440877 Plastic SmallArmorPanelHeavy 84739832898111769 Plastic SmallArmorPanelHeavy 77165042959067401 Plastic SmallArmorPanelHeavy 118033649511102972 Plastic SmallArmorPanelHeavy 73193466466492463 Plastic SmallArmorPanelHeavy 94095300239722300 Plastic SmallArmorPanelHeavy 138935135552814311 Plastic SmallArmorPanelHeavy 95517424310729574 Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic HeavyHalfSlopeArmorBlock Plastic SmallBlockSmallThrust 138843515364239142 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 29 true SmallBlockSmallThrust 116179155978137636 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 30 true SmallHeavyBlockArmorSlope2Tip Plastic SmallHeavyBlockArmorSlope2Tip Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic HeavyHalfArmorBlock Plastic SmallHeavyBlockArmorSlope2Base Plastic SmallHeavyBlockArmorSlope2Base Plastic SmallArmorPanelHeavy 111070344259753387 Plastic SmallArmorPanelHeavy 98695614019261555 Plastic SmallArmorPanelHeavy 99151365592976947 Plastic SmallArmorPanelHeavy 105062970654290511 Plastic SmallArmorPanelHeavy 134991070193136926 Plastic SmallArmorPanelHeavy 134147855804338269 Plastic SmallArmorPanelHeavy 75530497152154705 Plastic SmallArmorPanelHeavy 98927134666329205 Plastic SmallArmorPanelHeavy 88837163364965215 Plastic SmallArmorPanelHeavy 134760167671110958 Plastic SmallArmorPanelHeavy 76333370258384021 Plastic SmallArmorPanelHeavy 133259875622669352 Plastic SmallSymbol1 113697606499854513 Silver_Armor SmallSymbol0 126233207570290753 Silver_Armor SmallSymbol0 100387276971488813 Silver_Armor SmallSymbol1 106008651785072844 Silver_Armor SmallBlockCylindricalColumn 97661402711457988 Plastic SmallBlockCylindricalColumn 97134271486496208 Plastic SmallBlockCylindricalColumn 87127038421343115 Plastic SmallBlockCylindricalColumn 101034307859713283 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockSmallAtmosphericThrust 84020926625371743 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 18 true SmallBlockSmallAtmosphericThrust 77811530141217627 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 19 true SmallBlockSmallAtmosphericThrust 84170014702441750 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 20 true SmallBlockSmallAtmosphericThrust 107080181037717194 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 21 true SmallBlockCylindricalColumn 79353831943820710 Plastic SmallBlockCylindricalColumn 134983788568721777 Plastic SmallBlockCylindricalColumn 104906453455169273 Plastic SmallBlockCylindricalColumn 97865626238056490 Plastic SmallBlockArmorSlope Plastic SmallBlockArmorSlope Plastic SmallBlockSmallAtmosphericThrust 130973676236415159 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 22 true SmallBlockSmallAtmosphericThrust 86073021332261371 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 23 true SmallBlockSmallAtmosphericThrust 72171481345338103 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 24 true SmallBlockSmallAtmosphericThrust 127888908646693985 Plastic MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 25 true SmallArmorPanelHeavy 122874343186834653 Plastic SmallArmorPanelHeavy 99781169093651860 Plastic SmallArmorPanelHeavy 97643438354753479 Plastic SmallArmor2x1SlopedSideBasePanelHeavy 135644235385015456 Plastic SmallArmor2x1SlopedSideBasePanelHeavyInv 120408763094565187 Plastic SmallArmorPanelHeavy 108135108466169590 Plastic Backward Forward SMALL_LINE Left Right
SMALL_LINE Right Left
SMALL_LINE Right Left
SMALL_LINE Right Right
SMALL_LINE Left Right
SMALL_LINE Left Left
SMALL_LINE Forward Backward LARGE_LINE Down Up SMALL_LINE Forward Backward LARGE_LINE Down Up LARGE_LINE Backward Forward LARGE_LINE Left Right SMALL_LINE Forward Backward LARGE_LINE Backward Forward LARGE_LINE Right Left SMALL_LINE Forward Backward LARGE_LINE Right Right
SMALL_LINE Down Up SMALL_LINE Up Down SMALL_LINE Left Left
SMALL_LINE Down Up SMALL_LINE Up Down SMALL_LINE Forward Backward LARGE_LINE Down Up SMALL_LINE Up Down SMALL_LINE Forward Backward LARGE_LINE Down Up SMALL_LINE Up Down SMALL_LINE Down Up SMALL_LINE Right Left SMALL_LINE Right Left SMALL_LINE Down Up SMALL_LINE Left Right SMALL_LINE Up Down SMALL_LINE Up Down SMALL_LINE Left Right SMALL_LINE Forward Backward LARGE_LINE Right Left SMALL_LINE Left Right SMALL_LINE Up Down SMALL_LINE Backward Forward SMALL_LINE Right Left SMALL_LINE Down Up SMALL_LINE Up Down SMALL_LINE Backward Forward SMALL_LINE Left Right SMALL_LINE Down Up SMALL_LINE Backward Forward SMALL_LINE Backward Forward SMALL_LINE Backward Forward SMALL_LINE Backward Forward SMALL_LINE Right Left SMALL_LINE Left Right SMALL_LINE C-60 Cobra Sport true false false false 0 Tier1 -5 10 9 2 -1 -1 true false false 5 200 0 false 1 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockCylindricalColumn 132965778400794083 144115188075855996 SmallBlockCylindricalColumn 75955918457958325 144115188075855996 SmallBlockCylindricalColumn 115936774994844237 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 128993068599195976 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 14 false true true true 2 true SmallBlockSmallHydrogenThrust 130275330045745745 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 24 false true true true 16 true SmallBlockArmorSlope 144115188075855996 ConveyorTubeSmall 75461070485264531 144115188075855996 ConveyorTubeSmall 115990303116357154 144115188075855996 SmallBlockCylindricalColumn 104330510649246521 144115188075855996 SmallBlockCylindricalColumn 85035657643275428 144115188075855996 SmallBlockArmorSlope 144115188075855996 DBSmallBlockFighterCockpit 119343460768436491 144115188075855997 144115188075855996 MyInventoryBase 0 1 9223372036854.775807 2147483647 CanSend false Fighter Cockpit 4 false true true true 2 false Character 0 Control 72580564624681644 0 Control 72580564624681644 Character Character 0.12002746 0.8556344 0.123964295 -0.487971336 true 1 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ArtificialHorizon 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_ClockAnalog 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_Gravity 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 SCRIPT TSS_EnergyHydrogen 2 true 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 1 NONE 4294967295 255 255 255 255 255 255 255 4278190080 0 0 0 0 0 0 255 0 2 4288108544 0 88 151 0 88 151 255 4294962611 179 237 255 179 237 255 255 0 0 false 0 SmallBlockArmorCorner 144115188075855996 SmallBlockConveyor 115928494360780797 144115188075855996 SmallBlockArmorCorner 144115188075855996 ConveyorTubeSmall 122481226244699813 144115188075855996 ConveyorTubeSmall 126615044252379839 144115188075855996 ConveyorTubeSmallCurved 129440675879275035 144115188075855996 ConveyorTubeSmallCurved 80845312325506483 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockMediumContainer 84136854670242741 144115188075855997 144115188075855996 Faction MyInventoryBase 0 3.375 9223372036854.775807 2147483647 CanReceive CanSend false Medium Cargo Container false true true true 1 SmallShipConveyorHub 109707038863721847 144115188075855996 ConveyorTubeSmall 94499275150098078 144115188075855996 ConveyorTubeSmall 118668336598429547 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallShipConveyorHub 86616980253750282 144115188075855996 SmallBlockConveyor 130694586013760544 144115188075855996 SmallBlockSmallBatteryBlock 114579414779215951 144115188075855997 144115188075855996 Small Battery 20 false true true true 27 true 0.04969097 true 0 false false 0 SmallBlockConveyor 94287386306698275 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockCylindricalColumn 106470346335342176 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockCylindricalColumn 126023071511259466 144115188075855996 SmallBlockCylindricalColumn 83528916859492191 144115188075855996 ConveyorFrameMedium 94395398216453916 144115188075855996 SmallHeavyBlockArmorSlope2Tip 144115188075855996 SmallBlockConveyor 124565749887241069 144115188075855996 SmallHeavyBlockArmorSlope2Base 144115188075855996 SmallBlockConveyor 120115197323614022 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCornerInv 144115188075855996 SmallBlockConveyor 126898037660811932 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockCylindricalColumn 127831574013506853 144115188075855996 SmallBlockCylindricalColumn 86981835609720666 144115188075855996 SmallBlockCylindricalColumn 132420952107701597 144115188075855996 SmallBlockSmallAtmosphericThrust 76428039389885669 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 20 true SmallBlockArmorSlope Hazard_Armor 144115188075855996 ConveyorTubeSmall 137660382366176968 144115188075855996 SmallBlockCylindricalColumn 137047868150820049 144115188075855996 SmallBlockCylindricalColumn 105623082381321037 144115188075855996 ConveyorTubeSmallCurved 74357151451236254 144115188075855996 ConveyorTubeSmallCurved 103800984055895224 144115188075855996 ConveyorTubeSmallCurved 76978022316643052 144115188075855996 ConveyorTubeSmallCurved 141244475980455886 144115188075855996 SmallBlockCylindricalColumn 121732771802505758 144115188075855996 SmallBlockArmorSlope 144115188075855996 ConveyorTubeSmall 83027316231538339 144115188075855996 ConveyorTubeSmall 114837996151578675 144115188075855996 ConveyorTubeSmallCurved 124350222378713781 144115188075855996 SmallBlockSmallThrust 143222348375356382 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 3 false true true true 10 true ConveyorTubeSmallCurved 78978854711397730 144115188075855996 ConveyorTubeSmallCurved 143101953651426808 144115188075855996 SmallBlockArmorCorner Neon_Colorable_Surface 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockCylindricalColumn 127895035993041994 144115188075855996 SmallBlockCylindricalColumn 112474720013432524 144115188075855996 ConveyorTubeSmall 92608726920193059 144115188075855996 ConveyorTubeSmall 104636914251385257 144115188075855996 ConveyorTubeSmall 114120430511762807 144115188075855996 ConveyorTubeSmall 120934159257893446 144115188075855996 ConveyorTubeSmall 143126970104196661 144115188075855996 ConveyorTubeSmall 82099464099317603 144115188075855996 ConveyorTubeSmallCurved 104221966247732291 144115188075855996 SmallArmorPanelHeavy 82232733047728719 144115188075855996 SmallBlockSmallAtmosphericThrust 90038899990263580 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 23 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 142852451146857905 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 19 true SmallBlockSmallAtmosphericThrust 76052840646228182 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 25 true SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 75102434032296508 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 21 true SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockGyro 82783098323197602 144115188075855997 144115188075855996 Gyroscope 2 false true true true 8 true SmallBlockGyro 83120185691145188 144115188075855997 144115188075855996 Gyroscope 4 false true true true 10 true SmallBlockCylindricalColumn 98320831646834478 144115188075855996 ConveyorTubeSmallCurved 123059118504014569 144115188075855996 ConveyorTubeSmallCurved 130300437286005235 144115188075855996 ConveyorTubeSmall 113074225244372626 144115188075855996 ConveyorTubeSmallCurved 141728683674007803 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockGyro 127333672145062785 144115188075855997 144115188075855996 Gyroscope false true true true 7 true SmallBlockGyro 89360379639162957 144115188075855997 144115188075855996 Gyroscope 3 false true true true 9 true SmallBlockSmallAtmosphericThrust 108853153464752081 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 25 false true true true 9 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallArmorPanelHeavy 99941561739631968 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockSmallAtmosphericThrust 103572640327610034 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 24 false true true true 8 true SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 82432957261168313 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallBatteryBlock 141352750554520634 144115188075855997 144115188075855996 Small Battery 31 false true true true 23 true 0.04971733 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 99253569327724168 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallArmorPanelHeavy 107728275006223492 144115188075855996 SmallBlockSmallBatteryBlock 133141383930102055 144115188075855997 144115188075855996 Small Battery 8 false true true true 1 true 0.04971756 true 0 false false 0 SmallBlockSmallHydrogenThrust 133277567005902521 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 32 false true true true 12 true SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 114561959654483255 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 17 false true true true 7 true SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallArmorSlopedSidePanelHeavy 87688089773414877 144115188075855996 SmallBlockSmallBatteryBlock 100724202171922205 144115188075855997 144115188075855996 Small Battery 28 false true true true 18 true 0.0497175977 true 0 false false 0 SmallBlockSmallHydrogenThrust 144021404557636380 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 33 false true true true 13 true SmallArmorPanelHeavy 98148729657589531 144115188075855996 HeavyHalfArmorBlock 144115188075855996 SmallSymbol1 119758842086093609 Silver_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 ConveyorTubeSmallCurved 99650668433271310 144115188075855996 SmallBlockCylindricalColumn 100844236725842944 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockSmallHydrogenThrust 126189997551711257 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 27 false true true true 17 true SmallBlockCylindricalColumn 106990827253307035 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallArmorPanelHeavy 91402480172368713 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallArmorPanelHeavy 133648938147579420 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 76365691387645325 144115188075855996 SmallArmorPanelHeavy 128411272250797225 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 ConveyorTubeSmall 81095591567887608 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope Neon_Colorable_Surface 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 102304519441757104 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 104541477683578043 144115188075855996 SmallArmorPanelHeavy 122749546401924467 144115188075855996 SmallBlockSmallHydrogenThrust 135408778053026109 144115188075855996 MyTimerComponent true 0 0 false false Frame100 0 100 false Hydrogen Thruster 23 false true true true 15 true SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 ConveyorTubeSmall 95405796424470765 144115188075855996 SmallBlockSmallGenerator 142214779324326080 144115188075855997 144115188075855996 MyInventoryBase 24.985322 Uranium 0 1 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 3 false true true true 3 false 24.985323 false SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallNeonTubesBendDown 94359523062793880 144115188075855996 SmallArmorPanelHeavy 87951182439274366 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallNeonTubesBendDown 138051394780016354 144115188075855996 SmallArmorPanelHeavy 94603806589086515 144115188075855996 SmallBlockSmallBatteryBlock 140848248219484423 144115188075855996 144115188075855996 Faction Small Battery 30 false true true true 22 true 0.0497221947 true 0 false false 0 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallSymbol0 77097848646126721 Silver_Armor 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockSmallBatteryBlock 111708879883650471 144115188075855997 144115188075855996 Small Battery 29 false true true true 17 true 0.04965063 true 0 false false 0 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallArmorPanelHeavy 139083921924674907 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 139028969178717958 144115188075855996 SmallArmorPanelHeavy 101948875117029945 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 97928419278773082 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockFrontLight 115655544646022964 144115188075855996 false true true true 1 true 10 120 1.5 3 0 10 0 0.5 0.08 SmallBlockSmallAtmosphericThrust 84636579191200222 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 26 false true true true 1 true SmallBlockArmorHalfSlopeInverted 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorSlope Hazard_Armor 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 84818825432611799 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 27 false true true true 2 true SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 73195151487794794 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 2 false true true true 6 true SmallBlockLandingGear 99648742670219651 144115188075855996 Landing Gear 3 false true true true 1 true false -INF false false RealShipLandGearOn RealShipLandGearOff RealShipLandGearNothing01 Unlocked true SmallArmorPanelHeavy 127565888212187472 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmorPanelHeavy 136132437927054766 144115188075855996 SmallBlockCylindricalColumn 127611716589306890 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 123927623300650260 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 24 true SmallArmorPanelHeavy 120278862820530392 144115188075855996 SmallHeavyBlockArmorSlope2Tip 144115188075855996 SmallBlockSmallHydrogenThrust 99606947930377016 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false false true true true 22 true SmallBlockArmorBlock 144115188075855996 SmallBlockCylindricalColumn 82831206988270934 144115188075855996 SmallBlockArmorBlock Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmorPanelHeavy 82605775646065779 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmorSlopedSidePanelHeavy 135625016502729748 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallArmorPanelHeavy 132567915699586328 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockSmallAtmosphericThrust 91616171668197683 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Atmospheric Thruster 3 false true true true 7 true SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallArmorPanelHeavy 122372931775460785 144115188075855996 SmallBlockArmorCorner Hazard_Armor 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavyInv 118357555192276453 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorInvCorner2Tip 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallArmorPanelHeavy 81068518189244523 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmor2x1SlopedSideBasePanelHeavyInv 142970062581961390 144115188075855996 SmallArmor2x1SlopedSideBasePanelHeavy 85964482424257526 144115188075855996 SmallHydrogenTank 117960287520105618 Hazard_Armor 144115188075855996 144115188075855996 Faction MyInventoryBase 0 0.75 9223372036854.775807 2147483647 CanReceive false Hydrogen Tank 4 false true true true 3 true false 0.9970501 false SmallBlockArmorSlope 144115188075855996 SmallBlockHeavyArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockCylindricalColumn 85005826490332717 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockConveyor 88665768543788884 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner 144115188075855996 HalfArmorBlock 144115188075855996 SmallArmorPanelHeavy 90597884831604778 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallArmor2x1SlopedSideBasePanelHeavyInv 87949682771414255 144115188075855996 SmallArmor2x1SlopedSideBasePanelHeavy 89701607662682351 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorInvCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavyInv 93515238274597772 144115188075855996 SmallBlockCylindricalColumn 102119659825874920 144115188075855996 SmallBlockArmorCorner2Base 144115188075855996 SmallArmorPanelHeavy 137904379974698805 144115188075855996 SmallArmorPanelHeavy 131501023931281894 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockSmallGenerator 100525521104393185 144115188075855997 144115188075855996 MyInventoryBase 24.97361 Uranium 0 1 0.125 9223372036854.775807 2147483647 CanReceive false MyTimerComponent true 0 0 false false Frame100 0 900 false Small Reactor 4 false true true true 4 false 24.97361 false SmallBlockArmorCorner Hazard_Armor 144115188075855996 94038976785424512 144115188075855997 144115188075855996 Faction MyInventoryBase 0 0.064 9223372036854.775807 2147483647 CanReceive false MyModStorageComponent 75bbb4f5-4fb9-4230-beef-bb79c9811501 +nzDAQoJCAEQAB0AAAAAErUBCAISNi0AgLtEMi8IABAAGAAgACgAMAB4AIABAJABAKABALABAMABANABeNgBAegBAPABAPgBAZACABo6EgkNAAAAABAAID4YADAAOABAAEgAUiMaGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACAAKAAwACIrCAIQACAAKgYgpNSmvQEyGwkAAAAAAAAAACEAAAAAAAAAADkAAAAAAAAAACoQCAIgASgAMAA4AEAASABQAAgi false true true true 2 true false false false 0.1 1.04719758 Energy 0 SmallNeonTubesT 119821836683261333 144115188075855996 SmallArmor2x1SlopedSideTipPanelHeavy 77758786981826970 144115188075855996 SmallArmorPanelHeavy 135568149306017395 144115188075855996 SmallBlockArmorSlope 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 SmallBlockSmallHydrogenThrust 138322514883160162 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Hydrogen Thruster 28 false true true true 18 true SmallNeonTubesStraight1 83166339169379554 144115188075855996 SmallBlockCylindricalColumn 108079707470081066 144115188075855996 SmallCameraBlock 116769070854610444 144115188075855996 144115188075855996 Faction Camera 2 false true true true 1 true false 1.04719758 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 SmallBlockSmallThrust 73320540646523988 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 4 false true true true 9 true SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockSmallThrust 99305464898611366 144115188075855996 MyTimerComponent true 0 0 true false Frame100 0 100 false Ion Thruster 10 false true true true 14 true SmallBlockArmorHalfSlopeInverted 144115188075855996 SmallBlockArmorSlope 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorBlock 144115188075855996 SmallBlockArmorSlope2Base 144115188075855996 HalfArmorBlock 144115188075855996 SmallBlockArmorCorner 144115188075855996 SmallBlockArmorSlope2Tip 144115188075855996 SmallNeonTubesBendDown 82760742050991839 144115188075855996 SmallNeonTubesBendDown 141298655798807848 144115188075855996 SmallBlockCylindricalColumn 111319498890641990 144115188075855996 SmallBlockCylindricalColumn 104479376643784616 144115188075855996 SmallBlockArmorCorner2Tip 144115188075855996 HeavyHalfSlopeArmorBlock 144115188075855996 Left Right LARGE_LINE Left Right LARGE_LINE Forward Backward SMALL_LINE Backward Forward SMALL_LINE Backward Forward SMALL_LINE Right Left LARGE_LINE Backward Forward SMALL_LINE Down Up SMALL_LINE Up Down SMALL_LINE Right Left LARGE_LINE Backward Backward
SMALL_LINE Down Up LARGE_LINE Right Left LARGE_LINE Up Down SMALL_LINE Forward Backward SMALL_LINE Left Right LARGE_LINE Down Up SMALL_LINE Up Down SMALL_LINE Left Right SMALL_LINE Forward Backward
SMALL_LINE Forward Backward
SMALL_LINE Backward Forward SMALL_LINE Down Up SMALL_LINE Backward Forward SMALL_LINE Right Left LARGE_LINE Down Up SMALL_LINE Backward Backward
SMALL_LINE Forward Forward
SMALL_LINE Forward Backward
SMALL_LINE Forward Backward
SMALL_LINE Down Up SMALL_LINE Forward Backward SMALL_LINE Up Down SMALL_LINE Up Down SMALL_LINE Backward Forward SMALL_LINE Up Down SMALL_LINE Right Left SMALL_LINE Forward Backward SMALL_LINE Right Left SMALL_LINE Down Up SMALL_LINE Right Left SMALL_LINE Right Left LARGE_LINE Down Up SMALL_LINE Left Right LARGE_LINE Forward Backward SMALL_LINE Up Down SMALL_LINE Left Right SMALL_LINE Left Right SMALL_LINE Up Down SMALL_LINE Backward Forward SMALL_LINE Down Up SMALL_LINE Forward Forward
SMALL_LINE Up Down SMALL_LINE Right Left SMALL_LINE Forward Backward SMALL_LINE Backward Forward SMALL_LINE main thrust -4 9 14 gats 23 8 9 23 8 7 jonny's fighter true false 0 None 0 76561198247282062 0