diff --git a/baystation12.dme b/baystation12.dme
index ba02f28f65..7bc13ae072 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -828,6 +828,7 @@
#include "code\modules\admin\admin_investigate.dm"
#include "code\modules\admin\admin_memo.dm"
#include "code\modules\admin\admin_ranks.dm"
+#include "code\modules\admin\admin_secrets.dm"
#include "code\modules\admin\admin_verbs.dm"
#include "code\modules\admin\banjob.dm"
#include "code\modules\admin\create_mob.dm"
@@ -842,6 +843,7 @@
#include "code\modules\admin\ToRban.dm"
#include "code\modules\admin\DB ban\functions.dm"
#include "code\modules\admin\permissionverbs\permissionedit.dm"
+#include "code\modules\admin\secrets\gravity.dm"
#include "code\modules\admin\verbs\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminpm.dm"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 447178ecb3..dba6519296 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -604,109 +604,17 @@ proc/admin_notice(var/message, var/rights)
if(!check_rights(0)) return
var/dat = "The first rule of adminbuse is: you don't talk about the adminbuse.
"
-
- if(check_rights(R_ADMIN,0))
- dat += {"
- Admin Secrets
-
- 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
-
- "}
-
- if(check_rights(R_FUN,0))
- dat += {"
- 'Random' Events
-
- Toggle station artificial gravity
- Spawn a wave of meteors (aka lagocolyptic shower)
- Spawn a gravitational anomaly (aka lagitational anomolag)
- Spawn wormholes
- Spawn blob
- Trigger a Xenomorph infestation
- Trigger a Cortical Borer infestation
- Spawn an Alien silently
- Trigger a Spider infestation
- Send in a space ninja
- Send in a strike team
- Trigger an Carp migration
- Irradiate the station
- Trigger a Prison Break
- Trigger a Virus Outbreak
- Spawn an Immovable Rod
- Toggle a "lights out" event
- Spawn an Ion Storm
- Spawn Space-Vines
- Trigger a communication blackout
-
- Fun Secrets
-
- Remove 'internal' clothing
- Remove ALL clothing
- Turn all humans into monkeys
- Remove firesuits, grilles, and pods
- Make all areas powered
- Make all areas unpowered
- Power all SMES
- Toggle Prison Shuttle Status(Use with S/R)
- Send Prison Shuttle
- Return Prison Shuttle
- Warp all Players to Prison
- Triple AI mode (needs to be used in the lobby)
- Everyone is the traitor
- There can only be one!
- Ghost Mode
- Make all players retarded
- Make all items look like guns
- Paintball Mode
- Japanese Animes Mode
- Egalitarian Station Mode
- Launch a shuttle
- Force launch a shuttle
- Jump a shuttle
- Move a shuttle
- Break all lights
- Fix all lights
- Best Friend AI
- The floor is lava! (DANGEROUS: extremely lame)
- "}
-
- if(check_rights(R_SERVER,0))
- dat += "Toggle bomb cap
"
-
- if(check_rights(R_SERVER|R_FUN,0))
- dat += {"
-
- Final Solutions
- (Warning, these will end the round!)
-
- Summon Nar-Sie
- Start a Supermatter Cascade
- "}
-
- 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
-
- Coder Secrets
-
- Show Job Debug
- Admin Log
-
- "}
+ for(var/datum/admin_secret_category/category in admin_secrets.categories)
+ if(!category.can_view(usr))
+ continue
+ dat += "[category.name]
"
+ if(category.desc)
+ dat += "[category.desc]
"
+ dat += "
"
+ for(var/datum/admin_secret_item/item in category.items)
+ if(!item.can_execute(usr))
+ continue
+ dat += "[item.name]
"
usr << browse(dat, "window=secrets")
return
diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm
new file mode 100644
index 0000000000..87c04ea625
--- /dev/null
+++ b/code/modules/admin/admin_secrets.dm
@@ -0,0 +1,66 @@
+var/datum/admin_secrets/admin_secrets = new()
+
+/datum/admin_secrets
+ var/list/datum/admin_secret_category/categories
+ var/list/datum/admin_secret_item/items
+
+/datum/admin_secrets/New()
+ ..()
+ categories = init_subtypes(/datum/admin_secret_category)
+ items = list()
+ var/list/category_assoc = list()
+ for(var/datum/category in categories)
+ category_assoc[category.type] = category
+
+ for(var/item_type in (typesof(/datum/admin_secret_item) - /datum/admin_secret_item))
+ var/datum/admin_secret_item/secret_item = item_type
+ if(!initial(secret_item.name))
+ continue
+
+ var/datum/admin_secret_item/item = new item_type()
+ var/datum/admin_secret_category/category = category_assoc[item.category]
+ category.items += item
+ items += item
+
+/datum/admin_secret_category
+ var/name = ""
+ var/desc = ""
+ var/list/datum/admin_secret_item/items
+
+/datum/admin_secret_category
+ ..()
+ items = list()
+
+/datum/admin_secret_category/proc/can_view(var/mob/user)
+ for(var/datum/admin_secret_item/item in items)
+ if(item.can_execute(user))
+ return 1
+ return 0
+
+/datum/admin_secret_item
+ var/name = ""
+ var/category = null
+ var/permissions = R_HOST
+
+/datum/admin_secret_item/proc/can_execute(var/mob/user)
+ return check_rights(permissions, 0, user)
+
+/datum/admin_secret_item/proc/execute(var/mob/user)
+ if(!can_execute(user))
+ return 0
+
+ log_admin("[key_name(user)] used secret [name]")
+ return 1
+
+/*************************
+* Pre-defined categories *
+*************************/
+/datum/admin_secret_category/random_events
+ name = "'Random' Events"
+
+/*************************
+* Pre-defined base items *
+*************************/
+/datum/admin_secret_item/random_event
+ category = /datum/admin_secret_category/random_events
+ permissions = R_FUN
diff --git a/code/modules/admin/secrets/gravity.dm b/code/modules/admin/secrets/gravity.dm
new file mode 100644
index 0000000000..8ff9c915d4
--- /dev/null
+++ b/code/modules/admin/secrets/gravity.dm
@@ -0,0 +1,29 @@
+/**********
+* Gravity *
+**********/
+/datum/admin_secret_item/random_event/gravity
+ name = "Toggle station artificial gravity"
+
+/datum/admin_secret_item/random_event/gravity/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ if(!(ticker && ticker.mode))
+ user << "Please wait until the game starts! Not sure how it will work otherwise."
+ return
+
+ gravity_is_on = !gravity_is_on
+ for(var/area/A in world)
+ A.gravitychange(gravity_is_on,A)
+
+ feedback_inc("admin_secrets_fun_used",1)
+ feedback_add_details("admin_secrets_fun_used","Grav")
+ if(gravity_is_on)
+ log_admin("[key_name(usr)] toggled gravity on.", 1)
+ message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1)
+ command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
+ else
+ log_admin("[key_name(usr)] toggled gravity off.", 1)
+ message_admins("\blue [key_name_admin(usr)] toggled gravity off.", 1)
+ command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index e681c9ba95..7f46170b5e 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1645,739 +1645,9 @@
break
return
- else if(href_list["secretsfun"])
- if(!check_rights(R_FUN)) return
-
- var/ok = 0
- switch(href_list["secretsfun"])
- if("sec_clothes")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SC")
- for(var/obj/item/clothing/under/O in world)
- qdel(O)
- ok = 1
- if("sec_all_clothes")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SAC")
- for(var/obj/item/clothing/O in world)
- qdel(O)
- ok = 1
- if("sec_classic1")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SC1")
- for(var/obj/item/clothing/suit/fire/O in world)
- qdel(O)
- for(var/obj/structure/grille/O in world)
- qdel(O)
-/* for(var/obj/machinery/vehicle/pod/O in world)
- for(var/mob/M in src)
- M.loc = src.loc
- if (M.client)
- M.client.perspective = MOB_PERSPECTIVE
- M.client.eye = M
- qdel(O)
- ok = 1*/
- 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("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
- 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("gravity")
- if(!(ticker && ticker.mode))
- usr << "Please wait until the game starts! Not sure how it will work otherwise."
- return
- gravity_is_on = !gravity_is_on
- for(var/area/A in world)
- A.gravitychange(gravity_is_on,A)
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Grav")
- if(gravity_is_on)
- log_admin("[key_name(usr)] toggled gravity on.", 1)
- message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1)
- command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
- else
- log_admin("[key_name(usr)] toggled gravity off.", 1)
- message_admins("\blue [key_name_admin(usr)] toggled gravity off.", 1)
- command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
- if("wave")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Meteor")
- log_admin("[key_name(usr)] spawned a meteor wave", 1)
- message_admins("\blue [key_name_admin(usr)] spawned a meteor wave.", 1)
- new /datum/event/meteor_wave
- if("goblob")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Blob")
- log_admin("[key_name(usr)] spawned a blob", 1)
- message_admins("\blue [key_name_admin(usr)] spawned a blob.", 1)
- new /datum/event/blob
-
- if("aliens")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Aliens")
- log_admin("[key_name(usr)] spawned an alien infestation", 1)
- message_admins("\blue [key_name_admin(usr)] attempted an alien infestation", 1)
- xenomorphs.attempt_random_spawn()
- if("borers")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","Borers")
- log_admin("[key_name(usr)] spawned a cortical borer infestation.", 1)
- message_admins("\blue [key_name_admin(usr)] spawned a cortical borer infestation.", 1)
- borers.attempt_random_spawn()
-
- 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("\blue [key_name_admin(usr)] made all areas powered", 1)
- 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("\blue [key_name_admin(usr)] made all areas unpowered", 1)
- 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("\blue [key_name_admin(usr)] made all SMESs powered", 1)
- power_restore_quick()
- if("activateprison")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","AP")
- world << "\blue Transit signature detected."
- world << "\blue Incoming shuttle."
- /*
- var/A = locate(/area/shuttle_prison)
- for(var/atom/movable/AM as mob|obj in A)
- AM.z = 1
- AM.Move()
- */
- message_admins("\blue [key_name_admin(usr)] sent the prison shuttle to the station.", 1)
- if("deactivateprison")
- /*
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","DP")
- var/A = locate(/area/shuttle_prison)
- for(var/atom/movable/AM as mob|obj in A)
- AM.z = 2
- AM.Move()
- */
- message_admins("\blue [key_name_admin(usr)] sent the prison shuttle back.", 1)
- if("toggleprisonstatus")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","TPS")
- for(var/obj/machinery/computer/prison_shuttle/PS in world)
- PS.allowedtocall = !(PS.allowedtocall)
- message_admins("\blue [key_name_admin(usr)] toggled status of prison shuttle to [PS.allowedtocall].", 1)
- if("prisonwarp")
- if(!ticker)
- alert("The game hasn't started yet!", null, null, null, null, null)
- return
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","PW")
- message_admins("\blue [key_name_admin(usr)] teleported all players to the prison station.", 1)
- for(var/mob/living/carbon/human/H in mob_list)
- 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.Paralyse(5)
- if(H.wear_id)
- var/obj/item/weapon/card/id/id = H.get_idcard()
- for(var/A in id.access)
- if(A == access_security)
- security++
- if(!security)
- //strip their stuff before they teleport into a cell :downs:
- for(var/obj/item/weapon/W in H)
- if(istype(W, /obj/item/organ/external))
- continue
- //don't strip organs
- H.drop_from_inventory(W)
- //teleport person to cell
- H.loc = pick(prisonwarp)
- H.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(H), slot_w_uniform)
- H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes)
- else
- //teleport security person
- H.loc = pick(prisonsecuritywarp)
- prisonwarped += H
- if("launchshuttle")
- if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created.
-
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShL")
-
- var/list/valid_shuttles = list()
- for (var/shuttle_tag in shuttle_controller.shuttles)
- if (istype(shuttle_controller.shuttles[shuttle_tag], /datum/shuttle/ferry))
- valid_shuttles += shuttle_tag
-
- var/shuttle_tag = input("Which shuttle do you want to launch?") as null|anything in valid_shuttles
-
- if (!shuttle_tag)
- return
-
- var/datum/shuttle/ferry/S = shuttle_controller.shuttles[shuttle_tag]
- if (S.can_launch())
- S.launch(usr)
- message_admins("\blue [key_name_admin(usr)] launched the [shuttle_tag] shuttle", 1)
- log_admin("[key_name(usr)] launched the [shuttle_tag] shuttle")
- else
- alert("The [shuttle_tag] shuttle cannot be launched at this time. It's probably busy.")
-
- if("forcelaunchshuttle")
- if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created.
-
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShFL")
-
- var/list/valid_shuttles = list()
- for (var/shuttle_tag in shuttle_controller.shuttles)
- if (istype(shuttle_controller.shuttles[shuttle_tag], /datum/shuttle/ferry))
- valid_shuttles += shuttle_tag
-
- var/shuttle_tag = input("Which shuttle's launch do you want to force?") as null|anything in valid_shuttles
-
- if (!shuttle_tag)
- return
-
- var/datum/shuttle/ferry/S = shuttle_controller.shuttles[shuttle_tag]
- if (S.can_force())
- S.force_launch(usr)
- message_admins("\blue [key_name_admin(usr)] has forced the [shuttle_tag] shuttle launch", 1)
- log_admin("[key_name(usr)] has forced the [shuttle_tag] shuttle launch")
- else
- alert("The [shuttle_tag] shuttle launch cannot be forced at this time. It's busy, or hasn't been launched yet.")
-
- if("jumpshuttle")
- if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created.
-
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShJ")
-
- var/shuttle_tag = input("Which shuttle do you want to jump?") as null|anything in shuttle_controller.shuttles
- if (!shuttle_tag) return
-
- var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag]
-
- var/origin_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world
- if (!origin_area) return
-
- var/destination_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world
- if (!destination_area) return
-
- var/long_jump = alert("Is there a transition area for this jump?","", "Yes", "No")
- if (long_jump == "Yes")
- var/transition_area = input("Which area is the transition area? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world
- if (!transition_area) return
-
- var/move_duration = input("How many seconds will this jump take?") as num
-
- S.long_jump(origin_area, destination_area, transition_area, move_duration)
- message_admins("\blue [key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle", 1)
- log_admin("[key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle")
- else
- S.short_jump(origin_area, destination_area)
- message_admins("\blue [key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle", 1)
- log_admin("[key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle")
-
- if("moveshuttle")
-
- if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created.
-
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","ShM")
-
- var/confirm = alert("This command directly moves a shuttle from one area to another. DO NOT USE THIS UNLESS YOU ARE DEBUGGING A SHUTTLE AND YOU KNOW WHAT YOU ARE DOING.", "Are you sure?", "Ok", "Cancel")
- if (confirm == "Cancel")
- return
-
- var/shuttle_tag = input("Which shuttle do you want to jump?") as null|anything in shuttle_controller.shuttles
- if (!shuttle_tag) return
-
- var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag]
-
- var/origin_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world
- if (!origin_area) return
-
- var/destination_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world
- if (!destination_area) return
-
- S.move(origin_area, destination_area)
- message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1)
- log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle")
-
- if("togglebombcap")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","BC")
- switch(max_explosion_range)
- if(14) max_explosion_range = 16
- if(16) max_explosion_range = 20
- if(20) max_explosion_range = 28
- if(28) max_explosion_range = 56
- if(56) max_explosion_range = 128
- if(128) max_explosion_range = 14
- var/range_dev = max_explosion_range *0.25
- var/range_high = max_explosion_range *0.5
- var/range_low = max_explosion_range
- message_admins("\red [key_name_admin(usr)] changed the bomb cap to [range_dev], [range_high], [range_low]", 1)
- log_admin("[key_name_admin(usr)] changed the bomb cap to [max_explosion_range]")
-
- if("flicklights")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","FL")
- while(!usr.stat)
-//knock yourself out to stop the ghosts
- for(var/mob/M in player_list)
- if(M.stat != 2 && prob(25))
- var/area/AffectedArea = get_area(M)
- if(AffectedArea.name != "Space" && 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(rand(55,185))
- AffectedArea.power_light = 1
- AffectedArea.power_change()
- var/Message = rand(1,4)
- switch(Message)
- if(1)
- M.show_message(text("\blue You shudder as if cold..."), 1)
- if(2)
- M.show_message(text("\blue You feel something gliding across your back..."), 1)
- if(3)
- M.show_message(text("\blue Your eyes twitch, you feel like something you can't see is here..."), 1)
- if(4)
- M.show_message(text("\blue 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 player_list)
- if(M.stat != 2)
- M.show_message(text("\blue The chilling wind suddenly stops..."), 1)
-/* if("shockwave")
- ok = 1
- world << "\red ALERT: STATION STRESS CRITICAL"
- sleep(60)
- world << "\red ALERT: STATION STRESS CRITICAL. TOLERABLE LEVELS EXCEEDED!"
- sleep(80)
- world << "\red ALERT: STATION STRUCTURAL STRESS CRITICAL. SAFETY MECHANISMS FAILED!"
- sleep(40)
- for(var/mob/M in world)
- shake_camera(M, 400, 1)
- for(var/obj/structure/window/W in world)
- spawn(0)
- sleep(rand(10,400))
- W.ex_act(rand(2,1))
- for(var/obj/structure/grille/G in world)
- spawn(0)
- sleep(rand(20,400))
- G.ex_act(rand(2,1))
- for(var/obj/machinery/door/D in world)
- spawn(0)
- sleep(rand(20,400))
- D.ex_act(rand(2,1))
- for(var/turf/station/floor/Floor in world)
- spawn(0)
- sleep(rand(30,400))
- Floor.ex_act(rand(2,1))
- for(var/obj/structure/cable/Cable in world)
- spawn(0)
- sleep(rand(30,400))
- Cable.ex_act(rand(2,1))
- for(var/obj/structure/closet/Closet in world)
- spawn(0)
- sleep(rand(30,400))
- Closet.ex_act(rand(2,1))
- for(var/obj/machinery/Machinery in world)
- spawn(0)
- sleep(rand(30,400))
- Machinery.ex_act(rand(1,3))
- for(var/turf/station/wall/Wall in world)
- spawn(0)
- sleep(rand(30,400))
- Wall.ex_act(rand(2,1)) */
- if("wave")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","MW")
- new /datum/event/meteor_wave
-
- if("gravanomalies")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","GA")
- command_announcement.Announce("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/AI/granomalies.ogg')
- var/turf/T = pick(blobstart)
- var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
- spawn(rand(100, 600))
- qdel(bh)
-
- if("timeanomalies") //dear god this code was awful :P Still needs further optimisation
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","STA")
- //moved to its own dm so I could split it up and prevent the spawns copying variables over and over
- //can be found in code\game\game_modes\events\wormholes.dm
- wormhole_event()
-
- if("goblob")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","BL")
- mini_blob_event()
- message_admins("[key_name_admin(usr)] has spawned blob", 1)
- if("aliens")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","AL")
- if(xenomorphs.attempt_random_spawn())
- message_admins("[key_name_admin(usr)] has spawned aliens", 1)
- if("spiders")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SL")
- new /datum/event/spider_infestation
- message_admins("[key_name_admin(usr)] has spawned spiders", 1)
- if("comms_blackout")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","CB")
- var/answer = alert(usr, "Would you like to alert the crew?", "Alert", "Yes", "No")
- if(answer == "Yes")
- communications_blackout(0)
- else
- communications_blackout(1)
- message_admins("[key_name_admin(usr)] triggered a communications blackout.", 1)
- if("carp")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","C")
- var/choice = input("You sure you want to spawn carp?") in list("Badmin", "Cancel")
- if(choice == "Badmin")
- message_admins("[key_name_admin(usr)] has spawned carp.", 1)
- new /datum/event/carp_migration
- if("radiation")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","R")
- message_admins("[key_name_admin(usr)] has has irradiated the station", 1)
- new /datum/event/radiation_storm
- if("immovable")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","IR")
- message_admins("[key_name_admin(usr)] has sent an immovable rod to the station", 1)
- immovablerod()
- if("prison_break")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","PB")
- message_admins("[key_name_admin(usr)] has allowed a prison break", 1)
- prison_break()
- if("lightout")
- 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", 1)
- lightsout(1,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", 1)
- lightsout(0,0)
- if("whiteout")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","WO")
- for(var/obj/machinery/light/L in world)
- L.fix()
- message_admins("[key_name_admin(usr)] fixed all lights", 1)
- if("friendai")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","FA")
- for(var/mob/aiEye/aE in mob_list)
- aE.icon_state = "ai_friend"
- for(var/obj/machinery/M in machines)
- if(istype(M, /obj/machinery/ai_status_display))
- var/obj/machinery/ai_status_display/A = M
- A.emotion = "Friend Computer"
- else if(istype(M, /obj/machinery/status_display))
- var/obj/machinery/status_display/A = M
- A.friendc = 1
- message_admins("[key_name_admin(usr)] turned all AIs into best friends.", 1)
- 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.", 1)
-
- for(var/turf/simulated/floor/F in world)
- if(F.z in config.station_levels)
- 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 in config.station_levels)
- 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")
- var/answer = alert("Do you want this to be a greater disease or a lesser one?",,"Greater","Lesser")
- if(answer=="Lesser")
- virus2_lesser_infection()
- message_admins("[key_name_admin(usr)] has triggered a lesser virus outbreak.", 1)
- else
- virus2_greater_infection()
- message_admins("[key_name_admin(usr)] has triggered a greater virus outbreak.", 1)
- 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 << "\red You suddenly feel stupid."
- H.setBrainLoss(60)
- message_admins("[key_name_admin(usr)] made everybody retarded")
- if("fakeguns")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","FG")
- for(var/obj/item/W in world)
- if(istype(W, /obj/item/clothing) || istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/weapon/disk) || istype(W, /obj/item/weapon/tank))
- continue
- W.icon = 'icons/obj/gun.dmi'
- W.icon_state = "revolver"
- W.item_state = "gun"
- message_admins("[key_name_admin(usr)] made every item look like a gun")
- if("schoolgirl")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SG")
- for(var/obj/item/clothing/under/W in world)
- W.icon_state = "schoolgirl"
- W.item_state = "w_suit"
- message_admins("[key_name_admin(usr)] activated Japanese Animes mode")
- world << sound('sound/AI/animes.ogg')
- if("paintball")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","PB")
- for(var/species in all_species)
- var/datum/species/S = all_species[species]
- S.blood_color = "rainbow"
- for(var/obj/effect/decal/cleanable/blood/B in world)
- B.basecolor = "rainbow"
- B.update_icon()
- message_admins("[key_name_admin(usr)] activated Paintball mode")
- 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 in config.station_levels && !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")
- command_announcement.Announce("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.", new_sound = 'sound/AI/commandreport.ogg')
- 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.f_style = "Dward Beard"
- B.update_hair()
- message_admins("[key_name_admin(usr)] activated dorf mode")
- if("ionstorm")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","I")
- IonStorm()
- message_admins("[key_name_admin(usr)] triggered an ion storm")
- var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No")
- if(show_log == "Yes")
- command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
- if("onlyone")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","OO")
- only_one()
- message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)")
-
- if("togglenarsie")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","NA")
- var/choice = input("How do you wish for narsie to interact with her surroundings?") in list("CultStation13", "Nar-Singulo")
- if(choice == "CultStation13")
- message_admins("[key_name_admin(usr)] has set narsie's behaviour to \"CultStation13\".")
- narsie_behaviour = "CultStation13"
- if(choice == "Nar-Singulo")
- message_admins("[key_name_admin(usr)] has set narsie's behaviour to \"Nar-Singulo\".")
- narsie_behaviour = "Nar-Singulo"
- if("hellonearth")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","NS")
- var/choice = input("You sure you want to end the round and summon narsie at your location? Misuse of this could result in removal of flags or hilarity.") in list("PRAISE SATAN", "Cancel")
- if(choice == "PRAISE SATAN")
- new /obj/singularity/narsie/large(get_turf(usr))
- message_admins("[key_name_admin(usr)] has summoned narsie and brought about a new realm of suffering.")
- if("supermattercascade")
- feedback_inc("admin_secrets_fun_used",1)
- feedback_add_details("admin_secrets_fun_used","SC")
- var/choice = input("You sure you want to destroy the universe and create a large explosion at your location? Misuse of this could result in removal of flags or hilarity.") in list("NO TIME TO EXPLAIN", "Cancel")
- if(choice == "NO TIME TO EXPLAIN")
- explosion(get_turf(usr), 8, 16, 24, 32, 1)
- new /turf/unsimulated/wall/supermatter(get_turf(usr))
- SetUniversalState(/datum/universal_state/supermatter_cascade)
- message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
- 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_bombs")
- //I do nothing
- 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("list_job_debug")
- var/dat = "Job Debug info.
"
- if(job_master)
- for(var/line in job_master.job_debug)
- dat += "[line]
"
- dat+= "*******
"
- for(var/datum/job/job in job_master.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("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/mob/living/carbon/human/H in mob_list)
- if(H.ckey)
- dat += text("| [] | [] |
", H.name, H.get_assignment())
- dat += "
"
- usr << browse(dat, "window=manifest;size=440x410")
- if("check_antagonist")
- check_antagonists()
- 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.b_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["secretscoder"])
- if(!check_rights(R_DEBUG)) return
-
- switch(href_list["secretscoder"])
- 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("maint_access_brig")
- for(var/obj/machinery/door/airlock/maintenance/M in world)
- 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)
- 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 = job_master.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["admin_secrets"])
+ var/datum/admin_secret_item/item = locate(href_list["admin_secrets"]) in admin_secrets.items
+ item.execute(usr)
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.