diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm
index 125c7ec3..1e6b3527 100644
--- a/hyperstation/code/obj/fleshlight.dm
+++ b/hyperstation/code/obj/fleshlight.dm
@@ -328,3 +328,65 @@
/obj/item/paper/fluff/portallight
name = "Portal Fleshlight Instructions"
info = "Thank you for purchasing the Silver Love Portal Fleshlight!
To use, simply register your new portal fleshlight with the provided underwear to link them together. The ask your lover to wear the underwear.
Have fun lovers,
Wilhelmina Steiner."
+
+//Happy Halloween!
+//Can be crafted with a kinife and a pumpkin in the crafting menu (misc category).
+//I have no regrets.
+
+/obj/item/twohanded/required/cumpkin
+
+ name = "Cumpkin"
+ desc = "A carved pumpkin with a suspicious inviting hole behind it, maybe you could 'use' it for a while..."
+ icon = 'hyperstation/icons/obj/fleshlight.dmi'
+ icon_state = "cumpkin"
+ item_state = "cumpkin"
+ lefthand_file = 'hyperstation/icons/mob/item_lefthand.dmi'
+ righthand_file = 'hyperstation/icons/mob/item_righthand.dmi'
+ w_class = WEIGHT_CLASS_SMALL
+ price = 10
+ var/inuse = 0
+
+/obj/item/twohanded/required/cumpkin/attack(mob/living/carbon/C, mob/living/user)
+ var/obj/item/organ/genital/penis/P = C.getorganslot("penis")
+ if(inuse == 1) //just to stop stacking and causing people to cum instantly
+ return
+ if(P&&P.is_exposed())
+ inuse = 1
+ if(!(C == user)) //if we are targeting someone else.
+ C.visible_message("[user] is trying to use [src] on [C]'s penis.", "[user] is trying to use [src] on your penis.")
+
+ if(!do_mob(user, C, 3 SECONDS)) //3 second delay
+ inuse = 0
+ return
+
+ //checked if not used on yourself, if not, carry on.
+ playsound(src, 'sound/lewd/slaps.ogg', 30, 1, -1) //slapping sound
+ inuse = 0
+ if(!(C == user)) //lewd flavour text
+ C.visible_message("[user] pumps [src] on [C]'s penis.", "[user] pumps [src] up and down on your penis.")
+ else
+ user.visible_message("[user] pumps [src] on their penis.", "You pump the cumpkin on your penis.")
+
+ if(prob(30)) //30% chance to make them moan.
+ C.emote("moan")
+
+ C.do_jitter_animation()
+ C.adjustArousalLoss(20) //make the target more aroused.
+ if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna())
+ C.mob_climax(forced_climax=TRUE) //make them cum if they are over the edge.
+
+ return
+
+ else
+ to_chat(user, "You don't see anywhere to use this on.")
+
+ inuse = 0
+ ..()
+
+/datum/crafting_recipe/cumpkin
+ name = "Cumpkin"
+ time = 30
+ reqs = list(/obj/item/reagent_containers/food/snacks/grown/pumpkin = 1)
+ tools = list(/obj/item/kitchen/knife)
+ result = /obj/item/twohanded/required/cumpkin
+ category = CAT_MISC
\ No newline at end of file
diff --git a/hyperstation/icons/mob/item_lefthand.dmi b/hyperstation/icons/mob/item_lefthand.dmi
new file mode 100644
index 00000000..cb71fa62
Binary files /dev/null and b/hyperstation/icons/mob/item_lefthand.dmi differ
diff --git a/hyperstation/icons/mob/item_righthand.dmi b/hyperstation/icons/mob/item_righthand.dmi
new file mode 100644
index 00000000..cb71fa62
Binary files /dev/null and b/hyperstation/icons/mob/item_righthand.dmi differ
diff --git a/hyperstation/icons/obj/fleshlight.dmi b/hyperstation/icons/obj/fleshlight.dmi
index fe41d26e..a05aa9d6 100644
Binary files a/hyperstation/icons/obj/fleshlight.dmi and b/hyperstation/icons/obj/fleshlight.dmi differ