diff --git a/code/datums/components/crafting/recipes/survival.dm b/code/datums/components/crafting/recipes/survival.dm
new file mode 100644
index 00000000000..94f98d4a00f
--- /dev/null
+++ b/code/datums/components/crafting/recipes/survival.dm
@@ -0,0 +1,12 @@
+/datum/crafting_recipe/shovel
+ name = "Wooden Shovel"
+ result = /obj/item/weapon/shovel/wood
+ reqs = list(
+ /obj/item/stack/material/stick = 5,
+ /obj/item/stack/material/wood = 1,
+ /obj/item/stack/material/fiber = 3,
+ /obj/item/stack/material/flint = 1
+ )
+ time = 120
+ category = CAT_WEAPONRY
+ subcategory = CAT_WEAPON
\ No newline at end of file
diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm
index 6f7963509e4..074f2a41644 100644
--- a/code/game/objects/structures/flora/flora.dm
+++ b/code/game/objects/structures/flora/flora.dm
@@ -113,7 +113,7 @@
destroy_on_harvest = TRUE
harvest_tool = /obj/item/weapon/material/knife
randomize_harvest_count = FALSE
- harvest_loot = list(/obj/item/stack/material/fiber = 1)
+ harvest_loot = list(/obj/item/stack/material/fiber = rand(1-2))
max_harvests = 1
/obj/structure/flora/ausbushes/New()
diff --git a/code/game/turfs/simulated/outdoors/outdoors_vr.dm b/code/game/turfs/simulated/outdoors/outdoors_vr.dm
index 9e5f6961c9f..195762d91dc 100644
--- a/code/game/turfs/simulated/outdoors/outdoors_vr.dm
+++ b/code/game/turfs/simulated/outdoors/outdoors_vr.dm
@@ -33,13 +33,13 @@
"dirt0" = 150,
"dirt1" = 25,
"dirt2" = 25,
- "dirt3" = 10,
- "dirt4" = 3,
- "dirt5" = 3,
- "dirt6" = 1,
- "dirt7" = 25,
- "dirt8" = 10,
- "dirt9" = 25
+ "dirt3" = 25,
+ "dirt4" = 25,
+ "dirt5" = 10,
+ "dirt6" = 10,
+ "dirt7" = 3,
+ "dirt8" = 3,
+ "dirt9" = 1
)
flooring_override = pickweight(possibledirts)
return ..()
diff --git a/code/game/turfs/simulated/outdoors/survival_action_vr.dm b/code/game/turfs/simulated/outdoors/survival_action_vr.dm
new file mode 100644
index 00000000000..8f5394fdcd6
--- /dev/null
+++ b/code/game/turfs/simulated/outdoors/survival_action_vr.dm
@@ -0,0 +1,43 @@
+/turf/simulated/floor/outdoors/newdirt/attack_hand(mob/user)
+ var/static/list/has_rocks = list("dirt5", "dirt6", "dirt7", "dirt8", "dirt9")
+ if(Adjacent(user))
+ if(icon_state in has_rocks)
+ user.visible_message("[user] loosens rocks from [src]...", runemessage = "loosens rocks from [src]")
+ if(do_after(user, 5 SECONDS, exclusive = TASK_USER_EXCLUSIVE))
+ var/obj/item/stack/material/flint/R = new(get_turf(src))
+ R.amount = rand(1,4)
+ R.pixel_x = rand(-6,6)
+ R.pixel_y = rand(-6,6)
+ icon_state = "dirt0"
+ return
+ if(locate(/obj) in src)
+ to_chat(user, "The dirt isn't clear.")
+ else
+ var/choice= tgui_alert(user, "Do you want to build a growplot out of the dirt?", "Build growplot?" , list("Yes", "No"))
+ if(!choice||choice=="No")
+ return
+ user.visible_message("[user] starts piling up [src]...", runemessage = "piles up [src]")
+ if(do_after(user, 5 SECONDS, exclusive = TASK_USER_EXCLUSIVE))
+ new /obj/machinery/portable_atmospherics/hydroponics/soil(src)
+
+/turf/simulated/floor/outdoors/newdirt/examine(var/mob/user)
+ . = ..()
+ if(Adjacent(user))
+ var/static/list/has_rocks = list("dirt5", "dirt6", "dirt7", "dirt8", "dirt9")
+ if(icon_state in has_rocks)
+ . += "There are some rocks in the dirt."
+
+/obj/structure/flora/tree
+ var/sticks = TRUE
+
+/obj/structure/flora/tree/attack_hand(mob/user)
+ if(sticks)
+ user.visible_message("[user] searches [src] for loose sticks...", runemessage = "searches [src] for loose sticks")
+ if(do_after(user, 5 SECONDS, exclusive = TASK_USER_EXCLUSIVE))
+ var/obj/item/stack/material/stick/S = new(get_turf(user))
+ S.amount = rand(1,3)
+ S.pixel_x = rand(-6,6)
+ S.pixel_y = rand(-6,6)
+ sticks = FALSE
+ else
+ to_chat(user, "You don't see any loose sticks...")
\ No newline at end of file
diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm
index ff32f9712b6..dcb07bc9e7a 100644
--- a/code/modules/hydroponics/trays/tray_soil.dm
+++ b/code/modules/hydroponics/trays/tray_soil.dm
@@ -10,6 +10,16 @@
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O,/obj/item/weapon/tank))
return
+ if(istype(O,/obj/item/weapon/shovel))
+ if(!seed)
+ var/choice= tgui_alert(user, "Do you want to destroy the growplot?", "Destroy growplot?" , list("Yes", "No"))
+ if(!choice||choice=="No")
+ return
+ user.visible_message("[user] starts dispersing the [src]...", runemessage = "disperses the [src]")
+ if(do_after(user, 5 SECONDS, exclusive = TASK_USER_EXCLUSIVE))
+ qdel(src)
+ else
+ to_chat(user, "There is something growing here.")
else
..()
diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm
index 4293979c3b3..6b2fb2ca061 100644
--- a/code/modules/materials/materials/organic/wood.dm
+++ b/code/modules/materials/materials/organic/wood.dm
@@ -86,4 +86,21 @@
display_name = "alien wood"
icon_colour = "#0099cc" // Cyan-ish
stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2)
- stack_type = /obj/item/stack/material/log/sif
\ No newline at end of file
+ stack_type = /obj/item/stack/material/log/sif
+
+//VOREStation Addition Start
+/datum/material/wood/stick
+ name = "wooden stick"
+ icon_colour = "#824B28"
+ display_name = "wood"
+ icon_base = "stick"
+ stack_type = /obj/item/stack/material/stick
+ sheet_collective_name = "pile"
+ pass_stack_colors = TRUE
+ supply_conversion_value = 1
+ sheet_singular_name = "stick"
+ sheet_plural_name = "sticks"
+
+/datum/material/wood/stick/generate_recipes()
+ return
+//VOREStation Addition End
\ No newline at end of file
diff --git a/code/modules/materials/materials/stone.dm b/code/modules/materials/materials/stone.dm
index 823dd19914c..55eb39b7c88 100644
--- a/code/modules/materials/materials/stone.dm
+++ b/code/modules/materials/materials/stone.dm
@@ -32,4 +32,19 @@
recipes += list(
new /datum/stack_recipe("light marble floor tile", /obj/item/stack/tile/wmarble, 1, 4, 20, recycle_material = "[name]"),
new /datum/stack_recipe("dark marble floor tile", /obj/item/stack/tile/bmarble, 1, 4, 20, recycle_material = "[name]")
- )
\ No newline at end of file
+ )
+//VOREStation Addition Start
+/datum/material/stone/flint
+ name = "flint"
+ icon_colour = "#9e9c99"
+ weight = 26
+ hardness = 30
+ integrity = 201
+ stack_type = /obj/item/stack/material/flint
+ supply_conversion_value = 2
+ sheet_singular_name = "piece"
+ sheet_plural_name = "pieces"
+
+/datum/material/stone/flint/generate_recipes()
+ return
+//VOREStation Addition End
\ No newline at end of file
diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm
index d3d1fd6418e..1ad248f7430 100644
--- a/code/modules/materials/sheets/organic/wood.dm
+++ b/code/modules/materials/sheets/organic/wood.dm
@@ -53,3 +53,15 @@
to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.")
else
return ..()
+
+/obj/item/stack/material/stick
+ name = "wooden stick"
+ icon_state = "sheet-stick"
+ default_type = "wooden stick"
+ strict_color_stacking = TRUE
+ apply_colour = 1
+ drop_sound = 'sound/items/drop/wooden.ogg'
+ pickup_sound = 'sound/items/pickup/wooden.ogg'
+ no_variants = FALSE
+ pass_color = TRUE
+ apply_colour = TRUE
\ No newline at end of file
diff --git a/code/modules/materials/sheets/stone.dm b/code/modules/materials/sheets/stone.dm
index 17347ff9d8f..2b78fe0159b 100644
--- a/code/modules/materials/sheets/stone.dm
+++ b/code/modules/materials/sheets/stone.dm
@@ -13,3 +13,13 @@
no_variants = FALSE
drop_sound = 'sound/items/drop/boots.ogg'
pickup_sound = 'sound/items/pickup/boots.ogg'
+
+/obj/item/stack/material/flint
+ name = "flint piece"
+ icon_state = "sheet-rock"
+ default_type = "flint"
+ no_variants = FALSE
+ drop_sound = 'sound/items/drop/boots.ogg'
+ pickup_sound = 'sound/items/pickup/boots.ogg'
+ pass_color = TRUE
+ apply_colour = TRUE
\ No newline at end of file
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 2500c0dd687..2f744ac7c52 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -137,6 +137,19 @@
throwforce = 7.0
w_class = ITEMSIZE_SMALL
+/obj/item/weapon/shovel/wood
+ name = "wooden shovel"
+ desc = "An improvised tool for digging and moving dirt."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "woodshovel"
+ slot_flags = SLOT_BELT
+ item_state = "woodshovel"
+ w_class = ITEMSIZE_NORMAL
+ matter = list(MAT_WOOD = 50)
+ sharp = 0
+ edge = 1
+
+
/**********************Mining car (Crate like thing, not the rail car)**************************/
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index dc5f5057e63..d1a5f7ba5b6 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/turf/outdoors_vr.dmi b/icons/turf/outdoors_vr.dmi
index 2629d85a433..d1c2d3844be 100644
Binary files a/icons/turf/outdoors_vr.dmi and b/icons/turf/outdoors_vr.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 9042f20f53e..21dc0a367a0 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -355,6 +355,7 @@
#include "code\datums\components\crafting\recipes.dm"
#include "code\datums\components\crafting\tool_quality.dm"
#include "code\datums\components\crafting\recipes\primitive.dm"
+#include "code\datums\components\crafting\recipes\survival.dm"
#include "code\datums\components\crafting\recipes\weapons.dm"
#include "code\datums\elements\_element.dm"
#include "code\datums\elements\light_blocking.dm"
@@ -1608,6 +1609,7 @@
#include "code\game\turfs\simulated\outdoors\outdoors_vr.dm"
#include "code\game\turfs\simulated\outdoors\sky.dm"
#include "code\game\turfs\simulated\outdoors\snow.dm"
+#include "code\game\turfs\simulated\outdoors\survival_action_vr.dm"
#include "code\game\turfs\snow\snow.dm"
#include "code\game\turfs\space\cracked_asteroid.dm"
#include "code\game\turfs\space\space.dm"