mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-25 17:12:12 +00:00
* Fixes display of appearance type in VV (#78725) ## About The Pull Request Appearance vars are awful to detect. They have a type var you can access, for an appearance the value of this var is `/image`. However `istype(appearance, /image) == 0`. This is good enough for identification, you might think this just means detecting appearance would be something like `if(thing.type == /image && !istype(thing, /image))`, but there's a problem with this: `istype(appearance, /datum) == 0`. For that matter it seems like all istypes that check if an appearance is some type fail, so you can't know that it's safe to access the `.type` var to do that earlier combined check. Now we get into magic territory, `istype(new /image, appearance) == 1`. I have no clue internally why this is the case but it seems to be unique to appearances, and so can be used to identify them from a previously unknown var. You have to rule out that the thing you're checking is a path, it would pass the check if the value were `/image` then, but this is simple enough. I hate having to know all this, so now you know this too. 🆑 ninjanomnom admin: Appearance vars in VV now display instead of being left blank /🆑 * Fixes display of appearance type in VV --------- Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
62 lines
2.3 KiB
Plaintext
62 lines
2.3 KiB
Plaintext
/datum/proc/CanProcCall(procname)
|
|
return TRUE
|
|
|
|
/datum/proc/can_vv_get(var_name)
|
|
return TRUE
|
|
|
|
/// Called when a var is edited with the new value to change to
|
|
/datum/proc/vv_edit_var(var_name, var_value)
|
|
if(var_name == NAMEOF(src, vars))
|
|
return FALSE
|
|
vars[var_name] = var_value
|
|
datum_flags |= DF_VAR_EDITED
|
|
return TRUE
|
|
|
|
/datum/proc/vv_get_var(var_name)
|
|
switch(var_name)
|
|
if (NAMEOF(src, vars))
|
|
return debug_variable(var_name, list(), 0, src)
|
|
return debug_variable(var_name, vars[var_name], 0, src)
|
|
|
|
/datum/proc/can_vv_mark()
|
|
return TRUE
|
|
|
|
/**
|
|
* Gets all the dropdown options in the vv menu.
|
|
* When overriding, make sure to call . = ..() first and appent to the result, that way parent items are always at the top and child items are further down.
|
|
* Add seperators by doing VV_DROPDOWN_OPTION("", "---")
|
|
*/
|
|
/datum/proc/vv_get_dropdown()
|
|
SHOULD_CALL_PARENT(TRUE)
|
|
|
|
. = list()
|
|
VV_DROPDOWN_OPTION("", "---")
|
|
VV_DROPDOWN_OPTION(VV_HK_CALLPROC, "Call Proc")
|
|
VV_DROPDOWN_OPTION(VV_HK_MARK, "Mark Object")
|
|
VV_DROPDOWN_OPTION(VV_HK_TAG, "Tag Datum")
|
|
VV_DROPDOWN_OPTION(VV_HK_DELETE, "Delete")
|
|
VV_DROPDOWN_OPTION(VV_HK_EXPOSE, "Show VV To Player")
|
|
VV_DROPDOWN_OPTION(VV_HK_ADDCOMPONENT, "Add Component/Element")
|
|
VV_DROPDOWN_OPTION(VV_HK_REMOVECOMPONENT, "Remove Component/Element")
|
|
VV_DROPDOWN_OPTION(VV_HK_MASS_REMOVECOMPONENT, "Mass Remove Component/Element")
|
|
VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRAITS, "Modify Traits")
|
|
|
|
/**
|
|
* This proc is only called if everything topic-wise is verified. The only verifications that should happen here is things like permission checks!
|
|
* href_list is a reference, modifying it in these procs WILL change the rest of the proc in topic.dm of admin/view_variables!
|
|
* This proc is for "high level" actions like admin heal/set species/etc/etc. The low level debugging things should go in admin/view_variables/topic_basic.dm incase this runtimes.
|
|
*/
|
|
/datum/proc/vv_do_topic(list/href_list)
|
|
if(!usr || !usr.client || !usr.client.holder || !check_rights(NONE))
|
|
return FALSE //This is VV, not to be called by anything else.
|
|
if(SEND_SIGNAL(src, COMSIG_VV_TOPIC, usr, href_list) & COMPONENT_VV_HANDLED)
|
|
return FALSE
|
|
if(href_list[VV_HK_MODIFY_TRAITS])
|
|
usr.client.holder.modify_traits(src)
|
|
return TRUE
|
|
|
|
/datum/proc/vv_get_header()
|
|
. = list()
|
|
if(("name" in vars) && !isatom(src))
|
|
. += "<b>[vars["name"]]</b><br>"
|