Experimental 1.0.17919
Additions
Add icon to 'Foundation' object type radar filter that is distinct from the foundation unit type icon
Make behavior instruction search also match the English names even in other languages as well as make it ignore spaces (so "canequip" will find "Can Equip")
Make tooltips close by pressing Esc
Changes
Show "Destroyed Object" instead of nothing on a register or behavior value that contains a target reference that has been destroyed
For a bot that isn't connected or without "Deliver Items" set, require items requested by the player via the unit interface to be delivered by an order carrier in the same network (instead of having the bot go pick it up by itself, even across logistics networks)
Clarify register selection category names ('Object Type' became 'Filter Value', 'Value' became 'Label Value')
Behaviors
Find certain instructions by a list alternative names (i.e. "set" or "assign" will also find the 'Copy' instruction)
Instead of stopping a behavior on a crash (i.e. exceeding unlock step limit or call depth), keep it paused so the failure can be inspected in the behavior editor
Rework behavior unlocking: Add extra options to the unlock instruction to allow specifying the instruction limit and 2 modes 'Pause on limit' and 'Continue next tick'
Rework behavior unlocking: When starting a server besides disabling unlocking, a maximum limit of allowed unlocked instructions can be set
New instruction 'Return': For called sub-behaviors with an optional branch name which enables diverting the logic to a different path on the outer call node
Updated instruction 'Divide': Add rounding mode selection and return a second value containing the remainder of the division
Deprecated behavior instruction 'Modulo': Due to Divide now optionally returning the remainder, existing nodes will automatically convert
Updated instruction 'Signal Filter': Add more comparison modes ("Number Any Bit Match", "Number All Bits Match", "Fully Equal", "Data Equal", "Destroyed References")
Updated instruction 'Signal Filter': Rework internal logic and make numerical checks consistent with 'Compare Number' (infinite is larger than anything, not is smaller than anything)
Updated instruction 'Combine': Renamed from 'Combine Register', will be listed when searching for 'Set Number', 'Set Data' or 'Combine Coordinate'
Deprecated instructions: 'Set Number', 'Set Data' or 'Combine Coordinate', will automatically convert into 'Combine'
Updated instruction 'Separate': Renamed from 'Separate Register' will be listed when searching for 'Separate Coordinate',
Updated instruction 'Separate': Add a "Coordinate" output parameter (in addition to the existing separate X/Y parameters)
Deprecated instructions: 'Separate Coordinate', will automatically convert into 'Separate'
Updated instruction 'Compare': Renamed from 'Compare Register' and clarified description
Updated instruction 'Compare Type': Renamed from 'Compare Item' and clarified description
Removed instructions 'Is Unit A' and 'Is a': Will automatically get converted to 'Compare Type'
Added instruction 'Compare Data': Compares the data part (identifier, target reference or coordinate) of two values
Removed instruction 'Compare Unit': Will automatically get converted to 'Compare Data'
Updated instruction 'Stop Behavior': Renamed from "Exit", show in list when searching for 'Exit', 'Abort' or 'Quit'
Updated instruction 'Data Type Switch': Added 'Target Reference' branch pin, make any unused pin continue with 'No Match'
Updated instruction 'Target Type Switch': Renamed from 'Unit Type', added branch pins for Wall/Gate/Foundation/Dropped Item/Resource/Destroyed Object, make any unused pin continue with 'No Match'
Updated instruction 'Is Empty': Will no longer match a target reference that has been destroyed
Removed behavior instruction 'Get Unit Type': Will automatically get converted to equivalent 'Get Type'
Fixed instruction 'Count Items': Avoid behavior aborting when called with a target reference that doesn't have an inventory (i.e. wall)
Updated instruction 'Switch': Add selection for comparison mode, variable number of cases with "Add/Remove Case" buttons
Updated instruction 'Equip Component': Add optional arguments for a specific socket (allows swapping) and remote unit
Removed instruction 'Equip Component Remotely': Will automatically get converted to 'Equip Component'
Updated instruction 'Unequip Component': Add optional arguments for a specific inventory slot (allows swapping) and remote unit
Removed instruction 'Unequip Component Remotely': Will automatically get converted to 'Unequip Component'
Updated instruction 'Produce Unit': Add optional argument to specify the production component, add Unit argument to specify an adjacent unit/building to operate on, add output argument to return the working component (usable for 'Wait Component')
Updated instruction 'Loop Producers': Clear output if not looping once
Updated instruction 'Random Coordinate': Avoid behavior stopping and logging of error with a negative range
Updated instruction 'Check Space for Item': Clarify that besides an item identifier, a target reference to a resource node, dropped item or dockable unit can be passed
Updated instruction 'Get Space for Item': Make input accept the same types of values as 'Check Space for Item'
Updated instruction 'Get Grid Efficiency': Use grid at outer structure when called for a docked unit
Updated instruction 'Get Battery': Avoid behavior stopping and logging of error when querying Current or Max with a non-existing Unit input
Updated instruction 'Get Unit Info': Output an empty value when calling with a non-existing Unit input (instead of leaving an existing value in the output variable/parameter)
Updated instruction 'Get Unit Power Info': Output an empty value instead of the number zero when calling with a non-existing Unit input
Updated instruction 'Get Max Stack': Return empty when querying a non-item (i.e. color value)
Updated instruction 'Loop Inventory Slots': Clear all outputs if not looping once
Updated instruction 'Inventory Total': Fix help explanation
Updated instruction 'Get Location': Output an empty value when calling with a non-existing Unit input
Updated instruction 'Get Offset': Output an empty value when calling with an invalid input
Updated instruction 'Read Key': Output an empty value when calling with an invalid input
Updated instruction 'Look At': Avoid behavior stopping and logging of error with a non-existing Unit input
Updated instruction 'Set to Component Remotely': Report failure when trying to set a non-existing or read only register index
Updated instruction 'Get from Component Remotely': Report failure when trying to set a non-existing or read only register index
Updated instruction 'Memory Set': Output an empty value when calling with an invalid input
Updated instruction 'Memory Remove': Output an empty value when calling with an invalid input
Updated instruction 'Loop Memory': Clear outputs if not looping once
Updated instruction 'Get Unit At': For a tile with multiple things in it, prefer a flying unit like a drone over everything and a construction site over dropped items
Fix instruction 'Mine': Fix behavior stopping unexpectedly when specifying an amount when the unit already has enough in its inventory
Fix instruction 'Mine': Fix "Cannot Mine" branch not being taken on invalid inputs
Updated instruction 'Mine': Accept dropped items as input if a miner can handle it
Updated instruction 'Mine': Only modify miner components capable of mining the requested resource
Fix instruction 'Get Unit Info': Fix querying "Move and Fire" returning nothing (now returns 0 or 1)
Fix instruction 'Get Unit Info': Fix querying "Charge Time" returning the value multiplied by 25 (now is correct and gets rounded to nearest number of seconds)
Updated instruction 'Wait Ticks': Accept input 'infinite' to wait forever (i.e. to wait for an event)
Fixes
Disallow locating hidden enemy units by using shift+click on a register
Fix multiplayer game potentially going out of sync if a player joins quickly after a bot carrying out an order had its movement towards a teleporter aborted
Fix modifying component registers while having multiple units selected causing more network traffic than needed
For buildings that aren't square with a center tile (anything but 1x1 or 3x3), fix placing units coming out of it by always preferring a free tile closest to the building
Fix logging Lua error after pressing "Clear All" in the memory viewer of the behavior editor
In behavior editor, don't automatically hide an extra option when clearing its value
More nicely vertically align text labels to their connection pins in the behavior editor
Fix long behavior parameter name not getting truncated in the small register box used for parameters 5 to 10
Fix order carriers (including item transporter buildings) sometimes trying to pick from a nearby building instead of using items already held by the carrier (which can fail if the inventory is full which can cause certain item-transporter-only production block setups to never proceed) (regression from ver. 0.1.15341)
Fix Scout Radar component providing fast visibility revealing without power use if the component is equipped and unequipped quickly
Show an error message when trying to store a storage component into one of its own inventory slots
Show an error message when trying to swap a component into an inventory slot locked to another component
Fix game crash when using the 'Follow Camera' function and the followed unit/building gets destroyed (regression of patch 1.0.17832)
Fix logging of Lua error when unequipping a Radar component
Modding
Remove raw_is_empty and RawEqual from the register lua meta object as the regular is_empty and equality operator now always checks the value as is (entity and raw_entity continue to exist and work as before)
When a tooltip callback returns nil, make it so the game will show a tooltip of something higher up in the layout tree
Update Lua documentation: Document that functions with a faction type argument can also get passed any entity, component or item slot from which the faction will be used from
The rules regarding the OrderItem functions have changed. ManualOrder will no longer automatically equip a component unless the new AutoEquipComponent is specified. And, not specifying ManualOrder will no longer reduce the requested amount by any existing amounts (going forward the caller will have to reduce the requested amount if desired).
Reminder that Experimental is exactly that, back up your saves!
[dynamiclink href="https://store.steampowered.com/news/app/1450900/view/663861845817295646"]