diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index fcead78a565..48dd73532bf 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -105,6 +105,10 @@
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/storage/fancy/candle_box(src)
+ new /obj/item/clothing/gloves/ring/silver(src)
+ new /obj/item/clothing/gloves/ring/silver(src)
+ new /obj/item/clothing/gloves/ring/gold(src)
+ new /obj/item/clothing/gloves/ring/gold(src)
return
diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm
index f9638c18bce..ee3e0849d80 100644
--- a/code/modules/clothing/gloves/boxing.dm
+++ b/code/modules/clothing/gloves/boxing.dm
@@ -3,6 +3,7 @@
desc = "Because you really needed another excuse to punch your crewmates."
icon_state = "boxing"
item_state = "boxing"
+ species_restricted = null
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/gloves.dmi'
diff --git a/code/modules/clothing/gloves/rings.dm b/code/modules/clothing/gloves/rings.dm
new file mode 100644
index 00000000000..90b012d0580
--- /dev/null
+++ b/code/modules/clothing/gloves/rings.dm
@@ -0,0 +1,97 @@
+/obj/item/clothing/gloves/ring
+ name = "iron ring"
+ desc = "A band that goes around your finger. It's considered gauche to wear more than one."
+ gender = "neuter" // not plural anymore
+ transfer_prints = TRUE
+ icon_state = "ironring"
+ item_state = ""
+ icon = 'icons/obj/clothing/rings.dmi'
+ var/material = "iron"
+ var/stud = 0
+ species_restricted = null
+
+ New()
+ ..()
+ update_icon()
+
+ update_icon()
+ if(stud)
+ icon_state = "d_[initial(icon_state)]"
+ else
+ icon_state = initial(icon_state)
+ examine()
+ ..()
+ usr << "This one is made of [material]."
+ if(stud)
+ usr << "It is adorned with a single gem."
+
+/obj/item/clothing/gloves/ring/attackby(obj/item/I as obj, mob/user as mob, params)
+ if(istype(I, /obj/item/stack/sheet/mineral/diamond))
+ var/obj/item/stack/sheet/mineral/diamond/D = I
+ if(stud)
+ usr << "The [src] already has a gem."
+ else
+ if(D.amount >= 1)
+ D.use(1)
+ stud = 1
+ update_icon()
+ usr << "You socket the diamond into the [src]."
+
+// s'pensive
+/obj/item/clothing/gloves/ring/silver
+ name = "silver ring"
+ icon_state = "silverring"
+ material = "silver"
+
+/obj/item/clothing/gloves/ring/silver/blessed // todo
+ name = "blessed silver ring"
+
+/obj/item/clothing/gloves/ring/gold
+ name = "gold ring"
+ icon_state = "goldring"
+ material = "gold"
+
+/obj/item/clothing/gloves/ring/gold/blessed
+ name = "wedding band"
+
+// cheap
+/obj/item/clothing/gloves/ring/plastic
+ name = "white plastic ring"
+ icon_state = "whitering"
+ material = "plastic"
+
+/obj/item/clothing/gloves/ring/plastic/blue
+ name = "blue plastic ring"
+ icon_state = "bluering"
+
+/obj/item/clothing/gloves/ring/plastic/red
+ name = "red plastic ring"
+ icon_state = "redring"
+
+/obj/item/clothing/gloves/ring/plastic/random
+ New()
+ var/c = pick("white","blue","red")
+ name = "[c] plastic ring"
+ icon_state = "[c]ring"
+
+// weird
+/obj/item/clothing/gloves/ring/glass
+ name = "glass ring"
+ icon_state = "whitering"
+ material = "glass"
+
+/obj/item/clothing/gloves/ring/plasma
+ name = "plasma ring"
+ icon_state = "plasmaring"
+ material = "plasma"
+
+/obj/item/clothing/gloves/ring/uranium
+ name = "uranium ring"
+ icon_state = "uraniumring"
+ material = "uranium"
+
+// cultish
+/obj/item/clothing/gloves/ring/shadow
+ name = "shadow ring"
+ icon_state = "shadowring"
+ material = "shadows"
diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm
index cc1e966ff46..16c4f90fde1 100644
--- a/code/modules/mining/coins.dm
+++ b/code/modules/mining/coins.dm
@@ -101,6 +101,19 @@
overlays = list()
string_attached = null
user << "You detach the string from the coin."
+ else if(istype(W,/obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/WT = W
+ if(WT.welding && WT.remove_fuel(0, user))
+ var/typelist = list("iron" = /obj/item/clothing/gloves/ring,
+ "silver" = /obj/item/clothing/gloves/ring/silver,
+ "gold" = /obj/item/clothing/gloves/ring/gold,
+ "plasma" = /obj/item/clothing/gloves/ring/plasma,
+ "uranium" = /obj/item/clothing/gloves/ring/uranium)
+ var/typekey = typelist[cmineral]
+ if(ispath(typekey))
+ user << "\blue You make [src] into a ring."
+ new typekey(get_turf(loc))
+ qdel(src)
else ..()
/obj/item/weapon/coin/attack_self(mob/user as mob)
diff --git a/icons/obj/clothing/rings.dmi b/icons/obj/clothing/rings.dmi
new file mode 100644
index 00000000000..d378c34e04e
Binary files /dev/null and b/icons/obj/clothing/rings.dmi differ
diff --git a/paradise.dme b/paradise.dme
index ba458be8dd2..e00b85bb140 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -914,6 +914,7 @@
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
#include "code\modules\clothing\gloves\miscellaneous.dm"
+#include "code\modules\clothing\gloves\rings.dm"
#include "code\modules\clothing\head\collectable.dm"
#include "code\modules\clothing\head\hardhat.dm"
#include "code\modules\clothing\head\helmet.dm"