mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-07-19 20:23:07 +01:00
@@ -123,4 +123,5 @@
|
||||
|
||||
/obj/item/device/encryptionkey/ert
|
||||
name = "\improper ERT radio encryption key"
|
||||
icon_state = "cent_cypherkey"
|
||||
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
/obj/item/device/radio/headset/centcom
|
||||
name = "centcom radio headset"
|
||||
desc = "The headset of the boss's boss."
|
||||
icon_state = "com_headset"
|
||||
icon_state = "cent_headset"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/ert
|
||||
|
||||
/obj/item/device/radio/headset/centcom/alt
|
||||
name = "centcom bowman headset"
|
||||
desc = "The headset of the boss's boss."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
ks2type = /obj/item/device/encryptionkey/ert
|
||||
|
||||
/obj/item/device/radio/headset/nanotrasen
|
||||
name = "\improper NT radio headset"
|
||||
desc = "The headset of a Nanotrasen corporate employee."
|
||||
icon_state = "nt_headset"
|
||||
ks2type = /obj/item/device/encryptionkey/ert
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/device/radio/intercom
|
||||
name = "station intercom (General)"
|
||||
desc = "Talk through this."
|
||||
icon = 'icons/obj/radio_vr.dmi' //VOREStation Edit - New Icon
|
||||
icon_state = "intercom"
|
||||
anchored = 1
|
||||
w_class = ITEMSIZE_LARGE
|
||||
|
||||
@@ -22,8 +22,8 @@ var/global/list/default_medbay_channels = list(
|
||||
)
|
||||
|
||||
/obj/item/device/radio
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
name = "station bounced radio"
|
||||
icon = 'icons/obj/radio_vr.dmi' //VOREStation Edit
|
||||
name = "shortwave radio" //VOREStation Edit
|
||||
suffix = "\[3\]"
|
||||
icon_state = "walkietalkie"
|
||||
item_state = "radio"
|
||||
|
||||
@@ -21,10 +21,11 @@
|
||||
|
||||
/obj/item/device/uplink/New(var/location, var/datum/mind/owner, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
|
||||
..()
|
||||
src.uplink_owner = owner
|
||||
if(owner) //VOREStation Edit - Owner optional
|
||||
src.uplink_owner = owner
|
||||
uses = owner.tcrystals
|
||||
purchase_log = list()
|
||||
world_uplinks += src
|
||||
uses = owner.tcrystals
|
||||
processing_objects += src
|
||||
|
||||
/obj/item/device/uplink/Destroy()
|
||||
|
||||
@@ -1,154 +1,190 @@
|
||||
/* Diffrent misc types of tiles
|
||||
* Contains:
|
||||
* Prototype
|
||||
* Grass
|
||||
* Wood
|
||||
* Carpet
|
||||
* Blue Carpet
|
||||
* Linoleum
|
||||
*
|
||||
* Put your stuff in fifty_stacks_tiles.dm as well.
|
||||
*/
|
||||
|
||||
/obj/item/stack/tile
|
||||
name = "tile"
|
||||
singular_name = "tile"
|
||||
desc = "A non-descript floor tile"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_amount = 60
|
||||
|
||||
/obj/item/stack/tile/New()
|
||||
..()
|
||||
pixel_x = rand(-7, 7)
|
||||
pixel_y = rand(-7, 7)
|
||||
|
||||
/*
|
||||
* Grass
|
||||
*/
|
||||
/obj/item/stack/tile/grass
|
||||
name = "grass tile"
|
||||
singular_name = "grass floor tile"
|
||||
desc = "A patch of grass like they often use on golf courses."
|
||||
icon_state = "tile_grass"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
|
||||
/obj/item/stack/tile/grass/fifty
|
||||
amount = 50
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
/obj/item/stack/tile/wood
|
||||
name = "wood floor tile"
|
||||
singular_name = "wood floor tile"
|
||||
desc = "An easy to fit wooden floor tile."
|
||||
icon_state = "tile-wood"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/wood/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/wood/cyborg
|
||||
name = "wood floor tile synthesizer"
|
||||
desc = "A device that makes wood floor tiles."
|
||||
uses_charge = 1
|
||||
charge_costs = list(250)
|
||||
stacktype = /obj/item/stack/tile/wood
|
||||
build_type = /obj/item/stack/tile/wood
|
||||
|
||||
/*
|
||||
* Carpets
|
||||
*/
|
||||
/obj/item/stack/tile/carpet
|
||||
name = "carpet"
|
||||
singular_name = "carpet"
|
||||
desc = "A piece of carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-carpet"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/carpet/blue
|
||||
name = "blue carpet"
|
||||
singular_name = "blue carpet"
|
||||
desc = "A piece of blue carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-bluecarpet"
|
||||
|
||||
/obj/item/stack/tile/floor
|
||||
name = "floor tile"
|
||||
singular_name = "floor tile"
|
||||
desc = "Those could work as a pretty decent throwing weapon" //why?
|
||||
icon_state = "tile"
|
||||
force = 6.0
|
||||
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
|
||||
throwforce = 15.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = CONDUCT
|
||||
|
||||
/obj/item/stack/tile/floor_red
|
||||
name = "red floor tile"
|
||||
singular_name = "red floor tile"
|
||||
color = COLOR_RED_GRAY
|
||||
icon_state = "tile_white"
|
||||
|
||||
/obj/item/stack/tile/floor_steel
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_white
|
||||
name = "white floor tile"
|
||||
singular_name = "white floor tile"
|
||||
icon_state = "tile_white"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_yellow
|
||||
name = "yellow floor tile"
|
||||
singular_name = "yellow floor tile"
|
||||
color = COLOR_BROWN
|
||||
icon_state = "tile_white"
|
||||
|
||||
/obj/item/stack/tile/floor_dark
|
||||
name = "dark floor tile"
|
||||
singular_name = "dark floor tile"
|
||||
icon_state = "fr_tile"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_freezer
|
||||
name = "freezer floor tile"
|
||||
singular_name = "freezer floor tile"
|
||||
icon_state = "tile_freezer"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/cyborg
|
||||
name = "floor tile synthesizer"
|
||||
desc = "A device that makes floor tiles."
|
||||
gender = NEUTER
|
||||
matter = null
|
||||
uses_charge = 1
|
||||
charge_costs = list(250)
|
||||
stacktype = /obj/item/stack/tile/floor
|
||||
build_type = /obj/item/stack/tile/floor
|
||||
|
||||
/obj/item/stack/tile/linoleum
|
||||
name = "linoleum"
|
||||
singular_name = "linoleum"
|
||||
desc = "A piece of linoleum. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-linoleum"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
/* Diffrent misc types of tiles
|
||||
* Contains:
|
||||
* Prototype
|
||||
* Grass
|
||||
* Wood
|
||||
* Carpet
|
||||
* Blue Carpet
|
||||
* Linoleum
|
||||
*
|
||||
* Put your stuff in fifty_stacks_tiles.dm as well.
|
||||
*/
|
||||
|
||||
/obj/item/stack/tile
|
||||
name = "tile"
|
||||
singular_name = "tile"
|
||||
desc = "A non-descript floor tile"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_amount = 60
|
||||
|
||||
/obj/item/stack/tile/New()
|
||||
..()
|
||||
pixel_x = rand(-7, 7)
|
||||
pixel_y = rand(-7, 7)
|
||||
|
||||
/*
|
||||
* Grass
|
||||
*/
|
||||
/obj/item/stack/tile/grass
|
||||
name = "grass tile"
|
||||
singular_name = "grass floor tile"
|
||||
desc = "A patch of grass like they often use on golf courses."
|
||||
icon_state = "tile_grass"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
|
||||
/obj/item/stack/tile/grass/fifty
|
||||
amount = 50
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
/obj/item/stack/tile/wood
|
||||
name = "wood floor tile"
|
||||
singular_name = "wood floor tile"
|
||||
desc = "An easy to fit wooden floor tile."
|
||||
icon_state = "tile-wood"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/wood/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/wood/cyborg
|
||||
name = "wood floor tile synthesizer"
|
||||
desc = "A device that makes wood floor tiles."
|
||||
uses_charge = 1
|
||||
charge_costs = list(250)
|
||||
stacktype = /obj/item/stack/tile/wood
|
||||
build_type = /obj/item/stack/tile/wood
|
||||
|
||||
/*
|
||||
* Carpets
|
||||
*/
|
||||
/obj/item/stack/tile/carpet
|
||||
name = "carpet"
|
||||
singular_name = "carpet"
|
||||
desc = "A piece of carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-carpet"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/carpet/blue
|
||||
name = "blue carpet"
|
||||
singular_name = "blue carpet"
|
||||
desc = "A piece of blue carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-bluecarpet"
|
||||
|
||||
// VOREStation Edit
|
||||
// TODO - Add descriptions to these
|
||||
/obj/item/stack/tile/carpet/bcarpet
|
||||
icon_state = "tile-bcarpet"
|
||||
/obj/item/stack/tile/carpet/blucarpet
|
||||
icon_state = "tile-blucarpet"
|
||||
/obj/item/stack/tile/carpet/turcarpet
|
||||
icon_state = "tile-turcarpet"
|
||||
/obj/item/stack/tile/carpet/sblucarpet
|
||||
icon_state = "tile-sblucarpet"
|
||||
/obj/item/stack/tile/carpet/gaycarpet
|
||||
icon_state = "tile-gaycarpet"
|
||||
/obj/item/stack/tile/carpet/purcarpet
|
||||
icon_state = "tile-purcarpet"
|
||||
/obj/item/stack/tile/carpet/oracarpet
|
||||
icon_state = "tile-oracarpet"
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/item/stack/tile/floor
|
||||
name = "floor tile"
|
||||
singular_name = "floor tile"
|
||||
desc = "Those could work as a pretty decent throwing weapon" //why?
|
||||
icon_state = "tile"
|
||||
force = 6.0
|
||||
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
|
||||
throwforce = 15.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = CONDUCT
|
||||
|
||||
/obj/item/stack/tile/floor/red
|
||||
name = "red floor tile"
|
||||
singular_name = "red floor tile"
|
||||
color = COLOR_RED_GRAY
|
||||
icon_state = "tile_white"
|
||||
|
||||
// VOREStation Edit
|
||||
/obj/item/stack/tile/floor/techgrey
|
||||
name = "grey techfloor tile"
|
||||
singular_name = "grey techfloor tile"
|
||||
icon_state = "techtile_grey"
|
||||
|
||||
/obj/item/stack/tile/floor/techgrid
|
||||
name = "grid techfloor tile"
|
||||
singular_name = "grid techfloor tile"
|
||||
icon_state = "techtile_grid"
|
||||
|
||||
/obj/item/stack/tile/floor/steel_dirty
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/item/stack/tile/floor/steel
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/white
|
||||
name = "white floor tile"
|
||||
singular_name = "white floor tile"
|
||||
icon_state = "tile_white"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/yellow
|
||||
name = "yellow floor tile"
|
||||
singular_name = "yellow floor tile"
|
||||
color = COLOR_BROWN
|
||||
icon_state = "tile_white"
|
||||
|
||||
/obj/item/stack/tile/floor/dark
|
||||
name = "dark floor tile"
|
||||
singular_name = "dark floor tile"
|
||||
icon_state = "fr_tile"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/freezer
|
||||
name = "freezer floor tile"
|
||||
singular_name = "freezer floor tile"
|
||||
icon_state = "tile_freezer"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/cyborg
|
||||
name = "floor tile synthesizer"
|
||||
desc = "A device that makes floor tiles."
|
||||
gender = NEUTER
|
||||
matter = null
|
||||
uses_charge = 1
|
||||
charge_costs = list(250)
|
||||
stacktype = /obj/item/stack/tile/floor
|
||||
build_type = /obj/item/stack/tile/floor
|
||||
|
||||
/obj/item/stack/tile/linoleum
|
||||
name = "linoleum"
|
||||
singular_name = "linoleum"
|
||||
desc = "A piece of linoleum. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-linoleum"
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
@@ -14,3 +14,15 @@
|
||||
/obj/item/weapon/stock_parts/matter_bin = 2,
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/weapon/stock_parts/console_screen = 1)
|
||||
|
||||
// Board for the algae oxygen generator in algae_generator.dm
|
||||
/obj/item/weapon/circuitboard/algae_farm
|
||||
name = T_BOARD("algae oxygen generator")
|
||||
build_path = /obj/machinery/atmospherics/binary/algae_farm
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
origin_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/matter_bin = 2,
|
||||
/obj/item/weapon/stock_parts/manipulator = 1,
|
||||
/obj/item/weapon/stock_parts/capacitor = 1,
|
||||
/obj/item/weapon/stock_parts/console_screen = 1)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/survival/New()
|
||||
..()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/clothing/mask/gas(src) // VOREStation Edit - Tether
|
||||
new /obj/item/weapon/tank/emergency/oxygen(src)
|
||||
|
||||
//VS Edit
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
// Based on catwalk.dm from https://github.com/Endless-Horizon/CEV-Eris
|
||||
/obj/structure/catwalk
|
||||
layer = TURF_LAYER + 0.5
|
||||
icon = 'icons/turf/catwalks.dmi'
|
||||
icon_state = "catwalk"
|
||||
name = "catwalk"
|
||||
desc = "Cats really don't like these things."
|
||||
density = 0
|
||||
anchored = 1.0
|
||||
|
||||
/obj/structure/catwalk/New()
|
||||
..()
|
||||
spawn(4)
|
||||
if(src)
|
||||
for(var/obj/structure/catwalk/C in get_turf(src))
|
||||
if(C != src)
|
||||
qdel(C)
|
||||
update_icon()
|
||||
redraw_nearby_catwalks()
|
||||
|
||||
/obj/structure/catwalk/Destroy()
|
||||
..()
|
||||
redraw_nearby_catwalks()
|
||||
|
||||
/obj/structure/catwalk/proc/redraw_nearby_catwalks()
|
||||
for(var/direction in alldirs)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, direction)))
|
||||
var/obj/structure/catwalk/L = locate(/obj/structure/catwalk, get_step(src, direction))
|
||||
L.update_icon() //so siding get updated properly
|
||||
|
||||
|
||||
/obj/structure/catwalk/update_icon()
|
||||
var/connectdir = 0
|
||||
for(var/direction in cardinal)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, direction)))
|
||||
connectdir |= direction
|
||||
|
||||
//Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not.
|
||||
var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW
|
||||
//NORTHEAST
|
||||
if(connectdir & NORTH && connectdir & EAST)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, NORTHEAST)))
|
||||
diagonalconnect |= 1
|
||||
//SOUTHEAST
|
||||
if(connectdir & SOUTH && connectdir & EAST)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, SOUTHEAST)))
|
||||
diagonalconnect |= 2
|
||||
//NORTHWEST
|
||||
if(connectdir & NORTH && connectdir & WEST)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, NORTHWEST)))
|
||||
diagonalconnect |= 4
|
||||
//SOUTHWEST
|
||||
if(connectdir & SOUTH && connectdir & WEST)
|
||||
if(locate(/obj/structure/catwalk, get_step(src, SOUTHWEST)))
|
||||
diagonalconnect |= 8
|
||||
|
||||
icon_state = "catwalk[connectdir]-[diagonalconnect]"
|
||||
|
||||
|
||||
/obj/structure/catwalk/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/catwalk/attackby(obj/item/C as obj, mob/user as mob)
|
||||
if (istype(C, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = C
|
||||
if(WT.isOn())
|
||||
if(WT.remove_fuel(0, user))
|
||||
to_chat(user, "<span class='notice'>Slicing lattice joints ...</span>")
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
new /obj/structure/lattice(src.loc)
|
||||
qdel(src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/catwalk/Crossed()
|
||||
. = ..()
|
||||
if(isliving(usr))
|
||||
playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1)
|
||||
@@ -46,6 +46,7 @@
|
||||
new /obj/item/clothing/gloves/sterile/latex(src)
|
||||
new /obj/item/device/radio/headset/heads/rd(src)
|
||||
new /obj/item/device/radio/headset/heads/rd/alt(src)
|
||||
new /obj/item/weapon/bluespace_harpoon //VOREStation Edit
|
||||
new /obj/item/weapon/tank/air(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/device/flash(src)
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
new /obj/item/device/radio/headset/heads/hop/alt(src)
|
||||
new /obj/item/weapon/storage/box/ids(src)
|
||||
new /obj/item/weapon/storage/box/ids( src )
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/gun/projectile/sec/flash(src)
|
||||
new /obj/item/weapon/gun/energy/gun/martin(src) //VOREStation Edit
|
||||
//new /obj/item/weapon/gun/projectile/sec/flash(src) //VOREStation Edit
|
||||
new /obj/item/device/flash(src)
|
||||
return
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/hos
|
||||
name = "head of security's locker"
|
||||
name = "head of security's attire" //VOREStation Edit
|
||||
req_access = list(access_hos)
|
||||
icon_state = "hossecure1"
|
||||
icon_closed = "hossecure"
|
||||
@@ -92,7 +92,7 @@
|
||||
icon_broken = "hossecurebroken"
|
||||
icon_off = "hossecureoff"
|
||||
storage_capacity = 2.5 * MOB_MEDIUM
|
||||
|
||||
//VOREStation Edit - This list split into two lockers
|
||||
New()
|
||||
..()
|
||||
if(prob(50))
|
||||
@@ -108,33 +108,50 @@
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat/jensen(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat(src)
|
||||
new /obj/item/clothing/head/helmet/HoS/dermal(src)
|
||||
new /obj/item/weapon/cartridge/hos(src)
|
||||
new /obj/item/device/radio/headset/heads/hos(src)
|
||||
new /obj/item/device/radio/headset/heads/hos/alt(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
new /obj/item/clothing/head/beret/sec/corporate/hos(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
|
||||
new /obj/item/clothing/mask/gas/half(src)
|
||||
return
|
||||
|
||||
//VOREStation Edit - Locker has too much junk in it, splitting it up
|
||||
/obj/structure/closet/secure_closet/hos2
|
||||
name = "head of security's gear"
|
||||
req_access = list(access_hos)
|
||||
icon_state = "hossecure1"
|
||||
icon_closed = "hossecure"
|
||||
icon_locked = "hossecure1"
|
||||
icon_opened = "hossecureopen"
|
||||
icon_broken = "hossecurebroken"
|
||||
icon_off = "hossecureoff"
|
||||
storage_capacity = 2.5 * MOB_MEDIUM
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/cartridge/hos(src)
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/weapon/shield/riot(src)
|
||||
new /obj/item/weapon/shield/riot/tele(src)
|
||||
new /obj/item/weapon/storage/box/holobadge/hos(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/hos(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/weapon/melee/baton/loaded(src)
|
||||
new /obj/item/weapon/gun/projectile/lamia(src)
|
||||
new /obj/item/ammo_magazine/a44/rubber(src)
|
||||
new /obj/item/ammo_magazine/a44(src)
|
||||
new /obj/item/ammo_magazine/a44(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/cell/device/weapon(src)
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
new /obj/item/weapon/melee/telebaton(src)
|
||||
new /obj/item/clothing/head/beret/sec/corporate/hos(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/clothing/mask/gas/half(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/warden
|
||||
name = "warden's locker"
|
||||
req_access = list(access_armory)
|
||||
@@ -277,10 +294,10 @@
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
new /obj/item/device/radio/headset/headset_sec/alt(src)
|
||||
new /obj/item/clothing/suit/storage/vest/detective(src)
|
||||
new /obj/item/ammo_magazine/c45m/rubber(src)
|
||||
new /obj/item/ammo_magazine/c45m/rubber(src)
|
||||
new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
|
||||
new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/weapon/gun/projectile/colt/detective(src)
|
||||
new /obj/item/weapon/gun/projectile/revolver/consul(src) //VOREStation Edit
|
||||
new /obj/item/clothing/accessory/holster/armpit(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/flask/detflask(src)
|
||||
|
||||
@@ -7,4 +7,151 @@
|
||||
icon_opened = "hossecureopen"
|
||||
icon_broken = "hossecurebroken"
|
||||
icon_off = "hossecureoff"
|
||||
storage_capacity = 3 * MOB_MEDIUM
|
||||
storage_capacity = 3 * MOB_MEDIUM
|
||||
|
||||
//Custom NT Security Lockers, Only found at central command
|
||||
|
||||
/obj/structure/closet/secure_closet/nanotrasen_security
|
||||
name = "NanoTrasen security officer's locker"
|
||||
req_access = list(access_brig)
|
||||
icon = 'icons/obj/closet_vr.dmi'
|
||||
icon_state = "secC1"
|
||||
icon_closed = "secC"
|
||||
icon_locked = "sec1C"
|
||||
icon_opened = "secCopen"
|
||||
icon_broken = "secCbroken"
|
||||
icon_off = "seCcoff"
|
||||
storage_capacity = 3.5 * MOB_MEDIUM
|
||||
|
||||
New()
|
||||
..()
|
||||
if(prob(25))
|
||||
new /obj/item/weapon/storage/backpack/security(src)
|
||||
else
|
||||
new /obj/item/weapon/storage/backpack/satchel/sec(src)
|
||||
if(prob(75))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
|
||||
new /obj/item/clothing/suit/storage/vest/nanotrasen(src)
|
||||
new /obj/item/clothing/head/helmet(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
new /obj/item/device/radio/headset/headset_sec/alt(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/melee/baton/loaded(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/device/hailer(src)
|
||||
new /obj/item/device/flashlight/flare(src)
|
||||
new /obj/item/clothing/accessory/storage/black_vest(src)
|
||||
new /obj/item/weapon/gun/energy/taser(src)
|
||||
new /obj/item/weapon/cell/device/weapon(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/clothing/head/soft/nanotrasen(src)
|
||||
new /obj/item/clothing/head/beret/nanotrasen(src)
|
||||
new /obj/item/clothing/under/nanotrasen/security(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots/toeless(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/nanotrasen_commander
|
||||
name = "NanoTrasen commander's locker"
|
||||
req_access = list(access_brig)
|
||||
icon = 'icons/obj/closet_vr.dmi'
|
||||
icon_state = "secC1"
|
||||
icon_closed = "secC"
|
||||
icon_locked = "sec1C"
|
||||
icon_opened = "secCopen"
|
||||
icon_broken = "secCbroken"
|
||||
icon_off = "seCcoff"
|
||||
storage_capacity = 3.5 * MOB_MEDIUM
|
||||
|
||||
New()
|
||||
..()
|
||||
if(prob(25))
|
||||
new /obj/item/weapon/storage/backpack/security(src)
|
||||
else
|
||||
new /obj/item/weapon/storage/backpack/satchel/sec(src)
|
||||
if(prob(75))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
|
||||
new /obj/item/clothing/head/helmet/HoS(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hos(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/jensen(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat/jensen(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat(src)
|
||||
new /obj/item/clothing/head/helmet/HoS/dermal(src)
|
||||
new /obj/item/weapon/cartridge/hos(src)
|
||||
new /obj/item/device/radio/headset/heads/hos(src)
|
||||
new /obj/item/device/radio/headset/heads/hos/alt(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/weapon/shield/riot(src)
|
||||
new /obj/item/weapon/shield/riot/tele(src)
|
||||
new /obj/item/weapon/storage/box/holobadge/hos(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/hos(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/weapon/melee/baton/loaded(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/cell/device/weapon(src)
|
||||
new /obj/item/clothing/accessory/holster/waist(src)
|
||||
new /obj/item/weapon/melee/telebaton(src)
|
||||
new /obj/item/clothing/head/beret/sec/corporate/hos(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots/toeless(src)
|
||||
new /obj/item/clothing/under/nanotrasen/security/commander(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/nanotrasen_warden
|
||||
name = "NanoTrasen warden's locker"
|
||||
req_access = list(access_brig)
|
||||
icon = 'icons/obj/closet_vr.dmi'
|
||||
icon_state = "secC1"
|
||||
icon_closed = "secC"
|
||||
icon_locked = "sec1C"
|
||||
icon_opened = "secCopen"
|
||||
icon_broken = "secCbroken"
|
||||
icon_off = "seCcoff"
|
||||
storage_capacity = 3.5 * MOB_MEDIUM
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
if(prob(25))
|
||||
new /obj/item/weapon/storage/backpack/security(src)
|
||||
else
|
||||
new /obj/item/weapon/storage/backpack/satchel/sec(src)
|
||||
if(prob(75))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
|
||||
new /obj/item/clothing/suit/storage/vest/warden(src)
|
||||
new /obj/item/clothing/under/nanotrasen/security/warden(src)
|
||||
new /obj/item/clothing/suit/storage/vest/wardencoat/alt(src)
|
||||
new /obj/item/clothing/head/helmet/warden(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
new /obj/item/device/radio/headset/headset_sec/alt(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/sechud(src)
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/warden(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/melee/baton/loaded(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/weapon/cell/device/weapon(src)
|
||||
new /obj/item/weapon/storage/box/holobadge(src)
|
||||
new /obj/item/clothing/head/beret/sec/corporate/warden(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/device/megaphone(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots(src)
|
||||
new /obj/item/clothing/shoes/boots/jackboots/toeless(src)
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/grille
|
||||
name = "grille"
|
||||
desc = "A flimsy lattice of metal rods, with screws to secure it to the floor."
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons
|
||||
icon_state = "grille"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
@@ -67,7 +67,18 @@
|
||||
user << "<span class='notice'>Slicing lattice joints ...</span>"
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
qdel(src)
|
||||
|
||||
return
|
||||
// VOREStation Edit - Added Catwalks
|
||||
if (istype(C, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/R = C
|
||||
if(R.use(2))
|
||||
user << "<span class='notice'>You start connecting \the [R.name] to \the [src.name] ...</span>"
|
||||
if(do_after(user, 5 SECONDS))
|
||||
src.alpha = 0 // Note: I don't know why this is set, Eris did it, just trusting for now. ~Leshana
|
||||
new /obj/structure/catwalk(src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
// VOREStation Edit End
|
||||
return
|
||||
|
||||
/obj/structure/lattice/proc/updateOverlays()
|
||||
|
||||
@@ -0,0 +1,318 @@
|
||||
// Based on railing.dmi from https://github.com/Endless-Horizon/CEV-Eris
|
||||
/obj/structure/railing
|
||||
name = "railing"
|
||||
desc = "A standard steel railing. Play stupid games win stupid prizes."
|
||||
icon = 'icons/obj/railing.dmi'
|
||||
density = 1
|
||||
throwpass = 1
|
||||
climbable = 1
|
||||
layer = 3.2 //Just above doors
|
||||
anchored = 1
|
||||
flags = ON_BORDER
|
||||
icon_state = "railing0"
|
||||
var/broken = FALSE
|
||||
var/health = 70
|
||||
var/maxhealth = 70
|
||||
var/check = 0
|
||||
|
||||
/obj/structure/railing/New(loc, constructed = 0)
|
||||
..()
|
||||
// TODO - "constructed" is not passed to us. We need to find a way to do this safely.
|
||||
if (constructed) // player-constructed railings
|
||||
anchored = 0
|
||||
if(climbable)
|
||||
verbs += /obj/structure/proc/climb_on
|
||||
|
||||
/obj/structure/railing/initialize()
|
||||
..()
|
||||
if(src.anchored)
|
||||
update_icon(0)
|
||||
|
||||
/obj/structure/railing/Destroy()
|
||||
for(var/obj/structure/railing/R in oview(src, 1))
|
||||
R.update_icon()
|
||||
..()
|
||||
|
||||
/obj/structure/railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(!mover)
|
||||
return 1
|
||||
if(istype(mover) && mover.checkpass(PASSTABLE))
|
||||
return 1
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/structure/railing/examine(mob/user)
|
||||
. = ..()
|
||||
if(health < maxhealth)
|
||||
switch(health / maxhealth)
|
||||
if(0.0 to 0.5)
|
||||
to_chat(user, "<span class='warning'>It looks severely damaged!</span>")
|
||||
if(0.25 to 0.5)
|
||||
to_chat(user, "<span class='warning'>It looks damaged!</span>")
|
||||
if(0.5 to 1.0)
|
||||
to_chat(user, "<span class='notice'>It has a few scrapes and dents.</span>")
|
||||
|
||||
/obj/structure/railing/proc/take_damage(amount)
|
||||
health -= amount
|
||||
if(health <= 0)
|
||||
visible_message("<span class='warning'>\The [src] breaks down!</span>")
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 50, 1)
|
||||
new /obj/item/stack/rods(get_turf(usr))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/railing/proc/NeighborsCheck(var/UpdateNeighbors = 1)
|
||||
check = 0
|
||||
//if (!anchored) return
|
||||
var/Rturn = turn(src.dir, -90)
|
||||
var/Lturn = turn(src.dir, 90)
|
||||
|
||||
for(var/obj/structure/railing/R in src.loc)
|
||||
if ((R.dir == Lturn) && R.anchored)
|
||||
check |= 32
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
if ((R.dir == Rturn) && R.anchored)
|
||||
check |= 2
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
|
||||
for (var/obj/structure/railing/R in get_step(src, Lturn))
|
||||
if ((R.dir == src.dir) && R.anchored)
|
||||
check |= 16
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
for (var/obj/structure/railing/R in get_step(src, Rturn))
|
||||
if ((R.dir == src.dir) && R.anchored)
|
||||
check |= 1
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
|
||||
for (var/obj/structure/railing/R in get_step(src, (Lturn + src.dir)))
|
||||
if ((R.dir == Rturn) && R.anchored)
|
||||
check |= 64
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
for (var/obj/structure/railing/R in get_step(src, (Rturn + src.dir)))
|
||||
if ((R.dir == Lturn) && R.anchored)
|
||||
check |= 4
|
||||
if (UpdateNeighbors)
|
||||
R.update_icon(0)
|
||||
|
||||
/obj/structure/railing/update_icon(var/UpdateNeighgors = 1)
|
||||
NeighborsCheck(UpdateNeighgors)
|
||||
layer = (dir == SOUTH) ? FLY_LAYER : initial(layer)
|
||||
overlays.Cut()
|
||||
if (!check || !anchored)//|| !anchored
|
||||
icon_state = "railing0"
|
||||
else
|
||||
icon_state = "railing1"
|
||||
if (check & 32)
|
||||
overlays += image ('icons/obj/railing.dmi', src, "corneroverlay")
|
||||
if ((check & 16) || !(check & 32) || (check & 64))
|
||||
overlays += image ('icons/obj/railing.dmi', src, "frontoverlay_l")
|
||||
if (!(check & 2) || (check & 1) || (check & 4))
|
||||
overlays += image ('icons/obj/railing.dmi', src, "frontoverlay_r")
|
||||
if(check & 4)
|
||||
switch (src.dir)
|
||||
if (NORTH)
|
||||
overlays += image ('icons/obj/railing.dmi', src, "mcorneroverlay", pixel_x = 32)
|
||||
if (SOUTH)
|
||||
overlays += image ('icons/obj/railing.dmi', src, "mcorneroverlay", pixel_x = -32)
|
||||
if (EAST)
|
||||
overlays += image ('icons/obj/railing.dmi', src, "mcorneroverlay", pixel_y = -32)
|
||||
if (WEST)
|
||||
overlays += image ('icons/obj/railing.dmi', src, "mcorneroverlay", pixel_y = 32)
|
||||
|
||||
/obj/structure/railing/verb/rotate()
|
||||
set name = "Rotate Railing Counter-Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
|
||||
return 0
|
||||
|
||||
set_dir(turn(dir, 90))
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/railing/verb/revrotate()
|
||||
set name = "Rotate Railing Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
|
||||
return 0
|
||||
|
||||
set_dir(turn(dir, -90))
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/railing/verb/flip() // This will help push railing to remote places, such as open space turfs
|
||||
set name = "Flip Railing"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor therefore you can't flip it!")
|
||||
return 0
|
||||
|
||||
var/obj/occupied = neighbor_turf_impassable()
|
||||
if(occupied)
|
||||
to_chat(usr, "You can't flip \the [src] because there's \a [occupied] in the way.")
|
||||
return 0
|
||||
|
||||
src.loc = get_step(src, src.dir)
|
||||
set_dir(turn(dir, 180))
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/railing/CheckExit(atom/movable/O as mob|obj, target as turf)
|
||||
if(istype(O) && O.checkpass(PASSTABLE))
|
||||
return 1
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/railing/attackby(obj/item/W as obj, mob/user as mob)
|
||||
// Dismantle
|
||||
if(istype(W, /obj/item/weapon/wrench) && !anchored)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20, src))
|
||||
user.visible_message("<span class='notice'>\The [user] dismantles \the [src].</span>", "<span class='notice'>You dismantle \the [src].</span>")
|
||||
new /obj/item/stack/material/steel(get_turf(usr), 2)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
// Repair
|
||||
if(health < maxhealth && istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/F = W
|
||||
if(F.welding)
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
if(do_after(user, 20, src))
|
||||
user.visible_message("<span class='notice'>\The [user] repairs some damage to \the [src].</span>", "<span class='notice'>You repair some damage to \the [src].</span>")
|
||||
health = min(health+(maxhealth/5), maxhealth) // 20% repair per application
|
||||
return
|
||||
|
||||
// Install
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user.visible_message(anchored ? "<span class='notice'>\The [user] begins unscrewing \the [src].</span>" : "<span class='notice'>\The [user] begins fasten \the [src].</span>" )
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
|
||||
if(do_after(user, 10, src))
|
||||
to_chat(user, (anchored ? "<span class='notice'>You have unfastened \the [src] from the floor.</span>" : "<span class='notice'>You have fastened \the [src] to the floor.</span>"))
|
||||
anchored = !anchored
|
||||
update_icon()
|
||||
return
|
||||
|
||||
// Handle harm intent grabbing/tabling.
|
||||
if(istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
||||
var/obj/item/weapon/grab/G = W
|
||||
if (istype(G.affecting, /mob/living))
|
||||
var/mob/living/M = G.affecting
|
||||
var/obj/occupied = turf_is_crowded()
|
||||
if(occupied)
|
||||
to_chat(user, "<span class='danger'>There's \a [occupied] in the way.</span>")
|
||||
return
|
||||
if (G.state < 2)
|
||||
if(user.a_intent == I_HURT)
|
||||
if (prob(15)) M.Weaken(5)
|
||||
M.apply_damage(8,def_zone = "head")
|
||||
take_damage(8)
|
||||
visible_message("<span class='danger'>[G.assailant] slams [G.affecting]'s face against \the [src]!</span>")
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 50, 1)
|
||||
else
|
||||
to_chat(user, "<span class='danger'>You need a better grip to do that!</span>")
|
||||
return
|
||||
else
|
||||
if (get_turf(G.affecting) == get_turf(src))
|
||||
G.affecting.forceMove(get_step(src, src.dir))
|
||||
else
|
||||
G.affecting.forceMove(get_turf(src))
|
||||
G.affecting.Weaken(5)
|
||||
visible_message("<span class='danger'>[G.assailant] throws [G.affecting] over \the [src]!</span>")
|
||||
qdel(W)
|
||||
return
|
||||
|
||||
else
|
||||
playsound(loc, 'sound/effects/grillehit.ogg', 50, 1)
|
||||
take_damage(W.force)
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/structure/railing/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
// Duplicated from structures.dm, but its a bit different.
|
||||
/obj/structure/railing/do_climb(var/mob/living/user)
|
||||
if(!can_climb(user))
|
||||
return
|
||||
|
||||
usr.visible_message("<span class='warning'>[user] starts climbing onto \the [src]!</span>")
|
||||
climbers |= user
|
||||
|
||||
if(!do_after(user,(issmall(user) ? 20 : 34)))
|
||||
climbers -= user
|
||||
return
|
||||
|
||||
if(!can_climb(user, post_climb_check=1))
|
||||
climbers -= user
|
||||
return
|
||||
|
||||
if(get_turf(user) == get_turf(src))
|
||||
usr.forceMove(get_step(src, src.dir))
|
||||
else
|
||||
usr.forceMove(get_turf(src))
|
||||
|
||||
usr.visible_message("<span class='warning'>[user] climbed over \the [src]!</span>")
|
||||
if(!anchored) take_damage(maxhealth) // Fatboy
|
||||
climbers -= user
|
||||
|
||||
/obj/structure/railing/can_climb(var/mob/living/user, post_climb_check=0)
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
// Normal can_climb() handles climbing from adjacent turf onto our turf. But railings also allow climbing
|
||||
// from our turf onto an adjacent! If that is the case we need to do checks for that too...
|
||||
if(get_turf(user) == get_turf(src))
|
||||
var/obj/occupied = neighbor_turf_impassable()
|
||||
if(occupied)
|
||||
to_chat(user, "<span class='danger'>You can't climb there, there's \a [occupied] in the way.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
// TODO - This here might require some investigation
|
||||
/obj/structure/proc/neighbor_turf_impassable()
|
||||
var/turf/T = get_step(src, src.dir)
|
||||
if(!T || !istype(T))
|
||||
return 0
|
||||
if(T.density == 1)
|
||||
return T
|
||||
for(var/obj/O in T.contents)
|
||||
if(istype(O,/obj/structure))
|
||||
var/obj/structure/S = O
|
||||
if(S.climbable) continue
|
||||
if(O && O.density && !(O.flags & ON_BORDER && !(turn(O.dir, 180) & dir)))
|
||||
return O
|
||||
@@ -304,6 +304,20 @@
|
||||
desc = "A direction sign, pointing out which way the Cargo department is."
|
||||
icon_state = "direction_crg"
|
||||
|
||||
// VOREStation Edit - New signs for us
|
||||
/obj/structure/sign/directions/command
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "\improper Command department"
|
||||
desc = "A direction sign, pointing out which way the Command department is."
|
||||
icon_state = "direction_cmd"
|
||||
|
||||
/obj/structure/sign/directions/elevator
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "\improper Space Elevator"
|
||||
desc = "A direction sign, pointing out which way the Space Elevator is."
|
||||
icon_state = "direction_elv"
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/structure/sign/christmas/lights
|
||||
name = "Christmas lights"
|
||||
desc = "Flashy and pretty."
|
||||
@@ -315,3 +329,341 @@
|
||||
desc = "Prickly and festive."
|
||||
icon = 'icons/obj/christmas.dmi'
|
||||
icon_state = "doorwreath"
|
||||
|
||||
//Eris signs
|
||||
|
||||
/obj/structure/sign/ironhammer
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "Ironhammer Security"
|
||||
desc = "Sign depicts the symbolic of Ironhammer Security, the largest security provider within Trade Union of Hansa."
|
||||
icon_state = "ironhammer"
|
||||
|
||||
/obj/structure/sign/atmos_co2
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "CO2 warning sign"
|
||||
desc = "WARNING! CO2 flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_co2"
|
||||
|
||||
/obj/structure/sign/atmos_n2o
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "N2O warning sign"
|
||||
desc = "WARNING! N2O flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_n2o"
|
||||
|
||||
/obj/structure/sign/atmos_plasma
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "Plasma warning sign"
|
||||
desc = "WARNING! Plasma flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_plasma"
|
||||
|
||||
/obj/structure/sign/atmos_n2
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "N2 warning sign"
|
||||
desc = "WARNING! N2 flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_n2"
|
||||
|
||||
/obj/structure/sign/atmos_o2
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "O2 warning sign"
|
||||
desc = "WARNING! O2 flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_o2"
|
||||
|
||||
/obj/structure/sign/atmos_air
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "Air warning sign"
|
||||
desc = "WARNING! Air flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_air"
|
||||
|
||||
/obj/structure/sign/atmos_waste
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "Atmos waste warning sign"
|
||||
desc = "WARNING! Waste flow tube. Ensure the flow is disengaged before working."
|
||||
icon_state = "atmos_waste"
|
||||
|
||||
/obj/structure/sign/deck1
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'DECK I'."
|
||||
name = "DECK I"
|
||||
icon_state = "deck1"
|
||||
|
||||
/obj/structure/sign/deck2
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'DECK II'."
|
||||
name = "DECK II"
|
||||
icon_state = "deck2"
|
||||
|
||||
/obj/structure/sign/deck3
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'DECK III'."
|
||||
name = "DECK III"
|
||||
icon_state = "deck3"
|
||||
|
||||
/obj/structure/sign/deck4
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'DECK IV'."
|
||||
name = "DECK IV"
|
||||
icon_state = "deck4"
|
||||
|
||||
/obj/structure/sign/sec1
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'SECTION I'."
|
||||
name = "SECTION I"
|
||||
icon_state = "sec1"
|
||||
|
||||
/obj/structure/sign/sec2
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'SECTION II'."
|
||||
name = "SECTION II"
|
||||
icon_state = "sec2"
|
||||
|
||||
/obj/structure/sign/sec3
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'SECTION III'."
|
||||
name = "SECTION III"
|
||||
icon_state = "sec3"
|
||||
|
||||
/obj/structure/sign/sec4
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
desc = "A silver sign which reads 'SECTION IV'."
|
||||
name = "SECTION IV"
|
||||
icon_state = "sec4"
|
||||
|
||||
/obj/structure/sign/nanotrasen
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "\improper NanoTrasen"
|
||||
desc = "An old metal sign which reads 'NanoTrasen'."
|
||||
icon_state = "NT"
|
||||
|
||||
// Eris standards compliant hazards
|
||||
/obj/structure/sign/signnew
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
|
||||
/obj/structure/sign/signnew/biohazard
|
||||
name = "BIOLOGICAL HAZARD"
|
||||
desc = "Warning: Biological and-or toxic hazards present in this area!"
|
||||
icon_state = "biohazard"
|
||||
|
||||
/obj/structure/sign/signnew/corrosives
|
||||
name = "CORROSIVE SUBSTANCES"
|
||||
desc = "Warning: Corrosive substances prezent in this area!"
|
||||
icon_state = "corrosives"
|
||||
|
||||
/obj/structure/sign/signnew/explosives
|
||||
name = "EXPLOSIVE SUBSTANCES"
|
||||
desc = "Warning: Explosive substances present in this area!"
|
||||
icon_state = "explosives"
|
||||
|
||||
/obj/structure/sign/signnew/flammables
|
||||
name = "FLAMMABLE SUBSTANCES"
|
||||
desc = "Warning: Flammable substances present in this area!"
|
||||
icon_state = "flammable"
|
||||
|
||||
/obj/structure/sign/signnew/laserhazard
|
||||
name = "LASER HAZARD"
|
||||
desc = "Warning: High powered laser emitters operating in this area!"
|
||||
icon_state = "laser"
|
||||
|
||||
/obj/structure/sign/signnew/danger
|
||||
name = "DANGEROUS AREA"
|
||||
desc = "Warning: Generally hazardous area! Exercise caution."
|
||||
icon_state = "danger"
|
||||
|
||||
/obj/structure/sign/signnew/magnetics
|
||||
name = "MAGNETIC FIELD HAZARD"
|
||||
desc = "Warning: Extremely powerful magnetic fields present in this area!"
|
||||
icon_state = "magnetics"
|
||||
|
||||
/obj/structure/sign/signnew/opticals
|
||||
name = "OPTICAL HAZARD"
|
||||
desc = "Warning: Optical hazards present in this area!"
|
||||
icon_state = "optical"
|
||||
|
||||
/obj/structure/sign/signnew/radiation
|
||||
name = "RADIATION HAZARD"
|
||||
desc = "Warning: Significant levels of radiation present in this area!"
|
||||
icon_state = "radiation"
|
||||
|
||||
/obj/structure/sign/signnew/secure
|
||||
name = "SECURE AREA"
|
||||
desc = "Warning: Secure Area! Do not enter without authorization!"
|
||||
icon_state = "secure"
|
||||
|
||||
/obj/structure/sign/signnew/electrical
|
||||
name = "ELECTRICAL HAZARD"
|
||||
desc = "Warning: Electrical hazards! Wear protective equipment."
|
||||
icon_state = "electrical"
|
||||
|
||||
/obj/structure/sign/signnew/cryogenics
|
||||
name = "CRYOGENIC TEMPERATURES"
|
||||
desc = "Warning: Extremely low temperatures in this area."
|
||||
icon_state = "cryogenics"
|
||||
|
||||
/obj/structure/sign/signnew/canisters
|
||||
name = "PRESSURIZED CANISTERS"
|
||||
desc = "Warning: Highly pressurized canister storage."
|
||||
icon_state = "canisters"
|
||||
|
||||
/obj/structure/sign/signnew/oxidants
|
||||
name = "OXIDIZING AGENTS"
|
||||
desc = "Warning: Oxidizing agents in this area, do not start fires!"
|
||||
icon_state = "oxidants"
|
||||
|
||||
/obj/structure/sign/signnew/memetic
|
||||
name = "MEMETIC HAZARD"
|
||||
desc = "Warning: Memetic hazard, wear meson goggles!"
|
||||
icon_state = "memetic"
|
||||
|
||||
//Eris departments
|
||||
|
||||
/obj/structure/sign/department
|
||||
icon = 'icons/obj/decals_vr.dmi'
|
||||
name = "department sign"
|
||||
desc = "Sign of some important ship compartment."
|
||||
|
||||
/obj/structure/sign/department/medbay
|
||||
name = "MEDBAY"
|
||||
icon_state = "medbay"
|
||||
|
||||
/obj/structure/sign/department/virology
|
||||
name = "VIROLOGY"
|
||||
icon_state = "virology"
|
||||
|
||||
/obj/structure/sign/department/chem
|
||||
name = "CHEMISTRY"
|
||||
icon_state = "chem"
|
||||
|
||||
/obj/structure/sign/department/gene
|
||||
name = "GENETICS"
|
||||
icon_state = "gene"
|
||||
|
||||
/obj/structure/sign/department/morgue
|
||||
name = "MORGUE"
|
||||
icon_state = "morgue"
|
||||
|
||||
/obj/structure/sign/department/operational
|
||||
name = "SURGERY"
|
||||
icon_state = "operational"
|
||||
|
||||
/obj/structure/sign/department/sci
|
||||
name = "SCIENCE"
|
||||
icon_state = "sci"
|
||||
|
||||
/obj/structure/sign/department/xenolab
|
||||
name = "XENOLAB"
|
||||
icon_state = "xenolab"
|
||||
|
||||
/obj/structure/sign/department/anomaly
|
||||
name = "ANOMALYLAB"
|
||||
icon_state = "anomaly"
|
||||
|
||||
/obj/structure/sign/department/dock
|
||||
name = "DOKUCHAYEV DOCK"
|
||||
icon_state = "dock"
|
||||
|
||||
/obj/structure/sign/department/rnd
|
||||
name = "RND"
|
||||
icon_state = "rnd"
|
||||
|
||||
/obj/structure/sign/department/robo
|
||||
name = "ROBOTICS"
|
||||
icon_state = "robo"
|
||||
|
||||
/obj/structure/sign/department/toxins
|
||||
name = "TOXINS"
|
||||
icon_state = "toxins"
|
||||
|
||||
/obj/structure/sign/department/toxin_res
|
||||
name = "TOXINLAB"
|
||||
icon_state = "toxin_res"
|
||||
|
||||
/obj/structure/sign/department/eva
|
||||
name = "E.V.A."
|
||||
icon_state = "eva"
|
||||
|
||||
/obj/structure/sign/department/ass
|
||||
name = "TOOL STORAGE"
|
||||
icon_state = "ass"
|
||||
|
||||
/obj/structure/sign/department/bar
|
||||
name = "BAR"
|
||||
icon_state = "bar"
|
||||
|
||||
/obj/structure/sign/department/biblio
|
||||
name = "LIBRARY"
|
||||
icon_state = "biblio"
|
||||
|
||||
/obj/structure/sign/department/chapel
|
||||
name = "CHAPEL"
|
||||
icon_state = "chapel"
|
||||
|
||||
/obj/structure/sign/department/bridge
|
||||
name = "BRIDGE"
|
||||
icon_state = "bridge"
|
||||
|
||||
/obj/structure/sign/department/telecoms
|
||||
name = "TELECOMS"
|
||||
icon_state = "telecoms"
|
||||
|
||||
/obj/structure/sign/department/conference_room
|
||||
name = "CONFERENCE"
|
||||
icon_state = "conference_room"
|
||||
|
||||
/obj/structure/sign/department/ai
|
||||
name = "AI"
|
||||
icon_state = "ai"
|
||||
|
||||
/obj/structure/sign/department/cargo
|
||||
name = "CARGO"
|
||||
icon_state = "cargo"
|
||||
|
||||
/obj/structure/sign/department/mail
|
||||
name = "MAIL"
|
||||
icon_state = "mail"
|
||||
|
||||
/obj/structure/sign/department/miner_dock
|
||||
name = "MINING DOCK"
|
||||
icon_state = "miner_dock"
|
||||
|
||||
/obj/structure/sign/department/cargo_dock
|
||||
name = "CARGO DOCK"
|
||||
icon_state = "cargo_dock"
|
||||
|
||||
/obj/structure/sign/department/eng
|
||||
name = "ENGINEERING"
|
||||
icon_state = "eng"
|
||||
|
||||
/obj/structure/sign/department/engine
|
||||
name = "ENGINE"
|
||||
icon_state = "engine"
|
||||
|
||||
/obj/structure/sign/department/gravi
|
||||
name = "GRAVGEN"
|
||||
icon_state = "gravi"
|
||||
|
||||
/obj/structure/sign/department/atmos
|
||||
name = "ATMOSPHERICS"
|
||||
icon_state = "atmos"
|
||||
|
||||
/obj/structure/sign/department/shield
|
||||
name = "SHIELDGEN"
|
||||
icon_state = "shield"
|
||||
|
||||
/obj/structure/sign/department/drones
|
||||
name = "DRONES"
|
||||
icon_state = "drones"
|
||||
|
||||
/obj/structure/sign/department/interrogation
|
||||
name = "INTERROGATION"
|
||||
icon_state = "interrogation"
|
||||
|
||||
/obj/structure/sign/department/commander
|
||||
name = "COMMANDER"
|
||||
icon_state = "commander"
|
||||
|
||||
/obj/structure/sign/department/armory
|
||||
name = "ARMORY"
|
||||
icon_state = "armory"
|
||||
|
||||
/obj/structure/sign/department/prison
|
||||
name = "PRISON"
|
||||
icon_state = "prison"
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/material/material
|
||||
var/material/padding_material
|
||||
var/base_icon = "bed"
|
||||
var/applies_material_colour = 1 //VOREStation Add - For special color beds/chairs
|
||||
|
||||
/obj/structure/bed/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc)
|
||||
@@ -45,8 +46,9 @@
|
||||
// Base icon.
|
||||
var/cache_key = "[base_icon]-[material.name]"
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image('icons/obj/furniture.dmi', base_icon)
|
||||
I.color = material.icon_colour
|
||||
var/image/I = image(icon, base_icon) //VOREStation Edit
|
||||
if(applies_material_colour) //VOREStation Add - Goes with added var
|
||||
I.color = material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
overlays |= stool_cache[cache_key]
|
||||
// Padding overlay.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/bed/chair //YES, chairs are a type of bed, which are a type of stool. This works, believe me. -Pete
|
||||
name = "chair"
|
||||
desc = "You sit in this. Either by will or force."
|
||||
icon = 'icons/obj/furniture_vr.dmi' //VOREStation Edit - Using Eris furniture
|
||||
icon_state = "chair_preview"
|
||||
color = "#666666"
|
||||
base_icon = "chair"
|
||||
@@ -82,6 +83,15 @@
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
return
|
||||
|
||||
//VOREStation Add - Shuttle Chair
|
||||
/obj/structure/bed/chair/shuttle
|
||||
name = "chair"
|
||||
desc = "You sit in this. Either by will or force."
|
||||
icon_state = "shuttle_chair"
|
||||
color = null
|
||||
base_icon = "shuttle_chair"
|
||||
applies_material_colour = 0
|
||||
//VOREStation Add End
|
||||
// Leaving this in for the sake of compilation.
|
||||
/obj/structure/bed/chair/comfy
|
||||
desc = "It's a chair. It looks comfy."
|
||||
|
||||
@@ -4,7 +4,7 @@ var/global/list/stool_cache = list() //haha stool
|
||||
/obj/item/weapon/stool
|
||||
name = "stool"
|
||||
desc = "Apply butt."
|
||||
icon = 'icons/obj/furniture.dmi'
|
||||
icon = 'icons/obj/furniture_vr.dmi' //VOREStation Edit - new Icons
|
||||
icon_state = "stool_preview" //set for the map
|
||||
force = 10
|
||||
throwforce = 10
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/structure/window
|
||||
name = "window"
|
||||
desc = "A window."
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons
|
||||
density = 1
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
|
||||
Reference in New Issue
Block a user