Two more admin smites (#18991)

* Two more admin smites

Added two more admin player effects:
- Wet Surrounding Surfaces: Gives you the option of making a ring of water, lube or any reagent of your choice appear around the character instantly.
- Give Quest: Make a quest appear for the character, can either be personalised or a randomly generated simple one. Includes a warning that it isn't an excuse to misbehave.

* Fixes things
This commit is contained in:
SatinIsle
2026-01-07 14:54:47 +01:00
committed by GitHub
parent 6df0a70e74
commit 69d4cb45cb
5 changed files with 136 additions and 0 deletions
+42
View File
@@ -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//////////////
+87
View File
@@ -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]")