diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 2cfcaeb1530..bf238167be0 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -8,6 +8,29 @@
handle_casings = CYCLE_CASINGS
max_shells = 7
ammo_type = /obj/item/ammo_casing/a357
+ var/chamber_offset = 0 //how many empty chambers in the cylinder until you hit a round
+
+/obj/item/weapon/gun/projectile/revolver/verb/spin_cylinder()
+ set name = "Spin cylinder"
+ set desc = "Fun when you're bored out of your skull."
+ set category = "Object"
+
+ chamber_offset = 0
+ visible_message("\The [usr] spins the cylinder of \the [src]!", \
+ "You hear something metallic spin and click.")
+ loaded = shuffle(loaded)
+ if(rand(1,max_shells) > loaded.len)
+ chamber_offset = rand(0,max_shells - loaded.len)
+
+/obj/item/weapon/gun/projectile/revolver/consume_next_projectile()
+ if(chamber_offset)
+ chamber_offset--
+ return
+ return ..()
+
+/obj/item/weapon/gun/projectile/revolver/load_ammo(var/obj/item/A, mob/user)
+ chamber_offset = 0
+ return ..()
/obj/item/weapon/gun/projectile/revolver/mateba
name = "mateba"