diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index e5ba3b8d..3c94563d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -11,6 +11,9 @@ * Brass (clockwork cult) * Bronze (bake brass) * Cotton/Duracotton + * Shwadon + * + * */ /* @@ -769,3 +772,95 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra merge_type = /obj/item/stack/sheet/cotton/durathread pull_effort = 70 loom_result = /obj/item/stack/sheet/durathread + +/* + * Shadow Wood + */ +GLOBAL_LIST_INIT(shadoww_recipes, list ( \ + new/datum/stack_recipe("Shadow wood floor tile", /obj/item/stack/tile/shadoww, 1, 4, 20), \ + new/datum/stack_recipe("Shadow wood table frame", /obj/structure/table_frame/shadoww, 2, time = 10), \ + null, \ + )) + +/obj/item/stack/sheet/mineral/shadoww + name = "shadow wood" + desc = "An purplish wood, it has nothing of special besides its color." + singular_name = "shadow wood plank" + icon_state = "sheet-shadoww" + item_state = "sheet-shadoww" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "shadoww" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) + resistance_flags = FLAMMABLE + merge_type = /obj/item/stack/sheet/mineral/shadoww + novariants = TRUE + grind_results = list(/datum/reagent/carbon = 20) + +/obj/item/stack/sheet/mineral/shadoww/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.shadoww_recipes + return ..() + +/obj/item/stack/sheet/mineral/shadoww/fifty + amount = 50 + +/* + * Giant mushroom + */ +GLOBAL_LIST_INIT(gmushroom_recipes, list ( \ + new/datum/stack_recipe("Mushroom floor tile", /obj/item/stack/tile/gmushroom, 1, 4, 20), \ + new/datum/stack_recipe("Mushroom table frame", /obj/structure/table_frame/gmushroom, 2, time = 10), \ + null, \ + )) + +/obj/item/stack/sheet/mineral/gmushroom + name = "mushroom 'wood'" + desc = "A material similar to wood, except for being fireproof." + singular_name = "mushroom plank" + icon_state = "sheet-gmushroom" + item_state = "sheet-gmushroom" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "gmushroom" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0) + resistance_flags = FIRE_PROOF + merge_type = /obj/item/stack/sheet/mineral/gmushroom + novariants = TRUE + grind_results = list(/datum/reagent/carbon = 20) + +/obj/item/stack/sheet/mineral/gmushroom/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.gmushroom_recipes + return ..() + +/obj/item/stack/sheet/mineral/gmushroom/fifty + amount = 50 + +/* + * Plaswood + */ +GLOBAL_LIST_INIT(plaswood_recipes, list ( \ + new/datum/stack_recipe("Plaswood floor tile", /obj/item/stack/tile/plaswood, 1, 4, 20), \ + new/datum/stack_recipe("Plaswood table frame", /obj/structure/table_frame/plaswood, 2, time = 10), \ + null, \ + )) + +/obj/item/stack/sheet/mineral/plaswood + name = "plaswood" + desc = "A type of resistant wood acquired from Plasma Trees. It amost looks like metal!" + singular_name = "plaswood plank" + icon_state = "sheet-plaswood" + item_state = "sheet-plaswood" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "plaswood" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 80) + resistance_flags = FLAMMABLE | ACID_PROOF + throwforce = 10 + merge_type = /obj/item/stack/sheet/mineral/plaswood + novariants = TRUE + grind_results = list(/datum/reagent/carbon = 20, /datum/reagent/toxin/plasma = 20) + point_value = 23 + +/obj/item/stack/sheet/mineral/plaswood/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.plaswood_recipes + return ..() + +/obj/item/stack/sheet/mineral/plaswood/fifty + amount = 50 \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index e1d06aa2..f035bff0 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -270,3 +270,30 @@ materials = list() // All other Borg versions of items have no Metal or Glass - RR is_cyborg = 1 cost = 125 + +//Mushroom +/obj/item/stack/tile/gmushroom + name = "mushroom floor tile" + singular_name = "mushroom floor tile" + desc = "An easy to fit mushroom floor tile." + icon_state = "tile-gmushroom" + turf_type = /turf/open/floor/gmushroom + resistance_flags = FIRE_PROOF + +//Shadown Wood +/obj/item/stack/tile/shadoww + name = "shadow wood floor tile" + singular_name = "shadow wood floor tile" + desc = "An easy to fit wood floor tile." + icon_state = "tile-shadoww" + turf_type = /turf/open/floor/shadoww + resistance_flags = FLAMMABLE + +//Plaswood +/obj/item/stack/tile/plaswood + name = "plaswood floor tile" + singular_name = "plaswood floor tile" + desc = "An easy to fit wood floor tile." + icon_state = "tile-plaswood" + turf_type = /turf/open/floor/plaswood + resistance_flags = FLAMMABLE | ACID_PROOF diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 0150fbf5..f2fdcf5c 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -435,3 +435,18 @@ /obj/structure/flora/rock/pile/largejungle/Initialize() . = ..() icon_state = "[initial(icon_state)][rand(1,3)]" + + +//lavaland grass +/obj/structure/flora/redgrass + name = "tall grass" + desc = "A patch of overgrown red grass." + icon = 'icons/obj/lavaland/redgrass.dmi' + gender = PLURAL //"this is grass" not "this is a grass" + +/obj/structure/flora/redgrass/redg + icon_state = "tallgrass1bb" + +/obj/structure/flora/redgrass/redg/Initialize() + icon_state = "tallgrass[rand(1, 4)]bb" + . = ..() diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index f62bed87..25e98d2b 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -2,6 +2,9 @@ * Contains: * Frames * Wooden Frames + * Shadow Wood Frames + * Plaswood Frames + * Mushroom Frames */ @@ -126,3 +129,90 @@ color = "#960000" animate(src, color = previouscolor, time = 8) addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8) + +/* + * Plaswood Frames + */ + +/obj/structure/table_frame/plaswood + name = "Plaswood table frame" + desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this." + icon_state = "plaswood_frame" + framestack = /obj/item/stack/sheet/mineral/plaswood + framestackamount = 2 + resistance_flags = FLAMMABLE | ACID_PROOF + +/obj/structure/table_frame/plaswood/attackby(obj/item/I, mob/user, params) + if (istype(I, /obj/item/stack)) + var/obj/item/stack/material = I + var/toConstruct // stores the table variant + if(istype(I, /obj/item/stack/sheet/mineral/plaswood)) + toConstruct = /obj/structure/table/plaswood + + if (toConstruct) + if(material.get_amount() < 1) + to_chat(user, "You need one [material.name] sheet to do this!") + return + to_chat(user, "You start adding [material] to [src]...") + if(do_after(user, 20, target = src) && material.use(1)) + make_new_table(toConstruct) + else + return ..() + +/* + * Mushroom Frames + */ + +/obj/structure/table_frame/gmushroom + name = "mushroom table frame" + desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this." + icon_state = "gmushroom_frame" + framestack = /obj/item/stack/sheet/mineral/gmushroom + framestackamount = 2 + resistance_flags = FIRE_PROOF + +/obj/structure/table_frame/gmushroom/attackby(obj/item/I, mob/user, params) + if (istype(I, /obj/item/stack)) + var/obj/item/stack/material = I + var/toConstruct // stores the table variant + if(istype(I, /obj/item/stack/sheet/mineral/gmushroom)) + toConstruct = /obj/structure/table/gmushroom + + if (toConstruct) + if(material.get_amount() < 1) + to_chat(user, "You need one [material.name] sheet to do this!") + return + to_chat(user, "You start adding [material] to [src]...") + if(do_after(user, 20, target = src) && material.use(1)) + make_new_table(toConstruct) + else + return ..() + +/* + * Shadow Wood Frames + */ + +/obj/structure/table_frame/shadoww + name = "shadow wood frame" + desc = "Four wooden legs with four framing wooden rods for a wooden table. You could easily pass through this." + icon_state = "shadoww_frame" + framestack = /obj/item/stack/sheet/mineral/shadoww + framestackamount = 2 + resistance_flags = FLAMMABLE + +/obj/structure/table_frame/shadoww/attackby(obj/item/I, mob/user, params) + if (istype(I, /obj/item/stack)) + var/obj/item/stack/material = I + var/toConstruct // stores the table variant + if(istype(I, /obj/item/stack/sheet/mineral/shadoww)) + toConstruct = /obj/structure/table/shadoww + + if (toConstruct) + if(material.get_amount() < 1) + to_chat(user, "You need one [material.name] sheet to do this!") + return + to_chat(user, "You start adding [material] to [src]...") + if(do_after(user, 20, target = src) && material.use(1)) + make_new_table(toConstruct) + else + return ..() \ No newline at end of file diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index c2578322..03585d92 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -318,6 +318,56 @@ for(var/obj/item/shard/S in debris) S.color = NARSIE_WINDOW_COLOUR +/* + * Shadow wood tables + */ + +/obj/structure/table/shadoww + name = "Shadow wood table" + desc = "Do not apply fire to this. Rumour says it burns easily." + icon = 'icons/obj/smooth_structures/shadoww_table.dmi' + icon_state = "wood_table" + frame = /obj/structure/table_frame/shadoww + framestack = /obj/item/stack/sheet/mineral/shadoww + buildstack = /obj/item/stack/sheet/mineral/shadoww + resistance_flags = FLAMMABLE + max_integrity = 70 + canSmoothWith = null + +/* + * Plaswood tables + */ + +/obj/structure/table/plaswood + name = "plaswood table" + desc = "An strong and grey wooden table." + icon = 'icons/obj/smooth_structures/plaswood_table.dmi' + icon_state = "wood_table" + frame = /obj/structure/table_frame/wood + framestack = /obj/item/stack/sheet/mineral/plaswood + buildstack = /obj/item/stack/sheet/mineral/plaswood + resistance_flags = FLAMMABLE + max_integrity = 200 + integrity_failure = 50 + armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) + canSmoothWith = null + +/* + * Mushroom tables + */ + +/obj/structure/table/gmushroom + name = "Mushroom table" + desc = "A pinkish table. And is fireproof!" + icon = 'icons/obj/smooth_structures/gmushroom_table.dmi' + icon_state = "gmushroom_table" + frame = /obj/structure/table_frame/gmushroom + framestack = /obj/item/stack/sheet/mineral/gmushroom + buildstack = /obj/item/stack/sheet/mineral/gmushroom + resistance_flags = FIRE_PROOF + max_integrity = 70 + canSmoothWith = null + /* * Wooden tables */ diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 6d2ed071..c734b89e 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -5,6 +5,9 @@ * Carpet floor * Fake pits * Fake space + * Plaswood floor + * Shadow wood floor + * Giant mushroom floor */ /turf/open/floor/wood @@ -309,3 +312,166 @@ underlay_appearance.icon_state = SPACE_ICON_STATE underlay_appearance.plane = PLANE_SPACE return TRUE + + +/turf/open/floor/shadoww + desc = "Stylish shadown wood." + icon_state = "shadoww" + floor_tile = /obj/item/stack/tile/shadoww + broken_states = list("shadoww-broken", "shadoww-broken2", "shadoww-broken3", "shadoww-broken4", "shadoww-broken5", "shadoww-broken6", "shadoww-broken7") + footstep = FOOTSTEP_WOOD + barefootstep = FOOTSTEP_WOOD_BAREFOOT + clawfootstep = FOOTSTEP_WOOD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + tiled_dirt = FALSE + +/turf/open/floor/shadoww/examine(mob/user) + . = ..() + . += "There's a few screws and a small crack visible." + +/turf/open/floor/shadoww/screwdriver_act(mob/living/user, obj/item/I) + if(..()) + return TRUE + return pry_tile(I, user) + +/turf/open/floor/shadoww/try_replace_tile(obj/item/stack/tile/T, mob/user, params) + if(T.turf_type == type) + return + var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver) + if(!tool) + tool = user.is_holding_item_of_type(/obj/item/crowbar) + if(!tool) + return + var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE) + if(!istype(P)) + return + P.attackby(T, user, params) + +/turf/open/floor/shadoww/pry_tile(obj/item/C, mob/user, silent = FALSE) + C.play_tool_sound(src, 80) + return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER)) + +/turf/open/floor/shadoww/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) + if(broken || burnt) + broken = 0 + burnt = 0 + if(user && !silent) + to_chat(user, "You remove the broken planks.") + else + if(make_tile) + if(user && !silent) + to_chat(user, "You unscrew the planks.") + if(floor_tile) + new floor_tile(src) + else + if(user && !silent) + to_chat(user, "You forcefully pry off the planks, destroying them in the process.") + return make_plating() + +/turf/open/floor/gmushroom + desc = "Stylish mushroom 'wood'." + icon_state = "gmushroom" + floor_tile = /obj/item/stack/tile/gmushroom + broken_states = list("gmushroom-broken", "gmushroom-broken2", "gmushroom-broken3", "gmushroom-broken4", "gmushroom-broken5", "gmushroom-broken6", "gmushroom-broken7") + footstep = FOOTSTEP_WOOD + barefootstep = FOOTSTEP_WOOD_BAREFOOT + clawfootstep = FOOTSTEP_WOOD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + tiled_dirt = FALSE + +/turf/open/floor/gmushroom/examine(mob/user) + . = ..() + . += "There's a few screws and a small crack visible." + +/turf/open/floor/gmushroom/screwdriver_act(mob/living/user, obj/item/I) + if(..()) + return TRUE + return pry_tile(I, user) + +/turf/open/floor/gmushroom/try_replace_tile(obj/item/stack/tile/T, mob/user, params) + if(T.turf_type == type) + return + var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver) + if(!tool) + tool = user.is_holding_item_of_type(/obj/item/crowbar) + if(!tool) + return + var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE) + if(!istype(P)) + return + P.attackby(T, user, params) + +/turf/open/floor/gmushroom/pry_tile(obj/item/C, mob/user, silent = FALSE) + C.play_tool_sound(src, 80) + return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER)) + +/turf/open/floor/gmushroom/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) + if(broken || burnt) + broken = 0 + burnt = 0 + if(user && !silent) + to_chat(user, "You remove the broken planks.") + else + if(make_tile) + if(user && !silent) + to_chat(user, "You unscrew the planks.") + if(floor_tile) + new floor_tile(src) + else + if(user && !silent) + to_chat(user, "You forcefully pry off the planks, destroying them in the process.") + return make_plating() + +/turf/open/floor/plaswood + desc = "Stylish plaswood." + icon_state = "plaswood" + floor_tile = /obj/item/stack/tile/plaswood + broken_states = list("plaswood-broken", "plaswood-broken2", "plaswood-broken3", "plaswood-broken4", "plaswood-broken5", "plaswood-broken6", "plaswood-broken7") + footstep = FOOTSTEP_WOOD + barefootstep = FOOTSTEP_WOOD_BAREFOOT + clawfootstep = FOOTSTEP_WOOD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + tiled_dirt = FALSE + +/turf/open/floor/plaswood/examine(mob/user) + . = ..() + . += "There's a few screws and a small crack visible." + +/turf/open/floor/plaswood/screwdriver_act(mob/living/user, obj/item/I) + if(..()) + return TRUE + return pry_tile(I, user) + +/turf/open/floor/plaswood/try_replace_tile(obj/item/stack/tile/T, mob/user, params) + if(T.turf_type == type) + return + var/obj/item/tool = user.is_holding_item_of_type(/obj/item/screwdriver) + if(!tool) + tool = user.is_holding_item_of_type(/obj/item/crowbar) + if(!tool) + return + var/turf/open/floor/plating/P = pry_tile(tool, user, TRUE) + if(!istype(P)) + return + P.attackby(T, user, params) + +/turf/open/floor/plaswood/pry_tile(obj/item/C, mob/user, silent = FALSE) + C.play_tool_sound(src, 80) + return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER)) + +/turf/open/floor/plaswood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) + if(broken || burnt) + broken = 0 + burnt = 0 + if(user && !silent) + to_chat(user, "You remove the broken planks.") + else + if(make_tile) + if(user && !silent) + to_chat(user, "You unscrew the planks.") + if(floor_tile) + new floor_tile(src) + else + if(user && !silent) + to_chat(user, "You forcefully pry off the planks, destroying them in the process.") + return make_plating() diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index b0753751..bbb1afcd 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) + 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) . = ..() @@ -283,7 +283,7 @@ return //if the random is a standard mob, avoid spawning if there's another one within 12 tiles if((ispath(randumb, /obj/structure/spawner/lavaland) || istype(H, /obj/structure/spawner/lavaland)) && get_dist(src, H) <= 2) return //prevents tendrils spawning in each other's collapse range - + for (var/area/L in range(8, T)) if (istype(L, /area/lavaland/surface/outdoors/) && !istype(L, /area/lavaland/surface/outdoors/unexplored)\ && istype(L, /area/ruin) && istype(randumb, /mob/living/simple_animal/hostile/megafauna)) diff --git a/icons/mob/inhands/misc/tiles_lefthand.dmi b/icons/mob/inhands/misc/tiles_lefthand.dmi index d7903fcd..0b977093 100644 Binary files a/icons/mob/inhands/misc/tiles_lefthand.dmi and b/icons/mob/inhands/misc/tiles_lefthand.dmi differ diff --git a/icons/mob/inhands/misc/tiles_righthand.dmi b/icons/mob/inhands/misc/tiles_righthand.dmi index 9295ac73..2adb6cef 100644 Binary files a/icons/mob/inhands/misc/tiles_righthand.dmi and b/icons/mob/inhands/misc/tiles_righthand.dmi differ diff --git a/icons/obj/lavaland/redgrass.dmi b/icons/obj/lavaland/redgrass.dmi new file mode 100644 index 00000000..ee73118f Binary files /dev/null and b/icons/obj/lavaland/redgrass.dmi differ diff --git a/icons/obj/smooth_structures/gmushroom_table.dmi b/icons/obj/smooth_structures/gmushroom_table.dmi new file mode 100644 index 00000000..42feccf2 Binary files /dev/null and b/icons/obj/smooth_structures/gmushroom_table.dmi differ diff --git a/icons/obj/smooth_structures/plaswood_table.dmi b/icons/obj/smooth_structures/plaswood_table.dmi new file mode 100644 index 00000000..4710cea4 Binary files /dev/null and b/icons/obj/smooth_structures/plaswood_table.dmi differ diff --git a/icons/obj/smooth_structures/shadoww_table.dmi b/icons/obj/smooth_structures/shadoww_table.dmi new file mode 100644 index 00000000..2d62fe8f Binary files /dev/null and b/icons/obj/smooth_structures/shadoww_table.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index e0de2142..76583326 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 8650e7be..2a0f066e 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 0f48bb14..d42dbbfd 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index bcdfa026..08cb371c 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ