Actions

Difference between revisions of "Kit (Satellite Dish)"

From Unofficial Stationeers Wiki

m (add commentary.)
(Capabilities: Added some clarifications to Capabilites notes sections, and finished adding the formula for acquisition times, as well as examples)
 
(27 intermediate revisions by 8 users not shown)
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     = 200W
+
| 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
| decon_with_tool1 = [[Hand Drill]]
+
| placed_on_grid = Small Grid
| item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]
+
| requires_frames = Yes
 +
| 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==
+
==Description==
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.
+
Small Satellite Dish 
 +
{{Description|The small communications unit can be used to communicate with nearby trade vessels.}} 
 +
Medium Satellite Dish 
 +
{{Description|The medium communications unit can be used to communicate with nearby trade vessels.}} 
 +
Large Satellite Dish
 +
{{Description|The large communications unit can be used to communicate with nearby trade vessels.}} 
 +
When connected to a [[Computer]] containing a [[Motherboard (Communications)]], a [[Landingpad Center]], and a [[Vending Machine]], this allows Stationeers to contact a [[Trader]]. 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. 
 +
==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,500 || 50,000 
 +
|- 
 +
| Base Power Usage || watts || 10 || 50 || 100
 +
|- 
 +
| Acquisition Power Usage, Ratio to Power Setting || % || style="text-align: center;" colspan=3 | 10%
 +
|-
 +
| Azimuth Rotation Speed || deg/second || 9 || 1.8 || 0.36-1.44* 
 +
|- 
 +
| Elevation Rotation Speed || deg/second || 9 || 0.9 || 0.36
 +
|} 
 +
The Large Satellite Dish is the only dish with variable rotation rates. The azimuth (Horizontal) rotation rate gets faster as its elevation (Vertical) approaches zenith, which is 0° for the dishes. The azimuth rotation speed, in degrees per second, is calculated by = 0.36 / min(1, 0.25 + verticalAngle / 90 ). Therefore, the rotation speed is 1.44°/sec when Vertical is 0°; the rotation speed slows down to 0.36°/sec when Vertical is 70°; and the rotation speed remains constant between 70° and 90°
  
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%
+
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
== Medium Satellite Dish ==
+
#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
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.
+
#Interogation: Interrogating the trader will use draw power according to the satellite dish’s power Setting for the duration of the interrogation.  
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.
+
===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 satellite, the more of the available power reaches the trader, and the faster the signal will be acquired. 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.
<pre style="color: red">
+
{| class="wikitable"
Warning:
+
|+ Satellite Dishes Radiation Pattern 
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.
+
! Degrees Off Trader !! Power Ratio 
</pre>
+
|-
 
+
| 0&deg; || 1.00 
<div class="overflowbugx" style="overflow-x:auto;">
+
|-
{| class="wikitable sortable" style="width:50%;"
+
| 2&deg; || 1.00 
! Op_code
+
|-
! class="unsortable" | Name
+
| 5&deg; || 0.90 
! class="unsortable" | Description
+
|-  
! class="unsortable" | Valid Address
+
| 22.5&deg; || 0.10 
! class="unsortable" | Bits
+
|-
! class="unsortable" | Bits Description
+
| 45&deg; || 0.05 
|-
+
|-
 
+
| 90&deg; || 0.01 
! rowspan="3" | 1
+
|-
| rowspan="3" | TraderInstruction.WriteTraderData
+
| 180&deg; || 0.001 
| 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.
 
| [[Trader#ContactTypeID|ContactTypeID]]
 
| 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==
 
 
=== 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 ===
+
===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. The time, in seconds, for full acquisition is 1000/(P*G)^2; P is the antenna power Setting, and G is the ratio from the antenna pattern. By substitution, P*G is the listed WattsReachingContact value.
 +
For example: a Small Satellite Dish set at 50W (minimum power), pointing 4&deg; off the trader signal, would take less than 0.5 second for the bar to go fully green. Secondly, that same Small Satellite Dish, set at 200W (full power), but now 36&deg; off the trader now takes about 5.1 seconds to fully acquire the signal.
  
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.
+
{{Data Network Header}}
 
+
{{Data Parameters|
* Repurpose the IC Housing of the Looking Glass section, label it <code>Trader Filtration IC Housing</code> or a name you like.
+
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Satellite Dish is currectly powered or not|multiple=2|0|Unpowered|1|Powered}}
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it <code>SLM_ITEM_FILTER</code>
+
{{Data Parameters/row|Error|Boolean|w=0|Can be read to return if the Satellite Dish is currently in an Error state or not|multiple=2|0|Normal|1|Error}}
* 1 [[Console|Console]], install it as Small LED and label it <code>LED_LOCKED_SIGID</code>.
+
{{Data Parameters/row|Activate|Boolean|Read the status or write to Activate interrogation or call down. Writing a 0 will stop any current action|multiple=2|0|Stop Current Action|1|Start Interrogation, or Call down if already interrogated}}
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it <code>Dish Control IC Housing</code> or a name you like.
+
{{Data Parameters/row|Setting|Integer|Read or Write the Power Setting|0 ~ Max Watts of Device}}
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.
+
{{Data Parameters/row|Horizontal|Float|Read or Write the horizontal pointing setting, in degrees|0-360}}
* 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.
+
{{Data Parameters/row|Vertical|Float|Read or Write the vertical pointing setting, in degrees|0-90}}
* 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.
+
{{Data Parameters/row|On|Boolean|Read or Write the Satellite Dish On or Off|multiple=2|0|Off|1|On}}
* 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.
+
{{Data Parameters/row|RequiredPower|Float|w=0|The minimum required power to interrogate the current signal}}
 
+
{{Data Parameters/row|Idle|Boolean|w=0|The status of the satellite dish|multiple=2|0|Idle|1|Moving, Acquiring, or Interrogating}}
Installation:
+
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}
 
+
{{Data Parameters/row|SignalStrength|Float|w=0|The angular distance from the current pointing angle to the signal, where 0 is pointing directly at the satellite|0.0-180.0}}
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.
+
{{Data Parameters/row|SiganlID|Integer|w=0|The 4-digit signal identification number of the satellite. Can be forced to change by the Contact Filter}}
 
+
{{Data Parameters/row|InterrogationProgress|Float|w=0|If actively interogating a signal, will show the current progress, in percentage (%)|0.0 - 100.0}}
{{ICCode|
+
{{Data Parameters/row|TargetPaxIndex|Integer|Read out or set current value of target landing pad index, useful if you want to call down the vessel by code}}
define DishM HASH("Medium Satellite Dish 1")
+
{{Data Parameters/row|SizeX|Integer|w=0|The length on X axis of the vessel|3, 5, 6}}
alias dishMID r15
+
{{Data Parameters/row|SizeY|Integer|w=0|The length on Z axis of the vessel|3, 5, 6}}
alias dishEntryCount r14
+
{{Data Parameters/row|MinimumWattsToContact|Float|w=0|The minimum watts required reaching target vessel before one can initiate interrogation; this is the requirement imposed by the vessel}}
alias prefabMemCount r13
+
{{Data Parameters/row|WattsReachingContact|Float|w=0|The current effective watts reached target vessel due to angle setting and dish's watts output setting}}
alias totalMemCount r12
+
{{Data Parameters/row|ContactTypeID|Integer|w=0|The category of the vessel}}
alias prefabMemCursor r11
+
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}
alias gasMemCursor r10
+
{{Data Parameters/row|BestContactFilter|Integer|Read current fitler, or set the filter to force the dish to show in logic the current data parameters for any trader in view, not just the most prominent; set this value by writing the traders SignalID}}
alias sellOrBuy r9
+
{{Data Parameters/row|NameHash|Integer|w=0|The hash of the custom name of the structure}}
alias nextAddress r8
 
alias filterItem r7
 
alias signalID r6
 
alias lastSignalID r5
 
move lastSignalID 0
 
mainloop:
 
move nextAddress 0
 
jal WriteStack
 
jal Display
 
jal ClearPrefabMem
 
jal ClearGasMem
 
j mainloop
 
WriteStack:
 
lbn dishMID HASH("StructureSatelliteDish") DishM ReferenceId Average
 
bnan dishMID ra
 
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 nextAddress r0
 
add nextAddress nextAddress 4
 
lbn filterItem HASH("StructureLogicMemory") HASH("SLM_ITEM_FILTER") Setting Average
 
breqz filterItem 5 # skip if filter value is 0
 
sll r0 filterItem 8
 
or r0 r0 TraderInstruction.FilterPrefabHashEquals
 
putd dishMID nextAddress r0
 
add nextAddress nextAddress 1
 
sll r0 30 16
 
add r1 nextAddress 1
 
sll r1 r1 8
 
or r0 r0 r1
 
or r0 r0 sellOrBuy
 
putd dishMID nextAddress r0
 
yield
 
j ra
 
Display:
 
lbn signalID HASH("StructureSatelliteDish") DishM SignalID Average
 
sbn HASH("StructureConsoleLED5") HASH("LED_SIGID") Setting signalID
 
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 %11111111
 
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") HASH("LED_CON_TYPE_ID") Setting r2
 
j DisplayLoop
 
MetaData2:
 
and r2 r0 %11111111_00000000_00000000_00000000
 
sra r2 r2 24 # contacted
 
sbn HASH("StructureConsoleLED5") HASH("LED_CONTACTED") Setting r2
 
and r2 r0 %11111111_00000000_00000000
 
sra r2 r2 16 # tier
 
sbn HASH("StructureConsoleLED5") HASH("LED_TIER") Setting r2
 
and r2 r0 %11111111_00000000
 
sra r2 r2 8 # shuttle type
 
sbn HASH("StructureConsoleLED5") HASH("LED_SHUTTLE_TYPE") Setting r2
 
j DisplayLoop
 
MetaData3:
 
and r2 r0 %11111111_11111111_00000000
 
sra r2 r2 8 # watts to resolve
 
sbn HASH("StructureConsoleLED5") HASH("LED_WATT_TO_RESOLVE") Setting r2
 
and r2 r0 $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 r0 16 # prefab hash
 
sbn HASH("StructureLogicMemory") r2 Setting r3
 
add prefabMemCursor prefabMemCursor 1
 
j DataEnd
 
GasData:
 
get r2 db gasMemCursor # memory chip
 
sra r3 r0 16
 
sbn HASH("StructureLogicMemory") r2 Setting r3
 
add gasMemCursor gasMemCursor 1
 
DataEnd:
 
beqz filterItem DisplayLoop
 
seq r4 r3 filterItem
 
beqz r4 DisplayLoop
 
lbn r4 HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting Average
 
bgtz r4 DisplayLoop
 
beq signalID lastSignalID DisplayLoop
 
sbn HASH("StructureConsoleLED5") HASH("LED_LOCKED_SIGID") Setting signalID
 
move lastSignalID signalID
 
j DisplayLoop
 
ClearPrefabMem:
 
move sp prefabMemCursor
 
ClearPrefabMemLoop:
 
bge sp prefabMemCount ra
 
add sp sp 1
 
peek r0 # memory chip
 
sbn HASH("StructureLogicMemory") r0 Setting -1
 
j ClearPrefabMemLoop
 
ClearGasMem:
 
move sp gasMemCursor
 
ClearGasMemLoop:
 
bge sp totalMemCount ra
 
add sp sp 1
 
peek r0 # memory chip
 
sbn HASH("StructureLogicMemory") r0 Setting -1
 
j ClearGasMemLoop
 
 
}}
 
}}
  
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.
+
==Satellite Tracking==
 
+
See [[Satellite Tracking]] to learn more on how to setup and track traders.
{{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 45
 
sbn r5 r6 BestContactFilter -1
 
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
 
s db Setting DishM
 
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
 
}}
 
 
 
After two IC setted up, power them on.
 
 
 
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named <code>SLM_ITEM_FILTER</code> using labeler or any other means, then wait for the trader to arrive. 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.
 

Latest revision as of 14:06, 30 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[edit]

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 a Trader. 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.

Capabilities[edit]

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,500 50,000
Base Power Usage watts 10 50 100
Acquisition Power Usage, Ratio to Power Setting  % 10%
Azimuth Rotation Speed deg/second 9 1.8 0.36-1.44*
Elevation Rotation Speed deg/second 9 0.9 0.36

The Large Satellite Dish is the only dish with variable rotation rates. The azimuth (Horizontal) rotation rate gets faster as its elevation (Vertical) approaches zenith, which is 0° for the dishes. The azimuth rotation speed, in degrees per second, is calculated by = 0.36 / min(1, 0.25 + verticalAngle / 90 ). Therefore, the rotation speed is 1.44°/sec when Vertical is 0°; the rotation speed slows down to 0.36°/sec when Vertical is 70°; and the rotation speed remains constant between 70° and 90°

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[edit]

Like real-world antennas, all three Satellite Dishes have Radiation Patterns. The closer the antenna is pointing to a satellite, the more of the available power reaches the trader, and the faster the signal will be acquired. 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.

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

Acquisition Times[edit]

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. The time, in seconds, for full acquisition is 1000/(P*G)^2; P is the antenna power Setting, and G is the ratio from the antenna pattern. By substitution, P*G is the listed WattsReachingContact value. For example: a Small Satellite Dish set at 50W (minimum power), pointing 4° off the trader signal, would take less than 0.5 second for the bar to go fully green. Secondly, that same Small Satellite Dish, set at 200W (full power), but now 36° off the trader now takes about 5.1 seconds to fully acquire the signal.

Data Network Properties[edit]

These are all Data Network properties of this device.

Data Parameters[edit]

These are all parameters that can be written with a Logic Writer, Batch Writer, or Integrated Circuit (IC10), and can be read with a Logic Reader, Batch Reader, or Integrated Circuit (IC10).

Click here to see/hide all the data network properties
Parameter Name Data Type Access Value Description
Power Boolean
Read
0 Unpowered Can be read to return if the Satellite Dish is currectly powered or not
1 Powered
Error Boolean
Read
0 Normal Can be read to return if the Satellite Dish is currently in an Error state or not
1 Error
Activate Boolean
Read Write
0 Stop Current Action Read the status or write to Activate interrogation or call down. Writing a 0 will stop any current action
1 Start Interrogation, or Call down if already interrogated
Setting Integer
Read Write
0 ~ Max Watts of Device Read or Write the Power Setting
Horizontal Float
Read Write
0-360 Read or Write the horizontal pointing setting, in degrees
Vertical Float
Read Write
0-90 Read or Write the vertical pointing setting, in degrees
On Boolean
Read Write
0 Off Read or Write the Satellite Dish On or Off
1 On
RequiredPower Float
Read
The minimum required power to interrogate the current signal
Idle Boolean
Read
0 Idle The status of the satellite dish
1 Moving, Acquiring, or Interrogating
PrefabHash Integer
Read
The hash of the structure
SignalStrength Float
Read
0.0-180.0 The angular distance from the current pointing angle to the signal, where 0 is pointing directly at the satellite
SiganlID Integer
Read
The 4-digit signal identification number of the satellite. Can be forced to change by the Contact Filter
InterrogationProgress Float
Read
0.0 - 100.0 If actively interogating a signal, will show the current progress, in percentage (%)
TargetPaxIndex Integer
Read Write
Read out or set current value of target landing pad index, useful if you want to call down the vessel by code
SizeX Integer
Read
3, 5, 6 The length on X axis of the vessel
SizeY Integer
Read
3, 5, 6 The length on Z axis of the vessel
MinimumWattsToContact Float
Read
The minimum watts required reaching target vessel before one can initiate interrogation; this is the requirement imposed by the vessel
WattsReachingContact Float
Read
The current effective watts reached target vessel due to angle setting and dish's watts output setting
ContactTypeID Integer
Read
The category of the vessel
ReferenceId Integer
Read
Unique Reference Identifier for this object
BestContactFilter Integer
Read Write
Read current fitler, or set the filter to force the dish to show in logic the current data parameters for any trader in view, not just the most prominent; set this value by writing the traders SignalID
NameHash Integer
Read
The hash of the custom name of the structure


Satellite Tracking[edit]

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