mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
* Build Mode Preview + better help text (#76095) ## About The Pull Request Gives `Adv Build Mode` and `Fill` an item preview, and puts the help text for build mode modes into an examine block. https://github.com/tgstation/tgstation/assets/66640614/6751c721-6ddd-4761-8311-fb002ea905ac   ## Why It's Good For The Game It's good to see what you're doing. ## Changelog 🆑 Tattle admin: build mode help text is in an examine block admin: adv build mode and fill now have item previews /🆑 --------- Co-authored-by: tattle <article.disaster@ gmail.com> Co-authored-by: san7890 <the@ san7890.com> * Build Mode Preview + better help text --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: tattle <article.disaster@ gmail.com> Co-authored-by: san7890 <the@ san7890.com>
50 lines
2.0 KiB
Plaintext
50 lines
2.0 KiB
Plaintext
/datum/buildmode_mode/proccall
|
|
key = "proccall"
|
|
///The procedure itself, which we will call in the future. For example "qdel"
|
|
var/proc_name = null
|
|
///The list of arguments for the procedure. They may not be. They are selected in the same way in the game, and can be a datum, and other types.
|
|
var/list/proc_args = null
|
|
|
|
/datum/buildmode_mode/proccall/show_help(client/builder)
|
|
to_chat(builder, span_purple(examine_block(
|
|
"[span_bold("Choose procedure and arguments")] -> Right Mouse Button on buildmode button\n\
|
|
[span_bold("Apply procedure on object")] -> Left Mouse Button on machinery"))
|
|
)
|
|
|
|
/datum/buildmode_mode/proccall/change_settings(client/target_client)
|
|
if(!check_rights_for(target_client, R_DEBUG))
|
|
return
|
|
|
|
proc_name = input("Proc name, eg: fake_blood", "Proc:", null) as text|null
|
|
if(!proc_name)
|
|
return
|
|
|
|
proc_args = target_client.get_callproc_args()
|
|
if(!proc_args)
|
|
return
|
|
|
|
/datum/buildmode_mode/proccall/handle_click(client/target_client, params, datum/object as null|area|mob|obj|turf)
|
|
if(!proc_name || !proc_args)
|
|
tgui_alert(target_client, "Undefined ProcCall or arguments.")
|
|
return
|
|
|
|
if(!hascall(object, proc_name))
|
|
to_chat(target_client, span_warning("Error: callproc_datum(): type [object.type] has no proc named [proc_name]."), confidential = TRUE)
|
|
return
|
|
|
|
if(!is_valid_src(object))
|
|
to_chat(target_client, span_warning("Error: callproc_datum(): owner of proc no longer exists."), confidential = TRUE)
|
|
return
|
|
|
|
|
|
var/msg = "[key_name(target_client)] called [object]'s [proc_name]() with [proc_args.len ? "the arguments [list2params(proc_args)]":"no arguments"]."
|
|
log_admin(msg)
|
|
message_admins(msg)
|
|
admin_ticket_log(object, msg)
|
|
SSblackbox.record_feedback("tally", "admin_verb", 1, "Atom ProcCall") // If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
|
|
|
|
var/returnval = WrapAdminProcCall(object, proc_name, proc_args) // Pass the lst as an argument list to the proc
|
|
. = target_client.get_callproc_returnval(returnval, proc_name)
|
|
if(.)
|
|
to_chat(target_client, ., confidential = TRUE)
|