diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index ecdb2ac28ad..6a3493fc0ea 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -1753,4 +1753,33 @@ obj/item/toy/cards/deck/syndicate/black
/obj/item/toy/figure/warden
name = "Warden action figure"
icon_state = "warden"
- toysay = "Execute him for breaking in!"
\ No newline at end of file
+ toysay = "Execute him for breaking in!"
+
+//////////////////////////////////////////////////////
+// Magic 8-Ball / Conch //
+//////////////////////////////////////////////////////
+
+/obj/item/toy/eight_ball
+ name = "Magic 8-Ball"
+ desc = "Mystical! Magical! Ages 8+!"
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "eight-ball"
+ var/use_action = "shakes the ball"
+ var/cooldown = 0
+ var/list/possible_answers = list("Definitely", "All signs point to yes.", "Most likely.", "Yes.", "Ask again later.", "Better not tell you now.", "Future Unclear.", "Maybe.", "Doubtful.", "No.", "Don't count on it.", "Never.")
+
+/obj/item/toy/eight_ball/attack_self(mob/user as mob)
+ if(!cooldown)
+ var/answer = pick(possible_answers)
+ user.visible_message("[user] focuses on their question and [use_action]...")
+ user.visible_message("\icon[src] The [src] says \"[answer]\"")
+ spawn(30)
+ cooldown = 0
+ return
+
+/obj/item/toy/eight_ball/conch
+ name = "Magic Conch Shell"
+ desc = "All hail the Magic Conch!"
+ icon_state = "conch"
+ use_action = "pulls the string"
+ possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
\ No newline at end of file
diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm
index 30374d31a52..960ead4a0b6 100644
--- a/code/modules/arcade/arcade_prize.dm
+++ b/code/modules/arcade/arcade_prize.dm
@@ -17,7 +17,7 @@
playsound(src.loc, 'sound/items/bubblewrap.ogg', 30, 1, extrarange = -4, falloff = 10)
icon_state = "prizeconfetti"
src.color = pick(random_color_list)
- var/prize_inside = pick(/obj/random/carp_plushie, /obj/random/plushie, /obj/random/figure) //will add ticket bundles later
+ var/prize_inside = pick(/obj/random/carp_plushie, /obj/random/plushie, /obj/random/figure, /obj/item/toy/eight_ball) //will add ticket bundles later
spawn(10)
user.unEquip(src)
new prize_inside(user.loc)
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 39b795fdc04..6e6d268c9bd 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ