diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index f2fdcf5c..9ade24bc 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -450,3 +450,209 @@ /obj/structure/flora/redgrass/redg/Initialize() icon_state = "tallgrass[rand(1, 4)]bb" . = ..() + + +//lavaland trees + +/obj/structure/flora/ashtree + name = "Ashtree" + desc = "A small native lavaland tree." + max_integrity = 80 + density = TRUE + pixel_x = -16 + layer = FLY_LAYER + var/log_amount = 10 + +/obj/structure/flora/ashtree/attackby(obj/item/W, mob/user, params) + if(log_amount && (!(flags_1 & NODECONSTRUCT_1))) + if(W.sharpness && W.force > 0) + if(W.hitsound) + playsound(get_turf(src), W.hitsound, 100, 0, 0) + user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of sawing.") + if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. + user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") + playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) + for(var/i=1 to log_amount) + new /obj/item/grown/log/ashtree(get_turf(src)) + + var/obj/structure/ashtree/ashstump/S = new(loc) + S.name = "[name] stump" + + qdel(src) + + else + return ..() + +/obj/structure/ashtree/ashstump + name = "Ashtree stump" + desc = "Return to ashes." + icon = 'icons/obj/flora/ashtree.dmi' + icon_state = "ashtree_stump" + density = FALSE + pixel_x = -16 + +/obj/structure/flora/ashtree/ashtreee + name = "Ashtree" + desc = "A small native lavaland tree." + icon = 'icons/obj/flora/ashtree.dmi' + icon_state = "ashtree_1" + var/list/icon_states = list("ashtree_1", "ashtree_2") + +/obj/structure/flora/ashtree/ashtreee/Initialize() + . = ..() + + if(islist(icon_states && icon_states.len)) + icon_state = pick(icon_states) + +// +/obj/structure/flora/gmushroom + name = "Giant mushroom" + desc = "An impressive overgrown mushroom." + max_integrity = 80 + density = TRUE + pixel_x = -16 + layer = FLY_LAYER + var/log_amount = 10 + +/obj/structure/flora/gmushroom/attackby(obj/item/W, mob/user, params) + if(log_amount && (!(flags_1 & NODECONSTRUCT_1))) + if(W.sharpness && W.force > 0) + if(W.hitsound) + playsound(get_turf(src), W.hitsound, 100, 0, 0) + user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of sawing.") + if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. + user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") + playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) + for(var/i=1 to log_amount) + new /obj/item/grown/log/gmushroom(get_turf(src)) + + var/obj/structure/gmushroom/gmushroomstump/S = new(loc) + S.name = "[name] stump" + + qdel(src) + + else + return ..() + +/obj/structure/gmushroom/gmushroomstump + name = "Giant mushroom stump" + desc = "It will grow back. Maybe. One day." + icon = 'icons/obj/flora/gmushroom.dmi' + icon_state = "gmushroom_stump" + density = FALSE + pixel_x = -16 + +/obj/structure/flora/gmushroom/gggmushroom + name = "Giant mushroom" + desc = "An impressive overgrown mushroom." + icon = 'icons/obj/flora/gmushroom.dmi' + icon_state = "gmushroom_1" + var/list/icon_states = list("gmushroom_1", "gmushroom_2") + +/obj/structure/flora/gmushroom/gggmushroom/Initialize() + . = ..() + + if(islist(icon_states && icon_states.len)) + icon_state = pick(icon_states) + +// +/obj/structure/flora/shadowtree + name = "Shadow tree" + desc = "A native lavaland tree, with a remarkable purple color." + max_integrity = 80 + density = TRUE + pixel_x = -16 + layer = FLY_LAYER + var/log_amount = 10 + +/obj/structure/flora/shadowtree/attackby(obj/item/W, mob/user, params) + if(log_amount && (!(flags_1 & NODECONSTRUCT_1))) + if(W.sharpness && W.force > 0) + if(W.hitsound) + playsound(get_turf(src), W.hitsound, 100, 0, 0) + user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of sawing.") + if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. + user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") + playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) + for(var/i=1 to log_amount) + new /obj/item/grown/log/shadowtree(get_turf(src)) + + var/obj/structure/shadowtree/shadowtreestump/S = new(loc) + S.name = "[name] stump" + + qdel(src) + + else + return ..() + +/obj/structure/shadowtree/shadowtreestump + name = "Shadow tree stump" + desc = "Hidden in the shadowns." + icon = 'icons/obj/flora/shadowtree.dmi' + icon_state = "shadowtree_stump" + density = FALSE + pixel_x = -16 + +/obj/structure/flora/shadowtree/shadowtreee + name = "Shadow tree" + desc = "A native Lavaland tree, with a remarkable purple color." + icon = 'icons/obj/flora/shadowtree.dmi' + icon_state = "shadowtree_1" + var/list/icon_states = list("shadowtree_1", "shadowtree_2") + +/obj/structure/flora/shadowtree/shadowtreee/Initialize() + . = ..() + + if(islist(icon_states && icon_states.len)) + icon_state = pick(icon_states) + +// +/obj/structure/flora/plasmatree + name = "Plasma tree" + desc = "A tree that has absorved plasma from the ground, making its wood strong like metal." + max_integrity = 100 + density = TRUE + pixel_x = -16 + layer = FLY_LAYER + var/log_amount = 10 + +/obj/structure/flora/plasmatree/attackby(obj/item/W, mob/user, params) + if(log_amount && (!(flags_1 & NODECONSTRUCT_1))) + if(W.sharpness && W.force > 0) + if(W.hitsound) + playsound(get_turf(src), W.hitsound, 100, 0, 0) + user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of sawing.") + if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. + user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") + playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0) + for(var/i=1 to log_amount) + new /obj/item/grown/log/plasmatree(get_turf(src)) + + var/obj/structure/plasmatree/plasmatreestump/S = new(loc) + S.name = "[name] stump" + + qdel(src) + + else + return ..() + +/obj/structure/plasmatree/plasmatreestump + name = "Plasma tree stump" + desc = "Pointy and sharp." + icon = 'icons/obj/flora/plasmatree.dmi' + icon_state = "plasmatree_stump" + density = FALSE + pixel_x = -16 + +/obj/structure/flora/plasmatree/plasmatreee + name = "Plasma tree" + desc = "A tree that has absorved plasma from the ground, making its wood strong like metal." + icon = 'icons/obj/flora/plasmatree.dmi' + icon_state = "plasmatree_1" + var/list/icon_states = list("plasmatree_1", "plasmatree_2") + +/obj/structure/flora/plasmatree/plasmatreee/Initialize() + . = ..() + + if(islist(icon_states && icon_states.len)) + icon_state = pick(icon_states) diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index bbb1afcd..4a6419d8 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -169,7 +169,7 @@ if (!megafauna_spawn_list) megafauna_spawn_list = list(/mob/living/simple_animal/hostile/megafauna/dragon = 4, /mob/living/simple_animal/hostile/megafauna/colossus = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = SPAWN_BUBBLEGUM) if (!flora_spawn_list) - flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/redgrass/redg = 1) + flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/redgrass/redg = 2, /obj/structure/flora/ashtree/ashtreee = 2, /obj/structure/flora/gmushroom/gggmushroom = 2, /obj/structure/flora/shadowtree/shadowtreee = 2, /obj/structure/flora/plasmatree/plasmatreee = 2) . = ..() diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index 1f3266af..8328075a 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -63,3 +63,10 @@ reward = 1000 required_count = 1 wanted_types = list(/obj/item/seeds/lavaland/cactus) + +datum/bounty/item/mining/plaswood + name = "Plaswood Planks" + description = "Central Command's carpentry department needs more exotic wood, send us some plaswood planks!" + reward = 5500 + required_count = 50 + wanted_types = list(/obj/item/stack/sheet/mineral/plaswood) diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 63207822..929700f4 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -30,6 +30,13 @@ contains = list(/obj/item/stack/sheet/metal/fifty) crate_name = "metal sheets crate" +/datum/supply_pack/materials/gmushroom50 + name = "50 Mushroom Planks" + desc = "Looks like wood AND is fire proof? Of course you need fifty mushroom planks!" + cost = 1700 + contains = list(/obj/item/stack/sheet/mineral/gmushroom/fifty) + crate_name = "mushroom planks crate" + /datum/supply_pack/materials/plasteel20 name = "20 Plasteel Sheets" desc = "Reinforce the station's integrity with twenty plasteel sheets!" @@ -51,6 +58,13 @@ contains = list(/obj/item/stack/sheet/plastic/fifty) crate_name = "plastic sheets crate" +/datum/supply_pack/materials/plaswood50 + name = "50 Plaswood Planks" + desc = "Who need metal when you can have fifty plaswood planks?" + cost = 9000 + contains = list(/obj/item/stack/sheet/mineral/plaswood/fifty) + crate_name = "Plaswood crate" + /datum/supply_pack/materials/sandstone30 name = "30 Sandstone Blocks" desc = "Neither sandy nor stoney, these thirty blocks will still get the job done." @@ -58,6 +72,13 @@ contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty) crate_name = "sandstone blocks crate" +/datum/supply_pack/materials/shadoww50 + name = "50 Shadow Wood Planks" + desc = "Time to bring the dark side with fifty shadow wooden planks!" + cost = 1450 + contains = list(/obj/item/stack/sheet/mineral/shadoww/fifty) + crate_name = "Shadown wood planks crate" + /datum/supply_pack/materials/wood50 name = "50 Wood Planks" desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!" @@ -79,7 +100,7 @@ name = "Bulk Raw Cotton Crate" desc = "Plushies are more down in the market than ever before; bulk cotton now for use! Contains 100 raw cotton sheets." cost = 1700 //Same math as before, but since it's bulk, you get a 100 credit discount to encourage bulk buys. Welcome to space Costco. - contains = list(/obj/item/stack/sheet/cotton/thirty, + contains = list(/obj/item/stack/sheet/cotton/thirty, /obj/item/stack/sheet/cotton/thirty, /obj/item/stack/sheet/cotton/thirty, /obj/item/stack/sheet/cotton/ten diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index b120e592..36be0a4b 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -98,6 +98,45 @@ /obj/item/grown/log/steel/CheckAccepted(obj/item/I) return FALSE +/obj/item/grown/log/ashtree + seed = null + name = "ashtree log" + desc = "A piece of log." + icon_state = "ashtree_log" + +/obj/item/grown/log/gmushroom + seed = null + name = "mushroom log" + desc = "Looks like candy! Do not eat it." + icon_state = "mushroom_log" + plank_type = /obj/item/stack/sheet/mineral/gmushroom + plank_name = "mushroom planks" + +/obj/item/grown/log/gmushroom/CheckAccepted(obj/item/I) + return FALSE + +/obj/item/grown/log/shadowtree + seed = null + name = "shadow log" + desc = "A piece of dark log." + icon_state = "shadow_log" + plank_type = /obj/item/stack/sheet/mineral/shadoww + plank_name = "shadow planks" + +/obj/item/grown/log/gmushroom/CheckAccepted(obj/item/I) + return FALSE + +/obj/item/grown/log/plasmatree + seed = null + name = "plasma tree log" + desc = "A heavy piece log." + icon_state = "plasmatree_log" + plank_type = /obj/item/stack/sheet/mineral/plaswood + plank_name = "plaswood planks" + +/obj/item/grown/log/plasmatree/CheckAccepted(obj/item/I) + return FALSE + /obj/item/seeds/bamboo name = "pack of bamboo seeds" desc = "A plant known for its flexible and resistant logs." @@ -163,7 +202,7 @@ /obj/structure/bonfire/prelit/Initialize() . = ..() StartBurning() - + /obj/structure/bonfire/CanPass(atom/movable/mover, turf/target) if(istype(mover) && (mover.pass_flags & PASSTABLE)) return TRUE diff --git a/icons/obj/flora/ashtree.dmi b/icons/obj/flora/ashtree.dmi new file mode 100644 index 00000000..3f3a860d Binary files /dev/null and b/icons/obj/flora/ashtree.dmi differ diff --git a/icons/obj/flora/gmushroom.dmi b/icons/obj/flora/gmushroom.dmi new file mode 100644 index 00000000..d53cbd20 Binary files /dev/null and b/icons/obj/flora/gmushroom.dmi differ diff --git a/icons/obj/flora/plasmatree.dmi b/icons/obj/flora/plasmatree.dmi new file mode 100644 index 00000000..17f75a9c Binary files /dev/null and b/icons/obj/flora/plasmatree.dmi differ diff --git a/icons/obj/flora/shadowtree.dmi b/icons/obj/flora/shadowtree.dmi new file mode 100644 index 00000000..40bf44d9 Binary files /dev/null and b/icons/obj/flora/shadowtree.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index af19d5d1..4a47f01e 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ