mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-30 04:02:33 +00:00
added a proc to check for valid window location, added var/fulltile to windows instead of using a proc added clockwork windoors and windows to brass recipes added titanium glass and plastitanium glass, made glass types use recipes like other stacks, you can smelt the new glasses in the ORM removed force from RCD and added NOBLUDGEON flag, fixing a bug where you couldn't deconstruct airlocks with an RCD slight nerf to wielded fireaxe, does high damage to windows and grilles instead of insta-deleting them deleted fullwindow.dm and moved windows to window.dm added some feedback to placing glass on grilles examining windoor assembly shows you can rotate it, examining windows show deconstruction hints and rotation added cracks to windows, you can repair windows using a welding tool on help intent, slight buff to window health added var/cancolor to windows and blacklists some windows from being auto-colored, window shards also get colored on narsie_act() full windows now use icon smoothing system, windows now use the obj_integrity damage system added is_glass_sheet() helper
597 lines
19 KiB
Plaintext
597 lines
19 KiB
Plaintext
/**********************Light************************/
|
|
|
|
//this item is intended to give the effect of entering the mine, so that light gradually fades
|
|
/obj/effect/light_emitter
|
|
name = "Light emtter"
|
|
anchored = 1
|
|
invisibility = 101
|
|
unacidable = 1
|
|
light_range = 8
|
|
light_power = 0
|
|
|
|
/**********************Miner Lockers**************************/
|
|
|
|
/obj/structure/closet/wardrobe/miner
|
|
name = "mining wardrobe"
|
|
icon_state = "mixed"
|
|
icon_closed = "mixed"
|
|
|
|
/obj/structure/closet/wardrobe/miner/New()
|
|
..()
|
|
contents = list()
|
|
new /obj/item/storage/backpack/duffel(src)
|
|
new /obj/item/storage/backpack/industrial(src)
|
|
new /obj/item/storage/backpack/satchel_eng(src)
|
|
new /obj/item/clothing/under/rank/miner(src)
|
|
new /obj/item/clothing/under/rank/miner(src)
|
|
new /obj/item/clothing/under/rank/miner(src)
|
|
new /obj/item/clothing/shoes/workboots(src)
|
|
new /obj/item/clothing/shoes/workboots(src)
|
|
new /obj/item/clothing/shoes/workboots(src)
|
|
new /obj/item/clothing/gloves/fingerless(src)
|
|
new /obj/item/clothing/gloves/fingerless(src)
|
|
new /obj/item/clothing/gloves/fingerless(src)
|
|
|
|
/obj/structure/closet/secure_closet/miner
|
|
name = "miner's equipment"
|
|
icon_state = "miningsec1"
|
|
icon_closed = "miningsec"
|
|
icon_locked = "miningsec1"
|
|
icon_opened = "miningsecopen"
|
|
icon_broken = "miningsecbroken"
|
|
icon_off = "miningsecoff"
|
|
req_access = list(access_mining)
|
|
|
|
/obj/structure/closet/secure_closet/miner/New()
|
|
..()
|
|
new /obj/item/shovel(src)
|
|
new /obj/item/pickaxe(src)
|
|
new /obj/item/radio/headset/headset_cargo/mining(src)
|
|
new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
|
|
new /obj/item/storage/bag/ore(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
|
|
/**********************Shuttle Computer**************************/
|
|
|
|
/obj/machinery/computer/shuttle/mining
|
|
name = "Mining Shuttle Console"
|
|
desc = "Used to call and send the mining shuttle."
|
|
circuit = /obj/item/circuitboard/mining_shuttle
|
|
shuttleId = "mining"
|
|
possible_destinations = "mining_home;mining_away"
|
|
|
|
/******************************Lantern*******************************/
|
|
|
|
/obj/item/flashlight/lantern
|
|
name = "lantern"
|
|
icon_state = "lantern"
|
|
desc = "A mining lantern."
|
|
brightness_on = 6 // luminosity when on
|
|
|
|
/*****************************Pickaxe********************************/
|
|
|
|
/obj/item/pickaxe
|
|
name = "pickaxe"
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "pickaxe"
|
|
flags = CONDUCT
|
|
slot_flags = SLOT_BELT
|
|
force = 15.0
|
|
throwforce = 10.0
|
|
item_state = "pickaxe"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
materials = list(MAT_METAL=2000) //one sheet, but where can you make them?
|
|
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
|
|
origin_tech = "materials=2;engineering=3"
|
|
attack_verb = list("hit", "pierced", "sliced", "attacked")
|
|
var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg')
|
|
var/drill_verb = "picking"
|
|
sharp = 1
|
|
var/excavation_amount = 100
|
|
usesound = 'sound/effects/picaxe1.ogg'
|
|
toolspeed = 1
|
|
|
|
/obj/item/pickaxe/proc/playDigSound()
|
|
playsound(src, pick(digsound),20,1)
|
|
|
|
/obj/item/pickaxe/silver
|
|
name = "silver-plated pickaxe"
|
|
icon_state = "spickaxe"
|
|
item_state = "spickaxe"
|
|
digspeed = 30 //mines faster than a normal pickaxe, bought from mining vendor
|
|
origin_tech = "materials=3;engineering=4"
|
|
desc = "A silver-plated pickaxe that mines slightly faster than standard-issue."
|
|
toolspeed = 0.75
|
|
|
|
/obj/item/pickaxe/gold
|
|
name = "golden pickaxe"
|
|
icon_state = "gpickaxe"
|
|
item_state = "gpickaxe"
|
|
digspeed = 20
|
|
origin_tech = "materials=4;engineering=4"
|
|
desc = "A gold-plated pickaxe that mines faster than standard-issue."
|
|
toolspeed = 0.6
|
|
|
|
/obj/item/pickaxe/diamond
|
|
name = "diamond-tipped pickaxe"
|
|
icon_state = "dpickaxe"
|
|
item_state = "dpickaxe"
|
|
digspeed = 20 //mines twice as fast as a normal pickaxe, bought from mining vendor
|
|
origin_tech = "materials=5;engineering=4"
|
|
desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt."
|
|
toolspeed = 0.5
|
|
|
|
/obj/item/pickaxe/drill
|
|
name = "mining drill"
|
|
icon_state = "handdrill"
|
|
item_state = "jackhammer"
|
|
digspeed = 25 //available from roundstart, faster than a pickaxe.
|
|
digsound = list('sound/weapons/drill.ogg')
|
|
hitsound = 'sound/weapons/drill.ogg'
|
|
usesound = 'sound/weapons/drill.ogg'
|
|
origin_tech = "materials=2;powerstorage=2;engineering=3"
|
|
desc = "An electric mining drill for the especially scrawny."
|
|
toolspeed = 0.5
|
|
|
|
/obj/item/pickaxe/drill/cyborg
|
|
name = "cyborg mining drill"
|
|
desc = "An integrated electric mining drill."
|
|
flags = NODROP
|
|
|
|
/obj/item/pickaxe/drill/diamonddrill
|
|
name = "diamond-tipped mining drill"
|
|
icon_state = "diamonddrill"
|
|
digspeed = 10
|
|
origin_tech = "materials=6;powerstorage=4;engineering=4"
|
|
desc = "Yours is the drill that will pierce the heavens!"
|
|
toolspeed = 0.25
|
|
|
|
/obj/item/pickaxe/diamonddrill/traitor //Pocket-sized traitor diamond drill.
|
|
name = "supermatter drill"
|
|
icon_state = "smdrill"
|
|
origin_tech = "materials=6;powerstorage=4;engineering=4;syndicate=3"
|
|
desc = "Microscopic supermatter crystals cover the head of this tiny drill."
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version!
|
|
name = "diamond-tipped cyborg mining drill" //To inherit the NODROP flag, and easier to change borg specific drill mechanics.
|
|
icon_state = "diamonddrill"
|
|
digspeed = 10
|
|
toolspeed = 0.25
|
|
|
|
/obj/item/pickaxe/drill/jackhammer
|
|
name = "sonic jackhammer"
|
|
icon_state = "jackhammer"
|
|
item_state = "jackhammer"
|
|
digspeed = 5 //the epitome of powertools. extremely fast mining, laughs at puny walls
|
|
origin_tech = "materials=6;powerstorage=4;engineering=5;magnets=4"
|
|
digsound = list('sound/weapons/sonic_jackhammer.ogg')
|
|
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
|
|
usesound = 'sound/weapons/sonic_jackhammer.ogg'
|
|
desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls."
|
|
toolspeed = 0.1
|
|
|
|
/*****************************Shovel********************************/
|
|
|
|
/obj/item/shovel
|
|
name = "shovel"
|
|
desc = "A large tool for digging and moving dirt."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "shovel"
|
|
flags = CONDUCT
|
|
slot_flags = SLOT_BELT
|
|
force = 8.0
|
|
throwforce = 4.0
|
|
item_state = "shovel"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
materials = list(MAT_METAL=50)
|
|
origin_tech = "materials=2;engineering=2"
|
|
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
|
|
usesound = 'sound/effects/shovel_dig.ogg'
|
|
toolspeed = 1
|
|
|
|
/obj/item/shovel/spade
|
|
name = "spade"
|
|
desc = "A small tool for digging and moving dirt."
|
|
icon_state = "spade"
|
|
item_state = "spade"
|
|
force = 5.0
|
|
throwforce = 7.0
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
toolspeed = 2
|
|
|
|
|
|
/**********************Mining car (Crate like thing, not the rail car)**************************/
|
|
|
|
/obj/structure/closet/crate/miningcar
|
|
desc = "A mining car. This one doesn't work on rails, but has to be dragged."
|
|
name = "mining car (not for rails)"
|
|
icon_state = "miningcar"
|
|
density = 1
|
|
icon_opened = "miningcaropen"
|
|
icon_closed = "miningcar"
|
|
|
|
/*********************Mob Capsule*************************/
|
|
|
|
/obj/item/mobcapsule
|
|
name = "lazarus capsule"
|
|
desc = "It allows you to store and deploy lazarus-injected creatures easier."
|
|
icon = 'icons/obj/mobcap.dmi'
|
|
icon_state = "mobcap0"
|
|
w_class = WEIGHT_CLASS_TINY
|
|
throw_range = 20
|
|
var/mob/living/simple_animal/captured = null
|
|
var/colorindex = 0
|
|
|
|
/obj/item/mobcapsule/Destroy()
|
|
if(captured)
|
|
captured.ghostize()
|
|
QDEL_NULL(captured)
|
|
return ..()
|
|
|
|
/obj/item/mobcapsule/attack(var/atom/A, mob/user, prox_flag)
|
|
if(!istype(A, /mob/living/simple_animal) || isbot(A))
|
|
return ..()
|
|
capture(A, user)
|
|
return 1
|
|
|
|
/obj/item/mobcapsule/proc/capture(var/mob/target, var/mob/U as mob)
|
|
var/mob/living/simple_animal/T = target
|
|
if(captured)
|
|
to_chat(U, "<span class='notice'>Capture failed!</span>: The capsule already has a mob registered to it!")
|
|
else
|
|
if(istype(T) && "neutral" in T.faction)
|
|
T.forceMove(src)
|
|
T.name = "[U.name]'s [initial(T.name)]"
|
|
T.cancel_camera()
|
|
name = "Lazarus Capsule: [initial(T.name)]"
|
|
to_chat(U, "<span class='notice'>You placed a [T.name] inside the Lazarus Capsule!</span>")
|
|
captured = T
|
|
else
|
|
to_chat(U, "You can't capture that mob!")
|
|
|
|
/obj/item/mobcapsule/throw_impact(atom/A, mob/user)
|
|
..()
|
|
if(captured)
|
|
dump_contents(user)
|
|
|
|
/obj/item/mobcapsule/proc/dump_contents(mob/user)
|
|
if(captured)
|
|
captured.forceMove(get_turf(src))
|
|
captured = null
|
|
|
|
/obj/item/mobcapsule/attack_self(mob/user)
|
|
colorindex += 1
|
|
if(colorindex >= 6)
|
|
colorindex = 0
|
|
icon_state = "mobcap[colorindex]"
|
|
update_icon()
|
|
|
|
/*****************************Survival Pod********************************/
|
|
|
|
|
|
/area/survivalpod
|
|
name = "\improper Emergency Shelter"
|
|
icon_state = "away"
|
|
requires_power = 0
|
|
has_gravity = 1
|
|
|
|
/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/proc/get_template()
|
|
if(template)
|
|
return
|
|
template = shelter_templates[template_id]
|
|
if(!template)
|
|
log_runtime("Shelter template ([template_id]) not found!", src)
|
|
qdel(src)
|
|
|
|
/obj/item/survivalcapsule/examine(mob/user)
|
|
. = ..()
|
|
get_template()
|
|
to_chat(user, "This capsule has the [template.name] stored.")
|
|
to_chat(user, template.description)
|
|
|
|
/obj/item/survivalcapsule/attack_self()
|
|
// Can't grab when capsule is New() because templates aren't loaded then
|
|
get_template()
|
|
if(used == FALSE)
|
|
loc.visible_message("<span class='warning'>[src] begins to shake. Stand back!</span>")
|
|
used = TRUE
|
|
sleep(50)
|
|
var/turf/deploy_location = get_turf(src)
|
|
var/status = template.check_deploy(deploy_location)
|
|
switch(status)
|
|
if(SHELTER_DEPLOY_BAD_AREA)
|
|
loc.visible_message("<span class='warning'>[src] will not function in this area.</span>")
|
|
if(SHELTER_DEPLOY_BAD_TURFS, SHELTER_DEPLOY_ANCHORED_OBJECTS)
|
|
var/width = template.width
|
|
var/height = template.height
|
|
loc.visible_message("<span class='warning'>[src] doesn't have room to deploy! You need to clear a [width]x[height] area!</span>")
|
|
|
|
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)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) activated a bluespace capsule away from the mining level! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)")
|
|
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/shuttle/survival_pod
|
|
name = "pod window"
|
|
icon = 'icons/obj/smooth_structures/pod_window.dmi'
|
|
icon_state = "smooth"
|
|
dir = FULLTILE_WINDOW_DIR
|
|
max_integrity = 100
|
|
fulltile = TRUE
|
|
reinf = TRUE
|
|
heat_resistance = 1600
|
|
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100)
|
|
smooth = SMOOTH_MORE
|
|
canSmoothWith = list(/turf/simulated/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod)
|
|
explosion_block = 3
|
|
level = 3
|
|
glass_type = /obj/item/stack/sheet/titaniumglass
|
|
glass_amount = 2
|
|
|
|
/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
|
|
|
|
//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"
|
|
smooth = SMOOTH_FALSE
|
|
|
|
//Sleeper
|
|
/obj/machinery/sleeper/survival_pod
|
|
icon = 'icons/obj/lavaland/survival_pod.dmi'
|
|
icon_state = "sleeper-open"
|
|
density = 0
|
|
|
|
/obj/machinery/sleeper/survival_pod/New()
|
|
..()
|
|
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/stock_parts/console_screen(null)
|
|
component_parts += new /obj/item/stock_parts/console_screen(null)
|
|
component_parts += new /obj/item/stack/cable_coil(null, 1)
|
|
RefreshParts()
|
|
|
|
//Computer
|
|
/obj/item/gps/computer
|
|
name = "pod computer"
|
|
icon_state = "pod_computer"
|
|
icon = 'icons/obj/lavaland/pod_computer.dmi'
|
|
anchored = 1
|
|
density = 1
|
|
pixel_y = -32
|
|
|
|
/obj/item/gps/computer/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/wrench))
|
|
playsound(loc, W.usesound, 50, 1)
|
|
user.visible_message("<span class='warning'>[user] disassembles the gps.</span>", \
|
|
"<span class='notice'>You start to disassemble the gps...</span>", "You hear clanking and banging noises.")
|
|
if(do_after(user, 20 * W.toolspeed, target = src))
|
|
new /obj/item/gps(loc)
|
|
qdel(src)
|
|
return ..()
|
|
|
|
/obj/item/gps/computer/attack_hand(mob/user)
|
|
attack_self(user)
|
|
|
|
//Bed
|
|
/obj/structure/stool/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'
|
|
icon_on = "donkvendor"
|
|
icon_off = "donkvendor"
|
|
light_range = 8
|
|
max_n_of_items = 10
|
|
pixel_y = -4
|
|
|
|
/obj/item/circuitboard/smartfridge/survival
|
|
name = "circuit board (Smartfridge Survival)"
|
|
build_path = /obj/machinery/smartfridge/survival_pod
|
|
|
|
/obj/item/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params)
|
|
return
|
|
|
|
/obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O)
|
|
if(istype(O, /obj/item))
|
|
return 1
|
|
return 0
|
|
|
|
/obj/machinery/smartfridge/survival_pod/New()
|
|
..()
|
|
component_parts = list()
|
|
component_parts += new /obj/item/circuitboard/smartfridge/survival(null)
|
|
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
|
RefreshParts()
|
|
|
|
/obj/machinery/smartfridge/survival_pod/loaded/New()
|
|
..()
|
|
for(var/i in 1 to 5)
|
|
var/obj/item/reagent_containers/food/snacks/warmdonkpocket_weak/W = new(src)
|
|
load(W)
|
|
if(prob(50))
|
|
var/obj/item/storage/pill_bottle/dice/D = new(src)
|
|
load(D)
|
|
else
|
|
var/obj/item/instrument/guitar/G = new(src)
|
|
load(G)
|
|
|
|
//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 = 1
|
|
density = 1
|
|
var/arbitraryatmosblockingvar = 1
|
|
var/buildstacktype = /obj/item/stack/sheet/metal
|
|
var/buildstackamount = 5
|
|
|
|
/obj/structure/fans/deconstruct()
|
|
if(buildstacktype)
|
|
new buildstacktype(loc, buildstackamount)
|
|
qdel(src)
|
|
|
|
/obj/structure/fans/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/wrench))
|
|
playsound(loc, W.usesound, 50, 1)
|
|
user.visible_message("<span class='warning'>[user] disassembles the fan.</span>", \
|
|
"<span class='notice'>You start to disassemble the fan...</span>", "You hear clanking and banging noises.")
|
|
if(do_after(user, 20 * W.toolspeed, target = src))
|
|
deconstruct()
|
|
return ..()
|
|
|
|
/obj/structure/fans/tiny
|
|
name = "tiny fan"
|
|
desc = "A tiny fan, releasing a thin gust of air."
|
|
layer = TURF_LAYER+0.1
|
|
density = 0
|
|
icon_state = "fan_tiny"
|
|
buildstackamount = 2
|
|
|
|
/obj/structure/fans/New(loc)
|
|
..()
|
|
air_update_turf(1)
|
|
|
|
/obj/structure/fans/Destroy()
|
|
arbitraryatmosblockingvar = 0
|
|
air_update_turf(1)
|
|
return ..()
|
|
|
|
/obj/structure/fans/CanAtmosPass(turf/T)
|
|
return !arbitraryatmosblockingvar
|
|
|
|
//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/turf/walls/survival_pod_walls.dmi'
|
|
icon_state = "ntpod"
|
|
|
|
/obj/structure/sign/mining/survival
|
|
name = "shelter sign"
|
|
desc = "A high visibility sign designating a safe shelter."
|
|
icon = 'icons/turf/walls/survival_pod_walls.dmi'
|
|
icon_state = "survival"
|
|
|
|
//Fluff
|
|
/obj/structure/tubes
|
|
icon_state = "tubes"
|
|
icon = 'icons/obj/lavaland/survival_pod.dmi'
|
|
name = "tubes"
|
|
anchored = 1
|
|
layer = MOB_LAYER - 0.2
|
|
density = 0
|
|
|
|
/obj/structure/tubes/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/wrench))
|
|
playsound(loc, W.usesound, 50, 1)
|
|
user.visible_message("<span class='warning'>[user] disassembles [src].</span>", \
|
|
"<span class='notice'>You start to disassemble [src]...</span>", "You hear clanking and banging noises.")
|
|
if(do_after(user, 20 * W.toolspeed, target = src))
|
|
new /obj/item/stack/rods(loc)
|
|
qdel(src)
|
|
return ..()
|
|
|
|
/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/storage/toolbox/green/memetic,
|
|
/obj/item/gun/projectile/automatic/l6_saw,
|
|
/obj/item/gun/magic/staff/chaos,
|
|
/obj/item/gun/magic/staff/spellblade,
|
|
/obj/item/gun/magic/wand/death,
|
|
/obj/item/gun/magic/wand/fireball,
|
|
/obj/item/stack/telecrystal,
|
|
/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)
|