Files
Aurora.3/code/modules/admin/buildmode/edit.dm
Matt Atlas 14d7425cee Expanded admin powers for full moderators. (#20522)
- Full moderators can now use rejuvenate.
- Full moderators can now spawn atoms.
- Full moderators can now remove/add languages.
- Full moderators can now teleport mobs.
- Repurposes R_BAN into a generic permission that full moderators and
above have, and locks teleport behind it.

None of these powers may be used for round-altering purposes. Pending
review by the head admin and the host.

To-do: check that Borealis and permissions in general don't explode with
these changes.

---------

Co-authored-by: realmattatlas <liermattia@gmail.com>
2025-03-04 17:02:49 +00:00

83 lines
2.9 KiB
Plaintext

/datum/build_mode/edit
name = "Edit"
icon_state = "buildmode3"
permission_requirement = R_ADMIN
var/var_to_edit = "name"
var/value_to_set = "derp"
/datum/build_mode/edit/Destroy()
ClearValue()
. = ..()
/datum/build_mode/edit/Help()
to_chat(user, SPAN_NOTICE("***********************************************************"))
to_chat(user, SPAN_NOTICE("Right Click on Build Mode Button = Select var & value"))
to_chat(user, SPAN_NOTICE("Left Click = Sets the var's value"))
to_chat(user, SPAN_NOTICE("Right Click = Reset the var's value"))
to_chat(user, SPAN_NOTICE("***********************************************************"))
/datum/build_mode/edit/Configurate()
var/var_name = input("Enter variable name:", "Name", var_to_edit) as text|null
if(!var_name)
return
var/thetype = input("Select variable type:", "Type") as null|anything in list("text","number","mob-reference","obj-reference","turf-reference")
if(!thetype) return
var/new_value
switch(thetype)
if("text")
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as text|null
if("number")
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as num|null
if("mob-reference")
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|mob in GLOB.mob_list
if("obj-reference")
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|obj in world
if("turf-reference")
new_value = input(usr,"Enter variable value:" ,"Value", value_to_set) as null|turf in world
if(var_name && new_value)
var_to_edit = var_name
SetValue(new_value)
/datum/build_mode/edit/OnClick(var/atom/A, var/list/parameters)
if(var_to_edit in VVlocked)
if(!check_rights(R_DEBUG)) return
if(var_to_edit in VVckey_edit)
if(!check_rights(R_DEBUG)) return
if(var_to_edit in VVicon_edit_lock)
if(!check_rights(R_FUN|R_DEBUG)) return
if(!(var_to_edit in A.vars))
to_chat(user, SPAN_WARNING("\The [A] does not have a var '[var_to_edit]'"))
return
var/old_value = A.vars[var_to_edit]
var/new_value
if(parameters["left"])
new_value = value_to_set
if(parameters["right"])
new_value = initial(A.vars[var_to_edit])
if(old_value == new_value)
return
A.vars[var_to_edit] = new_value
to_chat(user, SPAN_NOTICE("Changed the value of [var_to_edit] from '[old_value]' to '[new_value]'."))
Log("[log_info_line(A)] - [var_to_edit] - [old_value] -> [new_value]")
/datum/build_mode/edit/proc/SetValue(var/new_value)
if(value_to_set == new_value)
return
ClearValue()
value_to_set = new_value
RegisterSignal(value_to_set, COMSIG_QDELETING, /datum/build_mode/edit/proc/ClearValue)
/datum/build_mode/edit/proc/ClearValue(var/feedback)
if(!istype(value_to_set, /datum))
return
UnregisterSignal(value_to_set, COMSIG_QDELETING)
value_to_set = initial(value_to_set)
if(feedback)
Warn("The selected reference value was deleted. Default value restored.")