diff --git a/baystation12.dme b/baystation12.dme index b45515e6d0d..9946956dfbb 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 b82874fded5..cfd9890d63b 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 00000000000..055a056bed5 --- /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 b8c4b2ef6b7..2ce43a79620 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 00000000000..75281adca8f --- /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 00000000000..1453ae35ce6 --- /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 00000000000..30867fca051 --- /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 00000000000..250d04b0443 --- /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 00000000000..e58863afde2 --- /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 00000000000..eec85c2f04b --- /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 190de7b47a9..877e2c217de 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 0e1269ea37b..32a77cbef2e 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 00000000000..5c65e389af7 --- /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 00000000000..0c9aae1b166 --- /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 00000000000..387f6d3ce72 --- /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 00000000000..dfa84e4cf6a --- /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 00000000000..33091900289 --- /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 00000000000..a840006a23c --- /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 00000000000..bc0c962b29b --- /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 00000000000..8225b96b296 --- /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 00000000000..277edd5a438 --- /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 00000000000..28e9497f53f --- /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 00000000000..73dba4ce4f9 --- /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 00000000000..3ec1bacb2c0 --- /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 00000000000..28cd3327c43 --- /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 00000000000..81b77eabb64 --- /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 00000000000..ae6f36a1ac1 --- /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 00000000000..99b1573adef --- /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 51f8f1d1871..637bb7129ff 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 00000000000..f96004565d8 --- /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 00000000000..11dad2e84c6 --- /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()