Fix movement turf changer element to check openspace (#65757)

Fixes #65472 (The movement_turf_changer element allows creatures to step onto open space and fill them in )

This adds an openspace check for the movement_turf_changer element so that whatever mob is using it will fall through openspace properly.

I don't know what a moonicorn is but it sounds cool.
This commit is contained in:
Tim
2022-04-08 21:38:19 -07:00
committed by GitHub
parent f58f13c4ae
commit 3f13fda087
2 changed files with 11 additions and 6 deletions
+10 -5
View File
@@ -19,11 +19,19 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
/turf/open/chasm,
/turf/open/lava,
/turf/open/water,
/turf/open/openspace
/turf/open/openspace,
/turf/open/space/openspace
)))
#define isgroundlessturf(A) (is_type_in_typecache(A, GLOB.turfs_without_ground))
GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
/turf/open/openspace,
/turf/open/space/openspace
)))
#define isopenspaceturf(A) (is_type_in_typecache(A, GLOB.turfs_openspace))
#define isopenturf(A) (istype(A, /turf/open))
#define isindestructiblefloor(A) (istype(A, /turf/open/indestructible))
@@ -78,8 +86,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define ismonkey(A) (is_species(A, /datum/species/monkey))
#define isandroid(A) (is_species(A, /datum/species/android))
//more carbon mobs
//More carbon mobs
#define isalien(A) (istype(A, /mob/living/carbon/alien))
#define islarva(A) (istype(A, /mob/living/carbon/alien/larva))
@@ -148,7 +155,6 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown))
//Misc mobs
#define isobserver(A) (istype(A, /mob/dead/observer))
@@ -242,7 +248,6 @@ GLOBAL_LIST_INIT(book_types, typecacheof(list(
/obj/item/spellbook,
/obj/item/storage/book)))
// Jobs
#define is_job(job_type) (istype(job_type, /datum/job))
#define is_assistant_job(job_type) (istype(job_type, /datum/job/assistant))
@@ -26,7 +26,7 @@
SIGNAL_HANDLER
var/turf/destination = target.loc
if(!isturf(destination) || istype(destination, turf_type))
if(!isturf(destination) || istype(destination, turf_type) || isopenspaceturf(destination))
return
destination.PlaceOnTop(turf_type)