diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 36b95fecfa5..31a560f9268 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -1023,6 +1023,15 @@
max_amount = 50
var/perunit = 3750
+/obj/item/stack/sheet/wood
+ name = "Wood Planks"
+ singular_name = "wood plank"
+ icon_state = "sheet-wood"
+ force = 5.0
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 3
+
/obj/item/stack/sheet/glass
name = "glass"
singular_name = "glass sheet"
diff --git a/code/defines/obj/clothing/gimmick.dm b/code/defines/obj/clothing/gimmick.dm
index 66ef2d69d68..76c91a2b572 100644
--- a/code/defines/obj/clothing/gimmick.dm
+++ b/code/defines/obj/clothing/gimmick.dm
@@ -24,17 +24,6 @@
mob.Blend(earbit, ICON_OVERLAY)
mob2.Blend(earbit2, ICON_OVERLAY)
-/obj/item/clothing/under/blackskirt
- name = "Black skirt"
- desc = "A black skirt, very fancy!"
- icon_state = "blackskirt"
- color = "blackskirt"
-
-/obj/item/clothing/shoes/red
- name = "red shoes"
- icon_state = "red"
-
-
/obj/item/clothing/head/helmet/space/santahat
name = "Santa's hat"
icon_state = "santahat"
@@ -45,8 +34,11 @@
icon_state = "santa"
item_state = "santa"
slowdown = 1
- flags = FPRINT | TABLEPASS | ONESIZEFITSALL
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL | SUITSPACE
+/obj/item/clothing/shoes/red
+ name = "red shoes"
+ icon_state = "red"
/obj/item/clothing/mask/owl_mask
name = "Owl mask"
@@ -82,7 +74,6 @@
flags = FPRINT | TABLEPASS | CONDUCT
fire_resist = T0C+5200
-
/*/obj/item/clothing/under/nazi1
name = "Nazi uniform"
desc = "SIEG HEIL!"
@@ -128,7 +119,6 @@
icon_state = "yay"
color = "yay"*/ // no sprite --errorage
-
// UNUSED COLORS
/obj/item/clothing/under/psyche
@@ -252,6 +242,19 @@
item_state = "r_suit"
color = "red_suit"
+/obj/item/clothing/under/blackskirt
+ name = "Black skirt"
+ desc = "A black skirt, very fancy!"
+ icon_state = "blackskirt"
+ color = "blackskirt"
+
+/obj/item/clothing/under/schoolgirl
+ name = "schoolgirl uniform"
+ desc = "It's just like one of my Japanese animes!"
+ icon_state = "schoolgirl"
+ item_state = "schoolgirl"
+ color = "schoolgirl"
+
/obj/item/clothing/under/gimmick/rank/police
name = "Police Uniform"
desc = "Move along, nothing to see here."
@@ -319,13 +322,6 @@
icon_state = "bandana"
item_state = "bandana"
-/obj/item/clothing/under/schoolgirl
- name = "schoolgirl uniform"
- desc = "It's just like one of my Japanese animes!"
- icon_state = "schoolgirl"
- item_state = "schoolgirl"
- color = "schoolgirl"
-
/obj/item/clothing/under/soviet
name = "soviet uniform"
desc = "For the Motherland!"
diff --git a/code/defines/obj/clothing/jumpsuit.dm b/code/defines/obj/clothing/jumpsuit.dm
index adc83351593..5f20952de1d 100644
--- a/code/defines/obj/clothing/jumpsuit.dm
+++ b/code/defines/obj/clothing/jumpsuit.dm
@@ -370,10 +370,13 @@
name = "NASA Jumpsuit"
icon_state = "black"
item_state = "bl_suit"
- desc = "Has a NASA logo on it, looks space worthy."
- gas_transfer_coefficient = 0.01
+ color = "black"
+ desc = "Has a NASA logo on it, made of space proofed materials."
w_class = 4//bulky item
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
+ gas_transfer_coefficient = 0.01
permeability_coefficient = 0.02
+ heat_transfer_coefficient = 0.02
+ radiation_protection = 0.25
protective_temperature = 1000
- heat_transfer_coefficient = 0.02
\ No newline at end of file
+ flags = FPRINT | TABLEPASS | SUITSPACE
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
\ No newline at end of file
diff --git a/code/defines/obj/clothing/mask.dm b/code/defines/obj/clothing/mask.dm
index 4c832b2e546..d2ddbc42c47 100644
--- a/code/defines/obj/clothing/mask.dm
+++ b/code/defines/obj/clothing/mask.dm
@@ -5,6 +5,47 @@
icon = 'masks.dmi'
body_parts_covered = HEAD
+
+/obj/item/clothing/mask/breath
+ desc = "A close-fitting mask that can be connected to an air supply but does not work very well in hard vacuum."
+ name = "Breath Mask"
+ icon_state = "breath"
+ item_state = "breath"
+ flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH
+ w_class = 2
+ protective_temperature = 420
+ heat_transfer_coefficient = 0.90
+ gas_transfer_coefficient = 0.10
+ permeability_coefficient = 0.50
+
+/obj/item/clothing/mask/medical
+ desc = "This mask does not work very well in low pressure environments."
+ name = "Medical Mask"
+ icon_state = "medical"
+ item_state = "medical"
+ flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH
+ w_class = 3
+ protective_temperature = 420
+ gas_transfer_coefficient = 0.10
+ permeability_coefficient = 0.10
+
+/obj/item/clothing/mask/muzzle
+ name = "muzzle"
+ icon_state = "muzzle"
+ item_state = "muzzle"
+ flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
+ w_class = 2
+ gas_transfer_coefficient = 0.90
+
+/obj/item/clothing/mask/surgical
+ name = "Sterile Mask"
+ icon_state = "sterile"
+ item_state = "sterile"
+ w_class = 1
+ flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
+ gas_transfer_coefficient = 0.90
+ permeability_coefficient = 0.05
+
/obj/item/clothing/mask/gas
name = "gas mask"
desc = "A close-fitting mask that can filter some environmental toxins or be connected to an air supply."
@@ -49,52 +90,16 @@
item_state = "s-ninja_mask"
vchange = 1
-/obj/item/clothing/mask/breath
- desc = "A close-fitting mask that can be connected to an air supply but does not work very well in hard vacuum."
- name = "Breath Mask"
- icon_state = "breath"
- item_state = "breath"
- flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH
- w_class = 2
- protective_temperature = 420
- heat_transfer_coefficient = 0.90
- gas_transfer_coefficient = 0.10
- permeability_coefficient = 0.50
-
/obj/item/clothing/mask/gas/clown_hat
name = "clown wig and mask"
desc = "You're gay for even considering wearing this."
icon_state = "clown"
item_state = "clown_hat"
-/obj/item/clothing/mask/medical
- desc = "This mask does not work very well in low pressure environments."
- name = "Medical Mask"
- icon_state = "medical"
- item_state = "medical"
- flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH
- w_class = 3
- protective_temperature = 420
- gas_transfer_coefficient = 0.10
- permeability_coefficient = 0.10
-
-/obj/item/clothing/mask/muzzle
- name = "muzzle"
- icon_state = "muzzle"
- item_state = "muzzle"
- flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
- w_class = 2
- gas_transfer_coefficient = 0.90
-
-/obj/item/clothing/mask/surgical
- name = "Sterile Mask"
- icon_state = "sterile"
- item_state = "sterile"
- w_class = 1
- flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
- gas_transfer_coefficient = 0.90
- permeability_coefficient = 0.05
-
+/obj/item/clothing/mask/gas/mime
+ name = "mime mask"
+ desc = "It looks a little creepy"
+ icon_state = "mime"
/obj/item/clothing/mask/cigarette
name = "Cigarette"
@@ -126,9 +131,4 @@
icon_state = "cigaroff"
icon_on = "cigaron"
icon_off = "cigaroff"
- icon_butt = "cigarbutt"
-
-/obj/item/clothing/mask/gas/mime
- name = "mime mask"
- desc = "It looks a little creepy"
- icon_state = "mime"
\ No newline at end of file
+ icon_butt = "cigarbutt"
\ No newline at end of file
diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm
index 150afb5b8ae..f82e1d1a97f 100644
--- a/code/defines/obj/clothing/suit.dm
+++ b/code/defines/obj/clothing/suit.dm
@@ -222,8 +222,8 @@
heat_transfer_coefficient = 0.02
radiation_protection = 0.25
protective_temperature = 1000
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
flags = FPRINT | TABLEPASS | SUITSPACE
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1.5
diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm
index e6cc3cce052..78bda9ef0a3 100644
--- a/code/defines/obj/hydro.dm
+++ b/code/defines/obj/hydro.dm
@@ -302,7 +302,7 @@
mypath = "/obj/item/seeds/towermycelium"
species = "towercap"
plantname = "Tower Cap"
- productname = "" // Doesn't exist yet
+ productname = "/obj/item/weapon/grown/log"
lifespan = 80
endurance = 50
maturation = 15
diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm
index daf0cc270ef..88bc2db40ef 100644
--- a/code/defines/obj/vending.dm
+++ b/code/defines/obj/vending.dm
@@ -107,11 +107,11 @@
icon_state = "sec"
icon_deny = "sec-deny"
req_access_txt = "1"
- product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash"
- product_amounts = "8;2;5"
+ product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut"
+ product_amounts = "8;2;5;12"
//product_amounts = "8;5;4" Old totals
- product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/weapon/reagent_containers/food/snacks/donut"
- product_hideamt = "2;12"
+ product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/kitchen/donut_box"
+ product_hideamt = "2;2"
/obj/machinery/vending/hydronutrients
name = "NutriMax"
@@ -128,8 +128,8 @@
name = "MegaSeed Servitor"
desc = "When you need seeds fast!"
icon_state = "seeds"
- product_paths = "/obj/item/seeds/cornseed;/obj/item/seeds/chiliseed;/obj/item/seeds/berryseed;/obj/item/seeds/eggplantseed;/obj/item/seeds/tomatoseed;/obj/item/seeds/wheatseed;/obj/item/seeds/soyaseed;/obj/item/seeds/carrotseed;/obj/item/seeds/potatoseed;/obj/item/seeds/chantermycelium"
- product_amounts = "2;2;2;2;2;2;2;2;2;2"
+ product_paths = "/obj/item/seeds/cornseed;/obj/item/seeds/chiliseed;/obj/item/seeds/berryseed;/obj/item/seeds/eggplantseed;/obj/item/seeds/tomatoseed;/obj/item/seeds/wheatseed;/obj/item/seeds/soyaseed;/obj/item/seeds/carrotseed;/obj/item/seeds/potatoseed;/obj/item/seeds/chantermycelium;/obj/item/seeds/towermycelium"
+ product_amounts = "2;2;2;2;2;2;2;2;2;2;2"
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
product_hidden = "/obj/item/seeds/amanitamycelium;/obj/item/seeds/libertymycelium;/obj/item/seeds/nettleseed;/obj/item/seeds/plumpmycelium"
product_hideamt = "2;2;2;2"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 49d33feeb7d..1a328bfc11f 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -1277,12 +1277,16 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
flags = FPRINT | TABLEPASS| CONDUCT
/obj/item/weapon/table_parts/reinforced
- name = "table parts"
+ name = "reinforced table parts"
icon = 'items.dmi'
icon_state = "reinf_tableparts"
m_amt = 7500
flags = FPRINT | TABLEPASS| CONDUCT
+/obj/item/weapon/table_parts/wood
+ name = "wooden table parts"
+ icon_state = "wood_tableparts"
+
/obj/item/weapon/tank
name = "tank"
icon = 'tank.dmi'
@@ -1797,6 +1801,28 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
reagents = R
R.my_atom = src
+/obj/item/weapon/grown/log
+ desc = "This is a log grown from a tower cap mushroom."
+ icon = 'harvest.dmi'
+ name = "Tower Cap Log"
+ icon_state = "logs"
+ force = 5
+ flags = TABLEPASS
+ throwforce = 5
+ w_class = 3.0
+ throw_speed = 3
+ throw_range = 3
+ plant_type = 2
+ origin_tech = "materials=1"
+ seed = "/obj/item/seeds/towermycelium"
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/circular_saw))
+ W.visible_message(" \red You make planks out of the [src]! ", 1)
+ for(var/i=0,i<2,i++)
+ new /obj/item/stack/sheet/wood (src.loc)
+ del(src)
+ return
/obj/item/weapon/grown/nettle // -- Skie
desc = "This is a nettle. It's probably not wise to touch it with bare hands..."
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 13f22dc7bad..8aca2cf99c6 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -1,5 +1,8 @@
/*
+CONTAINS:
+
Deployable items
+Barricades
for reference:
@@ -50,6 +53,107 @@ for reference:
*/
+
+//Barricades, maybe there will be a metal one later...
+/obj/barricade/wooden
+ name = "wooden barricade"
+ desc = "This space is blocked off by a wooden barricade."
+ icon = 'structures.dmi'
+ icon_state = "woodenbarricade"
+ anchored = 1.0
+ density = 1.0
+ var/health = 100.0
+ var/maxhealth = 100.0
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if (istype(W, /obj/item/stack/sheet/wood))
+ if (src.health < src.maxhealth)
+ for(var/mob/O in viewers(src, null))
+ O << "\red [user] begins to repair the [src]!"
+ if(do_after(user,20))
+ src.health = src.maxhealth
+ W:use(1)
+ for(var/mob/O in viewers(src, null))
+ O << "\red [user] repairs the [src]!"
+ return
+ else
+ return
+ return
+ else
+ switch(W.damtype)
+ if("fire")
+ src.health -= W.force * 1
+ if("brute")
+ src.health -= W.force * 0.75
+ else
+ if (src.health <= 0)
+ for(var/mob/O in viewers(src, null))
+ O << "\red The barricade is smashed appart!"
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ del(src)
+ ..()
+
+ ex_act(severity)
+ switch(severity)
+ if(1.0)
+ for(var/mob/O in viewers(src, null))
+ O << "\red The barricade is blown appart!"
+ del(src)
+ return
+ if(2.0)
+ src.health -= 25
+ if (src.health <= 0)
+ for(var/mob/O in viewers(src, null))
+ O << "\red The barricade is blown appart!"
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ del(src)
+ return
+
+ meteorhit()
+ for(var/mob/O in viewers(src, null))
+ O << "\red The barricade is smashed appart!"
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ new /obj/item/stack/sheet/wood(get_turf(src))
+ del(src)
+ return
+
+ blob_act()
+ src.health -= 25
+ if (src.health <= 0)
+ for(var/mob/O in viewers(src, null))
+ O << "\red The blob eats through the barricade!"
+ del(src)
+ return
+
+ CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff.
+ if(air_group || (height==0))
+ return 1
+ if (mover.flags & 2)
+ return 1
+ else
+ return 0
+
+/* bullet_act(flag, A as obj)
+ switch(flag)
+ if (PROJECTILE_BULLET)
+ src.health -= 20
+ if (PROJECTILE_WEAKBULLET) //Detective's revolver fires marshmallows
+ src.health -= 2
+ if (PROJECTILE_LASER)
+ src.health -= 20
+ if (PROJECTILE_PULSE)
+ src.health -=50
+ if (src.health <= 0)
+ src.explode()
+These should not block bullets/N */
+
+//Actual Deployable machinery stuff
+
/obj/machinery/depolyable
name = "deployable"
desc = "deployable"
diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm
index 2ed7a40b7c4..9b8a1cdb90e 100644
--- a/code/game/machinery/hydroponics.dm
+++ b/code/game/machinery/hydroponics.dm
@@ -419,25 +419,23 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
// Antitoxin binds shit pretty well. So the tox goes significantly down
if(S.reagents.has_reagent("anti_toxin", 1))
- src.toxic -= round(S.reagents.get_reagent_amount("anti_toxin")*1.25)
+ src.toxic -= round(S.reagents.get_reagent_amount("anti_toxin")*2)
// NIGGA, YOU JUST WENT ON FULL RETARD.
if(S.reagents.has_reagent("toxin", 1))
- src.toxic += round(S.reagents.get_reagent_amount("toxin")*2.5)
-
- // Milk contains some sugars as well as water. Makes for shitty nutrient, but hey
+ src.toxic += round(S.reagents.get_reagent_amount("toxin")*2)
+ // Milk is good for humans, but bad for plants. The sugars canot be used by ploants, and the milk fat fuck up growth. Not shrooms though. I can't deal with this now...
if(S.reagents.has_reagent("milk", 1))
- src.health += round(S.reagents.get_reagent_amount("milk")*0.1)
- src.nutrilevel += round(S.reagents.get_reagent_amount("milk")*0.04)
- src.waterlevel += round(S.reagents.get_reagent_amount("milk")*0.8)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("milk")*0.1)
+ src.waterlevel += round(S.reagents.get_reagent_amount("milk")*0.9)
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
if(S.reagents.has_reagent("beer", 1))
src.health -= round(S.reagents.get_reagent_amount("beer")*0.05)
- src.nutrilevel += round(S.reagents.get_reagent_amount("beer")*0.04)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("beer")*0.25)
src.waterlevel += round(S.reagents.get_reagent_amount("beer")*0.7)
// You're an idiot of thinking that one of the most corrosive and deadly gasses would be beneficial
@@ -460,19 +458,26 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(S.reagents.has_reagent("phosphorus", 1))
src.health -= round(S.reagents.get_reagent_amount("phosphorus")*0.75)
- src.nutrilevel += round(S.reagents.get_reagent_amount("phosphorus")*0.08)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("phosphorus")*0.1)
src.waterlevel -= round(S.reagents.get_reagent_amount("phosphorus")*0.5)
src.weedlevel -= rand(1,2)
- // Eh whatever. It shouldn't be possible, but still
+ // Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though...
if(S.reagents.has_reagent("sugar", 1))
- src.nutrilevel += round(S.reagents.get_reagent_amount("sugar")*0.09)
-
-
+ src.weedlevel += rand(1,2)
+ src.pestlevel += rand(1,2)
+ src.nutrilevel+= round(S.reagents.get_reagent_amount("sugar")*0.1)
+ // It is water!
if(S.reagents.has_reagent("water", 1))
- src.waterlevel += round(S.reagents.get_reagent_amount("water")*0.5)
+ src.waterlevel += round(S.reagents.get_reagent_amount("water")*1)
+
+ // A variety of nutrients are dissolved in club soda, without sugar. These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
+ if(S.reagents.has_reagent("sodawater", 1))
+ src.waterlevel += round(S.reagents.get_reagent_amount("sodawater")*1)
+ src.health += round(S.reagents.get_reagent_amount("sodawater")*0.1)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("sodawater")*0.1)
// Man, you guys are retards
@@ -498,25 +503,33 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
// Healing
if(S.reagents.has_reagent("cryoxadone", 1))
- src.health += round(S.reagents.get_reagent_amount("cryoxadone")*0.5)
+ src.health += round(S.reagents.get_reagent_amount("cryoxadone")*3)
+ src.toxic -= round(S.reagents.get_reagent_amount("cryoxadone")*3)
- // FINALLY IMPLEMENTED
+ // FINALLY IMPLEMENTED, Ammonia is bad ass.
if(S.reagents.has_reagent("ammonia", 1))
- src.health += round(S.reagents.get_reagent_amount("ammonia")*0.1)
- src.nutrilevel += round(S.reagents.get_reagent_amount("ammonia")*0.05)
+ src.health += round(S.reagents.get_reagent_amount("ammonia")*0.5)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("ammonia")*1)
- // FINALLY IMPLEMENTED
+ // FINALLY IMPLEMENTED, This is more bad ass, and pest get hurt by the crossive nature of it, not the plant
if(S.reagents.has_reagent("diethylamine", 1))
- src.health += round(S.reagents.get_reagent_amount("diethylamine")*0.2)
- src.nutrilevel += round(S.reagents.get_reagent_amount("diethylamine")*0.1)
+ src.health += round(S.reagents.get_reagent_amount("diethylamine")*1)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("diethylamine")*2)
+ src.pestlevel -= rand(1,2)
+
+ // Compost, effectively
+
+ if(S.reagents.has_reagent("nutriment", 1))
+ src.health += round(S.reagents.get_reagent_amount("nutriment")*0.5)
+ src.nutrilevel += round(S.reagents.get_reagent_amount("nutriment")*1)
// Poor man's mutagen.
if(S.reagents.has_reagent("radium", 1))
src.health -= round(S.reagents.get_reagent_amount("radium")*1.5)
- src.toxic -= round(S.reagents.get_reagent_amount("radium")*2)
+ src.toxic += round(S.reagents.get_reagent_amount("radium")*2)
if(S.reagents.has_reagent("radium", 10))
switch(rand(100))
if (91 to 100) src.plantdies()
@@ -579,12 +592,16 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
user << "-Weed level: \blue [src.weedlevel]/10"
user << "-Pest level: \blue [src.pestlevel]/10"
user << "-Toxicity level: \blue [src.toxic]/100"
+ user << "-Water level: \blue [src.waterlevel]/100"
+ user << "-Nutrition level: \blue [src.nutrilevel]/100"
user << ""
else
user << "No plant found."
user << "-Weed level: \blue [src.weedlevel]/10"
user << "-Pest level: \blue [src.pestlevel]/10"
user << "-Toxicity level: \blue [src.toxic]/100"
+ user << "-Water level: \blue [src.waterlevel]/100"
+ user << "-Nutrition level: \blue [src.nutrilevel]/100"
user << ""
else if (istype(O, /obj/item/weapon/plantbgone))
diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm
index 240e89335ce..0c3693e0108 100644
--- a/code/game/objects/items/weapons/table_rack_parts.dm
+++ b/code/game/objects/items/weapons/table_rack_parts.dm
@@ -2,6 +2,7 @@
CONTAINS:
TABLE PARTS
REINFORCED TABLE PARTS
+WOODEN TABLE PARTS
RACK PARTS
*/
@@ -35,7 +36,32 @@ RACK PARTS
del(src)
return
+// WOODEN TABLE PARTS
+/obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if (istype(W, /obj/item/weapon/wrench))
+ new /obj/item/stack/sheet/wood( src.loc )
+ //SN src = null
+ del(src)
+/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
+ var/state = input(user, "What type of table?", "Assembling Table", null) in list( "sides", "corners", "alone" )
+ var/direct = SOUTH
+ var/i_state
+ if(state == "alone")
+ i_state = "woodtable"
+ else if (state == "corners")
+ direct = input(user, "Direction?", "Assembling Table", null) in list( "NORTHWEST", "NORTHEAST", "SOUTHWEST", "SOUTHEAST" )
+ i_state = "woodentable"
+ else if (state == "sides")
+ direct = input(user, "Direction?", "Assembling Table", null) in list( "NORTH", "EAST", "SOUTH", "WEST" )
+ i_state = "woodentable"
+ var/obj/table/T = new /obj/table/woodentable( user.loc )
+ T.icon_state = i_state
+ T.dir = text2dir(direct)
+ T.add_fingerprint(user)
+ del(src)
+ return
// REINFORCED TABLE PARTS
diff --git a/code/game/objects/stacks/stack.dm b/code/game/objects/stacks/stack.dm
index 8570d435ff2..f2b31dcea31 100644
--- a/code/game/objects/stacks/stack.dm
+++ b/code/game/objects/stacks/stack.dm
@@ -5,6 +5,7 @@
rmetal
glass
rglass
+ wood planks
floor tiles
metal rods
*/
diff --git a/code/game/objects/stacks/wood.dm b/code/game/objects/stacks/wood.dm
new file mode 100644
index 00000000000..6a3d5ead31e
--- /dev/null
+++ b/code/game/objects/stacks/wood.dm
@@ -0,0 +1,14 @@
+/*
+CONTAINS:
+WOOD PLANKS
+*/
+
+var/global/list/datum/stack_recipe/wood_recipes = list ( \
+ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \
+ new/datum/stack_recipe("wooden barricade", /obj/barricade/wooden, 5, time = 30, one_per_turf = 1, on_floor = 1),\
+ )
+
+/obj/item/stack/sheet/wood
+ New(var/loc, var/amount=null)
+ recipes = wood_recipes
+ return ..()
\ No newline at end of file
diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm
index d03232cdc81..64278ceec21 100644
--- a/code/game/objects/tables_racks.dm
+++ b/code/game/objects/tables_racks.dm
@@ -1,3 +1,10 @@
+/*
+CONTAINS:
+TABLE AND RACK OBJECT INTERATIONS
+*/
+
+
+//TABLE
/obj/table/ex_act(severity)
switch(severity)
@@ -35,6 +42,8 @@
O << text("\red [] smashes the table apart!", usr)
if(istype(src, /obj/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
+ else if(istype(src, /obj/table/woodentable))
+ new/obj/item/weapon/table_parts/wood( src.loc )
else
new /obj/item/weapon/table_parts( src.loc )
src.density = 0
@@ -56,6 +65,8 @@
O << text("\red [] slices the table apart!", user)
if(istype(src, /obj/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
+ else if(istype(src, /obj/table/woodentable))
+ new/obj/item/weapon/table_parts/wood( src.loc )
else
new /obj/item/weapon/table_parts( src.loc )
src.density = 0
@@ -70,6 +81,8 @@
O << text("\red [] smashes the table apart!", usr)
if(istype(src, /obj/table/reinforced))
new /obj/item/weapon/table_parts/reinforced( src.loc )
+ else if(istype(src, /obj/table/woodentable))
+ new/obj/item/weapon/table_parts/wood( src.loc )
else
new /obj/item/weapon/table_parts( src.loc )
src.density = 0
@@ -141,6 +154,48 @@
if(W && W.loc) W.loc = src.loc
return
+//WOODEN TABLES
+/obj/table/woodentable/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if (istype(W, /obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = W
+ if(G.state<2)
+ user << "\red You need a better grip to do that!"
+ return
+ G.affecting.loc = src.loc
+ G.affecting.weakened = 5
+ for(var/mob/O in viewers(world.view, src))
+ if (O.client)
+ O << text("\red [] puts [] on the wooden table.", G.assailant, G.affecting)
+ del(W)
+ return
+ if (istype(W, /obj/item/weapon/wrench))
+ user << "\blue Now disassembling the wooden table"
+ playsound(src.loc, 'Ratchet.ogg', 50, 1)
+ sleep(50)
+ new /obj/item/weapon/table_parts/wood( src.loc )
+ playsound(src.loc, 'Deconstruct.ogg', 50, 1)
+ del(src)
+ return
+ if(isrobot(user))
+ return
+ if(istype(W, /obj/item/weapon/blade))
+ var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
+ spark_system.set_up(5, 0, src.loc)
+ spark_system.start()
+ playsound(src.loc, 'blade1.ogg', 50, 1)
+ playsound(src.loc, "sparks", 50, 1)
+ for(var/mob/O in viewers(user, 4))
+ O.show_message(text("\blue The wooden table was sliced apart by []!", user), 1, text("\red You hear wood coming apart."), 2)
+ new /obj/item/weapon/table_parts/wood( src.loc )
+ del(src)
+ return
+
+ user.drop_item()
+ if(W && W.loc) W.loc = src.loc
+ return
+
+//REINFORCED TABLES
/obj/table/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/grab))
@@ -209,6 +264,8 @@
if(W && W.loc) W.loc = src.loc
return
+//RACKS
+
/obj/rack/ex_act(severity)
switch(severity)
if(1.0)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 575271bdb41..dc16ec8f94b 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -526,6 +526,8 @@
thermal_protection += 0.2
if(wear_suit && (wear_suit.flags & SUITSPACE))
thermal_protection += 3
+ if(w_uniform && (w_uniform.flags & SUITSPACE))
+ thermal_protection += 3
if(head && (head.flags & HEADSPACE))
thermal_protection += 1
if(src.mutations & 2)
diff --git a/icons/obj/harvest.dmi b/icons/obj/harvest.dmi
index 32c6359dd51..3a7e20e16b0 100644
Binary files a/icons/obj/harvest.dmi and b/icons/obj/harvest.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 45a38386673..12620e5b12b 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index f042f838c4a..3638c808872 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 8e125b70d7a..c31e2fc5f88 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -571,6 +571,7 @@
#include "code\game\objects\stacks\glass.dm"
#include "code\game\objects\stacks\metal.dm"
#include "code\game\objects\stacks\stack.dm"
+#include "code\game\objects\stacks\wood.dm"
#include "code\game\objects\storage\backpack.dm"
#include "code\game\objects\storage\bible.dm"
#include "code\game\objects\storage\briefcase.dm"