diff --git a/code/modules/admin/player_effects.dm b/code/modules/admin/player_effects.dm index 5d46b4f2872..57b7a4940cc 100644 --- a/code/modules/admin/player_effects.dm +++ b/code/modules/admin/player_effects.dm @@ -325,6 +325,34 @@ target.overlay_fullscreen("scrolls", /atom/movable/screen/fullscreen/scrolls, 1) addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, clear_fullscreen), "scrolls"), 20 SECONDS) + if("wet_floors") + var/chem + var/reagent_choice = tgui_alert(user, "Which reagent do you want to place on the floors around them?", "Reagent", list("Water", "Space Lube", "Other", "Cancel")) + if(!reagent_choice || (reagent_choice == "Cancel")) + return + if(reagent_choice == "Water") + chem = REAGENT_ID_WATER + if(reagent_choice == "Space Lube") + chem = REAGENT_ID_LUBE + if(reagent_choice == "Other") + var/list/chem_list = typesof(/datum/reagent) + var/datum/reagent/chemical = tgui_input_list(user, "Which chemical would you like to use?", "Chemicals", chem_list) + if(!chemical) + return + chem = chemical.id + + if(!target) + return //Check target still exists after choices were made + var/turf/target_turf = get_turf(target) + for(var/turf/simulated/floor/surroundings in orange(1,target)) + if(target_turf == surroundings) //Don't put it directly on our turf, just neighbouring ones + continue + var/datum/reagents/our_chem = new /datum/reagents(30) //Create some reagents, move them over, and clean up the datum afterwards + our_chem.add_reagent(chem, 30) + our_chem.trans_to_turf(surroundings,30) + our_chem.Destroy() + + ////////MEDICAL////////////// if("health_scan") @@ -803,6 +831,20 @@ else if(!target.cloaked) target.cloak() + if("give_quest") + if(!target) + return + var/admin_quest = tgui_alert(user, "Do you want to give a random quest or a personalised one?", "Quest!", list("Random", "Personalised", "Cancel")) + if(!admin_quest || (admin_quest == "Cancel")) + return + if(admin_quest == "Personalised") + var/specific_quest = tgui_input_text(user, "What is their quest?", "Quest!!!") + if(!specific_quest) + return + target.quest_from_above(specific_quest) + else + target.quest_from_above() + ////////FIXES////////////// diff --git a/code/modules/admin/random_quest.dm b/code/modules/admin/random_quest.dm new file mode 100644 index 00000000000..5fd0fb42ab9 --- /dev/null +++ b/code/modules/admin/random_quest.dm @@ -0,0 +1,87 @@ +/mob/proc/quest_from_above(var/specific_quest) + var/list/quests = list("Search", + "Collect", + "Drink", + "Eat", + "Visit", + "Clean", + "Wear", + "Pet") + var/list/searchables = list("Trash Piles", + "Lockers", + "Backpacks", + "Trash Cans and Disposal Units", + "Co-worker's Pockets") + var/list/collectables = list("Rare Coins", + "Figurines", + "Protein Shakes", + "Non-Lethal Weapons", + "Sunglasses", + "Mega Nukies", + "Kinky Toys", + "Plushies") + var/list/locations = list("Redgate Locations", + "High Security Areas", + "Medbay Rooms", + "Security Rooms", + "Maintenance Rooms", + "Command Rooms", + "Engineering Rooms", + "Deep Space Locations", + "Research Rooms") + var/list/pets = list("Mice", + "Mothroaches", + "Canines", + "Plushies", + "Felines", + "Lizards", + "Co-workers") + var/complete_quest + if(!specific_quest) + var/chosen_one = pick(quests) + var/chosen_two + var/number_of_times + switch(chosen_one) + if("Search") + chosen_two = pick(searchables) + number_of_times = rand(4,10) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]!" + if("Collect") + chosen_two = pick(collectables) + number_of_times = rand(3,10) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]!" + if("Drink") + var/list/drink_list = typesof(/obj/item/reagent_containers/food/drinks) + var/obj/item/reagent_containers/food/drinks/pick_drink = pick(drink_list) + chosen_two = pick_drink.name + number_of_times = rand(2,6) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]s!" + if("Eat") + var/list/snack_list = typesof(/obj/item/reagent_containers/food/snacks) + var/obj/item/reagent_containers/food/snacks/pick_snack = pick(snack_list) + chosen_two = pick_snack.name + number_of_times = rand(2,6) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]s!" + if("Visit","Clean") + chosen_two = pick(locations) + number_of_times = rand(2,8) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]!" + if("Wear") + var/clothing_options = typesof(/obj/item/clothing) + var/obj/item/clothing/clothing_one = pick(clothing_options) + var/obj/item/clothing/clothing_two = pick(clothing_options) + var/obj/item/clothing/clothing_three = pick(clothing_options) + complete_quest = "[chosen_one] as many of the following as you can find: [clothing_one.name], [clothing_two.name] and [clothing_three.name]!" + if("Pet") + chosen_two = pick(pets) + number_of_times = rand(2,5) + complete_quest = "[chosen_one] [number_of_times] [chosen_two]!" + else + complete_quest = specific_quest + + to_chat(src, span_notice(span_huge("You have been granted a quest from above!"))) + to_chat(src, span_notice("From somewhere deep inside yourself, a quest has been conjured. You feel a compulsion to complete the following activity:")) + to_chat(src, span_boldnotice("[complete_quest]")) + to_chat(src, span_notice(span_small("Please note that this is just a bit of fun, you should not use this an excuse to break rules or cause major disruptions for other players."))) + + log_and_message_admins("[src.ckey] playing as [src.name] has been given the quest: [complete_quest]") diff --git a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlAdmin.tsx b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlAdmin.tsx index 35e327b8cbe..732de994758 100644 --- a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlAdmin.tsx +++ b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlAdmin.tsx @@ -45,6 +45,9 @@ export const ControlAdmin = (props) => { + ); }; diff --git a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx index 01c9bf5e98e..8a79b9751a6 100644 --- a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx +++ b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx @@ -72,6 +72,9 @@ export const ControlSmites = (props) => { + ); }; diff --git a/vorestation.dme b/vorestation.dme index 42e5655500e..18477acc640 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2188,6 +2188,7 @@ #include "code\modules\admin\player_effects.dm" #include "code\modules\admin\player_notes.dm" #include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\random_quest.dm" #include "code\modules\admin\tag.dm" #include "code\modules\admin\topic.dm" #include "code\modules\admin\ToRban.dm"