Ports TG bamboo and Punji Sticks (#24497)
* adds most things
* STOP BECOMING CRLF
* half the sprites ported
* adds floor turfs, hopefully
* adds bamboo stack recipes and parameter documentation for datum/stack_recipe
* adds the crude syringe and sprite
* Revert "adds the crude syringe and sprite"
This reverts commit d949332055.
* adds crude syringe and sprite
* nevermind, goon license moment
* bamboo walls, false walls, and sprites
* caltrops check for shoe thickmaterial flag
* added spear and fixed filepaths
* smoothing and caltrops are even more broken
* Fixes sprite smoothing and caltrop weirdness
* whitespace
* fixes tile stacking
* Henri review
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
* royal blue and red carpets no longer smooth
* henri review
* actual henri review, thanks git
* Henri review electric boogaloo
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
* removes bamboo walls (rip)
* Update code/game/turfs/simulated/floor/fancy_floor.dm
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
---------
Co-authored-by: cybercapitalism <98280110+cybercapitalism@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
@@ -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
|
||||
|
||||
@@ -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("<span class='danger'>[H] steps on [A].</span>", "<span class='userdanger'>You step on [A]!</span>")
|
||||
else
|
||||
H.visible_message("<span class='danger'>[H] slides on [A]!</span>", "<span class='userdanger'>You slide on [A]!</span>")
|
||||
// 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("<span class='danger'>[H] steps on [A].</span>", "<span class='userdanger'>You step on [A]!</span>")
|
||||
else
|
||||
H.visible_message("<span class='danger'>[H] slides on [A]!</span>", "<span class='userdanger'>You slide on [A]!</span>")
|
||||
|
||||
cooldown = world.time
|
||||
H.Weaken(weaken_duration)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -86,6 +86,9 @@
|
||||
if(istype(W, /obj/item/stack/sheet/runed_metal))
|
||||
to_chat(user, "<span class='warning'>You can't seem to make the metal bend.</span>")
|
||||
return
|
||||
if(istype(W, /obj/item/stack/sheet/bamboo)) // pending wall resprite(tm)
|
||||
to_chat(user, "<span class='warning'>The bamboo doesn't seem to fit around the girder.</span>")
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/S = W
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 *
|
||||
*********/
|
||||
|
||||
@@ -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("<span class='danger'>[user] shoots the blowgun!</span>")
|
||||
|
||||
user.adjustStaminaLoss(20, FALSE)
|
||||
user.adjustOxyLoss(20)
|
||||
return ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
Before Width: | Height: | Size: 855 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 794 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 16 KiB |