From 3dbcdd9be3d86bd44bdb92a12f38ad30c042d69e Mon Sep 17 00:00:00 2001
From: Roxy <75404941+TealSeer@users.noreply.github.com>
Date: Sun, 22 Feb 2026 21:10:49 -0500
Subject: [PATCH] Add tap all ore vents admin secret (#95231)
## About The Pull Request
Add a new button to the fun tab of admin secrets that taps every ore
vent
## Why It's Good For The Game
Quick button to get steady stream of ore flowing into the station is
nice
## Changelog
:cl:
admin: added tap all ore vents button to secrets panel
/:cl:
---
.../objects/structures/lavaland/ore_vent.dm | 30 ++++++++++---------
code/modules/admin/verbs/secrets.dm | 12 ++++++++
tgui/packages/tgui/interfaces/Secrets.jsx | 9 ++++++
3 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm
index 305ecf611fc..4870d33304e 100644
--- a/code/game/objects/structures/lavaland/ore_vent.dm
+++ b/code/game/objects/structures/lavaland/ore_vent.dm
@@ -328,26 +328,28 @@
/**
* Handles winning the event, gives everyone a payout and start boulder production
*/
-/obj/structure/ore_vent/proc/initiate_wave_win()
+/obj/structure/ore_vent/proc/initiate_wave_win(forced = FALSE)
tapped = TRUE //The Node Drone has survived the wave defense, and the ore vent is tapped.
SSore_generation.processed_vents += src
- log_game("Ore vent [key_name_and_tag(src)] was tapped")
- SSblackbox.record_feedback("tally", "ore_vent_completed", 1, type)
- balloon_alert_to_viewers("vent tapped!")
+ if(!forced)
+ log_game("Ore vent [key_name_and_tag(src)] was tapped")
+ SSblackbox.record_feedback("tally", "ore_vent_completed", 1, type)
+ balloon_alert_to_viewers("vent tapped!")
icon_state = icon_state_tapped
update_appearance(UPDATE_ICON_STATE)
qdel(GetComponent(/datum/component/gps))
- for(var/mob/living/miner in range(7, src)) //Give the miners who are near the vent points and xp.
- var/obj/item/card/id/user_id_card = miner.get_idcard(TRUE)
- if(miner.stat <= SOFT_CRIT)
- miner.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * boulder_size)
- if(!user_id_card)
- continue
- var/point_reward_val = (MINER_POINT_MULTIPLIER * boulder_size) - MINER_POINT_MULTIPLIER // We remove the base value of discovering the vent
- if(user_id_card.registered_account)
- user_id_card.registered_account.mining_points += point_reward_val
- user_id_card.registered_account.bank_card_talk("You have been awarded [point_reward_val] mining points for your efforts.")
+ if(!forced)
+ for(var/mob/living/miner in range(7, src)) //Give the miners who are near the vent points and xp.
+ var/obj/item/card/id/user_id_card = miner.get_idcard(TRUE)
+ if(miner.stat <= SOFT_CRIT)
+ miner.mind?.adjust_experience(/datum/skill/mining, MINING_SKILL_BOULDER_SIZE_XP * boulder_size)
+ if(!user_id_card)
+ continue
+ var/point_reward_val = (MINER_POINT_MULTIPLIER * boulder_size) - MINER_POINT_MULTIPLIER // We remove the base value of discovering the vent
+ if(user_id_card.registered_account)
+ user_id_card.registered_account.mining_points += point_reward_val
+ user_id_card.registered_account.bank_card_talk("You have been awarded [point_reward_val] mining points for your efforts.")
reset_drone(success = TRUE)
add_overlay(mutable_appearance('icons/obj/mining_zones/terrain.dmi', "well", ABOVE_MOB_LAYER))
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index aecb24dfd67..f5344cad418 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -377,6 +377,18 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(return_escape_shuttle), make_announcement), new_timer SECONDS)
else
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(return_escape_shuttle), make_announcement)
+ if("ore_vents")
+ if(!is_funmin)
+ return
+ SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Tap Ore Vents"))
+ var/vent_count = 0
+ for(var/obj/structure/ore_vent/vent as anything in SSore_generation.possible_vents)
+ if(vent.tapped || !COOLDOWN_FINISHED(vent, wave_cooldown) || vent.node) // skip if already tapped or currently being tapped
+ continue
+ vent.initiate_wave_win(forced = TRUE)
+ vent_count++
+ message_admins("[key_name_admin(holder)] tapped [vent_count] ore vents")
+ log_admin("[key_name_admin(holder)] tapped [vent_count] ore vents")
if("blackout")
if(!is_funmin)
return
diff --git a/tgui/packages/tgui/interfaces/Secrets.jsx b/tgui/packages/tgui/interfaces/Secrets.jsx
index 383962e41b3..63635054d59 100644
--- a/tgui/packages/tgui/interfaces/Secrets.jsx
+++ b/tgui/packages/tgui/interfaces/Secrets.jsx
@@ -424,6 +424,15 @@ const FunTab = (props) => {
onClick={() => act('send_shuttle_back')}
/>
+
+