diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm
index 0433d9041d..4391901918 100644
--- a/code/game/objects/items/toys/toys.dm
+++ b/code/game/objects/items/toys/toys.dm
@@ -114,6 +114,18 @@
w_class = ITEMSIZE_LARGE
drop_sound = 'sound/items/drop/rubber.ogg'
+/obj/item/toy/colorballoon /// To color it, VV the 'color' var with a hex color code with the # included.
+ name = "balloon"
+ desc = "It's a plain little balloon. Comes in many colors!"
+ throwforce = 0
+ throw_speed = 4
+ throw_range = 20
+ force = 0
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "colorballoon"
+ w_class = ITEMSIZE_LARGE
+ drop_sound = 'sound/items/drop/rubber.ogg'
+
/*
* Fake telebeacon
*/
@@ -1438,4 +1450,36 @@
name = "purple king"
desc = "A large king piece for playing chess. It's made of a purple-colored glass."
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
- icon_state = "b-king"
\ No newline at end of file
+ icon_state = "b-king"
+
+/// Balloon structures
+
+/obj/structure/balloon
+ name = "generic balloon"
+ desc = "A generic balloon. How boring."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "ghostballoon"
+ anchored = 0
+ density = 0
+
+/obj/structure/balloon/attack_hand(mob/user)
+ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
+
+ if(user.a_intent == I_HELP)
+ user.visible_message("\The [user] pokes [src]!","You poke [src]!")
+ else if (user.a_intent == I_HURT)
+ user.visible_message("\The [user] punches [src]!","You punch [src]!")
+ else if (user.a_intent == I_GRAB)
+ user.visible_message("\The [user] attempts to pop [src]!","You attempt to pop [src]!")
+ else
+ user.visible_message("\The [user] lightly bats the [src].","You lightly bat the [src].")
+
+/obj/structure/balloon/bat
+ name = "giant bat balloon"
+ desc = "A large balloon in the shape of a spooky bat with orange eyes."
+ icon_state = "batballoon"
+
+/obj/structure/balloon/ghost
+ name = "giant ghost balloon"
+ desc = "Oh no, it's a ghost! Oh wait, it's just a balloon. Phew!"
+ icon_state = "ghostballoon"
\ No newline at end of file
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 21b649006c..33f220896e 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 24e8f9f541..dae925d5d9 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ