diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 99a626eb903..7db04db7aae 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -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 = "Options for [our_key]" body += "Options panel for [M]" 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 += "\[" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]\]" + body += "\[" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]\]" body += "
BYOND account registration date: [M.client.byondacc_date || "ERROR"] [M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "" : ""]([M.client.byondacc_age] days old)[M.client.byondacc_age <= GLOB.configuration.general.byond_account_age_threshold ? "" : ""]" body += "
BYOND client version: [M.client.byond_version].[M.client.byond_build]" body += "
Global Ban DB Lookup: [GLOB.configuration.url.centcom_ban_db_url ? "Lookup" : "Disabled"]" + body += "
Check for client modification" body += "
" if(isnewplayer(M)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " body += "

\[ " - body += "LOGS - " - body += "VV - " + body += "LOGS - " + body += "VV - " body += "[ADMIN_TP(M,"TP")] - " if(M.client) body += "PM - " body += "[ADMIN_SM(M,"SM")] - " if(ishuman(M) && M.mind) - body += "HM - " + body += "HM - " body += "[admin_jump_link(M)] - " - body += "SEND ALERT\]
" + body += "SEND ALERT\]
" body += "Mob type: [M.type]
" if(M.client) if(length(M.client.related_accounts_cid)) @@ -129,9 +132,9 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) if(M.ckey) body += "Enabled AntagHUD: [M.has_ahudded() ? "TRUE" : "false"]
" body += "Roundstart observer: [M.is_roundstart_observer() ? "true" : "false"]
" - body += "Kick | " - body += "Ban | " - body += "Jobban | " + body += "Kick | " + body += "Ban | " + body += "Jobban | " body += "Notes | " if(GLOB.configuration.url.forum_playerinfo_url) body += "WebInfo | " @@ -142,18 +145,18 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) else body += "Add to Watchlist " - body += "| Prison | " - body += "\ Send back to Lobby | " - body += "\ Erase Flavor Text | " - body += "\ Use Random Name | " + body += "| Prison | " + body += "\ Send back to Lobby | " + body += "\ Erase Flavor Text | " + body += "\ Use Random Name | " body += {"
Mute: - \[IC | - OOC | - PRAY | - ADMINHELP | - DEADCHAT | - EMOTE] - (toggle all) + \[IC | + OOC | + PRAY | + ADMINHELP | + DEADCHAT | + EMOTE] + (toggle all) "} var/jumptoeye = "" @@ -162,23 +165,23 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) if(A.client && A.eyeobj) // No point following clientless AI eyes jumptoeye = " (Eye)" body += {"

- Jump to[jumptoeye] | - Get | - Send To + Jump to[jumptoeye] | + Get | + Send To

[check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ] - Narrate to | + Narrate to | [ADMIN_SM(M,"Subtle message")] "} if(check_rights(R_EVENT, 0)) - body += {" | Bless | Smite"} + body += {" | Bless | Smite"} if(isLivingSSD(M)) if(istype(M.loc, /obj/machinery/cryopod)) - body += {" | De-Spawn "} + body += {" | De-Spawn "} else - body += {" | Cryo "} + body += {" | Cryo "} if(M.client) if(!isnewplayer(M)) @@ -190,38 +193,38 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) if(issmall(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(is_ai(M)) body += "Is an AI " else if(ishuman(M)) - body += {"Make AI | - Make Robot | - Make Alien | - Make Slime | - Make Superhero | + body += {"Make AI | + Make Robot | + Make Alien | + Make Slime | + Make Superhero | "} //Simple Animals if(isanimal_or_basicmob(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " if(isobserver(M)) - body += "Re-incarnate | " + body += "Re-incarnate | " if(ispAI(M)) body += "Is a pAI " else - body += "Make pAI | " + body += "Make pAI | " // 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 += "[bname][block]" + body += "[bname][block]" else body += "[block]" body+="" @@ -244,42 +247,42 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) body += {"

Rudimentary transformation:
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.

- Observer | - \[ Alien: Drone, - Hunter, - Queen, - Sentinel, - Larva \] - Human - \[ slime: Baby, - Adult \] - Monkey | - Cyborg | - Cat | - Runtime | - Corgi | - Ian | - Crab | - Coffee | - \[ Construct: Armoured , - Builder , - Wraith \] - Shade + Observer | + \[ Alien: Drone, + Hunter, + Queen, + Sentinel, + Larva \] + Human + \[ slime: Baby, + Adult \] + Monkey | + Cyborg | + Cat | + Runtime | + Corgi | + Ian | + Crab | + Coffee | + \[ Construct: Armoured , + Builder , + Wraith \] + Shade "} if(M.client) body += {"

Other actions:
- Forcesay | - Admin Room | - Thunderdome 1 | - Thunderdome 2 | - Thunderdome Admin | - Thunderdome Observer | - Stop Syndicate Jail Timer | - Start Syndicate Jail Timer | - Release now from Syndicate Jail | + Forcesay | + Admin Room | + Thunderdome 1 | + Thunderdome 2 | + Thunderdome Admin | + Thunderdome Observer | + Stop Syndicate Jail Timer | + Start Syndicate Jail Timer | + Release now from Syndicate Jail | "} body += {"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 95b5762cc36..cb353198acd 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -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(