/area/survivalpod name = "\improper Emergency Shelter" icon_state = "away" requires_power = FALSE has_gravity = TRUE dynamic_lighting = DYNAMIC_LIGHTING_FORCED ambientsounds = MINING_SOUNDS /obj/item/survivalcapsule name = "bluespace shelter capsule" desc = "An emergency shelter stored within a pocket of bluespace." icon_state = "capsule" icon = 'icons/obj/mining.dmi' w_class = WEIGHT_CLASS_TINY origin_tech = "engineering=3;bluespace=3" var/template_id = "shelter_alpha" var/datum/map_template/shelter/template var/used = FALSE /obj/item/survivalcapsule/emag_act() if(!emagged) to_chat(usr, "You short out the safeties, allowing it to be placed in the station sector.") emagged = TRUE return TRUE to_chat(usr, "The safeties are already shorted out!") /obj/item/survivalcapsule/proc/get_template() if(template) return template = GLOB.shelter_templates[template_id] if(!template) stack_trace("Shelter template ([template_id]) not found!") qdel(src) /obj/item/survivalcapsule/examine(mob/user) . = ..() get_template() . += "This capsule has the [template.name] stored." . += template.description /obj/item/survivalcapsule/attack_self() // Can't grab when capsule is New() because templates aren't loaded then get_template() if(!used) loc.visible_message("[src] begins to shake. Stand back!") used = TRUE sleep(50) var/turf/deploy_location = get_turf(src) var/status = template.check_deploy(deploy_location) var/turf/UT = get_turf(usr) if((UT.z == level_name_to_num(MAIN_STATION)) && !emagged) to_chat(usr, "Error. Deployment was attempted on the station sector. Deployment aborted.") playsound(usr, 'sound/machines/terminal_error.ogg', 15, TRUE) used = FALSE return switch(status) if(SHELTER_DEPLOY_BAD_AREA) loc.visible_message("[src] will not function in this area.") if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS) var/width = template.width var/height = template.height loc.visible_message("[src] doesn't have room to deploy! You need to clear a [width]x[height] area!") if(status != SHELTER_DEPLOY_ALLOWED) used = FALSE return playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) var/turf/T = deploy_location if(!is_mining_level(T.z))//only report capsules away from the mining/lavaland level message_admins("[key_name_admin(usr)] ([ADMIN_QUE(usr,"?")]) ([ADMIN_FLW(usr,"FLW")]) activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) /obj/item/survivalcapsule/luxury name = "luxury bluespace shelter capsule" desc = "An exorbitantly expensive luxury suite stored within a pocket of bluespace." origin_tech = "engineering=3;bluespace=4" template_id = "shelter_beta" //Pod turfs and objects //Window /obj/structure/window/full/shuttle/survival_pod name = "pod window" icon = 'icons/obj/smooth_structures/windows/pod_window.dmi' icon_state = "pod_window-0" base_icon_state = "pod_window" smoothing_flags = SMOOTH_BITMASK glass_type = /obj/item/stack/sheet/titaniumglass smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD) canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD) /obj/structure/window/reinforced/survival_pod name = "pod window" icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "pwindow" //Floors /turf/simulated/floor/pod name = "pod floor" icon_state = "podfloor" icon_regular_floor = "podfloor" floor_tile = /obj/item/stack/tile/pod /turf/simulated/floor/pod/light icon_state = "podfloor_light" icon_regular_floor = "podfloor_light" floor_tile = /obj/item/stack/tile/pod/light /turf/simulated/floor/pod/light/lavaland_air oxygen = LAVALAND_OXYGEN nitrogen = LAVALAND_NITROGEN temperature = LAVALAND_TEMPERATURE atmos_mode = ATMOS_MODE_EXPOSED_TO_ENVIRONMENT atmos_environment = ENVIRONMENT_LAVALAND /turf/simulated/floor/pod/dark icon_state = "podfloor_dark" icon_regular_floor = "podfloor_dark" floor_tile = /obj/item/stack/tile/pod/dark /turf/simulated/floor/pod/dark/lavaland_air oxygen = LAVALAND_OXYGEN nitrogen = LAVALAND_NITROGEN temperature = LAVALAND_TEMPERATURE atmos_mode = ATMOS_MODE_EXPOSED_TO_ENVIRONMENT atmos_environment = ENVIRONMENT_LAVALAND //Door /obj/machinery/door/airlock/survival_pod icon = 'icons/obj/doors/airlocks/survival/survival.dmi' overlays_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi' assemblytype = /obj/structure/door_assembly/door_assembly_pod /obj/machinery/door/airlock/survival_pod/glass opacity = FALSE glass = TRUE /obj/structure/door_assembly/door_assembly_pod name = "pod airlock assembly" icon = 'icons/obj/doors/airlocks/survival/survival.dmi' base_name = "pod airlock" overlays_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi' airlock_type = /obj/machinery/door/airlock/survival_pod glass_type = /obj/machinery/door/airlock/survival_pod/glass //Windoor /obj/machinery/door/window/survival_pod icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "windoor" base_state = "windoor" //Table /obj/structure/table/survival_pod icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "table" smoothing_flags = NONE smoothing_groups = null canSmoothWith = null //Sleeper /obj/machinery/sleeper/survival_pod icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "sleeper-open" density = FALSE /obj/machinery/sleeper/survival_pod/Initialize(mapload) . = ..() component_parts = list() component_parts += new /obj/item/circuitboard/sleeper/survival(null) var/obj/item/stock_parts/matter_bin/B = new(null) B.rating = initial_bin_rating component_parts += B component_parts += new /obj/item/stock_parts/manipulator(null) component_parts += new /obj/item/stack/sheet/glass(null) component_parts += new /obj/item/stack/sheet/glass(null) component_parts += new /obj/item/stack/cable_coil(null, 1) RefreshParts() //NanoMed /obj/machinery/economy/vending/wallmed/survival_pod name = "survival pod medical supply" desc = "Wall-mounted Medical Equipment dispenser. This one seems just a tiny bit smaller." req_access = list() products = list(/obj/item/stack/medical/splint = 2) contraband = list() MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, 32, 32) //Computer /obj/item/gps/computer name = "pod computer" icon_state = "pod_computer" icon = 'icons/obj/lavaland/pod_computer.dmi' anchored = TRUE density = TRUE pixel_y = -32 /obj/item/gps/computer/wrench_act(mob/living/user, obj/item/I) . = TRUE user.visible_message("[user] starts to disassemble [src].", \ "You start to disassemble [src]...", "You hear clanking and banging noises.") if(!I.use_tool(src, user, 2 SECONDS, 0, 50)) return user.visible_message("[user] disassembles [src].", \ "You disassemble [src].", "You hear clanking and banging noises.") new /obj/item/gps(loc) qdel(src) /obj/item/gps/computer/attack_hand(mob/user) attack_self(user) //Bed /obj/structure/bed/pod icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "bed" //Survival Storage Unit /obj/machinery/smartfridge/survival_pod name = "survival pod storage" desc = "A heated storage unit." icon_state = "donkvendor" icon = 'icons/obj/lavaland/donkvendor.dmi' light_range = 8 light_power = 1.2 light_color = "#DDFFD3" max_n_of_items = 10 pixel_y = -4 flags = NODECONSTRUCT var/empty = FALSE /obj/machinery/smartfridge/survival_pod/Initialize(mapload) . = ..() if(empty) return for(var/i in 1 to 5) var/obj/item/food/warmdonkpocket_weak/W = new(src) load(W) if(prob(50)) var/obj/item/storage/bag/dice/D = new(src) load(D) else var/obj/item/instrument/guitar/G = new(src) load(G) /obj/machinery/smartfridge/survival_pod/update_icon_state() return /obj/machinery/smartfridge/survival_pod/update_overlays() return list() /obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) return isitem(O) /obj/machinery/smartfridge/survival_pod/default_unfasten_wrench(mob/user, obj/item/I, time) return FALSE /obj/machinery/smartfridge/survival_pod/empty name = "dusty survival pod storage" desc = "A heated storage unit. This one's seen better days." empty = TRUE //Fans /obj/structure/fans icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "fans" name = "environmental regulation system" desc = "A large machine releasing a constant gust of air." anchored = TRUE density = TRUE var/arbitraryatmosblockingvar = 1 var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 5 /obj/structure/fans/Initialize(loc) . = ..() recalculate_atmos_connectivity() /obj/structure/fans/Destroy() arbitraryatmosblockingvar = 0 recalculate_atmos_connectivity() return ..() /obj/structure/fans/CanAtmosPass(direction) return !arbitraryatmosblockingvar /obj/structure/fans/deconstruct() if(!(flags & NODECONSTRUCT)) if(buildstacktype) new buildstacktype(loc, buildstackamount) qdel(src) /obj/structure/fans/wrench_act(mob/living/user, obj/item/I) . = TRUE user.visible_message("[user] starts to disassemble [src].", \ "You start to disassemble [src]...", "You hear clanking and banging noises.") if(!I.use_tool(src, user, 2 SECONDS, volume = 50)) return user.visible_message("[user] disassembles [src].", \ "You disassemble [src].", "You hear something fall on the floor.") deconstruct() /obj/structure/fans/tiny name = "tiny fan" desc = "A tiny fan, releasing a thin gust of air." layer = TURF_LAYER+0.1 density = FALSE icon_state = "fan_tiny" buildstackamount = 2 /obj/structure/fans/tiny/get_superconductivity(direction) // Mostly for stuff on Lavaland. return ZERO_HEAT_TRANSFER_COEFFICIENT /obj/structure/fans/tiny/invisible name = "air flow blocker" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF invisibility = INVISIBILITY_ABSTRACT //Signs /obj/structure/sign/mining name = "nanotrasen mining corps sign" desc = "A sign of relief for weary miners, and a warning for would-be competitors to Nanotrasen's mining claims." icon_state = "ntpod" layer = TABLE_LAYER // scuffed but it works /obj/structure/sign/mining/survival name = "shelter sign" desc = "A high visibility sign designating a safe shelter." icon_state = "survival" //Fluff /obj/structure/tubes icon_state = "tubes" icon = 'icons/obj/lavaland/survival_pod.dmi' name = "tubes" anchored = TRUE layer = MOB_LAYER - 0.2 density = FALSE /obj/structure/tubes/wrench_act(mob/living/user, obj/item/W) . = TRUE user.visible_message("[user] disassembles [src].", \ "You start to disassemble [src]...", "You hear clanking and banging noises.") if(!W.use_tool(src, user, 2 SECONDS, volume = 50)) return new /obj/item/stack/rods(loc) qdel(src) /obj/item/fakeartefact name = "expensive forgery" icon = 'icons/mob/screen_gen.dmi' icon_state = "x2" var/possible = list(/obj/item/ship_in_a_bottle, /obj/item/gun/energy/pulse, /obj/item/sleeping_carp_scroll, /obj/item/shield/changeling, /obj/item/lava_staff, /obj/item/katana/energy, /obj/item/hierophant_club, /obj/item/his_grace, /obj/item/gun/projectile/automatic/l6_saw, /obj/item/gun/magic/staff/chaos, /obj/item/melee/spellblade, /obj/item/gun/magic/wand/death, /obj/item/gun/magic/wand/fireball, /obj/item/stack/telecrystal/twenty, /obj/item/banhammer) /obj/item/fakeartefact/New() . = ..() var/obj/item/I = pick(possible) name = initial(I.name) icon = initial(I.icon) desc = initial(I.desc) icon_state = initial(I.icon_state) item_state = initial(I.item_state)