From b192bfd34cc29d28c0c8c5acbcea65ae7f23a07a Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Tue, 12 May 2015 18:15:55 -0700 Subject: [PATCH 1/2] Fix: Space turf depressure, admin del This commit fixes some special cases where a certain series of events could lead to a space turf being created which was not activated in LINDA, therefore it would not drain atmos correctly. Things changed: - ChangeTurf properly updates new space tiles - Admin delete calls changeturf instead of del'ing turfs to satisfy LINDA - Admin delete now uses qdel instead of del, because everything is being switched to qdel. --- code/game/turfs/turf.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d3a11c4af28..49be5134edf 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -244,7 +244,7 @@ S.update_starlight() W.levelupdate() - W.CalculateAdjacentTurfs() + W.air_update_turf(1) . = W affecting_lights = old_affecting_lights diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 405e2feaa27..1274c48e79f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -687,7 +687,11 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] deleted [O] at ([O.x],[O.y],[O.z])") message_admins("[key_name_admin(usr)] deleted [O] at ([O.x],[O.y],[O.z])", 1) feedback_add_details("admin_verb","DEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - del(O) + if(istype(O, /turf)) + var/turf/T = O + T.ChangeTurf(/turf/space) + return + qdel(O) /client/proc/cmd_admin_list_open_jobs() set category = "Admin" From f85be9e7429c2aa4d85e409ecafa7e6b7e7ec6e8 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Tue, 12 May 2015 18:33:24 -0700 Subject: [PATCH 2/2] Fix: Event manager list index out of bounds This commit prevents a runtime of "list index out of bounds" with events by adding a simple sanity checking system, so that the list checked always has a valid check, regardless of if the event has a valid variable. NOTE: May result in unintended behaviour if an event tries to complete with an invalid severity level. It will always be set to moderate, as that is a safe assumption for the code to make. --- code/modules/events/event_manager.dm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index cdb1dc9a4b4..2a53d572c68 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -39,8 +39,19 @@ finished_events += E + var/theseverity + + if(!E.severity) + theseverity = EVENT_LEVEL_MODERATE + + if(!E.severity == EVENT_LEVEL_MUNDANE && !E.severity == EVENT_LEVEL_MODERATE && !E.severity == EVENT_LEVEL_MAJOR) + theseverity = EVENT_LEVEL_MODERATE //just to be careful + + if(E.severity) + theseverity = E.severity + // Add the event back to the list of available events - var/datum/event_container/EC = event_containers[E.severity] + var/datum/event_container/EC = event_containers[theseverity] var/datum/event_meta/EM = E.event_meta EC.available_events += EM