diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm
deleted file mode 100644
index 9099ff3bd10..00000000000
--- a/code/game/objects/items/weapons/dice.dm
+++ /dev/null
@@ -1,59 +0,0 @@
-/obj/item/weapon/dice
- name = "d6"
- desc = "A dice with six sides."
- icon = 'icons/obj/dice.dmi'
- icon_state = "d66"
- w_class = ITEMSIZE_TINY
- var/sides = 6
- attack_verb = list("diced")
-
-/obj/item/weapon/dice/New()
- icon_state = "[name][rand(1,sides)]"
-
-/obj/item/weapon/dice/d4
- name = "d4"
- desc = "A dice with four sides."
- icon_state = "d44"
- sides = 4
-
-/obj/item/weapon/dice/d8
- name = "d8"
- desc = "A dice with eight sides."
- icon_state = "d88"
- sides = 8
-
-/obj/item/weapon/dice/d10
- name = "d10"
- desc = "A dice with ten sides."
- icon_state = "d1010"
- sides = 10
-
-/obj/item/weapon/dice/d12
- name = "d12"
- desc = "A dice with twelve sides."
- icon_state = "d1212"
- sides = 12
-
-/obj/item/weapon/dice/d20
- name = "d20"
- desc = "A dice with twenty sides."
- icon_state = "d2020"
- sides = 20
-
-/obj/item/weapon/dice/d100
- name = "d100"
- desc = "A dice with ten sides. This one is for the tens digit."
- icon_state = "d10010"
- sides = 10
-
-/obj/item/weapon/dice/attack_self(mob/user as mob)
- var/result = rand(1, sides)
- var/comment = ""
- if(sides == 20 && result == 20)
- comment = "Nat 20!"
- else if(sides == 20 && result == 1)
- comment = "Ouch, bad luck."
- icon_state = "[name][result]"
- user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
- "You throw [src]. It lands on a [result]. [comment]", \
- "You hear [src] landing on a [result]. [comment]")
diff --git a/code/modules/games/dice.dm b/code/modules/games/dice.dm
new file mode 100644
index 00000000000..333d5ee5c36
--- /dev/null
+++ b/code/modules/games/dice.dm
@@ -0,0 +1,117 @@
+/obj/item/weapon/dice
+ name = "d6"
+ desc = "A dice with six sides."
+ icon = 'icons/obj/dice.dmi'
+ icon_state = "d66"
+ w_class = ITEMSIZE_TINY
+ var/sides = 6
+ var/result = 6
+ attack_verb = list("diced")
+
+/obj/item/weapon/dice/New()
+ icon_state = "[name][rand(1,sides)]"
+
+/obj/item/weapon/dice/d4
+ name = "d4"
+ desc = "A dice with four sides."
+ icon_state = "d44"
+ sides = 4
+ result = 4
+
+/obj/item/weapon/dice/d8
+ name = "d8"
+ desc = "A dice with eight sides."
+ icon_state = "d88"
+ sides = 8
+ result = 8
+
+/obj/item/weapon/dice/d10
+ name = "d10"
+ desc = "A dice with ten sides."
+ icon_state = "d1010"
+ sides = 10
+ result = 10
+
+/obj/item/weapon/dice/d12
+ name = "d12"
+ desc = "A dice with twelve sides."
+ icon_state = "d1212"
+ sides = 12
+ result = 12
+
+/obj/item/weapon/dice/d20
+ name = "d20"
+ desc = "A dice with twenty sides."
+ icon_state = "d2020"
+ sides = 20
+ result = 20
+
+/obj/item/weapon/dice/d100
+ name = "d100"
+ desc = "A dice with ten sides. This one is for the tens digit."
+ icon_state = "d10010"
+ sides = 10
+ result = 10
+
+/obj/item/weapon/dice/attack_self(mob/user as mob)
+ rollDice(user, 0)
+
+/obj/item/weapon/dice/proc/rollDice(mob/user as mob, var/silent = 0)
+ result = rand(1, sides)
+ icon_state = "[name][result]"
+
+ if(!silent)
+ var/comment = ""
+ if(sides == 20 && result == 20)
+ comment = "Nat 20!"
+ else if(sides == 20 && result == 1)
+ comment = "Ouch, bad luck."
+
+ user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
+ "You throw [src]. It lands on a [result]. [comment]", \
+ "You hear [src] landing on a [result]. [comment]")
+
+//Liar's Dice cup
+/obj/item/weapon/storage/dicecup
+ name = "dice cup"
+ desc = "A cup used to conceal and hold dice."
+ icon = 'icons/obj/dice.dmi'
+ icon_state = "dicecup"
+ w_class = ITEMSIZE_SMALL
+ storage_slots = 5
+ can_hold = list(
+ /obj/item/weapon/dice,
+ )
+
+/obj/item/weapon/storage/dicecup/attack_self(mob/user as mob)
+ user.visible_message("[user] shakes [src].", \
+ "You shake [src].", \
+ "You hear dice rolling.")
+ rollCup(user)
+
+/obj/item/weapon/storage/dicecup/proc/rollCup(mob/user as mob)
+ for(var/obj/item/weapon/dice/I in src.contents)
+ var/obj/item/weapon/dice/D = I
+ D.rollDice(user, 1)
+
+/obj/item/weapon/storage/dicecup/proc/revealDice(var/mob/viewer)
+ for(var/obj/item/weapon/dice/I in src.contents)
+ var/obj/item/weapon/dice/D = I
+ to_chat(viewer, "The [D.name] shows a [D.result].")
+
+/obj/item/weapon/storage/dicecup/verb/peekAtDice()
+ set category = "Object"
+ set name = "Peek at Dice"
+ set desc = "Peek at the dice under your cup."
+
+ revealDice(usr)
+
+/obj/item/weapon/storage/dicecup/verb/revealDiceHand()
+
+ set category = "Object"
+ set name = "Reveal Dice"
+ set desc = "Reveal the dice hidden under your cup."
+
+ for(var/mob/living/player in viewers(3))
+ to_chat(player, "[usr] reveals their dice.")
+ revealDice(player)
\ No newline at end of file
diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi
index f6a209b4687..17a3c64cd41 100644
Binary files a/icons/obj/dice.dmi and b/icons/obj/dice.dmi differ
diff --git a/polaris.dme b/polaris.dme
index 14c6914ade6..f0502791443 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -818,7 +818,6 @@
#include "code\game\objects\items\weapons\cigs_lighters.dm"
#include "code\game\objects\items\weapons\clown_items.dm"
#include "code\game\objects\items\weapons\cosmetics.dm"
-#include "code\game\objects\items\weapons\dice.dm"
#include "code\game\objects\items\weapons\dna_injector.dm"
#include "code\game\objects\items\weapons\explosives.dm"
#include "code\game\objects\items\weapons\extinguisher.dm"
@@ -1394,6 +1393,7 @@
#include "code\modules\games\cah_white_cards.dm"
#include "code\modules\games\cardemon.dm"
#include "code\modules\games\cards.dm"
+#include "code\modules\games\dice.dm"
#include "code\modules\games\spaceball_cards.dm"
#include "code\modules\games\tarot.dm"
#include "code\modules\genetics\side_effects.dm"