diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 37f136b4618..b5a65b25ddf 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -12,6 +12,13 @@
var/alert = 0
var/open = 0
var/obj/item/weapon/electronics/airlock/electronics
+ var/start_showpiece_type = null //add type for items on display
+
+/obj/structure/displaycase/New()
+ ..()
+ if(start_showpiece_type)
+ showpiece = new start_showpiece_type (src)
+ update_icon()
/obj/structure/displaycase/ex_act(severity, target)
switch(severity)
@@ -129,6 +136,17 @@
showpiece = W
user << "You put [W] on display"
update_icon()
+ else if(istype(W, /obj/item/stack/sheet/glass) && destroyed)
+ var/obj/item/stack/sheet/glass/G = W
+ if(G.get_amount() < 2)
+ user << "You need two glass sheets to fix the case!"
+ return
+ user << "You start fixing the [src]..."
+ if(do_after(user, 20, target = src))
+ G.use(2)
+ destroyed = 0
+ health = initial(health)
+ update_icon()
else
user.changeNext_move(CLICK_CD_MELEE)
src.health -= W.force
@@ -205,11 +223,7 @@
/obj/structure/displaycase/captain
alert = 1
-
-/obj/structure/displaycase/captain/New()
- ..()
- showpiece = new /obj/item/weapon/gun/energy/laser/captain (src)
- update_icon()
+ start_showpiece_type = /obj/item/weapon/gun/energy/laser/captain
/obj/structure/displaycase/labcage
name = "lab cage"
diff --git a/html/changelogs/cases.yml b/html/changelogs/cases.yml
new file mode 100644
index 00000000000..c06e606b78f
--- /dev/null
+++ b/html/changelogs/cases.yml
@@ -0,0 +1,9 @@
+author: AnturK
+
+delete-after: True
+
+changes:
+ - rscadd: "Display cases can now be built using 5 wood planks and 10 glass sheets."
+ - rscadd: "Add airlock electronics to open it with id later, otherwise you'll have to use crowbar"
+ - tweak: "Broken display cases can be fixed with glass sheets or removed using crowbar"
+ - tweak: "Added start_showpiece_type variable for mappers to create custom displays"