diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index 645041c4c35..f2205b0ce44 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -45,7 +45,8 @@ GLOBAL_VAR(bomb_set)
var/anchor_stage = NUKE_INTACT
///This is so that we can check if the internal components are sealed up properly when the outer hatch is closed.
var/core_stage = NUKE_CORE_EVERYTHING_FINE
-
+ ///How many sheets of various metals we need to fix it
+ var/sheets_to_fix = 5
/obj/machinery/nuclearbomb/syndicate
is_syndicate = TRUE
@@ -79,6 +80,30 @@ GLOBAL_VAR(bomb_set)
INVOKE_ASYNC(src, PROC_REF(explode))
return
+/obj/machinery/nuclearbomb/examine(mob/user)
+ . = ..()
+ if(!panel_open)
+ . += "The outer panel is screwed shut."
+ switch(removal_stage)
+ if(NUKE_INTACT)
+ . += "The anchoring bolt covers are welded shut."
+ if(NUKE_COVER_OFF)
+ . += "The cover plate is pried into place."
+ if(NUKE_COVER_OPEN)
+ . += "The anchoring system sealant is welded shut."
+ if(NUKE_SEALANT_OPEN)
+ . += "The bolts are wrenched in place."
+ if(NUKE_UNWRENCHED)
+ . += "The device can be pried off its anchors."
+ if(NUKE_CORE_EVERYTHING_FINE)
+ . += "The outer panel can be pried open or it can be screwed back on."
+ if(NUKE_CORE_PANEL_EXPOSED)
+ . += "The outer plate can be fixed by [sheets_to_fix] metal sheets, while the inner core plate is welded shut."
+ if(NUKE_CORE_PANEL_UNWELDED)
+ . += "The inner core plate can be welded shut or it can be pried open."
+ if(NUKE_CORE_FULLY_EXPOSED)
+ . += "The inner core plate can be fixed by [sheets_to_fix] titanium sheets, [core ? "or the plutonium core can be removed" : "though the plutonium core is missing"]."
+
/obj/machinery/nuclearbomb/update_overlays()
. = ..()
underlays.Cut()
@@ -105,23 +130,31 @@ GLOBAL_VAR(bomb_set)
to_chat(user, "You need to deploy [src] first.")
return
if(istype(O, /obj/item/stack/sheet/mineral/titanium) && removal_stage == NUKE_CORE_FULLY_EXPOSED)
+ var/obj/item/stack/S = O
+ if(S.get_amount() < sheets_to_fix)
+ to_chat(user, "You need at least [sheets_to_fix] sheets of titanium to repair [src]'s inner core plate!")
+ return
if(do_after(user, 2 SECONDS, target = src))
- var/obj/item/stack/S = O
- if(!loc || !S || S.get_amount() < 5)
+ if(!loc || !S || S.get_amount() < sheets_to_fix)
return
- S.use(5)
- user.visible_message("[user] repairs [src]'s inner core plate.", "You repair [src]'s inner core plate. The radiation is contained.")
+ S.use(sheets_to_fix)
+ user.visible_message("[user] repairs [src]'s inner core plate.", \
+ "You repair [src]'s inner core plate. The radiation is contained.")
removal_stage = NUKE_CORE_PANEL_UNWELDED
if(core)
STOP_PROCESSING(SSobj, core)
return
if(istype(O, /obj/item/stack/sheet/metal) && removal_stage == NUKE_CORE_PANEL_EXPOSED)
var/obj/item/stack/S = O
+ if(S.get_amount() < sheets_to_fix)
+ to_chat(user, "You need at least [sheets_to_fix] sheets of metal to repair [src]'s outer core plate!")
+ return
if(do_after(user, 2 SECONDS, target = src))
- if(!loc || !S || S.get_amount() < 5)
+ if(!loc || !S || S.get_amount() < sheets_to_fix)
return
- S.use(5)
- user.visible_message("[user] repairs [src]'s outer core plate.", "You repair [src]'s outer core plate.")
+ S.use(sheets_to_fix)
+ user.visible_message("[user] repairs [src]'s outer core plate.", \
+ "You repair [src]'s outer core plate.")
removal_stage = NUKE_CORE_EVERYTHING_FINE
return
if(istype(O, /obj/item/nuke_core/plutonium) && removal_stage == NUKE_CORE_FULLY_EXPOSED)