Files
Bubberstation/code/modules/buildmode/submodes/proccall.dm
Aylong 7a817300fd Improve and extend fieldset_block and examine_block (#88678)
## About The Pull Request
Maked `fieldset_block` and `examine_block` more stylish and neat, also
`fieldset_block` no longer has a centred title.
Renamed `examine_block` to `boxed_message` and adds
`custom_boxed_message` which can be colored.

- AdminPMs, admin tickets and vote results has been wrapped into
`fieldset_block` for comfort and visibility
- Health Analyzer results painted to blue
- Vote notice and tips of the round wrapped to purple
`custom_boxed_message`
- Tooltip text border color, now uses text color, not just white

## Why It's Good For The Game
Demonstration in both themes

<details><summary>Dark</summary>


![image](https://github.com/user-attachments/assets/7175379b-b053-4fb7-bd25-65c744a21c56)

![image](https://github.com/user-attachments/assets/1728e72b-0110-4b81-9d61-8779f5fdc3a0)

![image](https://github.com/user-attachments/assets/5e6f9604-35b8-4840-b6b4-35a68f49a997)

</details>

<details><summary>Light</summary>


![image](https://github.com/user-attachments/assets/6a3d693b-e0dc-4a4b-b4d7-2ded54ce0d67)

![image](https://github.com/user-attachments/assets/c4f5e089-180f-4d13-806a-fa64f01740a3)

![image](https://github.com/user-attachments/assets/a46d52c4-ad37-4637-8cae-c4b00139efc1)

</details>

## Changelog

🆑
qol: AdminPMs, admin tickets, vote results and started vote notification
are now much more visible in the chat.
qol: Boxed messages in chat (like examine), has been restyled.
/🆑
2024-12-24 11:32:38 -08:00

50 lines
1.9 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(boxed_message(
"[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)
BLACKBOX_LOG_ADMIN_VERB("Atom ProcCall")
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)