Big fucking shelter capsule update (#18391)

* Adds rec room capsule and stupid dumb meme loss capsules

* Creates MANY new shelter capsules

* maybe this should be above the misc category

* Pretties up Christmas capsule

* makes more normal shelters more evenly likely

* Breaks up map slection into tables, adds blacksmith + meth lab

* adds a sentient prize handler to the rec room

* tweaks paintings in rec room capsule a lil more

* Fixes accidental stacked doors in dumb loss capsules

* Adds art gallery

* miscellaneous minor tweaks to shark pool/ rec room

* Adds garden shelter

* Makes "pool" shelter a bit more dangerous and vorny

* Adds mimic hell

* Minor tweaks

* adds AREA_BLOCK_INSTANT_BUILDING flag

* sleep cleanup of capsule code

* Adds off-color double-bedroom shelter

* Adds living room redspace shelter

* Flags a fuckton of areas with AREA_BLOCK_INSTANT_BUILDING

* NO LINTER YOU DIDN'T SEE THAT SHUT UP 😭

* Adds redspace capsule to recycler vendor shop

* Adds bluespace capsules to Research

* makes shelter capsules actually print their flavor text whoopsie

* On second thought how about durasteel instead of plasteel to print these

* capsule QoL + potential exploit removal

* Adds candlelit dinner redspace capsule

* Replaces a couple airlocks in two pre-existing shelters with vertical ones cause it looks nicer that way

* And maybe a privacy bolt button here in the bar bathroom

* Adds cafe capsule - dear god stop me PLEASE

* Decorates cafe pod a bit more

* some recroom tweaks to make it look even NICER and removes automated prize vendor to make room for fake casino chips SOON

* I should have done this ages ago to make things visually clearer for me when mapping...

* Adds ADMIN-SPAWN-ONLY tesla capsule

* Fixes mis-print of capsule template info

* oops messed up some things with the tesla capsule apparently :(

* Fixes redspace capsule flavor text

* adds capsules to explo vendor (will this ever even be used??)

* Makes dangerous capsules more dangerous

* Adds privacy features to rec room capsule

* Replaces chips in rec room capsule with fake ones
This commit is contained in:
Jenny
2025-09-08 18:11:24 -07:00
committed by GitHub
parent 7086878e08
commit f76eb26592
39 changed files with 5969 additions and 94 deletions
@@ -83,7 +83,6 @@
EQUIPMENT("Injector (L) - Trauma", /obj/item/reagent_containers/hypospray/autoinjector/biginjector/brute, 500),
EQUIPMENT("Nanopaste Tube", /obj/item/stack/nanopaste, 1000),
EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500),
EQUIPMENT("Shelter Capsule", /obj/item/survivalcapsule, 500),
EQUIPMENT("Burn Medipen", /obj/item/reagent_containers/hypospray/autoinjector/burn, 250),
EQUIPMENT("Detox Medipen", /obj/item/reagent_containers/hypospray/autoinjector/detox, 250),
EQUIPMENT("Oxy Medipen", /obj/item/reagent_containers/hypospray/autoinjector/oxy, 250),
@@ -132,15 +131,22 @@
EQUIPMENT("Hardsuit - Smoke Bomb Deployer", /obj/item/rig_module/grenade_launcher/smoke, 2000),
EQUIPMENT("Hardsuit - Proto-Kinetic Gauntlets", /obj/item/rig_module/gauntlets, 2000),
)
prize_list["Shelter Capsules"] = list(
EQUIPMENT("Shelter Capsule - Shelter (5x5)", /obj/item/survivalcapsule, 500),
EQUIPMENT("Shelter Capsule - Luxury Shelter (7x7)", /obj/item/survivalcapsule/luxury, 3100),
EQUIPMENT("Shelter Capsule - Redspace (7x7)", /obj/item/survivalcapsule/randomized, 5000),
EQUIPMENT("Shelter Capsule - Sauna (7x7)", /obj/item/survivalcapsule/sauna, 5000),
EQUIPMENT("Shelter Capsule - Rec Room + Cards Table (9x9)", /obj/item/survivalcapsule/recroom, 7500),
EQUIPMENT("Shelter Capsule - Bar (11x11)", /obj/item/survivalcapsule/luxurybar, 10000),
EQUIPMENT("Shelter Capsule - Deluxe Cabin (11x11)", /obj/item/survivalcapsule/luxurycabin, 10000),
EQUIPMENT("Shelter Capsule - Cafe (11x11)", /obj/item/survivalcapsule/cafe, 10000),
)
prize_list["Miscellaneous"] = list(
EQUIPMENT(REAGENT_ABSINTHE, /obj/item/reagent_containers/food/drinks/bottle/absinthe, 125),
EQUIPMENT("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 150),
EQUIPMENT("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 500),
EQUIPMENT("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 1000),
EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 900),
EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3100),
EQUIPMENT("Bar Shelter Capsule", /obj/item/survivalcapsule/luxurybar, 10000),
EQUIPMENT("Deluxe Cabin Shelter Capsule",/obj/item/survivalcapsule/luxurycabin, 10000),
EQUIPMENT("Plush Toy", /obj/random/plushie, 300),
EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200),
EQUIPMENT("Thalers - 100", /obj/item/spacecash/c100, 1000),
@@ -71,6 +71,16 @@
EQUIPMENT("Fine Excavation Kit - Measuring Tape", /obj/item/measuring_tape, 10),
)
prize_list["Shelter Capsules"] = list(
EQUIPMENT("Shelter Capsule - Shelter (5x5)", /obj/item/survivalcapsule, 50),
EQUIPMENT("Shelter Capsule - Luxury Shelter (7x7)", /obj/item/survivalcapsule/luxury, 310),
EQUIPMENT("Shelter Capsule - Redspace (7x7)", /obj/item/survivalcapsule/randomized, 500),
EQUIPMENT("Shelter Capsule - Sauna (7x7)", /obj/item/survivalcapsule/sauna, 500),
EQUIPMENT("Shelter Capsule - Rec Room + Cards Table (9x9)", /obj/item/survivalcapsule/recroom, 750),
EQUIPMENT("Shelter Capsule - Bar (11x11)", /obj/item/survivalcapsule/luxurybar, 1000),
EQUIPMENT("Shelter Capsule - Deluxe Cabin (11x11)", /obj/item/survivalcapsule/luxurycabin, 1000),
EQUIPMENT("Shelter Capsule - Cafe (11x11)", /obj/item/survivalcapsule/cafe, 1000),
)
prize_list["Miscellaneous"] = list(
EQUIPMENT(REAGENT_ABSINTHE, /obj/item/reagent_containers/food/drinks/bottle/absinthe, 10),
EQUIPMENT(REAGENT_WHISKEY, /obj/item/reagent_containers/food/drinks/bottle/whiskey, 10),
@@ -80,9 +90,6 @@
EQUIPMENT("Industrial Equipment - Phoron Bore", /obj/item/gun/magnetic/matfed/phoronbore/loaded, 300),
EQUIPMENT("Industrial Equipment - Inducer", /obj/item/inducer, 750),
EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 90),
EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 310),
EQUIPMENT("Bar Shelter Capsule", /obj/item/survivalcapsule/luxurybar, 1000),
EQUIPMENT("Deluxe Cabin Shelter Capsule", /obj/item/survivalcapsule/luxurycabin, 1000),
EQUIPMENT("Plush Toy", /obj/random/plushie, 30),
EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 20),
EQUIPMENT("Thalers - 100", /obj/item/spacecash/c100, 100),
+194 -55
View File
@@ -16,6 +16,11 @@ GLOBAL_LIST_EMPTY(unique_deployable)
name = "\improper Emergency Shelter Bathroom"
icon_state = "away2"
/area/survivalpod/redspace
name = "\improper Redspace Capsule Shelter"
icon_state = "darkred"
//Custom survival pod areas
/area/survivalpod/holly
@@ -36,83 +41,116 @@ GLOBAL_LIST_EMPTY(unique_deployable)
var/used = FALSE
var/is_ship = FALSE
var/unique_id = null
var/admin_log_verb = "activated a bluespace capsule" // Just to make the blue/redspace ones distinct for admin logs
/obj/item/survivalcapsule/proc/get_template()
if(template)
return
template = SSmapping.shelter_templates[template_id]
template = SSmapping.shelter_templates[get_template_id()]
if(!template)
throw EXCEPTION("Shelter template ([template_id]) not found!")
qdel(src)
/obj/item/survivalcapsule/proc/get_template_id()
return template_id
/obj/item/survivalcapsule/proc/get_template_info()
var/ret = ""
if(!template)
get_template()
if(template)
ret += "This capsule has the [template.name] stored:\n"
ret += template.description
else
ret += "This capsule has an unknown template stored."
return ret
/obj/item/survivalcapsule/proc/can_deploy(var/turf/deploy_location, var/turf/above_location)
var/status = template.check_deploy(deploy_location, is_ship)
switch(status)
//Not allowed due to /area technical reasons
if(SHELTER_DEPLOY_BAD_AREA)
src.loc.visible_message(span_warning("\The [src]'s safety mechanisms prevent it from activating in this area. You'll need to find an area that would be less disruptive to activate it!"))
//Anchored objects or no space
if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS)
var/width = template.width
var/height = template.height
src.loc.visible_message(span_warning("\The [src] can be activated here, but doesn't have room to deploy! You need to clear a [width]x[height] area!"))
if(SHELTER_DEPLOY_SHIP_SPACE)
src.loc.visible_message(span_warning("\The [src] can only be deployed in space."))
if(status != SHELTER_DEPLOY_ALLOWED)
return FALSE
return TRUE
// First step: Warn and cancel deployment if necessary conditions aren't met. Otherwise generate smoke and wait a moment.
/obj/item/survivalcapsule/proc/deploy_step_one(var/mob/user)
var/turf/deploy_location = get_turf(src)
// We might have moved since the last check, so we check again!
if(!can_deploy(deploy_location, GetAbove(deploy_location)))
used = FALSE
return
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()
smoke.attach(deploy_location)
smoke.set_up(10, 0, deploy_location)
smoke.start()
addtimer(CALLBACK(src, PROC_REF(deploy_step_two), user), 4 SECONDS, TIMER_DELETE_ME)
// Second step: Load shelter template at location
/obj/item/survivalcapsule/proc/deploy_step_two(var/mob/user)
var/turf/deploy_location = get_turf(src)
var/turf/above_location = GetAbove(deploy_location)
// We might have moved since the last check, so we check again!
if(!can_deploy(deploy_location, above_location))
used = FALSE
return
if(unique_id)
GLOB.unique_deployable += unique_id
log_and_message_admins("[admin_log_verb] at [get_area(deploy_location)]!", user)
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
// Load shelter template
if(above_location)
template.add_roof(above_location)
template.annihilate_plants(deploy_location)
template.load(deploy_location, centered = TRUE)
template.update_lighting(deploy_location)
qdel(src)
/obj/item/survivalcapsule/Destroy()
template = null // without this, capsules would be one use. per round.
. = ..()
/obj/item/survivalcapsule/examine(mob/user)
. = ..()
if(!template)
get_template()
if(template)
. += "This capsule has the [template.name] stored:"
. += template.description
else
. += "This capsule has an unknown template stored."
var/temp_info = get_template_info()
if(length(temp_info))
. += temp_info
/obj/item/survivalcapsule/attack_self(mob/user)
//Can't grab when capsule is New() because templates aren't loaded then
get_template()
if(!used)
if(unique_id && (unique_id in GLOB.unique_deployable))
loc.visible_message(span_warning("There can only be one [src] deployed at a time."))
return
var/turf/deploy_location = get_turf(src)
// Warn the user in advance if the capsule can't work from where they're standing.
if(!can_deploy(get_turf(src), GetAbove(deploy_location)))
return
loc.visible_message(span_warning("\The [src] begins to shake. Stand back!"))
user.drop_from_inventory(src)
used = TRUE
sleep(5 SECONDS)
var/turf/deploy_location = get_turf(src)
var/status = template.check_deploy(deploy_location, is_ship)
var/turf/above_location = GetAbove(deploy_location)
switch(status)
//Not allowed due to /area technical reasons
if(SHELTER_DEPLOY_BAD_AREA)
src.loc.visible_message(span_warning("\The [src] will not function in this area."))
//Anchored objects or no space
if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS)
var/width = template.width
var/height = template.height
src.loc.visible_message(span_warning("\The [src] doesn't have room to deploy! You need to clear a [width]x[height] area!"))
if(SHELTER_DEPLOY_SHIP_SPACE)
src.loc.visible_message(span_warning("\The [src] can only be deployed in space."))
if(status != SHELTER_DEPLOY_ALLOWED)
used = FALSE
return
if(unique_id)
if(unique_id in GLOB.unique_deployable)
loc.visible_message(span_warning("There can only be one [src] deployed at a time."))
used = FALSE
return
GLOB.unique_deployable += unique_id
var/turf/T = deploy_location
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()
smoke.attach(T)
smoke.set_up(10, 0, T)
smoke.start()
sleep(4 SECONDS)
playsound(src, 'sound/effects/phasein.ogg', 100, 1)
log_and_message_admins("activated a bluespace capsule at [get_area(T)]!", user)
if(above_location)
template.add_roof(above_location)
template.annihilate_plants(deploy_location)
template.load(deploy_location, centered = TRUE)
template.update_lighting(deploy_location)
qdel(src)
addtimer(CALLBACK(src, PROC_REF(deploy_step_one), user), 5 SECONDS, TIMER_DELETE_ME)
/obj/item/survivalcapsule/luxury
name = "luxury surfluid shelter capsule"
@@ -129,6 +167,11 @@ GLOBAL_LIST_EMPTY(unique_deployable)
desc = "A luxury cabin and kitchen in a capsule. There's a license for use printed on the bottom."
template_id = "shelter_cab_deluxe"
/obj/item/survivalcapsule/luxurycafe
name = "luxury surfluid cafe capsule"
desc = "A luxury cafe in a capsule. There's a license for use printed on the bottom."
template_id = "shelter_cafe"
/obj/item/survivalcapsule/military
name = "military surfluid shelter capsule"
desc = "A prefabricated firebase in a capsule. Contains basic weapons, building materials, and combat suits. There's a license for use printed on the bottom."
@@ -146,6 +189,21 @@ GLOBAL_LIST_EMPTY(unique_deployable)
desc = "A cozy cabin; crammed into a survival capsule."
template_id = "shelter_cab"
/obj/item/survivalcapsule/recroom
name = "pop-out rec room shelter capsule"
desc = "A recreational room stuffed into a survival capsule."
template_id = "shelter_recroom"
/obj/item/survivalcapsule/sauna
name = "pop-out sauna shelter capsule"
desc = "A cozy sauna room stuffed into a survival capsule."
template_id = "shelter_sauna"
/obj/item/survivalcapsule/cafe
name = "pop-out cafe shelter capsule"
desc = "A cozy cafe stuffed into a survival capsule."
template_id = "shelter_cafe"
//Custom Shelter Capsules
/obj/item/survivalcapsule/tabiranth
name = "silver-trimmed surfluid shelter capsule"
@@ -159,6 +217,86 @@ GLOBAL_LIST_EMPTY(unique_deployable)
template_id = "shelter_chi"
unique_id = "shelter_h"
//Stupid
/obj/item/survivalcapsule/loss_1
name = "clinical surfluid shelter capsule"
desc = "A strange-looking shelter capsule. It looks rather crudely thrown together..."
template_id = "shelter_loss1"
/obj/item/survivalcapsule/loss_2
name = "clinical surfluid shelter capsule"
desc = "A strange-looking shelter capsule. It looks rather crudely thrown together..."
template_id = "shelter_loss2"
/obj/item/survivalcapsule/loss_3
name = "clinical surfluid shelter capsule"
desc = "A strange-looking shelter capsule. It looks rather crudely thrown together..."
template_id = "shelter_loss3"
/obj/item/survivalcapsule/loss_4
name = "clinical surfluid shelter capsule"
desc = "A strange-looking shelter capsule. It looks rather crudely thrown together..."
template_id = "shelter_loss4"
//Redspace Capsule
//Spawns a randomized shelter from a curated selection of possibilities
/obj/item/survivalcapsule/randomized
name = "redspace shelter capsule"
desc = "A strange-looking shelter capsule. Should the surfluid inside it be bubbling like that? There's a license for use printed on the bottom, as well as a warning about the unpredictable nature of redspace."
template_id = "placeholder_id_do_not_change"
admin_log_verb = "activated a redspace capsule"
var/possible_shelter_ids = list(
// "Normal" map table - Most common table.
// Meant to be actually inhabitable spots with neat things in them.
list(
"shelter_pizza_kitchen",
"shelter_nerd_dungeon_good",
"shelter_gallery",
"shelter_garden",
"shelter_off_color",
"shelter_living_room",
"shelter_candlelit_dinner",
) = 65, // 65% chance
// "Weird" map table - Less common.
// Here, we get a little silly with it. Not dangerous, but weird, kinda like redgates.
list(
"shelter_nerd_dungeon_evil",
"shelter_tiny_space",
"shelter_christmas",
"shelter_blacksmith",
) = 30, // 30% chance
// "Dangerous" map table - Least common by far, and for good reason.
// Places that have dangerous/illegal stuff in them.
list(
"shelter_dangerous_pool",
"shelter_methlab",
"shelter_mimic_hell",
) = 5, // 5% chance
)
/obj/item/survivalcapsule/randomized/get_template_id()
// Choose which table of maps we're gonna be choosing from, then pick a map in those
return pick(pickweight(possible_shelter_ids))
/obj/item/survivalcapsule/randomized/get_template_info()
var/ret = "It has a chaotic redspace bubble inside. The label reads:\n"
ret += "This capsule utilizes experimental technology to replicate copies of redspace pockets within realspace. " + span_underline("The contents of this capsule are prone to change upon activation") + ", and are highly unlikely to remain the same as when previously used. Efforts have been made to ensure *likely* safety when using these capsules. However, due to the unpredictable nature of redspace, that safety cannot be fully guaranteed. " + span_underline("Use at your own risk!")
return ret
// TERRIBLE AWFUL CAPSULE DO NOT MAKE THIS PLAYER ACCESSIBLE, I made this for a BIT -Ryumi
/obj/item/survivalcapsule/tesla
name = "tesla in a shelter capsule"
desc = "This is a terrible, terrible idea."
template_id = "shelter_tesla"
admin_log_verb = "activated a TESLA capsule"
/obj/item/survivalcapsule/tesla/get_template_info()
var/ret = ..()
ret += ("\n" + span_boldwarning("Do not."))
return ret
//Pod objects
//Walls
/turf/simulated/shuttle/wall/voidcraft/survival
@@ -167,6 +305,7 @@ GLOBAL_LIST_EMPTY(unique_deployable)
/turf/simulated/shuttle/wall/voidcraft/survival/hard_corner
hard_corner = 1
icon_state = "void-hc"
//Doors
/obj/machinery/door/airlock/voidcraft/survival_pod
+130 -8
View File
@@ -15,7 +15,7 @@
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))
if(is_type_in_typecache(A, banned_areas) || (A.flags & AREA_BLOCK_INSTANT_BUILDING))
return SHELTER_DEPLOY_BAD_AREA
var/banned = is_type_in_typecache(T, blacklisted_turfs)
@@ -53,7 +53,7 @@
/datum/map_template/shelter/alpha
name = "Shelter Alpha"
shelter_id = "shelter_alpha"
description = "A cosy self-contained pressurized shelter, with \
description = "(5x5) 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!"
@@ -62,7 +62,7 @@
/datum/map_template/shelter/beta
name = "Shelter Beta"
shelter_id = "shelter_beta"
description = "An extremely luxurious shelter, containing all \
description = "(7x7) 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 \
@@ -72,7 +72,7 @@
/datum/map_template/shelter/gamma
name = "Shelter Gamma"
shelter_id = "shelter_gamma"
description = "A luxury elite bar which holds an entire bar \
description = "(11x11) A luxury elite bar 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 \
@@ -82,7 +82,7 @@
/datum/map_template/shelter/delta
name = "Shelter Delta"
shelter_id = "shelter_delta"
description = "A small firebase that contains equipment and supplies \
description = "(11x11) A small firebase that contains equipment and supplies \
for roughly a squad of military troops. Large quantities of \
supplies allow it to hold out for an extended period of time\
and a built in medical facility allows field treatment to be \
@@ -92,20 +92,20 @@
/datum/map_template/shelter/epsilon
name = "Shelter Epsilon"
shelter_id = "shelter_epsilon"
description = "An escape pod, with a mediocre amount of supplies \
description = "(10x5) An escape pod, with a mediocre amount of supplies \
for escaping a dying ship as soon as possible."
mappath = "maps/offmap_vr/om_ships/shelter_5.dmm"
/datum/map_template/shelter/cabin
name = "Shelter Cabin"
shelter_id = "shelter_cab"
description = "A small cabin; turned into a shelter capsule. Includes dorm amenities, and a nice dinner."
description = "(7x7) A small cabin; turned into a shelter capsule. Includes dorm amenities, and a nice dinner."
mappath = "maps/submaps/shelters/shelter_cab.dmm"
/datum/map_template/shelter/cabin_deluxe
name = "Shelter Deluxe Cabin"
shelter_id = "shelter_cab_deluxe"
description = "A glamorously furnished cabin packed away in your pocket. \
description = "(11x11) A glamorously furnished cabin packed away in your pocket. \
Includes a private dormitory, bathroom, dining room, and a very \
compactly designed kitchen. Designed for a comfortable extended \
stay in isolated wilderness survival scenarios."
@@ -129,3 +129,125 @@
of recreational facilities and a more comfortable living quarters. The \
definition of \"form over function,\" in capsule form!"
mappath = "maps/submaps/shelters/shelter_h.dmm"
/datum/map_template/shelter/rec
name = "Shelter Rec Room"
shelter_id = "shelter_recroom"
description = "(9x9) A recreational room in a pocket, offering a gaming table with poker chips, dice, and cards to host group gaming activities, as well as a small arcade for more individual experiences. While offering absolutely nothing that will help someone survive physically aside from a safely isolated atmosphere, the intellectual stimulation provided from the gaming facilities within have been chosen to assist and keep one's mind sharp."
mappath = "maps/submaps/shelters/shelter_recroom.dmm"
/datum/map_template/shelter/sauna
name = "Shelter Sauna"
shelter_id = "shelter_sauna"
description = "(7x7) A luxurious sauna in your pocket. Complete with privacy features, a changing and locker room, and of course a decently spacious sauna room with three benches to rest on."
mappath = "maps/submaps/shelters/shelter_sauna.dmm"
/datum/map_template/shelter/cafe
name = "Shelter Cafe"
shelter_id = "shelter_cafe"
description = "(11x11) A fully stocked and equipped cafe in your pocket. While this won't save you if you're dying, it will ensure that you and anyone who happens to be with you will never suffer from caffeine withdrawal!"
mappath = "maps/submaps/shelters/shelter_cafe.dmm"
/datum/map_template/shelter/loss_1
name = "Shelter L1"
shelter_id = "shelter_loss1"
description = "(5x5) North-west quadrant."
mappath = "maps/submaps/shelters/shelter_loss_1.dmm"
/datum/map_template/shelter/loss_2
name = "Shelter L2"
shelter_id = "shelter_loss2"
description = "(5x5) North-east quadrant."
mappath = "maps/submaps/shelters/shelter_loss_2.dmm"
/datum/map_template/shelter/loss_3
name = "Shelter L3"
shelter_id = "shelter_loss3"
description = "(5x5) South-west quadrant."
mappath = "maps/submaps/shelters/shelter_loss_3.dmm"
/datum/map_template/shelter/loss_4
name = "Shelter L4"
shelter_id = "shelter_loss4"
description = "(5x5) South-east quadrant."
mappath = "maps/submaps/shelters/shelter_loss_4.dmm"
// EXTREMELY DANGEROUS ADMIN-ONLY SHELTERS I BEG YOU DO NOT SPAWN THESE EXCEPT FOR A DISASTROUS BIT
/datum/map_template/shelter/tesla
name = "Shelter Tesla"
description = "(11x11) A whole tesla engine setup, complete with a fully charged SMES cell ready to power the emitters. Using this is probably an exceptionally terrible idea."
shelter_id = "shelter_tesla"
mappath = "maps/submaps/shelters/shelter_tesla.dmm"
//Redspace capsule shelters - here be weird shit.
/datum/map_template/shelter/nerd_dungeon_evil
name = "Shelter Nerd Dungeon Evil"
shelter_id = "shelter_nerd_dungeon_evil"
mappath = "maps/submaps/shelters/randomshelters/shelter_nerd_dungeon_evil.dmm"
/datum/map_template/shelter/nerd_dungeon_good
name = "Shelter Nerd Dungeon Good"
shelter_id = "shelter_nerd_dungeon_good"
mappath = "maps/submaps/shelters/randomshelters/shelter_nerd_dungeon_good.dmm"
/datum/map_template/shelter/dangerous_pool
name = "Shelter Dangerous Pool"
shelter_id = "shelter_dangerous_pool"
mappath = "maps/submaps/shelters/randomshelters/shelter_dangerous_pool.dmm"
/datum/map_template/shelter/pizza_kitchen
name = "Shelter Pizza Kitchen"
shelter_id = "shelter_pizza_kitchen"
mappath = "maps/submaps/shelters/randomshelters/shelter_pizza.dmm"
/datum/map_template/shelter/tiny_space
name = "Shelter Smole Space"
shelter_id = "shelter_tiny_space"
mappath = "maps/submaps/shelters/randomshelters/shelter_tiny_space.dmm"
/datum/map_template/shelter/christmas
name = "Shelter Christmas"
shelter_id = "shelter_christmas"
mappath = "maps/submaps/shelters/randomshelters/shelter_christmas.dmm"
/datum/map_template/shelter/methlab
name = "Shelter Meth Lab"
shelter_id = "shelter_methlab"
mappath = "maps/submaps/shelters/randomshelters/shelter_methlab.dmm"
/datum/map_template/shelter/blacksmith
name = "Shelter Blacksmith"
shelter_id = "shelter_blacksmith"
mappath = "maps/submaps/shelters/randomshelters/shelter_blacksmith.dmm"
/datum/map_template/shelter/gallery
name = "Shelter Art Gallery"
shelter_id = "shelter_gallery"
mappath = "maps/submaps/shelters/randomshelters/shelter_gallery.dmm"
/datum/map_template/shelter/garden
name = "Shelter Garden"
shelter_id = "shelter_garden"
mappath = "maps/submaps/shelters/randomshelters/shelter_garden.dmm"
/datum/map_template/shelter/mimic_hell
name = "Shelter Mimic Hell"
shelter_id = "shelter_mimic_hell"
mappath = "maps/submaps/shelters/randomshelters/shelter_mimic_hell.dmm"
/datum/map_template/shelter/off_color_bedrooms
name = "Shelter Off-Color Bedrooms"
shelter_id = "shelter_off_color"
mappath = "maps/submaps/shelters/randomshelters/shelter_off_color.dmm"
/datum/map_template/shelter/living_room
name = "Shelter Living Room"
shelter_id = "shelter_living_room"
mappath = "maps/submaps/shelters/randomshelters/shelter_living_room.dmm"
/datum/map_template/shelter/candlelit_dinner
name = "Shelter Candlelit Dinner"
shelter_id = "shelter_candlelit_dinner"
mappath = "maps/submaps/shelters/randomshelters/shelter_candlelit_dinner.dmm"