diff --git a/baystation12.dme b/baystation12.dme
index b45515e6d0..9946956dfb 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -843,16 +843,40 @@
#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\admin_secrets\alter_narsie.dm"
#include "code\modules\admin\secrets\admin_secrets\bombing_list.dm"
+#include "code\modules\admin\secrets\admin_secrets\jump_shuttle.dm"
+#include "code\modules\admin\secrets\admin_secrets\launch_shutter.dm"
+#include "code\modules\admin\secrets\admin_secrets\launch_shuttle_forced.dm"
#include "code\modules\admin\secrets\admin_secrets\list_dna.dm"
#include "code\modules\admin\secrets\admin_secrets\list_fingerprints.dm"
+#include "code\modules\admin\secrets\admin_secrets\move_shuttle.dm"
+#include "code\modules\admin\secrets\admin_secrets\prison_warp.dm"
#include "code\modules\admin\secrets\admin_secrets\show_ai_laws.dm"
#include "code\modules\admin\secrets\admin_secrets\show_crew_manifest.dm"
#include "code\modules\admin\secrets\admin_secrets\show_game_mode.dm"
#include "code\modules\admin\secrets\admin_secrets\show_law_changes.dm"
#include "code\modules\admin\secrets\admin_secrets\show_signalers.dm"
#include "code\modules\admin\secrets\admin_secrets\traitors_and_objectives.dm"
+#include "code\modules\admin\secrets\fun_secrets\break_all_lights.dm"
+#include "code\modules\admin\secrets\fun_secrets\break_some_lights.dm"
+#include "code\modules\admin\secrets\fun_secrets\fix_all_lights.dm"
+#include "code\modules\admin\secrets\fun_secrets\ghost_mode.dm"
+#include "code\modules\admin\secrets\fun_secrets\make_all_areas_powered.dm"
+#include "code\modules\admin\secrets\fun_secrets\make_all_areas_unpowered.dm"
+#include "code\modules\admin\secrets\fun_secrets\only_one.dm"
+#include "code\modules\admin\secrets\fun_secrets\paintball_mode.dm"
+#include "code\modules\admin\secrets\fun_secrets\power_all_smes.dm"
+#include "code\modules\admin\secrets\fun_secrets\remove_all_clothing.dm"
+#include "code\modules\admin\secrets\fun_secrets\remove_internal_clothing.dm"
+#include "code\modules\admin\secrets\fun_secrets\send_strike_team.dm"
+#include "code\modules\admin\secrets\fun_secrets\toggle_bomb_cap.dm"
+#include "code\modules\admin\secrets\fun_secrets\triple_ai_mode.dm"
+#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_corgies.dm"
+#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_monkeys.dm"
#include "code\modules\admin\secrets\random_events\gravity.dm"
+#include "code\modules\admin\secrets\random_events\trigger_cordical_borer_infestation.dm"
+#include "code\modules\admin\secrets\random_events\trigger_xenomorph_infestation.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/baystation12.int b/baystation12.int
index b82874fded..cfd9890d63 100644
--- a/baystation12.int
+++ b/baystation12.int
@@ -1,6 +1,9 @@
-// BEGIN_INTERNALS
-/*
-MAP_ICON_TYPE: 0
-AUTO_FILE_DIR: OFF
-*/
-// END_INTERNALS
+// BEGIN_INTERNALS
+/*
+DIR: code code\modules code\modules\mob code\modules\mob\freelook code\modules\mob\living code\modules\mob\living\carbon code\modules\mob\living\carbon\alien code\modules\mob\living\carbon\alien\diona code\modules\mob\living\carbon\alien\larva code\modules\mob\living\carbon\human
+AUTO_FILE_DIR: OFF
+MAP_ICON_TYPE: 0
+WINDOW: code\modules\mob\living\carbon\human\life.dm
+FILE: code\modules\mob\living\carbon\human\life.dm
+*/
+// END_INTERNALS
diff --git a/code/controllers/Processes/initialize.dm b/code/controllers/Processes/initialize.dm
new file mode 100644
index 0000000000..055a056bed
--- /dev/null
+++ b/code/controllers/Processes/initialize.dm
@@ -0,0 +1,31 @@
+var/list/pending_init_objects
+
+/datum/controller/process/initialize
+ var/list/objects_to_initialize
+
+/datum/controller/process/initialize/setup()
+ name = "init"
+ schedule_interval = 1 // Every tick, scary
+ objects_to_initialize = pending_init_objects
+
+/datum/controller/process/initialize/doWork()
+ for(var/atom/movable/A in objects_to_initialize)
+ A.initialize()
+ scheck()
+ objects_to_initialize.Remove(A)
+
+ if(!objects_to_initialize.len)
+ disable()
+
+/proc/initialize_object(var/atom/movable/obj_to_init)
+ if(processScheduler.hasProcess("init"))
+ var/datum/controller/process/initialize/init = processScheduler.getProcess("init")
+ init.objects_to_initialize += obj_to_init
+ init.enable()
+ else
+ world.log << "Not yet"
+ if(!pending_init_objects) pending_init_objects = list()
+ pending_init_objects += obj_to_init
+
+/datum/controller/process/initialize/getStatName()
+ return ..()+"([objects_to_initialize.len])"
diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm
index b8c4b2ef6b..2ce43a7962 100644
--- a/code/modules/admin/admin_secrets.dm
+++ b/code/modules/admin/admin_secrets.dm
@@ -9,7 +9,7 @@ var/datum/admin_secrets/admin_secrets = new()
categories = init_subtypes(/datum/admin_secret_category)
items = list()
var/list/category_assoc = list()
- for(var/datum/category in categories)
+ for(var/datum/admin_secret_category/category in categories)
category_assoc[category.type] = category
for(var/item_type in (typesof(/datum/admin_secret_item) - /datum/admin_secret_item))
@@ -19,7 +19,7 @@ var/datum/admin_secrets/admin_secrets = new()
var/datum/admin_secret_item/item = new item_type()
var/datum/admin_secret_category/category = category_assoc[item.category]
- category.items += item
+ dd_insertObjectList(category.items, item)
items += item
/datum/admin_secret_category
@@ -41,6 +41,7 @@ var/datum/admin_secrets/admin_secrets = new()
var/name = ""
var/category = null
var/log = 1
+ var/feedback = 1
var/permissions = R_HOST
/datum/admin_secret_item/proc/name()
@@ -54,7 +55,10 @@ var/datum/admin_secrets/admin_secrets = new()
return 0
if(log)
- log_admin("[key_name(user)] used secret '[name()]'")
+ log_and_message_admins("used secret '[name]'", user)
+ if(feedback)
+ feedback_inc("admin_secrets_used",1)
+ feedback_add_details("admin_secrets_used","[name]")
return 1
/*************************
@@ -66,6 +70,12 @@ var/datum/admin_secrets/admin_secrets = new()
/datum/admin_secret_category/random_events
name = "'Random' Events"
+/datum/admin_secret_category/fun_secrets
+ name = "Fun Secrets"
+
+/datum/admin_secret_category/final_solutions
+ name = "Final Solutions"
+
/*************************
* Pre-defined base items *
*************************/
@@ -74,7 +84,14 @@ var/datum/admin_secrets/admin_secrets = new()
log = 0
permissions = R_ADMIN
-
/datum/admin_secret_item/random_event
category = /datum/admin_secret_category/random_events
permissions = R_FUN
+
+/datum/admin_secret_item/fun_secret
+ category = /datum/admin_secret_category/fun_secrets
+ permissions = R_FUN
+
+/datum/admin_secret_item/final_solution
+ category = /datum/admin_secret_category/final_solutions
+ permissions = R_FUN|R_SERVER|R_ADMIN
diff --git a/code/modules/admin/secrets/admin_secrets/alter_narsie.dm b/code/modules/admin/secrets/admin_secrets/alter_narsie.dm
new file mode 100644
index 0000000000..75281adca8
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/alter_narsie.dm
@@ -0,0 +1,14 @@
+/datum/admin_secret_item/admin_secret/alter_narise
+ name = "Alter Nar-Sie"
+
+/datum/admin_secret_item/admin_secret/alter_narise/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+ var/choice = input(user, "How do you wish for Nar-Sie to interact with its surroundings?") as null|anything in list("CultStation13", "Nar-Singulo")
+ if(choice == "CultStation13")
+ log_and_message_admins("has set narsie's behaviour to \"CultStation13\".", user)
+ narsie_behaviour = choice
+ if(choice == "Nar-Singulo")
+ log_and_message_admins("has set narsie's behaviour to \"Nar-Singulo\".", user)
+ narsie_behaviour = choice
diff --git a/code/modules/admin/secrets/admin_secrets/jump_shuttle.dm b/code/modules/admin/secrets/admin_secrets/jump_shuttle.dm
new file mode 100644
index 0000000000..1453ae35ce
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/jump_shuttle.dm
@@ -0,0 +1,36 @@
+/datum/admin_secret_item/admin_secret/jump_shuttle
+ name = "Jump a Shuttle"
+
+/datum/admin_secret_item/admin_secret/jump_shuttle/can_execute(var/mob/user)
+ if(!shuttle_controller) return 0
+ return ..()
+
+/datum/admin_secret_item/admin_secret/jump_shuttle/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ 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
+
+ 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("[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("[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")
diff --git a/code/modules/admin/secrets/admin_secrets/launch_shutter.dm b/code/modules/admin/secrets/admin_secrets/launch_shutter.dm
new file mode 100644
index 0000000000..30867fca05
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/launch_shutter.dm
@@ -0,0 +1,26 @@
+/datum/admin_secret_item/admin_secret/launch_shuttle
+ name = "Launch a Shuttle"
+
+/datum/admin_secret_item/admin_secret/launch_shuttle/can_execute(var/mob/user)
+ if(!shuttle_controller) return 0
+ return ..()
+
+/datum/admin_secret_item/admin_secret/launch_shuttle/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+ 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)
+ log_and_message_admins("launched the [shuttle_tag] shuttle", user)
+ else
+ alert("The [shuttle_tag] shuttle cannot be launched at this time. It's probably busy.")
diff --git a/code/modules/admin/secrets/admin_secrets/launch_shuttle_forced.dm b/code/modules/admin/secrets/admin_secrets/launch_shuttle_forced.dm
new file mode 100644
index 0000000000..250d04b044
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/launch_shuttle_forced.dm
@@ -0,0 +1,26 @@
+/datum/admin_secret_item/admin_secret/launch_shuttle_forced
+ name = "Launch a Shuttle (Forced)"
+
+/datum/admin_secret_item/admin_secret/launch_shuttle_forced/can_execute(var/mob/user)
+ if(!shuttle_controller) return 0
+ return ..()
+
+/datum/admin_secret_item/admin_secret/launch_shuttle_forced/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+ 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)
+ log_and_message_admins("forced the [shuttle_tag] shuttle", user)
+ else
+ alert("The [shuttle_tag] shuttle launch cannot be forced at this time. It's busy, or hasn't been launched yet.")
diff --git a/code/modules/admin/secrets/admin_secrets/move_shuttle.dm b/code/modules/admin/secrets/admin_secrets/move_shuttle.dm
new file mode 100644
index 0000000000..e58863afde
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/move_shuttle.dm
@@ -0,0 +1,28 @@
+/datum/admin_secret_item/admin_secret/move_shuttle
+ name = "Move a Shuttle"
+
+/datum/admin_secret_item/admin_secret/move_shuttle/can_execute(var/mob/user)
+ if(!shuttle_controller) return 0
+ return ..()
+
+/datum/admin_secret_item/admin_secret/move_shuttle/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+ 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)
+ log_and_message_admins("[key_name_admin(usr)] moved the [shuttle_tag] shuttle", user)
diff --git a/code/modules/admin/secrets/admin_secrets/prison_warp.dm b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
new file mode 100644
index 0000000000..eec85c2f04
--- /dev/null
+++ b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
@@ -0,0 +1,38 @@
+/datum/admin_secret_item/admin_secret/prison_warp
+ name = "Prison Warp"
+
+/datum/admin_secret_item/admin_secret/prison_warp/can_execute(var/mob/user)
+ if(!ticker) return 0
+ return ..()
+
+/datum/admin_secret_item/admin_secret/prison_warp/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+ for(var/mob/living/carbon/human/H in mob_list)
+ var/turf/T = get_turf(H)
+ var/security = 0
+ if((T && T in config.admin_levels) || 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
diff --git a/code/modules/admin/secrets/admin_secrets/show_law_changes.dm b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
index 190de7b47a..877e2c217d 100644
--- a/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
+++ b/code/modules/admin/secrets/admin_secrets/show_law_changes.dm
@@ -2,7 +2,7 @@
name = "Show law changes"
/datum/admin_secret_item/admin_secret/show_law_changes/name()
- return "Show last [length(lawchanges)] law changes"
+ return "Show Last [length(lawchanges)] Law change\s"
/datum/admin_secret_item/admin_secret/show_law_changes/execute(var/mob/user)
. = ..()
diff --git a/code/modules/admin/secrets/admin_secrets/show_signalers.dm b/code/modules/admin/secrets/admin_secrets/show_signalers.dm
index 0e1269ea37..32a77cbef2 100644
--- a/code/modules/admin/secrets/admin_secrets/show_signalers.dm
+++ b/code/modules/admin/secrets/admin_secrets/show_signalers.dm
@@ -1,8 +1,8 @@
/datum/admin_secret_item/admin_secret/show_signalers
- name = "Show last signalers"
+ name = "Show Last Signalers"
/datum/admin_secret_item/admin_secret/show_signalers/name()
- return "Show last [length(lastsignalers)] signalers"
+ return "Show Last [length(lastsignalers)] Signaler\s"
/datum/admin_secret_item/admin_secret/show_signalers/execute(var/mob/user)
. = ..()
diff --git a/code/modules/admin/secrets/fun_secrets/break_all_lights.dm b/code/modules/admin/secrets/fun_secrets/break_all_lights.dm
new file mode 100644
index 0000000000..5c65e389af
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/break_all_lights.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/break_all_lights
+ name = "Break All Lights"
+
+/datum/admin_secret_item/fun_secret/make_all_areas_powered/execute(var/mob/user)
+ . = ..()
+ if(.)
+ lightsout(0,0)
diff --git a/code/modules/admin/secrets/fun_secrets/break_some_lights.dm b/code/modules/admin/secrets/fun_secrets/break_some_lights.dm
new file mode 100644
index 0000000000..0c9aae1b16
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/break_some_lights.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/break_some_lights
+ name = "Break Some Lights"
+
+/datum/admin_secret_item/fun_secret/break_some_lights/execute(var/mob/user)
+ . = ..()
+ if(.)
+ lightsout(1,2)
diff --git a/code/modules/admin/secrets/fun_secrets/fix_all_lights.dm b/code/modules/admin/secrets/fun_secrets/fix_all_lights.dm
new file mode 100644
index 0000000000..387f6d3ce7
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/fix_all_lights.dm
@@ -0,0 +1,10 @@
+/datum/admin_secret_item/fun_secret/fix_all_lights
+ name = "Fix All Lights"
+
+/datum/admin_secret_item/fun_secret/fix_all_lights/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ for(var/obj/machinery/light/L in world)
+ L.fix()
diff --git a/code/modules/admin/secrets/fun_secrets/ghost_mode.dm b/code/modules/admin/secrets/fun_secrets/ghost_mode.dm
new file mode 100644
index 0000000000..dfa84e4cf6
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/ghost_mode.dm
@@ -0,0 +1,48 @@
+/datum/admin_secret_item/fun_secret/ghost_mode
+ name = "Ghost Mode"
+ var/list/affected_mobs
+
+/datum/admin_secret_item/fun_secret/ghost_mode/New()
+ ..()
+ affected_mobs = list()
+
+/datum/admin_secret_item/fun_secret/ghost_mode/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ var/list/affected_areas = list()
+ for(var/mob/M in living_mob_list)
+ if(M.stat == CONSCIOUS && !(M in affected_mobs))
+ affected_mobs |= M
+ switch(rand(1,4))
+ if(1)
+ M.show_message(text("You shudder as if cold..."), 1)
+ if(2)
+ M.show_message(text("You feel something gliding across your back..."), 1)
+ if(3)
+ M.show_message(text("Your eyes twitch, you feel like something you can't see is here..."), 1)
+ if(4)
+ M.show_message(text("You notice something moving out of the corner of your eye, but nothing is there..."), 1)
+
+ for(var/obj/W in orange(5,M))
+ if(prob(25) && !W.anchored)
+ step_rand(W)
+
+ var/area/A = get_area(M)
+ if(A.requires_power && !A.always_unpowered && A.power_light && (A.z in config.player_levels))
+ affected_areas |= get_area(M)
+
+ affected_mobs |= user
+ for(var/area/AffectedArea in affected_areas)
+ AffectedArea.power_light = 0
+ AffectedArea.power_change()
+ spawn(rand(25,50))
+ AffectedArea.power_light = 1
+ AffectedArea.power_change()
+
+ sleep(100)
+ for(var/mob/M in affected_mobs)
+ M.show_message(text("The chilling wind suddenly stops..."), 1)
+ affected_mobs.Cut()
+ affected_areas.Cut()
diff --git a/code/modules/admin/secrets/fun_secrets/make_all_areas_powered.dm b/code/modules/admin/secrets/fun_secrets/make_all_areas_powered.dm
new file mode 100644
index 0000000000..3309190028
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/make_all_areas_powered.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/make_all_areas_powered
+ name = "Make All Areas Powered"
+
+/datum/admin_secret_item/fun_secret/make_all_areas_powered/execute(var/mob/user)
+ . = ..()
+ if(.)
+ power_restore()
diff --git a/code/modules/admin/secrets/fun_secrets/make_all_areas_unpowered.dm b/code/modules/admin/secrets/fun_secrets/make_all_areas_unpowered.dm
new file mode 100644
index 0000000000..a840006a23
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/make_all_areas_unpowered.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/make_all_areas_unpowered
+ name = "Make All Areas Unpowered"
+
+/datum/admin_secret_item/fun_secret/make_all_areas_unpowered/execute(var/mob/user)
+ . = ..()
+ if(.)
+ power_failure()
diff --git a/code/modules/admin/secrets/fun_secrets/only_one.dm b/code/modules/admin/secrets/fun_secrets/only_one.dm
new file mode 100644
index 0000000000..bc0c962b29
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/only_one.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/only_one
+ name = "There Can Be Only One"
+
+/datum/admin_secret_item/fun_secret/only_one/execute(var/mob/user)
+ . = ..()
+ if(.)
+ only_one()
diff --git a/code/modules/admin/secrets/fun_secrets/paintball_mode.dm b/code/modules/admin/secrets/fun_secrets/paintball_mode.dm
new file mode 100644
index 0000000000..8225b96b29
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/paintball_mode.dm
@@ -0,0 +1,14 @@
+/datum/admin_secret_item/fun_secret/paintbal_mode
+ name = "Paintball Mode"
+
+/datum/admin_secret_item/fun_secret/paintbal_mode/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ 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()
diff --git a/code/modules/admin/secrets/fun_secrets/power_all_smes.dm b/code/modules/admin/secrets/fun_secrets/power_all_smes.dm
new file mode 100644
index 0000000000..277edd5a43
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/power_all_smes.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/fun_secret/power_all_smes
+ name = "Power All SMES"
+
+/datum/admin_secret_item/fun_secret/power_all_smes/execute(var/mob/user)
+ . = ..()
+ if(.)
+ power_restore_quick()
diff --git a/code/modules/admin/secrets/fun_secrets/remove_all_clothing.dm b/code/modules/admin/secrets/fun_secrets/remove_all_clothing.dm
new file mode 100644
index 0000000000..28e9497f53
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/remove_all_clothing.dm
@@ -0,0 +1,10 @@
+/datum/admin_secret_item/fun_secret/remove_all_clothing
+ name = "Remove ALL Clothing"
+
+/datum/admin_secret_item/fun_secret/remove_all_clothing/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ for(var/obj/item/clothing/O in world)
+ qdel(O)
diff --git a/code/modules/admin/secrets/fun_secrets/remove_internal_clothing.dm b/code/modules/admin/secrets/fun_secrets/remove_internal_clothing.dm
new file mode 100644
index 0000000000..73dba4ce4f
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/remove_internal_clothing.dm
@@ -0,0 +1,10 @@
+/datum/admin_secret_item/fun_secret/remove_internal_clothing
+ name = "Remove 'Internal' Clothing"
+
+/datum/admin_secret_item/fun_secret/remove_internal_clothing/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ for(var/obj/item/clothing/under/O in world)
+ qdel(O)
diff --git a/code/modules/admin/secrets/fun_secrets/send_strike_team.dm b/code/modules/admin/secrets/fun_secrets/send_strike_team.dm
new file mode 100644
index 0000000000..3ec1bacb2c
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/send_strike_team.dm
@@ -0,0 +1,11 @@
+/datum/admin_secret_item/fun_secret/send_strike_team
+ name = "Send Strike Team"
+
+/datum/admin_secret_item/fun_secret/send_strike_team/can_execute(var/mob/user)
+ if(!ticker) return 0
+ return ..()
+
+/datum/admin_secret_item/fun_secret/send_strike_team/execute(var/mob/user)
+ . = ..()
+ if(.)
+ return user.client.strike_team()
diff --git a/code/modules/admin/secrets/fun_secrets/toggle_bomb_cap.dm b/code/modules/admin/secrets/fun_secrets/toggle_bomb_cap.dm
new file mode 100644
index 0000000000..28cd3327c4
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/toggle_bomb_cap.dm
@@ -0,0 +1,21 @@
+/datum/admin_secret_item/fun_secret/toggle_bomb_cap
+ name = "Toggle Bomb Cap"
+ permissions = R_SERVER
+
+/datum/admin_secret_item/fun_secret/toggle_bomb_cap/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ 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("[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]")
diff --git a/code/modules/admin/secrets/fun_secrets/triple_ai_mode.dm b/code/modules/admin/secrets/fun_secrets/triple_ai_mode.dm
new file mode 100644
index 0000000000..81b77eabb6
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/triple_ai_mode.dm
@@ -0,0 +1,13 @@
+/datum/admin_secret_item/fun_secret/triple_ai_mode
+ name = "Triple AI Mode"
+
+/datum/admin_secret_item/fun_secret/triple_ai_mode/can_execute(var/mob/user)
+ if(ticker && ticker.current_state > GAME_STATE_PREGAME)
+ return 0
+
+ return ..()
+
+/datum/admin_secret_item/admin_secret/triple_ai_mode/execute(var/mob/user)
+ . = ..()
+ if(.)
+ user.client.triple_ai()
diff --git a/code/modules/admin/secrets/fun_secrets/turn_humans_into_corgies.dm b/code/modules/admin/secrets/fun_secrets/turn_humans_into_corgies.dm
new file mode 100644
index 0000000000..ae6f36a1ac
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/turn_humans_into_corgies.dm
@@ -0,0 +1,11 @@
+/datum/admin_secret_item/fun_secret/turn_humans_into_corgies
+ name = "Turn All Humans Into Corgies"
+
+/datum/admin_secret_item/fun_secret/turn_humans_into_corgies/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ for(var/mob/living/carbon/human/H in mob_list)
+ spawn(0)
+ H.corgize()
diff --git a/code/modules/admin/secrets/fun_secrets/turn_humans_into_monkeys.dm b/code/modules/admin/secrets/fun_secrets/turn_humans_into_monkeys.dm
new file mode 100644
index 0000000000..99b1573ade
--- /dev/null
+++ b/code/modules/admin/secrets/fun_secrets/turn_humans_into_monkeys.dm
@@ -0,0 +1,11 @@
+/datum/admin_secret_item/fun_secret/turn_humans_into_monkeys
+ name = "Turn All Humans Into Monkeys"
+
+/datum/admin_secret_item/fun_secret/turn_humans_into_monkeys/execute(var/mob/user)
+ . = ..()
+ if(!.)
+ return
+
+ for(var/mob/living/carbon/human/H in mob_list)
+ spawn(0)
+ H.monkeyize()
diff --git a/code/modules/admin/secrets/random_events/gravity.dm b/code/modules/admin/secrets/random_events/gravity.dm
index 51f8f1d187..637bb7129f 100644
--- a/code/modules/admin/secrets/random_events/gravity.dm
+++ b/code/modules/admin/secrets/random_events/gravity.dm
@@ -2,7 +2,7 @@
* Gravity *
**********/
/datum/admin_secret_item/random_event/gravity
- name = "Toggle station artificial gravity"
+ name = "Toggle Station Artificial Gravity"
/datum/admin_secret_item/random_event/gravity/can_execute(var/mob/user)
if(!(ticker && ticker.mode))
diff --git a/code/modules/admin/secrets/random_events/trigger_cordical_borer_infestation.dm b/code/modules/admin/secrets/random_events/trigger_cordical_borer_infestation.dm
new file mode 100644
index 0000000000..f96004565d
--- /dev/null
+++ b/code/modules/admin/secrets/random_events/trigger_cordical_borer_infestation.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/random_event/trigger_cordical_borer_infestation
+ name = "Trigger a Cortical Borer infestation"
+
+/datum/admin_secret_item/random_event/trigger_cordical_borer_infestation/execute(var/mob/user)
+ . = ..()
+ if(.)
+ return borers.attempt_random_spawn()
diff --git a/code/modules/admin/secrets/random_events/trigger_xenomorph_infestation.dm b/code/modules/admin/secrets/random_events/trigger_xenomorph_infestation.dm
new file mode 100644
index 0000000000..11dad2e84c
--- /dev/null
+++ b/code/modules/admin/secrets/random_events/trigger_xenomorph_infestation.dm
@@ -0,0 +1,7 @@
+/datum/admin_secret_item/random_event/trigger_xenomorph_infestation
+ name = "Trigger a Xenomorph Infestation"
+
+/datum/admin_secret_item/random_event/trigger_xenomorph_infestation/execute(var/mob/user)
+ . = ..()
+ if(.)
+ return xenomorphs.attempt_random_spawn()