diff --git a/baystation12.dme b/baystation12.dme
index 0afd6cbf197..be40b2ce31f 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1016,7 +1016,9 @@
#include "code\modules\mob\simple_animal\corgi.dm"
#include "code\modules\mob\simple_animal\crab.dm"
#include "code\modules\mob\simple_animal\life.dm"
+#include "code\modules\mob\simple_animal\parrot.dm"
#include "code\modules\mob\simple_animal\shade.dm"
+#include "code\modules\mob\simple_animal\worm.dm"
#include "code\modules\power\apc.dm"
#include "code\modules\power\cable.dm"
#include "code\modules\power\cell.dm"
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 4321dcef1f7..8dba0005f8e 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -231,7 +231,98 @@ ZIPPO
icon_state = "cigarbutt"
+/////////////////
+//SMOKING PIPES//
+/////////////////
+/obj/item/clothing/mask/pipe
+ name = "smoking pipe"
+ desc = "A pipe, for smoking. Probably made of meershaum or something."
+ icon_state = "cobpipeoff"
+ throw_speed = 0.5
+ item_state = "cobpipeoff"
+ w_class = 1
+ body_parts_covered = null
+ var
+ lit = 0
+ icon_on = "cobpipeon" //Note - these are in masks.dmi
+ icon_off = "cobpipeoff"
+ lastHolder = null
+ smoketime = 100
+ maxsmoketime = 100 //make sure this is equal to your smoketime
+ proc
+ light(var/flavor_text = "[usr] lights the [name].")
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
+ light("\red [user] casually lights the [name] with [W], what a badass.")
+
+ else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0))
+ light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
+
+ else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0))
+ light("\red After some fiddling, [user] manages to light their [name] with [W].")
+
+ else if(istype(W, /obj/item/weapon/match) && (W:lit > 0))
+ light("\red [user] lights \his [name] with \his [W].")
+ return
+
+ light(var/flavor_text = "[usr] lights the [name].")
+ if(!src.lit)
+ src.lit = 1
+ src.damtype = "fire"
+ src.icon_state = icon_on
+ src.item_state = icon_on
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(flavor_text, 1)
+ processing_objects.Add(src)
+
+ process()
+ var/turf/location = get_turf(src)
+ src.smoketime--
+ if(src.smoketime < 1)
+ new /obj/effect/decal/ash(location)
+ if(ismob(src.loc))
+ var/mob/living/M = src.loc
+ M << "\red Your [src.name] goes out, and you empty the ash."
+ src.lit = 0
+ src.icon_state = icon_off
+ src.item_state = icon_off
+ processing_objects.Remove(src)
+ return
+ if(location)
+ location.hotspot_expose(700, 5)
+ return
+
+ dropped(mob/user as mob)
+ if(src.lit == 1)
+ for(var/mob/O in viewers(user, null))
+ O.show_message(text("\red [] puts out the [].", user,src.name), 1)
+ src.lit = 0
+ src.icon_state = icon_off
+ src.item_state = icon_off
+ processing_objects.Remove(src)
+ return ..()
+
+/obj/item/clothing/mask/pipe/attack_self(mob/user as mob) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something.
+ if(src.smoketime <= 0)
+ user << "\blue You refill the pipe with tobacco."
+ smoketime = maxsmoketime
+ return
+
+/obj/item/clothing/mask/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/match))
+ ..()
+ else
+ user << "\red The [src] straight out REFUSES to be lit by such means."
+
+
+/obj/item/clothing/mask/pipe/cobpipe
+ name = "corn cob pipe"
+ desc = "A nicotine delivery system popularized by folksy backwoodsmen and kept popular in the modern age and beyond by space hipsters."
+ smoketime = 400
+ maxsmoketime = 400
////////////
//CIG PACK//
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm
index c7e5f444601..b80abcc2e8f 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/game/objects/items/weapons/hydroponics.dm
@@ -4,6 +4,7 @@ CONTAINS:
Plant-B-Gone
Nettle
Deathnettle
+Craftables (Cob pipes, potato batteries, pumpkinheads)
*/
@@ -135,3 +136,32 @@ Deathnettle
else
usr << "All the leaves have fallen off the deathnettle from violent whacking."
del(src)
+
+//Crafting
+
+/obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife))
+ user << "You use [W] to fashion a pipe out of the corn cob!"
+ new /obj/item/clothing/mask/pipe/cobpipe (user.loc)
+ del(src)
+ return
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/melee/energy))
+ user.show_message("You carve a face into [src]!", 1)
+ new /obj/item/clothing/head/helmet/hardhat/pumpkinhead (user.loc)
+ del(src)
+ return
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/weapon/cable_coil))
+ if(W:amount >= 5)
+ W:amount -= 5
+ if(!W:amount) del(W)
+ user << "You add some cable to the potato and slide it inside the battery encasing."
+ new /obj/item/weapon/cell/potato(user.loc)
+ del(src)
+ return
\ No newline at end of file
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index c0f955315f6..374d4dded77 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -28,4 +28,16 @@
/obj/item/clothing/head/helmet/hardhat/dblue
icon_state = "hardhat0_dblue"
item_state = "hardhat0_dblue"
- color = "dblue"
\ No newline at end of file
+ color = "dblue"
+
+/obj/item/clothing/head/helmet/hardhat/pumpkinhead
+ name = "carved pumpkin"
+ desc = "A jack o' lantern! Believed to ward off evil spirits."
+ icon_state = "hardhat0_pumpkin"
+ item_state = "hardhat0_pumpkin"
+ flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
+ brightness_on = 3
+ see_face = 0.0
+ color = "pumpkin"
+ armor = list(melee = 5, bullet = 0, laser = 5,energy = 5, bomb = 5, bio = 0, rad = 0)
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
\ No newline at end of file
diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm
index 50aec47e713..d778b8f40f5 100644
--- a/code/modules/food/food.dm
+++ b/code/modules/food/food.dm
@@ -1719,6 +1719,21 @@
icon_state = "applecakeslice"
bitesize = 2
+/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
+ name = "Pumpkin Pie"
+ desc = "A delicious treat for the autumn months."
+ icon_state = "pumpkinpie"
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
+ slices_num = 5
+ New()
+ ..()
+ reagents.add_reagent("nutriment", 29)
+
+/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
+ name = "Pumpkin Pie slice"
+ desc = "A slice of pumpkin pie, with whipped cream on top. Perfection."
+ icon_state = "pumpkinpieslice"
+ bitesize = 2
diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm
index 64f43fa2434..b6af2806eb4 100644
--- a/code/modules/food/recipes_microwave.dm
+++ b/code/modules/food/recipes_microwave.dm
@@ -996,6 +996,16 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/mysterysoup
+/datum/recipe/pumpkinpie
+ reagents = list("milk" = 5, "sugar" = 5)
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
+ /obj/item/weapon/reagent_containers/food/snacks/flour,
+ /obj/item/weapon/reagent_containers/food/snacks/egg,
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
+
+
//////////////////////////////////////////
// bs12 food port stuff
//////////////////////////////////////////
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index a9145c63541..4a3ed7a90ae 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ