Actions

Difference between revisions of "Kit (Satellite Dish)"

From Unofficial Stationeers Wiki

m (Corrected base power usage)
(Large data dump of in-game performance of the antennas. moved the example scripts to the Satellite Tracking page)
Line 1: Line 1:
[[Category:Machines]]
+
[[Category:Machines]] [[Category:Items]]  
[[Category:Items]]
+
{{Itembox  
{{Itembox
+
| name = Kit (Small Satellite Dish)  
| name       = Kit (Satellite Dish)
+
| prefabhash = 1960952220
| stacks     = 10
+
| prefabname = ItemKitSmallSatelliteDish
| image       = [[File:ItemKitSatelliteDish.png]]
+
| stacks = 1
| createdwith = [[Electronics Printer]]
+
| paintable = Yes
| cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]
+
| image = [[File:ItemKitSatelliteDish.png]]  
 +
| recipe_machine1 = Electronics Printer  
 +
| recipe_cost1 = 5x[[Gold]], 10x[[Copper]]  
 +
| constructs = [[Small Satellite Dish]]
 +
}}
 +
{{Itembox
 +
| name = Kit (Medium Satellite Dish)
 +
| prefabhash = 178422810
 +
| prefabname = ItemKitSatelliteDish
 +
| stacks = 1
 +
| paintable = No
 +
| image = [[File:ItemKitSatelliteDish.png]]
 +
| recipe_machine1 = Electronics Printer
 +
| recipe_cost1 = 20x[[Steel]], 15[[Electrum]], 10x[[Solder]]
 +
| constructs = [[Medium Satellite Dish]]
 +
}}
 +
{{Itembox
 +
| name = Kit (Large Satellite Dish)
 +
| prefabhash = -2039971217
 +
| prefabname = ItemKitLargeSatelliteDish
 +
| stacks = 1
 +
| paintable = Yes
 +
| image = [[File:ItemKitSatelliteDish.png]]
 +
| recipe_machine1 = Electronics Printer
 +
| recipe_cost1 = 20x[[Waspaloy]], 50x[[Inconel]], 100x[[Astroloy]]
 +
| constructs = [[Large Satellite Dish]]
 +
}}
 +
{{Structurebox
 +
| name = Small Satellite Dish
 +
| image = []
 +
| prefab_hash = -2138748650
 +
| prefab_name = StructureSmallSatelliteDish
 +
| power_usage = 10W Base Power Usage
 +
| placed_on_grid = Small Grid
 +
| requires_frames = Yes
 +
| decon_with_tool1 = [[Hand Drill]]
 +
| placed_with_item = [[Kit (Small Satellite Dish)]]
 +
| const_with_item1 = 1 x [[Iron Sheets]]
 +
| const_with_tool1 = [[Welding Torch]]
 +
| const_with_item2 = 1 x [[Cable Coil]]  
 
}}
 
}}
{{Structurebox
+
{{Structurebox  
| name             = Medium Satellite Dish
+
| name = Medium Satellite Dish  
| image           = [[File:StructureSatelliteDish.png]]
+
| image = []
| power_usage     = 50W
+
| prefab_hash = 439026183
| placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]
+
| prefab_name = StructureSatelliteDish  
| placed_on_grid   = Small Grid
+
| power_usage = 50W Base Power Usage
| requires_frames = Yes
+
| placed_on_grid = Small Grid
  | decon_with_tool1 = [[Hand Drill]]
+
| requires_frames = Yes
| item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]
+
| placed_with_item = [[Kit (Small Satellite Dish)]]  
 +
| const_with_item1 = 1 x [[Steel Sheets]]
 +
| const_with_tool1 = [[Welding Torch]]
 +
| const_with_tool2 = [[Wrench]]
 +
| const_with_item3 = 1 x [[Plastic Sheets]]
 +
}}
 +
{{Structurebox
 +
| name = Large Satellite Dish
 +
| image = []
 +
| prefab_hash = 1913391845
 +
| prefab_name = StructureLargeSatelliteDish
 +
| power_usage = 100W Base Power Usage
 +
| placed_on_grid = Small Grid  
 +
| requires_frames = Yes  
 +
| placed_with_item = [[Kit (Small Satellite Dish)]]
 +
| const_with_item1 = 10 x [[Steel Sheets]]
 +
| const_with_tool1 = [[Welding Torch]]
 +
| const_with_tool2 = [[Wrench]]
 +
| const_with_tool3 = [[Screwdriver]]
 +
| const_with_item4 = [[Steel Sheets]]  
 +
| const_with_tool4 = [[Welding Torch]]
 +
| const_with_item5 = 10x[[Cable Coil (Heavy)]]
 +
| const_with_item6 = 10x[[Plastic Sheets]]
 
}}
 
}}
 
+
==Description==
{{outdated}}
+
Small Satellite Dish
==Description==
+
{{Description|The small communications unit can be used to communicate with nearby trade vessels.}}
Small Satellite Dish
+
Medium Satellite Dish
{{Description|The small communications unit can be used to communicate with nearby trade vessels.}}
+
{{Description|The medium communications unit can be used to communicate with nearby trade vessels.}}
Medium Satellite Dish
+
Large Satellite Dish
{{Description|The medium communications unit can be used to communicate with nearby trade vessels.}}
+
{{Description|The large communications unit can be used to communicate with nearby trade vessels.}} 
Either the small or medium Satellite Dish, or even the [[Large Satellite Dish]] are used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.
+
When connected to a [[Computer]] containing a [[Motherboard (Communications)]], a [[Landingpad Center]], and a [[Vending Machine]], this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.
 
+
The Satellite Dish must be guided by [[Satellite Tracking]] onto a signal and communications then may be initiated to call down and interact with traders.e` 
The Satellite Dish must be guided by [[Satellite Tracking]] onto a signal and communications may be established once the signal strength is greater than 94%
+
==Capabilities== 
 +
{| class="wikitable" 
 +
|- 
 +
! Parameter Name !! Units !! Small Satellite Dish !! Medium Satellite Dish !! Large Satellite Dish 
 +
|- 
 +
| Minimum Power Setting || watts || 50 || 500|| 2000 
 +
|- 
 +
| Maximum Power Setting || watts || 200 || 7,5000 || 50,000 
 +
|- 
 +
| Base Power Usage || watts || 10 || 50 || 100
 +
|- 
 +
| Acquisition Power Usage, Ratio to Power Setting || % || colspan=3 | 10%
 +
|-
 +
| Azimuth Rotation Speed || deg/tick || 4.5 || 0.9 || 0.24 
 +
|- 
 +
| Elevation Rotation Speed || deg/tick || 4.5 || 0.45 || 0.18 
 +
|} 
 +
Notes on Power Usage: Actual Power Draw from the satellite dish is based on the current mode of operation.
 +
#Idle Mode: The base power usage
 +
#Acquisition Mode: Acquiring traders signals, showing the green progress bars uses 10% of the current power setting. Once all visible traders have complete progress bars (acquired), the mode switches back to Idle
 +
#Interogation: Interrogating the trader will use draw power according to the satellite dish’s power Setting for the duration of the interrogation.
 +
===Antenna Patterns=== 
 +
Like real-world antennas, all three Satellite Dishes have [https://en.wikipedia.org/wiki/Radiation_pattern Radiation Patterns]. The closer the antenna is pointing to a trader, the more of the available power reaches the trader, and the faster the [[Computer]] with [[Motherboard (Communications)]] will acquire information about the trader. The pattern(s) for all three antennas are the same, and are a linearly interpolated through the points described in the table. Notice, that if the antenna is within than 2° of the trader, then there is no reduction in power from the Power Setting from reaching the trader. It should be noted that the game deliberately adds noise to the reported value; the displayed values of SignalStrength (degrees from trader) and the correlated WattsReachingContact (power Setting multiplied by Power Ratio) have a seemingly random ± 3° value added to the SignalStrength.
 +
{| class="wikitable" 
 +
|+ Satellite Dishes Radiation Pattern 
 +
|- 
 +
! Degrees Off Trader !! Power Ratio 
 +
|- 
 +
| 0° || 1.00 
 +
|- 
 +
| 2° || 1.00 
 +
|- 
 +
| 5° || 0.90 
 +
|-
 +
| 22.5° || 0.10 
 +
|- 
 +
| 45° || 0.05 
 +
|- 
 +
| 90° || 0.01 
 +
|- 
 +
| * 180° || 0.001 
 +
|-
 +
| colspan="2" | *Note: 180° is estimated by extrapolation
 +
|} 
 +
===Acquisition Times=== 
 +
To make the Interrogation and Land options visible for a particular trader on the [[Computer]] user-interface, the Satellite Dish must first complete the acquisition of the target signal. Three are a few phases for the signal acquisition. 
 +
#Satellite Dish must be stopped. Any new motion or change in power Setting will reset any acquisition progress 
 +
#Visible Traders are populated on the [[Computer]] 
 +
#Green progress bar shows the Acquisition progress. All traders start their progress bars at the same time, grow simultaneously, and are dependent on the Received Power by the Trader 
 +
#After a trader has been acquired, the user-interface on the [[Computer]] shows the approximate angle that the antenna is pointing off from the trader, as well as the Interrogate Button (left side, satellite icon) and the Land Button (right sight, downward arrow) 
 +
The time it takes for a green bar to fill up is nearly fully reliant on the Received Power at the trader. Received Power is the power Setting, reduced for Radiation Pattern offsets. There is an approximate formula that was determined from in-game testing to describe how long acquisition periods are expected to take.
  
 
== Medium Satellite Dish ==
 
== Medium Satellite Dish ==
Line 34: Line 145:
 
<div class="mw-collapsible mw-collapsed" id="mw-customcollapsible-datanetworkproperties"><br>{{:Kit_(Satellite_Dish)/Data_Network}}</div>
 
<div class="mw-collapsible mw-collapsed" id="mw-customcollapsible-datanetworkproperties"><br>{{:Kit_(Satellite_Dish)/Data_Network}}</div>
  
== Stack Usage ==
+
==Satellite Tracking==
After "Big Changes Coming: Terrain Preview, Melting Ice, Modding, & Localization" update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.
+
See [[Satellite Tracking]] to learn more on how to setup and track traders.
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.
 
 
 
Pro tips:
 
* Everyday there will be only 3 vessels, one for each shuttle tier, in addition to special trader types.
 
* Everyday the 3 vessels will be refreshed, the algorithm for which type of vessel to appear is random, but strictly 1 for each tier, in addition to special trader types.
 
* It's best to use 500 watts if you are using medium satellite dish to scan, 500 watts is just large enough for the FAR tier to appear on the radar, but small enough for it's signal being masked by lower tier shuttles.
 
 
 
<pre style="color: red">
 
Warning:
 
Internally every tick the stack data will be cleared and regenerated,
 
so don't OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.
 
</pre>
 
 
 
<div class="overflowbugx" style="overflow-x:auto;">
 
{| class="wikitable sortable" style="width:50%;"
 
! Op_code
 
! class="unsortable" | Name
 
! class="unsortable" | Description
 
! class="unsortable" | Valid Address
 
! class="unsortable" | Bits
 
! class="unsortable" | Bits Description
 
|-
 
 
 
! rowspan="3" | 1
 
| rowspan="3" | TraderInstruction.WriteTraderData
 
| rowspan="3" | The dish will write out metadata(24 Bytes, in continuous of 3 addresses) to the specified starting index. E.g.: if set WRITE_INDEX to 1, then the metadata will span address 1-3. See [[#Metadata_Payloads|Metadata Payload]]s.
 
| rowspan="3" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| WRITE_INDEX
 
|-
 
| style="text-align:center;" | 16-63
 
| Unused
 
|-
 
! rowspan="3" | 2
 
| rowspan="3" | TraderInstruction.StrongestContactIdHash
 
| rowspan="3" | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.
 
| rowspan="3" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-39
 
| TRADER_ID_HASH
 
|-
 
| style="text-align:center;" | 40-63
 
| Unused
 
|-
 
! rowspan="5" | 3
 
| rowspan="5" | TraderInstruction.StrongestContactMetaData
 
| rowspan="5" | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.
 
| rowspan="5" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| [[#Metadata_Payloads|SHUTTLE_TYPE]].
 
|-
 
| style="text-align:center;" | 16-23
 
| [[#Metadata_Payloads|CONTACT_TIER]].
 
|-
 
| style="text-align:center;" | 24-31
 
| [[#Metadata_Payloads|CONTACTED]].
 
|-
 
| style="text-align:center;" | 32-63
 
| Unused
 
|-
 
! rowspan="4" | 4
 
| rowspan="4" | TraderInstruction.StrongestContactSignalData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-23
 
| WATTS_TO_RESOLVE<br/>See [[Trader#Trader_Tier |WattsToResolve]].
 
|-
 
| style="text-align:center;" | 24-39
 
| LIFETIME<br/>See [[Trader#Trader_Tier|LifeTime]].
 
|-
 
| style="text-align:center;" | 32-63
 
| Unused
 
|-
 
! rowspan="4" | 5
 
| rowspan="4" | TraderInstruction.WriteTraderBuyData
 
| rowspan="4" | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.<br/>If an item contains child items, then it will be expaned inplace.<br/>E.g.: <BuyPayload><BuyPayload><BuyChildPayload><BuyPayload>.<br/>See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].<br/>WRITE_COUNT=0 means WRITE_COUNT=1.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| WRITE_INDEX
 
|-
 
| style="text-align:center;" | 16-23
 
| WRITE_COUNT
 
|-
 
| style="text-align:center;" | 24-63
 
| Unused
 
|-
 
! rowspan="4" | 6
 
| rowspan="4" | TraderInstruction.WriteTraderSellData
 
| rowspan="4" | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.<br/>If an item contains child items, then it will be expaned inplace.<br/>E.g.: <SellPayload><SellPayload><SellChildPayload><SellPayload>.<br/>See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].<br/>WRITE_COUNT=0 means WRITE_COUNT=1.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| WRITE_INDEX
 
|-
 
| style="text-align:center;" | 16-23
 
| WRITE_COUNT
 
|-
 
| style="text-align:center;" | 24-63
 
| Unused
 
|-
 
! rowspan="4" | 7
 
| rowspan="4" | TraderInstruction.TraderBuyThingData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="4" | 8
 
| rowspan="4" | TraderInstruction.TraderBuyThingChildData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="4" | 9
 
| rowspan="4" | TraderInstruction.TraderBuyGasData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| GAS_TYPES_BITFLAG<br/>See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="4" | 10
 
| rowspan="4" | TraderInstruction.TraderSellThingData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="4" | 11
 
| rowspan="4" | TraderInstruction.TraderSellGasData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| GAS_TYPES_BIGFLAG<br/>See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="4" | 12
 
| rowspan="4" | TraderInstruction.TraderSellThingChildData
 
| rowspan="4" | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.
 
| rowspan="4" | 0-31
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 16-47
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 48-63
 
| Unused
 
|-
 
! rowspan="3" | 13
 
| rowspan="3" | TraderInstruction.FilterPrefabHashEquals
 
| rowspan="3" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only matching PrefabHash.
 
| rowspan="3" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-39
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 40-63
 
| Unused
 
|-
 
! rowspan="3" | 14
 
| rowspan="3" | TraderInstruction.FilterPrefabHashNotEquals
 
| rowspan="3" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only not matching PrefabHash.
 
| rowspan="3" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-39
 
| PREFAB_HASH
 
|-
 
| style="text-align:center;" | 40-63
 
| Unused
 
|-
 
! rowspan="4" | 15
 
| rowspan="4" | TraderInstruction.FilterSortingClassCompare
 
| rowspan="4" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only matching SortingClass.
 
| rowspan="4" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| CONDITION_OPERATION<br/>0: Equals<br/>1: Greater<br/>2: Less<br/>3: Not Equals
 
|-
 
| style="text-align:center;" | 16-31
 
| SORTING_CLASS<br/>See [[Sorting_Class]].
 
|-
 
| style="text-align:center;" | 32-63
 
| Unused
 
|-
 
! rowspan="4" | 16
 
| rowspan="4" | TraderInstruction.FilterQuantityCompare
 
| rowspan="4" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only matching Quantity Condition.
 
| rowspan="4" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-15
 
| CONDITION_OPERATION<br/>0: Equals<br/>1: Greater<br/>2: Less<br/>3: Not Equals
 
|-
 
| style="text-align:center;" | 16-31
 
| QUANTITY
 
|-
 
| style="text-align:center;" | 32-63
 
| Unused
 
|-
 
! rowspan="3" | 17
 
| rowspan="3" | TraderInstruction.FilterGasContains
 
| rowspan="3" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only matching Gases.
 
| rowspan="3" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-39
 
| GAS_TYPES_BITFLAG<br/>See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].
 
|-
 
| style="text-align:center;" | 40-63
 
| Unused
 
|-
 
! rowspan="3" | 18
 
| rowspan="3" | TraderInstruction.FilterGasNotContains
 
| rowspan="3" | Filter Operation.<br/>User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output.<br/>Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition.<br/>This Filter narrows Write* OP's output to only not matching Gases.
 
| rowspan="3" | 1-30
 
| style="text-align:center;" | 0-7
 
| Op_code
 
|-
 
| style="text-align:center;" | 8-39
 
| GAS_TYPES_BITFLAG<br/>See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].
 
|-
 
| style="text-align:center;" | 40-63
 
| Unused
 
|}
 
</div>
 
 
 
=== Metadata Payloads ===
 
 
 
Since Metadata has 3 addresses, so it's referenced here as a 24 bytes(192 bits) payload.
 
 
 
<div class="overflowbugx" style="overflow-x:auto;">
 
{| class="wikitable" style="width:80%;"
 
! BitsOffset
 
| 63-40
 
| 39-8
 
| 7-0
 
|-
 
! Segment 1
 
| All bits value in this section is the deplicate of bit 39.
 
| TraderIdHash
 
| OpCode of TraderInstruction.StrongestContactIdHash.
 
|-
 
! BitsOffset
 
| 63-32
 
| 31-24
 
| 23-16
 
| 15-8
 
| 7-0
 
|-
 
! Segment 2
 
| All bits 0.
 
| Contacted<br/>0: false<br/> 1: true
 
| Contact Tier: <br/>0: Close<br/>1: Medium<br/>2: Far
 
| Shuttle Type: <br/>0:None<br/>1: Small(3x3)<br/>2: SmallGas(3x3)<br/>3: Medium(5x5)<br/>4: MediumGas(5x5)<br/>5: Large(6x6)<br/>6: LargeGas(6x6)<br/>7: MediumPlane(7x7, runway:15)<br/>8: LargePlane(9x9, runway:20)
 
| OpCode of TraderInstruction.StrongestContactMetaData.
 
|-
 
! BitsOffset
 
| 63-40
 
| 39-24
 
| 23-8
 
| 7-0
 
|-
 
! Segment 3
 
| ALl bits 0.
 
| [[Trader#Trader_Tier|LifeTime]]
 
| [[Trader#Trader_Tier|WattsToResolve]]
 
| OpCode of TraderInstruction.StrongestContactSignalData.
 
|}
 
</div>
 
 
 
=== Buy/Sell Payloads ===
 
 
 
Buy/Sell Payloads are 1 address each, so it's referenced here as a 8 bytes(64 bit) payload.
 
 
 
<div class="overflowbugx" style="overflow-x:auto;">
 
{| class="wikitable" style="width:60%;"
 
! BitsOffset
 
| 63-48
 
| 47-16
 
| 15-8
 
| 7-0
 
|-
 
! Contents
 
| Every bit's value is the same as bit 47.
 
| PrefabHash/GasTypeBitFlag
 
| Quantity<br/>This value is truncated so it won't be greater than 255 although the trader's Request/Stock is more than 255.
 
| OpCode<br/>Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.
 
|}
 
</div>
 
 
 
=== Buy/Sell Child Payloads ===
 
 
 
Buy/Sell Payloads are 1 address each, so it's referenced here as a 8 bytes(64 bit) payload.
 
 
 
<div class="overflowbugx" style="overflow-x:auto;">
 
{| class="wikitable" style="width:60%;"
 
! BitsOffset
 
| 63-48
 
| 47-16
 
| 15-8
 
| 7-0
 
|-
 
! Contents
 
| Every bit's value is the same as bit 47.
 
| PrefabHash/GasTypeBitFlag
 
| ChildCount<br/>Counts how many instances of this item appeared as a child item.<br/>Beware it's not quantity, it's just a prefab type count.
 
| OpCode<br/>If this data is requested by TraderInstruction.WriteTraderBuyData, then it's value is the OpCode of TraderInstruction.TraderBuyThingChildData.<br/>If this data is requested by TraderInstruction.WriteTraderSellData, then it's value is the OpCode of TraderInstruction.TraderSellThingChildData.
 
|}
 
</div>
 
 
 
=== Gas Type BitFlags ===
 
 
 
If the BitFlag equals 0, it's undefined. If the bit at specific offset is 1, it means the gas contains that component.
 
 
 
<div class="overflowbugx" style="overflow-x:auto;">
 
{| class="wikitable" style="width:60%;"
 
! BitsOffset
 
| 16
 
| 15
 
| 14
 
| 13
 
| 12
 
| 11
 
| 10
 
| 9
 
| 8
 
| 7
 
| 6
 
| 5
 
| 4
 
| 3
 
| 2
 
| 1
 
| 0
 
|-
 
! Contents
 
| PollutedWater
 
| LiquidHydrogen
 
| Hydrogen
 
| LiquidNitrousOxide
 
| LiquidPollutant
 
| LiquidCarbonDioxide
 
| Steam
 
| LiquidVolatiles
 
| LiquidOxygen
 
| LiquidNitrogen
 
| NitrousOxide
 
| Water
 
| Pollutant
 
| Volatiles
 
| CarbonDioxide
 
| Nitrogen
 
| Oxygen
 
|}
 
</div>
 
 
 
Special Gas:
 
# Bit 0,1 both set to 1, which is Air.
 
# Bit 0,3 both set to 1, which is Fuel.
 
 
 
==Stack Programming Reference Implementation==
 
 
 
<pre style="color: red">
 
Warning:
 
The following code is a reference implementation, it only serve the purpose to
 
assist you to observe the possibility and help you write your own code.
 
You must write your own code to fully enjoy the game.
 
</pre>
 
 
 
=== Shuttle Cargoes Looking Glasses ===
 
 
 
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.
 
 
 
Materials to prepare:
 
* A Medium Satellite Dish.
 
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for '''Prefab''' [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).
 
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].
 
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for '''Gas''' [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).
 
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].
 
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader's sell/buy data.
 
* 6 [[Console|Console]] for Small LED installation (all will show metadata).
 
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].
 
 
 
Installation:
 
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].
 
* Install corresponding '''Prefab''' [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to '''Prefab''' display mode: <code>Mode=0</code>
 
* Install corresponding '''Gas''' [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to '''GasLiquid''' display mode: <code>Mode=1</code>
 
{{ICCode|
 
# example for setup GasLiquid mode
 
ss d0 0 Mode 1 # d0 is console pin
 
# or configure all the Consoles in the IcHousing's subnetwork
 
sbs StructureConsole 0 Mode 1
 
}}
 
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: <code>SLMP1</code>, <code>SLMP2</code> for '''Prefab''' display, and <code>SLMG1</code>, <code>SLMG2</code> for '''GasLiquid''' display.
 
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].
 
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader's sell/buy data, <code>Open</code> shows trader's Buy data, <code>Close</code> shows trader's Sell data. Label it <code>TRADER_SELL_BUY_SWITCH</code>.
 
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it <code>Cargo LG IC Housing</code>, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].
 
* Install 6 LED and labeling them: <code>LED_SIGID</code>, <code>LED_CON_TYPE_ID</code>, <code>LED_TIER</code>, <code>LED_SHUTTLE_TYPE</code>, <code>LED_WATT_TO_RESOLVE</code>, <code>LED_CONTACTED</code>.
 
 
 
Reference Implementation:
 
 
 
Next are the code snippets for a setup of 20 '''Prefab''' Console and 11 '''GasLiquid''' Console looking glass.
 
 
 
First snippet is the initialization/configuration code, which should be write to the [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] for the first time, add/remove the [[Kit_(Logic_Memory)|Logic Memories]] stack entries that you actually used in your setup, then install the chip to housing.
 
{{ICCode|
 
# Shuttle Cargoes Looking Glasses IC Stack Initializer
 
 
 
clr db
 
move sp 0
 
# Prefab display Logic Memories, add/remove according to your setup.
 
push HASH("SLMP1")
 
push HASH("SLMP2")
 
push HASH("SLMP3")
 
push HASH("SLMP4")
 
push HASH("SLMP5")
 
push HASH("SLMP6")
 
push HASH("SLMP7")
 
push HASH("SLMP8")
 
push HASH("SLMP9")
 
push HASH("SLMP10")
 
push HASH("SLMP11")
 
push HASH("SLMP12")
 
push HASH("SLMP13")
 
push HASH("SLMP14")
 
push HASH("SLMP15")
 
push HASH("SLMP16")
 
push HASH("SLMP17")
 
push HASH("SLMP18")
 
push HASH("SLMP19")
 
push HASH("SLMP20")
 
move r13 sp
 
 
 
# GasLiquid display Logic Memories, add/remove according to your setup.
 
push HASH("SLMG1")
 
push HASH("SLMG2")
 
push HASH("SLMG3")
 
push HASH("SLMG4")
 
push HASH("SLMG5")
 
push HASH("SLMG6")
 
push HASH("SLMG7")
 
push HASH("SLMG8")
 
push HASH("SLMG9")
 
push HASH("SLMG10")
 
push HASH("SLMG11")
 
move r12 sp
 
}}
 
 
 
Second snippet is for the same [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]], take your IC10 chip out re-put it into the laptop, clear and paste in the new second code snippet.
 
 
 
There are a few user variables need to modify, please check the in-line comments. Mostly that's for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.
 
 
 
{{ICCode|
 
# Shuttle Cargoes Looking Glasses Runtime IC10
 
#
 
# User variable:
 
#
 
# DishM:              The Medium Dish hash.
 
# LED_SIGID:          The LED name, show SignalID.
 
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.
 
# LED_TIER:          The LED name, show Tier.
 
# LED_SHUTTLE_TYPE:  The LED name, show Shuttle Type.
 
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.
 
define DishM HASH("Medium Satellite Dish 1")
 
define LED_SIGID HASH("LED_SIGID")
 
define LED_CON_TYPE_ID HASH("LED_CON_TYPE_ID")
 
define LED_TIER HASH("LED_TIER")
 
define LED_SHUTTLE_TYPE HASH("LED_SHUTTLE_TYPE")
 
define LED_WATT_TO_RESOLVE HASH("LED_WATT_TO_RESOLVE")
 
define LED_CONTACTED HASH("LED_CONTACTED")
 
define TRADER_BUY_SEEL_SWITCH HASH("TRADER_SELL_BUY_SWITCH")
 
###############################################################################
 
define SSD HASH("StructureSatelliteDish")
 
define SLM HASH("StructureLogicMemory")
 
define OpcodeMask %11111111
 
alias dishMID r15
 
alias dishEntryCount r14
 
alias prefabMemCount r13
 
alias totalMemCount r12
 
alias prefabMemCursor r11
 
alias gasMemCursor r10
 
alias sellOrBuy r9
 
 
 
mainloop:
 
jal WriteStack
 
jal Display
 
jal ClearPrefabMem
 
jal ClearGasMem
 
sleep 1
 
j mainloop
 
WriteStack:
 
lbn dishMID SSD DishM ReferenceId Average
 
bnan dishMID ra
 
lbn r0 HASH("StructureLogicSwitch2") TRADER_BUY_SEEL_SWITCH Open Average
 
brgtz r0 3
 
move sellOrBuy TraderInstruction.WriteTraderSellData
 
jr 2
 
move sellOrBuy TraderInstruction.WriteTraderBuyData
 
clrd dishMID
 
sll r0 1 8
 
or r0 r0 TraderInstruction.WriteTraderData
 
putd dishMID 0 r0
 
sll r0 30 16
 
sll r1 5 8
 
or r0 r0 r1
 
or r0 r0 sellOrBuy
 
putd dishMID 4 r0
 
sleep 1
 
j ra
 
Display:
 
lbn r1 SSD DishM SignalID Average
 
sbn HASH("StructureConsoleLED5") LED_SIGID Setting r1
 
move dishEntryCount 0
 
move prefabMemCursor 0
 
move gasMemCursor prefabMemCount
 
DisplayLoop:
 
beq dishEntryCount 31 ra
 
add dishEntryCount dishEntryCount 1
 
getd r0 dishMID dishEntryCount
 
and r1 r0 OpcodeMask
 
beq r1 2 MetaData1
 
beq r1 3 MetaData2
 
beq r1 4 MetaData3
 
beq r1 7 ThingData
 
beq r1 8 ThingData
 
beq r1 9 GasData
 
beq r1 10 ThingData
 
beq r1 11 GasData
 
beq r1 12 ThingData
 
j DisplayLoop
 
MetaData1:
 
sra r2 r0 8 # trader contact type id
 
sbn HASH("StructureConsoleLED5") LED_CON_TYPE_ID Setting r2
 
j DisplayLoop
 
MetaData2:
 
and r2 r0 %11111111_00000000_00000000_00000000
 
sra r2 r2 24 # contacted
 
sbn HASH("StructureConsoleLED5") LED_CONTACTED Setting r2
 
and r2 r0 %11111111_00000000_00000000
 
sra r2 r2 16 # tier
 
sbn HASH("StructureConsoleLED5") LED_TIER Setting r2
 
and r2 r0 %11111111_00000000
 
sra r2 r2 8 # shuttle type
 
sbn HASH("StructureConsoleLED5") LED_SHUTTLE_TYPE Setting r2
 
j DisplayLoop
 
MetaData3:
 
and r2 r0 %11111111_11111111_00000000
 
sra r2 r2 8 # watts to resolve
 
sbn HASH("StructureConsoleLED5") LED_WATT_TO_RESOLVE Setting r2
 
j DisplayLoop
 
ThingData:
 
get r2 db prefabMemCursor # memory chip
 
sra r3 r0 16 # prefab hash
 
sbn SLM r2 Setting r3
 
add prefabMemCursor prefabMemCursor 1
 
j DisplayLoop
 
GasData:
 
get r2 db gasMemCursor # memory chip
 
sra r3 r0 16
 
sbn SLM r2 Setting r3
 
add gasMemCursor gasMemCursor 1
 
j DisplayLoop
 
ClearPrefabMem:
 
move sp prefabMemCursor
 
ClearPrefabMemLoop:
 
bge sp prefabMemCount ra
 
add sp sp 1
 
peek r0 # memory chip
 
sbn SLM r0 Setting -1
 
j ClearPrefabMemLoop
 
ClearGasMem:
 
move sp gasMemCursor
 
ClearGasMemLoop:
 
bge sp totalMemCount ra
 
add sp sp 1
 
peek r0 # memory chip
 
sbn SLM r0 Setting -1
 
j ClearGasMemLoop
 
}}
 
 
 
Final: Now enable the Medium Satellite Dish, enable the Cargo LG IC Housing(the 2nd script should be running), add some power to the dish and rotate it somehow, then check the monitors and LEDs, you will see the items you can shop(trader will sell) from this trader if the logic switch is <code>closed</code>, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is <code>open</code>.
 
 
 
The total setup feels like this
 
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]
 
 
 
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===
 
 
 
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It's build on top of Looking Glass structure of the previous section, take caution.
 
 
 
* Repurpose the IC Housing of the Looking Glass section, label it <code>Trader Filtration IC Housing</code> or a name you like.
 
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it <code>SLM_ITEM_FILTER</code>.
 
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it <code>FILTER_GAS_SWITCH</code>.
 
* 1 [[Console|Console]], install it as Small LED and label it <code>LED_LOCKED_SIGID</code>.
 
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it <code>Dish Control IC Housing</code> or a name you like.
 
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.
 
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it <code>Hardsuit LT 1</code>, pair it with your [[Hardsuit|hardsuit]] in passive mode.
 
* 1 Small Satellite Dish for faster Close/Medium shuttle scanning, optional. If you set it up, the power port must face the same direction as the Medium Dish. If you don't, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.
 
* 1 Large Satellite Dish for faster Far tier shuttle interrogation, optional. If you set it up, the power port must face the same direction as the Medium Dish. If you don't, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.
 
 
 
Installation:
 
 
 
Install all things above and power on. For the repurposed <code>Trader Filtration IC Housing</code> code, paste in following code, replacing Looking Glass code(the Lookging Glass's function is still in the code, plus the filtration function), change the <code>DishM</code>'s name as you like.
 
 
 
<pre style="color: red">
 
Warning:
 
If you use a brand new IC10 chip for the Trader Filtration IC Housing,
 
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,
 
or the stack will be empty as a stack is an IC10 CHIP property.
 
</pre>
 
 
 
{{ICCode|
 
define DishM HASH("Medium Satellite Dish 1")
 
alias dishMID r15
 
alias filterGas r14
 
alias prefabMemCount r13
 
alias totalMemCount r12
 
alias prefabMemCursor r11
 
alias gasMemCursor r10
 
alias sellOrBuy r9
 
alias filterItem r7
 
alias signalID r6
 
move r5 0 # lastSignalID
 
mainloop:
 
move r8 0 # nextAddress
 
WriteStack:
 
lbn dishMID HASH("StructureSatelliteDish") DishM ReferenceId Average
 
bnan dishMID mainloop
 
lbn r0 HASH("StructureLogicSwitch2") HASH("TRADER_SELL_BUY_SWITCH") Open Average
 
brgtz r0 3
 
move sellOrBuy TraderInstruction.WriteTraderSellData
 
jr 2
 
move sellOrBuy TraderInstruction.WriteTraderBuyData
 
clrd dishMID
 
sll r0 1 8
 
or r0 r0 TraderInstruction.WriteTraderData
 
putd dishMID r8 r0
 
add r8 r8 4
 
lbn filterGas HASH("StructureLogicSwitch2") HASH("FILTER_GAS_SWITCH") Setting Average
 
lbn filterItem HASH("StructureLogicMemory") HASH("SLM_ITEM_FILTER") Setting Average
 
breqz filterItem 8 # skip if filter value is 0
 
sll r0 filterItem 8
 
breqz filterGas 3
 
or r0 r0 TraderInstruction.FilterGasContains
 
jr 2
 
or r0 r0 TraderInstruction.FilterPrefabHashEquals
 
putd dishMID r8 r0
 
add r8 r8 1
 
sll r0 30 16
 
add r1 r8 1
 
sll r1 r1 8
 
or r0 r0 r1
 
or r0 r0 sellOrBuy
 
putd dishMID r8 r0
 
yield
 
Display:
 
lbn signalID HASH("StructureSatelliteDish") DishM SignalID Average
 
sbn HASH("StructureConsoleLED5") HASH("LED_SIGID") Setting signalID
 
move r0 0
 
move prefabMemCursor 0
 
move gasMemCursor prefabMemCount
 
DisplayLoop:
 
beq r0 31 ClearMem
 
add r0 r0 1
 
getd r1 dishMID r0
 
and r2 r1 %11111111
 
beq r2 2 MetaData1
 
beq r2 3 MetaData2
 
beq r2 4 MetaData3
 
beq r2 7 ThingData
 
beq r2 8 ThingData
 
beq r2 9 GasData
 
beq r2 10 ThingData
 
beq r2 11 GasData
 
beq r2 12 ThingData
 
j DisplayLoop
 
MetaData1:
 
sra r2 r1 8 # trader contact type id
 
sbn HASH("StructureConsoleLED5") HASH("LED_CON_TYPE_ID") Setting r2
 
j DisplayLoop
 
MetaData2:
 
and r2 r1 %11111111_00000000_00000000_00000000
 
sra r2 r2 24 # contacted
 
sbn HASH("StructureConsoleLED5") HASH("LED_CONTACTED") Setting r2
 
and r2 r1 %11111111_00000000_00000000
 
sra r2 r2 16 # tier
 
sbn HASH("StructureConsoleLED5") HASH("LED_TIER") Setting r2
 
and r2 r1 %11111111_00000000
 
sra r2 r2 8 # shuttle type
 
sbn HASH("StructureConsoleLED5") HASH("LED_SHUTTLE_TYPE") Setting r2
 
j DisplayLoop
 
MetaData3:
 
and r2 r1 %11111111_11111111_00000000
 
sra r2 r2 8 # watts to resolve
 
sbn HASH("StructureConsoleLED5") HASH("LED_WATT_TO_RESOLVE") Setting r2
 
and r2 r1 $FFFF_000000
 
sra r2 r2 24 # lifetime
 
sbn HASH("StructureConsoleLED5") HASH("LED_LIFETIME") Setting r2
 
j DisplayLoop
 
ThingData:
 
get r2 db prefabMemCursor # memory chip
 
sra r3 r1 16 # prefab hash
 
breqz filterItem 3
 
bne filterItem r3 DisplayLoop
 
jal LockSignalID
 
sbn HASH("StructureLogicMemory") r2 Setting r3
 
add prefabMemCursor prefabMemCursor 1
 
j DisplayLoop
 
GasData:
 
get r2 db gasMemCursor # memory chip
 
sra r3 r1 16
 
sgtz r4 filterItem
 
and r4 r4 filterGas
 
breqz r4 4
 
and r4 filterItem r3
 
beqz r4 DisplayLoop
 
jal LockSignalID
 
sbn HASH("StructureLogicMemory") r2 Setting r3
 
add gasMemCursor gasMemCursor 1
 
j DisplayLoop
 
LockSignalID:
 
lbn r4 HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting Average
 
bgtz r4 ra
 
beq signalID r5 ra
 
sbn HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting signalID
 
move r5 signalID
 
j ra
 
ClearMem:
 
move sp prefabMemCursor
 
brge sp prefabMemCount 5
 
add sp sp 1
 
peek r0 # memory chip
 
sbn HASH("StructureLogicMemory") r0 Setting -1
 
jr -4
 
move sp gasMemCursor
 
bge sp totalMemCount mainloop
 
add sp sp 1
 
peek r0 # memory chip
 
sbn HASH("StructureLogicMemory") r0 Setting -1
 
jr -4
 
}}
 
 
 
For the <code>Dish Control IC Housing</code> code, paste in following code, change the hash of <code>DishS</code> and <code>DishL</code> names as you have then setted up or not. Search and change the name of <code>Hardsuit LT 1</code> line if you want to send notification to other devices.
 
 
 
{{ICCode|
 
define DishM HASH("Medium Satellite Dish 1")
 
define DishS 0 # if you have small dish, set hash to HASH("NAME")
 
define DishL 0 # if you have large dish, set hash to HASH("NAME")
 
move r0 0
 
reset:
 
move r15 r0 # lockedSigID
 
move r14 0 # horizontal
 
move r13 0 # vertical
 
move r12 0 # horizontalEdge1
 
move r11 0 # horizontalEdge2
 
move r10 0 # verticalEdge1
 
move r9 0 # verticalEdge2
 
move r8 DishM # commDish
 
move r7 HASH("StructureSatelliteDish") # commDishType
 
move r6 DishM # scanDish
 
move r5 r7 # scanDishType
 
sbn r5 r6 Vertical 60
 
sbn r5 r6 BestContactFilter -1
 
sbn r5 r6 Setting 500
 
mainloop:
 
yield
 
lbn r0 HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting Average
 
lbn r1 r5 r6 SignalID Average
 
lbn r2 r5 r6 Horizontal Average
 
lbn r3 r5 r6 Vertical Average
 
breqz r0 34
 
  bne r0 r15 reset
 
  lbn r4 HASH("StructureConsoleLED5") HASH("LED_TIER") Setting Average
 
  brnez r14 10
 
  brge r4 2 5
 
    breqz DishS 4
 
      move r6 DishS
 
      move r5 HASH("StructureSmallSatelliteDish")
 
      sbn r5 r6 Setting 200
 
    breqz DishL 3
 
      move r8 DishL
 
      move r7 HASH("StructureLargeSatelliteDish")
 
  sbn r5 r6 BestContactFilter r15
 
  sbn r5 r6 On 1
 
  beqz r12 ScanHorizontal
 
  beqz r11 ScanReverseHorizontal
 
  beqz r10 ScanVertical
 
  beqz r9 ScanReverseVertical
 
  brne r1 -1 3
 
    sbn HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting 0
 
    j reset
 
  yield
 
  lbn r0 r7 r8 Idle Average
 
  breqz r0 -2
 
  sbn r7 r8 BestContactFilter r15
 
  sbn r7 r8 Setting 50000
 
  sbn r7 r8 Activate 1
 
  lbn r0 r7 r8 InterrogationProgress Average
 
  brlt r0 1 4
 
    sleep 2
 
    sbn HASH("StructureLogicTransmitter") HASH("Hardsuit LT 1") SoundAlert 37
 
    sbn HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting 0
 
  j mainloop
 
bnez r15 reset
 
breq r6 DishM 2 # enter roaming mode
 
sbn r5 r6 On 0
 
breq r8 DishM 2
 
sbn r7 r8 On 0
 
sbn HASH("StructureSatelliteDish") DishM On 1
 
add r2 r2 2
 
mod r2 r2 360
 
sbn HASH("StructureSatelliteDish") DishM Horizontal r2
 
j mainloop
 
ScanHorizontal:
 
brne r1 -1 4
 
  move r12 r14
 
  sbn r5 r6 Horizontal r14
 
  j mainloop
 
move r14 r2
 
sub r4 r2 5
 
mod r4 r4 360
 
sbn r5 r6 Horizontal r4
 
j mainloop
 
ScanReverseHorizontal:
 
brne r1 -1 14
 
  beq r14 r12 13
 
  move r11 r14
 
  slt r4 r11 r12
 
  breqz r4 2
 
  add r11 r11 360
 
  add r4 r11 r12
 
  div r4 r4 2
 
  mod r4 r4 360
 
  sbn r5 r6 Horizontal r4
 
  sbn r7 r8 On 1
 
  sbn r7 r8 Horizontal r4
 
  jal 124
 
  j mainloop
 
move r14 r2
 
add r4 r2 5
 
mod r4 r4 360
 
sbn r5 r6 Horizontal r4
 
j mainloop
 
ScanVertical:
 
brne r1 -1 4
 
  move r10 r13
 
  sbn r5 r6 Vertical r13
 
  j mainloop
 
move r13 r3
 
brge r3 89.9 -4
 
add r4 r3 5
 
sbn r5 r6 Vertical r4
 
j mainloop
 
ScanReverseVertical:
 
brne r1 -1 10
 
  beq r13 r10 9
 
  move r9 r13
 
  select r9 r9 r9 0.01
 
  add r4 r9 r10
 
  div r4 r4 2
 
  sbn r5 r6 Vertical r4
 
  sbn r7 r8 Vertical r4
 
  jal 124
 
  j mainloop
 
move r13 r3
 
brle r3 0.1 -8
 
sub r4 r3 5
 
sbn r5 r6 Vertical r4
 
j mainloop
 
yield
 
lbn r0 r5 r6 Idle Average
 
breqz r0 -2
 
j ra
 
}}
 
 
 
The last step is to set the item prefab hash you want. First set the <code>FILTER_GAS_SWITCH</code> to indicate the type of the filter(<code>Open</code> is filtering Gas, <code>Close</code> is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named <code>SLM_ITEM_FILTER</code> using labeler or any other means, then power both IC Housing on. Then wait for the trader to arrive, there will be a notification send to your Hardsuit or your custom device. The codes will auto locate the shuttle and filter shuttle cargoes and interrogate with it and call it down to your default landing pad.
 
 
 
Don't forget to reset the content of <code>SLM_ITEM_FILTER</code> to <code>0</code> or something else after trading.
 
 
 
The logic behind the Dish Control is that it scan the signal edge of the filtered out SignalID, instead of inspecting signal strength, so it kind of fast and non-stop rotating. When no filter is specified, it enters roaming mode which rotate clock-wise until filter is specficied and matching shuttle is found.
 

Revision as of 21:51, 26 January 2026

Kit (Small Satellite Dish)
ItemKitSatelliteDish.png
Constructing Options Small Satellite Dish
Properties
Stacks No
Paintable Yes
Recipes
Electronics Printer 5xGold, 10xCopper
Logic
Item Hash 1960952220
Item Name ItemKitSmallSatelliteDish
Kit (Medium Satellite Dish)
ItemKitSatelliteDish.png
Constructing Options Medium Satellite Dish
Properties
Stacks No
Paintable No
Recipes
Electronics Printer 20xSteel, 15Electrum, 10xSolder
Logic
Item Hash 178422810
Item Name ItemKitSatelliteDish
Kit (Large Satellite Dish)
ItemKitSatelliteDish.png
Constructing Options Large Satellite Dish
Properties
Stacks No
Paintable Yes
Recipes
Electronics Printer 20xWaspaloy, 50xInconel, 100xAstroloy
Logic
Item Hash -2039971217
Item Name ItemKitLargeSatelliteDish
Small Satellite Dish
[]
Operation
Power Usage 10W Base Power Usage
Prefab Hash -2138748650
Prefab Name StructureSmallSatelliteDish
Construction
Placed with Kit (Small Satellite Dish)
Placed on Small Grid
Requires Frame Yes
Stage 1
Next Stage Construction
Constructed with tool Welding Torch
Constructed with item 1 x Iron Sheets
Deconstruction
Deconstructed with Hand Drill
Stage 2
Next Stage Construction
Constructed with item 1 x Cable Coil
Medium Satellite Dish
[]
Operation
Power Usage 50W Base Power Usage
Prefab Hash 439026183
Prefab Name StructureSatelliteDish
Construction
Placed with Kit (Small Satellite Dish)
Placed on Small Grid
Requires Frame Yes
Stage 1
Next Stage Construction
Constructed with tool Welding Torch
Constructed with item 1 x Steel Sheets
Stage 2
Next Stage Construction
Constructed with tool Wrench
Stage 3
Next Stage Construction
Constructed with item 1 x Plastic Sheets
Large Satellite Dish
[]
Operation
Power Usage 100W Base Power Usage
Prefab Hash 1913391845
Prefab Name StructureLargeSatelliteDish
Construction
Placed with Kit (Small Satellite Dish)
Placed on Small Grid
Requires Frame Yes
Stage 1
Next Stage Construction
Constructed with tool Welding Torch
Constructed with item 10 x Steel Sheets
Stage 2
Next Stage Construction
Constructed with tool Wrench
Stage 3
Next Stage Construction
Constructed with tool Screwdriver
Stage 4
Next Stage Construction
Constructed with tool Welding Torch
Constructed with item Steel Sheets
Stage 5
Next Stage Construction
Constructed with item 10xCable Coil (Heavy)
Stage 6
Next Stage Construction
Constructed with item 10xPlastic Sheets

Description

Small Satellite Dish

"The small communications unit can be used to communicate with nearby trade vessels."
- Stationpedia


Medium Satellite Dish

"The medium communications unit can be used to communicate with nearby trade vessels."
- Stationpedia


Large Satellite Dish

"The large communications unit can be used to communicate with nearby trade vessels."
- Stationpedia


When connected to a Computer containing a Motherboard (Communications), a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic. The Satellite Dish must be guided by Satellite Tracking onto a signal and communications then may be initiated to call down and interact with traders.e`

Capabilities

Parameter Name Units Small Satellite Dish Medium Satellite Dish Large Satellite Dish
Minimum Power Setting watts 50 500 2000
Maximum Power Setting watts 200 7,5000 50,000
Base Power Usage watts 10 50 100
Acquisition Power Usage, Ratio to Power Setting  % 10%
Azimuth Rotation Speed deg/tick 4.5 0.9 0.24
Elevation Rotation Speed deg/tick 4.5 0.45 0.18

Notes on Power Usage: Actual Power Draw from the satellite dish is based on the current mode of operation.

  1. Idle Mode: The base power usage
  2. Acquisition Mode: Acquiring traders signals, showing the green progress bars uses 10% of the current power setting. Once all visible traders have complete progress bars (acquired), the mode switches back to Idle
  3. Interogation: Interrogating the trader will use draw power according to the satellite dish’s power Setting for the duration of the interrogation.

Antenna Patterns

Like real-world antennas, all three Satellite Dishes have Radiation Patterns. The closer the antenna is pointing to a trader, the more of the available power reaches the trader, and the faster the Computer with Motherboard (Communications) will acquire information about the trader. The pattern(s) for all three antennas are the same, and are a linearly interpolated through the points described in the table. Notice, that if the antenna is within than 2° of the trader, then there is no reduction in power from the Power Setting from reaching the trader. It should be noted that the game deliberately adds noise to the reported value; the displayed values of SignalStrength (degrees from trader) and the correlated WattsReachingContact (power Setting multiplied by Power Ratio) have a seemingly random ± 3° value added to the SignalStrength.

Satellite Dishes Radiation Pattern
Degrees Off Trader Power Ratio
1.00
1.00
0.90
22.5° 0.10
45° 0.05
90° 0.01
* 180° 0.001
*Note: 180° is estimated by extrapolation

Acquisition Times

To make the Interrogation and Land options visible for a particular trader on the Computer user-interface, the Satellite Dish must first complete the acquisition of the target signal. Three are a few phases for the signal acquisition.

  1. Satellite Dish must be stopped. Any new motion or change in power Setting will reset any acquisition progress
  2. Visible Traders are populated on the Computer
  3. Green progress bar shows the Acquisition progress. All traders start their progress bars at the same time, grow simultaneously, and are dependent on the Received Power by the Trader
  4. After a trader has been acquired, the user-interface on the Computer shows the approximate angle that the antenna is pointing off from the trader, as well as the Interrogate Button (left side, satellite icon) and the Land Button (right sight, downward arrow)

The time it takes for a green bar to fill up is nearly fully reliant on the Received Power at the trader. Received Power is the power Setting, reduced for Radiation Pattern offsets. There is an approximate formula that was determined from in-game testing to describe how long acquisition periods are expected to take.

Medium Satellite Dish

Data Network Properties

Click here to see/hide all the data network properties

Input Data (Write)

These are all parameters, that can be written to with different means of using logic.

Parameter Name Data Type Value Description
On Boolean 0 Turns the device off. Also toggles the switch accordingly.
1 Turns the device on. Also toggles the switch accordingly.
Activate Boolean 0 If the vessel's being interrogated, stop interrogating the vessel; or nothing.
1 If the vessel's has not been interrogated, start interrogating the vessel. If the vessel has been interrogated, call down the vessel to the TargetPadIndex.
Setting Integer 0 ~ Max watts of device. Set output watts to the specified number.
Horizontal Integer 0 ~ 360 Set dish's horizontal angle to the specified number.
Vertical Integer 0 ~ 90 Set dish's vertical angle to the specified number.
TargetPadIndex Integer Sets the landing pad index for potential call down.
BestContactFilter Integer Lock dish to track the specified ContactIDHash ONLY, set to -1 to unlock.
Update 0.2.5888.25957 - Sun 7/9/2025 /Data_Network

Output Data (Read)

These are all parameters, that can be read by using different means of logic.

Parameter Name Data Type Value Description
On Boolean 0 The Dish is not powered. This is the same as the physical red powerswitch located on the structure.
1 The Dish is powered. This is the same as the physical red powerswitch located on the structure.
Activate Boolean 0 Read out current Activate value; if Activate == 1, it means the dish is either interrogating the vessel or the vessel is just coming down to landing pad.
Power Boolean 0 The dish is not powered. Can be read to determine if the dish is correctly powered or not. Set by the power system, return 1 if powered and 0 if not.
1 The Dish is powered.
Setting Integer Read out current dish's output watts.
Horizontal Integer Read out current dish's horizontal angle.
Vertical Integer Read out current dish's vertical angle.
RequiredPower Integer Idle operating power quantity. Does not include extra power during actual usage.
Idle Boolean Read out if the dish is not moving.
Idle Boolean 0 Dish not moving, and not interrogating.
1 Dish is either moving or interrogating.
Error Boolean 0 1 if device is in error state, otherwise 0.
1 1 if device is in error state, otherwise 0.
SignalStrength Integer The signal strength of currently tracking signal, negative value, larger is better.
If the dish is moving, this value always show -1.
SignalID Integer The signal IDHASH of currently tracking signal.
InterrogationProgress Integer This value only has meaning if the dish has started interrogation to the vessel.
Show's percentage on the process of the interrogation.
TargetPadIndex Integer Read out current value of target landing pad index, useful if you want to call down the vessel by code.
SizeX Integer The length on X axis of the vessel, see SHUTTLE_TYPE.
SizeZ Integer The length on Z axis of the vessel, see SHUTTLE_TYPE.
Reagents Integer Total number of reagents inside the device (e.g. 92g of iron = 92).
MinimumWattsToContact Integer The minimum watts required reaching target vessel before one can initiate interrogation.
This is the requirement imposed by the vessel.
WattsReachingContact Integer The current effective watts reached target vessel due to angle setting and dish's watts output setting.
ContactTypeId Integer The category of the vessel, see ContactTypeID.
BestContactFilter Integer Currently locked ContactID, or -1 if not set.
StackSize Integer Read out the stack Byte count of the structure.
NameHash Integer The hash of the custom name of the structure.
PrefabHash Integer The hash of the structure.
Referenceld Integer Unique Reference Identifier for this object.
Update 0.2.5888.25957 - Sun 7/9/2025 /Data_Network

Satellite Tracking

See Satellite Tracking to learn more on how to setup and track traders.