diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm
index 56366d7cdd9..25f70920591 100644
--- a/code/game/objects/random/maintenance.dm
+++ b/code/game/objects/random/maintenance.dm
@@ -112,7 +112,8 @@ something, make sure it's not in one of the other lists.*/
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
prob(1);/obj/item/toy/baseball,
- prob(1);/obj/item/pizzavoucher
+ prob(1);/obj/item/pizzavoucher,
+ prob(2);/obj/item/weapon/cracker
/* VOREStation Edit End */
)
diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm
index 3f0f80593ca..a02ac5de5a1 100644
--- a/code/game/objects/random/misc.dm
+++ b/code/game/objects/random/misc.dm
@@ -1132,5 +1132,13 @@
prob(8);/obj/item/capture_crystal/random,
prob(10);/obj/item/weapon/bluespace_harpoon,
prob(10);/obj/item/weapon/bluespace_crystal,
- prob(1);/obj/item/clothing/glasses/graviton
+ prob(1);/obj/item/clothing/glasses/graviton,
+ prob(10);/obj/item/weapon/cracker,
+ prob(1);/obj/item/weapon/cracker/shrinking,
+ prob(1);/obj/item/weapon/cracker/growing,
+ prob(1);/obj/item/weapon/cracker/invisibility,
+ prob(1);/obj/item/weapon/cracker/drugged,
+ prob(1);/obj/item/weapon/cracker/knockover,
+ prob(1);/obj/item/weapon/cracker/vore,
+ prob(1);/obj/item/weapon/cracker/money
)
\ No newline at end of file
diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm
index 4fcfc0619a7..535b0198a86 100644
--- a/code/game/objects/structures/trash_pile_vr.dm
+++ b/code/game/objects/structures/trash_pile_vr.dm
@@ -281,6 +281,7 @@
prob(4);/obj/item/weapon/gun/energy/sizegun,
prob(4);/obj/item/device/slow_sizegun,
prob(4);/obj/item/clothing/accessory/collar/shock/bluespace,
+ prob(3);/obj/item/weapon/cracker,
prob(3);/obj/item/weapon/material/butterfly,
prob(3);/obj/item/weapon/material/butterfly/switchblade,
prob(3);/obj/item/clothing/gloves/knuckledusters,
@@ -313,7 +314,8 @@
prob(1);/obj/item/device/perfect_tele/one_beacon,
prob(1);/obj/item/clothing/gloves/bluespace,
prob(1);/obj/item/weapon/gun/energy/mouseray,
- prob(1);/obj/item/clothing/accessory/collar/shock/bluespace/modified)
+ prob(1);/obj/item/clothing/accessory/collar/shock/bluespace/modified,
+ prob(1);/obj/item/weapon/gun/energy/sizegun/backfire)
var/obj/item/I = new path()
return I
diff --git a/code/modules/vore/resizing/crackers.dm b/code/modules/vore/resizing/crackers.dm
new file mode 100644
index 00000000000..b88a87cb2a7
--- /dev/null
+++ b/code/modules/vore/resizing/crackers.dm
@@ -0,0 +1,177 @@
+//A bluespace cracker item that can be pulled between two characters.
+//The winner of the pull has an effect applied to them.
+//Crackers do already exist, but these ones are a more memey scene item.
+
+/obj/item/weapon/cracker
+ name = "bluespace cracker" //I have no idea why this was called shrink ray when this increased and decreased size.
+ desc = "A celebratory little game with a bluespace twist! Pull it between two people until it snaps, and the person who recieves the larger end gets a prize!"
+ icon = 'icons/obj/crackers.dmi'
+ icon_state = "blue"
+ item_icons = list(
+ slot_l_hand_str = 'icons/mob/items/lefthand_cracker.dmi',
+ slot_r_hand_str = 'icons/mob/items/righthand_cracker.dmi',
+ )
+ item_state = "blue"
+ var/rigged = 0 //So that they can be rigged by varedits to go one way or the other. positive values mean holder always wins, negative values mean target always wins.
+ var/list/prizes = list("shrinking","growing","drugged","invisibility","knocked over","teleport","wealth")
+ var/list/jokes = list(
+ "When is a boat just like snow? When it’s adrift.",
+ "What happens to naughty elves? Santa gives them the sack.",
+ "What do you call an old snowman? Water.",
+ "Why has Santa been banned from sooty chimneys? Carbon footprints.",
+ "What goes down but doesn't come up? A yo.",
+ "What's green and fuzzy, has four legs and would kill you if it fell from a tree? A pool table.",
+ "Why did the blind man fall into the well? Because he couldn't see that well.",
+ "What did the pirate get on his report card? Seven Cs",
+ "What do you call a fish with no eyes? Fsh",
+ "How do you make an egg roll? You push it.",
+ "What do you call a deer with no eyes? NO EYED DEER!",
+ "What's red, and smells like blue paint? Red paint.",
+ "Where do cows go to dance? A meat ball.",
+ "What do you call a person who steals all your toenail clippings? A cliptoemaniac.",
+ "What’s brown and sticky? A stick.",
+ "What's the best way to kill a circus? Go for the juggler.",
+ "What do you call a cow with no legs? Ground Beef.",
+ "Why'd the scarecrow win the Nobel prize? He was outstanding in his field.")
+
+/obj/item/weapon/cracker/attack(atom/A, mob/living/user, adjacent, params)
+ var/mob/living/carbon/human/target = A
+ if(!istype(target))
+ return
+ if(target.stat)
+ return
+ if(target == user)
+ to_chat(user, "You can't pull \the [src] by yourself, that would just be sad!")
+ return
+ var/check_pull = tgui_alert(target, "\The [user] is offering to pull \the [src] with you, do you want to pull it?", "Pull Cracker", list("Yes", "No"))
+ if(check_pull == "No")
+ to_chat(user, "\The [target] chose not to pull \the [src]!")
+ return
+ if(!adjacent)
+ to_chat(user, "\The [target] is not standing close enough to pull \the [src]!")
+ return
+ var/prize = pick(prizes)
+ var/joke = pick(jokes)
+ var/mob/living/carbon/human/winner
+ var/mob/living/carbon/human/loser
+ if(!rigged)
+ if(prob(50))
+ winner = user
+ loser = target
+ else
+ winner = target
+ loser = user
+ else
+ if(rigged > 0)
+ winner = user
+ loser = target
+ else
+ winner = target
+ loser = user
+
+ var/spawnloc = get_turf(winner)
+
+ winner.visible_message("\The [winner] wins the cracker prize!","You win the cracker prize!")
+ if(prize == "shrinking")
+ winner.resize(0.25)
+ winner.visible_message("\The [winner] shrinks suddenly!")
+ if(prize == "growing")
+ winner.resize(2)
+ winner.visible_message("\The [winner] grows in height suddenly.")
+ if(prize == "drugged")
+ winner.druggy = max(winner.druggy, 50)
+ if(prize == "invisibility")
+ if(!winner.cloaked)
+ winner.visible_message("\The [winner] vanishes from sight.")
+ winner.cloak()
+ spawn(600)
+ if(winner.cloaked)
+ winner.uncloak()
+ winner.visible_message("\The [winner] appears as if from thin air.")
+ if(prize == "knocked over")
+ winner.visible_message("\The [winner] is suddenly knocked to the ground.")
+ winner.weakened = max(winner.weakened,50)
+ if(prize == "teleport")
+ if(loser.can_be_drop_pred && loser.vore_selected)
+ if(winner.devourable && winner.can_be_drop_prey)
+ winner.visible_message("\The [winner] is teleported to somewhere nearby...")
+ var/datum/effect/effect/system/spark_spread/spk
+ spk = new(winner)
+
+ var/T = get_turf(winner)
+ spk.set_up(5, 0, winner)
+ spk.attach(winner)
+ playsound(T, "sparks", 50, 1)
+ anim(T,winner,'icons/mob/mob.dmi',,"phaseout",,winner.dir)
+ winner.forceMove(loser.vore_selected)
+ if(prize == "wealth")
+ new /obj/random/cash/huge(spawnloc)
+ new /obj/random/cash/huge(spawnloc)
+ winner.visible_message("\The [winner] has a whole load of cash fall at their feet!")
+
+ playsound(user, 'sound/effects/snap.ogg', 50, 1)
+ user.drop_item(src)
+ new /obj/random/toy(spawnloc)
+ new /obj/item/clothing/head/paper_crown(spawnloc)
+ var/obj/item/weapon/paper/cracker_joke/J = new(spawnloc)
+ J.info = joke
+ qdel(src)
+
+/obj/item/weapon/cracker/Initialize()
+ var/list/styles = list("blue","green","yellow","red","heart","hazard")
+ var/style = pick(styles)
+ icon_state = style
+ item_state = style
+ ..()
+
+/obj/item/weapon/cracker/shrinking
+ name = "shrinking bluespace cracker"
+ prizes = list("shrinking")
+
+/obj/item/weapon/cracker/growing
+ name = "growing bluespace cracker"
+ prizes = list("growing")
+
+/obj/item/weapon/cracker/invisibility
+ name = "cloaking bluespace cracker"
+ prizes = list("invisibility")
+
+/obj/item/weapon/cracker/drugged
+ name = "psychedelic bluespace cracker"
+ prizes = list("drugged")
+
+/obj/item/weapon/cracker/knockover
+ name = "forceful bluespace cracker"
+ prizes = list("knocked over")
+
+/obj/item/weapon/cracker/vore
+ name = "teleporting bluespace cracker"
+ prizes = list("teleport")
+
+/obj/item/weapon/cracker/money
+ name = "fortuitous bluespace cracker"
+ prizes = list("wealth")
+
+/obj/item/clothing/head/paper_crown
+ name = "paper crown"
+ icon_state = "paper_crown_blue"
+ item_state = "paper_crown_blue"
+ item_icons = list(slot_head_str = 'icons/inventory/head/mob.dmi')
+ desc = "A paper crown so thin that you can see through it."
+ flags_inv = 0
+ body_parts_covered = 0
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/head/paper_crown/Initialize()
+ var/list/styles = list("paper_crown_blue","paper_crown_green","paper_crown_yellow","paper_crown_red","paper_crown_pink")
+ var/style = pick(styles)
+ icon_state = style
+ item_state = style
+ ..()
+
+/obj/item/weapon/paper/cracker_joke
+ name = "joke"
+ icon_state = "joke"
+
+/obj/item/weapon/paper/cracker_joke/update_icon()
+ return
diff --git a/icons/inventory/head/item.dmi b/icons/inventory/head/item.dmi
index 538c3a57ee2..7897ed22072 100644
Binary files a/icons/inventory/head/item.dmi and b/icons/inventory/head/item.dmi differ
diff --git a/icons/inventory/head/mob.dmi b/icons/inventory/head/mob.dmi
index 635188fbada..8f7e232b3d2 100644
Binary files a/icons/inventory/head/mob.dmi and b/icons/inventory/head/mob.dmi differ
diff --git a/icons/mob/items/lefthand_cracker.dmi b/icons/mob/items/lefthand_cracker.dmi
new file mode 100644
index 00000000000..6e2d5776fce
Binary files /dev/null and b/icons/mob/items/lefthand_cracker.dmi differ
diff --git a/icons/mob/items/righthand_cracker.dmi b/icons/mob/items/righthand_cracker.dmi
new file mode 100644
index 00000000000..0818ed3ebc6
Binary files /dev/null and b/icons/mob/items/righthand_cracker.dmi differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 5c0531f5b7d..61365297d24 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/crackers.dmi b/icons/obj/crackers.dmi
new file mode 100644
index 00000000000..ac657f46f92
Binary files /dev/null and b/icons/obj/crackers.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index cd19d2ec9ea..0c8fdc28ee4 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4190,6 +4190,7 @@
#include "code\modules\vore\fluffstuff\custom_mecha_vr.dm"
#include "code\modules\vore\fluffstuff\custom_permits_vr.dm"
#include "code\modules\vore\persist\persist_vr.dm"
+#include "code\modules\vore\resizing\crackers.dm"
#include "code\modules\vore\resizing\grav_pull_vr.dm"
#include "code\modules\vore\resizing\holder_micro_vr.dm"
#include "code\modules\vore\resizing\holder_vr.dm"