[s] Testing stuff (#30572)

* Testing stuff

* lints
This commit is contained in:
AffectedArc07
2025-09-28 20:20:32 +01:00
committed by GitHub
parent 3cc5de1a94
commit 77ee842926
2 changed files with 104 additions and 69 deletions
+72 -69
View File
@@ -85,6 +85,8 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
if(M.client.holder.fakekey && M.client.holder.big_brother)
our_key = M.client.holder.fakekey
var/mob_uid = M.UID()
var/body = "<html><meta charset='UTF-8'><head><title>Options for [our_key]</title></head>"
body += "<body>Options panel for <b>[M]</b>"
if(M.client)
@@ -95,30 +97,31 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
body += "\[Player\] "
else
body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\] "
body += "\[<A href='byond://?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
body += "\[<A href='byond://?_src_=holder;getplaytimewindow=[mob_uid]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
body += "<br>BYOND account registration date: [M.client.byondacc_date || "ERROR"] [M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "<b>" : ""]([M.client.byondacc_age] days old)[M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "</b>" : ""]"
body += "<br>BYOND client version: [M.client.byond_version].[M.client.byond_build]"
body += "<br>Global Ban DB Lookup: [GLOB.configuration.url.centcom_ban_db_url ? "<a href='byond://?_src_=holder;open_ccbdb=[M.client.ckey]'>Lookup</a>" : "<i>Disabled</i>"]"
body += "<br><a href='byond://?_src_=holder;clientmodcheck=[M.client.UID()]'>Check for client modification</a>"
body += "<br>"
if(isnewplayer(M))
body += " <B>Hasn't Entered Game</B> "
else
body += " \[<A href='byond://?_src_=holder;revive=[M.UID()]'>Heal</A>\] "
body += " \[<A href='byond://?_src_=holder;revive=[mob_uid]'>Heal</A>\] "
body += "<br><br>\[ "
body += "<a href='byond://?_src_=holder;open_logging_view=[M.UID()];'>LOGS</a> - "
body += "<a href='byond://?_src_=vars;Vars=[M.UID()]'>VV</a> - "
body += "<a href='byond://?_src_=holder;open_logging_view=[mob_uid];'>LOGS</a> - "
body += "<a href='byond://?_src_=vars;Vars=[mob_uid]'>VV</a> - "
body += "[ADMIN_TP(M,"TP")] - "
if(M.client)
body += "<a href='byond://?src=[usr.UID()];priv_msg=[M.client.ckey]'>PM</a> - "
body += "[ADMIN_SM(M,"SM")] - "
if(ishuman(M) && M.mind)
body += "<a href='byond://?_src_=holder;HeadsetMessage=[M.UID()]'>HM</a> - "
body += "<a href='byond://?_src_=holder;HeadsetMessage=[mob_uid]'>HM</a> - "
body += "[admin_jump_link(M)] - "
body += "<a href='byond://?_src_=holder;adminalert=[M.UID()]'>SEND ALERT</a>\]</b><br>"
body += "<a href='byond://?_src_=holder;adminalert=[mob_uid]'>SEND ALERT</a>\]</b><br>"
body += "<b>Mob type:</b> [M.type]<br>"
if(M.client)
if(length(M.client.related_accounts_cid))
@@ -129,9 +132,9 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
if(M.ckey)
body += "<b>Enabled AntagHUD</b>: [M.has_ahudded() ? "<b><font color='red'>TRUE</font></b>" : "false"]<br>"
body += "<b>Roundstart observer</b>: [M.is_roundstart_observer() ? "<b>true</b>" : "false"]<br>"
body += "<A href='byond://?_src_=holder;boot2=[M.UID()]'>Kick</A> | "
body += "<A href='byond://?_src_=holder;newban=[M.UID()];dbbanaddckey=[M.ckey]'>Ban</A> | "
body += "<A href='byond://?_src_=holder;jobban2=[M.UID()];dbbanaddckey=[M.ckey]'>Jobban</A> | "
body += "<A href='byond://?_src_=holder;boot2=[mob_uid]'>Kick</A> | "
body += "<A href='byond://?_src_=holder;newban=[mob_uid];dbbanaddckey=[M.ckey]'>Ban</A> | "
body += "<A href='byond://?_src_=holder;jobban2=[mob_uid];dbbanaddckey=[M.ckey]'>Jobban</A> | "
body += "<A href='byond://?_src_=holder;shownoteckey=[M.ckey]'>Notes</A> | "
if(GLOB.configuration.url.forum_playerinfo_url)
body += "<A href='byond://?_src_=holder;webtools=[M.ckey]'>WebInfo</A> | "
@@ -142,18 +145,18 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
else
body += "<A href='byond://?_src_=holder;watchadd=[M.ckey]'>Add to Watchlist</A> "
body += "| <A href='byond://?_src_=holder;sendtoprison=[M.UID()]'>Prison</A> | "
body += "\ <A href='byond://?_src_=holder;sendbacktolobby=[M.UID()]'>Send back to Lobby</A> | "
body += "\ <A href='byond://?_src_=holder;eraseflavortext=[M.UID()]'>Erase Flavor Text</A> | "
body += "\ <A href='byond://?_src_=holder;userandomname=[M.UID()]'>Use Random Name</A> | "
body += "| <A href='byond://?_src_=holder;sendtoprison=[mob_uid]'>Prison</A> | "
body += "\ <A href='byond://?_src_=holder;sendbacktolobby=[mob_uid]'>Send back to Lobby</A> | "
body += "\ <A href='byond://?_src_=holder;eraseflavortext=[mob_uid]'>Erase Flavor Text</A> | "
body += "\ <A href='byond://?_src_=holder;userandomname=[mob_uid]'>Use Random Name</A> | "
body += {"<br><b>Mute: </b>
\[<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_IC]'><font color='[check_mute(M.client.ckey, MUTE_IC) ? "red" : "#6685f5"]'>IC</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_OOC]'><font color='[check_mute(M.client.ckey, MUTE_OOC) ? "red" : "#6685f5"]'>OOC</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_PRAY]'><font color='[check_mute(M.client.ckey, MUTE_PRAY) ? "red" : "#6685f5"]'>PRAY</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ADMINHELP]'><font color='[check_mute(M.client.ckey, MUTE_ADMINHELP) ? "red" : "#6685f5"]'>ADMINHELP</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_DEADCHAT]'><font color='[check_mute(M.client.ckey, MUTE_DEADCHAT) ?" red" : "#6685f5"]'>DEADCHAT</font></a> |
<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_EMOTE]'><font color='[check_mute(M.client.ckey, MUTE_EMOTE) ?" red" : "#6685f5"]'>EMOTE</font></a>]
(<A href='byond://?_src_=holder;mute=[M.UID()];mute_type=[MUTE_ALL]'><font color='[check_mute(M.client.ckey, MUTE_ALL) ? "red" : "#6685f5"]'>toggle all</font></a>)
\[<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_IC]'><font color='[check_mute(M.client.ckey, MUTE_IC) ? "red" : "#6685f5"]'>IC</font></a> |
<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_OOC]'><font color='[check_mute(M.client.ckey, MUTE_OOC) ? "red" : "#6685f5"]'>OOC</font></a> |
<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_PRAY]'><font color='[check_mute(M.client.ckey, MUTE_PRAY) ? "red" : "#6685f5"]'>PRAY</font></a> |
<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_ADMINHELP]'><font color='[check_mute(M.client.ckey, MUTE_ADMINHELP) ? "red" : "#6685f5"]'>ADMINHELP</font></a> |
<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_DEADCHAT]'><font color='[check_mute(M.client.ckey, MUTE_DEADCHAT) ?" red" : "#6685f5"]'>DEADCHAT</font></a> |
<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_EMOTE]'><font color='[check_mute(M.client.ckey, MUTE_EMOTE) ?" red" : "#6685f5"]'>EMOTE</font></a>]
(<A href='byond://?_src_=holder;mute=[mob_uid];mute_type=[MUTE_ALL]'><font color='[check_mute(M.client.ckey, MUTE_ALL) ? "red" : "#6685f5"]'>toggle all</font></a>)
"}
var/jumptoeye = ""
@@ -162,23 +165,23 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
if(A.client && A.eyeobj) // No point following clientless AI eyes
jumptoeye = " <b>(<A href='byond://?_src_=holder;jumpto=[A.eyeobj.UID()]'>Eye</A>)</b>"
body += {"<br><br>
<A href='byond://?_src_=holder;jumpto=[M.UID()]'><b>Jump to</b></A>[jumptoeye] |
<A href='byond://?_src_=holder;getmob=[M.UID()]'>Get</A> |
<A href='byond://?_src_=holder;sendmob=[M.UID()]'>Send To</A>
<A href='byond://?_src_=holder;jumpto=[mob_uid]'><b>Jump to</b></A>[jumptoeye] |
<A href='byond://?_src_=holder;getmob=[mob_uid]'>Get</A> |
<A href='byond://?_src_=holder;sendmob=[mob_uid]'>Send To</A>
<br><br>
[check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ]
<A href='byond://?_src_=holder;narrateto=[M.UID()]'>Narrate to</A> |
<A href='byond://?_src_=holder;narrateto=[mob_uid]'>Narrate to</A> |
[ADMIN_SM(M,"Subtle message")]
"}
if(check_rights(R_EVENT, 0))
body += {" | <A href='byond://?_src_=holder;Bless=[M.UID()]'>Bless</A> | <A href='byond://?_src_=holder;Smite=[M.UID()]'>Smite</A>"}
body += {" | <A href='byond://?_src_=holder;Bless=[mob_uid]'>Bless</A> | <A href='byond://?_src_=holder;Smite=[mob_uid]'>Smite</A>"}
if(isLivingSSD(M))
if(istype(M.loc, /obj/machinery/cryopod))
body += {" | <A href='byond://?_src_=holder;cryossd=[M.UID()]'>De-Spawn</A> "}
body += {" | <A href='byond://?_src_=holder;cryossd=[mob_uid]'>De-Spawn</A> "}
else
body += {" | <A href='byond://?_src_=holder;cryossd=[M.UID()]'>Cryo</A> "}
body += {" | <A href='byond://?_src_=holder;cryossd=[mob_uid]'>Cryo</A> "}
if(M.client)
if(!isnewplayer(M))
@@ -190,38 +193,38 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
if(issmall(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='byond://?_src_=holder;monkeyone=[M.UID()]'>Monkeyize</A> | "
body += "<A href='byond://?_src_=holder;monkeyone=[mob_uid]'>Monkeyize</A> | "
//Corgi
if(iscorgi(M))
body += "<B>Corgized</B> | "
else
body += "<A href='byond://?_src_=holder;corgione=[M.UID()]'>Corgize</A> | "
body += "<A href='byond://?_src_=holder;corgione=[mob_uid]'>Corgize</A> | "
//AI / Cyborg
if(is_ai(M))
body += "<B>Is an AI</B> "
else if(ishuman(M))
body += {"<A href='byond://?_src_=holder;makeai=[M.UID()]'>Make AI</A> |
<A href='byond://?_src_=holder;makerobot=[M.UID()]'>Make Robot</A> |
<A href='byond://?_src_=holder;makealien=[M.UID()]'>Make Alien</A> |
<A href='byond://?_src_=holder;makeslime=[M.UID()]'>Make Slime</A> |
<A href='byond://?_src_=holder;makesuper=[M.UID()]'>Make Superhero</A> |
body += {"<A href='byond://?_src_=holder;makeai=[mob_uid]'>Make AI</A> |
<A href='byond://?_src_=holder;makerobot=[mob_uid]'>Make Robot</A> |
<A href='byond://?_src_=holder;makealien=[mob_uid]'>Make Alien</A> |
<A href='byond://?_src_=holder;makeslime=[mob_uid]'>Make Slime</A> |
<A href='byond://?_src_=holder;makesuper=[mob_uid]'>Make Superhero</A> |
"}
//Simple Animals
if(isanimal_or_basicmob(M))
body += "<A href='byond://?_src_=holder;makeanimal=[M.UID()]'>Re-Animalize</A> | "
body += "<A href='byond://?_src_=holder;makeanimal=[mob_uid]'>Re-Animalize</A> | "
else
body += "<A href='byond://?_src_=holder;makeanimal=[M.UID()]'>Animalize</A> | "
body += "<A href='byond://?_src_=holder;makeanimal=[mob_uid]'>Animalize</A> | "
if(isobserver(M))
body += "<A href='byond://?_src_=holder;incarn_ghost=[M.UID()]'>Re-incarnate</a> | "
body += "<A href='byond://?_src_=holder;incarn_ghost=[mob_uid]'>Re-incarnate</a> | "
if(ispAI(M))
body += "<B>Is a pAI</B> "
else
body += "<A href='byond://?_src_=holder;makePAI=[M.UID()]'>Make pAI</A> | "
body += "<A href='byond://?_src_=holder;makePAI=[mob_uid]'>Make pAI</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
@@ -236,7 +239,7 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "<A href='byond://?_src_=holder;togmutate=[M.UID()];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
body += "<A href='byond://?_src_=holder;togmutate=[mob_uid];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
@@ -244,42 +247,42 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE)
body += {"<br><br>
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='byond://?_src_=holder;simplemake=observer;mob=[M.UID()]'>Observer</A> |
\[ Alien: <A href='byond://?_src_=holder;simplemake=drone;mob=[M.UID()]'>Drone</A>,
<A href='byond://?_src_=holder;simplemake=hunter;mob=[M.UID()]'>Hunter</A>,
<A href='byond://?_src_=holder;simplemake=queen;mob=[M.UID()]'>Queen</A>,
<A href='byond://?_src_=holder;simplemake=sentinel;mob=[M.UID()]'>Sentinel</A>,
<A href='byond://?_src_=holder;simplemake=larva;mob=[M.UID()]'>Larva</A> \]
<A href='byond://?_src_=holder;simplemake=human;mob=[M.UID()]'>Human</A>
\[ slime: <A href='byond://?_src_=holder;simplemake=slime;mob=[M.UID()]'>Baby</A>,
<A href='byond://?_src_=holder;simplemake=adultslime;mob=[M.UID()]'>Adult</A> \]
<A href='byond://?_src_=holder;simplemake=monkey;mob=[M.UID()]'>Monkey</A> |
<A href='byond://?_src_=holder;simplemake=robot;mob=[M.UID()]'>Cyborg</A> |
<A href='byond://?_src_=holder;simplemake=cat;mob=[M.UID()]'>Cat</A> |
<A href='byond://?_src_=holder;simplemake=runtime;mob=[M.UID()]'>Runtime</A> |
<A href='byond://?_src_=holder;simplemake=corgi;mob=[M.UID()]'>Corgi</A> |
<A href='byond://?_src_=holder;simplemake=ian;mob=[M.UID()]'>Ian</A> |
<A href='byond://?_src_=holder;simplemake=crab;mob=[M.UID()]'>Crab</A> |
<A href='byond://?_src_=holder;simplemake=coffee;mob=[M.UID()]'>Coffee</A> |
\[ Construct: <A href='byond://?_src_=holder;simplemake=constructarmoured;mob=[M.UID()]'>Armoured</A> ,
<A href='byond://?_src_=holder;simplemake=constructbuilder;mob=[M.UID()]'>Builder</A> ,
<A href='byond://?_src_=holder;simplemake=constructwraith;mob=[M.UID()]'>Wraith</A> \]
<A href='byond://?_src_=holder;simplemake=shade;mob=[M.UID()]'>Shade</A>
<A href='byond://?_src_=holder;simplemake=observer;mob=[mob_uid]'>Observer</A> |
\[ Alien: <A href='byond://?_src_=holder;simplemake=drone;mob=[mob_uid]'>Drone</A>,
<A href='byond://?_src_=holder;simplemake=hunter;mob=[mob_uid]'>Hunter</A>,
<A href='byond://?_src_=holder;simplemake=queen;mob=[mob_uid]'>Queen</A>,
<A href='byond://?_src_=holder;simplemake=sentinel;mob=[mob_uid]'>Sentinel</A>,
<A href='byond://?_src_=holder;simplemake=larva;mob=[mob_uid]'>Larva</A> \]
<A href='byond://?_src_=holder;simplemake=human;mob=[mob_uid]'>Human</A>
\[ slime: <A href='byond://?_src_=holder;simplemake=slime;mob=[mob_uid]'>Baby</A>,
<A href='byond://?_src_=holder;simplemake=adultslime;mob=[mob_uid]'>Adult</A> \]
<A href='byond://?_src_=holder;simplemake=monkey;mob=[mob_uid]'>Monkey</A> |
<A href='byond://?_src_=holder;simplemake=robot;mob=[mob_uid]'>Cyborg</A> |
<A href='byond://?_src_=holder;simplemake=cat;mob=[mob_uid]'>Cat</A> |
<A href='byond://?_src_=holder;simplemake=runtime;mob=[mob_uid]'>Runtime</A> |
<A href='byond://?_src_=holder;simplemake=corgi;mob=[mob_uid]'>Corgi</A> |
<A href='byond://?_src_=holder;simplemake=ian;mob=[mob_uid]'>Ian</A> |
<A href='byond://?_src_=holder;simplemake=crab;mob=[mob_uid]'>Crab</A> |
<A href='byond://?_src_=holder;simplemake=coffee;mob=[mob_uid]'>Coffee</A> |
\[ Construct: <A href='byond://?_src_=holder;simplemake=constructarmoured;mob=[mob_uid]'>Armoured</A> ,
<A href='byond://?_src_=holder;simplemake=constructbuilder;mob=[mob_uid]'>Builder</A> ,
<A href='byond://?_src_=holder;simplemake=constructwraith;mob=[mob_uid]'>Wraith</A> \]
<A href='byond://?_src_=holder;simplemake=shade;mob=[mob_uid]'>Shade</A>
"}
if(M.client)
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='byond://?_src_=holder;forcespeech=[M.UID()]'>Forcesay</A> |
<A href='byond://?_src_=holder;aroomwarp=[M.UID()]'>Admin Room</A> |
<A href='byond://?_src_=holder;tdome1=[M.UID()]'>Thunderdome 1</A> |
<A href='byond://?_src_=holder;tdome2=[M.UID()]'>Thunderdome 2</A> |
<A href='byond://?_src_=holder;tdomeadmin=[M.UID()]'>Thunderdome Admin</A> |
<A href='byond://?_src_=holder;tdomeobserve=[M.UID()]'>Thunderdome Observer</A> |
<A href='byond://?_src_=holder;contractor_stop=[M.UID()]'>Stop Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_start=[M.UID()]'>Start Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_release=[M.UID()]'>Release now from Syndicate Jail</A> |
<A href='byond://?_src_=holder;forcespeech=[mob_uid]'>Forcesay</A> |
<A href='byond://?_src_=holder;aroomwarp=[mob_uid]'>Admin Room</A> |
<A href='byond://?_src_=holder;tdome1=[mob_uid]'>Thunderdome 1</A> |
<A href='byond://?_src_=holder;tdome2=[mob_uid]'>Thunderdome 2</A> |
<A href='byond://?_src_=holder;tdomeadmin=[mob_uid]'>Thunderdome Admin</A> |
<A href='byond://?_src_=holder;tdomeobserve=[mob_uid]'>Thunderdome Observer</A> |
<A href='byond://?_src_=holder;contractor_stop=[mob_uid]'>Stop Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_start=[mob_uid]'>Start Syndicate Jail Timer</A> |
<A href='byond://?_src_=holder;contractor_release=[mob_uid]'>Release now from Syndicate Jail</A> |
"}
body += {"<br>
+32
View File
@@ -3630,6 +3630,38 @@
var/mob/about_to_be_banned = locateUID(href_list["adminalert"])
usr.client.cmd_admin_alert_message(about_to_be_banned)
else if(href_list["clientmodcheck"])
if(!check_rights(R_ADMIN))
return
var/client/C = locateUID(href_list["clientmodcheck"])
if(!isclient(C))
return
var/client_is_member = C.IsByondMember()
var/byond_is_member = FALSE
var/list/client_byond_data = C.retrieve_byondacc_data()
if(!length(client_byond_data))
alert(src, "BYOND is down so we cant check this - oops")
return
if("general" in client_byond_data)
var/list/general = client_byond_data["general"]
if("is_member" in general)
byond_is_member = (general["is_member"] == "1") // We want to check if the value is EXACTLY "1" - do not TRUE this or shorten the expression
if(!client_is_member && !byond_is_member)
alert(usr, "Client [C.ckey] is unlikely to be using a modified client\nNot member on client or BYOND servers")
else if(client_is_member && byond_is_member)
alert(usr, "Client [C.ckey] is unlikely to be using a modified client\nBYOND member on client and BYOND servers")
else if(!client_is_member && byond_is_member)
alert(usr, "Client [C.ckey] is unlikely to be using a modified client\nBYOND member on server but not BYOND servers - possibly hidden donor status")
else if(client_is_member && !byond_is_member)
alert(usr, "Client [C.ckey] MAY BE USING A MODIFIED CLIENT\nBYOND member on client but not BYOND servers\nNote that their membership may have just expired")
else
alert(usr, "Client [C.ckey] had a membership that didnt make sense (C: [client_is_member] | B: [byond_is_member])\nInform AA please")
else if(href_list["spawnjsondatum"])
// Get the name and JSON to spawn
var/datum/db_query/dbq = SSdbcore.NewQuery("SELECT slotname, slotjson FROM json_datum_saves WHERE ckey=:ckey AND id=:id", list(