///////////////////// //CONTENTS //Global Vars and procs //Topic() - A giant fuck tonne of admin options. //Admin panels //Admin procs // var/global/noir = 0 //////////////////////////////// /proc/message_admins(var/text, var/asay = 0, var/irc = 0) var/rendered = "[irc ? "DISCORD:" : "ADMIN LOG:"] [text]" for (var/client/C in clients) if(!C.holder) continue if (!asay && rank_to_level(C.holder.rank) < LEVEL_MOD) // No confidential info for goat farts (Convair880). continue if (C.player_mode) if (asay && C.player_mode_asay) boutput(C, replacetext(rendered, "%admin_ref%", "\ref[C.holder]")) else continue else boutput(C, replacetext(rendered, "%admin_ref%", "\ref[C.holder]")) //this doesnt fail if the placeholder doesnt exist ok dont worry LAGCHECK(LAG_LOW) /proc/message_coders(var/text) //Shamelessly adapted from message_admins var/rendered = "CODER LOG: [text]" for (var/mob/M in mobs) if (M && M.client && M.client.holder && rank_to_level(M.client.holder.rank) >= LEVEL_CODER) //This is for edge cases where a coder needs a goddamn notification when it happens boutput(M, replacetext(rendered, "%admin_ref%", "\ref[M.client.holder]")) LAGCHECK(LAG_LOW) /proc/message_coders_vardbg(var/text, var/datum/d) var/rendered for (var/mob/M in mobs) if (M && M.client && M.client.holder && rank_to_level(M.client.holder.rank) >= LEVEL_CODER) var/dbg_html = M.client.debug_variable("", d, 0) rendered = "CODER LOG: [text][dbg_html]" boutput(M, replacetext(rendered, "%admin_ref%", "\ref[M.client.holder]")) LAGCHECK(LAG_LOW) /proc/message_attack(var/text) //Sends a message to folks when an attack goes down var/rendered = "ATTACK LOG: [text]" for (var/mob/M in mobs) if (M && M.client && M.client.holder && rank_to_level(M.client.holder.rank) >= LEVEL_MOD && M.client.holder.attacktoggle && !M.client.player_mode) boutput(M, replacetext(rendered, "%admin_ref%", "\ref[M.client.holder]")) LAGCHECK(LAG_LOW) /proc/rank_to_level(var/rank) var/level = 0 switch(rank) if("Host") level = LEVEL_HOST if("Coder") level = LEVEL_CODER if("Shit Person") level = LEVEL_SHITGUY if("Primary Administrator") level = LEVEL_PA if("Administrator") level = LEVEL_ADMIN if("Secondary Administrator") level = LEVEL_SA if("Moderator") level = LEVEL_MOD if("Goat Fart", "Ayn Rand's Armpit") level = LEVEL_BABBY return level /proc/level_to_rank(var/level) var/rank = "ERROR" switch(level) if(LEVEL_HOST) rank = "Host" if(LEVEL_CODER) rank = "Coder" if(LEVEL_SHITGUY) rank = "Shit Person" if(LEVEL_PA) rank = "Primary Administrator" if(LEVEL_ADMIN) rank = "Administrator" if(LEVEL_SA) rank = "Secondary Administrator" if(LEVEL_MOD) rank = "Moderator" if(LEVEL_BABBY) rank = "Goat Fart or Ayn Rand's Armpit" return rank /datum/admins/Topic(href, href_list) ..() if (src.level < 0) alert("UM, EXCUSE ME?? YOU AREN'T AN ADMIN, GET DOWN FROM THERE!") usr << csound("sound/voice/farts/poo2.ogg") return if (usr.client != src.owner) message_admins("[key_name(usr)] has attempted to override the admin panel!") logTheThing("admin", usr, null, "tried to use the admin panel without authorization.") logTheThing("diary", usr, null, "tried to use the admin panel without authorization.", "admin") return //Wires bad hack to update the player options menu on click, part 1 //Also I guess it has sort of expanded now to correctly pick targets if (href_list["targetckey"]) var/targetCkey = href_list["targetckey"] for (var/mob/M in mobs) //Find the mob ref for that nerd if (M.ckey == targetCkey) href_list["target"] = "\ref[M]" break else if (href_list["targetmob"])// they're logged out or an npc, but we still want to mess with their mob href_list["target"] = href_list["targetmob"] var/originWindow var/adminCkey = usr.client.ckey if (href_list["origin"]) originWindow = href_list["origin"] if (!href_list["action"]) //alert("You must define an action! Yell at Wire if you see this.") return switch(href_list["action"]) if ("ah_mute")//gguhHUhguHUGH if (src.level >= LEVEL_PA) var/client/C = locate(href_list["target"]) if(istype(C)) C.cloud_put("adminhelp_banner", usr.client.key) src.show_chatbans(C) if ("ah_unmute")//guHGUHGUGHGUHG if (src.level >= LEVEL_PA) var/client/C = locate(href_list["target"]) if(istype(C)) C.cloud_put("adminhelp_banner", "") src.show_chatbans(C) if ("mh_mute")//AHDUASHDUHWUDHWDUHWDUWDH if (src.level >= LEVEL_PA) var/client/C = locate(href_list["target"]) if(istype(C)) C.cloud_put("mentorhelp_banner", usr.client.key) src.show_chatbans(C) if ("mh_unmute")//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA if (src.level >= LEVEL_PA) var/client/C = locate(href_list["target"]) if(istype(C)) C.cloud_put("mentorhelp_banner", "") src.show_chatbans(C) if ("load_admin_prefs") if (src.level >= LEVEL_MOD) src.load_admin_prefs() if ("save_admin_prefs") if (src.level >= LEVEL_MOD) src.save_admin_prefs() if ("refresh_admin_prefs") if (src.level >= LEVEL_MOD) src.show_pref_window(usr) if ("toggle_extra_verbs") if (src.level >= LEVEL_CODER) usr.client.toggle_extra_verbs() src.show_pref_window(usr) if ("toggle_popup_verbs") if (src.level >= LEVEL_MOD) usr.client.toggle_popup_verbs() src.show_pref_window(usr) if ("toggle_server_toggles_tab") if (src.level >= LEVEL_MOD) usr.client.toggle_server_toggles_tab() src.show_pref_window(usr) if ("toggle_atom_verbs") if (src.level >= LEVEL_PA) usr.client.toggle_atom_verbs() src.show_pref_window(usr) if ("toggle_attack_messages") if (src.level >= LEVEL_MOD) usr.client.toggle_attack_messages() src.show_pref_window(usr) if ("toggle_hear_prayers") if (src.level >= LEVEL_MOD) usr.client.holder.hear_prayers = !usr.client.holder.hear_prayers if ("toggle_buildmode_view") if (src.level >= LEVEL_PA) usr.client.holder.buildmode_view = !usr.client.holder.buildmode_view src.show_pref_window(usr) if ("toggle_auto_stealth") if (src.level >= LEVEL_SA) src.auto_stealth = !(src.auto_stealth) boutput(usr, "Auto Stealth [src.auto_stealth ? "enabled" : "disabled"].") if (src.auto_stealth) if (src.auto_alt_key) src.auto_alt_key = 0 if (usr.client.alt_key) src.set_alt_key() if (!usr.client.stealth && !isnull(src.auto_stealth_name)) src.set_stealth_mode(src.auto_stealth_name) else if (isnull(src.auto_stealth_name)) var/new_key = input("Enter your desired display name.", "Fake Key", usr.client.key) as null|text if (!new_key) src.auto_stealth_name = null boutput(usr, "Auto Stealth name removed.") return src.show_pref_window(usr) if (alert("Use \"[new_key]\" as your Auto Stealth name?", "Confirmation", "OK", "Cancel") == "OK") src.auto_stealth_name = new_key src.set_stealth_mode(src.auto_stealth_name) else src.auto_stealth_name = null boutput(usr, "Auto Stealth name removed.") return src.show_pref_window(usr) src.show_pref_window(usr) if ("set_auto_stealth_name") if (src.level >= LEVEL_SA) var/new_key = input("Enter your desired display name.", "Fake Key", usr.client.key) as null|text if (!new_key) src.auto_stealth_name = null boutput(usr, "Auto Stealth name removed.") return if (alert("Use \"[new_key]\" as your Auto Stealth name?", "Confirmation", "OK", "Cancel") == "OK") src.auto_stealth_name = new_key src.show_pref_window(usr) else src.auto_stealth_name = null boutput(usr, "Auto Stealth name removed.") return if ("toggle_auto_alt_key") if (src.level >= LEVEL_SA) src.auto_alt_key = !(src.auto_alt_key) boutput(usr, "Auto Alt Key [src.auto_alt_key ? "enabled" : "disabled"].") if (src.auto_alt_key) if (src.auto_stealth) src.auto_stealth = 0 if (usr.client.stealth) src.set_stealth_mode() if (!usr.client.alt_key && !isnull(src.auto_alt_key_name)) src.set_alt_key(src.auto_alt_key_name) else if (isnull(src.auto_alt_key_name)) var/new_key = input("Enter your desired display name.", "Alt Key", usr.client.key) as null|text if (!new_key) src.auto_alt_key_name = null boutput(usr, "Auto Alt Key removed.") return src.show_pref_window(usr) if (alert("Use \"[new_key]\" as your Auto Alt Key?", "Confirmation", "OK", "Cancel") == "OK") src.auto_alt_key_name = new_key src.set_alt_key(src.auto_alt_key_name) else src.auto_alt_key_name = null boutput(usr, "Auto Alt Key removed.") return src.show_pref_window(usr) src.show_pref_window(usr) if ("set_auto_alt_key_name") if (src.level >= LEVEL_SA) var/new_key = input("Enter your desired display name.", "Alt Key", usr.client.key) as null|text if (!new_key) src.auto_alt_key_name = null boutput(usr, "Auto Alt Key removed.") return if (alert("Use \"[new_key]\" as your Auto Alt Key?", "Confirmation", "OK", "Cancel") == "OK") src.auto_alt_key_name = new_key src.show_pref_window(usr) else src.auto_alt_key_name = null boutput(usr, "Auto Alt Key removed.") return if ("refreshoptions") var/mob/M = locate(href_list["target"]) if (!M) return usr.client.holder.playeropt(M) if("call_shuttle") if (src.level >= LEVEL_SA) switch(href_list["type"]) if("1") if ((!( ticker ) || emergency_shuttle.location)) return var/call_reason = input("Enter the reason for the shuttle call (or just hit OK to give no reason)","Shuttle Call Reason","") as null|text if(!call_reason) call_reason = "No reason given." emergency_shuttle.incall() boutput(world, "Alert: The emergency shuttle has been called.") boutput(world, "- - - Reason: [call_reason]") boutput(world, "It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") logTheThing("admin", usr, null, "called the Emergency Shuttle (reason: [call_reason])") logTheThing("diary", usr, null, "called the Emergency Shuttle (reason: [call_reason])", "admin") message_admins("[key_name(usr)] called the Emergency Shuttle to the station") if("2") if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0)) return switch(emergency_shuttle.direction) if(-1) emergency_shuttle.incall() var/call_reason = input("Enter the reason for the shuttle call (or just hit OK to give no reason)","Shuttle Call Reason","") as null|text if(!call_reason) call_reason = "No reason given." emergency_shuttle.incall() boutput(world, "Alert: The emergency shuttle has been called.") boutput(world, "- - - Reason: [call_reason]") boutput(world, "It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") logTheThing("admin", usr, null, "called the Emergency Shuttle (reason: [call_reason])") logTheThing("diary", usr, null, "called the Emergency Shuttle (reason: [call_reason])", "admin") message_admins("[key_name(usr)] called the Emergency Shuttle to the station") if(1) emergency_shuttle.recall() boutput(world, "Alert: The shuttle is going back!") logTheThing("admin", usr, null, "sent the Emergency Shuttle back") logTheThing("diary", usr, null, "sent the Emergency Shuttle back", "admin") message_admins("[key_name(usr)] recalled the Emergency Shuttle") else alert("You need to be at least a Secondary Administrator to do a shuttle call.") if("edit_shuttle_time") if (src.level >= LEVEL_PA) var/timeleft = input("Enter new shuttle duration (seconds):","Edit Shuttle Timeleft", emergency_shuttle.timeleft()) as null|num if (isnull(timeleft)) return emergency_shuttle.settimeleft(timeleft) logTheThing("admin", usr, null, "edited the Emergency Shuttle's timeleft to [timeleft]") logTheThing("diary", usr, null, "edited the Emergency Shuttle's timeleft to [timeleft]", "admin") message_admins("[key_name(usr)] edited the Emergency Shuttle's timeleft to [timeleft]") else alert("You need to be at least a Primary Administrator to edit the shuttle timer.") if("toggle_shuttle_calling") if (src.level >= LEVEL_PA) emergency_shuttle.disabled = !emergency_shuttle.disabled logTheThing("admin", usr, null, "[emergency_shuttle.disabled ? "dis" : "en"]abled calling the Emergency Shuttle") logTheThing("diary", usr, null, "[emergency_shuttle.disabled ? "dis" : "en"]abled calling the Emergency Shuttle", "admin") message_admins("[key_name(usr)] [emergency_shuttle.disabled ? "dis" : "en"]abled calling the Emergency Shuttle") // someone forgetting about leaving shuttle calling disabled would be bad so let's inform the Admin Crew if it happens, just in case var/ircmsg[] = new() ircmsg["key"] = src.owner:key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "Has [emergency_shuttle.disabled ? "dis" : "en"]abled calling the Emergency Shuttle" ircbot.export("admin", ircmsg) else alert("You need to be at least a Primary Administrator to enable/disable shuttle calling.") if("toggle_shuttle_recalling") if (src.level >= LEVEL_PA) emergency_shuttle.can_recall = !emergency_shuttle.can_recall logTheThing("admin", usr, null, "[emergency_shuttle.can_recall ? "en" : "dis"]abled recalling the Emergency Shuttle") logTheThing("diary", usr, null, "[emergency_shuttle.can_recall ? "en" : "dis"]abled recalling the Emergency Shuttle", "admin") message_admins("[key_name(usr)] [emergency_shuttle.can_recall ? "en" : "dis"]abled recalling the Emergency Shuttle") else alert("You need to be at least a Primary Administrator to enable/disable shuttle recalling.") if("notes") var/player = null var/mob/M = locate(href_list["target"]) if(M) player = M.ckey else player = href_list["target"] if(!player) return src.viewPlayerNotes(player) if("notes2") var/player = href_list["target"] if(!player) return switch(href_list["type"]) if("del") if(src.level < LEVEL_SA) alert("You need to be at least a Secondary Administrator to delete notes.") return if(href_list["id"]) if(alert("Delete This Note?",,"Yes","No") == "No") return else var/noteId = href_list["id"] deletePlayerNote(noteId) src.viewPlayerNotes(player) logTheThing("admin", usr, null, "deleted note [noteId] belonging to [player].") logTheThing("diary", usr, null, "deleted note [noteId] belonging to [player].", "admin") message_admins("[key_name(usr)] deleted note [noteId] belonging to [player].") var/ircmsg[] = new() ircmsg["key"] = src.owner:key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "Deleted note [noteId] belonging to [player]" ircbot.export("admin", ircmsg) if("add") if(src.level < LEVEL_SA) alert("You need to be at least a Secondary Adminstrator to add notes.") return var/the_note = input("Write your note here!", "Note for [player]") as null|text if (isnull(the_note) || !length(the_note)) return addPlayerNote(player, usr.ckey, the_note) SPAWN_DBG(2 SECONDS) src.viewPlayerNotes(player) logTheThing("admin", usr, null, "added a note for [player]: [the_note]") logTheThing("diary", usr, null, "added a note for [player]: [the_note]", "admin") message_admins("[key_name(usr)] added a note for [player]: [the_note]") var/ircmsg[] = new() ircmsg["key"] = src.owner:key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "Added a note for [player]: [the_note]" ircbot.export("admin", ircmsg) if("viewcompids") var/player = href_list["targetckey"] if(src.tempmin) logTheThing("admin", usr, player, "tried to access the compIDs of %target%") logTheThing("diary", usr, player, "tried to access the compIDs of %target%", "admin") alert("You need to be an actual admin to view compIDs.") return view_client_compid_list(usr, player) return /////////////////////////////////////ban stuff if ("addban") //Add ban var/mob/M = (href_list["target"] ? locate(href_list["target"]) : null) usr.client.addBanDialog(M) if ("sharkban") //Add ban var/mob/M = (href_list["target"] ? locate(href_list["target"]) : null) usr.client.sharkban(M) if("unbane") //Edit ban if (src.level >= LEVEL_SA) var/id = html_decode(href_list["id"]) var/ckey = html_decode(href_list["target"]) var/compID = html_decode(href_list["compID"]) var/ip = html_decode(href_list["ip"]) var/reason = html_decode(href_list["reason"]) var/timestamp = html_decode(href_list["timestamp"]) usr.client.editBanDialog(id, ckey, compID, ip, reason, timestamp) else alert("You need to be at least a Secondary Administrator to edit bans.") if("unbanf") //Delete ban if (src.level >= LEVEL_SA) var/id = html_decode(href_list["id"]) var/ckey = html_decode(href_list["target"]) var/compID = html_decode(href_list["compID"]) var/ip = html_decode(href_list["ip"]) var/akey = usr.client.ckey usr.client.deleteBanDialog(id, ckey, compID, ip, akey) else alert("You need to be at least a Secondary Administrator to remove bans.") /////////////////////////////////////end ban stuff if("jobbanpanel") var/mob/M = locate(href_list["target"]) var/dat = "" var/header = "Pick Job to ban this guy from.
" var/body // var/list/alljobs = get_all_jobs() var/jobs = "" if (!M) return for(var/job in uniquelist(occupations)) if(job in list("Tourist","Mining Supervisor","Atmospheric Technician","Vice Officer")) continue if(jobban_isbanned(M, job)) jobs += "[replacetext(job, " ", " ")] " else jobs += "[replacetext(job, " ", " ")] " //why doesn't this work the stupid cunt if(jobban_isbanned(M, "Captain")) jobs += "Captain " else jobs += "Captain " //why doesn't this work the stupid cunt if(jobban_isbanned(M, "Head of Security")) jobs += "Head of Security " else jobs += "Head of Security " if(jobban_isbanned(M, "Syndicate")) jobs += "
[replacetext("Syndicate", " ", " ")] " else jobs += "
[replacetext("Syndicate", " ", " ")] " //why doesn't this work the stupid cunt if(jobban_isbanned(M, "Special Respawn")) jobs += " [replacetext("Special Respawn", " ", " ")] " else jobs += " [replacetext("Special Respawn", " ", " ")] " if(jobban_isbanned(M, "Engineering Department")) jobs += "
[replacetext("Engineering Department", " ", " ")] " else jobs += "
[replacetext("Engineering Department", " ", " ")] " if(jobban_isbanned(M, "Security Department")) jobs += "
[replacetext("Security Department", " ", " ")] " else jobs += "
[replacetext("Security Department", " ", " ")] " if(jobban_isbanned(M, "Heads of Staff")) jobs += "
[replacetext("Heads of Staff", " ", " ")] " else jobs += "
[replacetext("Heads of Staff", " ", " ")] " if(jobban_isbanned(M, "Everything Except Assistant")) jobs += "
[replacetext("Everything Except Assistant", " ", " ")] " else jobs += "
[replacetext("Everything Except Assistant", " ", " ")] " if(jobban_isbanned(M, "Ghostdrone")) jobs += "
Ghostdrone " else jobs += "
Ghostdrone " if(jobban_isbanned(M, "Custom Names")) jobs += "
[replacetext("Having a Custom Name", " ", " ")] " else jobs += "
[replacetext("Having a Custom Name", " ", " ")] " body = "
[jobs]

" dat = "[header][body]" usr.Browse(dat, "window=jobban2;size=600x150") if("jobban") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) var/job = href_list["type"] if (!M) return if ((M.client && M.client.holder && (M.client.holder.level > src.level))) alert("You cannot perform this action. You must be of a higher administrative rank!") return if (jobban_isbanned(M, job)) if(jobban_keylist.Find(text("[M.ckey] - Everything Except Assistant")) && job != "Everything Except Assistant") alert("This person is banned from Everything Except Assistant. You must lift that ban first.") return if(job in list("Mining Supervisor","Engineer","Atmospheric Technician","Miner","Mechanic")) if(jobban_keylist.Find(text("[M.ckey] - Engineering Department"))) alert("This person is banned from Engineering Department. You must lift that ban first.") return if(job in list("Security Officer","Vice Officer","Detective")) if(jobban_keylist.Find(text("[M.ckey] - Security Department"))) alert("This person is banned from Security Department. You must lift that ban first.") return if(job in list("Captain","Head of Personnel","Head of Security","Chief Engineer","Research Director")) if(jobban_keylist.Find(text("[M.ckey] - Heads of Staff"))) alert("This person is banned from Heads of Staff. You must lift that ban first.") return logTheThing("admin", usr, M, "unbanned %target% from [job]") logTheThing("diary", usr, M, "unbanned %target% from [job]", "admin") message_admins("[key_name(usr)] unbanned [key_name(M)] from [job]") addPlayerNote(M.ckey, usr.ckey, "[usr.ckey] unbanned [M.ckey] from [job]") jobban_unban(M, job) if (announce_jobbans) boutput(M, "[key_name(usr)] has lifted your [job] job-ban.") else logTheThing("admin", usr, M, "banned %target% from [job]") logTheThing("diary", usr, M, "banned %target% from [job]", "admin") message_admins("[key_name(usr)] banned [key_name(M)] from [job]") addPlayerNote(M.ckey, usr.ckey, "[usr.ckey] banned [M.ckey] from [job]") if(job == "Everything Except Assistant") if(jobban_keylist.Find(text("[M.ckey] - Engineering Department"))) jobban_unban(M,"Engineering Department") if(jobban_keylist.Find(text("[M.ckey] - Security Department"))) jobban_unban(M,"Security Department") if(jobban_keylist.Find(text("[M.ckey] - Heads of Staff"))) jobban_unban(M,"Heads of Staff") for(var/Trank1 in uniquelist(occupations)) if(jobban_keylist.Find(text("[M.ckey] - [Trank1]"))) jobban_unban(M,Trank1) else if(job == "Engineering Department") for(var/Trank2 in list("Mining Supervisor","Engineer","Atmospheric Technician","Miner","Mechanic")) if(jobban_keylist.Find(text("[M.ckey] - [Trank2]"))) jobban_unban(M,Trank2) else if(job == "Security Department") for(var/Trank3 in list("Security Officer","Vice Officer","Detective")) if(jobban_keylist.Find(text("[M.ckey] - [Trank3]"))) jobban_unban(M,Trank3) else if(job == "Heads of Staff") for(var/Trank4 in list("Captain","Head of Personnel","Head of Security","Chief Engineer","Research Director")) if(jobban_keylist.Find(text("[M.ckey] - [Trank4]"))) jobban_unban(M,Trank4) jobban_fullban(M, job) if (announce_jobbans) boutput(M, "[key_name(usr)] has job-banned you from [job].") else alert("You need to be at least a Secondary Administrator to work with job bans.") if ("boot") var/mob/M = locate(href_list["target"]) usr.client.cmd_boot(M) if ("removejobban") if (src.level >= LEVEL_CODER) var/t = href_list["target"] if(t) logTheThing("admin", usr, null, "removed [t]") logTheThing("diary", usr, null, "removed [t]", "admin") message_admins("[key_name(usr)] removed [t]") jobban_remove(t) else alert("You need to be at least a Coder to remove job bans.") if ("mute") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (ismob(M) && M.client) var/muted = 0 if (M.client.ismuted()) M.client.unmute() else M.client.mute(-1) muted = 1 logTheThing("admin", usr, M, "has [(muted ? "permanently muted" : "unmuted")] %target%") logTheThing("diary", usr, M, "has [(muted ? "permanently muted" : "unmuted")] %target%.", "admin") message_admins("[key_name(usr)] has [(muted ? "permanently muted" : "unmuted")] [key_name(M)].") boutput(M, "You have been [(muted ? "permanently muted" : "unmuted")].") else alert("You need to be at least a Moderator to mute people.") if ("tempmute") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (ismob(M)) var/muted = 0 if (M.client.ismuted()) M.client.unmute() else M.client.mute(60) muted = 1 logTheThing("admin", usr, M, "has [(muted ? "temporarily muted" : "unmuted")] %target%") logTheThing("diary", usr, M, "has [(muted ? "temporarily muted" : "unmuted")] %target%.", "admin") message_admins("[key_name(usr)] has [(muted ? "temporarily muted" : "unmuted")] [key_name(M)].") boutput(M, "You have been [(muted ? "temporarily muted" : "unmuted")].") else alert("You need to be at least a Moderator to mute people.") if ("banooc") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (ismob(M) && M.client) var/oocbanned = 0 if (!oocban_isbanned(M)) oocban_fullban(M) oocbanned = 1 else oocban_unban(M) logTheThing("admin", usr, M, "has [(oocbanned ? "OOC Banned" : "OOC Unbanned")] %target%") logTheThing("diary", usr, M, "has [(oocbanned ? "OOC Banned" : "OOC Unbanned")] %target%.", "admin") message_admins("[key_name(usr)] has [(oocbanned ? "OOC Banned" : "OOC Unbanned")] [key_name(M)].") if ("toggle_hide_mode") if (src.level >= LEVEL_SA) ticker.hide_mode = !ticker.hide_mode Topic(null, list("src" = "\ref[src]", "action" = "c_mode_panel")) else alert("You need to be at least a Secondary Administrator to hide the game mode.") if ("c_mode_panel") // I removed some broken/discontinued game modes here (Convair880). if (src.level >= LEVEL_SA) var/cmd = "c_mode_current" var/addltext = "" if (current_state > GAME_STATE_PREGAME) cmd = "c_mode_next" addltext = " next round" var/dat = {" Select Round Mode What mode do you wish to play[addltext]?
Current mode is: [master_mode]
Mode is [ticker.hide_mode ? "hidden" : "not hidden"]

Regular Modes:
Secret
Secret: Action
Secret: Intrigue
Mixed (Action)
Mixed (Mild)
Traitor
Nuclear Emergency
Wizard
Changeling
Vampire
Blob
Conspiracy
Spy Theft
Other Modes
Extended
Disaster (Beta)
Spy
Revolution
Revolution (no time limit)
Gang War (Beta)
Battle Royale
Ass Day Classic (For testing only.)
Construction (For testing only. Don't select this!) "} usr.Browse(dat, "window=c_mode") else alert("You need to be at least a Secondary Adminstrator to change the game mode.") if ("c_mode_current") if (src.level >= LEVEL_SA) if (current_state > GAME_STATE_PREGAME) return alert(usr, "The game has already started.", null, null, null, null) var/list/valid_modes = list("secret","action","intrigue","random","traitor","meteor","extended","monkey", "nuclear","blob","restructuring","wizard","revolution", "revolution_extended","malfunction", "spy","gang","disaster","changeling","vampire","mixed","mixed_rp", "construction","conspiracy","spy_theft","battle_royale", "vampire","assday") var/requestedMode = href_list["type"] if (requestedMode in valid_modes) logTheThing("admin", usr, null, "set the mode as [requestedMode].") logTheThing("diary", usr, null, "set the mode as [requestedMode].", "admin") message_admins("[key_name(usr)] set the mode as [requestedMode].") world.save_mode(requestedMode) master_mode = requestedMode if(master_mode == "battle_royale") lobby_titlecard.icon_state += "_battle_royale" else lobby_titlecard.icon_state = "title_main" #ifdef MAP_OVERRIDE_OSHAN lobby_titlecard.icon_state = "title_oshan" #endif #ifdef MAP_OVERRIDE_MANTA lobby_titlecard.icon_state = "title_manta" #endif if (alert("Declare mode change to all players?","Mode Change","Yes","No") == "Yes") boutput(world, "The mode is now: [requestedMode]") else boutput(usr, "That is not a valid game mode!") else alert("You need to be at least a Secondary Adminstrator to change the game mode.") if ("c_mode_next") if (src.level >= LEVEL_SA) var/newmode = href_list["type"] logTheThing("admin", usr, null, "set the next round's mode as [newmode].") logTheThing("diary", usr, null, "set the next round's mode as [newmode].", "admin") message_admins("[key_name(usr)] set the next round's mode as [newmode].") world.save_mode(newmode) if (alert("Declare mode change to all players?","Mode Change","Yes","No") == "Yes") boutput(world, "The next round's mode will be: [newmode]") else alert("You need to be at least a Secondary Adminstrator to change the game mode.") if ("monkeyone") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if(!ismob(M)) return if(ishuman(M)) var/mob/living/carbon/human/N = M logTheThing("admin", usr, M, "attempting to monkeyize %target%") logTheThing("diary", usr, M, "attempting to monkeyize %target%", "admin") message_admins("[key_name(usr)] attempting to monkeyize [key_name(M)]") N.monkeyize() else boutput(usr, "You can't transform that mob type into a monkey.") return else alert("You need to be at least a Secondary Adminstrator to monkeyize players.") if ("forcespeech") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (ismob(M)) var/speech = input("What will [M] say?", "Force speech", "") if(!speech) return M.say(speech) speech = copytext(sanitize(speech), 1, MAX_MESSAGE_LEN) logTheThing("admin", usr, M, "forced %target% to say: [speech]") logTheThing("diary", usr, M, "forced %target% to say: [speech]", "admin") message_admins("[key_name(usr)] forced [key_name(M)] to say: [speech]") else alert("You need to be at least a Primary Administrator to force players to say things.") if ("prison") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (!M || !ismob(M)) return usr.client.cmd_admin_prison_unprison(M) else alert("You need to be at least a Moderator to send players to prison.") if ("shamecube") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_shame_cube(M) else alert("You need to be at least a Moderator to shame cube a player.") if ("tdome") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return var/team var/type = href_list["type"] if (type == "1") M.set_loc(pick(tdome1)) team = "Team 1" else if (type == "2") M.set_loc(pick(tdome2)) team = "Team 2" logTheThing("admin", usr, M, "sent %target% to the thunderdome. ([team])") logTheThing("diary", usr, M, "sent %target% to the thunderdome. ([team])", "admin") message_admins("[key_name(usr)] has sent [key_name(M)] to the thunderdome. ([team])") boutput(M, "You have been sent to the Thunderdome. You are on [team].") boutput(M, "Prepare for combat. If you are not let out of the preparation area within a few minutes, please adminhelp. (F1 key)") else alert("You need to be at least a Secondary Adminstrator to send players to Thunderdome.") if ("revive") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (ismob(M)) if(isobserver(M)) alert("You can't revive a ghost! How does that even work?!") return if(config.allow_admin_rev) M.revive() message_admins("Admin [key_name(usr)] healed / revived [key_name(M)]!") logTheThing("admin", usr, M, "healed / revived %target%") logTheThing("diary", usr, M, "healed / revived %target%", "admin") else alert("Reviving is currently disabled.") else alert("You need to be at least a Primary Adminstrator to revive players.") if ("makeai") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) var/mob/newM = usr.client.cmd_admin_makeai(M) href_list["target"] = "\ref[newM]" else alert("You need to be at least a Secondary Adminstrator to turn players into AI units.") if ("makecyborg") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) var/mob/newM = usr.client.cmd_admin_makecyborg(M) href_list["target"] = "\ref[newM]" else alert("You need to be at least a Secondary Adminstrator to turn players into Cyborgs.") if ("makeghostdrone") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) var/mob/newM = usr.client.cmd_admin_makeghostdrone(M) href_list["target"] = "\ref[newM]" else alert("You need to be at least a Secondary Adminstrator to turn players into Ghostdrones.") if ("modifylimbs") if (src.level >= LEVEL_SA) var/mob/MC = locate(href_list["target"]) if (MC && usr.client) usr.client.modify_parts(MC, usr) else alert("You need to be at least a Secondary Administrator to modify limbs.") if ("jumpto") if(src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return if (!istype(M, /mob/dead/target_observer)) usr.client.jumptomob(M) else var/jumptarget = M.eye if (jumptarget) usr.client.jumptoturf(get_turf(jumptarget)) else alert("You need to be at least a Secondary Adminstrator to jump to mobs.") if ("jumptocoords") if(src.level >= LEVEL_SA) var/list/coords = splittext(href_list["target"], ",") if (coords.len < 3) return usr.client.jumptocoord(text2num(coords[1]), text2num(coords[2]), text2num(coords[3])) else alert("You need to be at least a Secondary Adminstrator to jump to coords.") if ("getmob") if(( src.level >= LEVEL_SHITGUY ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.Getmob(M) else alert("If you are below the rank of Shit Person, you need to be observing and at least a Secondary Administrator to get a player.") if ("sendmob") if(( src.level >= LEVEL_SHITGUY ) || ((src.level >= LEVEL_PA) )) var/mob/M = locate(href_list["target"]) if (!M) return var/list/areas = list( ) for (var/area/A in world) areas += A LAGCHECK(LAG_LOW) var/area = input(usr, "Select an area") as null|anything in areas if (area) usr.client.sendmob(M, area) else alert("If you are below the rank of Shit Person, you need to be observing and at least a Primary Administrator to get a player.") if ("gib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_gib(M) else alert("You need to be at least a Primary Admin to gib a dude.") if ("partygib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_partygib(M) else alert("You need to be at least a Primary Admin to party gib a dude.") if ("owlgib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_owlgib(M) else alert("A loud hooting noise is heard. It sounds angry. I guess you aren't allowed to do this.") if ("firegib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_firegib(M) else alert("You need to be at least a Primary Admin to fire gib a dude.") if ("elecgib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_elecgib(M) else alert("You need to be at least a Primary Admin to elec gib a dude.") if ("sharkgib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.sharkgib(M) else alert("You need to be at least a Primary Admin to shark gib a dude.") if ("icegib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_icegib(M) else alert("You need to be at least a Primary Admin to ice gib a dude.") if ("goldgib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_goldgib(M) else alert("You need to be at least a Primary Admin to gold gib a dude.") if("spidergib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_spidergib(M) else alert("You need to be at least a Primary Admin to spider gib a dude.") if("implodegib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_implodegib(M) else alert("You need to be at least a Primary Admin to implode a dude.") if("cluwnegib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_cluwnegib(M) else alert("You need to be at least a Primary Admin to cluwne gib a dude.") if ("tysongib") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_tysongib(M) else alert("You need to be at least a Primary Admin to tyson gib a dude.") if("damn") if(src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if(!M || !M.mind) return if(M.mind.damned) usr.client.cmd_admin_adminundamn(M) else usr.client.cmd_admin_admindamn(M) else alert("You need to be at least a Primary Admin to damn a dude.") if("transform") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!ishuman(M)) alert("This secret can only be used on human mobs.") return var/mob/living/carbon/human/H = M var/which = input("Transform them into what?","Transform") as null|anything in list("Monkey","Cyborg","Lizardman","Squidman","Martian","Skeleton","Flashman", "Kudzuman","Ghostdrone","Flubber") if (!which) return . = 0 switch(which) if("Monkey") H.monkeyize() if("Cyborg") H.Robotize_MK2() if("Lizardman") H.set_mutantrace(/datum/mutantrace/lizard) . = 1 if("Squidman") H.set_mutantrace(/datum/mutantrace/ithillid) . = 1 if("Martian") H.set_mutantrace(/datum/mutantrace/martian) . = 1 if("Skeleton") H.set_mutantrace(/datum/mutantrace/skeleton) . = 1 if("Flashman") H.set_mutantrace(/datum/mutantrace/flashy) . = 1 if("Kudzuman") H.set_mutantrace(/datum/mutantrace/kudzu) . = 1 if("Ghostdrone") droneize(H, 0) if("Flubber") H.set_mutantrace(/datum/mutantrace/flubber) if(.) message_admins("[key_name(usr)] transformed [H.real_name] into a [which].") else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to transform a player.") if ("addbioeffect") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!ishuman(M)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = M var/pick = input("Which effect(s)?","Give Bioeffects") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) X.bioHolder.AddEffect(pick) if (string_version) string_version = "[string_version], \"[pick]\"" else string_version = "\"[pick]\"" message_admins("[key_name(usr)] added the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] to [key_name(X)].") else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to bioeffect a player.") if ("removebioeffect") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!ishuman(M)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = M var/pick = input("Which effect(s)?","Remove Bioeffects") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) X.bioHolder.RemoveEffect(pick) if (string_version) string_version = "[string_version], \"[pick]\"" else string_version = "\"[pick]\"" message_admins("[key_name(usr)] removed the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] from [X.real_name].") else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to bioeffect a player.") if ("removehandcuff") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (istype(M)) usr.client.cmd_admin_unhandcuff(M) else alert("Only mobs can have handcuffs, doofus! Are you trying to unhandcuff a shrub or something? Stop that!") if ("checkhealth") if (src.level >= LEVEL_SA) var/atom/A = locate(href_list["target"]) if (A) usr.client.cmd_admin_check_health(A) if ("addreagent") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!ishuman(M)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = M if(!X.reagents) X.create_reagents(100) var/list/L = list() var/searchFor = input(usr, "Look for a part of the reagent name (or leave blank for all)", "Add reagent") as null|text if(searchFor) for(var/R in childrentypesof(/datum/reagent)) if(findtext("[R]", searchFor)) L += R else L = childrentypesof(/datum/reagent) var/type if(L.len == 1) type = L[1] else if(L.len > 1) type = input(usr,"Select Reagent:","Reagents",null) as null|anything in L else usr.show_text("No reagents matching that name", "red") return if(!type) return var/datum/reagent/reagent = new type() var/amount = input(usr,"Amount:","Amount",50) as null|num if(!amount) return X.reagents.add_reagent(reagent.id, amount) boutput(usr, "Added [amount] units of [reagent.id] to [X.name]") logTheThing("admin", usr, X, "added [amount] units of [reagent.id] to [X] at [log_loc(X)].") logTheThing("diary", usr, X, "added [amount] units of [reagent.id] to [X] at [log_loc(X)].", "admin") message_admins("[key_name(usr)] added [amount] units of [reagent.id] to [key_name(X)] at [log_loc(X)].") else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to affect player reagents.") if ("checkreagent") if (src.level >= LEVEL_SA) var/atom/A = locate(href_list["target"]) if (A) usr.client.cmd_admin_check_reagents(A) if ("removereagent") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!ishuman(M)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = M var/pick = input("Which reagent(s)?","Remove Reagents") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) var/amt = input("How much of [pick]?","Remove Reagent") as null|num if(!amt || amt < 0) return if (X.reagents) X.reagents.remove_reagent(pick,amt) if (string_version) string_version = "[string_version], [amt] \"[pick]\"" else string_version = "[amt] \"[pick]\"" message_admins("[key_name(usr)] removed [string_version] from [X.real_name].") else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to affect player reagents.") if ("possessmob") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M) return if (M == usr) releasemob(M) else possessmob(M) else alert("You need to be at least a Primary Administrator to possess or release mobs.") if ("checkcontents") if(( src.level >= LEVEL_PA ) || ((src.level >= LEVEL_SA) )) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_check_contents(M) else alert("If you are below the rank of Primary Admin, you need to be observing and at least a Secondary Administrator to check player contents.") if ("dropcontents") if(( src.level >= LEVEL_SHITGUY ) || ((src.level >= LEVEL_PA) )) var/mob/M = locate(href_list["target"]) if (!M) return if (alert(usr, "Make [M] drop everything?", "Confirmation", "Yes", "No") == "Yes") usr.client.cmd_admin_drop_everything(M) else alert("If you are below the rank of Shit Guy, you need to be observing and at least a Primary Admin to drop player contents.") if ("addabil") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return if (!M.abilityHolder) alert("No ability holder detected. Create a holder first!") return var/ab_to_add = input("Which ability?", "Ability", null) as anything in childrentypesof(/datum/targetable) M.abilityHolder.addAbility(ab_to_add) M.abilityHolder.updateButtons() message_admins("[key_name(usr)] added ability [ab_to_add] to [key_name(M)].") logTheThing("admin", usr, M, "added ability [ab_to_add] to %target%.") else alert("You must be at least a Primary Administrator to do this!") if ("removeabil") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return if (!M.abilityHolder) alert("No ability holder detected.") return var/ab_to_rem = input("Which ability?", "Ability", null) as anything in M.abilityHolder.abilities message_admins("[key_name(usr)] removed ability [ab_to_rem] from [key_name(M)].") logTheThing("admin", usr, M, "removed ability [ab_to_rem] from %target%.") M.abilityHolder.removeAbilityInstance(ab_to_rem) M.abilityHolder.updateButtons() else alert("You must be at least a Primary Administrator to do this!") if ("abilholder") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return var/ab_to_add = input("Which holder?", "Ability", null) as anything in childrentypesof(/datum/abilityHolder) M.add_ability_holder(ab_to_add) M.abilityHolder.updateButtons() message_admins("[key_name(usr)] created abilityHolder [ab_to_add] for [key_name(M)].") logTheThing("admin", usr, M, "created abilityHolder [ab_to_add] for %target%.") else alert("You must be at least a Primary Administrator to do this!") if("subtlemsg") var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_subtle_message(M) if("adminalert") var/mob/M = locate(href_list["target"]) if(!M) return usr.client.cmd_admin_alert(M) if ("makewraith") if( src.level < LEVEL_PA) alert("You must be at least a Primary Administrator to make someone a wraith.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a wraith?", "Make Wraith", "Yes", "No") == "Yes") var/datum/mind/mind = M.mind if (!mind) mind = new /datum/mind( ) mind.key = M.key mind.current = M ticker.minds += mind M.mind = mind if (mind.objectives) mind.objectives.len = 0 else mind.objectives = list() switch (alert("Objectives?", "Objectives", "Custom", "Random", "None")) if ("Custom") var/WO = null do WO = input("What objective?", "Objective", null) as null|anything in childrentypesof(/datum/objective/specialist/wraith) if (WO) var/datum/objective/specialist/wraith/WObj = new WO() WObj.owner = mind WObj.set_up() mind.objectives += WObj while (WO != null) if ("Random") generate_wraith_objectives(mind) var/mob/wraith/Wr = M.wraithize() if (!Wr) if (!iswraith(mind.current)) boutput(usr, "Wraithization failed! Call 1-800-MARQUESAS for help.") return else Wr = mind.current if (mind.objectives.len) boutput(Wr, "Your objectives:") var/obj_count = 1 for (var/datum/objective/objective in mind.objectives) boutput(Wr, "Objective #[obj_count]: [objective.explanation_text]") obj_count++ mind.special_role = "wraith" ticker.mode.Agimmicks += mind Wr.antagonist_overlay_refresh(1, 0) if ("makeblob") if( src.level < LEVEL_PA ) alert("You must be at least a Primary Administrator to make someone a blob.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a blob?", "Make Blob", "Yes", "No") == "Yes") var/mob/B = M.blobize() if (B) if (B.mind) B.mind.special_role = "blob" ticker.mode.bestow_objective(B,/datum/objective/specialist/blob) //Bl.owner = B.mind //B.mind.objectives = list(Bl) var/i = 1 for (var/datum/objective/Obj in B.mind.objectives) boutput(B, "Objective #[i]: [Obj.explanation_text]") i++ ticker.mode.Agimmicks += B.mind B.antagonist_overlay_refresh(1, 0) SPAWN_DBG(0) var/newname = input(B, "You are a Blob. Please choose a name for yourself, it will show in the form: the Blob", "Name change") as text if (newname) if (length(newname) >= 26) newname = copytext(newname, 1, 26) newname = replacetext(newname, ">", "'") + " the Blob" B.real_name = newname B.name = newname if ("makemacho") if( src.level < LEVEL_PA ) alert("You must be at least a Primary Administrator to make someone a Macho Man.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a macho man?", "Make Macho", "Yes", "No") == "Yes") M.machoize() if ("makewelder") if( src.level < LEVEL_PA ) alert("You must be at least a Primary Administrator to make someone a Welder.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a welder? Best used on a ghost.", "Make Welder", "Yes", "No") == "Yes") M.make_welder() if ("makecritter") if( src.level < LEVEL_PA ) alert("You must be at least a Primary Administrator to make someone a Critter.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a critter?", "Make Critter", "Yes", "No") == "Yes") var/CT = input("What kind of critter?", "Make Critter", null) as null|anything in (childrentypesof(/mob/living/critter) - /mob/living/critter/small_animal - /mob/living/critter/aquatic) if (CT != null) if(M) M.critterize(CT) if ("makecube") if( src.level < LEVEL_PA ) alert("You must be at least a Primary Administrator to make someone a Cube.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a cube?", "Make Cube", "Yes", "No") == "Yes") var/CT = input("What kind of cube?", "Make Cube", null) as null|anything in childrentypesof(/mob/living/carbon/cube) if (CT != null) var/amt = input("How long should it live?","Cube Lifetime") as null|num if(!amt) amt = INFINITY M.cubeize(amt, CT) // hacks are all i'm made of - cirr /*if ("makeintruder") if( src.level < LEVEL_PA) alert("You must be at least a Primary Administrator to make someone an intruder.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] an eldritch intruder?", "Make Intruder", "Yes", "No") == "Yes") var/datum/mind/mind = M.mind if (!mind) mind = new /datum/mind( ) mind.key = M.key mind.current = M ticker.minds += mind M.mind = mind var/mob/living/intangible/intruder/In = M.intruderize() if (!In) if (!istype(mind.current, /mob/living/intangible/intruder)) boutput(usr, "Could not into intruder. Cirr is a dum and must be shamed.") return else In = mind.current mind.special_role = "intruder" ticker.mode.Agimmicks += mind In.antagonist_overlay_refresh(1, 0) */ if ("makeflock") if( src.level < LEVEL_PA) alert("You must be at least a Primary Administrator to make someone a flockmind or flocktrace.") return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Make [M] a flockmind or flocktrace?", "Make Flockmind", "Yes", "No") == "Yes") var/datum/mind/mind = M.mind if (!mind) mind = new /datum/mind() mind.key = M.key mind.current = M ticker.minds += mind M.mind = mind // if there's no existing flocks, default to making a flockmind // else, present choice: new flockmind of new flock, or new flocktrace of existing flock? var/datum/flock/chosen = null if(flocks.len > 0) var/flockName = input("Add to existing flock? (Hit Cancel to make new flockmind)","Flock Decide Time") as null|anything in flocks chosen = flocks[flockName] var/mob/living/intangible/flock/F = M.flockerize(chosen) if (!F) if (!istype(mind.current, /mob/living/intangible/flock)) boutput(usr, "Could not into flockmind. Cirr is a dum and must be shamed.") return else F = mind.current if(istype(F, /mob/living/intangible/flock/flockmind)) mind.special_role = "flockmind" else if(istype(F, /mob/living/intangible/flock/trace)) mind.special_role = "flocktrace" ticker.mode.Agimmicks += mind F.antagonist_overlay_refresh(1, 0) if ("remove_traitor") if ( src.level < LEVEL_SA ) alert("You must be at least a Secondary Administrator to remove someone's status as an antagonist.") return if (!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return if (alert("Remove [M]'s antag status?", "Remove Antag", "Yes", "No") == "Yes") if (!M) return if (!isturf(M.loc)) // They could be in a pod or whatever, which would have unfortunate results when respawned (Convair880). alert(usr, "You currently cannot remove the antagonist status of somebody hiding in a pod, closet or other container.", "An error occurred") return remove_antag(M, usr, 0, 1) if ("traitor") if(!ticker || !ticker.mode) alert("The game hasn't started yet!") return var/mob/M = locate(href_list["target"]) if (!M) return //independant of mode and can be traitors as well if(M.mind && (M.mind in miscreants)) var/t = "" for(var/datum/objective/O in M.mind.objectives) if (istype(O, /datum/objective/miscreant)) t += "[O.explanation_text]\n" alert("Miscreant! Objective: [t]") var/datum/game_mode/current_mode = ticker.mode if (istype(current_mode, /datum/game_mode/revolution)) if(M.mind in current_mode:head_revolutionaries) alert("Head Revolutionary!") return else if(M.mind in current_mode:revolutionaries) alert("Revolutionary!") return else if (istype(current_mode, /datum/game_mode/nuclear)) if(M.mind in current_mode:syndicates) alert("Syndicate Operative!", "[M.key]") return else if (istype(current_mode, /datum/game_mode/spy)) if(M.mind in current_mode:leaders) var/datum/mind/antagonist = M.mind var/t = "" for(var/datum/objective/OB in antagonist.objectives) if (istype(OB, /datum/objective/crew) || istype(OB, /datum/objective/miscreant)) continue t += "[OB.explanation_text]\n" if(antagonist.objectives.len == 0) t = "None defined." alert("Infiltrator. Objective(s):\n[t]", "[M.key]") return else if (istype(current_mode, /datum/game_mode/gang)) if(M.mind in current_mode:leaders) alert("Leader of [M.mind.gang.gang_name].", "[M.key]") return for(var/datum/gang/G in current_mode:gangs) if(M.mind in G.members) alert("Member of [G.gang_name].", "[M.key]") return // traitor, or other modes where traitors/counteroperatives would be. if(M.mind in current_mode.traitors) var/datum/mind/antagonist = M.mind var/t = "" for(var/datum/objective/OB in antagonist.objectives) if (istype(OB, /datum/objective/crew) || istype(OB, /datum/objective/miscreant)) continue t += "[OB.explanation_text]\n" if(antagonist.objectives.len == 0) t = "None defined." alert("Assigned [M.mind.special_role]. Objective(s):\n[t]", "[M.key]") return if(M.mind in ticker.mode.Agimmicks) var/datum/mind/antagonist = M.mind var/t = "" for(var/datum/objective/OB in antagonist.objectives) if (istype(OB, /datum/objective/crew) || istype(OB, /datum/objective/miscreant)) continue t += "[OB.explanation_text]\n" if(antagonist.objectives.len == 0) t = "None defined." alert("Assigned [M.mind.special_role]. Objective(s):\n[t]", "[M.key]") return //they're nothing so turn them into a traitor! if(ishuman(M) || isAI(M) || isrobot(M) || iscritter(M)) var/traitorize = "Cancel" traitorize = alert("Is not a traitor, make Traitor?", "Traitor", "Yes", "Cancel") if(traitorize == "Cancel") return if(traitorize == "Yes") if (issilicon(M)) evilize(M, "traitor") else if (iscritter(M)) // The only role that works for all critters at this point is hard-mode traitor, really. The majority of existing // roles don't work for them, most can't wear clothes and some don't even have arms and/or can pick things up. // That said, certain roles are mostly compatible and thus selectable. var/list/traitor_types = list("Hard-mode traitor", "Wrestler", "Grinch") var/selection = input(usr, "Select traitor type.", "Traitorize", "Traitor") in traitor_types switch (selection) if ("Hard-mode traitor") evilize(M, "traitor", "hardmode") else evilize(M, selection) /* else SPAWN_DBG (0) alert("An error occurred, please try again.")*/ else var/list/traitor_types = list("Traitor", "Wizard", "Changeling", "Vampire", "Werewolf", "Hunter", "Wrestler", "Grinch", "Omnitraitor", "Spy_Thief") if(ticker && ticker.mode && istype(ticker.mode, /datum/game_mode/gang)) traitor_types += "Gang Leader" var/selection = input(usr, "Select traitor type.", "Traitorize", "Traitor") in traitor_types switch(selection) if("Traitor") if (alert("Hard Mode?","Treachery","Yes","No") == "Yes") evilize(M, "traitor", "hardmode") else evilize(M, "traitor") else evilize(M, selection) /*else SPAWN_DBG (0) alert("An error occurred, please try again.")*/ //they're a ghost/hivebotthing/etc else alert("Cannot make this mob a traitor") if ("create_object") if (src.level >= LEVEL_PA) create_object(usr) else alert("You need to be at least a Primary Adminstrator to create objects.") if ("create_turf") if (src.level >= LEVEL_PA) create_turf(usr) else alert("You need to be at least a Primary Adminstrator to create turfs.") if ("create_mob") if (src.level >= LEVEL_PA) // Moved from SG to PA. They can do this through build mode anyway (Convair880). create_mob(usr) else alert("You need to be at least a Primary Administrator to create mobs.") if ("prom_demot") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return var/client/C = M.client if(C.holder && (C.holder.level >= src.level) && C != usr.client) alert("This cannot be done as [C] isn't of a lower rank than you!") return var/dat = "[C] is a [C.holder ? "[C.holder.rank]" : "non-admin"]

Change [C]'s rank?
" if (C == usr.client) dat += "IF YOU DEMOTE YOURSELF YOU CANNOT UNDO IT FOR THE REST OF THE ROUND!!!
" if (src.level >= LEVEL_CODER) dat += {" Coder
Shit Person
"} if (src.level >= LEVEL_SHITGUY) dat += "Primary Administrator
" if (src.level >= LEVEL_PA) dat += {" Administrator
Secondary Administrator
Moderator
Ayn Rand's Armpit
Goat Fart
Remove Admin
"} usr.Browse(dat, "window=prom_demot;size=480x300") else alert("You need to be at least a Primary Adminstrator to promote or demote.") if ("chgadlvl") if (src.level >= LEVEL_PA) var/rank = href_list["type"] var/client/C = locate(href_list["target"]) if (!rank || !C) return if (C.holder && (C.holder.level >= src.level) && C != usr.client) alert("This cannot be done as [C] isn't of a lower rank than you!") return if (src.level < rank_to_level(rank)) alert("You can't promote people above your own rank, dork.") return if (rank == "Remove") C.clear_admin_verbs() C.update_admins(null) logTheThing("admin", usr, C, "has removed %target%'s adminship") logTheThing("diary", usr, null, "has removed [C]'s adminship", "admin") message_admins("[key_name(usr)] has removed [C]'s adminship") var/ircmsg[] = new() ircmsg["key"] = usr.client.key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "has removed [C]'s adminship" ircbot.export("admin", ircmsg) admins.Remove(C.ckey) onlineAdmins.Remove(C) else C.clear_admin_verbs() C.update_admins(rank) logTheThing("admin", usr, C, "has made %target% a [rank]") logTheThing("diary", usr, null, "has made [C] a [rank]", "admin") message_admins("[key_name(usr)] has made [C] a [rank]") var/ircmsg[] = new() ircmsg["key"] = usr.client.key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "has made [C] a [rank]" ircbot.export("admin", ircmsg) admins[C.ckey] = rank onlineAdmins.Add(C) else alert("You need to be at least a Primary Adminstrator to promote or demote.") if ("object_list") if (src.level >= LEVEL_PA) if (config.allow_admin_spawning && (src.state == 2 || src.level >= LEVEL_PA)) var/atom/loc = usr.loc var/type = href_list["type"] var/dirty_paths if (istext(type)) dirty_paths = list(type) else if (islist(type)) dirty_paths = type var/paths = list() var/removed_paths = list() for (var/dirty_path in dirty_paths) var/path = text2path(dirty_path) if (!path) removed_paths += dirty_path else if (!ispath(path, /obj) && !ispath(path, /turf) && !ispath(path, /mob)) removed_paths += dirty_path else if (dirty_path in do_not_spawn && src.level < LEVEL_PA) removed_paths += dirty_path else if (ispath(path, /mob) && src.level < LEVEL_PA) removed_paths += dirty_path else paths += path LAGCHECK(LAG_LOW) if (!paths) return else if (length(paths) > 5) alert("Select five or less object types only, you colossal ass!") return else if (length(removed_paths)) alert("Spawning of these objects is blocked:\n" + jointext(removed_paths, "\n")) return var/list/offset = splittext(href_list["offset"],",") var/number = CLAMP(text2num(href_list["object_count"]), 1, 100) var/X = offset.len > 0 ? text2num(offset[1]) : 0 var/Y = offset.len > 1 ? text2num(offset[2]) : 0 var/Z = offset.len > 2 ? text2num(offset[3]) : 0 var/direction = text2num(href_list["one_direction"]) // forgive me for (var/i = 1 to number) switch (href_list["offset_type"]) if ("absolute") for (var/path in paths) var/atom/thing = new path(locate(0 + X,0 + Y,0 + Z)) thing.dir = direction ? direction : SOUTH LAGCHECK(LAG_LOW) if ("relative") if (loc) for (var/path in paths) var/atom/thing = new path(locate(loc.x + X,loc.y + Y,loc.z + Z)) thing.dir = direction ? direction : SOUTH LAGCHECK(LAG_LOW) else return sleep(-1) if (number == 1) logTheThing("admin", usr, null, "created a [english_list(paths)]") logTheThing("diary", usr, null, "created a [english_list(paths)]", "admin") for(var/path in paths) if(ispath(path, /mob)) message_admins("[key_name(usr)] created a [english_list(paths, 1)]") break LAGCHECK(LAG_LOW) else logTheThing("admin", usr, null, "created [number]ea [english_list(paths)]") logTheThing("diary", usr, null, "created [number]ea [english_list(paths)]", "admin") for(var/path in paths) if(ispath(path, /mob)) message_admins("[key_name(usr)] created [number]ea [english_list(paths, 1)]") break LAGCHECK(LAG_LOW) return else alert("Object spawning is currently disabled for anyone below the rank of Administrator.") return else alert("You need to be at least an Adminstrator to spawn objects.") if ("polymorph") if (src.level >= LEVEL_SA) //gave SA+ restricted polymorph var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_polymorph(M) else alert("You need to be at least a Secondary Admin to polymorph a dude.") if ("modcolor") if (src.level >= LEVEL_SHITGUY) var/mob/M = locate(href_list["target"]) if (!M) return mod_color(M) else alert("You need to be at least a Shit Person to modify an icon.") if("giveantagtoken") //Gives player a token they can redeem to guarantee an antagonist role if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return if (M.ckey && M.ckey == usr.ckey) alert(usr, "You cannot modify your own antag tokens.") return var/tokens = input(usr, "Current Tokens: [M.client.antag_tokens]","Set Antag Tokens to...") as null|num if (!tokens) return M.client.set_antag_tokens( tokens ) if (tokens <= 0) logTheThing("admin", usr, M, "Removed all antag tokens from %target%") logTheThing("diary", usr, M, "Removed all antag tokens from %target%", "admin") message_admins("[key_name(usr)] removed all antag tokens from [key_name(M)]") else logTheThing("admin", usr, M, "Set %target%'s Antag tokens to [tokens].") logTheThing("diary", usr, M, "Set %target%'s Antag tokens to [tokens].") message_admins( "[key_name(usr)] set [key_name(M)]'s Antag tokens to [tokens]." ) if("setspacebux") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return if (M.ckey && M.ckey == usr.ckey) alert(usr, "You cannot modify your own spacebux.") return var/spacebux = input(usr, "Current Spacebux: [M.client.persistent_bank]","Set Spacebux to...") as null|num if (!spacebux) return M.client.set_persistent_bank( spacebux ) logTheThing("admin", usr, M, "Set %target%'s Persistent Bank (Spacebux) to [spacebux].") logTheThing("diary", usr, M, "Set %target%'s Persistent Bank (Spacebux) to [spacebux].") message_admins( "[key_name(usr)] set [key_name(M)]'s Persistent Bank (Spacebux) to [spacebux]." ) if ("viewsave") if (src.level >= LEVEL_SHITGUY) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.view_save_data(M) else alert("You need to be at least a Shit Person to view save data.") if ("grantcontributor") if (src.level >= LEVEL_CODER) var/mob/M = locate(href_list["target"]) if (!M) return M.unlock_medal( "Contributor", 1 ) logTheThing("admin", usr, M, "gave %target% contributor status.") logTheThing("diary", usr, M, "gave %target% contributor status.") message_admins( "[key_name(usr)] gave [key_name(M)] contributor status." ) else alert("You need to be at least a Coder to grant the medal.") if ("revokecontributor") if (src.level >= LEVEL_CODER) var/mob/M = locate(href_list["target"]) if (!M) return var/suc = M.revoke_medal( "Contributor" ) if(!suc) boutput( usr, "Revoke failed, couldn't contact hub!" ) else if(suc) boutput( usr, "Contributor medal revoked." ) logTheThing("admin", usr, M, "revoked %target%'s contributor status.") logTheThing("diary", usr, M, "revoked %target%'s contributor status.") message_admins( "[key_name(usr)] revoked [key_name(M)]'s contributor status." ) else boutput( usr, "Failed to revoke, did they have the medal to begin with?" ) else alert("You need to be at least a Coder to revoke the medal.") if ("editvars") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_modify_object_variables(M) else alert("You need to be at least a Primary Administrator to edit variables.") if ("viewvars") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.debug_variables(M) else alert("You need to be at least a Primary Administrator to view variables.") if ("adminplayeropts") var/mob/M = locate(href_list["target"]) if (!M) return usr.client.holder.playeropt(M) if ("secretsfun") if (src.level >= LEVEL_SA) switch(href_list["type"]) if("sec_clothes") for(var/obj/item/clothing/under/O in world) del(O) LAGCHECK(LAG_LOW) if("sec_all_clothes") for(var/obj/item/clothing/O in world) del(O) LAGCHECK(LAG_LOW) if("sec_classic1") for(var/obj/item/clothing/suit/fire/O in world) del(O) LAGCHECK(LAG_LOW) for(var/obj/grille/O in world) del(O) LAGCHECK(LAG_LOW) for(var/obj/machinery/vehicle/pod/O in machines) for(var/atom/movable/A in O) A.set_loc(O.loc) del(O) LAGCHECK(LAG_LOW) if("transform_one") var/who = input("Transform who?","Transform") as null|mob in world if (!who) return if (!ishuman(who)) alert("This secret can only be used on human mobs.") return var/mob/living/carbon/human/H = who var/which = input("Transform them into what?","Transform") as null|anything in list("Monkey","Cyborg","Lizardman","Squidman","Martian","Skeleton","Flashman") if (!which) return switch(which) if("Monkey") H.monkeyize() if("Cyborg") H.Robotize_MK2() if("Lizardman") H.set_mutantrace(/datum/mutantrace/lizard) if("Squidman") H.set_mutantrace(/datum/mutantrace/ithillid) if("Martian") H.set_mutantrace(/datum/mutantrace/martian) if("Skeleton") H.set_mutantrace(/datum/mutantrace/skeleton) if("Flashman") H.set_mutantrace(/datum/mutantrace/flashy) message_admins("[key_name(usr)] transformed [H.real_name] into a [which].") logTheThing("admin", usr, null, "transformed [H.real_name] into a [which].") logTheThing("diary", usr, null, "transformed [H.real_name] into a [which].", "admin") if("transform_all") var/which = input("Transform everyone into what?","Transform") as null|anything in list("Monkey","Cyborg","Lizardman","Squidman","Martian","Skeleton","Flashman") for(var/mob/living/carbon/human/H in mobs) switch(which) if("Monkey") H.monkeyize() if("Cyborg") H.Robotize_MK2() if("Lizardman") H.set_mutantrace(/datum/mutantrace/lizard) if("Squidman") H.set_mutantrace(/datum/mutantrace/ithillid) if("Martian") H.set_mutantrace(/datum/mutantrace/martian) if("Skeleton") H.set_mutantrace(/datum/mutantrace/skeleton) if("Flashman") H.set_mutantrace(/datum/mutantrace/flashy) LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] transformed everyone into a [which].") logTheThing("admin", usr, null, "transformed everyone into a [which].") logTheThing("diary", usr, null, "transformed everyone into a [which].", "admin") if("prisonwarp") if(!ticker) alert("The game hasn't started yet!", null, null, null, null, null) return message_admins("[key_name(usr)] teleported all players to the prison zone.") logTheThing("admin", usr, null, "teleported all players to the prison zone.") logTheThing("diary", usr, null, "teleported all players to the prison zone.", "admin") for(var/mob/living/carbon/human/H in mobs) var/turf/loc = find_loc(H) var/security = 0 if(loc.z > 1 || prisonwarped.Find(H)) //don't warp them if they aren't ready or are already there continue H.changeStatus("paralysis", 70) if(H.wear_id) for(var/A in H.wear_id:access) if(A == access_security) security++ if(!security) //teleport person to cell H.set_loc(pick(prisonwarp)) else //teleport security person H.set_loc(pick(prisonsecuritywarp)) prisonwarped += H LAGCHECK(LAG_LOW) if("traitor_all") if (src.level >= LEVEL_SA) if(!ticker) alert("The game hasn't started yet!") return var/which_traitor = input("What kind of traitor?","Everyone's a Traitor") as null|anything in list("Traitor","Wizard","Changeling","Werewolf","Vampire","Hunter","Wrestler","Grinch","Omnitraitor") if(!which_traitor) return var/hardmode = null if (which_traitor == "Traitor") if (alert("Hard Mode?","Everyone's a Traitor","Yes","No") == "Yes") hardmode = "hardmode" var/custom_objective = input("What should the objective be?","Everyone's a Traitor") as null|text if (!custom_objective) return var/escape_objective = input("Which escaping objective?") as null|anything in typesof(/datum/objective/escape/) + "None" if (!escape_objective) return if (escape_objective == "None") escape_objective = null for(var/mob/living/carbon/human/H in mobs) if(isdead(H) || !(H.client)) continue if(checktraitor(H)) continue evilize(H, which_traitor, hardmode, custom_objective, escape_objective) message_admins("[key_name(usr)] made everyone a[hardmode ? " hard-mode" : ""] [which_traitor]. Objective is [custom_objective]") logTheThing("admin", usr, null, "made everyone a[hardmode ? " hard-mode" : ""] [which_traitor]. Objective is [custom_objective]") logTheThing("diary", usr, null, "made everyone a[hardmode ? " hard-mode" : ""] [which_traitor]. Objective is [custom_objective]", "admin") else alert("You're not of a high enough rank to do this") if("flicklights") while(!usr.stat) //knock yourself out to stop the ghosts for(var/mob/M in mobs) if(M.client && !isdead(M) && prob(25)) var/area/AffectedArea = get_area(M) if(AffectedArea.name != "Space" && AffectedArea.name != "Ocean" && AffectedArea.name != "Engine Walls" && AffectedArea.name != "Chemical Lab Test Chamber" && AffectedArea.name != "Escape Shuttle" && AffectedArea.name != "Arrival Area" && AffectedArea.name != "Arrival Shuttle" && AffectedArea.name != "start area" && AffectedArea.name != "Engine Combustion Chamber") AffectedArea.power_light = 0 AffectedArea.power_change() SPAWN_DBG(rand(55,185)) AffectedArea.power_light = 1 AffectedArea.power_change() var/Message = rand(1,4) switch(Message) if(1) M.show_message(text("You shudder as if cold..."), 1) if(2) M.show_message(text("You feel something gliding across your back..."), 1) if(3) M.show_message(text("Your eyes twitch, you feel like something you can't see is here..."), 1) if(4) M.show_message(text("You notice something moving out of the corner of your eye, but nothing is there..."), 1) for(var/obj/W in orange(5,M)) if(prob(25) && !W.anchored) step_rand(W) sleep(rand(100,1000)) for(var/mob/M in mobs) if(M.client && !isdead(M)) M.show_message(text("The chilling wind suddenly stops..."), 1) LAGCHECK(LAG_LOW) if("stupify") if (src.level >= LEVEL_SHITGUY) if (alert("Do you wish to give everyone brain damage?", "Confirmation", "Yes", "No") != "Yes") return for (var/mob/living/carbon/human/H in mobs) if (H.get_brain_damage() < 60) if (H.client) H.show_text("You suddenly feel stupid.","red") H.take_brain_damage(min(60 - H.get_brain_damage(), 60)) // 100+ brain damage is lethal. LAGCHECK(LAG_LOW) else continue message_admins("[key_name(usr)] gave everybody severe brain damage.") logTheThing("admin", usr, null, "gave everybody severe brain damage.") logTheThing("diary", usr, null, "gave everybody severe brain damage.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return // FUN SECRETS CODE if ("randomguns") if (src.level >= LEVEL_PA) if (alert("Do you want to give everyone a gun?", "Confirmation", "Yes", "No") != "Yes") return for (var/mob/living/L in mobs) new /obj/random_item_spawner/kineticgun(get_turf(L)) message_admins("[key_name(usr)] gave everyone a random firearm.") logTheThing("admin", usr, null, "gave everyone a random firearm.") logTheThing("diary", usr, null, "gave everyone a random firearm.", "admin") else alert("You must be at least a Primary Administrator") return if ("swaprooms") if (src.level >= LEVEL_PA) message_admins("Alrighty, messing up the rooms now ... please wait.") fuckthestationuphorribly() message_admins("[key_name(usr)] swapped the stations rooms.") logTheThing("admin", usr, null, "swapped the stations rooms.") logTheThing("diary", usr, null, "swapped the stations rooms.", "admin") else alert("You must be at least a Primary Administrator") return if ("timewarp") if (src.level >= LEVEL_PA) var/timedelay = input(usr,"Delay before time warp? 10 = 1 second",src.name) as num|null if (!isnum(timedelay) || timedelay < 1) return boutput(usr, text("Preparing to warp time")) timeywimey(timedelay) boutput(usr, text("Time warped!")) logTheThing("admin", usr, null, "triggered a time warp.") logTheThing("diary", usr, null, "triggered a time warp.", "admin") else alert("You must be at least a Primary Administrator") return if ("bioeffect_help") var/be_string = "To add or remove multiple bioeffects enter multiple IDs separated by semicolons.

All Bio Effect IDs
" for(var/S in bioEffectList) be_string += "[S]
" usr.Browse(be_string,"window=bioeffect_help;size=300x600") if ("reagent_help") var/r_string = "To add or remove multiple reagents enter multiple IDs separated by semicolons.

All Reagent IDs
" for(var/R in reagents_cache) r_string += "[R]
" usr.Browse(r_string,"window=reagent_help;size=300x600") if ("add_bioeffect_one","remove_bioeffect_one") if (src.level >= LEVEL_PA) var/adding = href_list["type"] == "add_bioeffect_one" var/who = input("Which player?","[adding ? "Give" : "Remove"] Bioeffects") as null|mob in world if (!who) return if (!ishuman(who)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = who var/pick = input("Which effect(s)?","[adding ? "Give" : "Remove"] Bioeffects") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) if (adding) X.bioHolder.AddEffect(pick) else X.bioHolder.RemoveEffect(pick) if (string_version) string_version = "[string_version], \"[pick]\"" else string_version = "\"[pick]\"" message_admins("[key_name(usr)] [adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] [key_name(X)].") logTheThing("admin", usr, null, "[adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] [key_name(X)].") logTheThing("diary", usr, null, "[adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] [key_name(X)].", "admin") else alert("You must be at least a Primary Administrator to bioeffect players.") return if ("add_reagent_one","remove_reagent_one") if (src.level >= LEVEL_PA) var/adding = href_list["type"] == "add_reagent_one" var/who = input("Which player?","[adding ? "Add" : "Remove"] Reagents") as null|mob in world if (!who) return if (!ishuman(who)) alert("You may only use this secret on human mobs.") return var/mob/living/carbon/human/X = who var/pick = input("Which reagent(s)?","[adding ? "Add" : "Remove"] Reagents") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) var/amt = input("How much of [pick]?","[adding ? "Add" : "Remove"] Reagent") as null|num if(!amt || amt < 0) return if (adding) if (X.reagents) X.reagents.add_reagent(pick,amt) else if (X.reagents) X.reagents.remove_reagent(pick,amt) if (string_version) string_version = "[string_version], [amt] \"[pick]\"" else string_version = "[amt] \"[pick]\"" message_admins("[key_name(usr)] [adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] [key_name(X)].") logTheThing("admin", usr, null, "[adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] [key_name(X)].") logTheThing("diary", usr, null, "[adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] [key_name(X)].", "admin") else alert("You must be at least a Primary Administrator to affect player reagents.") return if ("add_bioeffect_all","remove_bioeffect_all") if (src.level >= LEVEL_PA) var/adding = href_list["type"] == "add_bioeffect_all" var/pick = input("Which effect(s)?","[adding ? "Give" : "Remove"] Bioeffects [adding ? "to" : "from"] Everyone") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) if (string_version) string_version = "[string_version], \"[pick]\"" else string_version = "\"[pick]\"" SPAWN_DBG(0) for(var/mob/living/carbon/X in mobs) for(pick in picklist) if (adding) X.bioHolder.AddEffect(pick) else X.bioHolder.RemoveEffect(pick) sleep(1) message_admins("[key_name(usr)] [adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] everyone.") logTheThing("admin", usr, null, "[adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] everyone.") logTheThing("diary", usr, null, "[adding ? "added" : "removed"] the [string_version] bio-effect[picklist.len > 1 ? "s" : ""] [adding ? "to" : "from"] everyone.", "admin") else alert("You must be at least a Primary Administrator to bioeffect players.") return if ("add_reagent_all","remove_reagent_all") if (src.level >= LEVEL_PA) var/adding = href_list["type"] == "add_reagent_all" var/pick = input("Which reagent(s)?","[adding ? "Add" : "Remove"] Reagents [adding ? "to" : "from"] Everyone") as null|text if (!pick) return var/list/picklist = params2list(pick) if (picklist && picklist.len >= 1) var/string_version for(pick in picklist) var/amt = input("How much of [pick]?","[adding ? "Add" : "Remove"] Reagent") as null|num picklist[pick] = amt if (string_version) string_version = "[string_version], [amt] \"[pick]\"" else string_version = "[amt] \"[pick]\"" SPAWN_DBG(0) for(var/mob/living/carbon/X in mobs) for(pick in picklist) var/amt = picklist[pick] if(!amt) continue if (adding) if (X.reagents) X.reagents.add_reagent(pick,amt) else if (X.reagents) X.reagents.remove_reagent(pick,amt) sleep(1) message_admins("[key_name(usr)] [adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] everyone.") logTheThing("admin", usr, null, "[adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] everyone.") logTheThing("diary", usr, null, "[adding ? "added" : "removed"] [string_version] [adding ? "to" : "from"] everyone.", "admin") else alert("You must be at least a Primary Administrator to affect player reagents.") return if ("ballpit") if (src.level >= LEVEL_SA) message_admins("[key_name(usr)] began replacing all Z1 pools will ballpits.") for (var/obj/poolwater/W in world) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 floors and walls with wooden ones was terminated due to the atom emerygency stop!") return if (W.z != 1) break if (W.icon_state != "ballpitwater") W.icon_state = "ballpitwater" W.name = "ball pit" W.float_anim = 0 LAGCHECK(LAG_LOW) for (var/obj/pool/P in world) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 floors and walls with wooden ones was terminated due to the atom emerygency stop!") return if (P.z != 1) break if (P.icon_state == "pool_in_misc") P.icon_state = "ballpit_in_misc" else if (P.icon_state == "pool_in") P.icon_state = "ballpit_in" else if (P.icon_state == "pool") P.icon_state = "ballpit" LAGCHECK(LAG_LOW) for (var/turf/simulated/pool/P in world) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 floors and walls with wooden ones was terminated due to the atom emerygency stop!") return if (P.z != 1) break if (P.icon_state == "poolwaterfloor") P.icon_state = "ballpitfloor" P.name = "ball pit" LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] replaced all Z1 pools with ballpits.") logTheThing("admin", usr, null, "replaced z1 pools with ballpits.") logTheThing("diary", usr, null, "replaced z1 pools with ballpits.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if ("woodstation") if (src.level >= LEVEL_PA) message_admins("[key_name(usr)] began replacing all Z1 floors and walls with wooden ones.") var/nornwalls = 0 if (map_settings && map_settings.walls == /turf/simulated/wall/auto/supernorn) nornwalls = 1 for (var/turf/simulated/wall/W in world) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 floors and walls with wooden ones was terminated due to the atom emerygency stop!") return if (W.z != 1) break if (nornwalls) var/turf/simulated/wall/auto/AW = W if (istype(AW)) if (AW.icon != 'icons/turf/walls_wood.dmi') AW.icon = 'icons/turf/walls_wood.dmi' if (istype(AW, /turf/simulated/wall/auto/reinforced)) AW.icon_state = copytext(W.icon_state,2) if (AW.connect_image) // I will get you to work you shit fuck butt FART OVERLAY AW.connect_image = image(AW.icon, "connect[AW.connect_overlay_dir]") AW.UpdateOverlays(AW.connect_image, "connect") else if (W.icon_state != "wooden") W.icon = 'icons/turf/walls.dmi' W.icon_state = "wooden" LAGCHECK(LAG_LOW) for (var/turf/simulated/floor/F in world) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 floors and walls with wooden ones was terminated due to the atom emerygency stop!") return if (F.z != 1) break if (istype(F, /turf/simulated/floor/carpet)) continue if (F.icon_state != "wooden") F.icon_state = "wooden" F.step_material = "step_wood" LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] replaced all Z1 floors and walls with wooden ones.") logTheThing("admin", usr, null, "replaced z1 floors and walls with wooden doors.") logTheThing("diary", usr, null, "replaced z1 floors and walls with wooden doors.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if ("yeolde") if (src.level >= LEVEL_PA) message_admins("[key_name(usr)] began replacing all Z1 airlocks with wooden doors.") for (var/obj/machinery/door/D in doors) if (atom_emergency_stop) message_admins("[key_name(usr)]'s command to replace all Z1 airlocks with wooden doors was terminated due to the atom emerygency stop!") return if (D.z != 1) break if (istype(D, /obj/machinery/door/poddoor/) || istype(D, /obj/machinery/door/firedoor/) || istype(D, /obj/machinery/door/window/)) continue new /obj/machinery/door/unpowered/wood(get_turf(D)) qdel(D) LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] replaced all Z1 airlocks with wooden doors.") logTheThing("admin", usr, null, "replaced z1 airlocks with wooden doors.") logTheThing("diary", usr, null, "replaced z1 airlocks with wooden doors.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("fakeguns") if (src.level >= LEVEL_SHITGUY) for(var/obj/item/W in world) if(istype(W, /obj/item/clothing) || istype(W, /obj/item/card/id) || istype(W, /obj/item/disk) || istype(W, /obj/item/tank)) continue W.icon = 'icons/obj/gun.dmi' W.icon_state = "revolver" W.item_state = "gun" LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] made every item look like a gun") logTheThing("admin", usr, null, "used Fake Gun secret.") logTheThing("diary", usr, null, "used Fake Gun secret.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("flipstation") var/direction = input("Which way?", "Which direction?", "Normal") in list("Normal", "Rotated CW", "Rotated CCW", "Upside down") var/setdir = NORTH switch (direction) if ("Rotated CW") setdir = WEST if ("Rotated CCW") setdir = EAST if ("Upside down") setdir = SOUTH if (src.level >= LEVEL_SHITGUY) for(var/mob/M in mobs) if(M.client) M.client.dir = setdir LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] set station direction to [direction].") logTheThing("admin", src, null, "set station direction to [direction].") logTheThing("diary", src, null, "set station direction to [direction]", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("raiseundead") if (src.level >= LEVEL_SHITGUY) for(var/mob/living/carbon/human/H in mobs) //Only humans can be zombies! if(!isdead(H)) //Not dead! continue if(istype(H.mutantrace, /datum/mutantrace/zombie)) continue //Already a zombie! qdel(H.mutantrace) H.set_mutantrace(/datum/mutantrace/zombie) setalive(H) //Set stat back to zero so we can call death() H.death()//Calling death() again means that the zombies will rise after ~20 seconds. LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] has brought back all dead humans as zombies.") logTheThing("admin", usr, null, "brought back all dead humans as zombies.") logTheThing("diary", usr, null, "brought back all dead humans as zombies", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("forcerandomnames") if (src.level >= LEVEL_PA) if(current_state > GAME_STATE_PREGAME) alert("You can only only trigger this before the game starts, sorry pal!") return force_random_names = 1 for(var/client/C in clients) if (!C.preferences) continue C.preferences.be_random_name = 1 message_admins("[key_name(usr)] has set all players to use random names this round.") logTheThing("admin", usr, null, "set all players to use random names.") logTheThing("diary", usr, null, "set all players to use random names.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("forcerandomlooks") if (src.level >= LEVEL_PA) if(current_state > GAME_STATE_PREGAME) alert("You can only only trigger this before the game starts, sorry pal!") return force_random_looks = 1 for(var/client/C in clients) if (!C.preferences) continue C.preferences.be_random_look = 1 message_admins("[key_name(usr)] has set all players to use random appearances this round.") logTheThing("admin", usr, null, "set all players to use random appearances.") logTheThing("diary", usr, null, "set all players to use random appearances.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("sawarms") if (src.level >= LEVEL_SHITGUY) for (var/mob/living/carbon/human/M in world) if (!ismonkey(M)) for (var/obj/item/parts/human_parts/arm/P in M) P.sever() var/obj/item/parts/human_parts/arm/sawarm = null if (P.slot == "l_arm") sawarm = new /obj/item/parts/human_parts/arm/left/item(M) M.limbs.l_arm = sawarm else sawarm = new /obj/item/parts/human_parts/arm/right/item(M) M.limbs.r_arm = sawarm if (!sawarm) return sawarm.holder = M sawarm.remove_stage = 0 sawarm:set_item(new /obj/item/saw/elimbinator()) playsound(M, "sound/machines/chainsaw_red.ogg", 60, 1) M.update_body() message_admins("[key_name(usr)] has given everyone new arms.") logTheThing("admin", usr, null, "used the Saw Arms secret.") logTheThing("diary", usr, null, "used the Saw Arms secret.", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!") return if("emag_all_things") if (src.level >= LEVEL_SHITGUY) if (alert("Do you really want to emag everything?","Bad Idea", "Yes", "No") == "Yes") message_admins("[key_name(usr)] has started emagging everything!") logTheThing("admin", usr, null, "used the Emag Everything secret.") logTheThing("diary", usr, null, "used the Emag Everything secret.", "admin") //DO IT! for(var/atom/A as mob|obj in world) if(A) A.emag_act(null,null) LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] has emagged everything!") else return else alert("You need to be at least a shit person to emag everything") return if("shakecamera") if (src.level >= LEVEL_SHITGUY) var/intensity = input("Enter intensity of the shaking effect. (2 or over will also cause mobs to trip over.)","Shaking intensity",null) as num|null if (!intensity) return var/time = input("Enter lenght of the shaking effect.(In milliseconds, don't use more then 400 unless you want players to complain.) ", "Lenght of shaking effect", 1) as num logTheThing("admin", src, null, "created a shake effect (intensity [intensity], lenght [time])") logTheThing("diary", src, null, "created a shake effect (intensity [intensity], lenght [time])", "admin") message_admins("[key_name(usr)] has created a shake effect (intensity [intensity], lenght [time]).") for (var/mob/M in mobs) SPAWN_DBG(0) shake_camera(M, time, intensity) if (intensity >= 2) M.changeStatus("weakened", 2 SECONDS) else alert("You need to be at least a shit person to emag everything") return if("creepifystation") if (src.level >= LEVEL_SHITGUY) if (alert("Are you sure you should creepify the station? There's no going back.", "PARENTAL CONTROL", "Sure thing!", "Not really.") == "Sure thing!") message_admins("[key_name(usr)] creepified the station.") logTheThing("admin", usr, null, "used the Creepify Station button") logTheThing("diary", usr, null, "used the Creepify Station button", "admin") creepify_station() else alert("You need to be at least a shit person to emag everything") return if ("noir") if(src.level >= LEVEL_SHITGUY) if (noir) if (alert("Had enough of noir?", "Good decisions", "Yes!", "Never!") == "Yes!") noir = 0 for (var/mob/M in world) if (M.client) animate_fade_from_grayscale(M.client, 50) message_admins("[key_name(usr)] undid placing the station in noir mode.") logTheThing("admin", usr, null, "used the Noir secret to remove noir") logTheThing("diary", usr, null, "used the Noir secret to remove noir", "admin") if (alert("Are you sure you should noir?", "PARENTAL CONTROL", "Sure thing!", "Not really.") == "Sure thing!") noir = 1 for (var/mob/M in world) if (M.client) animate_fade_grayscale(M.client, 50) LAGCHECK(LAG_LOW) message_admins("[key_name(usr)] placed the station in noir mode.") logTheThing("admin", usr, null, "used the Noir secret") logTheThing("diary", usr, null, "used the Noir secret", "admin") if("the_great_switcharoo") if(src.level >= LEVEL_SHITGUY) //Will be SG when tested if (alert("Do you really wanna do the great switcharoo?", "Awoo, awoo", "Sure thing!", "Not really.") == "Sure thing!") var/list/mob/living/people_to_swap = list() for(var/mob/living/L in world) //Build the swaplist if(L && L.key && L.mind && !isdead(L) && (ishuman(L) || issilicon(L))) people_to_swap += L LAGCHECK(LAG_LOW) if(people_to_swap.len > 1) //Jenny Antonsson switches bodies with herself! #wow #whoa message_admins("[key_name(usr)] did The Great Switcharoo") logTheThing("admin", usr, null, "used The Great Switcharoo secret") logTheThing("diary", usr, null, "used The Great Switcharoo secret", "admin") var/mob/A = pick(people_to_swap) do //More random people_to_swap -= A var/mob/B = pick(people_to_swap) if(A && A.mind && B) A.mind.swap_with(B) A = B LAGCHECK(LAG_LOW) while(people_to_swap.len > 0) else return else alert("You are not a shit enough guy to switcharoo, bub.") if("fartyparty") if(src.level >= LEVEL_SHITGUY) //Will be SG when tested if (farty_party) farty_party = 0 deep_farting = 0 message_admins("[key_name(usr)] stopped the farty party, ok everyone go home") else farty_party = 1 deep_farting = 1 message_admins("[key_name(usr)] IS GETTIN THIS FARTY PARTY STARTED") logTheThing("admin", usr, null, "used Farty Party secret") logTheThing("diary", usr, null, "used Farty Party secret", "admin") else if (usr) logTheThing("admin", usr, null, "used secret [href_list["secretsfun"]]") logTheThing("diary", usr, null, "used secret [href_list["secretsfun"]]", "admin") else alert("You need to be at least an Adminstrator to use the secrets panel.") return if ("secretsdebug") if (src.level >= LEVEL_CODER) switch(href_list["type"]) if("budget") src.owner:debug_variables(wagesystem) if("market") src.owner:debug_variables(shippingmarket) if("genetics") src.owner:debug_variables(genResearch) if("jobs") src.owner:debug_variables(job_controls) if("hydro") src.owner:debug_variables(hydro_controls) if("manuf") src.owner:debug_variables(manuf_controls) if("radio") src.owner:debug_variables(radio_controller) if("randevent") src.owner:debug_variables(random_events) if("disease") src.owner:debug_variables(disease_controls) if("mechanic") src.owner:debug_variables(mechanic_controls) if("artifact") src.owner:debug_variables(artifact_controls) if("gauntlet") src.owner:debug_variables(gauntlet_controller) if("colosseum") src.owner:debug_variables(colosseum_controller) if("stock") src.owner:debug_variables(stockExchange) if("emshuttle") src.owner:debug_variables(emergency_shuttle) if("datacore") src.owner:debug_variables(data_core) if("miningcontrols") src.owner:debug_variables(mining_controls) if("goonhub") src.owner:debug_variables(goonhub) if("mapsettings") src.owner:debug_variables(map_settings) if("ghostnotifications") src.owner:debug_variables(ghost_notifier) if("overlays") overlaytest() if("overlaysrem") removerlays() if("globals") src.owner:debug_variables("GLOB") else alert("You need to be at least a Coder to use debugging secrets.") if ("secretsadmin") if (src.level >= LEVEL_MOD) var/ok = 0 switch(href_list["type"]) /* if("clear_bombs") for(var/obj/item/assembly/radio_bomb/O in world) qdel(O) for(var/obj/item/assembly/proximity_bomb/O in world) qdel(O) for(var/obj/item/assembly/time_bomb/O in world) qdel(O) ok = 1 */ if("check_antagonist") if (ticker && ticker.mode && current_state >= GAME_STATE_PLAYING) var/dat = "Round Status

Round Status

" dat += "Current Game Mode: [ticker.mode.name]
" dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
" if (istype(ticker.mode, /datum/game_mode/nuclear)) var/datum/game_mode/nuclear/NN = ticker.mode dat += "
" for(var/datum/mind/N in NN.syndicates) var/mob/M = N.current if(!M) continue dat += "" dat += "" // This basic bit of info was missing, even though you could look up the // location of the old auth disk here in the past (Convair880). dat += "
Syndicates
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PM

" if (NN.the_bomb && istype(NN.the_bomb, /obj/machinery/nuclearbomb/)) var/turf/T = get_turf(NN.the_bomb) dat += "" else dat += " Found (unknown location)" else dat += "" dat += "" else dat += " Unknown or not assigned" dat += "
Nuclear bomb:
Location:" if (T && istype(T, /turf)) dat += " [T.x],[T.y],[T.z] ([get_area(NN.the_bomb)])
N/A (destroyed or not associated with objective)
Target area:" if (!isnull(NN.target_location_type)) dat += " [NN.target_location_name]
" else if (istype(ticker.mode, /datum/game_mode/revolution)) dat += "
" for(var/datum/mind/N in ticker.mode:head_revolutionaries) var/mob/M = N.current if(!M) continue dat += "" dat += "" for(var/datum/mind/N in ticker.mode:revolutionaries) var/mob/M = N.current if(!M) continue dat += "" dat += "" dat += "
Revolutionaries
[M.real_name] (Leader)[M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PM
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PM
" for(var/datum/mind/N in ticker.mode:get_living_heads()) var/mob/M = N.current if(!M) continue dat += "" dat += "" var/turf/mob_loc = get_turf_loc(M) dat += "" dat += "
Target(s)Location
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PM[mob_loc.loc]
" else if (istype(ticker.mode, /datum/game_mode/spy)) if(ticker.mode:leaders.len > 0) dat += "
" for(var/datum/mind/leader in ticker.mode:leaders) var/mob/M = leader.current if(!M) continue dat += "" dat += "" dat += "" dat += "
Infiltrators:
[key_name(M)][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PMShow Objective
" else dat += "There are no infiltrators." if(ticker.mode:spies.len > 0) dat += "
" for(var/datum/mind/spy in ticker.mode:spies) var/mob/M = spy.current if(!M) continue dat += "" dat += "" dat += "
Brainwashed Followers:
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]Obeys: " var/datum/mind/obeycheck = ticker.mode:spies[spy] if (istype(obeycheck) && obeycheck.current) dat += "[obeycheck.current.ckey]" else dat += "Nobody!" dat += "PM
" else dat += "There are no brainwashed followers." else if (istype(ticker.mode, /datum/game_mode/gang)) if (ticker.mode:leaders.len > 0) for(var/datum/mind/leader in ticker.mode:leaders) var/mob/M = leader.current var/datum/gang/gang = leader.gang dat += "
" dat += "" dat += "" dat += "" for(var/datum/mind/member in gang.members) if(member.current != null) dat += "" dat += "" dat += "" dat += "
([format_frequency(gang.gang_frequency)]) [gang.gang_name]:
[key_name(M)][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PMShow Objective
[key_name(member.current)][member.current.client ? "" : " (logged out)"][isdead(member.current) ? " (DEAD)" : ""]PMShow Objective
" else dat += "There are no gangs." if (ticker.mode.traitors.len > 0) dat += "
" for (var/datum/mind/traitor in ticker.mode.traitors) var/mob/M = traitor.current if (!M) continue dat += "" dat += "" dat += "" dat += "
Traitors
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PMShow Objective
" if(ticker.mode.Agimmicks.len > 0) dat += "
" for(var/datum/mind/gimmick in ticker.mode.Agimmicks) var/mob/M = gimmick.current if(!M) continue dat += "" dat += "" dat += "" dat += "
Misc Foes
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PMShow Objective
" if(miscreants.len > 0) dat += "
" for(var/datum/mind/miscreant in miscreants) var/mob/M = miscreant.current if(!M) continue dat += "" dat += "" dat += "" dat += "
Miscreants
[M.real_name][M.client ? "" : " (logged out)"][isdead(M) ? " (DEAD)" : ""]PMShow Objective
" if (istype(ticker.mode, /datum/game_mode/spy_theft) || ticker.mode.spy_market) var/datum/game_mode/spy_theft/game = istype(ticker.mode, /datum/game_mode/spy_theft) ? ticker.mode : ticker.mode.spy_market var/refresh_time_formatted = round((game.last_refresh_time + game.bounty_refresh_interval)/10 ,1) refresh_time_formatted = "[round(refresh_time_formatted / 3600)]:[add_zero(round(refresh_time_formatted % 3600 / 60), 2)]:[add_zero(num2text(refresh_time_formatted % 60), 2)]" dat += "
Current Bounties (Refresh at [refresh_time_formatted]) " for(var/datum/bounty_item/B in game.active_bounties) var/atext = "" if (B.reveal_area && B.item && !B.claimed) atext = "
(Last Seen : [get_area(B.item)])" var/rtext = "" if (B.reward) rtext = "
Reward : [B.reward.name]" dat += "

[B.name][rtext][atext]
[(B.claimed) ? "(CLAIMED)" : "(Deliver : [B.delivery_area ? B.delivery_area : "Anywhere"])"]" dat += "" usr.Browse(dat, "window=roundstatus;size=400x500") else alert("The game hasn't started yet!") if("shuttle_panel") if (current_state >= GAME_STATE_PLAYING) var/dat = "Shuttle Controls

Shuttle Controls

" dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
" dat += "Emergency shuttle:
" if (!emergency_shuttle.online) dat += "Call Shuttle
" else var/timeleft = emergency_shuttle.timeleft() switch(emergency_shuttle.location) if(0) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "Send Back
" if(1) dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" dat += "" usr.Browse(dat, "window=roundstatus;size=400x500") if("manifest") var/dat = "Showing Crew Manifest.
" dat += "" for(var/mob/living/carbon/human/H in mobs) if(H.ckey) dat += "" LAGCHECK(LAG_LOW) dat += "
NameOriginal PositionPosition
[H.name][(H.mind ? H.mind.assigned_role : "Unknown Position")][(istype(H.wear_id, /obj/item/card/id) || istype(H.wear_id, /obj/item/device/pda2)) ? "[H.wear_id:assignment]" : "Unknown Position"]
" usr.Browse(dat, "window=manifest;size=440x410") if("jobcaps") job_controls.job_config() if("randomevents") random_events.event_config() if("pathology") pathogen_controller.cdc_main(src) if("motives") simsController.showControls(usr) if("artifacts") artifact_controls.config() if("ghostnotifier") ghost_notifier.config() if("unelectrify_all") for(var/obj/machinery/door/airlock/D) D.secondsElectrified = 0 LAGCHECK(LAG_LOW) message_admins("Admin [key_name(usr)] de-electrified all airlocks.") logTheThing("admin", usr, null, "de-electrified all airlocks.") logTheThing("diary", usr, null, "de-electrified all airlocks.", "admin") if("DNA") var/dat = "Showing DNA from blood.
" dat += "" for(var/mob/living/carbon/human/H in mobs) if(H.ckey) dat += "" LAGCHECK(LAG_LOW) dat += "
NameDNABlood Type
[H][H.bioHolder.Uid][H.bioHolder.bloodType]
" usr.Browse(dat, "window=DNA;size=440x410") if("fingerprints") var/dat = "Showing Fingerprints.
" dat += "" for(var/mob/living/carbon/human/H in mobs) if(H.ckey) if(H.bioHolder.Uid) dat += "" else if(!H.bioHolder.Uid) dat += "" LAGCHECK(LAG_LOW) dat += "
NameFingerprints
[H][md5(H.bioHolder.Uid)]
[H]H.bioHolder.Uid = null
" usr.Browse(dat, "window=fingerprints;size=440x410") else if (usr) logTheThing("admin", usr, null, "used secret [href_list["secretsadmin"]]") logTheThing("diary", usr, null, "used secret [href_list["secretsadmin"]]", "admin") if (ok) boutput(world, text("A secret has been activated by []!", usr.key)) return else alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) if ("view_logs") if ((src.level >= LEVEL_MOD) && !src.tempmin) var/gettxt var/logType = href_list["type"] var/preSearch if (href_list["presearch"]) preSearch = href_list["presearch"] if (findtext(logType, "string") && !preSearch) gettxt = input("What are you searching for?","Log by String") as null|text if (!gettxt) return else if (preSearch) gettxt = preSearch var/adminLogHtml = get_log_data_html(logType, gettxt, src) usr.Browse(adminLogHtml, "window=[logType]_log_[gettxt];size=750x500") else alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) if ("view_logs_pathology_strain") if (src.level >= LEVEL_MOD) var/gettxt if (href_list["presearch"]) gettxt = href_list["presearch"] else gettxt = input("Which pathogen tree?", "Pathogen tree") in pathogen_controller.pathogen_trees var/adminLogHtml = get_log_data_html("pathology", gettxt, src) usr.Browse(adminLogHtml, "window=pathology_log;size=750x500") if ("s_rez") if (src.level >= LEVEL_SHITGUY) switch(href_list["type"]) if("spawn_syndies") var/datum/special_respawn/SR = new /datum/special_respawn/ var/amount = input(usr,"Amount to respawn:","Spawn Syndicates",3) as num if(!amount) return SR.spawn_syndies(amount) logTheThing("admin", src, null, "has spawned [amount] syndicate operatives.") logTheThing("diary", src, null, "has spawned [amount] syndicate operatives.", "admin") if("spawn_normal") var/datum/special_respawn/SR = new /datum/special_respawn/ var/amount = input(usr,"Amount to respawn:","Spawn Normal Players",3) as num if(!amount) return SR.spawn_normal(amount) logTheThing("admin", src, null, "has spawned [amount] normal players.") logTheThing("diary", src, null, "has spawned [amount] normal players.", "admin") if("spawn_job") var/datum/special_respawn/SR = new /datum/special_respawn/ var/list/jobs = job_controls.staple_jobs + job_controls.special_jobs var/datum/job/job = input(usr,"Select job to spawn players as:","Respawn Panel",null) as null|anything in jobs if(!job) return var/amount = input(usr,"Amount to respawn:","Spawn Normal Players",3) as num if(!amount) return SR.spawn_as_job(amount,job) logTheThing("admin", src, null, "has spawned [amount] normal players.") logTheThing("diary", src, null, "has spawned [amount] normal players.", "admin") /* if("spawn_commandos") var/datum/special_respawn/SR = new /datum/special_respawn/ SR.spawn_commandos(3) if("spawn_turds") var/datum/special_respawn/SR = new /datum/special_respawn/ var/amount = input(usr,"Amount to respawn:","Spawn TURDS",3) as num if(!amount) return SR.spawn_TURDS(amount) logTheThing("admin", src, null, "has spawned [amount] TURDS.") logTheThing("diary", src, null, "has spawned [amount] TURDS.", "admin") if("spawn_smilingman") var/datum/special_respawn/SR = new /datum/special_respawn/ SR.spawn_smilingman(1) logTheThing("admin", src, null, "has spawned a Smiling Man.") logTheThing("diary", src, null, "has spawned a Smiling Man.", "admin") */ if("spawn_welder") var/datum/special_respawn/SR = new /datum/special_respawn SR.spawn_welder(1) logTheThing("admin", src, null, "has spawned a Welder.") if("spawn_custom") var/datum/special_respawn/SR = new /datum/special_respawn var/blType = input(usr, "Select a mob type", "Spawn Custom") as null|anything in typesof(/mob/living) if(!blType) return var/amount = input(usr, "Amount to respawn:", "Spawn Custom",3) as num if(!amount) return SR.spawn_custom(blType, amount) logTheThing("admin", src, null, "has spawned [amount] mobs of type [blType].") logTheThing("diary", src, null, "has spawned [amount] mobs of type [blType].", "admin") if("spawn_wizards") if("spawn_aliens") else else alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) if ("respawntarget") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return var/mob/newM = usr.client.respawn_target(M) href_list["target"] = "\ref[newM]" else alert ("You must be at least a Secondary Admin to respawn a target.") if ("showrules") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.show_rules_to_player(M) else alert ("You must be at least a Secondary Admin to show rules to a player.") if ("warn") if (src.level >= LEVEL_SA) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.warn(M) else alert ("You must be at least a Secondary Admin to warn a player.") if ("clownify") if (src.level >= LEVEL_PA) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_clownify(M) else alert ("You must be at least a Primary Admin to clownify a player.") if ("plainmsg") if (src.level >= LEVEL_MOD) var/mob/M = locate(href_list["target"]) if (!M) return usr.client.cmd_admin_plain_message(M) else alert ("You must be at least a Moderator to plain message a player.") if ("humanize") if (src.level >= LEVEL_SA) // Moved from SG to PA (Convair880). And then back (Somepotato) var/mob/M = locate(href_list["target"]) if (!M) return var/mob/newM = usr.client.cmd_admin_humanize(M) href_list["target"] = "\ref[newM]" else alert ("You must be at least a Primary Admin to humanize a player.") if ("chatbans") if( src.level >= LEVEL_PA ) var/mob/M = locate(href_list["target"]) if (!M || !M.client) alert( "That player doesn't exist!" ) return src.show_chatbans(M.client) else alert( "You must be at least a Primary Admin to manage chat bans." ) if ("change_station_name") if (!station_name_changing) return alert("Station name changing is currently disabled.") if (src.level >= LEVEL_MOD) usr.openStationNameChangeWindow(src, "action=change_station_name_2") else alert ("You must be at least a Moderator to change the station name.") if ("change_station_name_2") if (!station_name_changing) return alert("Station name changing is currently disabled.") if (src.level >= LEVEL_MOD) var/newName = href_list["newName"] if (set_station_name(usr, newName)) command_alert("The new station name is [station_name]", "Station Naming Ceremony Completion Detection Algorithm") usr.Browse(null, "window=stationnamechanger") src.Game() if ("switch_map") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to switch maps.") usr.client.cmd_change_map() if ("start_map_vote") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to start map votes.") if (!mapSwitcher.votingAllowed) return alert("Map votes are currently toggled off.") usr.client.cmd_start_map_vote() if ("end_map_vote") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to end map votes.") usr.client.cmd_end_map_vote() if ("cancel_map_vote") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to cancel map votes.") usr.client.cmd_cancel_map_vote() if ("view_runtimes") if (src.level < LEVEL_SA) return alert("You must be at least a Secondary Admin to view runtimes.") usr.client.cmd_view_runtimes() if ("viewantaghistory") if (src.level < LEVEL_SA) return alert("You must be at least a Secondary Admin to view antag history.") usr.client.cmd_antag_history(href_list["targetckey"]) if ("show_player_stats") if (src.level < LEVEL_SA) return alert("You must be at least a Secondary Admin to view player stats.") //Shortcut to popup with defined params if present, otherwise just call verb if (href_list["targetckey"]) src.showPlayerStats(href_list["targetckey"]) else usr.client.cmd_admin_show_player_stats() if ("show_player_ips") if (src.level < LEVEL_SA) return alert("You must be at least a Secondary Admin to view player IPs.") //Shortcut to popup with defined params if present, otherwise just call verb if (href_list["ckey"]) var/ckey = href_list["ckey"] src.showPlayerIPs(ckey) else usr.client.cmd_admin_show_player_ips() if ("show_player_compids") if (src.level < LEVEL_SA) return alert("You must be at least a Secondary Admin to view player Computer IDs.") //Shortcut to popup with defined params if present, otherwise just call verb if (href_list["ckey"]) var/ckey = href_list["ckey"] src.showPlayerCompIDs(ckey) else usr.client.cmd_admin_show_player_compids() if ("lightweight_doors") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.lightweight_doors() if ("lightweight_lights") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.lightweight_lights() if ("slow_atmos") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.slow_atmos() if ("slow_fluids") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.slow_fluids() if ("special_sea_fullbright") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.special_fullbright() if ("slow_ticklag") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.slow_ticklag() if ("disable_deletions") if (src.level < LEVEL_PA) return alert("You must be at least a Primary Admin to do this.") usr.client.disable_deletions() else world << "Undefined action [href_list["action"]]" //Wires bad hack part 2 sleep(5) switch (originWindow) if ("adminplayeropts") if (href_list["targetckey"]) var/targetCkey = href_list["targetckey"] for (var/mob/M in mobs) //The ref may have changed with our actions, find it again if (M.ckey == targetCkey) href_list["target"] = "\ref[M]" continue var/mob/target = locate(href_list["target"]) for (var/mob/M in mobs) //We can't even trust that the admin ref hasnt changed if (adminCkey == M.ckey) usr = M continue usr.client.holder.playeropt(target) ///////////////////////////////////////////////////////////////////////////////////////////////Panels /datum/admins/proc/player() var/dat = {" Player Menu "} var/list/mobs = sortmobs() for(var/mob/M in mobs) if (M.ckey) dat += {" "} LAGCHECK(LAG_LOW) dat += {"
Key Name Real Name Assigned Role Special Role Type Computer ID IP Joined
[(M.client ? "[M.client]" : "[M.ckey]")] PM [M.name] [M.real_name ? "[M.real_name]" : "no real_name"] [M.mind ? M.mind.assigned_role : "(no mind/role?)"] [M.mind ? (M.mind.special_role ? "" + M.mind.special_role + "" : "(none)") : "(no mind?)"] [M.type] [M.computer_id ? M.computer_id : "None"] [M.lastKnownIP] [M.client ? M.client.joined_date : "(no client)"]
"} usr.Browse(dat, "window=players;size=1035x480") /datum/admins/proc/s_respawn() var/dat = "Respawn Panel" dat += {"
Spawn normal players
Spawn normal players as a job
Spawn a Syndicate attack force
Spawn a Welder
Spawn a custom mob type
"} usr.Browse(dat, "window=SRespawn") // Someone else removed these but left the (non-functional) buttons. Move back inside the dat section and uncomment to re-add. - IM // Spawn a force of commandos
// Spawn a T.U.R.D.S. attack force
// Spawn a Smiling Man
/datum/admins/proc/buildjobbanspanel() set background = 1 if (building_jobbans != 0) boutput(usr, "Rebuild in progress, please try again later.") return if (alert("Fix a corrupted local panel or force a complete rebuild of the server's panel?","Select Rebuild Type","Local Fix","Server Rebuild") == "Local Fix") var/jobban_dialog_text = replacetext(grabResource("html/admin/jobbans_list.html"), "null /* raw_bans */", "\"[global_jobban_cache]\""); usr.Browse(replacetext(jobban_dialog_text, "null /* ref_src */", "\"\ref[src]\""),"file=jobbans.html;display=0") current_jobbans_rev = global_jobban_cache_rev jobbans_last_cached = world.timeofday boutput(usr, "Refresh complete, your panel now matches the server's. If you need to edit a ban that was created after the build time shown please do a server rebuild.") else boutput(usr, "Rebuilding server cache...") building_jobbans = 1 var/buf = "" jobban_count = 0 for(var/t in jobban_keylist) if (t) jobban_count++ buf += text("[t];") global_jobban_cache = buf global_jobban_cache_rev++ global_jobban_cache_built = world.timeofday building_jobbans = 0 boutput(usr, "Rebuild complete, everyone's job ban panel is now up to date with the latest job bans.") /datum/admins/var/current_jobbans_rev = 0 /datum/admins/var/jobbans_last_cached = 0 /datum/admins/proc/Jobbans() set background = 1 if (src.level >= LEVEL_CODER) if (current_jobbans_rev == 0 || current_jobbans_rev < global_jobban_cache_rev) // the cache is newer than our panel var/jobban_dialog_text = replacetext(grabResource("html/admin/jobbans_list.html"), "null /* raw_bans */", "\"[global_jobban_cache]\""); usr.Browse(replacetext(jobban_dialog_text, "null /* ref_src */", "\"\ref[src]\""),"file=jobbans.html;display=0") current_jobbans_rev = global_jobban_cache_rev jobbans_last_cached = world.timeofday usr.Browse("Ban Management[jobban_count] job bans. banlist built at [time2text(global_jobban_cache_built)] and downloaded at [time2text(jobbans_last_cached)]", "window=jobbanp;size=400x800") /datum/admins/proc/Game() if (!usr) // somehoooow return // ADMIN PANEL HTML IS HERE var/dat = "Admin Game Panel" dat += {""} dat += "
Game Info" //Map name dat += "Current map: [getMapNameFromID(map_setting)]" if (mapSwitcher.next) dat += " (Next map: [mapSwitcher.next])" if (mapSwitcher.votingAllowed) dat += " (Vote: Start | End | Cancel)" dat += "
" //Station name dat += "Station Name: [station_name()]
" var/shuttletext = " " //setup shuttle message if(!emergency_shuttle) return // runtime error fix if (emergency_shuttle.online) switch(emergency_shuttle.location) if(0)// centcom if (emergency_shuttle.direction == 1) shuttletext = "Coming to Station (ETA: [round(emergency_shuttle.timeleft()/60)])" if (emergency_shuttle.direction == -1) shuttletext = "Returning to Centcom (ETA: [round(emergency_shuttle.timeleft()/60)])" if(1)// ss13 shuttletext = "Arrived at Station (ETD: [round(emergency_shuttle.timeleft()/60)])" if(2)// evacuated shuttletext = "Evacuated to Centcom" else shuttletext = "Unknown" else shuttletext = "Idle" if (ticker) if (current_state >= GAME_STATE_PLAYING) dat += "Current Mode: [ticker.mode.name], Timer at [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
" if (src.level >= LEVEL_MOD) dat += "Change Next Round's Game Mode
" if (emergency_shuttle.online) dat += "Shuttle Status: [shuttletext]" else dat += "Shuttle Status: [shuttletext]" dat += "
Players Can Call: [src.level >= LEVEL_PA ? "" : null][emergency_shuttle.disabled ? "No" : "Yes"][src.level >= LEVEL_PA ? "" : null]" dat += " | Players Can Recall: [src.level >= LEVEL_PA ? "" : null][emergency_shuttle.can_recall ? "Yes" : "No"][src.level >= LEVEL_PA ? "" : null]" else if (current_state <= GAME_STATE_PREGAME) dat += "Current Mode: [master_mode], Game has not started yet.
" if (src.level >= LEVEL_MOD) dat += "Change Game Mode
" dat += "Force players to use random names: [force_random_names ? "Yes" : "No"]
" dat += "Force players to use random appearances: [force_random_looks ? "Yes" : "No"]
" //dat += "Politely suggest all players use random names" // lol if (src.level >= LEVEL_PA) dat += "
" dat += "Create Object
" dat += "Create Turf
" dat += "Create Mob" // Moved from SG to PA. They can do this through build mode anyway (Convair880). dat += "
" dat += {"
" if (src.level >= LEVEL_SHITGUY) dat += {"
" dat += {"
" // FUN SECRETS PANEL if (src.level >= LEVEL_PA || (src.level == LEVEL_SA && usr.client.holder.state == 2)) dat += {"
Fun Secrets Transformation: One * All
Add Bio-Effect*: One * All
Remove Bio-Effect: One * All
Add Reagent*: One * All
Remove Reagent: One * All
Make everyone an Antagonist
Give everyone severe brain damage
Set station direction
Replace all airlocks with doors
Replace all floors and walls with wood
Replace all pools with ballpits
Raise all human corpses as undead
Swap station rooms around
Give everyone a random firearm
Set up a time warp
"} if (src.level >= LEVEL_SHITGUY) dat += {"Give everyone saws for arms
Emag everything
Noir
The Great Switcharoo
Farty Party All The Time
"} if (src.level >= LEVEL_SHITGUY || (src.level == LEVEL_SA && usr.client.holder.state == 2)) dat += {"
Roleplaying Panel Apply camera shake
Creepify station
"} dat += "
" usr.Browse(dat, "window=gamepanel") return /datum/admins/proc/restart() set category = "Special Verbs" set name = "Restart" set desc= "Restarts the world" if (mapSwitcher.locked) return alert("The map switcher is currently compiling the map for next round. You must wait until it finishes.") var/confirm = alert("Restart the game world?", "Restart", "Yes", "Cancel") if(confirm == "Cancel") return if(confirm == "Yes") boutput(world, "Restarting world! Initiated by [admin_key(usr.client, 1)]!") logTheThing("admin", usr, null, "initiated a reboot.") logTheThing("diary", usr, null, "initiated a reboot.", "admin") var/ircmsg[] = new() ircmsg["key"] = usr.client.key ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "manually restarted the server." ircbot.export("admin", ircmsg) round_end_data(2) //Wire: Export round end packet (manual restart) sleep(30) Reboot_server() /datum/admins/proc/announce() set category = "Special Verbs" set name = "Announce" set desc="Announce your desires to the world" var/message = input("Global message to send:", "Admin Announce", null, null) as message if (message) if(usr.client.holder.rank != "Coder" && usr.client.holder.rank != "Host") message = adminscrub(message,500) boutput(world, "[admin_key(usr.client, 1)] Announces:
  [message]
") logTheThing("admin", usr, null, ": [message]") logTheThing("diary", usr, null, ": [message]", "admin") /datum/admins/proc/startnow() set category = "Special Verbs" set desc="Start the round RIGHT NOW" set name="Start Now" if(!ticker) alert("Unable to start the game as it is not set up.") return if(current_state <= GAME_STATE_PREGAME) current_state = GAME_STATE_SETTING_UP logTheThing("admin", usr, null, "has started the game.") logTheThing("diary", usr, null, "has started the game.", "admin") message_admins("[usr.key] has started the game.") return 1 else //alert("Game has already started you fucking jerk, stop spamming up the chat :ARGH:") //no, FUCK YOU coder, for making this annoying popup boutput(usr,"Game is already started.") return 0 /datum/admins/proc/delay_start() set category = "Special Verbs" set desc="Delay the game start" set name="Delay Round Start" if (current_state > GAME_STATE_PREGAME) return alert("Too late... The game has already started!", null, null, null, null, null) game_start_delayed = !(game_start_delayed) if (game_start_delayed) boutput(world, "The game start has been delayed.") logTheThing("admin", usr, null, "delayed the game start.") logTheThing("diary", usr, null, "delayed the game start.", "admin") message_admins("[usr.key] has delayed the game start.") else boutput(world, "The game will start soon.") logTheThing("admin", usr, null, "removed the game start delay.") logTheThing("diary", usr, null, "removed the game start delay.", "admin") message_admins("[usr.key] has removed the game start delay.") /datum/admins/proc/delay_end() set category = "Special Verbs" set desc="Delay the server restart" set name="Delay Round End" if (game_end_delayed == 2) logTheThing("admin", usr, null, "removed the restart delay and triggered an immediate restart.") logTheThing("diary", usr, null, "removed the restart delay and triggered an immediate restart.", "admin") message_admins("[usr.key] removed the restart delay and triggered an immediate restart.") ircbot.event("roundend") Reboot_server() else if (game_end_delayed == 0) game_end_delayed = 1 game_end_delayer = usr.key logTheThing("admin", usr, null, "delayed the server restart.") logTheThing("diary", usr, null, "delayed the server restart.", "admin") message_admins("[usr.key] delayed the server restart.") var/ircmsg[] = new() ircmsg["key"] = (usr && usr.client) ? usr.client.key : "NULL" ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "has delayed the server restart." ircbot.export("admin", ircmsg) else if (game_end_delayed == 1) game_end_delayed = 0 game_end_delayer = null logTheThing("admin", usr, null, "removed the restart delay.") logTheThing("diary", usr, null, "removed the restart delay.", "admin") message_admins("[usr.key] removed the restart delay.") var/ircmsg[] = new() ircmsg["key"] = (usr && usr.client) ? usr.client.key : "NULL" ircmsg["name"] = (usr && usr.real_name) ? usr.real_name : "NULL" ircmsg["msg"] = "has removed the server restart delay." ircbot.export("admin", ircmsg) /mob/proc/revive() if(ishuman(src)) var/mob/living/carbon/human/H = src H.full_heal() H.remove_ailments() // don't spawn with heart failure return ////////////////////////////////////////////////////////////////////////////////////////////////ADMIN HELPER PROCS /proc/checktraitor(mob/M as mob) set popup_menu = 0 if(!M || !M.mind || !ticker || !ticker.mode) return 0 if (istraitor(M)) return 1 if (istype(ticker.mode, /datum/game_mode/revolution)) if(M.mind in (ticker.mode:head_revolutionaries + ticker.mode:revolutionaries)) return 1 else if (istype(ticker.mode, /datum/game_mode/nuclear)) if(M.mind in ticker.mode:syndicates) return 1 else if (istype(ticker.mode, /datum/game_mode/spy)) if(M.mind in (ticker.mode:leaders + ticker.mode:spies)) return 1 else if (istype(ticker.mode, /datum/game_mode/gang)) if(M.mind in (ticker.mode:leaders)) return 1 for(var/datum/gang/G in ticker.mode:gangs) if(M.mind in G.members) return 1 if(M.mind in ticker.mode:traitors) return 1 if(M.mind in ticker.mode:Agimmicks) return 1 return 0 /datum/admins/proc/evilize(mob/M as mob, var/traitor_type, var/special = null, var/mass_traitor_obj = null, var/mass_traitor_esc = null) if (!M || !traitor_type) boutput(usr, "No mob or traitor type specified.") return if (!src.level >= LEVEL_SA) boutput(usr, "You need to be a Secondary Administrator or above to use this command.") return if(isdead(M) || isobserver(M)) boutput(usr, "You cannot make someone who is dead an antagonist.") return if (istype(M,/mob/new_player/)) boutput(usr, "You cannot make someone who has not entered the game an antagonist.") return if (!M.client) boutput(usr, "You cannot make someone who is logged out an antagonist.") return if(checktraitor(M)) boutput(usr, "That person is already an antagonist.") return if(!(ticker && ticker.mode && istype(ticker.mode, /datum/game_mode/gang)) && traitor_type == "gang leader") boutput(usr, "Gang Leaders are currently restricted to gang mode only.") return traitor_type = lowertext(traitor_type) special = lowertext(special) if(mass_traitor_obj) var/datum/objective/custom_objective = new /datum/objective(mass_traitor_obj) custom_objective.owner = M.mind M.mind.objectives += custom_objective if(mass_traitor_esc) var/datum/objective/escape/escape_objective = new mass_traitor_esc escape_objective.owner = M.mind M.mind.objectives += escape_objective else var/list/eligible_objectives = list() if (ishuman(M) || iscritter(M)) eligible_objectives = typesof(/datum/objective/regular/) + typesof(/datum/objective/escape/) else if (issilicon(M)) eligible_objectives = list(/datum/objective/regular,/datum/objective/regular/assassinate, /datum/objective/regular/force_evac_time,/datum/objective/regular/gimmick,/datum/objective/escape,/datum/objective/escape/hijack, /datum/objective/escape/survive,/datum/objective/escape/kamikaze) /*if (isrobot(M)) eligible_objectives += /datum/objective/regular/borgdeath*/ traitor_type = "traitor" switch(traitor_type) if ("changeling") eligible_objectives += /datum/objective/specialist/absorb if ("werewolf") eligible_objectives += /datum/objective/specialist/werewolf/feed if ("vampire") eligible_objectives += /datum/objective/specialist/drinkblood if ("hunter") eligible_objectives += /datum/objective/specialist/hunter/trophy if ("grinch") eligible_objectives += /datum/objective/specialist/ruin_xmas if ("gang leader") var/datum/objective/gangObjective = new /datum/objective/specialist/gang( ) gangObjective.owner = M.mind M.mind.objectives += gangObjective var/done = 0 var/select_objective = null var/datum/objective/new_objective = null var/custom_text = "Go hog wild!" while (done != 1) select_objective = input(usr, "Add a new objective. Hit cancel when finished adding.", "Traitor Objectives") as null|anything in eligible_objectives if (!select_objective) done = 1 break if (select_objective == /datum/objective/regular) custom_text = input(usr,"Enter custom objective text.","Traitor Objectives","Go hog wild!") as null|text if (custom_text) new_objective = new select_objective(custom_text) new_objective.owner = M.mind new_objective.set_up() M.mind.objectives += new_objective else boutput(usr, "No text was entered. Objective not given.") else new_objective = new select_objective new_objective.owner = M.mind new_objective.set_up() M.mind.objectives += new_objective if (M.mind.objectives.len < 1) boutput(usr, "Not enough objectives specified.") return if (isAI(M)) var/mob/living/silicon/ai/A = M A.syndicate = 1 A.syndicate_possible = 1 A.handle_robot_antagonist_status("admin", 0, usr) else if (isrobot(M)) var/mob/living/silicon/robot/R = M if (R.dependent) boutput(usr, "You can't evilize AI-controlled shells.") return R.syndicate = 1 R.syndicate_possible = 1 R.handle_robot_antagonist_status("admin", 0, usr) else if (ishuman(M) || iscritter(M)) switch(traitor_type) if("traitor") M.show_text("

You have defected and become a traitor!

", "red") if(special != "hardmode") M.mind.special_role = "traitor" M.verbs += /client/proc/gearspawn_traitor SHOW_TRAITOR_RADIO_TIPS(M) else M.mind.special_role = "hard-mode traitor" SHOW_TRAITOR_HARDMODE_TIPS(M) if("changeling") M.mind.special_role = "changeling" M.show_text("

You have mutated into a changeling!

", "red") M.make_changeling() if("wizard") M.mind.special_role = "wizard" M.show_text("

You have been seduced by magic and become a wizard!

", "red") SHOW_ADMINWIZARD_TIPS(M) M.verbs += /client/proc/gearspawn_wizard if("vampire") M.mind.special_role = "vampire" M.show_text("

You have joined the ranks of the undead and are now a vampire!

", "red") M.make_vampire() if("hunter") M.mind.special_role = "hunter" M.mind.assigned_role = "Hunter" M.show_text("

You have become a hunter!

", "red") M.make_hunter() if("wrestler") M.mind.special_role = "wrestler" M.show_text("

You feel an urgent need to wrestle!

", "red") M.make_wrestler(1) if("werewolf") M.mind.special_role = "werewolf" M.show_text("

You have become a werewolf!

", "red") M.make_werewolf(1) if("grinch") M.mind.special_role = "grinch" M.make_grinch() M.show_text("

You have become a grinch!

", "red") if("gang leader") // hi so this tried in the past to make someone a gang leader without, uh, giving them a gang // seeing as gang leaders are only allowed during the gang gamemode, this should work // error checks included anyways if(istype(ticker)) // the day we assume the foundation of the world exists is the day it crumbles into sand var/datum/game_mode/gang/G = ticker.mode if(istype(G)) G.generate_gang(M.mind) else boutput(usr, "The game mode isn't gang (or something is deeply fucked up).") return boutput(M, "

You are the leader of the [M.mind.gang.gang_name] gang!

") boutput(M, "You must recruit people to your cause and fight other gangs!") boutput(M, "You may kill anyone you want, but are advised to convince them to join you instead!") boutput(M, "You can use the Set Gang Base command once which will make your current area into your gang's base and spawn a locker.") boutput(M, "You can get gear from your gang's locker. You must store guns, drugs and cash there for points.") boutput(M, "People can join your gang by reading a flyer, obtained from your gang locker.") boutput(M, "Your objectives are to kill the opposing gang leaders, and stash guns, drugs and cash in your locker.") M.verbs += /client/proc/set_gang_base alert(M, "Use the Set Gang Base verb to claim a home turf, and start recruiting people with flyers from the locker!", "You are a gang leader!") if("omnitraitor") M.mind.special_role = "omnitraitor" M.verbs += /client/proc/gearspawn_traitor M.verbs += /client/proc/gearspawn_wizard M.make_changeling() M.make_vampire() M.make_werewolf(1) M.make_wrestler(1) M.make_grinch() M.show_text("

You have become an omnitraitor!

", "red") SHOW_TRAITOR_OMNI_TIPS(M) if("spy_thief") if (M.stat || !isliving(M) || isintangible(M) || !ishuman(M) || !M.mind) return M.show_text("

You have defected to a Spy Thief!

", "red") M.mind.special_role = "spy_thief" var/mob/living/carbon/human/tmob = M var/objective_set_path = /datum/objective_set/spy_theft new objective_set_path(M.mind) equip_spy_theft(tmob) else M.show_text("

You have become evil and are now an antagonist!

", "red") if (!(M.mind in ticker.mode.Agimmicks)) ticker.mode.Agimmicks += M.mind if (M.mind.current) M.mind.current.antagonist_overlay_refresh(1, 0) var/obj_count = 1 for(var/datum/objective/OBJ in M.mind.objectives) boutput(M, "Objective #[obj_count]: [OBJ.explanation_text]") obj_count++ //to stop spamming during traitor all secret if(!mass_traitor_obj) logTheThing("admin", usr, M, "made %target% a[special ? " [special]" : ""] [traitor_type].") logTheThing("diary", usr, M, "made %target% a[special ? " [special]" : ""] [traitor_type].", "admin") message_admins("[key_name(usr)] has made [key_name(M)] a[special ? " [special]" : ""] [traitor_type].") return /datum/admins/proc/get_item_desc(var/target) switch (target) if (1) return "a fully loaded laser gun" if (2) return "a hand teleporter" if (3) return "a fully armed and heated plasma bomb" if (4) return "a jet pack" if (5) return "an ID card with universal access" if (6) return "a captain's dark green jumpsuit" else return "Error: Invalid theft target: [target]" /proc/get_matches_string(var/text, var/list/possibles) var/list/matches = new() for (var/possible in possibles) if (findtext(possible, text)) matches += possible return matches /proc/get_one_match_string(var/text, var/list/possibles) var/list/matches = get_matches_string(text, possibles) if (matches.len == 0) return null var/chosen if (matches.len == 1) chosen = matches[1] else chosen = input("Select a match", "matches for pattern", null) as null|anything in matches if (!chosen) return null return chosen /proc/get_matches(var/object, var/base = /atom) var/list/types = typesof(base) var/list/matches = new() for(var/path in types) if(findtext("[path]", object)) matches += path return matches /proc/get_one_match(var/object, var/base = /atom) var/list/matches = get_matches(object, base) if(matches.len==0) return null var/chosen if(matches.len==1) chosen = matches[1] else var/safe_matches = matches - list(/database, /client, /icon, /sound, /savefile) chosen = input("Select an atom type", "Matches for pattern", null) as null|anything in safe_matches if(!chosen) return null return chosen /datum/admins/proc/spawn_atom(var/object as text) set category = "Special Verbs" set desc="(atom path) Spawn an atom" set name="Spawn" if (usr.client.holder.level >= LEVEL_CODER) var/chosen = get_one_match(object) if (chosen) if (ispath(chosen, /turf)) var/turf/location = get_turf(usr) if (location) location.ReplaceWith(chosen, handle_air = 0) else var/atom/movable/A = new chosen() A.set_loc(usr.loc) if (usr.client.flourish) spawn_animation1(A) logTheThing("admin", usr, null, "spawned [chosen] at ([showCoords(usr.x, usr.y, usr.z)])") logTheThing("diary", usr, null, "spawned [chosen] at ([showCoords(usr.x, usr.y, usr.z, 1)])", "admin") else alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) return /datum/admins/proc/show_chatbans(var/client/C)//do not use this as an example of how to write DM please. if( !C.cloud_available() ) alert( "Failed to communicate to Goonhub." ) return var/built = {"Chat Bans (todo: prettify)"} if(C.cloud_get( "adminhelp_banner" )) built += "Adminhelp Mute (Last by [C.cloud_get( "adminhelp_banner" )])
" logTheThing("admin", src, C, "unmuted %target% from adminhelping.") else built += "Adminhelp Mute
" logTheThing("admin", src, C, "muted %target% from adminhelping.") if(C.cloud_get( "mentorhelp_banner" )) built += "Mentorhelp Mute (Last by [C.cloud_get( "mentorhelp_banner" )])
" logTheThing("admin", src, C, "unmuted %target% from mentorhelping.") else built += "Mentorhelp Mute
" logTheThing("admin", src, C, "muted %target% from mentorhelping.") usr.Browse(built, "window=chatban;size=500x100") /client/proc/respawn_target(mob/M as mob in world, var/forced = 0) set name = "Respawn Target" set category = null set desc = "Respawn a mob" set popup_menu = 0 if (!M) return if (!forced && alert(src, "Respawn [M]?", "Confirmation", "Yes", "No") != "Yes") return logTheThing("admin", src, M, "respawned %target%") logTheThing("diary", src, M, "respawned %target%.", "admin") message_admins("[key_name(src)] respawned [key_name(M)].") var/mob/new_player/newM = new() newM.adminspawned = 1 newM.key = M.key if (M.mind) M.mind.damned = 0 M.mind.transfer_to(newM) newM.Login() newM.sight = SEE_TURFS //otherwise the HUD remains in the login screen qdel(M) boutput(newM, "You have been respawned.") return newM /client/proc/respawn_self() set name = "Respawn Self" set category = "Special Verbs" set desc = "Respawn yourself" if(!isobserver(usr)) boutput(usr, "You can't respawn unless you're dead!") return logTheThing("admin", src, null, "respawned themselves.") logTheThing("diary", src, null, "respawned themselves.", "admin") message_admins("[key_name(src)] respawned themselves.") var/mob/new_player/M = new() M.key = usr.client.key M.Login() /client/proc/smnoclip() set name = "Planar Shift" set category = "Smiling Man Powers" set desc = "Shift planes to toggle moving through walls and objects." if(!isliving(usr)) return usr.client.flying = !usr.client.flying boutput(usr, "You are [usr.client.flying ? "now" : "no longer"] flying through matter.") /client/Move(NewLoc, direct) if(usr.client.flying) if(!isturf(usr.loc)) usr.set_loc(get_turf(usr)) if(NewLoc) usr.set_loc(NewLoc) src.mob.dir = direct return if((direct & NORTH) && usr.y < world.maxy) usr.y++ if((direct & SOUTH) && usr.y > 1) usr.y-- if((direct & EAST) && usr.x < world.maxx) usr.x++ if((direct & WEST) && usr.x > 1) usr.x-- src.mob.dir = direct else ..() /* /mob/living/carbon/proc/cloak() //Buggy as heck because of the way updating clothing works (it clears all invisibility variables and sets them based on if you have a cloaking device on or not) //It also clears overlays so the overlay will dissapear and bluh, I don't want to add another variable sooo this is what you get I guess. //If the overlay dissapears you lose the cloaking too, so just retype cloak-self and it should work again //If you don't lay down or force yourself to update clothing via fire or whatever it should be good enough to use for the purpose of spying on shitlords I guess. set name = "Cloak self" set category = "Special Verbs" set desc = "Make yourself invisible!" if (!iscarbon(usr)) boutput(usr, "Sorry, you have to be alive!") return if(!(usr.invisibility == 100)) boutput(usr, "You are now cloaked") usr.set_clothing_icon_dirty() usr.overlays += image("icon" = 'icons/mob/mob.dmi', "icon_state" = "shield") usr.invisibility = 100 else boutput(usr, "You are no longer cloaked") usr.set_clothing_icon_dirty() usr.invisibility = 0 */ // // //ALL DONE //********************************************************************************************************* // //