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
+2 -2
View File
@@ -388,8 +388,8 @@ GLOBAL_LIST_INIT(severity_to_string, alist(EVENT_LEVEL_MUNDANE = "Mundane", EVEN
20, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_JANITOR = 20)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Dark Matter Influx", /datum/event/gravity_anomaly,
35, list(ASSIGNMENT_ENGINEER = 20), is_one_shot = TRUE,
pop_needed = 12),
15, list(ASSIGNMENT_ENGINEER = 20), is_one_shot = TRUE,
pop_needed = 8),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Wandering Psiren School", /datum/event/wandering_psirens,
10, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5)),
+7 -7
View File
@@ -1,6 +1,6 @@
/datum/event/gravity_anomaly
announceWhen = 0
startWhen = 30
startWhen = 0 // In practice, gravity generator is always nearly done already if it starts too late.
endWhen = 60 // Actually gets set in setup()
ic_name = "a gravitational anomaly"
var/list/valid_victims
@@ -102,7 +102,7 @@
return FALSE
/datum/event/gravity_anomaly/proc/pick_victim_disturbance()
if(activeFor >= next_gravity_surge && prob(67))
if(activeFor >= next_gravity_surge)
schedule_next_gravity_surge()
if(prob(10))
return "surge_hilarious"
@@ -119,7 +119,7 @@
return null
/datum/event/gravity_anomaly/proc/schedule_next_gravity_surge()
next_gravity_surge = activeFor + rand(2, 90)
next_gravity_surge = activeFor + rand(2, 10)
/datum/event/gravity_anomaly/proc/get_current_victims()
var/list/current_victims = list()
@@ -197,13 +197,13 @@
/datum/event/gravity_anomaly/proc/apply_surge_default(var/mob/living/carbon/human/victim)
victim.dizziness += rand(10, 20)
victim.confused += rand(20, 25)
if(prob(50))
if(prob(33))
if(isipc(victim))
to_chat(victim, SPAN_MACHINE_WARNING(pick(nausea_strong_ipc)))
else
to_chat(victim, SPAN_WARNING(pick(nausea_strong_organic)))
victim.vomit()
if(prob(70))
if(prob(90))
if(victim.buckled_to)
to_chat(victim, SPAN_WARNING("Sudden gravity flux presses you into your chair!"))
shake_camera(victim, 3, 1)
@@ -215,7 +215,7 @@
else
to_chat(victim, SPAN_WARNING("The floor lurches beneath you!"))
shake_camera(victim, 10, 1)
victim.visible_message(SPAN_DANGER("[victim.name] is tossed around by a sudden knot in the artifical gravity field!"))
victim.visible_message(SPAN_HIGHDANGER("[victim.name] is tossed around by a sudden knot in the artifical gravity field!"))
victim.throw_at_random(FALSE, 4, 1)
victim.Weaken(3)
@@ -240,7 +240,7 @@
to_chat(victim, SPAN_WARNING("You feel like your ankles are about to be ripped apart as the artificial gravity surges!"))
shake_camera(victim, 8, 2)
else
victim.visible_message(SPAN_DANGER("[victim.name] is flung violently by a horrible gravity flux!"))
victim.visible_message(SPAN_HIGHDANGER("[victim.name] is flung violently by a horrible gravity flux!"))
victim.Weaken(8)
if(prob(90))
victim.throw_at_random(FALSE, 7, 1)
@@ -1116,15 +1116,16 @@
timevomit = clamp(timevomit, 1, 10)
level = clamp(level, 1, 3)
var/delay = rand(100,175)
lastpuke = TRUE
to_chat(src, SPAN_WARNING("You feel nauseous..."))
if(level > 1)
sleep(150 / timevomit) //15 seconds until second warning
sleep(delay / timevomit)
to_chat(src, SPAN_WARNING("You feel like you are about to throw up!"))
if(level > 2)
sleep(100 / timevomit) //and you have 10 more for mad dash to the bucket
sleep(delay / timevomit)
empty_stomach()
sleep(350) //wait 35 seconds before next volley
sleep(delay * 2)
lastpuke = FALSE
/// A damaged stomach can put blood in your vomit.
+20 -9
View File
@@ -142,19 +142,30 @@
GLOB.exited_event.register(T, src, PROC_REF(on_turf_exited))
for(var/obj/effect/overmap/visitable/ship/ship in T)
var/list/active_ship_events = ship_events[ship]
for(var/datum/event/E as anything in active_ship_events)
if(is_event_in_turf(E,T))
continue
E.kill()
LAZYREMOVE(ship_events[ship], E)
update_ship_hazards(ship, T)
for(var/obj/effect/overmap/event/E in active_hazards)
start_hazard(ship,E)
/singleton/overmap_event_handler/proc/update_ship_hazards(var/obj/effect/overmap/visitable/ship/ship, var/turf/T)
if(!istype(ship))
return
if(!istype(T))
T = get_turf(ship)
var/list/active_ship_events = ship_events[ship]
for(var/datum/event/E as anything in active_ship_events)
if(istype(T) && is_event_in_turf(E, T))
continue
E.kill()
LAZYREMOVE(ship_events[ship], E)
if(!istype(T))
return
for(var/obj/effect/overmap/event/E in hazard_by_turf[T])
start_hazard(ship, E)
/singleton/overmap_event_handler/proc/is_event_in_turf(var/datum/event/E, var/turf/T)
for(var/obj/effect/overmap/event/hazard in hazard_by_turf[T])
if((E in hazard.events) && E.severity == hazard.difficulty)
if((E.type in hazard.events) && E.severity == hazard.difficulty)
return TRUE
/singleton/overmap_event_handler/proc/is_event_included(var/list/hazards, var/obj/effect/overmap/event/E, var/equal_or_better)//this proc is only used so it can break out of 2 loops cleanly
+10
View File
@@ -102,6 +102,16 @@
. = ..()
/obj/effect/overmap/visitable/ship/Move(atom/newloc, direction, glide_size_override = 0, update_dir = TRUE)
. = ..()
if(.)
overmap_event_handler.update_ship_hazards(src)
/obj/effect/overmap/visitable/ship/forceMove(atom/destination)
. = ..()
if(.)
overmap_event_handler.update_ship_hazards(src)
/obj/effect/overmap/visitable/ship/relaymove(mob/living/user, direction, accel_limit)
. = ..()
+2 -2
View File
@@ -32,9 +32,9 @@
if(randomize_range)
switch(lighttype)
if("tube")
brightness_range = rand(5,8) // LEMURIAN SEA - INCREASE BY 1,1 AFTER ARC
brightness_range = rand(6,9)
if("bulb")
brightness_range = rand(3,5) // LEMURIAN SEA - INCREASE BY 1,1 AFTER ARC
brightness_range = rand(4,6)
if(randomize_color)
brightness_color = pick(randomized_colors)
update()
+1 -1
View File
@@ -240,7 +240,7 @@
message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
explode()
else if(prob(min(60,(switchcount**2) * 0.05))) // LEMURIAN SEA, REDUCE 0.05 -> 0.01 AFTER ARC
else if(prob(min(60,(switchcount**2) * 0.01)))
if(status == LIGHT_OK && trigger)
status = LIGHT_BURNED
stat |= BROKEN