diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index 31d8e55b..c7d1f8eb 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -87,6 +87,7 @@ #define CAT_ROBOT "Robots" #define CAT_MISC "Misc" #define CAT_PRIMAL "Tribal" +//#define CAT_CARPENTRY "Carpentry" need to get this to work #define CAT_CLOTHING "Clothing" #define CAT_FOOD "Foods" #define CAT_BREAD "Breads" diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 7c683455..5f6c0c50 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -61,7 +61,12 @@ /obj/item/clothing/gloves, /obj/item/holosign_creator, /obj/item/forcefield_projector, - /obj/item/assembly/signaler + /obj/item/assembly/signaler, + /obj/item/carpentry/handsaw, + /obj/item/carpentry/hammer, + /obj/item/carpentry/sandpaper, + /obj/item/carpentry/borer, + /obj/item/carpentry/glue )) STR.can_hold = can_hold diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 7fc6e4f2..42d70fa3 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -397,11 +397,11 @@ name = "Carpentry Crate" desc = "Make money at cargo by learning some carpentry and making custom furniture." cost = 1000 - contains = list(/obj/item/handsaw, - /obj/item/hammer, - /obj/item/glue, - /obj/item/borer, - /obj/item/sandpaper) + contains = list(/obj/item/carpentry/handsaw, + /obj/item/carpentry/hammer, + /obj/item/carpentry/glue, + /obj/item/carpentry/borer, + /obj/item/carpentry/sandpaper) crate_name = "carpentry crate" diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 0fb46c3e..1f4bf900 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -9,6 +9,7 @@ CAT_PRIMAL, CAT_FOOD, CAT_CLOTHING) + //CAT_CARPENTRY var/list/subcategories = list( list( //Weapon subcategories CAT_WEAPON, @@ -439,4 +440,4 @@ /datum/mind/proc/teach_crafting_recipe(R) if(!learned_recipes) learned_recipes = list() - learned_recipes |= R \ No newline at end of file + learned_recipes |= R diff --git a/hyperstation/code/modules/cargo/exports/sweatshop.dm b/hyperstation/code/modules/cargo/exports/sweatshop.dm index 326364df..623ee585 100644 --- a/hyperstation/code/modules/cargo/exports/sweatshop.dm +++ b/hyperstation/code/modules/cargo/exports/sweatshop.dm @@ -1,4 +1,24 @@ -/datum/export/sweatshop +/datum/export/sweatshop/stool cost = 850 - unit_name = "custom furniture" + unit_name = "custom stool" export_types = list(/obj/item/processed/wood/stool) + +/datum/export/sweatshop/cushion + cost = 300 + unit_name = "cloth cushion" + export_types = list(/obj/item/cushion) + +/datum/export/sweatshop/cushionsilk + cost = 500 + unit_name = "silk cushion" + export_types = list(/obj/item/cushion) + +/datum/export/sweatshop/stool/cushioncloth + cost = 1800 + unit_name = "cushioned stool (cloth)" + export_types = list(/obj/item/processed/wood/stoolcloth) + +/datum/export/sweatshop/stool/cushionsilk + cost = 2400 + unit_name = "cushioned stool (cloth)" + export_types = list(/obj/item/processed/wood/stoolsilk) diff --git a/hyperstation/code/modules/cargo/sweatshop/sweatshop.dm b/hyperstation/code/modules/cargo/sweatshop/sweatshop.dm index 351bcd87..c347a961 100644 --- a/hyperstation/code/modules/cargo/sweatshop/sweatshop.dm +++ b/hyperstation/code/modules/cargo/sweatshop/sweatshop.dm @@ -1,9 +1,13 @@ //THE TOOLS +/obj/item/carpentry + name = "carpentry" + desc = "You shouldn't be seeing this!" + icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' + usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') -/obj/item/handsaw +/obj/item/carpentry/handsaw name = "handsaw" desc = "A shoddy tool used to process wood into smaller segments." - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' icon_state = "handsaw" slot_flags = ITEM_SLOT_BACK force = 8 @@ -12,10 +16,9 @@ materials = list(MAT_METAL=50) attack_verb = list("slashed", "sawed") -/obj/item/hammer +/obj/item/carpentry/hammer name = "hammer" desc = "A tool used to manually bash nails into place." - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' icon_state = "hammer" slot_flags = ITEM_SLOT_BELT force = 7 @@ -24,10 +27,9 @@ materials = list(MAT_METAL=100) attack_verb = list("bonked", "nailed") -/obj/item/glue +/obj/item/carpentry/glue name = "glue" desc = "Used to haphazardly stick things together; secured by the toughest Monkey Glue(TM)." - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' icon_state = "glue" force = 0 sharpness = FALSE @@ -35,10 +37,9 @@ materials = list(MAT_PLASTIC=25) attack_verb = list("glued", "coughed") -/obj/item/borer +/obj/item/carpentry/borer name = "manual borer" desc = "An incredibly awful tool used to manually drill holes into something... Surely there's a better option." - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' icon_state = "borer" force = 3 sharpness = TRUE @@ -46,10 +47,9 @@ materials = list(MAT_METAL=25) attack_verb = list("bored", "drilled") -/obj/item/sandpaper +/obj/item/carpentry/sandpaper name = "sandpaper strip" desc = "A strip of sandpaper, commonly used for sanding down rough surfaces into a more smooth shape." - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' icon_state = "sandpaper" force = 1 sharpness = FALSE @@ -68,57 +68,68 @@ materials = list(MAT_METAL=10) attack_verb = list("nailed", "screwed") -/obj/item/processed - name = "Generic Processed Item" - desc = "You shouldn't see this!" - icon = 'hyperstation/icons/obj/cargo/sweatshop/sweatshop.dmi' +/obj/item/cushion + name = "basic cushion" + desc = "Beats sitting on the floor." + icon = 'hyperstation/icons/obj/cargo/sweatshop/cloth.dmi' + icon_state = "clothcushion" + force = 0 + sharpness = FALSE + w_class = WEIGHT_CLASS_NORMAL + attack_verb = list("thomped", "thwacked") + +/obj/item/cushion/silk + name = "silk cushion" + desc = "How'd it turn red?!" + icon_state = "silkcushion" //BASIC RECIPES - To do, add sound. As well as refactor everything in a more smart way so we can add the possibility of multiple wood types in the future. - +//saw a plank into two platforms /obj/item/processed/wood/plank/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/handsaw)) + if(istype(I, /obj/item/carpentry/handsaw)) to_chat(user," You begin to saw [src] in half...") - if(do_after(user, 40)) - new /obj/item/processed/wood/platform(loc) - new /obj/item/processed/wood/platform(loc) //send help i dont know how to make two in the same line lmfao + if(do_after(user, 40) && isturf(loc)) + new src.sawobj(loc) + new src.sawobj(loc) //send help i dont know how to make two in the same line lmfao to_chat(user, " You saw [src] in half.") qdel(src) else to_chat(user, "You need to hold still to saw [src]!") else ..() - +//saw a platform into four blocks /obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/handsaw)) + if(istype(I, /obj/item/carpentry/handsaw)) to_chat(user," You begin cut [src] into smaller pieces...") - if(do_after(user, 20)) - new /obj/item/processed/wood/block(loc) - new /obj/item/processed/wood/block(loc) - new /obj/item/processed/wood/block(loc) - new /obj/item/processed/wood/block(loc) + if(do_after(user, 20) && isturf(loc)) + new src.sawobj(loc) + new src.sawobj(loc) + new src.sawobj(loc) + new src.sawobj(loc) to_chat(user, " You cut [src] into four pieces.") qdel(src) else to_chat(user, "You need to hold still to saw [src]!") else ..() - +//sand a block into a peg /obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/sandpaper)) + if(istype(I, /obj/item/carpentry/sandpaper)) to_chat(user," You carefully begin to sand down [src]...") - if(do_after(user, 50)) - new /obj/item/processed/wood/peg(loc) + if(do_after(user, 50) && isturf(loc)) + new src.sandobj(loc) to_chat(user, " You smooth [src] into a peg.") qdel(src) else to_chat(user, "You need to hold still to sand [src]!") else ..() - +//cut heated metal into nails /obj/item/processed/metal/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/wirecutters)) to_chat(user," You tediously begin to cut [src] into several nails...") - if(do_after(user, 80)) + if(do_after(user, 80) && isturf(loc)) + new /obj/item/nails(loc) new /obj/item/nails(loc) to_chat(user, " You make some crude metal nails.") qdel(src) @@ -128,24 +139,24 @@ ..() //Covered in glue - +//cover a wooden block in glue /obj/item/processed/wood/block/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/glue)) - to_chat(user," You begin to glue down one end of the [src]...") - if(do_after(user, 10)) - new /obj/item/processed/wood/glueblock(loc) + if(istype(I, /obj/item/carpentry/glue)) + to_chat(user," You begin to glue down one end of [src]...") + if(do_after(user, 10) && isturf(loc)) + new src.glueobj(loc) to_chat(user, " You slap some glue onto [src].") qdel(src) else to_chat(user, "You need to hold still to glue [src]!") else ..() - +//cover a wooden peg in glue /obj/item/processed/wood/peg/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/glue)) + if(istype(I, /obj/item/carpentry/glue)) to_chat(user," You begin to glue down one end of the [src]...") - if(do_after(user, 10)) - new /obj/item/processed/wood/gluepeg(loc) + if(do_after(user, 10) && isturf(loc)) + new src.glueobj(loc) to_chat(user, " You slap some glue onto [src].") qdel(src) else @@ -154,12 +165,12 @@ ..() //Seats - +//bore a platform into a seat /obj/item/processed/wood/platform/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/borer)) + if(istype(I, /obj/item/carpentry/borer)) to_chat(user," You begin to cut four holes into [src]...") - if(do_after(user, 40)) - new /obj/item/processed/wood/seat(loc) + if(do_after(user, 40) && isturf(loc)) + new src.boreobj(loc) to_chat(user, " You drill four holes into [src].") qdel(src) else @@ -171,7 +182,7 @@ /obj/item/processed/wood/stool1/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/nails)) to_chat(user," You place nails into [src]...") - if(do_after(user, 20)) + if(do_after(user, 20) && isturf(loc)) new /obj/item/processed/wood/stool2(loc) to_chat(user, " The nails are ready to be hammered.") qdel(src) @@ -182,9 +193,9 @@ ..() /obj/item/processed/wood/stool2/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/hammer)) + if(istype(I, /obj/item/carpentry/hammer)) to_chat(user," You begin to hammer the [src]...") - if(do_after(user, 30)) + if(do_after(user, 30) && isturf(loc)) new /obj/item/processed/wood/stool3(loc) to_chat(user, " The nails are hammered into place.") qdel(src) @@ -194,9 +205,9 @@ ..() /obj/item/processed/wood/stool3/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/sandpaper)) + if(istype(I, /obj/item/carpentry/sandpaper)) to_chat(user," You begin to sand the [src]...") - if(do_after(user, 30)) + if(do_after(user, 30) && isturf(loc)) new /obj/item/processed/wood/stool4(loc) to_chat(user, " You sand down the [src].") qdel(src) @@ -208,7 +219,7 @@ /obj/item/processed/wood/stool4/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/processed/wood/glueblock)) to_chat(user," You add some finishing touches to the [src]...") - if(do_after(user, 30)) + if(do_after(user, 30) && isturf(loc)) new /obj/item/processed/wood/stool(loc) to_chat(user, " You complete the [src].") qdel(src) @@ -217,3 +228,29 @@ to_chat(user, "You need to hold still to refine [src]!") else ..() + +/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/cushion)) + to_chat(user," You secure a cloth cushion to [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stoolcloth(loc) + to_chat(user, " You add a cushion to [src].") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to detail [src]!") + else + ..() + +/obj/item/processed/wood/stool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/cushion/silk)) + to_chat(user," You secure a silk cushion to [src]...") + if(do_after(user, 30) && isturf(loc)) + new /obj/item/processed/wood/stoolsilk(loc) + to_chat(user, " You add a cushion to [src].") + qdel(src) + qdel(I) + else + to_chat(user, "You need to hold still to detail [src]!") + else + ..() diff --git a/hyperstation/code/modules/cargo/sweatshop/wooden.dm b/hyperstation/code/modules/cargo/sweatshop/wooden.dm index 2e4de904..9a6bb521 100644 --- a/hyperstation/code/modules/cargo/sweatshop/wooden.dm +++ b/hyperstation/code/modules/cargo/sweatshop/wooden.dm @@ -5,12 +5,19 @@ desc = "You shouldn't see this!" icon = 'hyperstation/icons/obj/cargo/sweatshop/wooden.dmi' sharpness = FALSE + attack_verb = list("slapped", "thunked") + var/sawobj = /obj/item/condom + var/glueobj = /obj/item/dildo + var/sandobj = /obj/item/carpentry/sandpaper + var/boreobj = /obj/item/carpentry/borer /obj/item/processed/wood/plank name = "processable wooden plank" desc = "A somewhat sturdy refined plank. This can be used in various applications." icon_state = "plank" - sharpness = FALSE + force = 3 + w_class = WEIGHT_CLASS_HUGE + sawobj = /obj/item/processed/wood/platform /obj/item/processed/wood/platform name = "wood platform" @@ -18,7 +25,8 @@ icon_state = "platform" force = 3 w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("slapped", "thunked") + sawobj = /obj/item/processed/wood/block + boreobj = /obj/item/processed/wood/seat /obj/item/processed/wood/block name = "wood block" @@ -26,7 +34,8 @@ icon_state = "block" force = 2 w_class = WEIGHT_CLASS_SMALL - attack_verb = list("slapped", "thunked") + sandobj = /obj/item/processed/wood/peg + glueobj = /obj/item/processed/wood/glueblock /obj/item/processed/wood/peg name = "wood peg" @@ -35,6 +44,7 @@ force = 1 w_class = WEIGHT_CLASS_TINY attack_verb = list("donked", "thunked") + glueobj = /obj/item/processed/wood/gluepeg //glue @@ -98,5 +108,21 @@ name = "custom stool" desc = "An intricite, custom stool." icon_state = "stool" - force = 4 + force = 10 + w_class = WEIGHT_CLASS_BULKY + +//Let's make it soft and more expensive + +/obj/item/processed/wood/stoolcloth + name = "cloth-cushioned stool" + desc = "A custom stool with a cloth cushion." + icon_state = "stoolcloth" + force = 10 + w_class = WEIGHT_CLASS_BULKY + +/obj/item/processed/wood/stoolsilk + name = "cloth-cushioned stool" + desc = "A custom stool with a silk cushion." + icon_state = "stoolsilk" + force = 11 //lol w_class = WEIGHT_CLASS_BULKY diff --git a/hyperstation/code/modules/crafting/recipes.dm b/hyperstation/code/modules/crafting/recipes.dm index 7ab22e60..3e822cc6 100644 --- a/hyperstation/code/modules/crafting/recipes.dm +++ b/hyperstation/code/modules/crafting/recipes.dm @@ -30,3 +30,17 @@ reqs = list(/obj/item/processed/wood/seat = 1, /obj/item/processed/wood/gluepeg = 4) category = CAT_MISC result = /obj/item/processed/wood/stool1 + +/datum/crafting_recipe/clothcushion + name = "Cloth Cushion" + reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/cotton = 5) + tools = list(TOOL_WIRECUTTER) + category = CAT_MISC + result = /obj/item/cushion + +/datum/crafting_recipe/silkcushion + name = "Silk Cushion" + reqs = list(/obj/item/stack/sheet/silk = 2, /obj/item/stack/sheet/cotton = 5) + tools = list(TOOL_WIRECUTTER) + category = CAT_MISC + result = /obj/item/cushion/silk diff --git a/hyperstation/icons/obj/cargo/sweatshop/cloth.dmi b/hyperstation/icons/obj/cargo/sweatshop/cloth.dmi new file mode 100644 index 00000000..bd71472c Binary files /dev/null and b/hyperstation/icons/obj/cargo/sweatshop/cloth.dmi differ diff --git a/hyperstation/icons/obj/cargo/sweatshop/wooden.dmi b/hyperstation/icons/obj/cargo/sweatshop/wooden.dmi index 1e788a11..6a190f8d 100644 Binary files a/hyperstation/icons/obj/cargo/sweatshop/wooden.dmi and b/hyperstation/icons/obj/cargo/sweatshop/wooden.dmi differ diff --git a/tgstation.dme b/tgstation.dme index d1a5e77c..2363005b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3036,6 +3036,7 @@ #include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm" #include "hyperstation\code\modules\arousal\arousalhud.dm" #include "hyperstation\code\modules\cargo\exports\sweatshop.dm" +#include "hyperstation\code\modules\cargo\packs\misc.dm" #include "hyperstation\code\modules\cargo\sweatshop\metal.dm" #include "hyperstation\code\modules\cargo\sweatshop\sweatshop.dm" #include "hyperstation\code\modules\cargo\sweatshop\wooden.dm"