diff --git a/code/__DEFINES/icon_smoothing_defines.dm b/code/__DEFINES/icon_smoothing_defines.dm index 0d2fdaf958a..882a2c4b2cc 100644 --- a/code/__DEFINES/icon_smoothing_defines.dm +++ b/code/__DEFINES/icon_smoothing_defines.dm @@ -57,11 +57,13 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_CARPET_CYAN S_TURF(13) #define SMOOTH_GROUP_CARPET_GREEN S_TURF(14) #define SMOOTH_GROUP_CARPET_ROYALBLACK S_TURF(15) -#define SMOOTH_GROUP_CARPET_ROYALBLUE S_TURF(17) +#define SMOOTH_GROUP_CARPET_ROYALBLUE S_TURF(16) #define SMOOTH_GROUP_CARPET_RED S_TURF(17) #define SMOOTH_GROUP_CARPET_ORANGE S_TURF(18) #define SMOOTH_GROUP_CARPET_PURPLE S_TURF(19) +#define SMOOTH_GROUP_BAMBOO S_TURF(20) ///turf/simulated/floor/bamboo + #define SMOOTH_GROUP_SIMULATED_TURFS S_TURF(24) ///turf/simulated #define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(25) ///turf/simulated/wall/material #define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(26) ///turf/simulated/wall/r_wall/syndicate, /turf/simulated/indestructible/syndicate @@ -91,6 +93,7 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_IRON_WALLS S_OBJ(9) ///turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron #define SMOOTH_GROUP_ABDUCTOR_WALLS S_OBJ(10) ///turf/simulated/wall/mineral/abductor, /obj/structure/falsewall/abductor #define SMOOTH_GROUP_TITANIUM_WALLS S_OBJ(11) ///turf/simulated/wall/mineral/titanium, /obj/structure/falsewall/titanium +#define SMOOTH_GROUP_ASTEROID_WALLS S_OBJ(12) ///turf/simulated/mineral, /obj/structure/falsewall/rock_ancient #define SMOOTH_GROUP_PLASTITANIUM_WALLS S_OBJ(13) ///turf/simulated/wall/mineral/plastitanium, /obj/structure/falsewall/plastitanium #define SMOOTH_GROUP_SURVIVAL_TIANIUM_POD S_OBJ(14) ///turf/simulated/wall/mineral/titanium/survival/pod, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod #define SMOOTH_GROUP_HIERO_WALL S_OBJ(15) ///obj/effect/temp_visual/elite_tumor_wall, /obj/effect/temp_visual/hierophant/wall @@ -98,7 +101,6 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_REGULAR_WALLS S_OBJ(17) ///turf/simulated/wall, /obj/structure/falsewall #define SMOOTH_GROUP_REINFORCED_WALLS S_OBJ(18) ///turf/simulated/wall/r_wall, /obj/structure/falsewall/reinforced #define SMOOTH_GROUP_CULT_WALLS S_OBJ(19) ///turf/simulated/wall/cult -#define SMOOTH_GROUP_ASTEROID_WALLS S_OBJ(12) ///turf/simulated/mineral, /obj/structure/falsewall/rock_ancient #define SMOOTH_GROUP_WINDOW_FULLTILE S_OBJ(21) ///turf/simulated/indestructible/fakeglass, /obj/structure/window/full/basic, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced, /obj/structure/window/full/reinforced #define SMOOTH_GROUP_WINDOW_FULLTILE_BRASS S_OBJ(22) ///obj/structure/window/brass/fulltile diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index 4446dde3a26..f9bd2931c64 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -1,18 +1,30 @@ /datum/component/caltrop + ///Minimum damage when crossed var/min_damage + + ///Maximum damage when crossed var/max_damage + + ///Probability of stunning and doing daamge var/probability + + ///Duration of weaken when crossed + var/weaken_duration + + ///Shoebypassing, walking interaction, silence var/flags var/cooldown = 0 -/datum/component/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _flags = NONE) - min_damage = _min_damage - max_damage = max(_min_damage, _max_damage) - probability = _probability - flags = _flags +/datum/component/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _weaken_duration = 6 SECONDS, _flags = NONE) + src.min_damage = _min_damage + src.max_damage = max(_min_damage, _max_damage) + src.probability = _probability + src.weaken_duration = _weaken_duration + src.flags = _flags - RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), PROC_REF(Crossed)) +/datum/component/caltrop/RegisterWithParent() + RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(Crossed)) /datum/component/caltrop/proc/Crossed(datum/source, atom/movable/AM) var/atom/A = parent @@ -22,41 +34,51 @@ if(!prob(probability)) return - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - if(HAS_TRAIT(H, TRAIT_PIERCEIMMUNE)) - return + if(!ishuman(AM)) + return - if((flags & CALTROP_IGNORE_WALKERS) && H.m_intent == MOVE_INTENT_WALK) - return + var/mob/living/carbon/human/H = AM - var/picked_def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) - var/obj/item/organ/external/O = H.get_organ(picked_def_zone) - if(!istype(O)) - return - if(O.is_robotic()) - return + if(HAS_TRAIT(H, TRAIT_PIERCEIMMUNE)) + return - var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) + if((flags & CALTROP_IGNORE_WALKERS) && H.m_intent == MOVE_INTENT_WALK) + return - if(!(flags & CALTROP_BYPASS_SHOES) && (H.shoes || feetCover)) - return + var/picked_def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + var/obj/item/organ/external/O = H.get_organ(picked_def_zone) - if(H.flying || H.floating || H.buckled) - return + if(!istype(O)) + return - if(IS_HORIZONTAL(H) && HAS_TRAIT(H, TRAIT_CONTORTED_BODY)) - return TRUE + if(O.is_robotic()) + return - var/damage = rand(min_damage, max_damage) + var/feet_cover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) + var/bypass_shoes = flags & CALTROP_BYPASS_SHOES - H.apply_damage(damage, BRUTE, picked_def_zone) + // doesn't penetrate if feet are covered + if(!bypass_shoes && (H.shoes || feet_cover)) + return - if(cooldown < world.time - 10) //cooldown to avoid message spam. - if(!H.incapacitated(ignore_restraints = TRUE)) - H.visible_message("[H] steps on [A].", "You step on [A]!") - else - H.visible_message("[H] slides on [A]!", "You slide on [A]!") + // doesn't penetrate shoes if feet are extra covered + if(bypass_shoes && (H.shoes && (H.shoes.flags & THICKMATERIAL))) + return - cooldown = world.time - H.Weaken(6 SECONDS) + if(H.flying || H.floating || H.buckled) + return + + if(IS_HORIZONTAL(H) && HAS_TRAIT(H, TRAIT_CONTORTED_BODY)) + return TRUE + + var/damage = rand(min_damage, max_damage) + H.apply_damage(damage, BRUTE, picked_def_zone) + + if(cooldown < world.time - 10) //cooldown to avoid message spam. + if(!H.incapacitated(ignore_restraints = TRUE)) + H.visible_message("[H] steps on [A].", "You step on [A]!") + else + H.visible_message("[H] slides on [A]!", "You slide on [A]!") + + cooldown = world.time + H.Weaken(weaken_duration) diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm index 9da207c6d01..815fcce26c9 100644 --- a/code/game/machinery/vendors/departmental_vendors.dm +++ b/code/game/machinery/vendors/departmental_vendors.dm @@ -208,6 +208,7 @@ /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, /obj/item/seeds/sugarcane = 3, + /obj/item/seeds/bamboo = 3, /obj/item/seeds/sunflower = 3, /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index ba66cfd4ce4..8f15849d83f 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -233,11 +233,6 @@ GLOBAL_LIST_INIT(wood_recipes, list( new /datum/stack_recipe("pew (left)", /obj/structure/chair/sofa/pew/left, 5, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("pew (right)", /obj/structure/chair/sofa/pew/right, 5, one_per_turf = TRUE, on_floor = TRUE), )), - new /datum/stack_recipe_list("bamboo benches", list( - new /datum/stack_recipe("bamboo bench (middle)", /obj/structure/chair/sofa/bamboo, 2, one_per_turf = TRUE, on_floor = TRUE), - new /datum/stack_recipe("bamboo bench (left)", /obj/structure/chair/sofa/bamboo/left, 2, one_per_turf = TRUE, on_floor = TRUE), - new /datum/stack_recipe("bamboo bench (right)", /obj/structure/chair/sofa/bamboo/right, 2, one_per_turf = TRUE, on_floor = TRUE), - )), null, new /datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 4 SECONDS), @@ -270,6 +265,47 @@ GLOBAL_LIST_INIT(wood_recipes, list( recipes = GLOB.wood_recipes return ..() +/* + * Bamboo + */ +GLOBAL_LIST_INIT(bamboo_recipes, list( + new /datum/stack_recipe("punji sticks trap", /obj/structure/punji_sticks, req_amount = 5, time = 3 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("bamboo spear", /obj/item/spear/bamboo, req_amount = 25, time = 9 SECONDS), + new /datum/stack_recipe("blow gun", /obj/item/gun/syringe/blowgun, req_amount = 10, time = 7 SECONDS), + new /datum/stack_recipe("rice hat", /obj/item/clothing/head/rice_hat, req_amount = 10, time = 7 SECONDS), + null, + new /datum/stack_recipe("bamboo mat piece", /obj/item/stack/tile/bamboo, req_amount = 1, res_amount = 4, max_res_amount = 20), + new /datum/stack_recipe_list("tatami mats", list( + new /datum/stack_recipe("green tatami", /obj/item/stack/tile/bamboo/tatami, req_amount = 1, res_amount = 4, max_res_amount = 20), + new /datum/stack_recipe("purple tatami", /obj/item/stack/tile/bamboo/tatami/purple, req_amount = 1, res_amount = 4, max_res_amount = 20), + new /datum/stack_recipe("black tatami", /obj/item/stack/tile/bamboo/tatami/black, req_amount = 1, res_amount = 4, max_res_amount = 20), + )), + null, + new /datum/stack_recipe_list("bamboo benches", list( + new /datum/stack_recipe("bamboo bench (middle)", /obj/structure/chair/sofa/bamboo, req_amount = 3, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("bamboo bench (left)", /obj/structure/chair/sofa/bamboo/left, req_amount = 3, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("bamboo bench (right)", /obj/structure/chair/sofa/bamboo/right, req_amount = 3, time = 1 SECONDS, one_per_turf = TRUE, on_floor = TRUE) + )), + )) + +/obj/item/stack/sheet/bamboo + name = "bamboo cuttings" + desc = "Finely cut bamboo sticks." + singular_name = "cut bamboo stick" + icon = 'icons/obj/stacks/organic.dmi' + icon_state = "sheet-bamboo" + item_state = "sheet-bamboo" + resistance_flags = FLAMMABLE + sheettype = "bamboo" + merge_type = /obj/item/stack/sheet/bamboo + +/obj/item/stack/sheet/bamboo/New(loc, amount=null) + recipes = GLOB.bamboo_recipes + return ..() + +/obj/item/stack/sheet/bamboo/fifty + amount = 50 + /* * Cloth */ diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index 13acf7b06e4..2558b2dc017 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -3,19 +3,40 @@ * Recipe datum */ /datum/stack_recipe + /// Visible title of recipe var/title = "ERROR" + + /// Resulting typepath of crafted atom var/result_type + + /// Required stack amount to make var/req_amount = 1 + + /// Amount of atoms made var/res_amount = 1 + + /// Maximum amount of atoms made var/max_res_amount = 1 + + /// Time to make var/time = 0 - var/one_per_turf = 0 - var/on_floor = 0 - var/on_floor_or_lattice = 0 + + /// Only one resulting atom is allowed per turf + var/one_per_turf = FALSE + + /// Requires a floor underneath to make + var/on_floor = FALSE + + /// Requires a floor OR lattice underneath to make + var/on_floor_or_lattice = FALSE + + /// Requires a valid window location to make var/window_checks = FALSE + + /// Resulting atom is a cult structure var/cult_structure = FALSE -/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = 0, on_floor = 0, on_floor_or_lattice = 0, window_checks = FALSE, cult_structure = FALSE) +/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = FALSE, on_floor = FALSE, on_floor_or_lattice = FALSE, window_checks = FALSE, cult_structure = FALSE) src.title = title src.result_type = result_type src.req_amount = req_amount diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index d299e7a0eb9..47adcccace0 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -68,6 +68,52 @@ energy_type = /datum/robot_storage/energy/wood_tile is_cyborg = TRUE + +//Bamboo +/obj/item/stack/tile/bamboo + name = "bamboo mat pieces" + singular_name = "bamboo mat piece" + gender = PLURAL + desc = "A piece of a bamboo mat with a decorative trim." + icon_state = "tile_bamboo" + turf_type = /turf/simulated/floor/bamboo + merge_type = /obj/item/stack/tile/bamboo + parent_stack = TRUE + resistance_flags = FLAMMABLE + +/obj/item/stack/tile/bamboo/twenty + amount = 20 + +/obj/item/stack/tile/bamboo/tatami + name = "tatami with green rim" + singular_name = "green tatami floor tile" + icon_state = "tile_tatami_green" + turf_type = /turf/simulated/floor/bamboo/tatami + merge_type = /obj/item/stack/tile/bamboo/tatami + +/obj/item/stack/tile/bamboo/tatami/twenty + amount = 20 + +/obj/item/stack/tile/bamboo/tatami/purple + name = "tatami with purple rim" + singular_name = "purple tatami floor tile" + icon_state = "tile_tatami_purple" + turf_type = /turf/simulated/floor/bamboo/tatami/purple + merge_type = /obj/item/stack/tile/bamboo/tatami/purple + +/obj/item/stack/tile/bamboo/tatami/purple/twenty + amount = 20 + +/obj/item/stack/tile/bamboo/tatami/black + name = "tatami with black rim" + singular_name = "black tatami floor tile" + icon_state = "tile_tatami_black" + turf_type = /turf/simulated/floor/bamboo/tatami/black + merge_type = /obj/item/stack/tile/bamboo/tatami/black + +/obj/item/stack/tile/bamboo/tatami/black/twenty + amount = 20 + //Carpets /obj/item/stack/tile/carpet name = "carpet" diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index d2f28de7e2a..fe099a83823 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -321,6 +321,13 @@ throwforce = 22 armour_penetration_percentage = 15 //Enhanced armor piercing +//Blatant imitation of spear, but all natural. Also not valid for explosive modification. +/obj/item/spear/bamboo + name = "bamboo spear" + desc = "A haphazardly-constructed bamboo stick with a sharpened tip, ready to poke holes into unsuspecting people." + base_icon_state = "bamboo_spear" + icon_state = "bamboo_spear0" + throwforce = 22 //GREY TIDE /obj/item/spear/grey_tide diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d38b69822c9..3bff273939c 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -86,6 +86,9 @@ if(istype(W, /obj/item/stack/sheet/runed_metal)) to_chat(user, "You can't seem to make the metal bend.") return + if(istype(W, /obj/item/stack/sheet/bamboo)) // pending wall resprite(tm) + to_chat(user, "The bamboo doesn't seem to fit around the girder.") + return if(istype(W,/obj/item/stack/rods)) var/obj/item/stack/rods/S = W diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 6f01518ae99..e472f9b19e7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -424,7 +424,7 @@ resistance_flags = FLAMMABLE max_integrity = 70 buildstackamount = 2 - buildstacktype = /obj/item/stack/sheet/wood + buildstacktype = /obj/item/stack/sheet/bamboo /obj/structure/chair/sofa/bamboo/left icon_state = "bamboo_sofaend_left" @@ -453,7 +453,7 @@ resistance_flags = FLAMMABLE max_integrity = 70 buildstackamount = 2 - buildstacktype = /obj/item/stack/sheet/wood + buildstacktype = /obj/item/stack/sheet/bamboo /obj/item/chair name = "chair" @@ -497,8 +497,8 @@ /obj/item/chair/stool/bamboo name = "bamboo stool" desc = "Not the most comfortable, but vegan!" - item_state = "bamboo_stool" icon_state = "bamboo_stool_toppled" + item_state = "stool_bamboo" origin_type = /obj/structure/chair/stool/bamboo /obj/item/chair/attack_self(mob/user) diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 5f448fb6075..5a025355fa5 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -53,6 +53,7 @@ oxygen = 8 temperature = 500 +// Grass /turf/simulated/floor/grass name = "grass patch" icon = 'icons/turf/floors/grass.dmi' @@ -102,7 +103,6 @@ transform = null //Carpets - /turf/simulated/floor/carpet name = "carpet" icon = 'icons/turf/floors/carpet.dmi' @@ -204,9 +204,71 @@ oxygen = 0 nitrogen = 0 temperature = TCMB - //End of carpets +// Bamboo mats +/turf/simulated/floor/bamboo + name = "bamboo" + icon = 'icons/turf/floors/bamboo_mat.dmi' + icon_state = "mat-0" + base_icon_state = "mat" + floor_tile = /obj/item/stack/tile/bamboo + prying_tool_list = list(TOOL_SCREWDRIVER) + broken_states = list("bamboo-damaged") + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = list(SMOOTH_GROUP_TURF, SMOOTH_GROUP_BAMBOO) + canSmoothWith = list(SMOOTH_GROUP_BAMBOO) + footstep = FOOTSTEP_WOOD + barefootstep = FOOTSTEP_WOOD_BAREFOOT + clawfootstep = FOOTSTEP_WOOD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + +/turf/simulated/floor/bamboo/Initialize(mapload) + . = ..() + update_icon() + +/turf/simulated/floor/bamboo/update_icon_state() + if(!broken && !burnt) + if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + QUEUE_SMOOTH(src) + else + make_plating() + if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) + QUEUE_SMOOTH_NEIGHBORS(src) + +/turf/simulated/floor/bamboo/break_tile() + broken = TRUE + update_icon() + +/turf/simulated/floor/bamboo/burn_tile() + burnt = TRUE + update_icon() + +/turf/simulated/floor/bamboo/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + return FALSE + +/turf/simulated/floor/bamboo/airless + oxygen = 0 + nitrogen = 0 + temperature = TCMB + +// Bamboo tatami mat +/turf/simulated/floor/bamboo/tatami + desc = "A traditional Japanese floor mat." + icon_state = "bamboo-green" + broken_states = list("tatami-damaged") + floor_tile = /obj/item/stack/tile/bamboo/tatami + smoothing_flags = NONE + +/turf/simulated/floor/bamboo/tatami/purple + icon_state = "bamboo-purple" + floor_tile = /obj/item/stack/tile/bamboo/tatami/purple + +/turf/simulated/floor/bamboo/tatami/black + icon_state = "bamboo-black" + floor_tile = /obj/item/stack/tile/bamboo/tatami/black +// End of bamboo + /turf/simulated/floor/fakespace icon = 'icons/turf/space.dmi' icon_state = "0" diff --git a/code/modules/hydroponics/grown/misc_seeds.dm b/code/modules/hydroponics/grown/misc_seeds.dm index 6e4bf03af16..30bf347ab55 100644 --- a/code/modules/hydroponics/grown/misc_seeds.dm +++ b/code/modules/hydroponics/grown/misc_seeds.dm @@ -83,6 +83,32 @@ tastes = list("sugarcane" = 1) distill_reagent = "rum" +/obj/item/seeds/bamboo + name = "pack of bamboo seeds" + desc = "A plant known for its flexible and resistant logs." + icon_state = "seed-bamboo" + species = "bamboo" + plantname = "Bamboo" + product = /obj/item/grown/log/bamboo + lifespan = 80 + endurance = 70 + maturation = 15 + production = 2 + yield = 5 + potency = 50 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing.dmi' + icon_dead = "bamboo-dead" + genes = list(/datum/plant_gene/trait/repeated_harvest) + mutatelist = null + +/obj/item/grown/log/bamboo + seed = /obj/item/seeds/bamboo + name = "bamboo log" + desc = "A long and resistant bamboo log." + icon_state = "bamboo" + plank_type = /obj/item/stack/sheet/bamboo // this needs to get datumized :) + plank_name = "bamboo sticks" // Gatfruit /obj/item/seeds/gatfruit diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index aeed24e7541..6364f1629b0 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -102,6 +102,26 @@ /obj/item/grown/log/steel/CheckAccepted(obj/item/I) return FALSE +/* + * Punji sticks + */ +/obj/structure/punji_sticks + name = "punji sticks" + desc = "Don't step on this." + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "punji" + resistance_flags = FLAMMABLE + max_integrity = 30 + anchored = TRUE + +/obj/structure/punji_sticks/Initialize(mapload) + . = ..() + AddComponent(/datum/component/caltrop, 20, 30, 100, 6 SECONDS, CALTROP_BYPASS_SHOES) + +/obj/structure/punji_sticks/spikes + name = "wooden spikes" + icon_state = "woodspike" + /////////BONFIRES////////// /obj/structure/bonfire diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index c8f0a1e584e..cf5db27e82b 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -145,10 +145,8 @@ /obj/structure/flora/ash/cacti/Initialize(mapload) . = ..() - // min dmg 3, max dmg 6, prob(70) AddComponent(/datum/component/caltrop, 3, 6, 70) - /********* * Rocks * *********/ diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 39a292da958..8095a203e9d 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -399,3 +399,17 @@ /obj/item/gun/syringe/rapidsyringe/preloaded/beaker_blaster/attack_self(mob/living/user) // no printing infinite syringes. return + +/// craftable bamboo syringe gun +/obj/item/gun/syringe/blowgun + name = "blowgun" + desc = "Fire syringes at a short distance." + icon_state = "blowgun" + item_state = "gun" + +/obj/item/gun/syringe/blowgun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + visible_message("[user] shoots the blowgun!") + + user.adjustStaminaLoss(20, FALSE) + user.adjustOxyLoss(20) + return ..() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index b2ec803cffa..ff2a5af0b70 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -271,3 +271,4 @@ amount_per_transfer_from_this = 50 volume = 50 list_reagents = list("toxin" = 15, "pancuronium" = 10, "cyanide" = 5, "facid" = 10, "fluorine" = 10) + diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index e3d556355a9..8ceaabe419d 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -210,11 +210,3 @@ materials = list(MAT_BIOMASS = 400) build_path = /obj/item/clothing/accessory/holster category = list("initial","Leather and Cloth") - -/datum/design/rice_hat - name = "Rice hat" - id = "rice_hat" - build_type = BIOGENERATOR - materials = list(MAT_BIOMASS = 300) - build_path = /obj/item/clothing/head/rice_hat - category = list("initial","Leather and Cloth") diff --git a/icons/mob/inhands/chairs_lefthand.dmi b/icons/mob/inhands/chairs_lefthand.dmi index 7377787a63e..6744dd8fa30 100644 Binary files a/icons/mob/inhands/chairs_lefthand.dmi and b/icons/mob/inhands/chairs_lefthand.dmi differ diff --git a/icons/mob/inhands/chairs_righthand.dmi b/icons/mob/inhands/chairs_righthand.dmi index f04962de189..0809a7c0628 100644 Binary files a/icons/mob/inhands/chairs_righthand.dmi and b/icons/mob/inhands/chairs_righthand.dmi differ diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi index 7cb890d0548..53d11a4380b 100644 Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index bbbda0e17cd..6993a2881f0 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ diff --git a/icons/mob/inhands/sheet_lefthand.dmi b/icons/mob/inhands/sheet_lefthand.dmi index 54da11d53cd..3ef1e829bb2 100644 Binary files a/icons/mob/inhands/sheet_lefthand.dmi and b/icons/mob/inhands/sheet_lefthand.dmi differ diff --git a/icons/mob/inhands/sheet_righthand.dmi b/icons/mob/inhands/sheet_righthand.dmi index fcf36e763e6..a72bd9c24cc 100644 Binary files a/icons/mob/inhands/sheet_righthand.dmi and b/icons/mob/inhands/sheet_righthand.dmi differ diff --git a/icons/mob/inhands/weapons_lefthand.dmi b/icons/mob/inhands/weapons_lefthand.dmi index 807124c08e9..a5c22c4cef8 100644 Binary files a/icons/mob/inhands/weapons_lefthand.dmi and b/icons/mob/inhands/weapons_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons_righthand.dmi b/icons/mob/inhands/weapons_righthand.dmi index d29e5e741ea..afcbe22ddcc 100644 Binary files a/icons/mob/inhands/weapons_righthand.dmi and b/icons/mob/inhands/weapons_righthand.dmi differ diff --git a/icons/obj/chairs.dmi b/icons/obj/chairs.dmi index 05fa4847397..aa0095e0cef 100644 Binary files a/icons/obj/chairs.dmi and b/icons/obj/chairs.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 1564d17b53b..de9e8b65028 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi index 7951f304894..aca66699d70 100644 Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index 0e399f9354d..f9a854620ab 100644 Binary files a/icons/obj/hydroponics/growing.dmi and b/icons/obj/hydroponics/growing.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index cd11eb7b160..7ca0e6915c4 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/stacks/organic.dmi b/icons/obj/stacks/organic.dmi index 76b414b3244..38b7f195571 100644 Binary files a/icons/obj/stacks/organic.dmi and b/icons/obj/stacks/organic.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 4168f09ab9b..0d1820c1352 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/weapons/spears.dmi b/icons/obj/weapons/spears.dmi index 725e5a9718a..e774da4e0bc 100644 Binary files a/icons/obj/weapons/spears.dmi and b/icons/obj/weapons/spears.dmi differ diff --git a/icons/turf/floors/bamboo_mat.dmi b/icons/turf/floors/bamboo_mat.dmi new file mode 100644 index 00000000000..1bc197d6a03 Binary files /dev/null and b/icons/turf/floors/bamboo_mat.dmi differ