var/list/admin_verbs = list( 1 = list( // LEVEL_BABBY, goat fart, ayn rand's armpit /client/proc/cmd_admin_say, /client/proc/cmd_admin_gib_self, ), 2 = list( // LEVEL_MOD, moderator /client/proc/admin_changes, /client/proc/admin_play, /client/proc/admin_observe, /client/proc/game_panel, new/client/proc/game_panel(null, "Secrets", "bring back secrets 2016"), /client/proc/player_panel, /client/proc/cmd_admin_view_playernotes, /client/proc/toggle_pray, /client/proc/cmd_whois, /client/proc/cmd_admin_pm, /client/proc/dsay, /client/proc/blobsay, /client/proc/dronesay, /client/proc/hivesay, /client/proc/marsay, /client/proc/flocksay, /client/proc/toggle_hearing_all_looc, /client/proc/cmd_admin_prison_unprison, /client/proc/cmd_admin_playermode, /datum/admins/proc/announce, /datum/admins/proc/toggleooc, /datum/admins/proc/togglelooc, /datum/admins/proc/toggleoocdead, /datum/admins/proc/startnow, /datum/admins/proc/toggleAI, /datum/admins/proc/delay_start, /datum/admins/proc/delay_end, /client/proc/cmd_admin_subtle_message, /client/proc/cmd_admin_alert, /client/proc/toggle_banlogin_announcements, /client/proc/toggle_jobban_announcements, /client/proc/toggle_popup_verbs, /client/proc/toggle_server_toggles_tab, /client/proc/toggle_attack_messages, /client/proc/toggle_hear_prayers, /client/proc/cmd_admin_plain_message, /client/proc/cmd_admin_check_vehicle, /client/proc/change_admin_prefs, /client/proc/cmd_boot, /client/proc/enableDrunkMode, /client/proc/forceDrunkMode, /client/proc/cmd_unshame_cube, /client/proc/cmd_shame_cube, /client/proc/removeSelf, /client/proc/toggle_station_name_changing, /client/proc/cmd_admin_remove_label_from, /client/proc/cmd_admin_antag_popups, ), 3 = list( // LEVEL_SA, secondary administrator /client/proc/stealth, /datum/admins/proc/pixelexplosion, /datum/admins/proc/camtest, /client/proc/alt_key, /client/proc/create_portal, /datum/admins/proc/togglefarting, /client/proc/cmd_admin_show_ai_laws, /client/proc/cmd_admin_reset_ai, /verb/restart_the_fucking_server_i_mean_it, /client/proc/cmd_admin_forceallsay, /client/proc/cmd_admin_murraysay, /client/proc/cmd_admin_hssay, /client/proc/cmd_admin_bradsay, /datum/admins/proc/restart, /datum/admins/proc/toggleenter, /client/proc/respawn_target, /client/proc/respawn_self, /client/proc/cmd_admin_check_reagents, /client/proc/cmd_admin_check_health, /client/proc/cmd_admin_polymorph, /client/proc/revive_all_bees, /client/proc/revive_all_cats, /client/proc/revive_all_parrots, /client/proc/revive_critter, /client/proc/kill_critter, /datum/admins/proc/toggle_blood_system, /client/proc/narrator_mode, /client/proc/admin_pick_random_player, /client/proc/fix_powernets, /datum/admins/proc/delay_start, /datum/admins/proc/delay_end, /client/proc/cmd_admin_create_centcom_report, /client/proc/cmd_admin_create_advanced_centcom_report, /client/proc/cmd_admin_advanced_centcom_report_help, /client/proc/warn, /client/proc/cmd_admin_playeropt, /client/proc/popt_key, /client/proc/POK, /client/proc/POM, /client/proc/show_rules_to_player, /client/proc/view_fingerprints, /client/proc/cmd_admin_intercom_announce, /client/proc/cmd_admin_intercom_announce_freq, /client/proc/cmd_admin_intercom_help, /client/proc/cmd_dectalk, /client/proc/cmd_admin_remove_plasma, /client/proc/toggle_death_confetti, /client/proc/cmd_admin_unhandcuff, /client/proc/admin_toggle_lighting, /client/proc/debug_deletions, /client/proc/Jump, /client/proc/jumptomob, /client/proc/jtm, /client/proc/jumptokey, /client/proc/jtk, /client/proc/jumptoturf, /client/proc/jtt, /client/proc/jumptocoord, /client/proc/jtc, /client/proc/admin_follow_mobject, /client/proc/main_loop_context, /client/proc/main_loop_tick_detail, /client/proc/display_bomb_monitor, //Ban verbs /client/proc/openBanPanel, /client/proc/cmd_admin_addban, /client/proc/banooc, /client/proc/view_cid_list, /client/proc/modify_parts, // moved down from admin /client/proc/cmd_admin_add_freeform_ai_law, /client/proc/cmd_admin_bulk_law_change, /client/proc/cmd_admin_mute, /client/proc/cmd_admin_mute_temp, /client/proc/respawn_as_self, /datum/admins/proc/toggletraitorscaling, /client/proc/toggle_flourish, /client/proc/getturftelesci, /client/proc/cmd_view_runtimes, /client/proc/cmd_antag_history, /client/proc/cmd_admin_show_player_stats, /client/proc/cmd_admin_show_player_ips, /client/proc/cmd_admin_show_player_compids, /client/proc/give_mass_medals, /client/proc/copy_medals, /client/proc/cmd_dispatch_observe_to_ghosts, /client/proc/waddle_walking, /client/proc/clear_area_overlays, /client/proc/cmd_admin_adminundamn, /client/proc/cmd_admin_admindamn, /client/proc/toggle_respawn_arena, ), 4 = list( // LEVEL_ADMIN, admin /* /client/proc/noclip, /client/proc/cmd_admin_mute, /client/proc/cmd_admin_mute_temp, /client/proc/cmd_admin_delete, /client/proc/cmd_admin_add_freeform_ai_law, /client/proc/cmd_admin_show_ai_laws, /client/proc/cmd_admin_reset_ai, /client/proc/addpathogens, /client/proc/addreagents, /client/proc/respawn_as_self, /datum/admins/proc/toggletraitorscaling, /datum/admins/proc/togglerandomaiblobs, */ ), 5 = list( // LEVEL_PA, primary administrator /datum/admins/proc/togglesuicide, /datum/admins/proc/pixelexplosion, /client/proc/open_dj_panel, /client/proc/cmd_admin_clownify, /client/proc/toggle_toggles, /client/proc/cmd_admin_plain_message_all, /client/proc/cmd_admin_fake_medal, /datum/admins/proc/togglespeechpopups, /datum/admins/proc/togglemonkeyspeakhuman, /datum/admins/proc/toggleautoending, /datum/admins/proc/togglelatetraitors, /datum/admins/proc/toggle_pull_slowing, /client/proc/togglebuildmode, /client/proc/toggle_buildmode_view, /client/proc/cmd_admin_rejuvenate_all, /client/proc/toggle_force_mixed_blob, /client/proc/toggle_force_mixed_wraith, /proc/possess, /proc/possessmob, /proc/releasemob, /client/proc/critter_creator_debug, /client/proc/cmd_cat_county, /client/proc/find_thing, /client/proc/find_one_of, /client/proc/cmd_admin_advview, /client/proc/cmd_swap_minds, /client/proc/cmd_transfer_client, /client/proc/edit_module, // /client/proc/modify_organs, /client/proc/toggle_atom_verbs, /client/proc/toggle_camera_network_reciprocity, /client/proc/generate_poster, /client/proc/count_all_of, /client/proc/admin_set_ai_vox, /client/proc/cmd_makeshittyweapon, // moved up from admin /client/proc/cmd_admin_delete, /client/proc/noclip, /client/proc/addpathogens, /client/proc/addreagents, /client/proc/respawn_as_self, /client/proc/cmd_give_pet, /client/proc/cmd_give_pets, /client/proc/cmd_customgrenade, /client/proc/cmd_admin_gib, /client/proc/cmd_admin_partygib, /client/proc/cmd_admin_owlgib, /client/proc/cmd_admin_firegib, /client/proc/cmd_admin_elecgib, /client/proc/sharkgib, /client/proc/cmd_admin_icegib, /client/proc/cmd_admin_goldgib, /client/proc/cmd_admin_spidergib, /client/proc/cmd_admin_cluwnegib, /client/proc/cmd_admin_tysongib, /client/proc/removeOther, /client/proc/cmd_change_map, /client/proc/cmd_start_map_vote, /client/proc/cmd_end_map_vote, /client/proc/cmd_cancel_map_vote, /client/proc/toggle_map_voting, /client/proc/show_admin_lag_hacks, ), 6 = list( // LEVEL_SHITGUY, shit person /datum/admins/proc/togglesoundwaiting, /datum/admins/proc/pixelexplosion, /client/proc/rspawn_panel, /proc/mod_color, /client/proc/debug_variables, /verb/adminCreateBlueprint, /client/proc/cmd_mass_modify_object_variables, /client/proc/cmd_debug_mutantrace, /client/proc/cmd_admin_rejuvenate, /client/proc/cmd_admin_drop_everything, /client/proc/cmd_admin_humanize, /client/proc/cmd_admin_mobileAIize, /client/proc/cmd_admin_makeai, /client/proc/cmd_admin_makecyborg, /client/proc/cmd_admin_makeghostdrone, /client/proc/cmd_debug_del_all, /client/proc/cmd_admin_godmode, /client/proc/cmd_admin_godmode_self, /client/proc/cmd_admin_get_mobject, /client/proc/cmd_admin_get_mobject_loc, /client/proc/Getmob, /client/proc/sendmob, /client/proc/gethmobs, /client/proc/sendhmobs, /client/proc/getmobs, /client/proc/sendmobs, /client/proc/gettraitors, /client/proc/getnontraitors, /client/proc/Debug2, /client/proc/jobbans, /client/proc/rebuild_jobbans_panel, /datum/admins/proc/adrev, /datum/admins/proc/adspawn, /datum/admins/proc/adjump, /client/proc/find_all_of, /client/proc/cmd_add_to_screen, /client/proc/respawn_as, /client/proc/general_report, /client/proc/map_debug_panel, /client/proc/air_report, /client/proc/air_status, /client/proc/fix_next_move, /client/proc/debugreward, /client/proc/flip_view, /client/proc/show_image_to_all, /client/proc/sharkban, /client/proc/cmd_explosion, /client/proc/toggle_literal_disarm, /client/proc/admin_smoke, /client/proc/admin_foam, /client/proc/admin_fluid, /client/proc/implant_all, /datum/admins/proc/toggleaprilfools, /client/proc/cmd_admin_pop_off_all_the_limbs_oh_god, /datum/admins/proc/togglethetoggles, /datum/admins/proc/togglesimsmode, /client/proc/admin_toggle_nightmode, /client/proc/toggle_ip_alerts, /client/proc/upload_custom_hud, /client/proc/replace_with_explosive, /client/proc/enable_waterflow, /client/proc/delete_fluids, /client/proc/special_fullbright, /client/proc/replace_space_exclusive, /client/proc/dereplace_space, /client/proc/ghostdroneAll, /client/proc/showPregameHTML, // /client/proc/admin_airborne_fluid, // /client/proc/replace_space, #ifdef IMAGE_DEL_DEBUG /client/proc/debug_image_deletions, /client/proc/debug_image_deletions_clear, #endif ), 7 = list( // LEVEL_CODER, coder /client/proc/cmd_job_controls, /datum/admins/proc/pixelexplosion, /client/proc/cmd_modify_market_variables, /client/proc/BK_finance_debug, /client/proc/BK_alter_funds, /client/proc/debug_pools, /client/proc/cmd_claim_rs_verbs, /client/proc/debug_variables, /client/proc/debug_global_variable, /client/proc/get_admin_state, /client/proc/call_proc, /client/proc/call_proc_all, /datum/admins/proc/adsound, /datum/admins/proc/pcap, /client/proc/toggle_extra_verbs, /client/proc/cmd_randomize_look, /client/proc/toggle_numbers_station_messages, // /client/proc/export_banlist, // /client/proc/import_banlist, /client/proc/ticklag, /client/proc/cmd_debug_vox, /datum/admins/proc/spawn_atom, /client/proc/view_save_data, /client/proc/check_gang_scores, /client/proc/mapWorld, /client/proc/call_proc_atom, /client/proc/haine_blood_debug, /client/proc/debug_messages, /client/proc/toggle_next_click, /client/proc/debug_reaction_list, /client/proc/debug_reagents_cache, /client/proc/debug_check_possible_reactions, /client/proc/set_admin_level, /client/proc/show_camera_paths, /client/proc/dbg_itemspecial, /client/proc/dbg_objectprop, // /client/proc/remove_camera_paths_verb, // /client/proc/show_runtime_window, /client/proc/cmd_chat_debug, /client/proc/toggleIrcbotDebug, /datum/admins/proc/toggle_bone_system, /client/proc/cmd_randomize_handwriting, /client/proc/wireTest, /client/proc/toggleResourceCache, /client/proc/debugResourceCache, /client/proc/debug_profiler, /client/proc/SetInfoOverlay, /client/proc/cmd_tooltip_debug, /client/proc/deleteJsLogFile, /client/proc/deleteAllJsLogFiles, /client/proc/random_color_matrix, /client/proc/clear_string_cache, /client/proc/edit_color_matrix, /client/proc/test_mass_flock_convert, /client/proc/test_flock_panel, /client/proc/temporary_deadmin_self, /verb/rebuild_flow_networks, /verb/print_flow_networks, /client/proc/toggle_hard_reboot, /client/proc/cmd_modify_respawn_variables, #ifdef MACHINE_PROCESSING_DEBUG /client/proc/cmd_display_detailed_machine_stats, #endif #ifdef QUEUE_STAT_DEBUG /client/proc/cmd_display_queue_stats, #endif #ifdef ENABLE_SPAWN_DEBUG /client/proc/cmd_modify_spawn_dbg_list, /client/proc/spawn_dbg, #endif // /client/proc/RunLuaString ), 8 = list( // LEVEL_HOST, host /client/proc/cmd_claim_rs_verbs ), ) // verbs that SAs and As get while observing. PA+ get these all the time var/list/special_admin_observing_verbs = list( /client/proc/cmd_admin_check_contents, /datum/admins/proc/toggle_respawns, /datum/admins/proc/toggledeadchat, /client/proc/togglepersonaldeadchat, /client/proc/Getmob, ) // verbs that PAs get while observing. Coder+ get these all the time var/list/special_pa_observing_verbs = list( /client/proc/cmd_admin_drop_everything, /client/proc/debug_variables, /client/proc/cmd_modify_object_variables, /client/proc/cmd_modify_ticker_variables, /client/proc/cmd_modify_controller_variables, /client/proc/Getmob, /client/proc/sendmob, /client/proc/cmd_admin_rejuvenate, /client/proc/toggle_view_range, /client/proc/cmd_admin_aview, ) /client/proc/cmd_add_to_screen(var/atom/A as obj|mob|turf in world) set name = "Add to Screen" set desc = "Add a thing to some poor sod's screen." set popup_menu = 1 set category = null var/list/who = list("everyone" = 1) for (var/client/C in clients) var/keyname = "[C] ([C.mob])" who += keyname who[keyname] = who var/chosen = input("Whose screen do you want to add this to?", "Add to screen", "everyone") as null|anything in who if (!chosen) return if (chosen == "everyone") for (var/client/C in clients) C.screen += A message_admins("[key_name(usr)] added [A] to everyone's screen!") logTheThing("admin", usr, null, "added [A] to everyone's screen.") else var/client/C = who[chosen] C.screen += A boutput(usr, "Successful.") logTheThing("admin", usr, C.mob, "added [A] to %target%'s screen.") /client/proc/update_admins(var/rank) if(!src.holder) src.holder = new /datum/admins(src) src.holder.tempmin = 1 src.holder.audit |= AUDIT_VIEW_VARIABLES src.holder.rank = rank if(!src.holder.state) var/state = alert("Which state do you want the admin to begin in?", "Admin-state", "Play", "Observe", "Neither") if(state == "Play") src.holder.state = 1 src.admin_play() return else if(state == "Observe") src.holder.state = 2 src.admin_observe() return else src.holder.dispose() src.holder = null return switch (rank) if ("Host") src.holder.level = LEVEL_HOST if ("Coder") src.holder.level = LEVEL_CODER if ("Shit Person") src.holder.level = LEVEL_SHITGUY if ("Primary Administrator") src.holder.level = LEVEL_PA if ("Administrator") src.holder.level = LEVEL_ADMIN if ("Secondary Administrator") src.holder.level = LEVEL_SA if ("Moderator") src.holder.level = LEVEL_MOD if ("Goat Fart", "Ayn Rand's Armpit") src.holder.level = LEVEL_BABBY if ("Inactive") src.holder.dispose() src.holder = null boutput(src, "You are set to Inactive admin status! Please join #ss13admin on irc.synirc.net if you would like to become active again!") return if ("Banned") del(src) return else src.holder.dispose() src.holder = null return if (src.holder) src.holder.owner = src for(var/i = 1; i < 9; i++) if (src.holder.level + 2 >= i && admin_verbs.len >= i && !isnull(admin_verbs[i])) src.verbs += admin_verbs[i] // certain ranks get special treatment while observing if( src.holder.state ) // literally the laziest way to do this if ( src.holder.level > LEVEL_MOD) src.deadchat = 1 src.verbs += special_admin_observing_verbs if ( src.holder.level > LEVEL_ADMIN ) src.verbs += special_pa_observing_verbs else if ( src.holder.level > LEVEL_ADMIN) src.deadchat = 1 src.verbs += special_admin_observing_verbs if( src.holder.level > LEVEL_PA ) //SHIT GUY PLUS src.verbs += special_pa_observing_verbs if (src.chatOutput && src.chatOutput.loaded) src.chatOutput.loadAdmin() /client/proc/clear_admin_verbs() src.deadchat = 0 for(var/i = 1;i < 9; i++) src.verbs -= admin_verbs[i] src.verbs -= special_admin_observing_verbs src.verbs -= special_pa_observing_verbs src.buildmode = 0 src.show_popup_menus = 1 if (widescreen) src.view = "21x15" else src.view = "15x15" usr.see_in_dark = initial(usr.see_in_dark) if(buildmode) qdel(buildmode) if(src.holder) src.holder.level = 0 /client/proc/admin_observe() set category = "Admin" set name = "Set Observe" if(!src.holder) alert("You are not an admin") return if(!src.holder.popuptoggle) //Hrngh var/rank = src.holder.rank clear_admin_verbs() src.holder.state = 2 // src.mob.mind.observing = 1 update_admins(rank) blink(get_turf(src.mob)) if(!istype(src.mob, /mob/dead/observer) && !istype(src.mob, /mob/dead/target_observer)) if(src.mob.mind) src.mob.mind.damned = 0 src.mob.ghostize() boutput(src, "You are now observing") else boutput(src, "You are already observing!") /client/proc/admin_play() set category = "Admin" set name = "Set Play" if(!src.holder) alert("You are not an admin") return if(!src.holder.popuptoggle) //Hrngh x2 var/rank = src.holder.rank clear_admin_verbs() src.holder.state = 1 // src.mob.mind.observing = 0 update_admins(rank) blink(get_turf(src.mob)) if(istype(src.mob, /mob/dead/observer)) src.mob:reenter_corpse() boutput(src, "You are now playing") else boutput(src, "You are already playing!") /client/proc/get_admin_state() set category = "Special Verbs" for(var/mob/M in mobs) if(M.client && M.client.holder) if(M.client.holder.state == 1) boutput(src, "[M.key] is playing - [M.client.holder.state]") else if(M.client.holder.state == 2) boutput(src, "[M.key] is observing - [M.client.holder.state]") else boutput(src, "[M.key] is undefined - [M.client.holder.state]") //admin client procs ported over from mob.dm /client/proc/player_panel() set name = "Player Panel" set category = "Admin" if (src.holder && !src.holder.tempmin) src.holder.player() return /client/proc/rspawn_panel() set name = "Respawn Panel" set category = "Admin" if (src.holder) src.holder.s_respawn() return /client/proc/jobbans() set name = "Jobban Panel" set category = "Admin" if(src.holder) src.holder.Jobbans() return /client/proc/rebuild_jobbans_panel() set name = "Rebuild Jobbans Panel" set category = "Admin" if (src.holder) src.holder.buildjobbanspanel() return /client/proc/game_panel() set name = "Game Panel" set category = "Admin" if (src.holder) src.holder.Game() return /client/proc/stealth() set category = "Admin" set name = "Stealth Mode" admin_only //fuck u src.holder.set_stealth_mode(null, 0) /datum/admins/proc/set_stealth_mode(var/new_key = null, var/force_on = 0) if (!src.owner || !isclient(src.owner)) return // farte if (force_on) src.owner:stealth = 1 else src.owner:stealth = !(src.owner:stealth) if (src.owner:stealth) if (!new_key) new_key = input(usr, "Enter your desired display name.", "Fake Key", src.owner:key) as null|text if (!new_key) src.owner:stealth = 0 if (src.owner:stealth && src.owner:alt_key) src.set_alt_key() if (new_key) new_key = trim(new_key) //stealth_hide_fakekey = (alert("Hide your fake key when using DSAY?", "Extra stealthy","Yes", "No") == "Yes") // I think if people really wanna be Denmark they can just set themselves to be Denmark new_key = strip_html(new_key) if (length(new_key) >= 26) new_key = copytext(new_key, 1, 26) src.owner:fakekey = new_key else src.owner:fakekey = null src.owner:stealth_hide_fakekey = 0 logTheThing("admin", src.owner, null, "has turned stealth mode [src.owner:stealth ? "ON using key \"[src.owner:fakekey]\"" : "OFF"]") logTheThing("diary", src.owner, null, "has turned stealth mode [src.owner:stealth ? "ON using key \"[src.owner:fakekey]\"" : "OFF"]", "admin") message_admins("[key_name(src.owner)] has turned stealth mode [src.owner:stealth ? "ON using key \"[src.owner:fakekey]\"" : "OFF"]") if (src.owner:stealth) var/ircmsg[] = new() ircmsg["key"] = src.owner:key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "Has enabled stealth mode as ([src.owner:fakekey])" ircbot.export("admin", ircmsg) /client/proc/alt_key() set category = "Admin" set name = "Alternate Key" set desc = "Shows your key as something else!" admin_only src.holder.set_alt_key(null, 0) /datum/admins/proc/set_alt_key(var/new_key = null, var/force_on = 0) if (!src.owner || !isclient(src.owner)) return // farte if (force_on) src.owner:alt_key = 1 else src.owner:alt_key = !(src.owner:alt_key) if (src.owner:alt_key) if (!new_key) new_key = input(usr, "Enter your desired display name.", "Fake Key", src.owner:key) as null|text if (!new_key) src.owner:alt_key = 0 if (src.owner:alt_key && src.owner:stealth) src.set_stealth_mode() if (new_key) new_key = trim(new_key) new_key = strip_html(new_key) if (length(new_key) >= 26) new_key = copytext(new_key, 1, 26) src.owner:fakekey = new_key else src.owner:fakekey = null logTheThing("admin", src.owner, null, "has changed their displayed key to [src.owner:alt_key ? "\"[src.owner:fakekey]\"" : "\"[src.owner:key]\""]") logTheThing("diary", src.owner, null, "has changed their displayed key to [src.owner:alt_key ? "\"[src.owner:fakekey]\"" : "\"[src.owner:key]\""]", "admin") message_admins("[key_name(src.owner)] has changed their displayed key to [src.owner:alt_key ? "\"[src.owner:fakekey]\"" : "\"[src.owner:key]\""]") /* if (src.alt_key) var/ircmsg[] = new() ircmsg["key"] = src.owner:key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "Has set their displayed key to ([src.owner:fakekey])" ircbot.export("admin", ircmsg) */ /client/proc/banooc() set category = "Admin" set name = "OOC (Un)Ban" set desc = "Ban or unban a player from using OOC" admin_only var/mob/target var/client/selection = input("Please, select a player!", "OOC Ban") as null|anything in clients if (!selection) return target = selection.mob if (!oocban_isbanned(target)) oocban_fullban(target) message_admins("[key_name(src)] has banned [key_name(target)] from OOC") logTheThing("admin", usr, target, "Banned %target% from OOC") logTheThing("diary", usr, target, "Banned %target% from OOC", "admin") else oocban_unban(selection) message_admins("[key_name(src)] has unbanned [key_name(target)] from OOC") logTheThing("admin", usr, target, "Unbanned %target% from OOC") logTheThing("diary", usr, target, "Unbanned %target% from OOC", "admin") /client/proc/warn(var/mob/M in world) set category = null set popup_menu = 0 set name = "Warn" set desc = "Warn a player" admin_only if(M.client && M.client.holder && (M.client.holder.level >= src.holder.level)) alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) return if(!M.client.warned) M.Browse(rules, "window=rules;size=480x320") boutput(M, "You have been warned by an administrator. This is the only warning you will receive.") M.client.warned = 1 message_admins("[src.ckey] warned [M.ckey].") else var/addData[] = new() addData["ckey"] = M.ckey addData["compID"] = M.computer_id addData["ip"] = M.client.address addData["reason"] = "Autobanning due to previous warn. This is what we in the biz like to call a \"second warning\"." addData["akey"] = src.ckey addData["mins"] = 10 addBan(addData) /client/proc/clear_area_overlays() set name = "Clear Area Overlays" set category = "Debug" for(var/area/A in world) A.icon_state = "" var/list/fun_images = list() /client/proc/show_image_to_all() set name = "Show Image to All" set category = "Special Verbs" if(fun_images.len) switch(alert("There is already an existing image.", "Warning", "Ignore", "Clear", "Cancel")) if("Clear") for (var/datum/hud/funimage/fun_image) for (var/client/C in fun_image.clients) fun_image.remove_client(C) fun_images.len = 0 return if("Cancel") return var/icon/I = input("Pick an icon:","Icon") as null|icon if (I) var/datum/hud/funimage/fun_image = new(I) fun_images += fun_image for (var/client/C in clients) fun_image.add_client(C) logTheThing("admin", src, null, "has uploaded icon [I] to all players") logTheThing("diary", src, null, "has uploaded icon [I] to all players", "admin") message_admins("[key_name(src)] has uploaded icon [I] to all players") /client/proc/show_rules_to_player(mob/M as mob in world) set name = "Show Rules to Player" set popup_menu = 0 set category = null if(!M.client) alert("[M] is logged out, so you should probably ban them!") return logTheThing("admin", src, M, "forced %target% to view the rules") logTheThing("diary", src, M, "forced %target% to view the rules", "admin") message_admins("[key_name(src)] forced [key_name(M)] to view the rules.") M << csound("sound/misc/klaxon.ogg") boutput(M, "WARNING: An admin is likely very cross with you and wants you to read the rules right fucking now!") // M.Browse(rules, "window=rules;size=480x320") M << browse(rules, "window=rules;size=480x320") /client/proc/view_fingerprints(obj/O as obj in world) set name = "View Object Fingerprints" set category = "Special Verbs" admin_only if(!O.fingerprintshidden || !O.fingerprintshidden.len) alert("There are no fingerprints on this object.", null, null, null, null, null) return boutput(src, "Hidden Fingerprints on [O]:") for(var/i in O.fingerprintshidden) boutput(src, i) boutput(src, "Last touched by: [O.fingerprintslast].") return /client/proc/respawn_as(var/client/cli in clients) set name = "Respawn As" set desc = "Respawn yourself as the currenly loaded character of a player. Instantly. Right where you stand." set category = "Special Verbs" set popup_menu = 0 admin_only if (!cli) cli = input("Please, select a player!", "Respawn As", null, null) as null|anything in clients if(!cli) return if (!cli.preferences) boutput(src, "No preferences found on target client.") var/mob/mymob = src.mob var/mob/living/carbon/human/H = new(mymob.loc) cli.preferences.copy_to(H,src.mob,1) if (!mymob.mind) mymob.mind = new /datum/mind() mymob.mind.key = key mymob.mind.current = mymob ticker.minds += mymob.mind mymob.mind.transfer_to(H) qdel(mymob) H.JobEquipSpawned("Staff Assistant", 1) /client/proc/entangle_at_random() set name = "Entangle Lockers at Random" set desc = "Entangle every locker at random. Dangerous!" set category = "Special Verbs" admin_only if(alert("Are you sure you want to do this?",,"Yes", "No") == "Yes") message_admins("[key_name(src)] has entangled every locker!") var/list/closets = list() var/n_closets = 0 for(var/obj/storage/closet in world) closets += closet n_closets++ for(var/i = 1, i < n_closets, i+=2) var/obj/storage/A = pick(closets) var/obj/storage/B = pick(closets) closets -= A closets -= B A.entangled = B B.entangled = A /client/proc/respawn_as_self() set name = "Respawn As Self" set desc = "Respawn yourself as your currenly loaded character. Instantly. Right where you stand." set category = "Special Verbs" set popup_menu = 0 admin_only if (!src.preferences) boutput(src, "No preferences found on your client.") if (!istype(src.mob, /mob/dead/observer) && !istype(src.mob, /mob/dead/target_observer)) if (alert(usr, "Are you sure you wanna respawn yourself where you are? If you're already in a living mob, it'll be deleted!", "Confirmation", "Yes", "No") == "No") return var/mob/mymob = src.mob var/mob/living/carbon/human/H = new() H.set_loc(mymob.loc) src.preferences.copy_to(H,src.mob,1) if (!mymob.mind) mymob.mind = new /datum/mind() mymob.mind.key = key mymob.mind.current = mymob ticker.minds += mymob.mind mymob.mind.transfer_to(H) qdel(mymob) H.Equip_Rank("Staff Assistant", 2) //ZeWaka: joined_late is 2 so you don't get announced. if (flourish) for (var/mob/living/M in oviewers(5, get_turf(H))) M.apply_flash(animation_duration = 30, weak = 5, uncloak_prob = 0, stamina_damage = 250) /client/proc/cmd_admin_humanize(var/mob/M in world) set category = null set name = "Humanize" set popup_menu = 0 if (!ticker) SPAWN_DBG (0) alert("Wait until the game starts.") return if (istype(M, /mob/new_player) || istype(M, /mob/dead/target_observer)/* || istype(M, /mob/living/intangible/aicamera)*/) SPAWN_DBG (0) alert("You can't humanize new_player mobs or target observers.") return // You now get to chose (mostly) if you want to send the target to the arrival shuttle (Convair880). var/send_to_arrival_shuttle = 0 if (iswraith(M)) if (M.mind && M.mind.special_role == "wraith") remove_antag(M, src, 0, 1) // Can't complete specialist objectives as a human. Also, the proc takes care of the rest. return send_to_arrival_shuttle = 1 else if (isintangible(M)) if (M.mind && M.mind.special_role == "blob") remove_antag(M, src, 0, 1) // Ditto. return send_to_arrival_shuttle = 1 else if (isAI(M)) send_to_arrival_shuttle = 1 else switch (input(src, "Send mob to arrival shuttle?", "Auto-teleport", "No") in list("Yes", "No", "Cancel")) if ("Cancel") return if ("Yes") send_to_arrival_shuttle = 1 if ("No") send_to_arrival_shuttle = 0 else send_to_arrival_shuttle = 0 if (issilicon(M)) var/mob/living/silicon/S = M if (S.dependent && S.mainframe && isAI(S.mainframe)) qdel(S.mainframe) // Delete mainframe if it's an AI-controlled robot. logTheThing("admin", src, M, "has made %target% a human.") logTheThing("diary", src, M, "has made %target% a human.", "admin") message_admins("[key_name(src)] has made [key_name(M)] a human.") if (send_to_arrival_shuttle == 1) M.show_text("
| Mode | " html += "Played | " html += "Antag | " html += "Chosen | " html += "Target | " html += "
|---|---|---|---|---|
| [capitalize(role)] | " html += "[seen] | " html += "[selected] | " html += "[chosen]% | " html += "[target]% | " html += "