mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-14 11:42:27 +00:00
* Fixes an issue with tags for mobs not properly being handled correctly and adds logging to admin circuits (#64821) Tags would bug out due to how the 'Save Shell' component would copy all the variables on an object except a few restricted ones, though this proved to be very buggy. The duplicator part has been removed and more proper logging has been added. To compensate for the duplicator part being removed, admin circuit display names will now replace the entire name of the shell. * Fixes an issue with tags for mobs not properly being handled correctly and adds logging to admin circuits Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
/**
|
|
* # Set Variable Component
|
|
*
|
|
* A component that sets a variable on an object
|
|
*/
|
|
/obj/item/circuit_component/set_variable
|
|
display_name = "Set Variable"
|
|
desc = "A component that sets a variable on an object."
|
|
category = "Admin"
|
|
circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL|CIRCUIT_FLAG_ADMIN
|
|
|
|
/// Entity to set variable of
|
|
var/datum/port/input/entity
|
|
|
|
/// Variable name
|
|
var/datum/port/input/variable_name
|
|
|
|
/// New value to set the variable name to.
|
|
var/datum/port/input/new_value
|
|
|
|
|
|
/obj/item/circuit_component/set_variable/populate_ports()
|
|
entity = add_input_port("Target", PORT_TYPE_DATUM)
|
|
variable_name = add_input_port("Variable Name", PORT_TYPE_STRING)
|
|
new_value = add_input_port("New Value", PORT_TYPE_ANY)
|
|
|
|
/obj/item/circuit_component/set_variable/input_received(datum/port/input/port)
|
|
var/atom/object = entity.value
|
|
var/var_name = variable_name.value
|
|
if(!var_name || !object)
|
|
return
|
|
|
|
var/resolved_new_value = new_value.value
|
|
if(islist(resolved_new_value))
|
|
var/list/to_resolve = resolved_new_value
|
|
resolved_new_value = recursive_list_resolve(to_resolve)
|
|
|
|
log_admin_circuit("[parent.get_creator()] set the variable '[var_name]' on [object] to [resolved_new_value].")
|
|
object.vv_edit_var(var_name, resolved_new_value)
|