mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-30 00:35:45 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac-voreupdate
All conflicts resolved Signed-off-by: izac112 <izac10@live.com>
This commit is contained in:
@@ -14,16 +14,16 @@
|
||||
. -= "Off"
|
||||
|
||||
/obj/structure/sign/double/barsign/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
switch(icon_state)
|
||||
if("Off")
|
||||
to_chat(user, "It appears to be switched off.")
|
||||
. += "It appears to be switched off."
|
||||
if("narsiebistro")
|
||||
to_chat(user, "It shows a picture of a large black and red being. Spooky!")
|
||||
. += "It shows a picture of a large black and red being. Spooky!"
|
||||
if("on", "empty")
|
||||
to_chat(user, "The lights are on, but there's no picture.")
|
||||
. += "The lights are on, but there's no picture."
|
||||
else
|
||||
to_chat(user, "It says '[icon_state]'")
|
||||
. += "It says '[icon_state]'"
|
||||
|
||||
/obj/structure/sign/double/barsign/New()
|
||||
..()
|
||||
|
||||
@@ -170,16 +170,14 @@ LINEN BINS
|
||||
|
||||
|
||||
/obj/structure/bedsheetbin/examine(mob/user)
|
||||
..(user)
|
||||
. = ..()
|
||||
|
||||
if(amount < 1)
|
||||
to_chat(user, "There are no bed sheets in the bin.")
|
||||
return
|
||||
if(amount == 1)
|
||||
to_chat(user, "There is one bed sheet in the bin.")
|
||||
return
|
||||
to_chat(user, "There are [amount] bed sheets in the bin.")
|
||||
|
||||
. += "There are no bed sheets in the bin."
|
||||
else if(amount == 1)
|
||||
. += "There is one bed sheet in the bin."
|
||||
else
|
||||
. += "There are [amount] bed sheets in the bin."
|
||||
|
||||
/obj/structure/bedsheetbin/update_icon()
|
||||
switch(amount)
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/obj/item/weapon/bedsheet/cosmos
|
||||
icon = 'icons/obj/items_vr.dmi'
|
||||
icon_state = "sheetcosmos"
|
||||
|
||||
/obj/item/weapon/bedsheet/cosmosdouble
|
||||
icon = 'icons/obj/items_vr.dmi'
|
||||
icon_state = "doublesheetcosmos"
|
||||
|
||||
/obj/item/weapon/bedsheet/pirate
|
||||
icon = 'icons/obj/items_vr.dmi'
|
||||
icon_state = "sheetpirate"
|
||||
|
||||
/obj/item/weapon/bedsheet/piratedouble
|
||||
icon = 'icons/obj/items_vr.dmi'
|
||||
icon_state = "doublesheetpirate"
|
||||
@@ -1,102 +1,119 @@
|
||||
// Based on catwalk.dm from https://github.com/Endless-Horizon/CEV-Eris
|
||||
/obj/structure/catwalk
|
||||
name = "catwalk"
|
||||
desc = "Cats really don't like these things."
|
||||
plane = DECAL_PLANE
|
||||
layer = ABOVE_UTILITY
|
||||
icon = 'icons/turf/catwalks.dmi'
|
||||
icon_state = "catwalk"
|
||||
plane = DECAL_PLANE
|
||||
layer = ABOVE_UTILITY
|
||||
density = 0
|
||||
anchored = 1.0
|
||||
var/hatch_open = FALSE
|
||||
var/plating_color = null
|
||||
var/obj/item/stack/tile/plated_tile = null
|
||||
var/static/plating_colors = list(
|
||||
/obj/item/stack/tile/floor = "#858a8f",
|
||||
/obj/item/stack/tile/floor/dark = "#4f4f4f",
|
||||
/obj/item/stack/tile/floor/white = "#e8e8e8")
|
||||
var/health = 100
|
||||
var/maxhealth = 100
|
||||
anchored = 1.0
|
||||
|
||||
/obj/structure/catwalk/Initialize()
|
||||
. = ..()
|
||||
for(var/obj/structure/catwalk/O in range(1))
|
||||
O.update_icon()
|
||||
for(var/obj/structure/catwalk/C in get_turf(src))
|
||||
if(C != src)
|
||||
warning("Duplicate [type] in [loc] ([x], [y], [z])")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
qdel(C)
|
||||
update_connections(1)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/structure/catwalk/Destroy()
|
||||
var/turf/location = loc
|
||||
. = ..()
|
||||
location.alpha = initial(location.alpha)
|
||||
for(var/obj/structure/catwalk/L in orange(location, 1))
|
||||
L.update_icon()
|
||||
redraw_nearby_catwalks()
|
||||
update_falling()
|
||||
return ..()
|
||||
|
||||
/obj/structure/catwalk/proc/update_falling()
|
||||
spawn(1) //We get called in Destroy() and things. We might not be gone yet, so let's just put this off.
|
||||
if(istype(loc, /turf/simulated/open))
|
||||
var/turf/simulated/open/O = loc
|
||||
O.update() //Will cause anything on the open turf to fall if it should
|
||||
|
||||
/obj/structure/catwalk/proc/redraw_nearby_catwalks()
|
||||
for(var/direction in alldirs)
|
||||
var/obj/structure/catwalk/L = locate() in get_step(src, direction)
|
||||
if(L)
|
||||
L.update_connections()
|
||||
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]"
|
||||
|
||||
update_connections()
|
||||
cut_overlays()
|
||||
icon_state = ""
|
||||
var/image/I
|
||||
if(!hatch_open)
|
||||
for(var/i = 1 to 4)
|
||||
I = image(icon, "catwalk[connections[i]]", dir = 1<<(i-1))
|
||||
add_overlay(I)
|
||||
if(plating_color)
|
||||
I = image(icon, "plated")
|
||||
I.color = plating_color
|
||||
add_overlay(I)
|
||||
|
||||
/obj/structure/catwalk/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
if(1)
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if(2)
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
qdel(src)
|
||||
if(3.0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/catwalk/attack_robot(var/mob/user)
|
||||
if(Adjacent(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/structure/catwalk/proc/deconstruct(mob/user)
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
to_chat(user, "<span class='notice'>Slicing \the [src] joints ...</span>")
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
//Lattice would delete itself, but let's save ourselves a new obj
|
||||
if(istype(src.loc, /turf/space) || istype(src.loc, /turf/simulated/open))
|
||||
new /obj/structure/lattice/(src.loc)
|
||||
if(plated_tile)
|
||||
new plated_tile(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/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)
|
||||
if(C.is_screwdriver())
|
||||
if(health < maxhealth)
|
||||
to_chat(user, "<span class='notice'>You begin repairing \the [src.name] with \the [C.name].</span>")
|
||||
if(do_after(user, 20, src))
|
||||
health = maxhealth
|
||||
else
|
||||
take_damage(C.force)
|
||||
user.setClickCooldown(user.get_attack_speed(C))
|
||||
return ..()
|
||||
if(C.is_crowbar() && plated_tile)
|
||||
hatch_open = !hatch_open
|
||||
if(hatch_open)
|
||||
playsound(src, 'sound/items/Crowbar.ogg', 100, 2)
|
||||
to_chat(user, "<span class='notice'>You pry open \the [src]'s maintenance hatch.</span>")
|
||||
update_falling()
|
||||
else
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 100, 2)
|
||||
to_chat(user, "<span class='notice'>You shut \the [src]'s maintenance hatch.</span>")
|
||||
update_icon()
|
||||
return
|
||||
if(istype(C, /obj/item/stack/tile/floor) && !plated_tile)
|
||||
var/obj/item/stack/tile/floor/ST = C
|
||||
to_chat(user, "<span class='notice'>Placing tile...</span>")
|
||||
if (!do_after(user, 10))
|
||||
return
|
||||
if(!ST.use(1))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You plate \the [src]</span>")
|
||||
name = "plated catwalk"
|
||||
plated_tile = C.type
|
||||
src.add_fingerprint(user)
|
||||
for(var/tiletype in plating_colors)
|
||||
if(istype(ST, tiletype))
|
||||
plating_color = plating_colors[tiletype]
|
||||
update_icon()
|
||||
|
||||
/obj/structure/catwalk/Crossed()
|
||||
. = ..()
|
||||
if(isliving(usr) && !usr.is_incorporeal())
|
||||
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)
|
||||
|
||||
/obj/structure/catwalk/CheckExit(atom/movable/O, turf/target)
|
||||
if(O.checkpass(PASSGRILLE))
|
||||
return 1
|
||||
if(target && target.z < src.z)
|
||||
return 0
|
||||
return 1
|
||||
/obj/structure/catwalk/refresh_neighbors()
|
||||
return
|
||||
|
||||
/obj/structure/catwalk/take_damage(amount)
|
||||
health -= amount
|
||||
@@ -104,4 +121,66 @@
|
||||
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(src))
|
||||
Destroy()
|
||||
Destroy()
|
||||
|
||||
/obj/structure/catwalk/Crossed()
|
||||
. = ..()
|
||||
if(isliving(usr) && !usr.is_incorporeal())
|
||||
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)
|
||||
|
||||
/obj/effect/catwalk_plated
|
||||
name = "plated catwalk spawner"
|
||||
icon = 'icons/turf/catwalks.dmi'
|
||||
icon_state = "catwalk_plated"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
var/activated = FALSE
|
||||
plane = DECAL_PLANE
|
||||
layer = ABOVE_UTILITY
|
||||
var/tile = /obj/item/stack/tile/floor
|
||||
var/platecolor = "#858a8f"
|
||||
|
||||
/obj/effect/catwalk_plated/Initialize(mapload)
|
||||
. = ..()
|
||||
activate()
|
||||
|
||||
/obj/effect/catwalk_plated/CanPass()
|
||||
return 0
|
||||
|
||||
/obj/effect/catwalk_plated/attack_hand()
|
||||
attack_generic()
|
||||
|
||||
/obj/effect/catwalk_plated/attack_ghost()
|
||||
attack_generic()
|
||||
|
||||
/obj/effect/catwalk_plated/attack_generic()
|
||||
activate()
|
||||
|
||||
/obj/effect/catwalk_plated/proc/activate()
|
||||
if(activated) return
|
||||
|
||||
if(locate(/obj/structure/catwalk) in loc)
|
||||
warning("Frame Spawner: A catwalk already exists at [loc.x]-[loc.y]-[loc.z]")
|
||||
else
|
||||
var/obj/structure/catwalk/C = new /obj/structure/catwalk(loc)
|
||||
C.plated_tile = tile
|
||||
C.plating_color = platecolor
|
||||
C.name = "plated catwalk"
|
||||
C.update_icon()
|
||||
activated = 1
|
||||
/* We don't have wallframes - yet
|
||||
for(var/turf/T in orange(src, 1))
|
||||
for(var/obj/effect/wallframe_spawn/other in T)
|
||||
if(!other.activated) other.activate()
|
||||
*/
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/catwalk_plated/dark
|
||||
icon_state = "catwalk_plateddark"
|
||||
tile = /obj/item/stack/tile/floor/dark
|
||||
platecolor = "#4f4f4f"
|
||||
|
||||
/obj/effect/catwalk_plated/white
|
||||
icon_state = "catwalk_platedwhite"
|
||||
tile = /obj/item/stack/tile/floor/white
|
||||
platecolor = "#e8e8e8"
|
||||
|
||||
@@ -58,24 +58,25 @@
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/examine(mob/user)
|
||||
if(!src.opened && (..(user, 1) || isobserver(user)))
|
||||
. = ..()
|
||||
if(Adjacent(user) || isobserver(user))
|
||||
var/content_size = 0
|
||||
for(var/obj/item/I in src.contents)
|
||||
if(!I.anchored)
|
||||
content_size += CEILING(I.w_class/2, 1)
|
||||
if(!content_size)
|
||||
to_chat(user, "It is empty.")
|
||||
. += "It is empty."
|
||||
else if(storage_capacity > content_size*4)
|
||||
to_chat(user, "It is barely filled.")
|
||||
. += "It is barely filled."
|
||||
else if(storage_capacity > content_size*2)
|
||||
to_chat(user, "It is less than half full.")
|
||||
. += "It is less than half full."
|
||||
else if(storage_capacity > content_size)
|
||||
to_chat(user, "There is still some free space.")
|
||||
. += "There is still some free space."
|
||||
else
|
||||
to_chat(user, "It is full.")
|
||||
. += "It is full."
|
||||
|
||||
if(!src.opened && isobserver(user))
|
||||
to_chat(user, "It contains: [counting_english_list(contents)]")
|
||||
. += "It contains: [counting_english_list(contents)]"
|
||||
|
||||
/obj/structure/closet/CanPass(atom/movable/mover, turf/target)
|
||||
if(wall_mounted)
|
||||
|
||||
@@ -161,4 +161,7 @@
|
||||
var/datum/gas_mixture/above_air = return_air()
|
||||
grave_breath.adjust_gas(gasid, BREATH_MOLES)
|
||||
grave_breath.temperature = (above_air.temperature) - 30 //Underground
|
||||
return grave_breath
|
||||
return grave_breath
|
||||
|
||||
/obj/structure/closet/grave/dirthole
|
||||
name = "hole"
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
//Gun Cabinets
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/sidearm
|
||||
name = "emergency weapon cabinet"
|
||||
req_one_access = list(access_armory,access_captain)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/gun/energy/gun = 4)
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/rifle
|
||||
name = "rifle cabinet"
|
||||
req_one_access = list(access_explorer,access_brig)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/ammo_magazine/clip/c762/hunter = 9,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2)
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/rifle/Initialize()
|
||||
if(prob(85))
|
||||
starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle
|
||||
else
|
||||
starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/secure_closet/guncabinet/phase
|
||||
name = "explorer weapon cabinet"
|
||||
req_one_access = list(access_explorer,access_brig)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/gun/energy/phasegun = 2,
|
||||
/obj/item/weapon/gun/energy/phasegun/pistol,
|
||||
/obj/item/weapon/cell/device/weapon = 2,
|
||||
/obj/item/clothing/accessory/permit/gun/planetside)
|
||||
|
||||
//Explorer Lockers
|
||||
|
||||
/obj/structure/closet/secure_closet/explorer
|
||||
name = "explorer locker"
|
||||
icon = 'icons/obj/closet_vr.dmi'
|
||||
icon_state = "secureexp1"
|
||||
icon_closed = "secureexp"
|
||||
icon_locked = "secureexp1"
|
||||
icon_opened = "secureexpopen"
|
||||
icon_broken = "secureexpbroken"
|
||||
icon_off = "secureexpoff"
|
||||
req_access = list(access_explorer)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/explorer,
|
||||
/obj/item/clothing/suit/storage/hooded/explorer,
|
||||
/obj/item/clothing/mask/gas/explorer,
|
||||
/obj/item/clothing/shoes/boots/winter/explorer,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/device/radio/headset/explorer,
|
||||
/obj/item/device/radio/headset/explorer/alt,
|
||||
/obj/item/weapon/cartridge/explorer,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/gps/explorer,
|
||||
/obj/item/weapon/storage/box/flare,
|
||||
/obj/item/device/geiger,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/stack/marker_beacon/thirty,
|
||||
/obj/item/weapon/material/knife/tacknife/survival,
|
||||
/obj/item/weapon/material/knife/machete,
|
||||
/obj/item/clothing/accessory/holster/machete,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/device/cataloguer)
|
||||
|
||||
/obj/structure/closet/secure_closet/explorer/Initialize()
|
||||
if(prob(50))
|
||||
starts_with += /obj/item/weapon/storage/backpack
|
||||
else
|
||||
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
|
||||
return ..()
|
||||
|
||||
//SAR Lockers
|
||||
|
||||
/obj/structure/closet/secure_closet/sar
|
||||
name = "field medic locker"
|
||||
desc = "Supplies for a wilderness first responder."
|
||||
icon_state = "medical1"
|
||||
icon_closed = "medical"
|
||||
icon_locked = "medical1"
|
||||
icon_opened = "medicalopen"
|
||||
icon_broken = "medicalbroken"
|
||||
icon_off = "medicaloff"
|
||||
req_access = list(access_medical_equip)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/backpack/dufflebag/emt,
|
||||
/obj/item/weapon/storage/box/autoinjectors,
|
||||
/obj/item/weapon/storage/box/syringes,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
|
||||
/obj/item/weapon/storage/belt/medical/emt,
|
||||
/obj/item/weapon/material/knife/tacknife/survival,
|
||||
/obj/item/weapon/gun/energy/locked/frontier/holdout,
|
||||
/obj/item/clothing/mask/gas/explorer,
|
||||
/obj/item/clothing/suit/storage/hooded/explorer/medic,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar,
|
||||
/obj/item/clothing/shoes/boots/winter/explorer,
|
||||
/obj/item/device/radio/headset/sar,
|
||||
/obj/item/device/radio/headset/sar/alt,
|
||||
/obj/item/weapon/cartridge/sar,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank/emergency/oxygen/engi,
|
||||
/obj/item/clothing/glasses/hud/health,
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/device/radio/off,
|
||||
/obj/random/medical,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 2,
|
||||
/obj/item/weapon/tool/crowbar,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/weapon/storage/box/freezer,
|
||||
/obj/item/clothing/accessory/storage/white_vest,
|
||||
/obj/item/taperoll/medical,
|
||||
/obj/item/device/gps/medical,
|
||||
/obj/item/device/geiger,
|
||||
/obj/item/bodybag/cryobag,
|
||||
/obj/item/device/cataloguer/compact)
|
||||
|
||||
//Pilot Locker
|
||||
|
||||
/obj/structure/closet/secure_closet/pilot
|
||||
name = "pilot locker"
|
||||
req_access = list(access_pilot)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/backpack/parachute,
|
||||
/obj/item/weapon/material/knife/tacknife/survival,
|
||||
/obj/item/weapon/gun/energy/locked/frontier/holdout,
|
||||
/obj/item/clothing/head/pilot,
|
||||
/obj/item/clothing/under/rank/pilot1,
|
||||
/obj/item/clothing/suit/storage/toggle/bomber/pilot,
|
||||
/obj/item/clothing/shoes/boots/winter/explorer,
|
||||
/obj/item/clothing/mask/gas/half,
|
||||
/obj/item/clothing/shoes/black,
|
||||
/obj/item/clothing/gloves/fingerless,
|
||||
/obj/item/device/radio/headset/pilot,
|
||||
/obj/item/device/radio/headset/pilot/alt,
|
||||
/obj/item/weapon/cartridge/explorer,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,
|
||||
/obj/item/weapon/storage/box/flare,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/gps/explorer,
|
||||
/obj/item/device/cataloguer/compact)
|
||||
|
||||
/obj/structure/closet/secure_closet/pilot/Initialize()
|
||||
if(prob(50))
|
||||
starts_with += /obj/item/weapon/storage/backpack
|
||||
else
|
||||
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/secure_closet/pathfinder
|
||||
name = "pathfinder locker"
|
||||
icon = 'icons/obj/closet_vr.dmi'
|
||||
icon_state = "secureexp1"
|
||||
icon_closed = "secureexp"
|
||||
icon_locked = "secureexp1"
|
||||
icon_opened = "secureexpopen"
|
||||
icon_broken = "secureexpbroken"
|
||||
icon_off = "secureexpoff"
|
||||
req_access = list(access_gateway)
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/under/explorer,
|
||||
/obj/item/clothing/suit/storage/hooded/explorer,
|
||||
/obj/item/clothing/mask/gas/explorer,
|
||||
/obj/item/clothing/shoes/boots/winter/explorer,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/device/radio/headset/pathfinder,
|
||||
/obj/item/device/radio/headset/pathfinder/alt,
|
||||
/obj/item/weapon/cartridge/explorer,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/gps/explorer,
|
||||
/obj/item/weapon/storage/box/flare,
|
||||
/obj/item/weapon/storage/box/explorerkeys,
|
||||
/obj/item/device/geiger,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/bluespaceradio/tether_prelinked,
|
||||
/obj/item/stack/marker_beacon/thirty,
|
||||
/obj/item/weapon/material/knife/tacknife/survival,
|
||||
/obj/item/weapon/material/knife/machete/deluxe,
|
||||
/obj/item/weapon/gun/energy/locked/frontier/carbine,
|
||||
/obj/item/clothing/accessory/holster/machete,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/device/cataloguer/compact/pathfinder)
|
||||
|
||||
/obj/structure/closet/secure_closet/pathfinder/Initialize()
|
||||
if(prob(50))
|
||||
starts_with += /obj/item/weapon/storage/backpack
|
||||
else
|
||||
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
|
||||
return ..()
|
||||
|
||||
//Exotic Seeds Crate
|
||||
|
||||
/obj/structure/closet/crate/hydroponics/exotic
|
||||
name = "exotic seeds crate"
|
||||
desc = "All you need to destroy that pesky planet."
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/seeds/random = 6,
|
||||
/obj/item/seeds/replicapod = 2,
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 2,
|
||||
/obj/item/seeds/kudzuseed,
|
||||
/obj/item/seeds/libertymycelium,
|
||||
/obj/item/seeds/reishimycelium)
|
||||
@@ -47,8 +47,8 @@
|
||||
/obj/item/clothing/under/rank/cargo/jeans,
|
||||
/obj/item/clothing/under/rank/cargo/jeans/female,
|
||||
/obj/item/clothing/shoes/brown,
|
||||
/obj/item/device/radio/headset/headset_cargo,
|
||||
/obj/item/device/radio/headset/headset_cargo/alt,
|
||||
/obj/item/device/radio/headset/headset_qm, //VOREStation Edit,
|
||||
/obj/item/device/radio/headset/headset_qm/alt, //VOREStation Edit,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/clothing/gloves/fingerless,
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
|
||||
@@ -21,32 +21,35 @@
|
||||
|
||||
/obj/structure/closet/emcloset/Initialize()
|
||||
switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10)))
|
||||
//VOREStation Block Edit Start - Modified List
|
||||
if ("small")
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tank/emergency/oxygen = 2,
|
||||
/obj/item/clothing/mask/breath = 2,
|
||||
/obj/item/clothing/suit/space/emergency,
|
||||
/obj/item/clothing/head/helmet/space/emergency)
|
||||
/obj/item/clothing/suit/space/emergency = 2,
|
||||
/obj/item/clothing/head/helmet/space/emergency = 2)
|
||||
if ("aid")
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tank/emergency/oxygen,
|
||||
/obj/item/weapon/storage/toolbox/emergency,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/weapon/storage/firstaid/o2,
|
||||
/obj/item/clothing/suit/space/emergency,
|
||||
/obj/item/clothing/head/helmet/space/emergency)
|
||||
if ("tank")
|
||||
starts_with = list(
|
||||
/obj/item/weapon/tank/emergency/oxygen/engi = 2,
|
||||
/obj/item/clothing/mask/breath = 2)
|
||||
/obj/item/clothing/mask/breath = 2,
|
||||
/obj/item/clothing/suit/space/emergency = 2,
|
||||
/obj/item/clothing/head/helmet/space/emergency = 2)
|
||||
if ("both")
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/toolbox/emergency,
|
||||
/obj/item/weapon/tank/emergency/oxygen/engi,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/weapon/storage/firstaid/o2,
|
||||
/obj/item/weapon/tank/emergency/oxygen/engi = 2,
|
||||
/obj/item/clothing/mask/breath = 2,
|
||||
/obj/item/clothing/suit/space/emergency = 2,
|
||||
/obj/item/clothing/head/helmet/space/emergency = 2)
|
||||
//VOREStation Block Edit End
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
var/paint_color = "#666666"
|
||||
|
||||
/obj/structure/vehiclecage/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(my_vehicle)
|
||||
to_chat(user, "<span class='notice'>It seems to contain \the [my_vehicle].</span>")
|
||||
. += "<span class='notice'>It seems to contain \the [my_vehicle].</span>"
|
||||
|
||||
/obj/structure/vehiclecage/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
bound_height = width * world.icon_size
|
||||
update_state()
|
||||
|
||||
Move()
|
||||
Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
if(dir in list(EAST, WEST))
|
||||
bound_width = width * world.icon_size
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
return
|
||||
if(!A.powered(EQUIP))
|
||||
return
|
||||
A.use_power(EQUIP, 5000)
|
||||
A.use_power_oneoff(5000, EQUIP)
|
||||
var/light = A.power_light
|
||||
A.updateicon()
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
|
||||
switch(hole_size)
|
||||
if(MEDIUM_HOLE)
|
||||
user.show_message("There is a large hole in \the [src].")
|
||||
. += "There is a large hole in it."
|
||||
if(LARGE_HOLE)
|
||||
user.show_message("\The [src] has been completely cut through.")
|
||||
. += "It has been completely cut through."
|
||||
|
||||
/obj/structure/fence/get_description_interaction()
|
||||
var/list/results = list()
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
flick("[icon_state]_[weight]", src)
|
||||
if(do_after(user, 20 + (weight * 10)))
|
||||
playsound(src.loc, 'sound/effects/weightdrop.ogg', 25, 1)
|
||||
user.nutrition -= weight * 10
|
||||
user.adjust_nutrition(weight * -10)
|
||||
to_chat(user, "<span class='notice'>You lift the weights [qualifiers[weight]].</span>")
|
||||
being_used = 0
|
||||
else
|
||||
|
||||
+493
-478
@@ -1,478 +1,493 @@
|
||||
|
||||
/obj/structure/flora
|
||||
name = "flora"
|
||||
desc = "A perfectly generic plant."
|
||||
|
||||
anchored = TRUE // Usually, plants don't move. Usually.
|
||||
plane = DECAL_PLANE
|
||||
layer = BELOW_MOB_LAYER
|
||||
|
||||
var/randomize_size = FALSE
|
||||
var/max_x_scale = 1.25
|
||||
var/max_y_scale = 1.25
|
||||
var/min_x_scale = 0.9
|
||||
var/min_y_scale = 0.9
|
||||
|
||||
var/harvest_tool = null // The type of item used to harvest the plant.
|
||||
var/harvest_count = 0
|
||||
|
||||
var/randomize_harvest_count = TRUE
|
||||
var/max_harvests = 0
|
||||
var/min_harvests = -1
|
||||
var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree.
|
||||
|
||||
/obj/structure/flora/Initialize()
|
||||
..()
|
||||
|
||||
if(randomize_size)
|
||||
icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100
|
||||
icon_scale_y = rand(min_y_scale * 100, max_y_scale * 100) / 100
|
||||
|
||||
if(prob(50))
|
||||
icon_scale_x *= -1
|
||||
update_transform()
|
||||
|
||||
if(randomize_harvest_count)
|
||||
max_harvests = max(0, rand(min_harvests, max_harvests)) // Incase you want to weight it more toward 'not harvestable', set min_harvests to a negative value.
|
||||
|
||||
/obj/structure/flora/examine(mob/user)
|
||||
. = ..(user)
|
||||
if(harvest_count < max_harvests)
|
||||
to_chat(user, "<span class='notice'>\The [src] seems to have something hanging from it.</span>")
|
||||
|
||||
/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if(can_harvest(W))
|
||||
var/harvest_spawn = pickweight(harvest_loot)
|
||||
var/atom/movable/AM = spawn_harvest(harvest_spawn, user)
|
||||
|
||||
if(!AM)
|
||||
to_chat(user, "<span class='notice'>You fail to harvest anything from \the [src].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You harvest \the [AM] from \the [src].</span>")
|
||||
return
|
||||
|
||||
..(W, user)
|
||||
|
||||
/obj/structure/flora/proc/can_harvest(var/obj/item/I)
|
||||
. = FALSE
|
||||
if(harvest_tool && istype(I, harvest_tool) && harvest_loot && harvest_loot.len && harvest_count < max_harvests)
|
||||
. = TRUE
|
||||
return .
|
||||
|
||||
/obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null)
|
||||
if(!ispath(path))
|
||||
return 0
|
||||
var/turf/Target = get_turf(src)
|
||||
if(user)
|
||||
Target = get_turf(user)
|
||||
|
||||
var/atom/movable/AM = new path(Target)
|
||||
|
||||
harvest_count++
|
||||
return AM
|
||||
|
||||
//bushes
|
||||
/obj/structure/flora/bush
|
||||
name = "bush"
|
||||
icon = 'icons/obj/flora/snowflora.dmi'
|
||||
icon_state = "snowbush1"
|
||||
|
||||
/obj/structure/flora/bush/New()
|
||||
..()
|
||||
icon_state = "snowbush[rand(1, 6)]"
|
||||
|
||||
/obj/structure/flora/pottedplant
|
||||
name = "potted plant"
|
||||
desc = "Really ties the room together."
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon_state = "plant-26"
|
||||
|
||||
anchored = FALSE
|
||||
|
||||
//newbushes
|
||||
|
||||
/obj/structure/flora/ausbushes
|
||||
name = "bush"
|
||||
icon = 'icons/obj/flora/ausflora.dmi'
|
||||
icon_state = "firstbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/New()
|
||||
..()
|
||||
icon_state = "firstbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/reedbush
|
||||
icon_state = "reedbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/reedbush/New()
|
||||
..()
|
||||
icon_state = "reedbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/leafybush
|
||||
icon_state = "leafybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/leafybush/New()
|
||||
..()
|
||||
icon_state = "leafybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/palebush
|
||||
icon_state = "palebush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/palebush/New()
|
||||
..()
|
||||
icon_state = "palebush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/stalkybush
|
||||
icon_state = "stalkybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/stalkybush/New()
|
||||
..()
|
||||
icon_state = "stalkybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/grassybush
|
||||
icon_state = "grassybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/grassybush/New()
|
||||
..()
|
||||
icon_state = "grassybush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/fernybush
|
||||
icon_state = "fernybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/fernybush/New()
|
||||
..()
|
||||
icon_state = "fernybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/sunnybush
|
||||
icon_state = "sunnybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/sunnybush/New()
|
||||
..()
|
||||
icon_state = "sunnybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/genericbush
|
||||
icon_state = "genericbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/genericbush/New()
|
||||
..()
|
||||
icon_state = "genericbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/pointybush
|
||||
icon_state = "pointybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/pointybush/New()
|
||||
..()
|
||||
icon_state = "pointybush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/lavendergrass
|
||||
icon_state = "lavendergrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/lavendergrass/New()
|
||||
..()
|
||||
icon_state = "lavendergrass_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/ywflowers
|
||||
icon_state = "ywflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/ywflowers/New()
|
||||
..()
|
||||
icon_state = "ywflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/brflowers
|
||||
icon_state = "brflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/brflowers/New()
|
||||
..()
|
||||
icon_state = "brflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/ppflowers
|
||||
icon_state = "ppflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/ppflowers/New()
|
||||
..()
|
||||
icon_state = "ppflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/sparsegrass
|
||||
icon_state = "sparsegrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/sparsegrass/New()
|
||||
..()
|
||||
icon_state = "sparsegrass_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/fullgrass
|
||||
icon_state = "fullgrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/fullgrass/New()
|
||||
..()
|
||||
icon_state = "fullgrass_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/skeleton
|
||||
name = "hanging skeleton model"
|
||||
icon = 'icons/obj/plants.dmi' //what an interesting plant
|
||||
icon_state = "hangskele"
|
||||
desc = "It's an anatomical model of a human skeletal system made of plaster."
|
||||
|
||||
plane = OBJ_PLANE
|
||||
|
||||
//potted plants credit: Flashkirby
|
||||
/obj/structure/flora/pottedplant
|
||||
name = "potted plant"
|
||||
desc = "Really brings the room together."
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon_state = "plant-01"
|
||||
|
||||
plane = OBJ_PLANE
|
||||
var/obj/item/stored_item
|
||||
|
||||
/obj/structure/flora/pottedplant/examine(mob/user)
|
||||
..()
|
||||
if(in_range(user, src) && stored_item)
|
||||
to_chat(user, "<i>You can see something in there...</i>")
|
||||
|
||||
/obj/structure/flora/pottedplant/attackby(obj/item/I, mob/user)
|
||||
if(stored_item)
|
||||
to_chat(user, "<span class='notice'>[I] won't fit in. There already appears to be something in here...</span>")
|
||||
return
|
||||
|
||||
if(I.w_class > ITEMSIZE_TINY)
|
||||
to_chat(user, "<span class='notice'>[I] is too big to fit inside [src].</span>")
|
||||
return
|
||||
|
||||
if(do_after(user, 10))
|
||||
user.drop_from_inventory(I, src)
|
||||
I.forceMove(src)
|
||||
stored_item = I
|
||||
src.visible_message("\icon[src] \icon[I] [user] places [I] into [src].")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You refrain from putting things into the plant pot.</span>")
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/flora/pottedplant/attack_hand(mob/user)
|
||||
if(!stored_item)
|
||||
to_chat(user, "<b>You see nothing of interest in [src]...</b>")
|
||||
else
|
||||
if(do_after(user, 10))
|
||||
to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!")
|
||||
stored_item.forceMove(get_turf(src))
|
||||
stored_item = null
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/flora/pottedplant/large
|
||||
name = "large potted plant"
|
||||
desc = "This is a large plant. Three branches support pairs of waxy leaves."
|
||||
icon_state = "plant-26"
|
||||
|
||||
/obj/structure/flora/pottedplant/fern
|
||||
name = "potted fern"
|
||||
desc = "This is an ordinary looking fern. It looks like it could do with some water."
|
||||
icon_state = "plant-02"
|
||||
|
||||
/obj/structure/flora/pottedplant/overgrown
|
||||
name = "overgrown potted plants"
|
||||
desc = "This is an assortment of colourful plants. Some parts are overgrown."
|
||||
icon_state = "plant-03"
|
||||
|
||||
/obj/structure/flora/pottedplant/bamboo
|
||||
name = "potted bamboo"
|
||||
desc = "These are bamboo shoots. The tops looks like they've been cut short."
|
||||
icon_state = "plant-04"
|
||||
|
||||
/obj/structure/flora/pottedplant/largebush
|
||||
name = "large potted bush"
|
||||
desc = "This is a large bush. The leaves stick upwards in an odd fashion."
|
||||
icon_state = "plant-05"
|
||||
|
||||
/obj/structure/flora/pottedplant/thinbush
|
||||
name = "thin potted bush"
|
||||
desc = "This is a thin bush. It appears to be flowering."
|
||||
icon_state = "plant-06"
|
||||
|
||||
/obj/structure/flora/pottedplant/mysterious
|
||||
name = "mysterious potted bulbs"
|
||||
desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink."
|
||||
icon_state = "plant-07"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
|
||||
/obj/structure/flora/pottedplant/smalltree
|
||||
name = "small potted tree"
|
||||
desc = "This is a small tree. It is rather pleasant."
|
||||
icon_state = "plant-08"
|
||||
|
||||
/obj/structure/flora/pottedplant/unusual
|
||||
name = "unusual potted plant"
|
||||
desc = "This is an unusual plant. It's bulbous ends emit a soft blue light."
|
||||
icon_state = "plant-09"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#33CCFF"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree)
|
||||
|
||||
/obj/structure/flora/pottedplant/orientaltree
|
||||
name = "potted oriental tree"
|
||||
desc = "This is a rather oriental style tree. Its flowers are bright pink."
|
||||
icon_state = "plant-10"
|
||||
|
||||
/obj/structure/flora/pottedplant/smallcactus
|
||||
name = "small potted cactus"
|
||||
desc = "This is a small cactus. Its needles are sharp."
|
||||
icon_state = "plant-11"
|
||||
|
||||
/obj/structure/flora/pottedplant/tall
|
||||
name = "tall potted plant"
|
||||
desc = "This is a tall plant. Tiny pores line its surface."
|
||||
icon_state = "plant-12"
|
||||
|
||||
/obj/structure/flora/pottedplant/sticky
|
||||
name = "sticky potted plant"
|
||||
desc = "This is an odd plant. Its sticky leaves trap insects."
|
||||
icon_state = "plant-13"
|
||||
|
||||
/obj/structure/flora/pottedplant/smelly
|
||||
name = "smelly potted plant"
|
||||
desc = "This is some kind of tropical plant. It reeks of rotten eggs."
|
||||
icon_state = "plant-14"
|
||||
|
||||
/obj/structure/flora/pottedplant/small
|
||||
name = "small potted plant"
|
||||
desc = "This is a pot of assorted small flora. Some look familiar."
|
||||
icon_state = "plant-15"
|
||||
|
||||
/obj/structure/flora/pottedplant/aquatic
|
||||
name = "aquatic potted plant"
|
||||
desc = "This is apparently an aquatic plant. It's probably fake."
|
||||
icon_state = "plant-16"
|
||||
|
||||
/obj/structure/flora/pottedplant/shoot
|
||||
name = "small potted shoot"
|
||||
desc = "This is a small shoot. It still needs time to grow."
|
||||
icon_state = "plant-17"
|
||||
|
||||
/obj/structure/flora/pottedplant/flower
|
||||
name = "potted flower"
|
||||
desc = "This is a slim plant. Sweet smelling flowers are supported by spindly stems."
|
||||
icon_state = "plant-18"
|
||||
|
||||
/obj/structure/flora/pottedplant/crystal
|
||||
name = "crystalline potted plant"
|
||||
desc = "These are rather cubic plants. Odd crystal formations grow on the end."
|
||||
icon_state = "plant-19"
|
||||
|
||||
/obj/structure/flora/pottedplant/subterranean
|
||||
name = "subterranean potted plant"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "plant-20"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
|
||||
/obj/structure/flora/pottedplant/minitree
|
||||
name = "potted tree"
|
||||
desc = "This is a miniature tree. Apparently it was grown to 1/5 scale."
|
||||
icon_state = "plant-21"
|
||||
|
||||
/obj/structure/flora/pottedplant/stoutbush
|
||||
name = "stout potted bush"
|
||||
desc = "This is a stout bush. Its leaves point up and outwards."
|
||||
icon_state = "plant-22"
|
||||
|
||||
/obj/structure/flora/pottedplant/drooping
|
||||
name = "drooping potted plant"
|
||||
desc = "This is a small plant. The drooping leaves make it look like its wilted."
|
||||
icon_state = "plant-23"
|
||||
|
||||
/obj/structure/flora/pottedplant/tropical
|
||||
name = "tropical potted plant"
|
||||
desc = "This is some kind of tropical plant. It hasn't begun to flower yet."
|
||||
icon_state = "plant-24"
|
||||
|
||||
/obj/structure/flora/pottedplant/dead
|
||||
name = "dead potted plant"
|
||||
desc = "This is the dried up remains of a dead plant. Someone should replace it."
|
||||
icon_state = "plant-25"
|
||||
|
||||
/obj/structure/flora/pottedplant/decorative
|
||||
name = "decorative potted plant"
|
||||
desc = "This is a decorative shrub. It's been trimmed into the shape of an apple."
|
||||
icon_state = "applebush"
|
||||
|
||||
/obj/structure/flora/pottedplant/xmas
|
||||
name = "small christmas tree"
|
||||
desc = "This is a tiny well lit decorative christmas tree."
|
||||
icon_state = "plant-xmas"
|
||||
|
||||
/obj/structure/flora/sif
|
||||
icon = 'icons/obj/flora/sifflora.dmi'
|
||||
|
||||
/obj/structure/flora/sif/attack_hand(mob/user)
|
||||
if (user.a_intent == I_HURT)
|
||||
if(do_after(user, 5 SECONDS))
|
||||
user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].")
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("\The [user] pokes \the [src.name].", "You poke \the [src.name].")
|
||||
|
||||
/datum/category_item/catalogue/flora/subterranean_bulbs
|
||||
name = "Sivian Flora - Subterranean Bulbs"
|
||||
desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \
|
||||
are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \
|
||||
known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \
|
||||
it to spread much farther than before, with the assistance of humans.\
|
||||
<br><br>\
|
||||
In Sif's early history, Sivian settlers found this plant while they were establishing mines. Their ability \
|
||||
to emit low, but consistant amounts of light made them desirable to the settlers. They would often cultivate \
|
||||
this plant inside man-made tunnels and mines to act as a backup source of light that would not need \
|
||||
electricity. This technique has saved many lost miners, and this practice continues to this day."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/subterranean
|
||||
name = "subterranean plant"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "glowplant"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs)
|
||||
|
||||
/obj/structure/flora/sif/subterranean/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,2)]"
|
||||
. = ..()
|
||||
|
||||
|
||||
/datum/category_item/catalogue/flora/eyebulbs
|
||||
name = "Sivian Flora - Eyebulbs"
|
||||
desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \
|
||||
eyes, which shrink when touched. One theory is that the bulbs are a result of mimicry, appearing as eyeballs to protect from predators.<br><br>\
|
||||
These plants have no known use."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/eyes
|
||||
name = "mysterious bulbs"
|
||||
desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy."
|
||||
icon_state = "eyeplant"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
|
||||
/obj/structure/flora/sif/eyes/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
. = ..()
|
||||
|
||||
/datum/category_item/catalogue/flora/mosstendrils
|
||||
name = "Sivian Flora - Moss Stalks"
|
||||
desc = "A plant native to Sif. The plant is most closely related to the common, dense moss found covering Sif's terrain. \
|
||||
It has evolved a method of camouflage utilizing white hairs on its dorsal sides to make it appear as a small mound of snow from \
|
||||
above. It has no known use, though it is a common furnishing in contemporary homes."
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/obj/structure/flora/sif/tendrils
|
||||
name = "stocky tendrils"
|
||||
desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow."
|
||||
icon_state = "grass"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils)
|
||||
|
||||
/obj/structure/flora/sif/tendrils/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
. = ..()
|
||||
|
||||
/obj/structure/flora
|
||||
name = "flora"
|
||||
desc = "A perfectly generic plant."
|
||||
|
||||
anchored = TRUE // Usually, plants don't move. Usually.
|
||||
plane = DECAL_PLANE
|
||||
layer = BELOW_MOB_LAYER
|
||||
|
||||
var/randomize_size = FALSE
|
||||
var/max_x_scale = 1.25
|
||||
var/max_y_scale = 1.25
|
||||
var/min_x_scale = 0.9
|
||||
var/min_y_scale = 0.9
|
||||
|
||||
var/harvest_tool = null // The type of item used to harvest the plant.
|
||||
var/harvest_count = 0
|
||||
|
||||
var/randomize_harvest_count = TRUE
|
||||
var/max_harvests = 0
|
||||
var/min_harvests = -1
|
||||
var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree.
|
||||
|
||||
/obj/structure/flora/Initialize()
|
||||
..()
|
||||
|
||||
if(randomize_size)
|
||||
icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100
|
||||
icon_scale_y = rand(min_y_scale * 100, max_y_scale * 100) / 100
|
||||
|
||||
if(prob(50))
|
||||
icon_scale_x *= -1
|
||||
update_transform()
|
||||
|
||||
if(randomize_harvest_count)
|
||||
max_harvests = max(0, rand(min_harvests, max_harvests)) // Incase you want to weight it more toward 'not harvestable', set min_harvests to a negative value.
|
||||
|
||||
/obj/structure/flora/examine(mob/user)
|
||||
. = ..()
|
||||
if(harvest_count < max_harvests)
|
||||
. += get_harvestable_desc()
|
||||
|
||||
/obj/structure/flora/proc/get_harvestable_desc()
|
||||
return "<span class='notice'>\The [src] seems to have something hanging from it.</span>"
|
||||
|
||||
/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if(can_harvest(W))
|
||||
var/harvest_spawn = pickweight(harvest_loot)
|
||||
var/atom/movable/AM = spawn_harvest(harvest_spawn, user)
|
||||
|
||||
if(!AM)
|
||||
to_chat(user, "<span class='notice'>You fail to harvest anything from \the [src].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You harvest \the [AM] from \the [src].</span>")
|
||||
return
|
||||
|
||||
..(W, user)
|
||||
|
||||
/obj/structure/flora/proc/can_harvest(var/obj/item/I)
|
||||
. = FALSE
|
||||
if(harvest_tool && istype(I, harvest_tool) && harvest_loot && harvest_loot.len && harvest_count < max_harvests)
|
||||
. = TRUE
|
||||
return .
|
||||
|
||||
/obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null)
|
||||
if(!ispath(path))
|
||||
return 0
|
||||
var/turf/Target = get_turf(src)
|
||||
if(user)
|
||||
Target = get_turf(user)
|
||||
|
||||
var/atom/movable/AM = new path(Target)
|
||||
|
||||
harvest_count++
|
||||
return AM
|
||||
|
||||
//bushes
|
||||
/obj/structure/flora/bush
|
||||
name = "bush"
|
||||
icon = 'icons/obj/flora/snowflora.dmi'
|
||||
icon_state = "snowbush1"
|
||||
|
||||
/obj/structure/flora/bush/New()
|
||||
..()
|
||||
icon_state = "snowbush[rand(1, 6)]"
|
||||
|
||||
/obj/structure/flora/pottedplant
|
||||
name = "potted plant"
|
||||
desc = "Really ties the room together."
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon_state = "plant-26"
|
||||
|
||||
anchored = FALSE
|
||||
|
||||
//newbushes
|
||||
|
||||
/obj/structure/flora/ausbushes
|
||||
name = "bush"
|
||||
icon = 'icons/obj/flora/ausflora.dmi'
|
||||
icon_state = "firstbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/New()
|
||||
..()
|
||||
icon_state = "firstbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/reedbush
|
||||
icon_state = "reedbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/reedbush/New()
|
||||
..()
|
||||
icon_state = "reedbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/leafybush
|
||||
icon_state = "leafybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/leafybush/New()
|
||||
..()
|
||||
icon_state = "leafybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/palebush
|
||||
icon_state = "palebush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/palebush/New()
|
||||
..()
|
||||
icon_state = "palebush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/stalkybush
|
||||
icon_state = "stalkybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/stalkybush/New()
|
||||
..()
|
||||
icon_state = "stalkybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/grassybush
|
||||
icon_state = "grassybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/grassybush/New()
|
||||
..()
|
||||
icon_state = "grassybush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/fernybush
|
||||
icon_state = "fernybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/fernybush/New()
|
||||
..()
|
||||
icon_state = "fernybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/sunnybush
|
||||
icon_state = "sunnybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/sunnybush/New()
|
||||
..()
|
||||
icon_state = "sunnybush_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/genericbush
|
||||
icon_state = "genericbush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/genericbush/New()
|
||||
..()
|
||||
icon_state = "genericbush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/pointybush
|
||||
icon_state = "pointybush_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/pointybush/New()
|
||||
..()
|
||||
icon_state = "pointybush_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/lavendergrass
|
||||
icon_state = "lavendergrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/lavendergrass/New()
|
||||
..()
|
||||
icon_state = "lavendergrass_[rand(1, 4)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/ywflowers
|
||||
icon_state = "ywflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/ywflowers/New()
|
||||
..()
|
||||
icon_state = "ywflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/brflowers
|
||||
icon_state = "brflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/brflowers/New()
|
||||
..()
|
||||
icon_state = "brflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/ppflowers
|
||||
icon_state = "ppflowers_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/ppflowers/New()
|
||||
..()
|
||||
icon_state = "ppflowers_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/sparsegrass
|
||||
icon_state = "sparsegrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/sparsegrass/New()
|
||||
..()
|
||||
icon_state = "sparsegrass_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/ausbushes/fullgrass
|
||||
icon_state = "fullgrass_1"
|
||||
|
||||
/obj/structure/flora/ausbushes/fullgrass/New()
|
||||
..()
|
||||
icon_state = "fullgrass_[rand(1, 3)]"
|
||||
|
||||
/obj/structure/flora/skeleton
|
||||
name = "hanging skeleton model"
|
||||
icon = 'icons/obj/plants.dmi' //what an interesting plant
|
||||
icon_state = "hangskele"
|
||||
desc = "It's an anatomical model of a human skeletal system made of plaster."
|
||||
|
||||
plane = OBJ_PLANE
|
||||
|
||||
//potted plants credit: Flashkirby
|
||||
/obj/structure/flora/pottedplant
|
||||
name = "potted plant"
|
||||
desc = "Really brings the room together."
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon_state = "plant-01"
|
||||
|
||||
plane = OBJ_PLANE
|
||||
var/obj/item/stored_item
|
||||
|
||||
/obj/structure/flora/pottedplant/examine(mob/user)
|
||||
. = ..()
|
||||
if(in_range(user, src) && stored_item)
|
||||
. += "<span class='filter_notice'><i>You can see something in there...</i></span>"
|
||||
|
||||
/obj/structure/flora/pottedplant/attackby(obj/item/I, mob/user)
|
||||
if(stored_item)
|
||||
to_chat(user, "<span class='notice'>[I] won't fit in. There already appears to be something in here...</span>")
|
||||
return
|
||||
|
||||
if(I.w_class > ITEMSIZE_TINY)
|
||||
to_chat(user, "<span class='notice'>[I] is too big to fit inside [src].</span>")
|
||||
return
|
||||
|
||||
if(do_after(user, 10))
|
||||
user.drop_from_inventory(I, src)
|
||||
I.forceMove(src)
|
||||
stored_item = I
|
||||
src.visible_message("[bicon(src)] [bicon(I)] [user] places [I] into [src].")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You refrain from putting things into the plant pot.</span>")
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/flora/pottedplant/attack_hand(mob/user)
|
||||
if(!stored_item)
|
||||
to_chat(user, "<span class='filter_notice'><b>You see nothing of interest in [src]...</b></span>")
|
||||
else
|
||||
if(do_after(user, 10))
|
||||
to_chat(user, "<span class='filter_notice'>You find [bicon(stored_item)] [stored_item] in [src]!</span>")
|
||||
stored_item.forceMove(get_turf(src))
|
||||
stored_item = null
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/flora/pottedplant/large
|
||||
name = "large potted plant"
|
||||
desc = "This is a large plant. Three branches support pairs of waxy leaves."
|
||||
icon_state = "plant-26"
|
||||
|
||||
/obj/structure/flora/pottedplant/fern
|
||||
name = "potted fern"
|
||||
desc = "This is an ordinary looking fern. It looks like it could do with some water."
|
||||
icon_state = "plant-02"
|
||||
|
||||
/obj/structure/flora/pottedplant/overgrown
|
||||
name = "overgrown potted plants"
|
||||
desc = "This is an assortment of colourful plants. Some parts are overgrown."
|
||||
icon_state = "plant-03"
|
||||
|
||||
/obj/structure/flora/pottedplant/bamboo
|
||||
name = "potted bamboo"
|
||||
desc = "These are bamboo shoots. The tops looks like they've been cut short."
|
||||
icon_state = "plant-04"
|
||||
|
||||
/obj/structure/flora/pottedplant/largebush
|
||||
name = "large potted bush"
|
||||
desc = "This is a large bush. The leaves stick upwards in an odd fashion."
|
||||
icon_state = "plant-05"
|
||||
|
||||
/obj/structure/flora/pottedplant/thinbush
|
||||
name = "thin potted bush"
|
||||
desc = "This is a thin bush. It appears to be flowering."
|
||||
icon_state = "plant-06"
|
||||
|
||||
/obj/structure/flora/pottedplant/mysterious
|
||||
name = "mysterious potted bulbs"
|
||||
desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink."
|
||||
icon_state = "plant-07"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
|
||||
/obj/structure/flora/pottedplant/smalltree
|
||||
name = "small potted tree"
|
||||
desc = "This is a small tree. It is rather pleasant."
|
||||
icon_state = "plant-08"
|
||||
|
||||
/obj/structure/flora/pottedplant/unusual
|
||||
name = "unusual potted plant"
|
||||
desc = "This is an unusual plant. It's bulbous ends emit a soft blue light."
|
||||
icon_state = "plant-09"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#33CCFF"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree)
|
||||
|
||||
/obj/structure/flora/pottedplant/orientaltree
|
||||
name = "potted oriental tree"
|
||||
desc = "This is a rather oriental style tree. Its flowers are bright pink."
|
||||
icon_state = "plant-10"
|
||||
|
||||
/obj/structure/flora/pottedplant/smallcactus
|
||||
name = "small potted cactus"
|
||||
desc = "This is a small cactus. Its needles are sharp."
|
||||
icon_state = "plant-11"
|
||||
|
||||
/obj/structure/flora/pottedplant/tall
|
||||
name = "tall potted plant"
|
||||
desc = "This is a tall plant. Tiny pores line its surface."
|
||||
icon_state = "plant-12"
|
||||
|
||||
/obj/structure/flora/pottedplant/sticky
|
||||
name = "sticky potted plant"
|
||||
desc = "This is an odd plant. Its sticky leaves trap insects."
|
||||
icon_state = "plant-13"
|
||||
|
||||
/obj/structure/flora/pottedplant/smelly
|
||||
name = "smelly potted plant"
|
||||
desc = "This is some kind of tropical plant. It reeks of rotten eggs."
|
||||
icon_state = "plant-14"
|
||||
|
||||
/obj/structure/flora/pottedplant/small
|
||||
name = "small potted plant"
|
||||
desc = "This is a pot of assorted small flora. Some look familiar."
|
||||
icon_state = "plant-15"
|
||||
|
||||
/obj/structure/flora/pottedplant/aquatic
|
||||
name = "aquatic potted plant"
|
||||
desc = "This is apparently an aquatic plant. It's probably fake."
|
||||
icon_state = "plant-16"
|
||||
|
||||
/obj/structure/flora/pottedplant/shoot
|
||||
name = "small potted shoot"
|
||||
desc = "This is a small shoot. It still needs time to grow."
|
||||
icon_state = "plant-17"
|
||||
|
||||
/obj/structure/flora/pottedplant/flower
|
||||
name = "potted flower"
|
||||
desc = "This is a slim plant. Sweet smelling flowers are supported by spindly stems."
|
||||
icon_state = "plant-18"
|
||||
|
||||
/obj/structure/flora/pottedplant/crystal
|
||||
name = "crystalline potted plant"
|
||||
desc = "These are rather cubic plants. Odd crystal formations grow on the end."
|
||||
icon_state = "plant-19"
|
||||
|
||||
/obj/structure/flora/pottedplant/subterranean
|
||||
name = "subterranean potted plant"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "plant-20"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
|
||||
/obj/structure/flora/pottedplant/minitree
|
||||
name = "potted tree"
|
||||
desc = "This is a miniature tree. Apparently it was grown to 1/5 scale."
|
||||
icon_state = "plant-21"
|
||||
|
||||
/obj/structure/flora/pottedplant/stoutbush
|
||||
name = "stout potted bush"
|
||||
desc = "This is a stout bush. Its leaves point up and outwards."
|
||||
icon_state = "plant-22"
|
||||
|
||||
/obj/structure/flora/pottedplant/drooping
|
||||
name = "drooping potted plant"
|
||||
desc = "This is a small plant. The drooping leaves make it look like its wilted."
|
||||
icon_state = "plant-23"
|
||||
|
||||
/obj/structure/flora/pottedplant/tropical
|
||||
name = "tropical potted plant"
|
||||
desc = "This is some kind of tropical plant. It hasn't begun to flower yet."
|
||||
icon_state = "plant-24"
|
||||
|
||||
/obj/structure/flora/pottedplant/dead
|
||||
name = "dead potted plant"
|
||||
desc = "This is the dried up remains of a dead plant. Someone should replace it."
|
||||
icon_state = "plant-25"
|
||||
|
||||
/obj/structure/flora/pottedplant/decorative
|
||||
name = "decorative potted plant"
|
||||
desc = "This is a decorative shrub. It's been trimmed into the shape of an apple."
|
||||
icon_state = "applebush"
|
||||
|
||||
/obj/structure/flora/pottedplant/xmas
|
||||
name = "small christmas tree"
|
||||
desc = "This is a tiny well lit decorative christmas tree."
|
||||
icon_state = "plant-xmas"
|
||||
|
||||
/obj/structure/flora/sif
|
||||
icon = 'icons/obj/flora/sifflora.dmi'
|
||||
|
||||
/obj/structure/flora/sif/attack_hand(mob/user)
|
||||
if (user.a_intent == I_HURT)
|
||||
if(do_after(user, 5 SECONDS))
|
||||
user.visible_message("<span class='filter_notice'>\The [user] digs up \the [src.name].", "You dig up \the [src.name].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='filter_notice'>\The [user] pokes \the [src.name].", "You poke \the [src.name].</span>")
|
||||
|
||||
/datum/category_item/catalogue/flora/subterranean_bulbs
|
||||
name = "Sivian Flora - Subterranean Bulbs"
|
||||
desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \
|
||||
are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \
|
||||
known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \
|
||||
it to spread much farther than before, with the assistance of humans.\
|
||||
<br><br>\
|
||||
In Sif's early history, Sivian settlers found this plant while they were establishing mines. Their ability \
|
||||
to emit low, but consistant amounts of light made them desirable to the settlers. They would often cultivate \
|
||||
this plant inside man-made tunnels and mines to act as a backup source of light that would not need \
|
||||
electricity. This technique has saved many lost miners, and this practice continues to this day."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/subterranean
|
||||
name = "subterranean plant"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "glowplant"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs)
|
||||
|
||||
/obj/structure/flora/sif/subterranean/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,2)]"
|
||||
. = ..()
|
||||
|
||||
|
||||
/datum/category_item/catalogue/flora/eyebulbs
|
||||
name = "Sivian Flora - Eyebulbs"
|
||||
desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \
|
||||
eyes, which shrink when touched. One theory is that the bulbs are a result of mimicry, appearing as eyeballs to protect from predators.<br><br>\
|
||||
These plants have no known use."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/eyes
|
||||
name = "mysterious bulbs"
|
||||
desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy."
|
||||
icon_state = "eyeplant"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
|
||||
/obj/structure/flora/sif/eyes/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
. = ..()
|
||||
|
||||
/datum/category_item/catalogue/flora/mosstendrils
|
||||
name = "Sivian Flora - Moss Stalks"
|
||||
desc = "A plant native to Sif. The plant is most closely related to the common, dense moss found covering Sif's terrain. \
|
||||
It has evolved a method of camouflage utilizing white hairs on its dorsal sides to make it appear as a small mound of snow from \
|
||||
above. It has no known use, though it is a common furnishing in contemporary homes."
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/obj/structure/flora/sif/tendrils
|
||||
name = "stocky tendrils"
|
||||
desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow."
|
||||
icon_state = "grass"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils)
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 1
|
||||
min_harvests = -4
|
||||
harvest_loot = list(
|
||||
/obj/item/seeds/wabback = 15,
|
||||
/obj/item/seeds/blackwabback = 1,
|
||||
/obj/item/seeds/wildwabback = 30
|
||||
)
|
||||
|
||||
/obj/structure/flora/sif/tendrils/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
. = ..()
|
||||
|
||||
/obj/structure/flora/sif/tendrils/get_harvestable_desc()
|
||||
return "<span class='notice'>\The [src] seems to be growing over something.</span>"
|
||||
@@ -11,7 +11,6 @@
|
||||
..()
|
||||
icon_state = "snowgrass[rand(1, 3)]bb"
|
||||
|
||||
|
||||
/obj/structure/flora/grass/green
|
||||
icon_state = "snowgrass1gb"
|
||||
|
||||
|
||||
@@ -308,7 +308,9 @@
|
||||
max_harvests = 2
|
||||
min_harvests = -4
|
||||
harvest_loot = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/siffruit = 5
|
||||
/obj/item/weapon/reagent_containers/food/snacks/siffruit = 20,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod = 5,
|
||||
/obj/item/seeds/sifbulb = 1
|
||||
)
|
||||
|
||||
var/light_shift = 0
|
||||
|
||||
@@ -30,13 +30,11 @@
|
||||
color = material.icon_colour
|
||||
|
||||
/obj/structure/gravemarker/examine(mob/user)
|
||||
..()
|
||||
if(get_dist(src, user) < 4)
|
||||
if(grave_name)
|
||||
to_chat(user, "Here Lies [grave_name]")
|
||||
if(get_dist(src, user) < 2)
|
||||
if(epitaph)
|
||||
to_chat(user, epitaph)
|
||||
. = ..()
|
||||
if(grave_name && get_dist(src, user) < 4)
|
||||
. += "Here Lies [grave_name]"
|
||||
if(epitaph && get_dist(src, user) < 2)
|
||||
. += epitaph
|
||||
|
||||
/obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover) && mover.checkpass(PASSTABLE))
|
||||
|
||||
@@ -48,13 +48,13 @@
|
||||
plant = prepare_icon(emagged ? "emagged" : null)
|
||||
overlays += plant
|
||||
set_light(2)
|
||||
use_power = USE_POWER_ACTIVE
|
||||
update_use_power(USE_POWER_ACTIVE)
|
||||
|
||||
/obj/machinery/holoplant/proc/deactivate()
|
||||
overlays -= plant
|
||||
QDEL_NULL(plant)
|
||||
set_light(0)
|
||||
use_power = USE_POWER_OFF
|
||||
update_use_power(USE_POWER_OFF)
|
||||
|
||||
/obj/machinery/holoplant/power_change()
|
||||
..()
|
||||
|
||||
@@ -24,10 +24,9 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of liquid!")
|
||||
//everything else is visible, so doesn't need to be mentioned
|
||||
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
. += "It contains [reagents.total_volume] unit\s of liquid!"
|
||||
|
||||
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag)
|
||||
@@ -186,12 +185,11 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/examine(mob/user)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
to_chat(user, "[bicon(src)] This [callme] contains [reagents.total_volume] unit\s of water!")
|
||||
if(mybag)
|
||||
to_chat(user, "\A [mybag] is hanging on the [callme].")
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
. += "This [callme] contains [reagents.total_volume] unit\s of water!"
|
||||
if(mybag)
|
||||
. += "\A [mybag] is hanging on the [callme]."
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/attackby(obj/item/I, mob/user)
|
||||
@@ -230,15 +228,6 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
to_chat(user, "<span class='notice'>You'll need the keys in one of your hands to drive this [callme].</span>")
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/Move()
|
||||
..()
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/L = A
|
||||
if(L.buckled == src)
|
||||
L.loc = loc
|
||||
|
||||
|
||||
/obj/structure/bed/chair/janicart/post_buckle_mob(mob/living/M)
|
||||
update_mob()
|
||||
return ..()
|
||||
|
||||
@@ -40,6 +40,10 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
var/list/uncommon_loot = list() // Uncommon is actually maybe some useful items, usually the reason someone bothers looking inside.
|
||||
var/list/rare_loot = list() // Rare is really powerful, or at least unique items.
|
||||
|
||||
/obj/structure/loot_pile/attack_ai(var/mob/user)
|
||||
if(isrobot(user) && Adjacent(user))
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/loot_pile/attack_hand(mob/user)
|
||||
//Human mob
|
||||
if(isliving(user))
|
||||
@@ -351,8 +355,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/weapon/circuitboard/atmos_alert,
|
||||
/obj/item/weapon/circuitboard/airalarm,
|
||||
/obj/item/weapon/circuitboard/fax,
|
||||
/obj/item/weapon/circuitboard/ghettosmes,
|
||||
/obj/item/weapon/circuitboard/jukebox,
|
||||
/obj/item/weapon/circuitboard/batteryrack,
|
||||
/obj/item/weapon/circuitboard/message_monitor,
|
||||
/obj/item/weapon/circuitboard/rcon_console,
|
||||
/obj/item/weapon/smes_coil,
|
||||
|
||||
@@ -342,24 +342,24 @@
|
||||
return
|
||||
|
||||
if(beaker)
|
||||
to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].")
|
||||
to_chat(user, "It is set to transfer [transfer_amount]u of chemicals per cycle.")
|
||||
. += "The IV drip is [mode ? "injecting" : "taking blood"]."
|
||||
. += "It is set to transfer [transfer_amount]u of chemicals per cycle."
|
||||
if(beaker.reagents && beaker.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.</span>")
|
||||
. += "<span class='notice'>Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Attached is an empty [beaker].</span>")
|
||||
to_chat(user, "<span class='notice'>[attached ? attached : "No one"] is hooked up to it.</span>")
|
||||
. += "<span class='notice'>Attached is an empty [beaker].</span>"
|
||||
. += "<span class='notice'>[attached ? attached : "No one"] is hooked up to it.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no vessel.</span>")
|
||||
. += "<span class='notice'>There is no vessel.</span>"
|
||||
|
||||
if(tank)
|
||||
if (!is_loosen)
|
||||
to_chat(user, "\The [tank] connected.")
|
||||
to_chat(user, "The meter shows [round(tank.air_contents.return_pressure())]. The valve is [valve_opened == TRUE ? "open" : "closed"].")
|
||||
. += "\The [tank] connected."
|
||||
. += "The meter shows [round(tank.air_contents.return_pressure())]. The valve is [valve_opened == TRUE ? "open" : "closed"]."
|
||||
if (tank.distribute_pressure == 0)
|
||||
to_chat(user, "Use wrench to replace tank.")
|
||||
. += "Use wrench to replace tank."
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no tank.</span>")
|
||||
. += "<span class='notice'>There is no tank.</span>"
|
||||
|
||||
/obj/structure/medical_stand/process()
|
||||
//Gas Stuff
|
||||
|
||||
@@ -17,8 +17,9 @@ GLOBAL_LIST_BOILERPLATE(all_mopbuckets, /obj/structure/mopbucket)
|
||||
..()
|
||||
|
||||
/obj/structure/mopbucket/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of water!")
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
. += "It contains [reagents.total_volume] unit\s of water!"
|
||||
|
||||
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets"
|
||||
|
||||
@@ -51,21 +51,18 @@
|
||||
return
|
||||
|
||||
/obj/structure/noticeboard/attack_hand(var/mob/user)
|
||||
examine(user)
|
||||
user.examinate(src)
|
||||
|
||||
// Since Topic() never seems to interact with usr on more than a superficial
|
||||
// level, it should be fine to let anyone mess with the board other than ghosts.
|
||||
/obj/structure/noticeboard/examine(var/mob/user)
|
||||
if(!user)
|
||||
user = usr
|
||||
if(user.Adjacent(src))
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
var/dat = "<B>Noticeboard</B><BR>"
|
||||
for(var/obj/item/weapon/paper/P in src)
|
||||
dat += "<A href='?src=\ref[src];read=\ref[P]'>[P.name]</A> <A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A><BR>"
|
||||
user << browse("<HEAD><TITLE>Notices</TITLE></HEAD>[dat]","window=noticeboard")
|
||||
onclose(user, "noticeboard")
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/noticeboard/Topic(href, href_list)
|
||||
..()
|
||||
|
||||
@@ -46,11 +46,11 @@
|
||||
if(health < maxhealth)
|
||||
switch(health / maxhealth)
|
||||
if(0.0 to 0.5)
|
||||
to_chat(user, "<span class='warning'>It looks severely damaged!</span>")
|
||||
. += "<span class='warning'>It looks severely damaged!</span>"
|
||||
if(0.25 to 0.5)
|
||||
to_chat(user, "<span class='warning'>It looks damaged!</span>")
|
||||
. += "<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>")
|
||||
. += "<span class='notice'>It has a few scrapes and dents.</span>"
|
||||
|
||||
/obj/structure/railing/take_damage(amount)
|
||||
health -= amount
|
||||
|
||||
@@ -286,15 +286,10 @@
|
||||
held = null
|
||||
|
||||
|
||||
/obj/structure/bed/roller/Move()
|
||||
..()
|
||||
/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
|
||||
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/L = A
|
||||
|
||||
if(L.buckled == src)
|
||||
L.loc = src.loc
|
||||
|
||||
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
|
||||
if(M.buckled == src)
|
||||
|
||||
@@ -140,22 +140,24 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/bed/chair/office/Move()
|
||||
..()
|
||||
/obj/structure/bed/chair/office/Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
|
||||
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/occupant = A
|
||||
occupant.buckled = null
|
||||
occupant.Move(src.loc)
|
||||
occupant.buckled = src
|
||||
if (occupant && (src.loc != occupant.loc))
|
||||
if (propelled)
|
||||
for (var/mob/O in src.loc)
|
||||
if (O != occupant)
|
||||
Bump(O)
|
||||
else
|
||||
unbuckle_mob()
|
||||
|
||||
/obj/structure/bed/chair/office/handle_buckled_mob_movement(atom/new_loc, direction, movetime)
|
||||
for(var/A in buckled_mobs)
|
||||
var/mob/living/occupant = A
|
||||
occupant.buckled = null
|
||||
occupant.Move(loc, direction, movetime)
|
||||
occupant.buckled = src
|
||||
if (occupant && (loc != occupant.loc))
|
||||
if (propelled)
|
||||
for (var/mob/O in src.loc)
|
||||
if (O != occupant)
|
||||
Bump(O)
|
||||
else
|
||||
unbuckle_mob()
|
||||
|
||||
/obj/structure/bed/chair/office/Bump(atom/A)
|
||||
..()
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
desc = "Like a normal chair, but more stationary."
|
||||
icon_state = "bay_chair_preview"
|
||||
base_icon = "bay_chair"
|
||||
buckle_movable = 1
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/red/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "carpet")
|
||||
@@ -192,7 +193,6 @@
|
||||
desc = "It's a chair. Only for the highest ranked asses."
|
||||
icon_state = "capchair_preview"
|
||||
base_icon = "capchair"
|
||||
buckle_movable = 1
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/captain/update_icon()
|
||||
..()
|
||||
@@ -209,6 +209,7 @@
|
||||
desc = "A comfortable, secure seat. It has a sturdy-looking buckling system for smoother flights."
|
||||
base_icon = "shuttle_chair"
|
||||
icon_state = "shuttle_chair_preview"
|
||||
buckle_movable = 0
|
||||
var/buckling_sound = 'sound/effects/metal_close.ogg'
|
||||
var/padding = "blue"
|
||||
|
||||
|
||||
@@ -91,8 +91,9 @@
|
||||
create_track()
|
||||
driving = 0
|
||||
|
||||
/obj/structure/bed/chair/wheelchair/Move()
|
||||
..()
|
||||
/obj/structure/bed/chair/wheelchair/Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
|
||||
cut_overlays()
|
||||
playsound(src, 'sound/effects/roll.ogg', 75, 1)
|
||||
if(has_buckled_mobs())
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
w_class = ITEMSIZE_HUGE
|
||||
var/obj/item/target/pinned_target // the current pinned target
|
||||
|
||||
Move()
|
||||
..()
|
||||
Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
// Move the pinned target along with the stake
|
||||
if(pinned_target in view(3, src))
|
||||
pinned_target.loc = loc
|
||||
pinned_target.forceMove(loc)
|
||||
|
||||
else // Sanity check: if the pinned target can't be found in immediate view
|
||||
pinned_target = null
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A window."
|
||||
icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons
|
||||
density = 1
|
||||
can_atmos_pass = ATMOS_PASS_DENSITY
|
||||
can_atmos_pass = ATMOS_PASS_PROC
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
layer = WINDOW_LAYER
|
||||
@@ -25,27 +25,27 @@
|
||||
var/fulltile = FALSE // Set to true on full-tile variants.
|
||||
|
||||
/obj/structure/window/examine(mob/user)
|
||||
. = ..(user)
|
||||
. = ..()
|
||||
|
||||
if(health == maxhealth)
|
||||
to_chat(user, "<span class='notice'>It looks fully intact.</span>")
|
||||
. += "<span class='notice'>It looks fully intact.</span>"
|
||||
else
|
||||
var/perc = health / maxhealth
|
||||
if(perc > 0.75)
|
||||
to_chat(user, "<span class='notice'>It has a few cracks.</span>")
|
||||
. += "<span class='notice'>It has a few cracks.</span>"
|
||||
else if(perc > 0.5)
|
||||
to_chat(user, "<span class='warning'>It looks slightly damaged.</span>")
|
||||
. += "<span class='warning'>It looks slightly damaged.</span>"
|
||||
else if(perc > 0.25)
|
||||
to_chat(user, "<span class='warning'>It looks moderately damaged.</span>")
|
||||
. += "<span class='warning'>It looks moderately damaged.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>It looks heavily damaged.</span>")
|
||||
. += "<span class='danger'>It looks heavily damaged.</span>"
|
||||
if(silicate)
|
||||
if (silicate < 30)
|
||||
to_chat(user, "<span class='notice'>It has a thin layer of silicate.</span>")
|
||||
. += "<span class='notice'>It has a thin layer of silicate.</span>"
|
||||
else if (silicate < 70)
|
||||
to_chat(user, "<span class='notice'>It is covered in silicate.</span>")
|
||||
. += "<span class='notice'>It is covered in silicate.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is a thick layer of silicate covering it.</span>")
|
||||
. += "<span class='notice'>There is a thick layer of silicate covering it.</span>"
|
||||
|
||||
/obj/structure/window/take_damage(var/damage = 0, var/sound_effect = 1)
|
||||
var/initialhealth = health
|
||||
@@ -144,8 +144,8 @@
|
||||
|
||||
/obj/structure/window/CanZASPass(turf/T, is_zone)
|
||||
if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly.
|
||||
return anchored ? ATMOS_PASS_NO : ATMOS_PASS_YES // If it's anchored, it'll block air.
|
||||
return ATMOS_PASS_YES // Don't stop airflow from the other sides.
|
||||
return !anchored // If it's anchored, it'll block air.
|
||||
return TRUE // Don't stop airflow from the other sides.
|
||||
|
||||
/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf)
|
||||
if(istype(O) && O.checkpass(PASSGLASS))
|
||||
@@ -413,7 +413,7 @@
|
||||
/obj/structure/window/Move()
|
||||
var/ini_dir = dir
|
||||
update_nearby_tiles(need_rebuild=1)
|
||||
..()
|
||||
. = ..()
|
||||
set_dir(ini_dir)
|
||||
update_nearby_tiles(need_rebuild=1)
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/obj/structure/window/titanium
|
||||
name = "ti-glass window"
|
||||
desc = "A titanium alloy window, combining the strength of titanium with the transparency of glass. It seems to be very strong."
|
||||
basestate = "window"
|
||||
icon_state = "window"
|
||||
color = "#A7A3A6"
|
||||
shardtype = /obj/item/weapon/material/shard/titaniumglass
|
||||
glasstype = /obj/item/stack/material/glass/titanium
|
||||
reinf = 0
|
||||
maximal_heat = T0C + 5000
|
||||
damage_per_fire_tick = 1.0
|
||||
maxhealth = 100.0
|
||||
force_threshold = 10
|
||||
|
||||
/obj/structure/window/titanium/full
|
||||
icon_state = "window-full"
|
||||
maxhealth = 200
|
||||
fulltile = TRUE
|
||||
|
||||
/obj/structure/window/plastitanium
|
||||
name = "plastanium glass window"
|
||||
desc = "A plastitanium alloy window, combining the strength of plastitanium with the transparency of glass. It seems to be very strong."
|
||||
basestate = "window"
|
||||
icon_state = "window"
|
||||
color = "#676366"
|
||||
shardtype = /obj/item/weapon/material/shard/plastitaniumglass
|
||||
glasstype = /obj/item/stack/material/glass/plastitanium
|
||||
reinf = 0
|
||||
maximal_heat = T0C + 7000
|
||||
damage_per_fire_tick = 1.0
|
||||
maxhealth = 120.0
|
||||
force_threshold = 10
|
||||
|
||||
/obj/structure/window/plastitanium/full
|
||||
icon_state = "window-full"
|
||||
maxhealth = 250
|
||||
fulltile = TRUE
|
||||
Reference in New Issue
Block a user