From ef11aa40b7a607d85588e59e261343edae51a8c8 Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Fri, 16 Feb 2024 22:08:03 -0500 Subject: [PATCH] [MODULAR] Fixes a runtime in engaged_role_play_check (#970) * Fixes a runtime in engaged_role_play_check * Inverts the return value * Update ev_roleplay_check.dm * Update ev_roleplay_check.dm --- code/modules/events/brain_trauma.dm | 2 +- code/modules/events/disease_outbreak.dm | 2 +- code/modules/events/fake_virus.dm | 2 +- code/modules/events/heart_attack.dm | 2 +- .../surgery/organs/internal/appendix/_appendix.dm | 2 +- .../ices_events/code/events/ev_roleplay_check.dm | 13 +++++++++---- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm index 5d6a5a7d520..b9d1c4188b5 100644 --- a/code/modules/events/brain_trauma.dm +++ b/code/modules/events/brain_trauma.dm @@ -22,7 +22,7 @@ if(!(H.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) //please stop giving my centcom admin gimmicks full body paralysis continue // NOVA EDIT ADD START - Station/area event candidate filtering - if(engaged_role_play_check(H, station = TRUE, dorms = TRUE)) + if(!engaged_role_play_check(H, station = TRUE, dorms = TRUE)) continue // NOVA EDIT ADD END traumatize(H) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index c5e5ac399df..36290343050 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -64,7 +64,7 @@ if(!is_station_level(candidate.z) && !is_mining_level(candidate.z)) //Diseases can't really spread if the vector is in deep space. continue // NOVA EDIT ADDITION START - Station/area event candidate filtering. - if(engaged_role_play_check(candidate, station = TRUE, dorms = TRUE)) + if(!engaged_role_play_check(candidate, station = TRUE, dorms = TRUE)) continue // NOVA EDIT ADDITION END disease_candidates += candidate diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm index e23ff73c07f..adea3a7edbd 100644 --- a/code/modules/events/fake_virus.dm +++ b/code/modules/events/fake_virus.dm @@ -13,7 +13,7 @@ if(!(victim.mind?.assigned_role.job_flags & JOB_CREW_MEMBER)) continue // NOVA EDIT ADD START - Station/area event candidate filtering - if(engaged_role_play_check(fake_virus_victims, station = TRUE, dorms = TRUE)) + if(!engaged_role_play_check(fake_virus_victims, station = TRUE, dorms = TRUE)) continue // NOVA EDIT ADD END fake_virus_victims += victim diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index 9d9e4c76cd9..83c4f606aa6 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -35,7 +35,7 @@ if(!(candidate.mind.assigned_role.job_flags & JOB_CREW_MEMBER))//only crewmembers can get one, a bit unfair for some ghost roles and it wastes the event continue // NOVA EDIT ADD START - Station/area event candidate filtering - if(engaged_role_play_check(candidate, station = TRUE, dorms = TRUE)) + if(!engaged_role_play_check(candidate, station = TRUE, dorms = TRUE)) continue // NOVA EDIT ADD END if(candidate.satiety <= -60 && !candidate.has_status_effect(/datum/status_effect/exercised)) //Multiple junk food items recently //No foodmaxxing for the achievement diff --git a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm index b3ab005d6bc..0e82f86e4d0 100644 --- a/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm +++ b/modular_nova/master_files/code/modules/surgery/organs/internal/appendix/_appendix.dm @@ -1,5 +1,5 @@ /obj/item/organ/internal/appendix/become_inflamed() - if(engaged_role_play_check(owner, station = TRUE, dorms = TRUE)) + if(!engaged_role_play_check(owner, station = TRUE, dorms = TRUE)) return if(!(owner.mind && owner.mind.assigned_role && owner.mind.assigned_role.job_flags & JOB_CREW_MEMBER)) diff --git a/modular_nova/modules/ices_events/code/events/ev_roleplay_check.dm b/modular_nova/modules/ices_events/code/events/ev_roleplay_check.dm index 0def7040812..867b304da74 100644 --- a/modular_nova/modules/ices_events/code/events/ev_roleplay_check.dm +++ b/modular_nova/modules/ices_events/code/events/ev_roleplay_check.dm @@ -1,13 +1,18 @@ /** * Checks if a player meets certain conditions to exclude them from event selection. + * Returns FALSE if the player is considered ineligible for the event */ /proc/engaged_role_play_check(mob/living/carbon/human/player, station = TRUE, dorms = TRUE) var/turf/player_turf = get_turf(player) var/area/player_area = get_area(player_turf) - if(station && !is_station_level(player_turf.z)) - return TRUE + if(station) + if(isnull(player_turf)) + if(!is_station_level(player.z)) + return FALSE + else if(!is_station_level(player_turf.z)) + return FALSE if(dorms && istype(player_area, /area/station/commons/dorms)) - return TRUE + return FALSE - return FALSE + return TRUE