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 += "" + for(var/datum/data/record/t in data_core.general) + dat += "" + dat += "
    NamePosition
    [t.fields["name"]][t.fields["rank"]]
    " + usr << browse(dat, "window=manifest;size=440x410") + if("DNA") + if(!check_rights(R_ADMIN)) + return + var/dat = "Showing DNA from blood.
    " + dat += "" + for(var/mob/living/carbon/human/H in mob_list) + if(H.dna && H.ckey) + dat += "" + dat += "
    NameDNABlood Type
    [H][H.dna.unique_enzymes][H.blood_type]
    " + usr << browse(dat, "window=DNA;size=440x410") + if("fingerprints") + if(!check_rights(R_ADMIN)) + return + var/dat = "Showing Fingerprints.
    " + dat += "" + for(var/mob/living/carbon/human/H in mob_list) + if(H.ckey) + if(H.dna && H.dna.uni_identity) + dat += "" + else if(H.dna && !H.dna.uni_identity) + dat += "" + else if(!H.dna) + dat += "" + dat += "
    NameFingerprints
    [H][md5(H.dna.uni_identity)]
    [H]H.dna.uni_identity = null
    [H]H.dna = null
    " + 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 += "" - for(var/datum/data/record/t in data_core.general) - dat += "" - dat += "
    NamePosition
    [t.fields["name"]][t.fields["rank"]]
    " - usr << browse(dat, "window=manifest;size=440x410") - if("DNA") - var/dat = "Showing DNA from blood.
    " - dat += "" - for(var/mob/living/carbon/human/H in mob_list) - if(H.dna && H.ckey) - dat += "" - dat += "
    NameDNABlood Type
    [H][H.dna.unique_enzymes][H.blood_type]
    " - usr << browse(dat, "window=DNA;size=440x410") - if("fingerprints") - var/dat = "Showing Fingerprints.
    " - dat += "" - for(var/mob/living/carbon/human/H in mob_list) - if(H.ckey) - if(H.dna && H.dna.uni_identity) - dat += "" - else if(H.dna && !H.dna.uni_identity) - dat += "" - else if(!H.dna) - dat += "" - dat += "
    NameFingerprints
    [H][md5(H.dna.uni_identity)]
    [H]H.dna.uni_identity = null
    [H]H.dna = null
    " - 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"