diff --git a/code/game/objects/items/balls.dm b/code/game/objects/items/balls.dm
deleted file mode 100644
index 2e5a385ead..0000000000
--- a/code/game/objects/items/balls.dm
+++ /dev/null
@@ -1,92 +0,0 @@
-/* BALLS - GLORIOUS BALLS
-//
-// Includes:-
-// 1) Tennis balls, lines 10 - 92
-//
-//
-//
-*/
-
-/obj/item/toy/tennis
- name = "tennis ball"
- desc = "A classical tennis ball. It appears to have faint bite marks scattered all over its surface."
- icon = 'modular_citadel/icons/obj/balls.dmi'
- icon_state = "tennis_classic"
- lefthand_file = 'modular_citadel/icons/mob/inhands/balls_left.dmi'
- righthand_file = 'modular_citadel/icons/mob/inhands/balls_right.dmi'
- item_state = "tennis_classic"
- mob_overlay_icon = 'modular_citadel/icons/mob/mouthball.dmi'
- slot_flags = ITEM_SLOT_HEAD | ITEM_SLOT_NECK | ITEM_SLOT_EARS //Fluff item, put it wherever you want!
- throw_range = 14
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/toy/tennis/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
- altafterattack(A, user, TRUE, params)
- return TRUE
-
-/obj/item/toy/tennis/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
- if(istype(user))
- user.visible_message("[user] waggles [src] at [target].", "You waggle [src] at [target].")
- return TRUE
-
-/obj/item/toy/tennis/rainbow
- name = "pseudo-euclidean interdimensional tennis sphere"
- desc = "A tennis ball from another plane of existance. Really groovy."
- icon_state = "tennis_rainbow"
- item_state = "tennis_rainbow"
- actions_types = list(/datum/action/item_action/squeeze) //Giving the masses easy access to unilimted honks would be annoying
-
-/obj/item/toy/tennis/rainbow/Initialize()
- . = ..()
- AddComponent(/datum/component/squeak)
-
-/obj/item/toy/tennis/rainbow/izzy //izzyinbox's donator item
- name = "Katlin's Ball"
- desc = "A tennis ball that's seen a good bit of love, being covered in a few black and white hairs and slobber."
- icon_state = "tennis_izzy"
- item_state = "tennis_izzy"
-
-/obj/item/toy/tennis/red //da red wuns go fasta
- name = "red tennis ball"
- desc = "A red tennis ball. It goes three times faster!"
- icon_state = "tennis_red"
- item_state = "tennis_red"
- throw_speed = 9
-
-/obj/item/toy/tennis/yellow //because yellow is hot I guess
- name = "yellow tennis ball"
- desc = "A yellow tennis ball. It seems to have a flame-retardant coating."
- icon_state = "tennis_yellow"
- item_state = "tennis_yellow"
- resistance_flags = FIRE_PROOF
-
-/obj/item/toy/tennis/green //pestilence
- name = "green tennis ball"
- desc = "A green tennis ball. It seems to have an impermeable coating."
- icon_state = "tennis_green"
- item_state = "tennis_green"
- permeability_coefficient = 0.9
-
-/obj/item/toy/tennis/cyan //electric
- name = "cyan tennis ball"
- desc = "A cyan tennis ball. It seems to have odd electrical properties."
- icon_state = "tennis_cyan"
- item_state = "tennis_cyan"
- siemens_coefficient = 0.9
-
-/obj/item/toy/tennis/blue //reliability
- name = "blue tennis ball"
- desc = "A blue tennis ball. It seems ever so slightly more robust than normal."
- icon_state = "tennis_blue"
- item_state = "tennis_blue"
- max_integrity = 300
-
-/obj/item/toy/tennis/purple //because purple dyes have high pH and would neutralize acids I guess
- name = "purple tennis ball"
- desc = "A purple tennis ball. It seems to have an acid-resistant coating."
- icon_state = "tennis_purple"
- item_state = "tennis_purple"
- resistance_flags = ACID_PROOF
-
-/datum/action/item_action/squeeze
- name = "Squeak!"
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index dcd0cda233..d206acb433 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -609,6 +609,7 @@
/obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
/obj/machinery/vending/games = "\improper Good Clean Fun",
/obj/machinery/vending/kink = "KinkMate",
+ /obj/machinery/vending/barkbox = "Bark Box",
/obj/machinery/vending/autodrobe = "AutoDrobe",
/obj/machinery/vending/wardrobe/sec_wardrobe = "SecDrobe",
/obj/machinery/vending/wardrobe/det_wardrobe = "DetDrobe",
diff --git a/code/game/objects/items/fluff.dm b/code/game/objects/items/fluff.dm
new file mode 100644
index 0000000000..dc78f74b6b
--- /dev/null
+++ b/code/game/objects/items/fluff.dm
@@ -0,0 +1,160 @@
+/* Balls, Bones, and Bountiful Fun
+//
+// Includes:-
+// 1) Fluff Content, lines 12 - 131
+//
+// 1) Tennis balls, lines 39 - 99
+// 2) Chew bones, lines 101 - 138
+// 3) Frisbee, lines 140 - 166
+*/
+
+/obj/item/toy/fluff
+ name = "Fluff Item"
+ desc = "You shouldn't be seeing this."
+ icon = 'icons/obj/barkbox_fluff.dmi'
+ icon_state = "poly_tennis"
+ item_state = "poly_tennis"
+ lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
+ mob_overlay_icon = 'icons/mob/mouthfluff.dmi'
+ slot_flags = ITEM_SLOT_HEAD | ITEM_SLOT_NECK | ITEM_SLOT_EARS
+ var/poly_states = 0
+ var/poly_colors = list()
+
+/obj/item/toy/fluff/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
+ altafterattack(A, user, TRUE, params)
+ return TRUE
+
+/obj/item/toy/fluff/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
+ if(istype(user))
+ user.visible_message("[user] waggles [src] at [target].", "You waggle [src] at [target].")
+ return TRUE
+
+/obj/item/toy/fluff/ComponentInitialize()
+ . = ..()
+ if(!poly_states)
+ return
+ AddElement(/datum/element/polychromic, poly_colors, poly_states, _flags = POLYCHROMIC_ACTION)
+
+/obj/item/toy/fluff/tennis_poly
+ name = "polychromic tennis ball"
+ desc = "A polychromic tennis ball. There's a half torn tag read: WARNIN-, surely it means nothing. Right?"
+ throw_range = 14
+ w_class = WEIGHT_CLASS_SMALL
+ poly_states = 2
+ poly_colors = list("#CCFF00", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/red
+ poly_colors = list("#FF4C00", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/yellow
+ poly_colors = list("#FFCC00", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/green
+ poly_colors = list("#99FF00", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/cyan
+ poly_colors = list("#00FFB2", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/blue
+ poly_colors = list("#007FFF", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/purple
+ poly_colors = list("#CC00FF", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/tri
+ name = "tricolor-polychromic tennis ball"
+ desc = "A tricolor-polychromic tennis ball. Triple the shocking!"
+ icon_state = "tripoly_tennis"
+ item_state = "tripoly_tennis"
+ poly_states = 3
+ poly_colors = list("#FFFFFF", "#FFFFFF", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/tri/squeak
+ name = "tricolor-polychromic tennis sphere"
+ desc = "A tricolor-polychromic tennis ball. This one seems to emit a squeak when squeezed."
+ actions_types = list(/datum/action/item_action/squeeze)
+
+/obj/item/toy/fluff/tennis_poly/tri/squeak/izzy //izzyinbox's donator item
+ name = "Katlin's Ball"
+ desc = "A tennis ball that's seen a good bit of love, being covered in a few black and white hairs and slobber."
+ poly_colors = list("#8FED56", "#51cfde", "#FFFFFF")
+
+/obj/item/toy/fluff/tennis_poly/tri/squeak/rainbow
+ name = "pseudo-euclidean interdimensional tennis sphere"
+ desc = "A tennis ball from another plane of existance. Really groovy."
+ icon_state = "tennis_rainbow"
+ item_state = "tennis_rainbow"
+ poly_states = 0
+ actions_types = list(/datum/action/item_action/squeeze)
+
+/obj/item/toy/fluff/tennis_poly/tri/squeak/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak)
+
+/obj/item/toy/fluff/bone_poly
+ name = "polychromic bone"
+ desc = "A polychromic chew bone. Nothing like a good bone to chew on."
+ icon_state = "poly_bone"
+ item_state = "poly_bone"
+ throw_range = 7
+ w_class = WEIGHT_CLASS_SMALL
+ poly_states = 1
+ poly_colors = list("#FFFFFF")
+
+/obj/item/toy/fluff/bone_poly/red
+ poly_colors = list("#FF4C00")
+
+/obj/item/toy/fluff/bone_poly/yellow
+ poly_colors = list("#FFCC00")
+
+/obj/item/toy/fluff/bone_poly/green
+ poly_colors = list("#99FF00")
+
+/obj/item/toy/fluff/bone_poly/cyan
+ poly_colors = list("#00FFB2")
+
+/obj/item/toy/fluff/bone_poly/blue
+ poly_colors = list("#007FFF")
+
+/obj/item/toy/fluff/bone_poly/purple
+ poly_colors = list("#CC00FF")
+
+/obj/item/toy/fluff/bone_poly/squeak
+ name = "polychromic bone"
+ desc = "A polychromic chew bone. Makes a small squeak when squeezed."
+
+/obj/item/toy/fluff/bone_poly/squeak/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak)
+
+/datum/action/item_action/squeeze
+ name = "Squeak!"
+
+/obj/item/toy/fluff/frisbee_poly
+ name = "polychromic frisbee"
+ desc = "A polychromic frisbee. Warning: May induce shock."
+ icon_state = "poly_frisbee"
+ item_state = "poly_frisbee"
+ throw_range = 14
+ w_class = WEIGHT_CLASS_NORMAL
+ poly_states = 2
+ poly_colors = list("#CCFF00", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/red
+ poly_colors = list("#FF4C00", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/yellow
+ poly_colors = list("#FFCC00", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/green
+ poly_colors = list("#99FF00", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/cyan
+ poly_colors = list("#00FFB2", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/blue
+ poly_colors = list("#007FFF", "#FFFFFF")
+
+/obj/item/toy/fluff/frisbee_poly/purple
+ poly_colors = list("#CC00FF", "#FFFFFF")
\ No newline at end of file
diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm
index 4080a45af0..db55b0414c 100644
--- a/code/game/objects/items/storage/fancy.dm
+++ b/code/game/objects/items/storage/fancy.dm
@@ -435,6 +435,20 @@
STR.max_items = 6
STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/nugget))
+/obj/item/storage/fancy/treat_box
+ name = "treat box"
+ desc = "A cardboard box used for holding dog treats."
+ icon = 'icons/obj/food/containers.dmi'
+ icon_state = "treatbox"
+ icon_type = "treat"
+ spawn_type = /obj/item/reagent_containers/food/snacks/dogtreat
+
+/obj/item/storage/fancy/treat_box/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_items = 6
+ STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/dogtreat))
+
/obj/item/storage/fancy/cracker_pack
name = "cracker pack"
desc = "A pack of delicious crackers. Keep away from parrots!"
diff --git a/code/modules/cargo/packs/vending.dm b/code/modules/cargo/packs/vending.dm
index e55f24d91e..6d978d629f 100644
--- a/code/modules/cargo/packs/vending.dm
+++ b/code/modules/cargo/packs/vending.dm
@@ -67,7 +67,7 @@
/datum/supply_pack/vending/hydro
name = "Hydroponics Supply Crate"
- desc = "Arnt you glad you dont have to do it the natural way? Contains a megaseed and nutrimax vending machine refill."
+ desc = "Aren't you glad you dont have to do it the natural way? Contains a megaseed and nutrimax vending machine refill."
cost = 5000
contains = list(/obj/item/vending_refill/hydroseeds,
/obj/item/vending_refill/hydronutrients)
@@ -82,6 +82,14 @@
contains = list(/obj/item/vending_refill/kink)
crate_name = "Kinkmate construction kit"
+/datum/supply_pack/vending/barkbox
+ name = "Bark Box Supply Crate"
+ desc = "Running of out things to keep your pets happy?"
+ cost = 2000
+ contraband = TRUE
+ contains = list(/obj/item/vending_refill/barkbox)
+ crate_name = "bark box supply crate"
+
/datum/supply_pack/vending/medical
name = "Medical Vending Crate"
desc = "Contains refills for medical vending machines."
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index b0af7aa0d5..28a3343ae6 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -190,6 +190,12 @@
tagname = stripped_input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot", MAX_NAME_LEN)
name = "[initial(name)] - [tagname]"
+/obj/item/clothing/neck/petcollar/ribbon
+ name = "ribbon pet collar"
+ icon_state = "ribboncollar"
+ poly_states = 2
+ poly_colors = list("#454545", "#292929")
+
/obj/item/clothing/neck/petcollar/leather
name = "leather pet collar"
icon_state = "leathercollar"
@@ -225,6 +231,12 @@
return
..()
+/obj/item/clothing/neck/petcollar/locked/ribbon
+ name = "ribbon pet collar"
+ icon_state = "ribboncollar"
+ poly_states = 2
+ poly_colors = list("#454545", "#292929")
+
/obj/item/clothing/neck/petcollar/locked/leather
name = "leather pet collar"
icon_state = "leathercollar"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 3e72765234..354d488703 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -567,6 +567,26 @@
attack_verb = list("warned", "cautioned", "smashed")
armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+/obj/item/clothing/suit/petharness
+ name = "pet harness"
+ desc = "For your pet! Or not! Has a little clip on the back."
+ icon_state = "petharness"
+ item_state = "petharness"
+ body_parts_covered = NONE
+ mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
+ allowed = /obj/item/toy/fluff
+
+/obj/item/clothing/suit/petharness/mesh
+ name = "mesh pet harness"
+ desc = "For your pet! Or not! Has some mesh to cover up your more sensitive bits and a little clip on the back."
+ icon_state = "petharness_mesh"
+ item_state = "petharness_mesh"
+ body_parts_covered = CHEST
+
+/obj/item/clothing/suit/petharness/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/polychromic, list("#0056D9", "#959595"), 2, _flags = POLYCHROMIC_ACTION)
+
// WINTER COATS
/obj/item/clothing/suit/hooded/wintercoat
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index 94960a2658..8c5631336e 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -466,6 +466,17 @@
foodtype = GRAIN | SUGAR
dunkable = TRUE
+/obj/item/reagent_containers/food/snacks/dogtreat
+ name = "dog treat"
+ desc = "It's a scooby-snack. Right?"
+ icon_state = "dogtreat"
+ bitesize = 1
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 1)
+ filling_color = "#635444"
+ tastes = list("meat" = 1, "dough" = 1)
+ foodtype = GRAIN | MEAT
+
/obj/item/reagent_containers/food/snacks/donkpocket
name = "\improper Donk-pocket"
desc = "The food of choice for the seasoned traitor."
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
index 6c418ab612..5343595f89 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
@@ -214,6 +214,17 @@
result = /obj/item/reagent_containers/food/snacks/cracker
subcategory = CAT_PASTRY
+/datum/crafting_recipe/food/dogtreat
+ time = 15
+ name = "Dog Treat"
+ reqs = list(
+ /datum/reagent/consumable/sodiumchloride = 1,
+ /obj/item/reagent_containers/food/snacks/meat/cutlet = 1,
+ /obj/item/reagent_containers/food/snacks/pastrybase = 1,
+ )
+ result = /obj/item/reagent_containers/food/snacks/dogtreat
+ subcategory = CAT_PASTRY
+
/datum/crafting_recipe/food/fortunecookie
time = 15
name = "Fortune cookie"
diff --git a/code/modules/vending/barkbox.dm b/code/modules/vending/barkbox.dm
new file mode 100644
index 0000000000..4b5d9734dd
--- /dev/null
+++ b/code/modules/vending/barkbox.dm
@@ -0,0 +1,36 @@
+/obj/machinery/vending/barkbox
+ name = "Bark Box"
+ desc = "For all your pet needs!"
+ icon_state = "barkbox"
+ product_slogans = "Whuff!;Bark!;Give me a treat!"
+ products = list(
+ /obj/item/storage/fancy/treat_box = 8,
+ /obj/item/clothing/neck/petcollar = 5,
+ /obj/item/clothing/neck/petcollar/ribbon = 5,
+ /obj/item/clothing/neck/petcollar/leather = 5,
+ /obj/item/clothing/suit/petharness = 4,
+ /obj/item/clothing/suit/petharness/mesh = 4,
+ /obj/item/toy/fluff/tennis_poly = 4,
+ /obj/item/toy/fluff/tennis_poly/tri = 2,
+ /obj/item/toy/fluff/bone_poly = 4,
+ /obj/item/toy/fluff/frisbee_poly = 4
+ )
+ contraband = list(
+ /obj/item/clothing/neck/petcollar/locked = 2,
+ /obj/item/clothing/neck/petcollar/locked/ribbon = 2,
+ /obj/item/clothing/neck/petcollar/locked/leather = 2,
+ /obj/item/key/collar = 2,
+ /obj/item/dildo/knotted = 3
+ )
+ premium = list(
+ /obj/item/toy/fluff/tennis_poly/tri/squeak = 1,
+ /obj/item/toy/fluff/bone_poly/squeak = 1
+ )
+ refill_canister = /obj/item/vending_refill/barkbox
+ default_price = PRICE_CHEAP
+ extra_price = PRICE_BELOW_NORMAL
+ payment_department = NO_FREEBIES
+
+/obj/item/vending_refill/barkbox
+ machine_name = "Bark Box"
+ icon_state = "refill_barkbox"
diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi
index 3214cc73ba..20b8576277 100644
Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index 35c1e5fbfb..9fc2a476d2 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/mob/head_fluff.dmi b/icons/mob/head_fluff.dmi
new file mode 100644
index 0000000000..1eb06e22c7
Binary files /dev/null and b/icons/mob/head_fluff.dmi differ
diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi
new file mode 100644
index 0000000000..cb78f463ba
Binary files /dev/null and b/icons/mob/inhands/fluff_lefthand.dmi differ
diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi
new file mode 100644
index 0000000000..27f88cc41d
Binary files /dev/null and b/icons/mob/inhands/fluff_righthand.dmi differ
diff --git a/icons/mob/mouthfluff.dmi b/icons/mob/mouthfluff.dmi
new file mode 100644
index 0000000000..34fd7f99a9
Binary files /dev/null and b/icons/mob/mouthfluff.dmi differ
diff --git a/icons/obj/barkbox_fluff.dmi b/icons/obj/barkbox_fluff.dmi
new file mode 100644
index 0000000000..e420e864e7
Binary files /dev/null and b/icons/obj/barkbox_fluff.dmi differ
diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi
index d7e0c9c24b..8540b2f392 100644
Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index da3dbe6115..167155f392 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi
index e8bd4790dc..40e00b431e 100644
Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ
diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi
index 9ccfb9e7f8..bb426aed20 100644
Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ
diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi
index c70fe9d44e..68055d766d 100644
Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ
diff --git a/icons/obj/vending_restock.dmi b/icons/obj/vending_restock.dmi
index 978a13803c..a48107546f 100644
Binary files a/icons/obj/vending_restock.dmi and b/icons/obj/vending_restock.dmi differ
diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm
index cdbd49050a..2c61e3ec49 100644
--- a/modular_citadel/code/modules/client/loadout/__donator.dm
+++ b/modular_citadel/code/modules/client/loadout/__donator.dm
@@ -254,13 +254,13 @@
/datum/gear/donator/toriball
name = "Rainbow Tennis Ball"
slot = SLOT_IN_BACKPACK
- path = /obj/item/toy/tennis/rainbow
+ path = /obj/item/toy/fluff/tennis_poly/tri/squeak/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/donator/izzyball
name = "Katlin's Ball"
slot = SLOT_IN_BACKPACK
- path = /obj/item/toy/tennis/rainbow/izzy
+ path = /obj/item/toy/fluff/tennis_poly/tri/squeak/izzy
ckeywhitelist = list("izzyinbox")
/datum/gear/donator/cloak
diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm
index 0b700b11e2..5aa76ebee7 100644
--- a/modular_citadel/code/modules/client/loadout/backpack.dm
+++ b/modular_citadel/code/modules/client/loadout/backpack.dm
@@ -9,33 +9,100 @@
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
/datum/gear/backpack/tennis
- name = "Classic Tennis Ball"
- path = /obj/item/toy/tennis
- subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
+ name = "Tri-color Polychromic Tennis Ball"
+ path = /obj/item/toy/fluff/tennis_poly/tri
+ cost = 3
+
+/datum/gear/backpack/tennis
+ name = "Squeakable Tri-color Polychromic Tennis Ball"
+ path = /obj/item/toy/fluff/tennis_poly/tri/squeak
+ cost = 6
+
+/datum/gear/backpack/tennis
+ name = "Polychromic Tennis Ball"
+ path = /obj/item/toy/fluff/tennis_poly
/datum/gear/backpack/tennis/red
name = "Red Tennis Ball"
- path = /obj/item/toy/tennis/red
+ path = /obj/item/toy/fluff/tennis_poly/red
/datum/gear/backpack/tennis/yellow
name = "Yellow Tennis Ball"
- path = /obj/item/toy/tennis/yellow
+ path = /obj/item/toy/fluff/tennis_poly/yellow
/datum/gear/backpack/tennis/green
name = "Green Tennis Ball"
- path = /obj/item/toy/tennis/green
+ path = /obj/item/toy/fluff/tennis_poly/green
/datum/gear/backpack/tennis/cyan
name = "Cyan Tennis Ball"
- path = /obj/item/toy/tennis/cyan
+ path = /obj/item/toy/fluff/tennis_poly/cyan
/datum/gear/backpack/tennis/blue
name = "Blue Tennis Ball"
- path = /obj/item/toy/tennis/blue
+ path = /obj/item/toy/fluff/tennis_poly/blue
/datum/gear/backpack/tennis/purple
name = "Purple Tennis Ball"
- path = /obj/item/toy/tennis/purple
+ path = /obj/item/toy/fluff/tennis_poly/purple
+
+/datum/gear/backpack/bone
+ name = "Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly
+ subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
+
+/datum/gear/backpack/bone/red
+ name = "Red Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/red
+
+/datum/gear/backpack/bone/yellow
+ name = "Yellow Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/yellow
+
+/datum/gear/backpack/bone/green
+ name = "Green Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/green
+
+/datum/gear/backpack/bone/cyan
+ name = "Cyan Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/cyan
+
+/datum/gear/backpack/bone/blue
+ name = "Blue Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/blue
+
+/datum/gear/backpack/bone/purple
+ name = "Purple Polychromic Bone"
+ path = /obj/item/toy/fluff/bone_poly/purple
+
+/datum/gear/backpack/frisbee
+ name = "Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly
+ subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
+
+/datum/gear/backpack/frisbee/red
+ name = "Red Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/red
+
+/datum/gear/backpack/frisbee/yellow
+ name = "Yellow Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/yellow
+
+/datum/gear/backpack/frisbee/green
+ name = "Green Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/green
+
+/datum/gear/backpack/frisbee/cyan
+ name = "Cyan Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/cyan
+
+/datum/gear/backpack/frisbee/blue
+ name = "Blue Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/blue
+
+/datum/gear/backpack/frisbee/purple
+ name = "Purple Polychromic Frisbee"
+ path = /obj/item/toy/fluff/frisbee_poly/purple
/datum/gear/backpack/dildo
name = "Customizable dildo"
diff --git a/modular_citadel/icons/mob/inhands/balls_left.dmi b/modular_citadel/icons/mob/inhands/balls_left.dmi
deleted file mode 100644
index 2e751d0f44..0000000000
Binary files a/modular_citadel/icons/mob/inhands/balls_left.dmi and /dev/null differ
diff --git a/modular_citadel/icons/mob/inhands/balls_right.dmi b/modular_citadel/icons/mob/inhands/balls_right.dmi
deleted file mode 100644
index 45ee6864f0..0000000000
Binary files a/modular_citadel/icons/mob/inhands/balls_right.dmi and /dev/null differ
diff --git a/modular_citadel/icons/mob/mouthball.dmi b/modular_citadel/icons/mob/mouthball.dmi
deleted file mode 100644
index b5c08dd648..0000000000
Binary files a/modular_citadel/icons/mob/mouthball.dmi and /dev/null differ
diff --git a/modular_citadel/icons/obj/balls.dmi b/modular_citadel/icons/obj/balls.dmi
deleted file mode 100644
index 9b9f4575b3..0000000000
Binary files a/modular_citadel/icons/obj/balls.dmi and /dev/null differ
diff --git a/tgstation.dme b/tgstation.dme
index 7879a87e32..1edbdcb9cf 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1036,7 +1036,6 @@
#include "code\game\objects\items\airlock_painter.dm"
#include "code\game\objects\items\apc_frame.dm"
#include "code\game\objects\items\armor_kits.dm"
-#include "code\game\objects\items\balls.dm"
#include "code\game\objects\items\binoculars.dm"
#include "code\game\objects\items\blueprints.dm"
#include "code\game\objects\items\body_egg.dm"
@@ -1070,6 +1069,7 @@
#include "code\game\objects\items\extinguisher.dm"
#include "code\game\objects\items\fireaxe.dm"
#include "code\game\objects\items\flamethrower.dm"
+#include "code\game\objects\items\fluff.dm"
#include "code\game\objects\items\gift.dm"
#include "code\game\objects\items\granters.dm"
#include "code\game\objects\items\handcuffs.dm"
@@ -3579,6 +3579,7 @@
#include "code\modules\vending\_vending.dm"
#include "code\modules\vending\assist.dm"
#include "code\modules\vending\autodrobe.dm"
+#include "code\modules\vending\barkbox.dm"
#include "code\modules\vending\boozeomat.dm"
#include "code\modules\vending\cartridge.dm"
#include "code\modules\vending\cigarette.dm"