<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lisnaz</id>
	<title>Stationeers Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lisnaz"/>
	<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/Special:Contributions/Lisnaz"/>
	<updated>2026-04-03T22:44:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=23470</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=23470"/>
		<updated>2025-09-10T05:09:52Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
=== Data Network Properties ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-customtoggle-datanetworkproperties&amp;quot; style=&amp;quot;width:auto; overflow:auto; text-indent:10px; border: 2px solid #253C60; border-radius:10px;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Click here to see/hide all the &amp;lt;span style=&amp;quot;color:#E57125;&amp;quot;&amp;gt;data network properties&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-datanetworkproperties&amp;quot;&amp;gt;&amp;lt;br&amp;gt;{{:Kit_(Satellite_Dish)/Data_Network}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stack Usage ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
Pro tips:&lt;br /&gt;
* Everyday there will be only 3 vessels, one for each shuttle tier.&lt;br /&gt;
* Everyday the 3 vessels will be refreshed, the algorithm for which type of vessel to appear is random, but strictly 1 for each tier.&lt;br /&gt;
* It&#039;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&#039;s signal being masked by lower tier shuttles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
The following code is a reference implementation, it only serve the purpose to&lt;br /&gt;
assist you to observe the possibility and help you write your own code.&lt;br /&gt;
You must write your own code to fully enjoy the game.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23465</id>
		<title>Kit (Satellite Dish)/Data Network</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23465"/>
		<updated>2025-09-06T19:01:27Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
These are all of the [[Satellite_Dish]] parameter in the game.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:auto; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
=== Input Data (Write) ===&lt;br /&gt;
These are all parameters, that can be written to with different means of using logic.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Turns the device off. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Turns the device on. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Activate&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| If the vessel&#039;s being interrogated, stop interrogating the vessel; or nothing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| If the vessel&#039;s has not been interrogated, start interrogating the vessel. If the vessel has been interrogated, call down the vessel to the TargetPadIndex.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Setting&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ Max watts of device.&lt;br /&gt;
| Set output watts to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Horizontal&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 360&lt;br /&gt;
| Set dish&#039;s horizontal angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Vertical&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 90&lt;br /&gt;
| Set dish&#039;s vertical angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! TargetPadIndex&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Sets the landing pad index for potential call down.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! BestContactFilter&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Lock dish to track the specified ContactIDHash ONLY, set to &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; to unlock.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.5888.25957 - Sun 7/9/2025&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Satellite_Dish/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Output Data (Read) ===&lt;br /&gt;
These are all parameters, that can be read by using different means of logic.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| The &amp;lt;b&amp;gt;Dish&amp;lt;/b&amp;gt; is not powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| The &amp;lt;b&amp;gt;Dish&amp;lt;/b&amp;gt; is powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Activate&lt;br /&gt;
| Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Setting&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s output watts.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! Horizontal&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s horizontal angle.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! Vertical&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s vertical angle.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! RequiredPower&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Idle operating power quantity. Does not include extra power during actual usage. &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Idle&lt;br /&gt;
| Boolean&lt;br /&gt;
| &lt;br /&gt;
| Read out if the dish is not moving.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Idle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Dish not moving, and not interrogating.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Dish is either moving or interrogating.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Error&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SignalStrength&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The signal strength of currently tracking signal, negative value, larger is better. &amp;lt;br/&amp;gt;If the dish is moving, this value always show &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SignalID&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The signal IDHASH of currently tracking signal.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! InterrogationProcess&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| This value only has meaning if the dish has started interrogation to the vessel. &amp;lt;br/&amp;gt;Show&#039;s percentage on the process of the interrogation.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! TargetPadIndex&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current value of target landing pad index, useful if you want to call down the vessel by code.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SizeX&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The length on X axis of the vessel, see [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! SizeZ&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The length on Z axis of the vessel, see [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Reagents&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Total number of reagents inside the device (e.g. 92g of iron = 92).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! MinimumWattsToContract&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The minimum watts required reaching target vessel before one can initiate interrogation. &amp;lt;br/&amp;gt; This is the requirement imposed by the vessel.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! WattsReachingContract&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The current effective watts reached target vessel due to angle setting and dish&#039;s watts output setting.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! ContactTypeId&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The category of the vessel, see [[Trader#ContactTypeID|ContactTypeID]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! BestContactFilter&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Currently locked ContractID, or &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; if not set.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! StackSize&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out the stack Byte count of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! NameHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The hash of the custom name of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! PrefabHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The hash of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Referenceld&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Unique Reference Identifier for this object.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.5888.25957 - Sun 7/9/2025&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Satellite_Dish/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23464</id>
		<title>Kit (Satellite Dish)/Data Network</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23464"/>
		<updated>2025-09-06T18:57:03Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
These are all of the [[Satellite_Dish]] parameter in the game.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:auto; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
=== Input Data (Write) ===&lt;br /&gt;
These are all parameters, that can be written to with different means of using logic.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Turns the device off. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Turns the device on. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Activate&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| If the vessel&#039;s being interrogated, stop interrogating the vessel; or nothing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| If the vessel&#039;s has not been interrogated, start interrogating the vessel. If the vessel has been interrogated, call down the vessel to the TargetPadIndex.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Setting&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ Max watts of device.&lt;br /&gt;
| Set output watts to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Horizontal&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 360&lt;br /&gt;
| Set dish&#039;s horizontal angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Vertical&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 90&lt;br /&gt;
| Set dish&#039;s vertical angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! TargetPadIndex&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Sets the landing pad index for potential call down.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! BestContactFilter&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Lock dish to track the specified ContactIDHash ONLY.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.5888.25957 - Sun 7/9/2025&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Satellite_Dish/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Output Data (Read) ===&lt;br /&gt;
These are all parameters, that can be read by using different means of logic.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| The &amp;lt;b&amp;gt;Dish&amp;lt;/b&amp;gt; is not powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| The &amp;lt;b&amp;gt;Dish&amp;lt;/b&amp;gt; is powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Activate&lt;br /&gt;
| Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Setting&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s output watts.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! Horizontal&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s horizontal angle.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! Vertical&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current dish&#039;s vertical angle.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! RequiredPower&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Idle operating power quantity. Does not include extra power during actual usage. &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Idle&lt;br /&gt;
| Boolean&lt;br /&gt;
| &lt;br /&gt;
| Read out if the dish is not moving.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Idle&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Dish not moving, and not interrogating.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Dish is either moving or interrogating.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Error&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SignalStrength&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The signal strength of currently tracking signal, negative value, larger is better. &amp;lt;br/&amp;gt;If the dish is moving, this value always show &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SignalID&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The signal IDHASH of currently tracking signal.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! InterrogationProcess&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| This value only has meaning if the dish has started interrogation to the vessel. &amp;lt;br/&amp;gt;Show&#039;s percentage on the process of the interrogation.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! TargetPadIndex&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out current value of target landing pad index, useful if you want to call down the vessel by code.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! SizeX&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The length on X axis of the vessel, see [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
! SizeZ&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The length on Z axis of the vessel, see [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Reagents&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Total number of reagents inside the device (e.g. 92g of iron = 92).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! MinimumWattsToContract&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The minimum watts required reaching target vessel before one can initiate interrogation. &amp;lt;br/&amp;gt; This is the requirement imposed by the vessel.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! WattsReachingContract&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The current effective watts reached target vessel due to angle setting and dish&#039;s watts output setting.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! ContactTypeId&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The category of the vessel, see [[Trader#ContactTypeID|ContactTypeID]].&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! BestContactFilter&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Currently locked ContractID, or &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; if not set.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! StackSize&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Read out the stack Byte count of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! NameHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The hash of the custom name of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! PrefabHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The hash of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Referenceld&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Unique Reference Identifier for this object.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.5888.25957 - Sun 7/9/2025&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Satellite_Dish/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23463</id>
		<title>Kit (Satellite Dish)/Data Network</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)/Data_Network&amp;diff=23463"/>
		<updated>2025-09-06T18:25:35Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: Created page with &amp;quot;&amp;lt;noinclude&amp;gt; These are all of the Satellite_Dish parameter in the game. &amp;lt;/noinclude&amp;gt; &amp;lt;div style=&amp;quot;width:auto; overflow:auto;&amp;quot;&amp;gt; === Input Data (Write) === These are all param...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
These are all of the [[Satellite_Dish]] parameter in the game.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:auto; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
=== Input Data (Write) ===&lt;br /&gt;
These are all parameters, that can be written to with different means of using logic.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Turns the device off. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Turns the device on. Also toggles the switch accordingly.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Activate&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| If the vessel&#039;s being interrogated, stop interrogating the vessel; or nothing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| If the vessel&#039;s has not been interrogated, start interrogating the vessel. If the vessel has been interrogated, call down the vessel to the TargetPadIndex.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Setting&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ Max watts of device.&lt;br /&gt;
| Set output watts to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Horizontal&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 360&lt;br /&gt;
| Set dish&#039;s horizontal angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! | Vertical&lt;br /&gt;
| Integer&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0 ~ 90&lt;br /&gt;
| Set dish&#039;s vertical angle to the specified number.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! TargetPadIndex&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Sets the landing pad index for potential call down.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! BestContactFilter&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Lock dish to track the specified ContactID ONLY.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.4677.21598 - Fri 29/12/2023&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Satellite_Dish/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Output Data (Read) ===&lt;br /&gt;
These are all parameters, that can be read by using different means of logic.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Parameter Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Data Type&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Value&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | On&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| The &amp;lt;b&amp;gt;Autolathe&amp;lt;/b&amp;gt; is not powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| The &amp;lt;b&amp;gt;Autolathe&amp;lt;/b&amp;gt; is powered. This is the same as the physical red powerswitch located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Open&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Output of the &amp;lt;b&amp;gt;Autolathe&amp;lt;/b&amp;gt; is closed. This is the same as the physical lever located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Output of the &amp;lt;b&amp;gt;Autolathe&amp;lt;/b&amp;gt; is opened. This is the same as the physical lever located on the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Activate&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| The structure is currently producing nothing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| The structure is currently producing something.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Lock&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| 1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Power&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and O if not.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and O if not.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Error&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Boolean&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 1&lt;br /&gt;
| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! RecipeHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Current hash of the recipe the device is set to produce.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Reagents&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Total number of reagents inside the device (e.g. 92g of iron = 92).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! RequiredPower&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Idle operating power quantity. Does not include extra power demanded during recipe fabrication. &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! CompletionRatio&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| How complete the current production is for this device, between 0 and 1.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! ExportCount&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| How many items exported since last ClearMemory. This count is based on every ouput stack of items (e.g. 1 item and 12g of iron = 2).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! ImportCount&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| How many items imported since last ClearMemory. The count is based on stacks (e.g. 92g of iron in on stack = 1).&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! PrefabHash&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| The hash of the structure.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Referenceld&lt;br /&gt;
| Integer&lt;br /&gt;
| &lt;br /&gt;
| Unique Reference Identifier for this object.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | &amp;lt;i&amp;gt;Update 0.2.4677.21598 - Fri 29/12/2023&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;right&amp;quot;&amp;gt;[[Autolathe/Data Network|/Data_Network]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=23462</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=23462"/>
		<updated>2025-09-06T17:22:46Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add Data Network Properties entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
=== Data Network Properties ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-customtoggle-datanetworkproperties&amp;quot; style=&amp;quot;width:auto; overflow:auto; text-indent:10px; border: 2px solid #253C60; border-radius:10px;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Click here to see/hide all the &amp;lt;span style=&amp;quot;color:#E57125;&amp;quot;&amp;gt;data network properties&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-datanetworkproperties&amp;quot;&amp;gt;&amp;lt;br&amp;gt;{{:Kit_(Satellite_Dish)/Data_Network}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stack Usage ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
The following code is a reference implementation, it only serve the purpose to&lt;br /&gt;
assist you to observe the possibility and help you write your own code.&lt;br /&gt;
You must write your own code to fully enjoy the game.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Advanced_Composter&amp;diff=22745</id>
		<title>Advanced Composter</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Advanced_Composter&amp;diff=22745"/>
		<updated>2025-05-06T09:51:07Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix Mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Taken from Stationeers Stationpedia... &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;quot;the advanced composter creates fertilizer out of organic matter.&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;It accepts food, decayed food, or biomass. It requires water and power to operate, accelerating the natural composting process.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;When processing, it releases Nitrogen and Volatiles, as well as a small amount of heat.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Fertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer&#039;s effects on plants will vary depending on the respective proportions of its ingredients.&amp;quot;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! INGREDIENTS !! EFFECT&lt;br /&gt;
|-&lt;br /&gt;
| Food || Increases Yield up to 2x&lt;br /&gt;
|-&lt;br /&gt;
| [[Decayed food]] || Increases Growth Speed up to 2x&lt;br /&gt;
|-&lt;br /&gt;
| [[Biomass]] || Increases Growth Cycles before the Fertilizer runs out, up to 5x&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Usage:&lt;br /&gt;
* Connect a [[Water|H2O]] pipe with at least 20 mol H2O&lt;br /&gt;
* Connect power&lt;br /&gt;
* Insert at least 3 ingredients into the input slot on the side&lt;br /&gt;
* Turn on the On switch, it will grind the ingredients&lt;br /&gt;
* Point at the panel and it will tell you how many are ready for processing.  You need at least 3 to produce 1 fertilizer&lt;br /&gt;
* Press the Activate button, and it will start processing, including outputting H2 and N2&lt;br /&gt;
* When done processing, a fertilizer will be ejected from the output slot&lt;br /&gt;
More information:&lt;br /&gt;
* Constructed from the [[Kit (Advanced Composter)]] which can be produced in the [[Electronics Printer Mk. II]] (Tier Two)&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&lt;br /&gt;
&lt;br /&gt;
* 3 items of Food or [[Decayed food]] or [[Biomass]]   (it will be consumed in the ratio provided, if there 10 food, 20 biomass: 1 food 2 biomass will be consumed)&lt;br /&gt;
* ~20 moles of [[Water]]&lt;br /&gt;
&lt;br /&gt;
produces&lt;br /&gt;
&lt;br /&gt;
* 1 [[Fertilizer]]&lt;br /&gt;
* 50 moles [[Nitrogen]] (at 45&amp;amp;deg;C)   (updated: 2025-01-21: from 4.9mols to 50)&lt;br /&gt;
* 50 moles [[Volatiles]]&lt;br /&gt;
&lt;br /&gt;
The exact moles consumed or produced is slightly variable.&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|On|Boolean||multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|Error|Boolean|w=0|1 if device is in error state, otherwise 0|multiple=2|0|&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;|1|Error}}&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Advanced Composter is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Activate|Boolean|Set to 1 to start processing.|multiple=2|0|Idle|1|Processing}}&lt;br /&gt;
{{Data Parameters/row|Open|Boolean||multiple=2|0|Closed|1|Open}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Integer|w=0|Number of ingredients currently in the composter.}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|Idle operating power quantity, does not necessarily include extra demand power}}}&lt;br /&gt;
{{Data Parameters/row|ImportCount|Integer|w=0|How many items imported since last ClearMemory}}&lt;br /&gt;
{{Data Parameters/row|ExportCount|Integer|w=0|How many items exported since last ClearMemory}}&lt;br /&gt;
{{Data Parameters/row|ClearMemory|Boolean|r=0|When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned}}&lt;br /&gt;
{{Data Parameters/row|Mode|Integer|If the Composter is grinding|0}}&lt;br /&gt;
{{Data Parameters/row|Setting|Integer|?|50}}&lt;br /&gt;
{{Data Parameters/row|Maximum|Integer|w=0|?|100}}&lt;br /&gt;
{{Data Parameters/row|Ratio|Float|w=0|?|0.5}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure|446212963}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22714</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22714"/>
		<updated>2025-04-22T07:57:51Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix formating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
The following code is a reference implementation, it only serve the purpose to&lt;br /&gt;
assist you to observe the possibility and help you write your own code.&lt;br /&gt;
You must write your own code to fully enjoy the game.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22712</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22712"/>
		<updated>2025-04-22T00:18:43Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
The following code is a reference implementation, it&#039;s not the your resolution.&lt;br /&gt;
You must write your own code to fully enjoy the game.&lt;br /&gt;
The reference implementation is a convenient way for you to observe the process and help you write your own code.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22711</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22711"/>
		<updated>2025-04-22T00:16:53Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add code warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
The following code is a reference implementation, it&#039;s not the your resolution.&lt;br /&gt;
You must write your own code to fully enjoy the game.&lt;br /&gt;
The reference implementation is a convenient way for you to observe the process and help you write your own code.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22707</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22707"/>
		<updated>2025-04-21T04:22:19Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias filterGas r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
move r5 0 # lastSignalID&lt;br /&gt;
mainloop:&lt;br /&gt;
move r8 0 # nextAddress&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID mainloop&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 4&lt;br /&gt;
lbn filterGas HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;FILTER_GAS_SWITCH&amp;quot;) Setting Average&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 8 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
breqz filterGas 3&lt;br /&gt;
or r0 r0 TraderInstruction.FilterGasContains&lt;br /&gt;
jr 2&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
add r8 r8 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 r8 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID r8 r0&lt;br /&gt;
yield&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r0 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq r0 31 ClearMem&lt;br /&gt;
add r0 r0 1&lt;br /&gt;
getd r1 dishMID r0&lt;br /&gt;
and r2 r1 %11111111&lt;br /&gt;
beq r2 2 MetaData1&lt;br /&gt;
beq r2 3 MetaData2&lt;br /&gt;
beq r2 4 MetaData3&lt;br /&gt;
beq r2 7 ThingData&lt;br /&gt;
beq r2 8 ThingData&lt;br /&gt;
beq r2 9 GasData&lt;br /&gt;
beq r2 10 ThingData&lt;br /&gt;
beq r2 11 GasData&lt;br /&gt;
beq r2 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r1 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r1 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r1 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16 # prefab hash&lt;br /&gt;
breqz filterItem 3&lt;br /&gt;
bne filterItem r3 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r1 16&lt;br /&gt;
sgtz r4 filterItem&lt;br /&gt;
and r4 r4 filterGas&lt;br /&gt;
breqz r4 4&lt;br /&gt;
and r4 filterItem r3&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
jal LockSignalID&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
LockSignalID:&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 ra&lt;br /&gt;
beq signalID r5 ra&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move r5 signalID&lt;br /&gt;
j ra&lt;br /&gt;
ClearMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
brge sp prefabMemCount 5&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
bge sp totalMemCount mainloop&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
jr -4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22706</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22706"/>
		<updated>2025-04-21T04:21:34Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add filter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switching filter prefab/gas data, label it &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. First set the &amp;lt;code&amp;gt;FILTER_GAS_SWITCH&amp;lt;/code&amp;gt; to indicate the type of the filter(&amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; is filtering Gas, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; is filtering Prefab), then set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22705</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22705"/>
		<updated>2025-04-21T04:12:58Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: adjust dish power uaage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 60&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
sbn r5 r6 Setting 500&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22699</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22699"/>
		<updated>2025-04-21T01:06:58Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
If you use a brand new IC10 chip for the Trader Filtration IC Housing,&lt;br /&gt;
you still need to initialize the IC10 chip with the code of Shuttle Cargoes Looking Glasses IC Stack Initializer,&lt;br /&gt;
or the stack will be empty as stack is an IC10 property.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22698</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22698"/>
		<updated>2025-04-21T01:01:24Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add commentary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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&#039;t, it just take a few more time to scan with the default Medium Satellite Dish for Close/Medium tier shuttles.&lt;br /&gt;
* 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&#039;t, it just take a few more time to interrogate with the default Medium Satellite Dish for Far tier shuttles.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22697</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22697"/>
		<updated>2025-04-21T00:57:44Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add commentary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* Repurpose the IC Housing of the Looking Glass section, label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the repurposed &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, replacing Looking Glass code(the Lookging Glass&#039;s function is still in the code, plus the filtration function), change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22696</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22696"/>
		<updated>2025-04-21T00:52:45Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: /* Shuttle Cargoes Auto Filtration/Interrogation and Call Down */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance. It&#039;s build on top of Looking Glass structure of the previous section, take caution.&lt;br /&gt;
&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 2 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22695</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22695"/>
		<updated>2025-04-21T00:48:16Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add commentary.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance:&lt;br /&gt;
&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 2 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22694</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22694"/>
		<updated>2025-04-21T00:39:39Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add &amp;quot;Shuttle Cargoes Auto Filtration/Interrogation and Call Down&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
To add Auto Filtration/Interrogation ability, prepare following materials in advance:&lt;br /&gt;
&lt;br /&gt;
* 1 [[Kit_(Logic_Memory)|Logic Memory]], install it and label it &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Console|Console]], install it as Small LED and label it &amp;lt;code&amp;gt;LED_LOCKED_SIGID&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]], install it and label it &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; or a name you like.&lt;br /&gt;
* 2 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]] ready for use.&lt;br /&gt;
* 1 [[Kit_(Logic_Transmitter)|Logic Transmitter]] for sending audio message to your Hardsuit when trader is landing, label it &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt;, pair it with your [[Hardsuit|hardsuit]] in passive mode.&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
Install all things above and power on. For the &amp;lt;code&amp;gt;Trader Filtration IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the &amp;lt;code&amp;gt;DishM&amp;lt;/code&amp;gt;&#039;s name as you like.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
alias nextAddress r8&lt;br /&gt;
alias filterItem r7&lt;br /&gt;
alias signalID r6&lt;br /&gt;
alias lastSignalID r5&lt;br /&gt;
move lastSignalID 0&lt;br /&gt;
mainloop:&lt;br /&gt;
move nextAddress 0&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;) Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 4&lt;br /&gt;
lbn filterItem HASH(&amp;quot;StructureLogicMemory&amp;quot;) HASH(&amp;quot;SLM_ITEM_FILTER&amp;quot;) Setting Average&lt;br /&gt;
breqz filterItem 5 # skip if filter value is 0&lt;br /&gt;
sll r0 filterItem 8&lt;br /&gt;
or r0 r0 TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
add nextAddress nextAddress 1&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
add r1 nextAddress 1&lt;br /&gt;
sll r1 r1 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID nextAddress r0&lt;br /&gt;
yield&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn signalID HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 %11111111&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_CONTACTED&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;) Setting r2&lt;br /&gt;
and r2 r0 $FFFF_000000&lt;br /&gt;
sra r2 r2 24 # lifetime&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LIFETIME&amp;quot;) Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DataEnd&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
DataEnd:&lt;br /&gt;
beqz filterItem DisplayLoop&lt;br /&gt;
seq r4 r3 filterItem&lt;br /&gt;
beqz r4 DisplayLoop&lt;br /&gt;
lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
bgtz r4 DisplayLoop&lt;br /&gt;
beq signalID lastSignalID DisplayLoop&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting signalID&lt;br /&gt;
move lastSignalID signalID&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn HASH(&amp;quot;StructureLogicMemory&amp;quot;) r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;Dish Control IC Housing&amp;lt;/code&amp;gt; code, paste in following code, change the hash of &amp;lt;code&amp;gt;DishS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DishL&amp;lt;/code&amp;gt; names as you have then setted up or not. Search and change the name of &amp;lt;code&amp;gt;Hardsuit LT 1&amp;lt;/code&amp;gt; line if you want to send notification to other devices.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define DishS 0 # if you have small dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
define DishL 0 # if you have large dish, set hash to HASH(&amp;quot;NAME&amp;quot;)&lt;br /&gt;
move r0 0&lt;br /&gt;
reset:&lt;br /&gt;
move r15 r0 # lockedSigID&lt;br /&gt;
move r14 0 # horizontal&lt;br /&gt;
move r13 0 # vertical&lt;br /&gt;
move r12 0 # horizontalEdge1&lt;br /&gt;
move r11 0 # horizontalEdge2&lt;br /&gt;
move r10 0 # verticalEdge1&lt;br /&gt;
move r9 0 # verticalEdge2&lt;br /&gt;
move r8 DishM # commDish&lt;br /&gt;
move r7 HASH(&amp;quot;StructureSatelliteDish&amp;quot;) # commDishType&lt;br /&gt;
move r6 DishM # scanDish&lt;br /&gt;
move r5 r7 # scanDishType&lt;br /&gt;
sbn r5 r6 Vertical 45&lt;br /&gt;
sbn r5 r6 BestContactFilter -1&lt;br /&gt;
mainloop:&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting Average&lt;br /&gt;
lbn r1 r5 r6 SignalID Average&lt;br /&gt;
lbn r2 r5 r6 Horizontal Average&lt;br /&gt;
lbn r3 r5 r6 Vertical Average&lt;br /&gt;
breqz r0 34&lt;br /&gt;
  bne r0 r15 reset&lt;br /&gt;
  lbn r4 HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_TIER&amp;quot;) Setting Average&lt;br /&gt;
  brnez r14 10&lt;br /&gt;
  brge r4 2 5&lt;br /&gt;
    breqz DishS 4&lt;br /&gt;
      move r6 DishS&lt;br /&gt;
      move r5 HASH(&amp;quot;StructureSmallSatelliteDish&amp;quot;)&lt;br /&gt;
      sbn r5 r6 Setting 200&lt;br /&gt;
    breqz DishL 3&lt;br /&gt;
      move r8 DishL&lt;br /&gt;
      move r7 HASH(&amp;quot;StructureLargeSatelliteDish&amp;quot;)&lt;br /&gt;
  sbn r5 r6 BestContactFilter r15&lt;br /&gt;
  sbn r5 r6 On 1&lt;br /&gt;
  beqz r12 ScanHorizontal&lt;br /&gt;
  beqz r11 ScanReverseHorizontal&lt;br /&gt;
  beqz r10 ScanVertical&lt;br /&gt;
  beqz r9 ScanReverseVertical&lt;br /&gt;
  brne r1 -1 3&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
    j reset&lt;br /&gt;
  yield&lt;br /&gt;
  lbn r0 r7 r8 Idle Average&lt;br /&gt;
  breqz r0 -2&lt;br /&gt;
  sbn r7 r8 BestContactFilter r15&lt;br /&gt;
  sbn r7 r8 Setting 50000&lt;br /&gt;
  sbn r7 r8 Activate 1&lt;br /&gt;
  lbn r0 r7 r8 InterrogationProgress Average&lt;br /&gt;
  brlt r0 1 4&lt;br /&gt;
    sleep 2&lt;br /&gt;
    sbn HASH(&amp;quot;StructureLogicTransmitter&amp;quot;) HASH(&amp;quot;Hardsuit LT 1&amp;quot;) SoundAlert 37&lt;br /&gt;
    sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) HASH(&amp;quot;LED_LOCKED_SIGID&amp;quot;) Setting 0&lt;br /&gt;
  j mainloop&lt;br /&gt;
bnez r15 reset&lt;br /&gt;
s db Setting DishM&lt;br /&gt;
breq r6 DishM 2 # enter roaming mode&lt;br /&gt;
sbn r5 r6 On 0&lt;br /&gt;
breq r8 DishM 2&lt;br /&gt;
sbn r7 r8 On 0&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM On 1&lt;br /&gt;
add r2 r2 2&lt;br /&gt;
mod r2 r2 360&lt;br /&gt;
sbn HASH(&amp;quot;StructureSatelliteDish&amp;quot;) DishM Horizontal r2&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanHorizontal:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r12 r14&lt;br /&gt;
  sbn r5 r6 Horizontal r14&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
sub r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseHorizontal:&lt;br /&gt;
brne r1 -1 14&lt;br /&gt;
  beq r14 r12 13&lt;br /&gt;
  move r11 r14&lt;br /&gt;
  slt r4 r11 r12&lt;br /&gt;
  breqz r4 2&lt;br /&gt;
  add r11 r11 360&lt;br /&gt;
  add r4 r11 r12&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  mod r4 r4 360&lt;br /&gt;
  sbn r5 r6 Horizontal r4&lt;br /&gt;
  sbn r7 r8 On 1&lt;br /&gt;
  sbn r7 r8 Horizontal r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r14 r2&lt;br /&gt;
add r4 r2 5&lt;br /&gt;
mod r4 r4 360&lt;br /&gt;
sbn r5 r6 Horizontal r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanVertical:&lt;br /&gt;
brne r1 -1 4&lt;br /&gt;
  move r10 r13&lt;br /&gt;
  sbn r5 r6 Vertical r13&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brge r3 89.9 -4&lt;br /&gt;
add r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
ScanReverseVertical:&lt;br /&gt;
brne r1 -1 10&lt;br /&gt;
  beq r13 r10 9&lt;br /&gt;
  move r9 r13&lt;br /&gt;
  select r9 r9 r9 0.01&lt;br /&gt;
  add r4 r9 r10&lt;br /&gt;
  div r4 r4 2&lt;br /&gt;
  sbn r5 r6 Vertical r4&lt;br /&gt;
  sbn r7 r8 Vertical r4&lt;br /&gt;
  jal 124&lt;br /&gt;
  j mainloop&lt;br /&gt;
move r13 r3&lt;br /&gt;
brle r3 0.1 -8&lt;br /&gt;
sub r4 r3 5&lt;br /&gt;
sbn r5 r6 Vertical r4&lt;br /&gt;
j mainloop&lt;br /&gt;
yield&lt;br /&gt;
lbn r0 r5 r6 Idle Average&lt;br /&gt;
breqz r0 -2&lt;br /&gt;
j ra&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
After two IC setted up, power them on.&lt;br /&gt;
&lt;br /&gt;
The last step is to set the item prefab hash you want. Set the content of [[Kit_(Logic_Memory)|Logic Memory]] named &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to reset the content of &amp;lt;code&amp;gt;SLM_ITEM_FILTER&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or something else after trading.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22666</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22666"/>
		<updated>2025-04-19T05:11:44Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix gasMemCursor init value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor prefabMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22665</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22665"/>
		<updated>2025-04-18T06:25:52Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from the best trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22664</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22664"/>
		<updated>2025-04-18T06:23:40Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from this trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22663</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22663"/>
		<updated>2025-04-18T06:14:18Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from this trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Auto Filtration/Interrogation and Call Down ===&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22662</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22662"/>
		<updated>2025-04-18T06:12:16Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add preview image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from this trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The total setup feels like this &lt;br /&gt;
[[File:2025-04-18-1049x333-scrot.png|Overview of Looking Glass Setup]]&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:2025-04-18-1049x333-scrot.png&amp;diff=22661</id>
		<title>File:2025-04-18-1049x333-scrot.png</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:2025-04-18-1049x333-scrot.png&amp;diff=22661"/>
		<updated>2025-04-18T06:11:00Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;overview of looking glasses&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22660</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22660"/>
		<updated>2025-04-18T06:06:50Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
The Looking Glasses are purely for cargo inspection, no filter, no auto negotiate and call-down.&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from this trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22659</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22659"/>
		<updated>2025-04-18T05:56:39Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add switch control&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data.&lt;br /&gt;
* 6 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(Switch)#Switch|Logic Switch]] for switch trader&#039;s sell/buy data, &amp;lt;code&amp;gt;Open&amp;lt;/code&amp;gt; shows trader&#039;s Buy data, &amp;lt;code&amp;gt;Close&amp;lt;/code&amp;gt; shows trader&#039;s Sell data. Label it &amp;lt;code&amp;gt;TRADER_SELL_BUY_SWITCH&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 6 LED and labeling them: &amp;lt;code&amp;gt;LED_SIGID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIGID:          The LED name, show SignalID.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name, show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name, show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name, show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name, show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIGID HASH(&amp;quot;LED_SIGID&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
define TRADER_BUY_SEEL_SWITCH HASH(&amp;quot;TRADER_SELL_BUY_SWITCH&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
alias sellOrBuy r9&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal WriteStack&lt;br /&gt;
jal Display&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
WriteStack:&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
lbn r0 HASH(&amp;quot;StructureLogicSwitch2&amp;quot;) TRADER_BUY_SEEL_SWITCH Open Average&lt;br /&gt;
brgtz r0 3&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderSellData&lt;br /&gt;
jr 2&lt;br /&gt;
move sellOrBuy TraderInstruction.WriteTraderBuyData&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 sellOrBuy&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Display:&lt;br /&gt;
lbn r1 SSD DishM SignalID Average&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIGID Setting r1&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
DisplayLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 7 ThingData&lt;br /&gt;
beq r1 8 ThingData&lt;br /&gt;
beq r1 9 GasData&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j DisplayLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;closed&amp;lt;/code&amp;gt;, and you will see the items you can sell(trader will buy) from this trader if the logic switch is &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22657</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22657"/>
		<updated>2025-04-18T03:24:47Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix minor typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 5 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 5 LED and labeling them: &amp;lt;code&amp;gt;LED_CON_TYPE_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal Scan&lt;br /&gt;
jal Show&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
Scan:&lt;br /&gt;
#sbn SSD DishM Setting 7500&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderSellData&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Show:&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
ShowLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22656</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22656"/>
		<updated>2025-04-18T03:24:04Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix minor typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 5 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 5 LED and labeling them: &amp;lt;code&amp;gt;LED_SIG_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_CON_TYPE_ID:    The LED name show ContactTypeID.&lt;br /&gt;
# LED_TIER:           The LED name show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_CON_TYPE_ID HASH(&amp;quot;LED_CON_TYPE_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal Scan&lt;br /&gt;
jal Show&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
Scan:&lt;br /&gt;
#sbn SSD DishM Setting 7500&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderSellData&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Show:&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
ShowLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader contact type id&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CON_TYPE_ID Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22655</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22655"/>
		<updated>2025-04-18T03:21:10Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix minor typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 5 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 5 LED and labeling them: &amp;lt;code&amp;gt;LED_SIG_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIG_ID:         The LED name show SignalID.&lt;br /&gt;
# LED_TIER:           The LED name show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIG_ID HASH(&amp;quot;LED_SIG_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishMID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal Scan&lt;br /&gt;
jal Show&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
Scan:&lt;br /&gt;
#sbn SSD DishM Setting 7500&lt;br /&gt;
lbn dishMID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishMID ra&lt;br /&gt;
clrd dishMID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishMID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderSellData&lt;br /&gt;
putd dishMID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Show:&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
ShowLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishMID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader id hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIG_ID Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22653</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22653"/>
		<updated>2025-04-17T22:00:30Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add section: Stack Programming Reference Implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;br /&gt;
&lt;br /&gt;
==Stack Programming Reference Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Shuttle Cargoes Looking Glasses ===&lt;br /&gt;
&lt;br /&gt;
Materials to prepare:&lt;br /&gt;
* A Medium Satellite Dish.&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Console]] display (if there are more Prefabs to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* Any number of [[Kit_(Logic_Memory)|Logic Memories]] for &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Console]] display, (if there are more GasLiquid to display than your number of [[Kit_(Logic_Memory)|Logic Memories]], they will be ignored).&lt;br /&gt;
* Corresponding number of [[Circuitboard|Hash Displays]] and [[Console|Consoles]].&lt;br /&gt;
* 5 [[Console|Console]] for Small LED installation (all will show metadata).&lt;br /&gt;
* 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] and 1 [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
* Install all of the [[Kit_(Logic_Memory)|Logic Memories]].&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Prefab&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;Prefab&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=0&amp;lt;/code&amp;gt;&lt;br /&gt;
* Install corresponding &#039;&#039;&#039;Gas&#039;&#039;&#039; [[Console|Consoles]], insert [[Circuitboard|Hash Displays]], and make sure the [[Circuitboard|Hash Displays]] are set to &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display mode: &amp;lt;code&amp;gt;Mode=1&amp;lt;/code&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# example for setup GasLiquid mode&lt;br /&gt;
ss d0 0 Mode 1 # d0 is console pin&lt;br /&gt;
# or configure all the Consoles in the IcHousing&#039;s subnetwork&lt;br /&gt;
sbs StructureConsole 0 Mode 1&lt;br /&gt;
}}&lt;br /&gt;
* Naming each [[Kit_(Logic_Memory)|Logic Memory]] sequentially for two display types, for example: &amp;lt;code&amp;gt;SLMP1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMP2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;Prefab&#039;&#039;&#039; display, and &amp;lt;code&amp;gt;SLMG1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SLMG2&amp;lt;/code&amp;gt; for &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; display.&lt;br /&gt;
* Manually configure all [[Console|Consoles]] to link to their corresponding [[Kit_(Logic_Memory)|Logic Memories]] with [[Data_Disk|Data Disk]].&lt;br /&gt;
* Install 1 [[Kit_(IC_Housing)|Kit (IC Housing)]] in the same subnetwork and label it &amp;lt;code&amp;gt;Cargo LG IC Housing&amp;lt;/code&amp;gt;, insert a [[Integrated_Circuit_(IC10)|Integrated Circuit (IC10)]].&lt;br /&gt;
* Install 5 LED and labeling them: &amp;lt;code&amp;gt;LED_SIG_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_TIER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_SHUTTLE_TYPE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_WATT_TO_RESOLVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LED_CONTACTED&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reference Implementation:&lt;br /&gt;
&lt;br /&gt;
Next are the code snippets for a setup of 20 &#039;&#039;&#039;Prefab&#039;&#039;&#039; Console and 11 &#039;&#039;&#039;GasLiquid&#039;&#039;&#039; Console looking glass.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses IC Stack Initializer&lt;br /&gt;
&lt;br /&gt;
clr db&lt;br /&gt;
move sp 0&lt;br /&gt;
# Prefab display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMP1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP11&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP12&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP13&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP14&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP15&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP16&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP17&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP18&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP19&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMP20&amp;quot;)&lt;br /&gt;
move r13 sp&lt;br /&gt;
&lt;br /&gt;
# GasLiquid display Logic Memories, add/remove according to your setup.&lt;br /&gt;
push HASH(&amp;quot;SLMG1&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG2&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG3&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG4&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG5&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG6&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG7&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG8&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG9&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG10&amp;quot;)&lt;br /&gt;
push HASH(&amp;quot;SLMG11&amp;quot;)&lt;br /&gt;
move r12 sp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Second snippet is for the second [[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.&lt;br /&gt;
&lt;br /&gt;
There are a few user variables need to modify, please check the in-line comments. Mostly that&#039;s for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.&lt;br /&gt;
&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Shuttle Cargoes Looking Glasses Runtime IC10&lt;br /&gt;
#&lt;br /&gt;
# User variable:&lt;br /&gt;
#&lt;br /&gt;
# DishM:              The Medium Dish hash.&lt;br /&gt;
# LED_SIG_ID:         The LED name show SignalID.&lt;br /&gt;
# LED_TIER:           The LED name show Tier.&lt;br /&gt;
# LED_SHUTTLE_TYPE:   The LED name show Shuttle Type.&lt;br /&gt;
# LED_CONTACTED:      The LED name show if the shuttle has been contacted already.&lt;br /&gt;
define DishM HASH(&amp;quot;Medium Satellite Dish 1&amp;quot;)&lt;br /&gt;
define LED_SIG_ID HASH(&amp;quot;LED_SIG_ID&amp;quot;)&lt;br /&gt;
define LED_TIER HASH(&amp;quot;LED_TIER&amp;quot;)&lt;br /&gt;
define LED_SHUTTLE_TYPE HASH(&amp;quot;LED_SHUTTLE_TYPE&amp;quot;)&lt;br /&gt;
define LED_WATT_TO_RESOLVE HASH(&amp;quot;LED_WATT_TO_RESOLVE&amp;quot;)&lt;br /&gt;
define LED_CONTACTED HASH(&amp;quot;LED_CONTACTED&amp;quot;)&lt;br /&gt;
###############################################################################&lt;br /&gt;
define SSD HASH(&amp;quot;StructureSatelliteDish&amp;quot;)&lt;br /&gt;
define SLM HASH(&amp;quot;StructureLogicMemory&amp;quot;)&lt;br /&gt;
define OpcodeMask %11111111&lt;br /&gt;
alias dishM1ID r15&lt;br /&gt;
alias dishEntryCount r14&lt;br /&gt;
alias prefabMemCount r13&lt;br /&gt;
alias totalMemCount r12&lt;br /&gt;
alias prefabMemCursor r11&lt;br /&gt;
alias gasMemCursor r10&lt;br /&gt;
&lt;br /&gt;
mainloop:&lt;br /&gt;
jal Scan&lt;br /&gt;
jal Show&lt;br /&gt;
jal ClearPrefabMem&lt;br /&gt;
jal ClearGasMem&lt;br /&gt;
sleep 1&lt;br /&gt;
j mainloop&lt;br /&gt;
Scan:&lt;br /&gt;
#sbn SSD DishM1 Setting 7500&lt;br /&gt;
lbn dishM1ID SSD DishM ReferenceId Average&lt;br /&gt;
bnan dishM1ID ra&lt;br /&gt;
clrd dishM1ID&lt;br /&gt;
sll r0 1 8&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderData&lt;br /&gt;
putd dishM1ID 0 r0&lt;br /&gt;
sll r0 30 16&lt;br /&gt;
sll r1 5 8&lt;br /&gt;
or r0 r0 r1&lt;br /&gt;
or r0 r0 TraderInstruction.WriteTraderSellData&lt;br /&gt;
putd dishM1ID 4 r0&lt;br /&gt;
sleep 1&lt;br /&gt;
j ra&lt;br /&gt;
Show:&lt;br /&gt;
move dishEntryCount 0&lt;br /&gt;
move prefabMemCursor 0&lt;br /&gt;
move gasMemCursor totalMemCount&lt;br /&gt;
ShowLoop:&lt;br /&gt;
beq dishEntryCount 31 ra&lt;br /&gt;
add dishEntryCount dishEntryCount 1&lt;br /&gt;
getd r0 dishM1ID dishEntryCount&lt;br /&gt;
and r1 r0 OpcodeMask&lt;br /&gt;
beq r1 2 MetaData1&lt;br /&gt;
beq r1 3 MetaData2&lt;br /&gt;
beq r1 4 MetaData3&lt;br /&gt;
beq r1 10 ThingData&lt;br /&gt;
beq r1 11 GasData&lt;br /&gt;
beq r1 12 ThingData&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData1:&lt;br /&gt;
sra r2 r0 8 # trader id hash&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SIG_ID Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData2:&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000_00000000&lt;br /&gt;
sra r2 r2 24 # contacted&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_CONTACTED Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000_00000000&lt;br /&gt;
sra r2 r2 16 # tier&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_TIER Setting r2&lt;br /&gt;
and r2 r0 %11111111_00000000&lt;br /&gt;
sra r2 r2 8 # shuttle type&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_SHUTTLE_TYPE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
MetaData3:&lt;br /&gt;
and r2 r0 %11111111_11111111_00000000&lt;br /&gt;
sra r2 r2 8 # watts to resolve&lt;br /&gt;
sbn HASH(&amp;quot;StructureConsoleLED5&amp;quot;) LED_WATT_TO_RESOLVE Setting r2&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ThingData:&lt;br /&gt;
get r2 db prefabMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16 # prefab hash&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add prefabMemCursor prefabMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
GasData:&lt;br /&gt;
get r2 db gasMemCursor # memory chip&lt;br /&gt;
sra r3 r0 16&lt;br /&gt;
sbn SLM r2 Setting r3&lt;br /&gt;
add gasMemCursor gasMemCursor 1&lt;br /&gt;
j ShowLoop&lt;br /&gt;
ClearPrefabMem:&lt;br /&gt;
move sp prefabMemCursor&lt;br /&gt;
ClearPrefabMemLoop:&lt;br /&gt;
bge sp prefabMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearPrefabMemLoop&lt;br /&gt;
ClearGasMem:&lt;br /&gt;
move sp gasMemCursor&lt;br /&gt;
ClearGasMemLoop:&lt;br /&gt;
bge sp totalMemCount ra&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0 # memory chip&lt;br /&gt;
sbn SLM r0 Setting -1&lt;br /&gt;
j ClearGasMemLoop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22648</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22648"/>
		<updated>2025-04-17T03:34:59Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-24&lt;br /&gt;
| 23-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22647</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22647"/>
		<updated>2025-04-17T03:33:36Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: reformat metadata payload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 1&lt;br /&gt;
| All bits value in this section is the deplicate of bit 39.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-32&lt;br /&gt;
| 31-24&lt;br /&gt;
| 23-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 2&lt;br /&gt;
| All bits 0.&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
|-&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Segment 3&lt;br /&gt;
| ALl bits 0.&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22641</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22641"/>
		<updated>2025-04-16T14:28:23Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix Buy/Sell Payload OpCode description.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Data type represented as OpCode, one of the OpCode 7, 9, 10, 11.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22640</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22640"/>
		<updated>2025-04-16T14:19:50Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: add WRITE_COUNT=0 meaning.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&amp;lt;br/&amp;gt;WRITE_COUNT=0 means WRITE_COUNT=1.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22639</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22639"/>
		<updated>2025-04-16T14:16:20Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix warning message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated,&lt;br /&gt;
so don&#039;t OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22638</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22638"/>
		<updated>2025-04-16T14:15:37Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: and warning before table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
Warning:&lt;br /&gt;
Internally every tick the stack data will be cleared and regenerated, so don&#039;t overwrite and TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22637</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22637"/>
		<updated>2025-04-16T14:08:29Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix filters address range&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 1-30&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22621</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22621"/>
		<updated>2025-04-07T07:41:41Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix filter applying conditions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can prepend this OP before any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses before a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22620</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22620"/>
		<updated>2025-04-07T00:22:51Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 167.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as bit 47.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22619</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22619"/>
		<updated>2025-04-07T00:19:59Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: change some N/A to meaningful description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as the most significant bit of next section.&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as the most significant bit of next section.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| Every bit&#039;s value is the same as the most significant bit of next section.&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Trader&amp;diff=22569</id>
		<title>Trader</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Trader&amp;diff=22569"/>
		<updated>2025-03-27T06:25:10Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Trading]]&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{Warning|This page currently contains some outdated information.}}&lt;br /&gt;
== About == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[File:Trader Preview.png|800x494px|A Trader]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[Traders]] are NPCs that can be called via a [[Computer]] with a [[Motherboard (Communication)]] installed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;They will buy and sell any kind of object with the player:&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:TraderPanelView.png|400x471px|Trading with a trader]]&lt;br /&gt;
&amp;lt;br&amp;gt;After the player interacts with a [[Trader]], the game will open a GUI where the player will select the item to buy or to sell.&lt;br /&gt;
&amp;lt;br&amp;gt;The same interface is used to tell to the [[Trader]] to depart.&lt;br /&gt;
&lt;br /&gt;
== Trader Tier ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tier !! ID !! MinimumWattsVisible !! WattsToResolve !! MinimumWattsToContact !! SecondsToContact !! LifeTime !! DownTime !! BulkMultiplier !! PlaneChance !! HumanChance&lt;br /&gt;
|-&lt;br /&gt;
| Close || BasicTrader || 0 || 10 || 25-30 || 20-30 || 1200-1260 || 30 || 0.75 || No || No&lt;br /&gt;
|-&lt;br /&gt;
| Medium || MediumTrader || 20 || 100 || 180-200 || 60-120 || 1200-1260 || 30-60 || 1.0 || Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| Far || LargeTrader || 250 || 5000 || 6000-8000 || 400-600 || 1800-1860 || 60-120 || 1.5 || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContactTypeID ==&lt;br /&gt;
&lt;br /&gt;
The ContactTypeID represents the trader type.&lt;br /&gt;
ContactTypeIDs (Size, runway, hangar requirements non applicable):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ContactType !! ContactTypeId !! Traders&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;| OreTrader &lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;| -1374574351&lt;br /&gt;
| More Ore Less&lt;br /&gt;
|-&lt;br /&gt;
| Asteroid Assayers&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Crush&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Gravels&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nuggets&lt;br /&gt;
|-&lt;br /&gt;
| Orbit Ore Oasis&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Stone Supply&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Excavators&lt;br /&gt;
|-&lt;br /&gt;
| Void Vein Vendors&lt;br /&gt;
|-&lt;br /&gt;
| Planetary Pebbles&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| AlloyTrader&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| 54412100&lt;br /&gt;
| All Alloys&lt;br /&gt;
|-&lt;br /&gt;
| Metal Mavens&lt;br /&gt;
|-&lt;br /&gt;
| AstroAlloy Emporium&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Forge&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Metallurgy&lt;br /&gt;
|-&lt;br /&gt;
| OrbitOre Outfitters&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Smelter&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Ingots&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nucleus&lt;br /&gt;
|-&lt;br /&gt;
| Space Alloy Specialists&lt;br /&gt;
|-&lt;br /&gt;
| Star Smelter&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| FoodTrader&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| -82964957&lt;br /&gt;
| Starlight Suppers&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Groceries&lt;br /&gt;
|-&lt;br /&gt;
| Orbiting Organics&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Cuisine&lt;br /&gt;
|-&lt;br /&gt;
| Asteroid Eats&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nibbles&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Snacks&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Ingredients&lt;br /&gt;
|-&lt;br /&gt;
| Space Spices&lt;br /&gt;
|-&lt;br /&gt;
| Void Vegetables&lt;br /&gt;
|-&lt;br /&gt;
| Planetary Produce&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;12&amp;quot;| HydroponicsTrader&lt;br /&gt;
|rowspan=&amp;quot;12&amp;quot;| -1077922067&lt;br /&gt;
| Green Futures&lt;br /&gt;
|-&lt;br /&gt;
| AstroAgronomics&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Sprouts&lt;br /&gt;
|-&lt;br /&gt;
| HydroHarvest Haven&lt;br /&gt;
|-&lt;br /&gt;
| Orbiting Orchards&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Growers&lt;br /&gt;
|-&lt;br /&gt;
| CosmoCrop Connect&lt;br /&gt;
|-&lt;br /&gt;
| Space Sprout Suppliers&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nurturers&lt;br /&gt;
|-&lt;br /&gt;
| Star Seedlings&lt;br /&gt;
|-&lt;br /&gt;
| EcoSphere Essentials&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Irrigation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;| GasTrader&lt;br /&gt;
|rowspan=&amp;quot;10&amp;quot;| -470575659&lt;br /&gt;
| GasForLess&lt;br /&gt;
|-&lt;br /&gt;
| AstroAether&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Clouds&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nectars&lt;br /&gt;
|-&lt;br /&gt;
| Orbiting Oxygens&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Gases&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Steam&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Inhalants&lt;br /&gt;
|-&lt;br /&gt;
| Void Vapors&lt;br /&gt;
|-&lt;br /&gt;
| Space Gas Station&lt;br /&gt;
|-&lt;br /&gt;
| Construction Trader || 175935584 || Build INC&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| LiquidTrader&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;| 135244511&lt;br /&gt;
| Payless Liquids&lt;br /&gt;
|-&lt;br /&gt;
| Frosty Barrels&lt;br /&gt;
|-&lt;br /&gt;
| Cosmic Concoctions&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Gush&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Nectars&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Oceans&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Streams&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Icicles&lt;br /&gt;
|-&lt;br /&gt;
| Void Vessels&lt;br /&gt;
|-&lt;br /&gt;
| Space Springs&lt;br /&gt;
|-&lt;br /&gt;
| Star Sippers&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;9&amp;quot;| HardwareTrader&lt;br /&gt;
|rowspan=&amp;quot;9&amp;quot;| 1325142661&lt;br /&gt;
| Cosmic Tools &amp;amp;amp; More&lt;br /&gt;
|-&lt;br /&gt;
| Galactic Gearworks&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Supplies&lt;br /&gt;
|-&lt;br /&gt;
| OrbitOps Hardware&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Implements&lt;br /&gt;
|-&lt;br /&gt;
| Void Ventures&lt;br /&gt;
|-&lt;br /&gt;
| Asteroid Artisans&lt;br /&gt;
|-&lt;br /&gt;
| Space Spanners&lt;br /&gt;
|-&lt;br /&gt;
| Meteor Mechanics&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;7&amp;quot;| ConsumablesTrader&lt;br /&gt;
|rowspan=&amp;quot;7&amp;quot;| -1650376125&lt;br /&gt;
| AstroMart&lt;br /&gt;
|-&lt;br /&gt;
| Cosmo&#039;s Convenience&lt;br /&gt;
|-&lt;br /&gt;
| StarStop&lt;br /&gt;
|-&lt;br /&gt;
| Nebula Necessities &lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Essentials &lt;br /&gt;
|-&lt;br /&gt;
| Void Vending&lt;br /&gt;
|-&lt;br /&gt;
| Meteor Munchies &lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;| ApplianceTrader&lt;br /&gt;
|rowspan=&amp;quot;8&amp;quot;| -1590718013&lt;br /&gt;
| Galactic Gadgets&lt;br /&gt;
|-&lt;br /&gt;
| Orbitron Appliances&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Systems Store&lt;br /&gt;
|-&lt;br /&gt;
| Space Savvy Solutions&lt;br /&gt;
|-&lt;br /&gt;
| Interstellar Innovations&lt;br /&gt;
|-&lt;br /&gt;
| Void Visions&lt;br /&gt;
|-&lt;br /&gt;
| Asteroid Appliances&lt;br /&gt;
|-&lt;br /&gt;
| Meteor Mechanics&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
Since trading update 5, Landing Pads in Stationeers have changed to give you more choices. Now you can place them on different tiles with different options. The smallest Landing Pad that works is a 3x3 square, and it needs a centerpiece in the middle. When a Trader shuttle arrives, it lands right in the middle of the centerpiece. The [[Landingpad center]] has an arrow showing which way the shuttles come and go. It&#039;s really important to make sure nothing blocks the arrow&#039;s path. That way, the shuttles can move smoothly without any problems. The shuttles usually land and take off at an angle of about 50 to 60 degrees.&lt;br /&gt;
&lt;br /&gt;
Once your Landing Pad is ready, you can check the computer terminal to see what size landing pad each available shuttle needs.&lt;br /&gt;
&lt;br /&gt;
There are six types of shuttles, including small, medium, and large ones, with normal and gas options. Shuttles can either use a runway or make a vertical descent to land. Small shuttles need a 3x3 pad, medium shuttles need a 5x5 pad, and large shuttles need a 6x6 pad. Having different pad sizes lets you trade with more Traders who visit your station. In order to find them you will need larger satellite dishes to send power to the shuttles and planes landing. &lt;br /&gt;
&lt;br /&gt;
If you want to trade with human Traders, you&#039;ll need to create a hangar with air they can breathe. Large shuttles and planes sometimes have human Traders inside. These Traders won&#039;t come out and trade unless there&#039;s air in the hangar. So, make sure you build a pressurized hangar to accommodate them. &lt;br /&gt;
&lt;br /&gt;
=== Appliance Trader ===&lt;br /&gt;
==== Possible Names ====&lt;br /&gt;
* Galactic Gadgets,&lt;br /&gt;
* Orbitron Appliances,&lt;br /&gt;
* Stellar Systems Store,&lt;br /&gt;
* Space Savvy Solutions,&lt;br /&gt;
* Interstellar Innovations,&lt;br /&gt;
* Void Visions,&lt;br /&gt;
* Asteroid Appliances,&lt;br /&gt;
* Meteor Mechanics&lt;br /&gt;
===== Sells =====&lt;br /&gt;
* Microwave,&lt;br /&gt;
* Packaging Machine,&lt;br /&gt;
* Tablet Dock,&lt;br /&gt;
* Desk Lamp Left,&lt;br /&gt;
* Chemistry Station,&lt;br /&gt;
* Laptop,&lt;br /&gt;
* Dynamic Air Conditioner,&lt;br /&gt;
* Weather Station,&lt;br /&gt;
* Dynamic Generator,&lt;br /&gt;
* Dynamic Scrubber,&lt;br /&gt;
* Autolathe Construction Kit (Kit (Autolathe), Iron Sheet x2, Plastic Sheet x2, Cable x2, Screwdriver)&lt;br /&gt;
===== Buys =====&lt;br /&gt;
&lt;br /&gt;
=== General Trader ===&lt;br /&gt;
===== Possible Names =====&lt;br /&gt;
* Cosmo&#039;s Convenience&lt;br /&gt;
* Nebula Necessities&lt;br /&gt;
* Star Stop&lt;br /&gt;
&lt;br /&gt;
==== Sells ====&lt;br /&gt;
* Player can buy: Hand Sanitizer&lt;br /&gt;
* Pill (medical)&lt;br /&gt;
* HEMDroid Repair Kit&lt;br /&gt;
* Box of Spray Cans&lt;br /&gt;
* Box of Chemlights&lt;br /&gt;
* Set of Road Flares&lt;br /&gt;
* Filter (Carbon Dioxide)&lt;br /&gt;
* Water Bottle&lt;br /&gt;
* Cereal Bar&lt;br /&gt;
* Battery Cell (small)&lt;br /&gt;
* Duct Tape&lt;br /&gt;
* Sugar&lt;br /&gt;
* Cocoa Powder&lt;br /&gt;
* Flour&lt;br /&gt;
* Egg Carton&lt;br /&gt;
* Soy Oil&lt;br /&gt;
* Milk&lt;br /&gt;
* Chocolate Bar&lt;br /&gt;
&lt;br /&gt;
==== Buys ====&lt;br /&gt;
* Fuel&lt;br /&gt;
* Water&lt;br /&gt;
&lt;br /&gt;
=== Liquid Trader ===&lt;br /&gt;
==== Names ====&lt;br /&gt;
*Cosmic Concoctions&lt;br /&gt;
*Stellar Steam&lt;br /&gt;
&lt;br /&gt;
==== Sells ====&lt;br /&gt;
* Water&lt;br /&gt;
* Liquid Nitrogen&lt;br /&gt;
* Liquid Oxygen&lt;br /&gt;
* Liquid Volatiles&lt;br /&gt;
* Water Canister&lt;br /&gt;
* Liquid Nitrogen Canister&lt;br /&gt;
* Liquid Volatiles Canister&lt;br /&gt;
* Emergency Water&lt;br /&gt;
&lt;br /&gt;
==== Buys ====&lt;br /&gt;
* Ship Fuel&lt;br /&gt;
* Food Package&lt;br /&gt;
* Cake&lt;br /&gt;
* Empty Liquid Canister&lt;br /&gt;
&lt;br /&gt;
=== Build Inc (3x3) ===&lt;br /&gt;
Player can buy: Pipe Kit, Cable Coil, Glass Sheet, Plastic Sheet, Steel Sheet, Wall Kit, Steel Frame.&lt;br /&gt;
&lt;br /&gt;
Player can sell: Steel Ingot, Solder Ingot, Constantan Ingot, Electrum Ingot, Invar Ingot, Astroloy Ingot&lt;br /&gt;
&lt;br /&gt;
=== Build Inc (7x7 - 15) ===&lt;br /&gt;
Player can buy: Pipe Kit, Cable Coil, Heavy Cable, Glass Sheet, Plastic Sheet, Steel Sheet, Wall Kit, Steel Frame.&lt;br /&gt;
&lt;br /&gt;
Player can sell: Steel Ingot, Solder Ingot, Constantan Ingot, Electrum Ingot, Invar Ingot, Astroloy Ingot, Waspaloy Ingot, Hastelloy Ingot, Inconel Ingot, Stellite Ingot.&lt;br /&gt;
&lt;br /&gt;
=== Gas For Less (3x3) ===&lt;br /&gt;
Player can buy: 100 Moles O2, 100 Moles N2, 100 Moles CO2, 100 Moles H2, 100 Moles X (-$), 100 Moles H2O, 100 Moles N2O, 100 Moles Dirty H2, 100 Moles Steam, Oxygen Canister, Fuel Canister, Water Canister, Nitrogen Canister, Emergency Water&lt;br /&gt;
&lt;br /&gt;
Player can sell: Oxite Ice, Nitrice Ice, Water Ice, Volatile Ice, 100 Moles Volatiles, 100 Moles Oxygen, 100 Moles CO2, Pumpkin Pie.&lt;br /&gt;
&lt;br /&gt;
=== Gas For Less (7x7) ===&lt;br /&gt;
Player can buy: 100 Moles O2, 100 Moles N2, 100 Moles CO2, 100 Moles H2, 100 Moles X (-$), 100 Moles H2O, 100 Moles N2O, 100 Moles Dirty H2, 100 Moles Steam, Oxygen Canister, Fuel Canister, Water Canister, Nitrogen Canister, Emergency Water&lt;br /&gt;
&lt;br /&gt;
Player can sell: Oxite Ice, Nitrice Ice, Water Ice, Volatile Ice, 100 Moles Volatiles, 100 Moles Oxygen, 100 Moles CO2, Heavy Filter (Pollutants).&lt;br /&gt;
&lt;br /&gt;
=== Gas For Less (7x7 - 15) ===&lt;br /&gt;
Player can buy: 100 Moles O2, 100 Moles N2, 100 Moles CO2, 100 Moles H2, 100 Moles X (-$), 100 Moles H2O, 100 Moles N2O, 100 Moles Dirty H2, 100 Moles Steam, Oxygen Canister, Fuel Canister, Water Canister, Nitrogen Canister, Emergency Water&lt;br /&gt;
&lt;br /&gt;
Player can sell: Oxite Ice, Nitrice Ice, Water Ice, Volatile Ice, 100 Moles Volatiles, 100 Moles Oxygen, 100 Moles CO2, Heavy Filter (N2O).&lt;br /&gt;
&lt;br /&gt;
=== Green Futures (3x3) ===&lt;br /&gt;
Player can buy: Fern Seeds, Mushroom Seeds, Corn Seeds, Potato Seeds, Pumpkin Seeds, Rice Seeds, Soybean Seeds, Switchgrass Seeds, Tomato Seeds, Wheat Seeds.&lt;br /&gt;
&lt;br /&gt;
Player can sell: 100 Moles CO2, 100 Moles H2O, Potatoes, Wheat, Rice, Corn, Soybeans, Mushrooms, Tomatoes, Pumpkin, Plant Genetic Analyzer.&lt;br /&gt;
&lt;br /&gt;
=== Green Futures (5x5) ===&lt;br /&gt;
Player can buy: Fern Seeds, Mushroom Seeds, Corn Seeds, Potato Seeds, Pumpkin Seeds, Rice Seeds, Soybean Seeds, Switchgrass Seeds, Tomato Seeds, Wheat Seeds, Darga Fern, Tropical lily.&lt;br /&gt;
&lt;br /&gt;
Player can sell: 100 Moles CO2, 100 Moles H2O, Potatoes, Wheat, Rice, Corn, Soybeans, Mushrooms, Tomatoes, Pumpkin, 100 Moles H2O, 100 Moles Fuel.&lt;br /&gt;
&lt;br /&gt;
=== Green Futures Deluxe (3x3) ===&lt;br /&gt;
&#039;&#039;&#039;This trader is from a mod https://steamcommunity.com/sharedfiles/filedetails/?id=2972295550&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Player can buy: Fern Seeds, Mushroom Seeds, Corn Seeds, Potato Seeds, Pumpkin Seeds, Rice Seeds, Soybean Seeds, Switchgrass Seeds, Tomato Seeds, Wheat Seeds, Winterspawn (Alpha Variant), Hades Flower (Alpha Strain), Darga Fern, Tropical Lily.&lt;br /&gt;
&lt;br /&gt;
Player can sell: 100 Moles CO2, 100 Moles H2O, Potatoes, Wheat, Rice, Corn, Soybeans, Mushrooms, Tomatoes, Pumpkin, 100 Moles Fuel.&lt;br /&gt;
&lt;br /&gt;
=== Green Futures Deluxe (7x7 - 15) ===&lt;br /&gt;
&#039;&#039;&#039;This trader is from a mod https://steamcommunity.com/sharedfiles/filedetails/?id=2972295550&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Player can buy: Fern Seeds, Mushroom Seeds, Corn Seeds, Potato Seeds, Pumpkin Seeds, Rice Seeds, Soybean Seeds, Switchgrass Seeds, Tomato Seeds, Wheat Seeds, Winterspawn (Alpha Variant), Winterspawn (Beta Variant), Alien Mushroom, Tropical Lily.&lt;br /&gt;
&lt;br /&gt;
Player can sell: 100 Moles CO2, 100 Moles H2O, Potatoes, Wheat, Rice, Corn, Soybeans, Mushrooms, Tomatoes, Pumpkin, Plant Genetic Analyzer.&lt;br /&gt;
&lt;br /&gt;
=== More Ore Less (3x3) ===&lt;br /&gt;
Player can buy: Iron Ore, Copper Ore, Silicon Ore, Gold Ore, Coal, Lead Ore, Nickel Ore, Silver Ore, Oxite Ice, Volatile Ice, Unprocessed Ore.&lt;br /&gt;
&lt;br /&gt;
Player can sell: Canned Edamame, Canned Rice Pudding, Tomato Soup, Pumpkin Soup, Corn Soup, 100 Moles Fuel, Hard Mining Backpack.&lt;br /&gt;
&lt;br /&gt;
=== More Ore Less (7x7 - 15) ===&lt;br /&gt;
Player can buy: Iron Ore, Copper Ore, Silicon Ore, Gold Ore, Coal, Lead Ore, Nickel Ore, Silver ore, Oxite, Volatiles, Unprocessed Ore.&lt;br /&gt;
&lt;br /&gt;
Player can sell: Canned Edamame, Canned Rice Pudding, Tomato Soup, Pumpkin Soup, Corn Soup, Fitted-Out HardSuit (Additional Conditions), Hard Mining Backpack.&lt;br /&gt;
&lt;br /&gt;
There are additional 9x9 traders as well in the latest update. The above traders are accurate to the trade update V version. (except for the modded &#039;&#039;Deluxe&#039;&#039; versions.)&lt;br /&gt;
&lt;br /&gt;
== Requirements == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
To call a [[Trader]] the following things are necessary:&lt;br /&gt;
* A [[Landing Pad]] area at least of size 3x3. Bigger landing pad = bigger shuttles up to 6x6.&lt;br /&gt;
* With a [[Landingpad center]]. Mind the arrow for the shuttle approach/departure direction. They tend to approach at a 50 to 60 degree angle towards the pad.&lt;br /&gt;
Directly in touch with a:&lt;br /&gt;
* A [[landingpad Data and Power]]&lt;br /&gt;
Which has a data- and power port. This must be connected with [[cables]] to a cable network with the following attached.&lt;br /&gt;
* A [[Computer]] with a [[Motherboard (Communication)]] installed (to call the [[Trader]]). &lt;br /&gt;
* A [[Satellite Dish]] (for tracking the [[Trader]])&lt;br /&gt;
* A [[Vending Machine]] or [[Vending Machine Refrigerated]].&lt;br /&gt;
Then do the following:&lt;br /&gt;
* Power everything up, and connect on the same network. When using the [[Computer]], you can select which pad and [[Satellite Dish]] you want to utilize. If there is one of each, there is not much to choose from :).&lt;br /&gt;
* Track a [[Trader]] signal with the [[Satellite Dish]]. There are buttons on the [[Satellite Dish]]. If you want to go pro, you can automate it using another computer, but all you need to do simple automation is 2 logic readers, 2 logic writers and two dials. Set one logic reader and writer pair to read one dial, and the other to read the other dial, set one of the logic writers to output the value of the dial to the horizonal (max dial setting 360) and the other logic writer to the vertical setting on the satellite dish (max setting 90). &lt;br /&gt;
* Be sure you turn the power dial up on your satellite to send the signal to the trader ship. This sends the signal faster when negotiating with the trader. This cannot be automated on the smaller satellite dishes as there is no write setting on smaller satellite dishes. (The larger ones may be able to do this, update this if so).&lt;br /&gt;
* You do not have to be perfectly at 0 degrees from the traders when you have their signal as long as you meet the minimum power requirements. (upgrade your satellite dish for more power and smaller ships like the 3x3 can be negotiated from the opposite direction 100+ degrees off) but keep in mind the medium satellite dish can exceed the power rating of low voltage cables and will burn them out if you try to negotiate with more power than the line can hold. You should also consider the other devices on the network as well. &lt;br /&gt;
* Once you have locked a target, negotiate the trader. This will take time depending on your max power output and their ship&#039;s requirements.&lt;br /&gt;
* Once you have negotiated then the landing request option will be available.&lt;br /&gt;
* A trader will NEVER leave your pad until you depart them from the trade window. You can basically hold one hostage if you want but you cannot land anyone else without additional landing pads.&lt;br /&gt;
* Trade with the trader and once you&#039;re done with them, click depart. (No you can&#039;t stow away in their ships, you will just fall out when they warp away.)&lt;br /&gt;
&lt;br /&gt;
== Gas and liquid ==&lt;br /&gt;
If you want to trade gas or liquid, you can use:&lt;br /&gt;
* [[landingpad gas storage]]&lt;br /&gt;
With an appropriate:&lt;br /&gt;
* [[landingpad gas input]]&lt;br /&gt;
* [[landingpad gas output]]&lt;br /&gt;
* [[landingpad liquid input]]&lt;br /&gt;
* [[landingpad liquid output]]&lt;br /&gt;
Input and output modules have pipe connections with their own volume pump (button) to pump in and out gases.&lt;br /&gt;
Buying and selling is done &#039;&#039;&#039;per 100 moles&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Both gas and liquid will store in your [[landingpad gas storage]] tank but must be removed and added by use of the appropriate landing pad atmospherics kits: [[landingpad liquid output]], [[landingpad liquid input]] for liquids and [[landingpad gas output]], [[landingpad gas output]] for gasses. Both will be stored inside [[landingpad gas storage]]. Multiple storage tanks will increase the maximum moles you can store on the pad. These tanks are not insulated so you will need to build a room around the tanks and either vent the world air around it to maintain a vacuum or pressurize it to the holding temperatures you want to keep. At this time there is no way to insulate the pad other than this method. (Update this if you have any additional information or ideas)&lt;br /&gt;
&lt;br /&gt;
Do not forget to &#039;&#039;&#039;flush&#039;&#039;&#039; your [[landingpad gas storage]] using [[landingpad gas output]] or [[landingpad liquid output]] if you want to export a different kind of gas or they will mix in your output line. You can setup a gas capturing system to capture gasses and filter out the various gasses after pumping it off your pad. &lt;br /&gt;
&lt;br /&gt;
In order to sell gasses and liquids to traders, you will need to make sure the &#039;&#039;&#039;gas temperature&#039;&#039;&#039; in the [[landingpad gas storage]] has a comfy temperature prior to pumping it to your pad to trade. The gasses must be pumped in the appropriate temperature before the trader will accept the gas or liquid. Hover over the icon in the sell window to find out what the trader wants the temperature range to be. These vary between gasses.&lt;br /&gt;
&lt;br /&gt;
== Notes == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* For trade a player should have [[Credit Card]] in any slot of his character inventory (isn&#039;t necessary that is placed in the [[Credit Card]] slot of his suit), otherwise any attempt to trade will return an error message with &amp;quot;You do not have enough money to complete this transaction!&amp;quot;.&lt;br /&gt;
* If a character has &#039;&#039;&#039;more than one&#039;&#039;&#039; [[Credit Card]], the trade will use the last in the inventory order.&lt;br /&gt;
* You can connect more than one [[Vending Machine]] or [[Vending Machine Refrigerated]] connected to the same [[Landing Pad]].&lt;br /&gt;
* [[Traders]] will &#039;&#039;&#039;refuse&#039;&#039;&#039; to land (you won&#039;t be able to click the landing button) if there isn&#039;t any [[Vending Machine]] or [[Vending Machine Refrigerated]] connected to the [[Landing Pad]], or if no one is powered.&lt;br /&gt;
* Sell prices are always less than the buy value.&lt;br /&gt;
* Prices of any item depend on the kind of trader.&lt;br /&gt;
* Selling a [[Credit Card]] to a [[Trader]] will &#039;&#039;&#039;ignore&#039;&#039;&#039; the balance within the card. This means that selling a [[Credit Card]] with a balance greater than 0 will cause the player to lose money.&lt;br /&gt;
* During a &#039;&#039;&#039;storm&#039;&#039;&#039;, [[Traders]] can&#039;t land but they can depart. You will receive a prompt if you try to land one during a storm who cannot. Some plane traders can land in storms. The prompt will let you know if they can or cannot, but keep in mind they can crash into your base if they don&#039;t have enough landing space. A runway should be at least 15 - 20 blocks long according to the dev blogs.&lt;br /&gt;
&amp;lt;br&amp;gt; [[Satellite_Tracking|This]] is an example of tracking setup with a [[Integrated Circuit (IC10)]] code for automate the process.&lt;br /&gt;
&amp;lt;br&amp;gt; Alternatively on this [https://www.youtube.com/watch?v=zLMuhO9CLZc Youtube Video] there is a good explanation by Saddamo De Beers. (outdated)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bugs == &lt;br /&gt;
* The [[trader]] will lock and go into a bugged state if you add things to the vending machine after a trader is requested to land. The bug can be seen by the trading GUI not opening (throws a NullReferenceException), save and reload or dismount the [[Landing Pad]] (that will make the [[trader]] depart) will fix the bug.&lt;br /&gt;
&lt;br /&gt;
* NEW with trade update: You can move with the trade window open if you hit your mouse interaction button. Just hold Left ALT to get your mouse back and close the window.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22568</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22568"/>
		<updated>2025-03-26T02:36:03Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22567</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22567"/>
		<updated>2025-03-26T02:34:45Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: fix table width.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22566</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22566"/>
		<updated>2025-03-26T02:30:11Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: testing div.noresize&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;noresize&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22563</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22563"/>
		<updated>2025-03-24T18:46:35Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| [[#Metadata_Payloads|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| [[#Metadata_Payloads|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| [[#Metadata_Payloads|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22562</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22562"/>
		<updated>2025-03-24T18:33:49Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| SHUTTLE_TYPE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| CONTACT_TIER&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| CONTACTED&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactIdHash.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactMetaData.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| OpCode of TraderInstruction.StrongestContactSignalData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22561</id>
		<title>Kit (Satellite Dish)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Satellite_Dish)&amp;diff=22561"/>
		<updated>2025-03-24T13:48:28Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Machines]]&lt;br /&gt;
[[Category:Items]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Satellite Dish)&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
 | image       = [[File:ItemKitSatelliteDish.png]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5g [[Gold]], 10g [[Copper]], 20g [[Steel]], 5g [[Nickel]], 10g [[Solder]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Medium Satellite Dish&lt;br /&gt;
 | image            = [[File:StructureSatelliteDish.png]]&lt;br /&gt;
 | power_usage      = 200W&lt;br /&gt;
 | placed_with_item = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Satellite Dish|Kit (Satellite Dish)]]&lt;br /&gt;
}}&lt;br /&gt;
==Description==&lt;br /&gt;
The Satellite Dish is used together with a [[Computer]] fitted with a [[Motherboard (Communications)]] to allow Interstellar Communications.&lt;br /&gt;
&lt;br /&gt;
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%&lt;br /&gt;
&lt;br /&gt;
== Medium Satellite Dish ==&lt;br /&gt;
After &amp;quot;Big Changes Coming: Terrain Preview, Melting Ice, Modding, &amp;amp; Localization&amp;quot; update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to.&lt;br /&gt;
The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Op_code&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Description&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Valid Address&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits&lt;br /&gt;
! class=&amp;quot;unsortable&amp;quot; | Bits Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 1&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.WriteTraderData&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 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.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.StrongestContactIdHash&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Currently not useful.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| TRADER_ID_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | 3&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | TraderInstruction.StrongestContactMetaData&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Currently not useful.&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| SHUTTLE_TYPE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|SHUTTLE_TYPE]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| CONTACT_TIER&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|CONTACT_TIER]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-31&lt;br /&gt;
| CONTACTED&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|CONTACTED]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.StrongestContactSignalData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Currently not useful.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-23&lt;br /&gt;
| WATTS_TO_RESOLVE&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier |WattsToResolve]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-39&lt;br /&gt;
| LIFETIME&amp;lt;br/&amp;gt;See [[Trader#Trader_Tier|LifeTime]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 5&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderBuyData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;BuyPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;&amp;lt;BuyChildPayload&amp;gt;&amp;lt;BuyPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads|Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 6&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.WriteTraderSellData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total.&amp;lt;br/&amp;gt;If an item contains child items, then it will be expaned inplace.&amp;lt;br/&amp;gt;E.g.: &amp;lt;SellPayload&amp;gt;&amp;lt;SellPayload&amp;gt;&amp;lt;SellChildPayload&amp;gt;&amp;lt;SellPayload&amp;gt;.&amp;lt;br/&amp;gt;See [[#Buy.2FSell_Payloads |Buy/Sell Payloads]], [[#Buy.2FSell_Child_Payloads|Buy/Sell Child Payloads]].&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| WRITE_INDEX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-23&lt;br /&gt;
| WRITE_COUNT&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 8&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 9&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderBuyGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 10&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 11&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellGasData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| GAS_TYPES_BIGFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 12&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.TraderSellThingChildData&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-47&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 13&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 14&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterPrefabHashNotEquals&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching PrefabHash.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| PREFAB_HASH&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 15&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterSortingClassCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching SortingClass.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| SORTING_CLASS&amp;lt;br/&amp;gt;See [[Sorting_Class]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | 16&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | TraderInstruction.FilterQuantityCompare&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Quantity Condition.&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-15&lt;br /&gt;
| CONDITION_OPERATION&amp;lt;br/&amp;gt;0: Equals&amp;lt;br/&amp;gt;1: Greater&amp;lt;br/&amp;gt;2: Less&amp;lt;br/&amp;gt;3: Not Equals&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16-31&lt;br /&gt;
| QUANTITY&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 17&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; | 18&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | TraderInstruction.FilterGasNotContains&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Filter Operation.&amp;lt;br/&amp;gt;User can append this OP after any TraderInstruction.Write* OP to filter writer&#039;s output.&amp;lt;br/&amp;gt;This OP&#039;s effective scope is the last Write* OP and before the next Write* OP.&amp;lt;br/&amp;gt;Multple filter OP can be written to the addresses after a Write* OP to group as a &amp;quot;AND&amp;quot; condition.&amp;lt;br/&amp;gt;This Filter narrows Write* OP&#039;s output to only not matching Gases.&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 0-31&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 0-7&lt;br /&gt;
| Op_code&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8-39&lt;br /&gt;
| GAS_TYPES_BITFLAG&amp;lt;br/&amp;gt;See [[#Gas_Type_BitFlags|Gas_Type_BitFlags]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40-63&lt;br /&gt;
| Unused&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metadata Payloads ===&lt;br /&gt;
&lt;br /&gt;
Since Metadata has 3 addresses, so it&#039;s referenced here as a 24 bytes(192 bits) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 191-168&lt;br /&gt;
| 167-136&lt;br /&gt;
| 135-128&lt;br /&gt;
| 127-96&lt;br /&gt;
| 95-88&lt;br /&gt;
| 87-80&lt;br /&gt;
| 79-72&lt;br /&gt;
| 71-64&lt;br /&gt;
| 63-40&lt;br /&gt;
| 39-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#ContactTypeID|ContactTypeID]]&lt;br /&gt;
| Constant: 2.&lt;br /&gt;
| N/A&lt;br /&gt;
| Contacted&amp;lt;br/&amp;gt;0: false&amp;lt;br/&amp;gt; 1: true&lt;br /&gt;
| Contact Tier: &amp;lt;br/&amp;gt;0: Close&amp;lt;br/&amp;gt;1: Medium&amp;lt;br/&amp;gt;2: Far&lt;br /&gt;
| Shuttle Type: &amp;lt;br/&amp;gt;0:None&amp;lt;br/&amp;gt;1: Small(3x3)&amp;lt;br/&amp;gt;2: SmallGas(3x3)&amp;lt;br/&amp;gt;3: Medium(5x5)&amp;lt;br/&amp;gt;4: MediumGas(5x5)&amp;lt;br/&amp;gt;5: Large(6x6)&amp;lt;br/&amp;gt;6: LargeGas(6x6)&amp;lt;br/&amp;gt;7: MediumPlane(7x7, runway:15)&amp;lt;br/&amp;gt;8: LargePlane(9x9, runway:20)&lt;br /&gt;
| Constant: 3.&lt;br /&gt;
| N/A&lt;br /&gt;
| [[Trader#Trader_Tier|LifeTime]]&lt;br /&gt;
| [[Trader#Trader_Tier|WattsToResolve]]&lt;br /&gt;
| Constant: 4.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| Quantity&amp;lt;br/&amp;gt;This value is truncated so it won&#039;t be greater than 255 although the trader&#039;s Request/Stock is more than 255.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;Which OpCode requested this data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buy/Sell Child Payloads ===&lt;br /&gt;
&lt;br /&gt;
Buy/Sell Payloads are 1 address each, so it&#039;s referenced here as a 8 bytes(64 bit) payload.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 63-48&lt;br /&gt;
| 47-16&lt;br /&gt;
| 15-8&lt;br /&gt;
| 7-0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| N/A&lt;br /&gt;
| PrefabHash/GasTypeBitFlag&lt;br /&gt;
| ChildCount&amp;lt;br/&amp;gt;Counts how many instances of this item appeared as a child item.&amp;lt;br/&amp;gt;Beware it&#039;s not quantity, it&#039;s just a prefab type count.&lt;br /&gt;
| OpCode&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderBuyData, then it&#039;s value is the OpCode of TraderInstruction.TraderBuyThingChildData.&amp;lt;br/&amp;gt;If this data is requested by TraderInstruction.WriteTraderSellData, then it&#039;s value is the OpCode of TraderInstruction.TraderSellThingChildData.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Gas Type BitFlags ===&lt;br /&gt;
&lt;br /&gt;
If the BitFlag equals 0, it&#039;s undefined. If the bit at specific offset is 1, it means the gas contains that component.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! BitsOffset&lt;br /&gt;
| 16&lt;br /&gt;
| 15&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
| 12&lt;br /&gt;
| 11&lt;br /&gt;
| 10&lt;br /&gt;
| 9&lt;br /&gt;
| 8&lt;br /&gt;
| 7&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! Contents&lt;br /&gt;
| PollutedWater&lt;br /&gt;
| LiquidHydrogen&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| LiquidNitrousOxide&lt;br /&gt;
| LiquidPollutant&lt;br /&gt;
| LiquidCarbonDioxide&lt;br /&gt;
| Steam&lt;br /&gt;
| LiquidVolatiles&lt;br /&gt;
| LiquidOxygen&lt;br /&gt;
| LiquidNitrogen&lt;br /&gt;
| NitrousOxide&lt;br /&gt;
| Water&lt;br /&gt;
| Pollutant&lt;br /&gt;
| Volatiles&lt;br /&gt;
| CarbonDioxide&lt;br /&gt;
| Nitrogen&lt;br /&gt;
| Oxygen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Special Gas:&lt;br /&gt;
# Bit 0,1 both set to 1, which is Air.&lt;br /&gt;
# Bit 0,3 both set to 1, which is Fuel.&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22560</id>
		<title>Sorting Class</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22560"/>
		<updated>2025-03-24T13:44:22Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Items]]&lt;br /&gt;
&lt;br /&gt;
= Sorting Class =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:10%;&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Class&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Default&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Kits&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Tools&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Resources&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Food&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Clothing&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Appliances&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Atmospherics&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Storage&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Ores&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Ices&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22559</id>
		<title>Sorting Class</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22559"/>
		<updated>2025-03-24T13:43:55Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Items]]&lt;br /&gt;
&lt;br /&gt;
= Sorting Class =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:10%;&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Class&lt;br /&gt;
|-&lt;br /&gt;
! 0 || Default&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Kits&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Tools&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Resources&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Food&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Clothing&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Appliances&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Atmospherics&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Storage&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Ores&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Ices&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22558</id>
		<title>Sorting Class</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Sorting_Class&amp;diff=22558"/>
		<updated>2025-03-24T13:40:43Z</updated>

		<summary type="html">&lt;p&gt;Lisnaz: Created page with &amp;quot;Category:Items  = Sorting Class =  {| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot; ! ID | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |- ! Class | Default | Kits | Tools | Resource...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Items]]&lt;br /&gt;
&lt;br /&gt;
= Sorting Class =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
| 7&lt;br /&gt;
| 8&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
! Class&lt;br /&gt;
| Default&lt;br /&gt;
| Kits&lt;br /&gt;
| Tools&lt;br /&gt;
| Resources&lt;br /&gt;
| Food&lt;br /&gt;
| Clothing&lt;br /&gt;
| Appliances&lt;br /&gt;
| Atmospherics&lt;br /&gt;
| Storage&lt;br /&gt;
| Ores&lt;br /&gt;
| Ices&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lisnaz</name></author>
	</entry>
</feed>