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:
" var/bname for(var/block in 1 to DNA_SE_LENGTH) if(((block-1)%5)==0) body += "" bname = GLOB.assigned_blocks[block] body += "" body += "
 12345
[block-1]" if(bname) var/bstate=M.dna.GetSEState(block) var/bcolor="[(bstate)?"#006600":"#ff0000"]" body += "[bname][block]" else body += "[block]" 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!