Merge branch 'master' into pol-moved

This commit is contained in:
Aronai Sieyes
2020-05-12 11:22:43 -04:00
committed by GitHub
608 changed files with 8598 additions and 5698 deletions
+5 -5
View File
@@ -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()
..()
+6 -8
View File
@@ -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)
@@ -57,24 +57,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"
@@ -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()
. = ..()
+2 -2
View File
@@ -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()
@@ -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"
+3 -1
View File
@@ -273,7 +273,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
+5 -7
View File
@@ -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))
+8 -10
View File
@@ -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)
+5 -1
View File
@@ -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,
+3 -2
View File
@@ -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))
+3 -6
View File
@@ -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)
..()
+3 -3
View File
@@ -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
+12 -12
View File
@@ -3,7 +3,7 @@
desc = "A window."
icon = 'icons/obj/structures.dmi'
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
@@ -143,8 +143,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))