mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
87 lines
3.3 KiB
Plaintext
87 lines
3.3 KiB
Plaintext
/datum/map_template/shelter
|
|
var/shelter_id
|
|
var/description
|
|
var/blacklisted_turfs
|
|
var/whitelisted_turfs
|
|
var/banned_areas
|
|
var/banned_objects
|
|
|
|
/datum/map_template/shelter/New()
|
|
. = ..()
|
|
blacklisted_turfs = typecacheof(/turf/closed)
|
|
whitelisted_turfs = list()
|
|
banned_areas = typecacheof(/area/shuttle)
|
|
banned_objects = list()
|
|
|
|
/datum/map_template/shelter/proc/check_deploy(turf/deploy_location)
|
|
var/affected = get_affected_turfs(deploy_location, centered=TRUE)
|
|
for(var/turf/T in affected)
|
|
var/area/A = get_area(T)
|
|
if(is_type_in_typecache(A, banned_areas))
|
|
return SHELTER_DEPLOY_BAD_AREA
|
|
var/banned = is_type_in_typecache(T, blacklisted_turfs)
|
|
var/permitted = is_type_in_typecache(T, whitelisted_turfs)
|
|
if(banned && !permitted)
|
|
return SHELTER_DEPLOY_BAD_TURFS
|
|
|
|
for(var/obj/O in T)
|
|
if((O.density && O.anchored) || is_type_in_typecache(O, banned_objects))
|
|
return SHELTER_DEPLOY_ANCHORED_OBJECTS
|
|
|
|
// Check if the shelter sticks out of map borders
|
|
var/shelter_origin_x = deploy_location.x - round(width/2)
|
|
if(shelter_origin_x <= 1 || shelter_origin_x+width > world.maxx)
|
|
return SHELTER_DEPLOY_OUTSIDE_MAP
|
|
var/shelter_origin_y = deploy_location.y - round(height/2)
|
|
if(shelter_origin_y <= 1 || shelter_origin_y+height > world.maxy)
|
|
return SHELTER_DEPLOY_OUTSIDE_MAP
|
|
|
|
return SHELTER_DEPLOY_ALLOWED
|
|
|
|
/datum/map_template/shelter/alpha
|
|
name = "Shelter Alpha"
|
|
shelter_id = "shelter_alpha"
|
|
description = "A cosy self-contained pressurized shelter, with \
|
|
built-in navigation, entertainment, medical facilities and a \
|
|
sleeping area! Order now, and we'll throw in a TINY FAN, \
|
|
absolutely free!"
|
|
mappath = "_maps/templates/shelter_1.dmm"
|
|
|
|
/datum/map_template/shelter/alpha/New()
|
|
. = ..()
|
|
blacklisted_turfs += typecacheof(/turf/open/indestructible) //yogs added indestructible floors to the shelter black list
|
|
whitelisted_turfs = typecacheof(/turf/closed/mineral)
|
|
banned_objects = typecacheof(/obj/structure/stone_tile)
|
|
|
|
/datum/map_template/shelter/beta
|
|
name = "Shelter Beta"
|
|
shelter_id = "shelter_beta"
|
|
description = "An extremely luxurious shelter, containing all \
|
|
the amenities of home, including carpeted floors, hot and cold \
|
|
running water, a gourmet three course meal, cooking facilities, \
|
|
and a deluxe companion to keep you from getting lonely during \
|
|
an ash storm."
|
|
mappath = "_maps/templates/shelter_2.dmm"
|
|
|
|
/datum/map_template/shelter/beta/New()
|
|
. = ..()
|
|
blacklisted_turfs += typecacheof(/turf/open/indestructible) //yogs added indestructible floors to the shelter black list
|
|
whitelisted_turfs = typecacheof(/turf/closed/mineral)
|
|
banned_objects = typecacheof(/obj/structure/stone_tile)
|
|
|
|
/datum/map_template/shelter/charlie
|
|
name = "Shelter Charlie"
|
|
shelter_id = "shelter_charlie"
|
|
description = "A luxury elite shelter which holds an entire bar \
|
|
along with two vending machines, tables, and a restroom that \
|
|
also has a sink. This isn't a survival capsule and so you can \
|
|
expect that this won't save you if you're bleeding out to \
|
|
death."
|
|
mappath = "_maps/templates/shelter_3.dmm"
|
|
|
|
/datum/map_template/shelter/charlie/New()
|
|
. = ..()
|
|
blacklisted_turfs += typecacheof(/turf/open/indestructible) //yogs added indestructible floors to the shelter black list
|
|
whitelisted_turfs = typecacheof(/turf/closed/mineral)
|
|
banned_objects = typecacheof(/obj/structure/stone_tile)
|