Post-Arc Bugfixes, Non-Sea Balance, etc. (#22836)

Fixes bugs associated with Lemurian Sea. Former test merge PR
This commit is contained in:
Batrachophreno
2026-08-19 17:35:13 +00:00
committed by GitHub
parent 3c03dc6866
commit 96d9151817
11 changed files with 95 additions and 56 deletions
+44 -1
View File
@@ -348,14 +348,57 @@ SUBSYSTEM_DEF(hallucinations)
message = pick("The water is dripping dripping dripping all around you.","Water flowing over stone, but there is no stone.","The waterfall roars o'er the cliff's edge.","Water, water, water. You are drowning.","Water, water, water. You will be awake for it.","Drums, drums, drums, unrelenting.","The drumbeat draws e'er closer.","Tap, ta-tap, ta-tap, tap, ta-tap, ta-tap.","Tap, tap tap, ta-tap, tap-tap, ta-tap.","Ta-ta-tap, tap, ta-tap, tap, tap ta-tap.")
target.play_screen_text("[message]", message_type, COLOR_PURPLE)
to_chat(target, SPAN_CULT(FONT_LARGE("[message]")))
var/datum/weakref/target_ref = WEAKREF(target)
if(prob(25))
addtimer(CALLBACK(src, PROC_REF(apply_delayed_adpi_response), target_ref), rand(5,25))
if(prob(25))
addtimer(CALLBACK(src, PROC_REF(apply_delayed_adpi_response), target_ref), rand(30,60))
if(prob(25))
addtimer(CALLBACK(src, PROC_REF(apply_delayed_adpi_response), target_ref), rand(65,120))
if(prob(2))
addtimer(CALLBACK(src, PROC_REF(radio_alarm), target_ref), 120)
addtimer(CALLBACK(src, PROC_REF(radio_alarm), target_ref), 135)
addtimer(CALLBACK(src, PROC_REF(radio_alarm), target_ref), 140)
if(prob(1))
target.hallucination += rand(1,120)
if(isskrell(target))
var/mob/living/carbon/human/H = target
apply_skrell_adpi_pain(H)
//straight up cloned delam_call, fuck it
/datum/controller/subsystem/hallucinations/proc/radio_alarm(var/datum/weakref/target_ref)
var/mob/living/target = target_ref?.resolve()
if(!istype(target) || QDELETED(target))
return
var/list/people = list()
for(var/mob/living/carbon/human/M in GLOB.living_mob_list)
if(!M.isMonkey() && !player_is_antag(M, only_offstation_roles = TRUE) && is_station_level(M.z))
people += M
people -= target
if(!length(people))
return
var/radio_exclaim = pick("Oh SHIT!", "Oh fuck.", "Uhhh!", "That's not good!", "FUCK.", "Engineering?", "It's under control!", "We're fucked!", "Ohhhh boy.", "What?!", "Um, <b>what?!</b>", "Shots, shots!", "HELP!", "MEDICAL!")
var/mob/living/carbon/human/requester = pick(people)
to_chat(target, "[requester.get_accent_icon(null, target)] <span class='radio'><b>[requester]</b> says, \"[radio_exclaim]\"</span>")
/datum/controller/subsystem/hallucinations/proc/apply_skrell_adpi_pain(var/mob/living/carbon/human/H)
H.adjustHalLoss(rand(5, 12))
if(prob(35))
to_chat(H, SPAN_WARNING("A sharp ache lances through your head as the thought passes."))
if(prob(15))
H.emote("shiver")
/datum/controller/subsystem/hallucinations/proc/apply_delayed_adpi_response(var/mob/living/carbon/human/H)
if(!H.stat)
var/chosen_emote = pick(SShallucinations.hal_emote)
// You are aware of it in this instance
if(prob(10))
H.visible_message("<B>[H]</B> [chosen_emote]")
// Only shows to others, not you; you're not aware of what you're doing. Could prompt others to ask if you're okay, and lead to confusion.
else
for(var/mob/M in oviewers(world.view, H))
to_chat(M, "<B>[H]</B> [chosen_emote]")
-30
View File
@@ -71,15 +71,11 @@ SUBSYSTEM_DEF(machinery)
// Cooking stuff. Not substantial enough to get its own SS, so it's shoved in here.
var/list/recipe_datums = list()
// LEMURIAN SEA ARC SNOWFLAKE: Break one random ship light every few minutes. REMOVE AFTER ARC
var/next_arc_light_break = 0
/datum/controller/subsystem/machinery/Recover()
all_cameras = SSmachinery.all_cameras
all_holopads = SSmachinery.all_holopads
all_apcs = SSmachinery.all_apcs
all_lights = SSmachinery.all_lights
next_arc_light_break = SSmachinery.next_arc_light_break
recipe_datums = SSmachinery.recipe_datums
breaker_boxes = SSmachinery.breaker_boxes
all_sensors = SSmachinery.all_sensors
@@ -91,7 +87,6 @@ SUBSYSTEM_DEF(machinery)
makepowernets()
build_rcon_lists()
setup_atmos_machinery(machinery)
next_arc_light_break = world.time + 3 MINUTES // LEMURIAN SEA, REMOVE AFTER ARC
fire(FALSE, TRUE) // Tick machinery once to pare down the list so we don't hammer the server on round-start.
return SS_INIT_SUCCESS
@@ -122,10 +117,6 @@ SUBSYSTEM_DEF(machinery)
return
current_step = SSMACHINERY_PIPENETS
resumed = FALSE
// LEMURIAN SEA, REMOVE AFTER ARC
if(!resumed && world.time >= next_arc_light_break)
break_random_arc_light()
next_arc_light_break = world.time + 3 MINUTES
/datum/controller/subsystem/machinery/proc/makepowernets()
for(var/datum/powernet/powernet as anything in powernets)
@@ -236,27 +227,6 @@ SUBSYSTEM_DEF(machinery)
queue.Cut(i)
return
/// LEMURIAN SEA, REMOVE AFTER ARC
/datum/controller/subsystem/machinery/proc/break_random_arc_light()
var/list/valid_lights = list()
for(var/obj/structure/machinery/light/light as anything in all_lights)
if(QDELETED(light))
continue
if(!is_station_level(light.z))
continue
if(light.status != LIGHT_OK)
continue
valid_lights += light
if(!length(valid_lights))
return
var/number_lights_broken = rand(1,4)
var/obj/structure/machinery/light/chosen_light
for(var/n = 0 to number_lights_broken)
chosen_light = pick(valid_lights)
chosen_light.broken()
/datum/controller/subsystem/machinery/stat_entry(msg)
msg = {"\n\
Queues: \