mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 13:18:09 +01:00
613 lines
20 KiB
Plaintext
613 lines
20 KiB
Plaintext
GLOBAL_LIST_EMPTY(unique_deployable)
|
|
/*****************************Survival Pod********************************/
|
|
/area/survivalpod
|
|
name = "\improper Emergency Shelter"
|
|
icon_state = "away"
|
|
dynamic_lighting = TRUE
|
|
requires_power = FALSE
|
|
has_gravity = TRUE
|
|
|
|
/area/survivalpod/dorms
|
|
name = "\improper Emergency Shelter Dorm"
|
|
icon_state = "away1"
|
|
flags = RAD_SHIELDED | BLUE_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT | AREA_FORBID_EVENTS | AREA_FORBID_SINGULO | AREA_SOUNDPROOF | AREA_ALLOW_LARGE_SIZE | AREA_BLOCK_SUIT_SENSORS | AREA_BLOCK_TRACKING
|
|
|
|
/area/survivalpod/dorms/bathroom
|
|
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
|
|
name = "\improper Holly's Emergency Shelter"
|
|
|
|
/area/survivalpod/dorms/holly
|
|
name = "\improper Holly's Emergency Shelter Dorm"
|
|
|
|
//Survival Capsule
|
|
/obj/item/survivalcapsule
|
|
name = "surfluid shelter capsule"
|
|
desc = "An emergency shelter programmed into construction nanomachines. It has a license for use printed on the bottom."
|
|
icon_state = "houseball"
|
|
icon = 'icons/obj/device_alt.dmi'
|
|
w_class = ITEMSIZE_TINY
|
|
var/template_id = "shelter_alpha"
|
|
var/datum/map_template/shelter/template
|
|
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[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)
|
|
. = ..()
|
|
var/temp_info = get_template_info()
|
|
if(length(temp_info))
|
|
. += temp_info
|
|
|
|
// CHOMPEdit Start
|
|
/obj/item/survivalcapsule/attack_self(mob/user)
|
|
//Can't grab when capsule is New() because templates aren't loaded then
|
|
if(istype(get_area(user), /area/vr))
|
|
to_chat(user, span_danger("\The [src] does not appear to work in VR! This is useless to you!"))
|
|
return
|
|
. = ..()
|
|
// CHOMPEdit End
|
|
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
|
|
|
|
addtimer(CALLBACK(src, PROC_REF(deploy_step_one), user), 5 SECONDS, TIMER_DELETE_ME)
|
|
|
|
/obj/item/survivalcapsule/luxury
|
|
name = "luxury surfluid shelter capsule"
|
|
desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. There's a license for use printed on the bottom."
|
|
template_id = "shelter_beta"
|
|
|
|
/obj/item/survivalcapsule/luxurybar
|
|
name = "luxury surfluid bar capsule"
|
|
desc = "A luxury bar in a capsule. " + JOB_BARTENDER + " required and not included. There's a license for use printed on the bottom."
|
|
template_id = "shelter_gamma"
|
|
|
|
/obj/item/survivalcapsule/luxurycabin
|
|
name = "luxury surfluid cabin capsule"
|
|
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."
|
|
template_id = "shelter_delta"
|
|
|
|
/obj/item/survivalcapsule/escapepod
|
|
name = "escape surfluid shelter capsule"
|
|
desc = "A prefabricated escape pod in a capsule. Contains a basic escape pod for survival purposes. There's a license for use printed on the bottom."
|
|
template_id = "shelter_epsilon"
|
|
unique_id = "shelter_5"
|
|
is_ship = TRUE
|
|
|
|
/obj/item/survivalcapsule/popcabin
|
|
name = "pop-out cabin shelter capsule"
|
|
desc = "A cozy cabin; crammed into a survival capsule."
|
|
template_id = "shelter_cab"
|
|
|
|
//CHOMPKeep Start
|
|
/obj/item/survivalcapsule/dropship
|
|
name = "dropship surfluid shelter capsule"
|
|
desc = "A military dropship in a capsule. Contains everything an assault squad would need, minus the squad itself. This capsule is significantly larger than most. There's a license for use printed on the bottom."
|
|
template_id = "shelter_zeta"
|
|
unique_id = "shelter_6"
|
|
is_ship = TRUE
|
|
w_class = ITEMSIZE_SMALL
|
|
//CHOMPKeep End
|
|
|
|
/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"
|
|
desc = "An exorbitantly expensive luxury suite programmed into construction nanomachines. This one is a particularly rare and expensive model. There's a license for use printed on the bottom."
|
|
template_id = "shelter_phi"
|
|
unique_id = "shelter_a"
|
|
|
|
/obj/item/survivalcapsule/holly
|
|
name = "vaguely festive surfluid shelter capsule"
|
|
desc = "A \"homemade\" luxury suite crammed into a capsule. There's a license for use printed on the bottom. For some reason, the license's text is written in festive colors."
|
|
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 += "(7x7) 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
|
|
name = "survival shelter"
|
|
stripe_color = "#efbc3b"
|
|
|
|
/turf/simulated/shuttle/wall/voidcraft/survival/hard_corner
|
|
hard_corner = 1
|
|
icon_state = "void-hc"
|
|
|
|
//Doors
|
|
/obj/machinery/door/airlock/voidcraft/survival_pod
|
|
name = "survival airlock"
|
|
block_air_zones = 1
|
|
|
|
/obj/machinery/door/airlock/voidcraft/survival_pod/vertical
|
|
icon = 'icons/obj/doors/shuttledoors_vertical.dmi'
|
|
|
|
//Door access setter button
|
|
/obj/machinery/button/remote/airlock/survival_pod
|
|
name = "shelter privacy control"
|
|
desc = "You can secure yourself inside the shelter here."
|
|
specialfunctions = 4 // 4 is bolts
|
|
id = "placeholder_id_do_not_use" //This has to be this way, otherwise it will control ALL doors if left blank.
|
|
var/obj/machinery/door/airlock/voidcraft/survival_pod/door
|
|
|
|
/obj/machinery/button/remote/airlock/survival_pod/attack_hand(obj/item/W, mob/user as mob)
|
|
if(..()) return 1 //1 is failure on machines (for whatever reason)
|
|
if(!door)
|
|
var/turf/dT = get_step(src,dir)
|
|
door = locate() in dT
|
|
if(door)
|
|
door.glass = !door.glass
|
|
door.opacity = !door.opacity
|
|
|
|
//Subtype that actually bolts doors!
|
|
/obj/machinery/button/remote/airlock/survival_pod/bolts
|
|
name = "shelter privacy control"
|
|
desc = "You can ensure some privacy with this."
|
|
|
|
/obj/machinery/button/remote/airlock/survival_pod/bolts/attack_hand(obj/item/W, mob/user as mob)
|
|
if(..()) return 1 //1 is failure on machines (for whatever reason)
|
|
if(door)
|
|
if(door.locked)
|
|
door.unlock()
|
|
door.RemoveElement(/datum/element/light_blocking)
|
|
else
|
|
door.lock()
|
|
// Block light when bolted, since the door is effectively functioning like polarized glass
|
|
door.AddElement(/datum/element/light_blocking)
|
|
|
|
// Capsule-specific light switch
|
|
// Turns off only one light in a given direction from its source turf.
|
|
/obj/machinery/light_switch/survival_pod
|
|
name = "shelter light switch"
|
|
var/obj/machinery/light/target_light
|
|
|
|
|
|
// Deliberately override base light switch behavior because we don't want to toggle ALL lights in the area - just one!
|
|
/obj/machinery/light_switch/survival_pod/attack_hand(obj/item/W, mob/user as mob)
|
|
on = !on
|
|
playsound(src, 'sound/machines/button.ogg', 100, 1, 0)
|
|
if(!target_light)
|
|
var/turf/dT = get_step(src, dir)
|
|
target_light = locate() in dT
|
|
if(target_light)
|
|
target_light.on = on
|
|
target_light.update()
|
|
// I'm so sorry but for some ungodly reason calling update() simply isn't
|
|
// enough to make the light actually set its lighting.
|
|
// So I guess we're doing this manually! :')
|
|
if(target_light.on)
|
|
target_light.set_light(target_light.brightness_range, target_light.brightness_power, target_light.brightness_color)
|
|
target_light.overlay_color = target_light.brightness_color
|
|
else
|
|
target_light.set_light(0)
|
|
update_icon()
|
|
|
|
GLOB.lights_switched_on_roundstat++
|
|
|
|
//Windows
|
|
/obj/structure/window/reinforced/survival_pod
|
|
name = "pod window"
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "pwindow"
|
|
basestate = "pwindow"
|
|
|
|
//The windows have diagonal versions, and will never be a full window
|
|
/obj/structure/window/reinforced/survival_pod/is_fulltile()
|
|
return FALSE
|
|
|
|
/obj/structure/window/reinforced/survival_pod/update_icon()
|
|
icon_state = basestate
|
|
|
|
//Polarized windows
|
|
/obj/structure/window/reinforced/polarized/survival_pod
|
|
name = "polarized pod window"
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "pwindow"
|
|
basestate = "pwindow"
|
|
|
|
//The windows have diagonal versions, and will never be a full window
|
|
/obj/structure/window/reinforced/polarized/survival_pod/is_fulltile()
|
|
return FALSE
|
|
|
|
//Windoor
|
|
/obj/machinery/door/window/survival_pod
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "windoor"
|
|
base_state = "windoor"
|
|
|
|
//Table
|
|
/obj/structure/table/survival_pod
|
|
name = "table"
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "table"
|
|
can_reinforce = FALSE
|
|
can_plate = FALSE
|
|
|
|
/obj/structure/table/survival_pod/update_icon()
|
|
icon_state = "table"
|
|
|
|
/obj/structure/table/survival_pod/Initialize(mapload)
|
|
material = get_material_by_name(MAT_STEEL)
|
|
. = ..()
|
|
verbs -= /obj/structure/table/verb/do_flip
|
|
verbs -= /obj/structure/table/proc/do_put
|
|
|
|
/obj/structure/table/survival_pod/dismantle(obj/item/tool/wrench/W, mob/user)
|
|
to_chat(user, span_warning("You cannot dismantle \the [src]."))
|
|
return
|
|
|
|
//Sleeper
|
|
/obj/machinery/sleeper/survival_pod
|
|
desc = "A limited functionality sleeper, all it can do is put patients into stasis. It lacks the medication and configuration of the larger units."
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "sleeper"
|
|
stasis_level = 100 //Just one setting
|
|
|
|
/obj/machinery/sleeper/survival_pod/update_icon()
|
|
if(occupant)
|
|
add_overlay("sleeper_cover")
|
|
else
|
|
cut_overlays()
|
|
|
|
//Computer
|
|
/obj/item/gps/computer
|
|
name = "pod computer"
|
|
icon_state = "pod_computer"
|
|
icon = 'icons/obj/survival_pod_comp.dmi'
|
|
anchored = TRUE
|
|
density = TRUE
|
|
pixel_y = -32
|
|
|
|
/obj/item/gps/computer/attackby(obj/item/I, mob/living/user)
|
|
if(I.has_tool_quality(TOOL_WRENCH))
|
|
user.visible_message(span_warning("[user] disassembles [src]."),
|
|
span_notice("You start to disassemble [src]..."), "You hear clanking and banging noises.")
|
|
if(do_after(user, 4 SECONDS, target = src))
|
|
new /obj/item/gps(loc)
|
|
qdel(src)
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
/obj/item/gps/computer/attack_hand(mob/user)
|
|
attack_self(user)
|
|
|
|
//Bed
|
|
/obj/structure/bed/pod
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "bed"
|
|
|
|
/obj/structure/bed/pod/Initialize(mapload)
|
|
. = ..(mapload, MAT_STEEL, MAT_COTTON)
|
|
|
|
//Survival Storage Unit
|
|
/obj/machinery/smartfridge/survival_pod
|
|
name = "survival pod storage"
|
|
desc = "A heated storage unit."
|
|
icon_state = "donkvendor"
|
|
icon_base = "donkvendor"
|
|
icon_contents = null
|
|
icon = 'icons/obj/survival_pod_vend.dmi'
|
|
light_range = 5
|
|
light_power = 1.2
|
|
light_color = "#DDFFD3"
|
|
light_on = TRUE
|
|
pixel_y = -4
|
|
max_n_of_items = 100
|
|
|
|
/obj/machinery/smartfridge/survival_pod/Initialize(mapload)
|
|
. = ..()
|
|
for(var/obj/item/O in loc)
|
|
if(accept_check(O))
|
|
stock(O)
|
|
|
|
/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O)
|
|
return isitem(O)
|
|
|
|
/obj/machinery/smartfridge/survival_pod/empty
|
|
name = "dusty survival pod storage"
|
|
desc = "A heated storage unit. This one's seen better days."
|
|
|
|
//Fans
|
|
/obj/structure/fans
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "fans"
|
|
name = "environmental regulation system"
|
|
desc = "A large machine releasing a constant gust of air."
|
|
anchored = TRUE
|
|
density = TRUE
|
|
can_atmos_pass = ATMOS_PASS_NO
|
|
var/buildstacktype = /obj/item/stack/material/steel
|
|
var/buildstackamount = 5
|
|
|
|
//CHOMPAdd start - fans weren't updating atmos when destroyed or placed
|
|
/obj/structure/fans/Destroy()
|
|
update_nearby_tiles()
|
|
return ..()
|
|
|
|
/obj/structure/fans/Initialize(mapload)
|
|
.=..()
|
|
update_nearby_tiles()
|
|
//CHOMPAdd end
|
|
/*
|
|
/obj/structure/fans/proc/deconstruct()
|
|
new buildstacktype(loc,buildstackamount)
|
|
qdel(src)
|
|
|
|
/obj/structure/fans/attackby(obj/item/I, mob/living/user)
|
|
if(I.has_tool_quality(TOOL_WRENCH))
|
|
user.visible_message(span_warning("[user] disassembles [src]."),
|
|
span_notice("You start to disassemble [src]..."), "You hear clanking and banging noises.")
|
|
if(do_after(user, 4 SECONDS, target = src))
|
|
deconstruct()
|
|
return TRUE
|
|
|
|
return TRUE
|
|
*/
|
|
/obj/structure/fans/tiny
|
|
name = "tiny fan"
|
|
desc = "A tiny fan, releasing a thin gust of air."
|
|
plane = TURF_PLANE
|
|
layer = ABOVE_TURF_LAYER
|
|
density = FALSE
|
|
icon_state = "fan_tiny"
|
|
buildstackamount = 2
|
|
|
|
/obj/structure/fans/hardlight
|
|
name = "hardlight shield"
|
|
desc = "Retains air, allows passage."
|
|
plane = TURF_PLANE
|
|
layer = ABOVE_TURF_LAYER
|
|
density = FALSE
|
|
icon = 'icons/effects/effects_vr.dmi'
|
|
icon_state = "hardlight"
|
|
buildstackamount = 2
|
|
|
|
light_range = 3
|
|
light_power = 1
|
|
light_color = "#FFFFFF"
|
|
light_on = TRUE
|
|
|
|
/obj/structure/fans/hardlight/ex_act()
|
|
return
|
|
|
|
/obj/structure/fans/hardlight/colorable
|
|
name = "hardlight shield"
|
|
icon_state = "hardlight_colorable"
|
|
|
|
/obj/structure/fans/hardlight/colorable/abductor
|
|
name = "hardlight shield"
|
|
icon_state = "hardlight_colorable"
|
|
color = "#ff0099"
|
|
|
|
//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 = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "ntpod"
|
|
|
|
/obj/structure/sign/mining/survival
|
|
name = "shelter sign"
|
|
desc = "A high visibility sign designating a safe shelter."
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
icon_state = "survival"
|
|
|
|
//Fluff
|
|
/obj/structure/tubes
|
|
icon_state = "tubes"
|
|
icon = 'icons/obj/survival_pod.dmi'
|
|
name = "tubes"
|
|
anchored = TRUE
|
|
layer = BELOW_MOB_LAYER
|
|
density = FALSE
|