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"