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
+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)
. = ..()