USER_CONTEXT_MENU(show_player_panel, R_ADMIN|R_MOD, "\[Admin\] Show Player Panel", mob/M)
if(!M)
to_chat(client, "You seem to be selecting a mob that doesn't exist anymore.")
return
var/our_key = M.key
if(M.client && M.client.holder)
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)
body += " played by [M.client] "
if(check_rights(R_PERMISSIONS, FALSE))
body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\] "
else if(M.client.holder && M.client.holder.fakekey && M.client.holder.big_brother)
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 += "
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 += "
\[ "
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 += "[admin_jump_link(M)] - "
body += "SEND ALERT\]
"
body += "Mob type: [M.type]
"
if(M.client)
if(length(M.client.related_accounts_cid))
body += "Related accounts by CID: [jointext(M.client.related_accounts_cid, " - ")]
"
if(length(M.client.related_accounts_ip))
body += "Related accounts by IP: [jointext(M.client.related_accounts_ip, " - ")]
"
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 += "Notes | "
if(GLOB.configuration.url.forum_playerinfo_url)
body += "WebInfo | "
if(M.client)
if(M.client.watchlisted)
body += "Remove from Watchlist | "
body += "Edit Watchlist Reason "
else
body += "Add to Watchlist "
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)
"}
var/jumptoeye = ""
if(is_ai(M))
var/mob/living/silicon/ai/A = M
if(A.client && A.eyeobj) // No point following clientless AI eyes
jumptoeye = " (Eye)"
body += {"
Jump to[jumptoeye] |
Get |
Send To
[check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ]
Narrate to |
[ADMIN_SM(M,"Subtle message")]
"}
if(check_rights(R_EVENT, 0))
body += {" | Bless | Smite"}
if(isLivingSSD(M))
if(istype(M.loc, /obj/machinery/cryopod))
body += {" | De-Spawn "}
else
body += {" | Cryo "}
if(M.client)
if(!isnewplayer(M))
body += "
"
body += "Transformation:"
body += "
"
//Monkey
if(issmall(M))
body += "Monkeyized | "
else
body += "Monkeyize | "
//Corgi
if(iscorgi(M))
body += "Corgized | "
else
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 |
"}
//Simple Animals
if(isanimal_or_basicmob(M))
body += "Re-Animalize | "
else
body += "Animalize | "
if(isobserver(M))
body += "Re-incarnate | "
if(ispAI(M))
body += "Is a pAI "
else
body += "Make pAI | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
body += "
"
body += "DNA Blocks:
| | 1 | 2 | 3 | 4 | 5 | "
var/bname
for(var/block in 1 to DNA_SE_LENGTH)
if(((block-1)%5)==0)
body += "
|---|
| [block-1] | "
bname = GLOB.assigned_blocks[block]
body += ""
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "[bname][block]"
else
body += "[block]"
body+=" | "
body += "
|---|
"
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
"}
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 |
"}
body += {"
"}
client << browse(body, "window=adminplayeropts;size=550x615")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Player Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!