diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index e442f74d14f..4a0b0f4abb4 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -489,6 +489,20 @@
config.no_summon_events = 1
if("reactionary_explosions")
config.reactionary_explosions = 1
+ if("bombcap")
+ var/BombCap = text2num(value)
+ if (!BombCap)
+ continue
+ if (BombCap < 4)
+ BombCap = 4
+ if (BombCap > 128)
+ BombCap = 128
+
+ MAX_EX_DEVESTATION_RANGE = round(BombCap/4)
+ MAX_EX_HEAVY_RANGE = round(BombCap/2)
+ MAX_EX_LIGHT_RANGE = BombCap
+ MAX_EX_FLASH_RANGE = BombCap
+ MAX_EX_FLAME_RANGE = BombCap
else
diary << "Unknown setting in configuration: '[name]'"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 203d4b7e9a9..f068de3737a 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -399,91 +399,6 @@ var/global/floorIsLava = 0
usr << browse(dat, "window=admin2;size=210x180")
return
-/datum/admins/proc/Secrets()
- if(!check_rights(0)) return
-
- var/dat = "The first rule of adminbuse is: you don't talk about the adminbuse.
"
-
- dat +={"
- General Secrets
-
- Show Job Debug
- Admin Log
- Show Admin List
-
- "}
-
- if(check_rights(R_ADMIN,0))
- dat += {"
- Admin Secrets
-
- Cure all diseases currently in existence
- Bombing List
- Show current traitors and objectives
- Show last [length(lastsignalers)] signalers
- Show last [length(lawchanges)] law changes
- Show AI Laws
- Show Game Mode
- Show Crew Manifest
- List DNA (Blood)
- List Fingerprints
-
- Shuttles
-
- Move Ferry
- Move Mining Shuttle
- Move Labor Shuttle
-
- "}
-
- if(check_rights(R_FUN,0))
- dat += {"
- Fun Secrets
-
- Reset Thunderdome to default state
- Trigger a Virus Outbreak
- Turn all humans into monkeys
- Change the species of all humans
- Make all areas powered
- Make all areas unpowered
- Power all SMES
- Triple AI mode (needs to be used in the lobby)
- Everyone is the traitor
- Summon Guns
- Summon Magic
- Summon Events (Toggle)
- There can only be one!
- Make all players retarded
- Egalitarian Station Mode
- Break all lights
- Fix all lights
- The floor is lava! (DANGEROUS: extremely lame)
-
- "}
-
-/* DEATH SQUADS
-Send in a strike team
-*/
- if(check_rights(R_SERVER,0))
- dat += "Toggle bomb cap
"
-
- dat += "
"
-
- if(check_rights(R_DEBUG,0))
- dat += {"
- Security Level Elevated
-
- Change all maintenance doors to engie/brig access only
- Change all maintenance doors to brig access only
- Remove cap on security officers
-
- "}
-
- usr << browse(dat, "window=secrets")
- return
-
-
-
/////////////////////////////////////////////////////////////////////////////////////////////////admins2.dm merge
//i.e. buttons/verbs
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
new file mode 100644
index 00000000000..4390f383d8b
--- /dev/null
+++ b/code/modules/admin/secrets.dm
@@ -0,0 +1,612 @@
+/datum/admins/proc/Secrets()
+ if(!check_rights(0)) return
+
+ var/dat = "The first rule of adminbuse is: you don't talk about the adminbuse.
"
+
+ dat +={"
+ General Secrets
+
+ Show Job Debug
+ Admin Log
+ Show Admin List
+
+ "}
+
+ if(check_rights(R_ADMIN,0))
+ dat += {"
+ Admin Secrets
+
+ Cure all diseases currently in existence
+ Bombing List
+ Show current traitors and objectives
+ Show last [length(lastsignalers)] signalers
+ Show last [length(lawchanges)] law changes
+ Show AI Laws
+ Show Game Mode
+ Show Crew Manifest
+ List DNA (Blood)
+ List Fingerprints
+ Reset Thunderdome to default state
+
+ Shuttles
+
+ Move Ferry
+ Move Mining Shuttle
+ Move Labor Shuttle
+
+ "}
+
+ if(check_rights(R_FUN,0))
+ dat += {"
+ Fun Secrets
+
+
+ Trigger a Virus Outbreak
+ Turn all humans into monkeys
+ Change the species of all humans
+ Make all areas powered
+ Make all areas unpowered
+ Power all SMES
+ Triple AI mode (needs to be used in the lobby)
+ Everyone is the traitor
+ Summon Guns
+ Summon Magic
+ Summon Events (Toggle)
+ There can only be one!
+ Make all players retarded
+ Egalitarian Station Mode
+ Break all lights
+ Fix all lights
+ The floor is lava! (DANGEROUS: extremely lame)
+
+ Change bomb cap
+ "}
+
+ dat += "
"
+
+ if(check_rights(R_DEBUG,0))
+ dat += {"
+ Security Level Elevated
+
+ Change all maintenance doors to engie/brig access only
+ Change all maintenance doors to brig access only
+ Remove cap on security officers
+
+ "}
+
+ usr << browse(dat, "window=secrets")
+ return
+
+
+
+
+
+/datum/admins/proc/Secrets_topic(var/item,var/href_list)
+ var/datum/round_event/E
+ var/ok = 0
+ switch(item)
+ if("admin_log")
+ var/dat = "Admin Log
"
+ for(var/l in admin_log)
+ dat += "[l]"
+ if(!admin_log.len)
+ dat += "No-one has done anything this round!"
+ usr << browse(dat, "window=admin_log")
+
+ if("list_job_debug")
+ var/dat = "Job Debug info.
"
+ if(SSjob)
+ for(var/line in SSjob.job_debug)
+ dat += "[line]
"
+ dat+= "*******
"
+ for(var/datum/job/job in SSjob.occupations)
+ if(!job) continue
+ dat += "job: [job.title], current_positions: [job.current_positions], total_positions: [job.total_positions]
"
+ usr << browse(dat, "window=jobdebug;size=600x500")
+
+ if("show_admins")
+ var/dat = "Current admins:
"
+ if(admin_datums)
+ for(var/ckey in admin_datums)
+ var/datum/admins/D = admin_datums[ckey]
+ dat += "[ckey] - [D.rank.name]
"
+ usr << browse(dat, "window=showadmins;size=600x500")
+
+ if("tdomereset")
+ if(!check_rights(R_ADMIN))
+ return
+ var/delete_mobs = alert("Clear all mobs?","Confirm","Yes","No","Cancel")
+ if(delete_mobs == "Cancel")
+ return
+
+ log_admin("[key_name(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].", 1)
+ message_admins("[key_name_admin(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].")
+
+ var/area/thunderdome = locate(/area/tdome/arena)
+ if(delete_mobs == "Yes")
+ for(var/mob/living/mob in thunderdome)
+ qdel(mob) //Clear mobs
+ for(var/obj/obj in thunderdome)
+ if(!istype(obj,/obj/machinery/camera))
+ qdel(obj) //Clear objects
+
+ var/area/template = locate(/area/tdome/arena_source)
+ template.copy_contents_to(thunderdome)
+
+ if("clear_virus")
+
+ var/choice = input("Are you sure you want to cure all disease?") in list("Yes", "Cancel")
+ if(choice == "Yes")
+ message_admins("[key_name_admin(usr)] has cured all diseases.")
+ for(var/datum/disease/D in SSdisease.processing)
+ D.cure(D)
+
+ if("list_bombers")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Bombing List
"
+ for(var/l in bombers)
+ dat += text("[l]
")
+ usr << browse(dat, "window=bombers")
+
+ if("list_signalers")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Showing last [length(lastsignalers)] signalers.
"
+ for(var/sig in lastsignalers)
+ dat += "[sig]
"
+ usr << browse(dat, "window=lastsignalers;size=800x500")
+
+ if("list_lawchanges")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Showing last [length(lawchanges)] law changes.
"
+ for(var/sig in lawchanges)
+ dat += "[sig]
"
+ usr << browse(dat, "window=lawchanges;size=800x500")
+
+ if("check_antagonist")
+ if(!check_rights(R_ADMIN))
+ return
+ check_antagonists()
+
+ if("moveminingshuttle")
+ if(!check_rights(R_ADMIN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","ShM")
+ if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away"))
+ message_admins("[key_name_admin(usr)] moved mining shuttle")
+ log_admin("[key_name(usr)] moved the mining shuttle")
+
+ if("movelaborshuttle")
+ if(!check_rights(R_ADMIN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","ShL")
+ if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away"))
+ message_admins("[key_name_admin(usr)] moved labor shuttle")
+ log_admin("[key_name(usr)] moved the labor shuttle")
+
+ if("moveferry")
+ if(!check_rights(R_ADMIN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","ShF")
+ if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away"))
+ message_admins("[key_name_admin(usr)] moved the centcom ferry")
+ log_admin("[key_name(usr)] moved the centcom ferry")
+
+ if("kick_all_from_lobby")
+ if(!check_rights(R_ADMIN))
+ return
+ if(ticker && ticker.current_state == GAME_STATE_PLAYING)
+ var/afkonly = text2num(href_list["afkonly"])
+ if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes")
+ usr << "Kick clients from lobby aborted"
+ return
+ var/list/listkicked = kick_clients_in_lobby("The admin [usr.ckey] issued a 'kick all clients from lobby' command.", afkonly)
+ var/strkicked = ""
+ for(var/name in listkicked)
+ strkicked += "[name], "
+ message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
+ log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
+ else
+ usr << "You may only use this when the game is running"
+
+ if("showailaws")
+ if(!check_rights(R_ADMIN))
+ return
+ output_ai_laws()
+ if("showgm")
+ if(!check_rights(R_ADMIN))
+ return
+ if(!ticker)
+ alert("The game hasn't started yet!")
+ else if (ticker.mode)
+ alert("The game mode is [ticker.mode.name]")
+ else alert("For some reason there's a ticker, but not a game mode")
+ if("manifest")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Showing Crew Manifest.
"
+ dat += "| Name | Position |
"
+ for(var/datum/data/record/t in data_core.general)
+ dat += "| [t.fields["name"]] | [t.fields["rank"]] |
"
+ dat += "
"
+ usr << browse(dat, "window=manifest;size=440x410")
+ if("DNA")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Showing DNA from blood.
"
+ dat += "| Name | DNA | Blood Type |
"
+ for(var/mob/living/carbon/human/H in mob_list)
+ if(H.dna && H.ckey)
+ dat += "| [H] | [H.dna.unique_enzymes] | [H.blood_type] |
"
+ dat += "
"
+ usr << browse(dat, "window=DNA;size=440x410")
+ if("fingerprints")
+ if(!check_rights(R_ADMIN))
+ return
+ var/dat = "Showing Fingerprints.
"
+ dat += "| Name | Fingerprints |
"
+ for(var/mob/living/carbon/human/H in mob_list)
+ if(H.ckey)
+ if(H.dna && H.dna.uni_identity)
+ dat += "| [H] | [md5(H.dna.uni_identity)] |
"
+ else if(H.dna && !H.dna.uni_identity)
+ dat += "| [H] | H.dna.uni_identity = null |
"
+ else if(!H.dna)
+ dat += "| [H] | H.dna = null |
"
+ dat += "
"
+ usr << browse(dat, "window=fingerprints;size=440x410")
+
+ if("monkey")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","M")
+ for(var/mob/living/carbon/human/H in mob_list)
+ spawn(0)
+ H.monkeyize()
+ ok = 1
+
+ if("allspecies")
+ if(!check_rights(R_FUN))
+ return
+ var/result = input(usr, "Please choose a new species","Species") as null|anything in species_list
+ if(result)
+ log_admin("[key_name(usr)] turned all humans into [result]", 1)
+ message_admins("\blue [key_name_admin(usr)] turned all humans into [result]")
+ var/newtype = species_list[result]
+ for(var/mob/living/carbon/human/H in mob_list)
+ hardset_dna(H, null, null, null, null, newtype)
+ H.regenerate_icons()
+
+ if("corgi")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","M")
+ for(var/mob/living/carbon/human/H in mob_list)
+ spawn(0)
+ H.corgize()
+ ok = 1
+
+ if("tripleAI")
+ if(!check_rights(R_FUN))
+ return
+ usr.client.triple_ai()
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","TriAI")
+
+ if("power")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","P")
+ log_admin("[key_name(usr)] made all areas powered", 1)
+ message_admins("[key_name_admin(usr)] made all areas powered")
+ power_restore()
+
+ if("unpower")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","UP")
+ log_admin("[key_name(usr)] made all areas unpowered", 1)
+ message_admins("[key_name_admin(usr)] made all areas unpowered")
+ power_failure()
+
+ if("quickpower")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","QP")
+ log_admin("[key_name(usr)] made all SMESs powered", 1)
+ message_admins("[key_name_admin(usr)] made all SMESs powered")
+ power_restore_quick()
+
+ if("traitor_all")
+ if(!check_rights(R_FUN))
+ return
+ if(!ticker)
+ alert("The game hasn't started yet!")
+ return
+ var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN)
+ if(!objective)
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","TA([objective])")
+ for(var/mob/living/carbon/human/H in player_list)
+ if(H.stat == 2 || !H.client || !H.mind) continue
+ if(is_special_character(H)) continue
+ //traitorize(H, objective, 0)
+ ticker.mode.traitors += H.mind
+ H.mind.special_role = "traitor"
+ var/datum/objective/new_objective = new
+ new_objective.owner = H
+ new_objective.explanation_text = objective
+ H.mind.objectives += new_objective
+ ticker.mode.greet_traitor(H.mind)
+ //ticker.mode.forge_traitor_objectives(H.mind)
+ ticker.mode.finalize_traitor(H.mind)
+ for(var/mob/living/silicon/A in player_list)
+ if(A.stat == 2 || !A.client || !A.mind) continue
+ if(ispAI(A)) continue
+ else if(is_special_character(A)) continue
+ ticker.mode.traitors += A.mind
+ A.mind.special_role = "traitor"
+ var/datum/objective/new_objective = new
+ new_objective.owner = A
+ new_objective.explanation_text = objective
+ A.mind.objectives += new_objective
+ ticker.mode.greet_traitor(A.mind)
+ ticker.mode.finalize_traitor(A.mind)
+ message_admins("[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]")
+ log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
+
+ if("changebombcap")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","BC")
+
+ var/newBombCap = input(usr,"What would you like the new bomb cap to be. (entered as the light damage range (the 3rd number in common (1,2,3) notation)) Must be between 4 and 128)", "New Bomb Cap", MAX_EX_LIGHT_RANGE) as num|null
+ if (newBombCap < 4)
+ return
+ if (newBombCap > 128)
+ newBombCap = 128
+
+ MAX_EX_DEVESTATION_RANGE = round(newBombCap/4)
+ MAX_EX_HEAVY_RANGE = round(newBombCap/2)
+ MAX_EX_LIGHT_RANGE = newBombCap
+ //I don't know why these are their own variables, but fuck it, they are.
+ MAX_EX_FLASH_RANGE = newBombCap
+ MAX_EX_FLAME_RANGE = newBombCap
+
+ message_admins("[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]")
+ log_admin("[key_name(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]")
+
+
+ if("lightsout")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","LO")
+ message_admins("[key_name_admin(usr)] has broke a lot of lights")
+ E = new /datum/round_event/electrical_storm{lightsoutAmount = 2}()
+
+ if("blackout")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","BO")
+ message_admins("[key_name_admin(usr)] broke all lights")
+ for(var/obj/machinery/light/L in world)
+ L.broken()
+
+ if("whiteout")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","WO")
+ message_admins("[key_name_admin(usr)] fixed all lights")
+ for(var/obj/machinery/light/L in world)
+ L.fix()
+
+ if("floorlava")
+ if(!check_rights(R_FUN))
+ return
+ if(floorIsLava)
+ usr << "The floor is lava already."
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","LF")
+
+ //Options
+ var/length = input(usr, "How long will the lava last? (in seconds)", "Length", 180) as num
+ length = min(abs(length), 1200)
+
+ var/damage = input(usr, "How deadly will the lava be?", "Damage", 2) as num
+ damage = min(abs(damage), 100)
+
+ var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "YES!", "Nah")
+ if(sure == "Nah")
+ return
+ floorIsLava = 1
+
+ message_admins("[key_name_admin(usr)] made the floor LAVA! It'll last [length] seconds and it will deal [damage] damage to everyone.")
+
+ for(var/turf/simulated/floor/F in world)
+ if(F.z == ZLEVEL_STATION)
+ F.name = "lava"
+ F.desc = "The floor is LAVA!"
+ F.overlays += "lava"
+ F.lava = 1
+
+ spawn(0)
+ for(var/i = i, i < length, i++) // 180 = 3 minutes
+ if(damage)
+ for(var/mob/living/carbon/L in living_mob_list)
+ if(istype(L.loc, /turf/simulated/floor)) // Are they on LAVA?!
+ var/turf/simulated/floor/F = L.loc
+ if(F.lava)
+ var/safe = 0
+ for(var/obj/structure/O in F.contents)
+ if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor!
+ safe = 1
+ break
+ if(!safe)
+ L.adjustFireLoss(damage)
+
+
+ sleep(10)
+
+ for(var/turf/simulated/floor/F in world) // Reset everything.
+ if(F.z == ZLEVEL_STATION)
+ F.name = initial(F.name)
+ F.desc = initial(F.desc)
+ F.overlays.Cut()
+ F.lava = 0
+ F.update_icon()
+ floorIsLava = 0
+ return
+
+ if("virus")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","V")
+ switch(alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose"))
+ if("Make Your Own")
+ AdminCreateVirus(usr.client)
+ if("Random")
+ E = new /datum/round_event/disease_outbreak()
+ if("Choose")
+ var/virus = input("Choose the virus to spread", "BIOHAZARD") as null|anything in typesof(/datum/disease)
+ E = new /datum/round_event/disease_outbreak{}()
+ var/datum/round_event/disease_outbreak/DO = E
+ DO.virus_type = virus
+
+ if("retardify")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","RET")
+ for(var/mob/living/carbon/human/H in player_list)
+ H << "You suddenly feel stupid."
+ H.setBrainLoss(60)
+ message_admins("[key_name_admin(usr)] made everybody retarded")
+
+ if("eagles")//SCRAW
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","EgL")
+ for(var/obj/machinery/door/airlock/W in world)
+ if(W.z == ZLEVEL_STATION && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
+ W.req_access = list()
+ message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
+ priority_announce("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/AI/commandreport.ogg')
+
+ if("guns")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SG")
+ var/survivor_probability = 0
+ switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
+ if("Some Antags")
+ survivor_probability = 25
+ if("All Antags!")
+ survivor_probability = 100
+
+ rightandwrong(0, usr, survivor_probability)
+
+ if("magic")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SM")
+ var/survivor_probability = 0
+ switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
+ if("Some Antags")
+ survivor_probability = 25
+ if("All Antags!")
+ survivor_probability = 100
+
+ rightandwrong(1, usr, survivor_probability)
+
+ if("events")
+ if(!check_rights(R_FUN))
+ return
+ if(!SSevent.wizardmode)
+ if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes")
+ summonevents()
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SE")
+
+ else
+ switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing"))
+ if("Intensify Summon Events")
+ summonevents()
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","SE")
+ if("Turn Off Summon Events")
+ SSevent.toggleWizardmode()
+ SSevent.resetFrequency()
+
+ if("dorf")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","DF")
+ for(var/mob/living/carbon/human/B in mob_list)
+ B.facial_hair_style = "Dward Beard"
+ B.update_hair()
+ message_admins("[key_name_admin(usr)] activated dorf mode")
+
+ if("onlyone")
+ if(!check_rights(R_FUN))
+ return
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","OO")
+ usr.client.only_one()
+// message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)")
+
+ if("maint_access_brig")
+ if(!check_rights(R_DEBUG))
+ return
+ for(var/obj/machinery/door/airlock/maintenance/M in world)
+ M.check_access()
+ if (access_maint_tunnels in M.req_access)
+ M.req_access = list(access_brig)
+ message_admins("[key_name_admin(usr)] made all maint doors brig access-only.")
+ if("maint_access_engiebrig")
+ if(!check_rights(R_DEBUG))
+ return
+ for(var/obj/machinery/door/airlock/maintenance/M in world)
+ M.check_access()
+ if (access_maint_tunnels in M.req_access)
+ M.req_access = list()
+ M.req_one_access = list(access_brig,access_engine)
+ message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
+ if("infinite_sec")
+ if(!check_rights(R_DEBUG))
+ return
+ var/datum/job/J = SSjob.GetJob("Security Officer")
+ if(!J) return
+ J.total_positions = -1
+ J.spawn_positions = -1
+ message_admins("[key_name_admin(usr)] has removed the cap on security officers.")
+ if(E)
+ E.processing = 0
+ if(E.announceWhen>0)
+ if(alert(usr, "Would you like to alert the crew?", "Alert", "Yes", "No") == "No")
+ E.announceWhen = -1
+ E.processing = 1
+ if (usr)
+ log_admin("[key_name(usr)] used secret [item]")
+ if (ok)
+ world << text("A secret has been activated by []!", usr.key)
\ No newline at end of file
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ccf4be2b6b6..d73dce75058 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1812,465 +1812,8 @@
break
return
- else if(href_list["secretsfun"])
- if(!check_rights(R_FUN)) return
- var/datum/round_event/E
- var/ok = 0
- switch(href_list["secretsfun"])
- if("tdomereset")
- var/delete_mobs = alert("Clear all mobs?","Confirm","Yes","No","Cancel")
- if(delete_mobs == "Cancel")
- return
-
- log_admin("[key_name(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].", 1)
- message_admins("[key_name_admin(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].")
-
- var/area/thunderdome = locate(/area/tdome/arena)
- if(delete_mobs == "Yes")
- for(var/mob/living/mob in thunderdome)
- qdel(mob) //Clear mobs
- for(var/obj/obj in thunderdome)
- if(!istype(obj,/obj/machinery/camera))
- qdel(obj) //Clear objects
-
- var/area/template = locate(/area/tdome/arena_source)
- template.copy_contents_to(thunderdome)
-
- if("monkey")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","M")
- for(var/mob/living/carbon/human/H in mob_list)
- spawn(0)
- H.monkeyize()
- ok = 1
- if("allspecies")
- var/result = input(usr, "Please choose a new species","Species") as null|anything in species_list
- if(result)
- log_admin("[key_name(usr)] turned all humans into [result]", 1)
- message_admins("\blue [key_name_admin(usr)] turned all humans into [result]")
- var/newtype = species_list[result]
- for(var/mob/living/carbon/human/H in mob_list)
- hardset_dna(H, null, null, null, null, newtype)
- H.regenerate_icons()
- if("corgi")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","M")
- for(var/mob/living/carbon/human/H in mob_list)
- spawn(0)
- H.corgize()
- ok = 1
-/* DEATH SQUADS
- if("striketeam")
- if(usr.client.strike_team())
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Strike")
-*/
- if("tripleAI")
- usr.client.triple_ai()
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","TriAI")
- if("power")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","P")
- log_admin("[key_name(usr)] made all areas powered", 1)
- message_admins("[key_name_admin(usr)] made all areas powered")
- power_restore()
- if("unpower")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","UP")
- log_admin("[key_name(usr)] made all areas unpowered", 1)
- message_admins("[key_name_admin(usr)] made all areas unpowered")
- power_failure()
- if("quickpower")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","QP")
- log_admin("[key_name(usr)] made all SMESs powered", 1)
- message_admins("[key_name_admin(usr)] made all SMESs powered")
- power_restore_quick()
- if("traitor_all")
- if(!ticker)
- alert("The game hasn't started yet!")
- return
- var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN)
- if(!objective)
- return
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","TA([objective])")
- for(var/mob/living/carbon/human/H in player_list)
- if(H.stat == 2 || !H.client || !H.mind) continue
- if(is_special_character(H)) continue
- //traitorize(H, objective, 0)
- ticker.mode.traitors += H.mind
- H.mind.special_role = "traitor"
- var/datum/objective/new_objective = new
- new_objective.owner = H
- new_objective.explanation_text = objective
- H.mind.objectives += new_objective
- ticker.mode.greet_traitor(H.mind)
- //ticker.mode.forge_traitor_objectives(H.mind)
- ticker.mode.finalize_traitor(H.mind)
- for(var/mob/living/silicon/A in player_list)
- if(A.stat == 2 || !A.client || !A.mind) continue
- if(ispAI(A)) continue
- else if(is_special_character(A)) continue
- ticker.mode.traitors += A.mind
- A.mind.special_role = "traitor"
- var/datum/objective/new_objective = new
- new_objective.owner = A
- new_objective.explanation_text = objective
- A.mind.objectives += new_objective
- ticker.mode.greet_traitor(A.mind)
- ticker.mode.finalize_traitor(A.mind)
- message_admins("[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]")
- log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
- if("togglebombcap")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","BC")
- switch(MAX_EX_LIGHT_RANGE)
- if(14)
- MAX_EX_LIGHT_RANGE = 16
- MAX_EX_HEAVY_RANGE = 8
- MAX_EX_DEVESTATION_RANGE = 4
- if(16)
- MAX_EX_LIGHT_RANGE = 20
- MAX_EX_HEAVY_RANGE = 10
- MAX_EX_DEVESTATION_RANGE = 5
- if(20)
- MAX_EX_LIGHT_RANGE = 28
- MAX_EX_HEAVY_RANGE = 14
- MAX_EX_DEVESTATION_RANGE = 7
- if(28)
- MAX_EX_LIGHT_RANGE = 56
- MAX_EX_HEAVY_RANGE = 28
- MAX_EX_DEVESTATION_RANGE = 14
- if(56)
- MAX_EX_LIGHT_RANGE = 128
- MAX_EX_HEAVY_RANGE = 64
- MAX_EX_DEVESTATION_RANGE = 32
- if(128)
- MAX_EX_LIGHT_RANGE = 14
- MAX_EX_HEAVY_RANGE = 7
- MAX_EX_DEVESTATION_RANGE = 3
- message_admins("[key_name_admin(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]")
- log_admin("[key_name(usr)] changed the bomb cap to [MAX_EX_DEVESTATION_RANGE], [MAX_EX_HEAVY_RANGE], [MAX_EX_LIGHT_RANGE]")
-
- if("lightsout")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","LO")
- message_admins("[key_name_admin(usr)] has broke a lot of lights")
- E = new /datum/round_event/electrical_storm{lightsoutAmount = 2}()
- if("blackout")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","BO")
- message_admins("[key_name_admin(usr)] broke all lights")
- for(var/obj/machinery/light/L in world)
- L.broken()
- if("whiteout")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","WO")
- message_admins("[key_name_admin(usr)] fixed all lights")
- for(var/obj/machinery/light/L in world)
- L.fix()
- if("floorlava")
- if(floorIsLava)
- usr << "The floor is lava already."
- return
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","LF")
-
- //Options
- var/length = input(usr, "How long will the lava last? (in seconds)", "Length", 180) as num
- length = min(abs(length), 1200)
-
- var/damage = input(usr, "How deadly will the lava be?", "Damage", 2) as num
- damage = min(abs(damage), 100)
-
- var/sure = alert(usr, "Are you sure you want to do this?", "Confirmation", "YES!", "Nah")
- if(sure == "Nah")
- return
- floorIsLava = 1
-
- message_admins("[key_name_admin(usr)] made the floor LAVA! It'll last [length] seconds and it will deal [damage] damage to everyone.")
-
- for(var/turf/simulated/floor/F in world)
- if(F.z == ZLEVEL_STATION)
- F.name = "lava"
- F.desc = "The floor is LAVA!"
- F.overlays += "lava"
- F.lava = 1
-
- spawn(0)
- for(var/i = i, i < length, i++) // 180 = 3 minutes
- if(damage)
- for(var/mob/living/carbon/L in living_mob_list)
- if(istype(L.loc, /turf/simulated/floor)) // Are they on LAVA?!
- var/turf/simulated/floor/F = L.loc
- if(F.lava)
- var/safe = 0
- for(var/obj/structure/O in F.contents)
- if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor!
- safe = 1
- break
- if(!safe)
- L.adjustFireLoss(damage)
-
-
- sleep(10)
-
- for(var/turf/simulated/floor/F in world) // Reset everything.
- if(F.z == ZLEVEL_STATION)
- F.name = initial(F.name)
- F.desc = initial(F.desc)
- F.overlays.Cut()
- F.lava = 0
- F.update_icon()
- floorIsLava = 0
- return
- if("virus")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","V")
- switch(alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose"))
- if("Make Your Own")
- AdminCreateVirus(usr.client)
- if("Random")
- E = new /datum/round_event/disease_outbreak()
- if("Choose")
- var/virus = input("Choose the virus to spread", "BIOHAZARD") as null|anything in typesof(/datum/disease)
- E = new /datum/round_event/disease_outbreak{}()
- var/datum/round_event/disease_outbreak/DO = E
- DO.virus_type = virus
- if("retardify")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","RET")
- for(var/mob/living/carbon/human/H in player_list)
- H << "You suddenly feel stupid."
- H.setBrainLoss(60)
- message_admins("[key_name_admin(usr)] made everybody retarded")
- if("eagles")//SCRAW
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","EgL")
- for(var/obj/machinery/door/airlock/W in world)
- if(W.z == ZLEVEL_STATION && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
- W.req_access = list()
- message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
- priority_announce("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/AI/commandreport.ogg')
- if("guns")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SG")
- var/survivor_probability = 0
- switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
- if("Some Antags")
- survivor_probability = 25
- if("All Antags!")
- survivor_probability = 100
-
- rightandwrong(0, usr, survivor_probability)
- if("magic")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SM")
- var/survivor_probability = 0
- switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
- if("Some Antags")
- survivor_probability = 25
- if("All Antags!")
- survivor_probability = 100
-
- rightandwrong(1, usr, survivor_probability)
- if("events")
- if(!SSevent.wizardmode)
- if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes")
- summonevents()
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SE")
-
- else
- switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing"))
- if("Intensify Summon Events")
- summonevents()
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SE")
- if("Turn Off Summon Events")
- SSevent.toggleWizardmode()
- SSevent.resetFrequency()
- if("dorf")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","DF")
- for(var/mob/living/carbon/human/B in mob_list)
- B.facial_hair_style = "Dward Beard"
- B.update_hair()
- message_admins("[key_name_admin(usr)] activated dorf mode")
- if("onlyone")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","OO")
- usr.client.only_one()
-// message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)")
- if(E)
- E.processing = 0
- if(E.announceWhen>0)
- if(alert(usr, "Would you like to alert the crew?", "Alert", "Yes", "No") == "No")
- E.announceWhen = -1
- E.processing = 1
- if(usr)
- log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
- if (ok)
- world << text("A secret has been activated by []!", usr.key)
-
- else if(href_list["secretsadmin"])
- if(!check_rights(R_ADMIN)) return
-
- var/ok = 0
- switch(href_list["secretsadmin"])
- if("clear_virus")
- var/choice = input("Are you sure you want to cure all disease?") in list("Yes", "Cancel")
- if(choice == "Yes")
- message_admins("[key_name_admin(usr)] has cured all diseases.")
- for(var/datum/disease/D in SSdisease.processing)
- D.cure(D)
- if("list_bombers")
- var/dat = "Bombing List
"
- for(var/l in bombers)
- dat += text("[l]
")
- usr << browse(dat, "window=bombers")
- if("list_signalers")
- var/dat = "Showing last [length(lastsignalers)] signalers.
"
- for(var/sig in lastsignalers)
- dat += "[sig]
"
- usr << browse(dat, "window=lastsignalers;size=800x500")
- if("list_lawchanges")
- var/dat = "Showing last [length(lawchanges)] law changes.
"
- for(var/sig in lawchanges)
- dat += "[sig]
"
- usr << browse(dat, "window=lawchanges;size=800x500")
- if("check_antagonist")
- check_antagonists()
-
- if("moveminingshuttle")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShM")
- if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away"))
- message_admins("[key_name_admin(usr)] moved mining shuttle")
- log_admin("[key_name(usr)] moved the mining shuttle")
-
- if("movelaborshuttle")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShL")
- if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away"))
- message_admins("[key_name_admin(usr)] moved labor shuttle")
- log_admin("[key_name(usr)] moved the labor shuttle")
-
- if("moveferry")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShF")
- if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away"))
- message_admins("[key_name_admin(usr)] moved the centcom ferry")
- log_admin("[key_name(usr)] moved the centcom ferry")
-
- if("kick_all_from_lobby")
- if(ticker && ticker.current_state == GAME_STATE_PLAYING)
- var/afkonly = text2num(href_list["afkonly"])
- if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes")
- usr << "Kick clients from lobby aborted"
- return
- var/list/listkicked = kick_clients_in_lobby("The admin [usr.ckey] issued a 'kick all clients from lobby' command.", afkonly)
- var/strkicked = ""
- for(var/name in listkicked)
- strkicked += "[name], "
- message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
- log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
- else
- usr << "You may only use this when the game is running"
- if("showailaws")
- output_ai_laws()
- if("showgm")
- if(!ticker)
- alert("The game hasn't started yet!")
- else if (ticker.mode)
- alert("The game mode is [ticker.mode.name]")
- else alert("For some reason there's a ticker, but not a game mode")
- if("manifest")
- var/dat = "Showing Crew Manifest.
"
- dat += "| Name | Position |
"
- for(var/datum/data/record/t in data_core.general)
- dat += "| [t.fields["name"]] | [t.fields["rank"]] |
"
- dat += "
"
- usr << browse(dat, "window=manifest;size=440x410")
- if("DNA")
- var/dat = "Showing DNA from blood.
"
- dat += "| Name | DNA | Blood Type |
"
- for(var/mob/living/carbon/human/H in mob_list)
- if(H.dna && H.ckey)
- dat += "| [H] | [H.dna.unique_enzymes] | [H.blood_type] |
"
- dat += "
"
- usr << browse(dat, "window=DNA;size=440x410")
- if("fingerprints")
- var/dat = "Showing Fingerprints.
"
- dat += "| Name | Fingerprints |
"
- for(var/mob/living/carbon/human/H in mob_list)
- if(H.ckey)
- if(H.dna && H.dna.uni_identity)
- dat += "| [H] | [md5(H.dna.uni_identity)] |
"
- else if(H.dna && !H.dna.uni_identity)
- dat += "| [H] | H.dna.uni_identity = null |
"
- else if(!H.dna)
- dat += "| [H] | H.dna = null |
"
- dat += "
"
- usr << browse(dat, "window=fingerprints;size=440x410")
- else
- if (usr)
- log_admin("[key_name(usr)] used secret [href_list["secretsadmin"]]")
- if (ok)
- world << text("A secret has been activated by []!", usr.key)
-
- else if(href_list["secretsgeneral"])
- switch(href_list["secretsgeneral"])
- if("spawn_objects")
- var/dat = "Admin Log
"
- for(var/l in admin_log)
- dat += "[l]"
- if(!admin_log.len)
- dat += "No-one has done anything this round!"
- usr << browse(dat, "window=admin_log")
- if("list_job_debug")
- var/dat = "Job Debug info.
"
- if(SSjob)
- for(var/line in SSjob.job_debug)
- dat += "[line]
"
- dat+= "*******
"
- for(var/datum/job/job in SSjob.occupations)
- if(!job) continue
- dat += "job: [job.title], current_positions: [job.current_positions], total_positions: [job.total_positions]
"
- usr << browse(dat, "window=jobdebug;size=600x500")
- if("show_admins")
- var/dat = "Current admins:
"
- if(admin_datums)
- for(var/ckey in admin_datums)
- var/datum/admins/D = admin_datums[ckey]
- dat += "[ckey] - [D.rank.name]
"
- usr << browse(dat, "window=showadmins;size=600x500")
-
- else if(href_list["secretscoder"])
- if(!check_rights(R_DEBUG)) return
-
- switch(href_list["secretscoder"])
- if("maint_access_brig")
- for(var/obj/machinery/door/airlock/maintenance/M in world)
- M.check_access()
- if (access_maint_tunnels in M.req_access)
- M.req_access = list(access_brig)
- message_admins("[key_name_admin(usr)] made all maint doors brig access-only.")
- if("maint_access_engiebrig")
- for(var/obj/machinery/door/airlock/maintenance/M in world)
- M.check_access()
- if (access_maint_tunnels in M.req_access)
- M.req_access = list()
- M.req_one_access = list(access_brig,access_engine)
- message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
- if("infinite_sec")
- var/datum/job/J = SSjob.GetJob("Security Officer")
- if(!J) return
- J.total_positions = -1
- J.spawn_positions = -1
- message_admins("[key_name_admin(usr)] has removed the cap on security officers.")
+ else if(href_list["secrets"])
+ Secrets_topic(href_list["secrets"],href_list)
else if(href_list["ac_view_wanted"]) //Admin newscaster Topic() stuff be here
src.admincaster_screen = 18 //The ac_ prefix before the hrefs stands for AdminCaster.
diff --git a/config/game_options.txt b/config/game_options.txt
index ed44c926e10..9c62544f085 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -280,3 +280,18 @@ MIDROUND_ANTAG_LIFE_CHECK 0.7
//Uncomment for explosions that react to doors and walls
REACTIONARY_EXPLOSIONS
+### Configure the bomb cap
+## This caps all explosions to the specified range. Used for both balance reasons and to prevent overloading the server and lagging the game out.
+## This is given as the 3rd number(light damage) in the standard (1,2,3) explosion notation. The other numbers are derived by dividing by 2 and 4.
+## eg: If you give the number 20. The bomb cap will be 5,10,20.
+## Can be any number between 4 and 128, some examples are provided below.
+
+## Default (3,7,14)
+BOMBCAP 14
+## One 'step' up (4,8,16) (recommended if you enable REACTIONARY_EXPLOSIONS above)
+#BOMBCAP 16
+## LagHell (7,14,28)
+#BOMBCAP 28
+
+
+
diff --git a/tgstation.dme b/tgstation.dme
index 886a6383bea..d9cf55015de 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -803,6 +803,7 @@
#include "code\modules\admin\newbanjob.dm"
#include "code\modules\admin\player_notes.dm"
#include "code\modules\admin\player_panel.dm"
+#include "code\modules\admin\secrets.dm"
#include "code\modules\admin\topic.dm"
#include "code\modules\admin\DB ban\functions.dm"
#include "code\modules\admin\permissionverbs\permissionedit.dm"