diff --git a/code/defines/obj/closet.dm b/code/defines/obj/closet.dm
index b3f595ffe57..1e9d9c91d83 100644
--- a/code/defines/obj/closet.dm
+++ b/code/defines/obj/closet.dm
@@ -29,6 +29,13 @@
icon_closed = "cabinet_closed"
icon_opened = "cabinet_open"
+/obj/structure/closet/cabinet/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
+
/obj/effect/spresent
name = "strange present"
desc = "It's a ... present?"
@@ -59,6 +66,12 @@
icon_closed = "firecloset"
icon_opened = "fireclosetopen"
+/obj/structure/closet/firecloset/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/hydrant //wall mounted fire closet
name = "fire-safety closet"
desc = "It's a storage unit for fire-fighting supplies."
@@ -79,6 +92,12 @@
density = 0
wall_mounted = 1
+/obj/structure/closet/medical_wall/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/toolcloset
name = "tool closet"
desc = "It's a storage unit for tools."
@@ -138,6 +157,12 @@
icon_closed = "coffin"
icon_opened = "coffin_open"
+/obj/structure/closet/coffin/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/bombcloset
name = "\improper EOD closet"
desc = "It's a storage unit for explosion-protective suits."
@@ -376,6 +401,18 @@
wall_mounted = 1
req_access = list(access_medical)
+/obj/structure/closet/secure_closet/medical_wall/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/secure_closet/personal
desc = "It's a secure locker for personell. The first card swiped gains control."
name = "personal closet"
@@ -388,6 +425,18 @@
icon_broken = "cabinetdetective_broken"
icon_off = "cabinetdetective_broken"
+/obj/structure/closet/secure_closet/personal/cabinet/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/secure_closet/personal/patient
name = "patient's closet"
@@ -405,6 +454,18 @@
//too small to put a man in
large = 0
+/obj/structure/closet/secure_closet/wall/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/crate/critter
name = "critter crate"
desc = "A crate which can sustain life for a while."
diff --git a/code/game/objects/bodybag.dm b/code/game/objects/bodybag.dm
index e6b3ed0c96e..6860d3ddeea 100644
--- a/code/game/objects/bodybag.dm
+++ b/code/game/objects/bodybag.dm
@@ -82,3 +82,8 @@
del(src)
return
+/obj/structure/closet/bodybag/update_icon()
+ if(!opened)
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm
index 5c39dfb2594..4c46a38d342 100644
--- a/code/game/objects/closets.dm
+++ b/code/game/objects/closets.dm
@@ -176,6 +176,7 @@
user << "You need more welding fuel to complete this task."
return
src.welded =! src.welded
+ src.update_icon()
for(var/mob/M in viewers(src))
M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2)
else
@@ -240,3 +241,12 @@
src.attack_hand(usr)
else
usr << "This mob type can't use this verb."
+
+/obj/structure/closet/update_icon()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot)
+ overlays = null
+ if(!opened)
+ icon_state = icon_closed
+ if(welded)
+ overlays += "welded"
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/closets/kitchen.dm b/code/game/objects/closets/kitchen.dm
index 10696b42a20..1e8e3207b11 100644
--- a/code/game/objects/closets/kitchen.dm
+++ b/code/game/objects/closets/kitchen.dm
@@ -1,5 +1,17 @@
/obj/structure/closet/secure_closet/freezer
+/obj/structure/closet/secure_closet/freezer/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
+
/obj/structure/closet/secure_closet/freezer/kitchen
name = "Kitchen Cabinet"
req_access = list(access_kitchen)
diff --git a/code/game/objects/closets/secure/bar.dm b/code/game/objects/closets/secure/bar.dm
index df7878ce9c1..77cc31f7d2c 100644
--- a/code/game/objects/closets/secure/bar.dm
+++ b/code/game/objects/closets/secure/bar.dm
@@ -23,3 +23,15 @@
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
return
+
+/obj/structure/closet/secure_closet/bar/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/closets/secure/secure_closets.dm b/code/game/objects/closets/secure/secure_closets.dm
index 589d337a467..f431a5121e5 100644
--- a/code/game/objects/closets/secure/secure_closets.dm
+++ b/code/game/objects/closets/secure/secure_closets.dm
@@ -68,7 +68,17 @@
for(var/mob/O in viewers(user, 3))
O.show_message("The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2)
else
- togglelock(user)
+ if(istype(W, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/WT = W
+ if(!WT.remove_fuel(0,user))
+ user << "You need more welding fuel to complete this task."
+ return
+ src.welded =! src.welded
+ src.update_icon()
+ for(var/mob/M in viewers(src))
+ M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2)
+ else
+ togglelock(user)
/obj/structure/closet/secure_closet/relaymove(mob/user as mob)
if(user.stat)
@@ -121,4 +131,16 @@
if (!opened)
togglelock(usr)
else
- usr << "This mob type can't use this verb."
\ No newline at end of file
+ usr << "This mob type can't use this verb."
+
+/obj/structure/closet/secure_closet/update_icon()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot)
+ overlays = null
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ if(welded)
+ overlays += "welded"
+ else
+ icon_state = icon_opened
\ No newline at end of file
diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm
index db94acc32a6..193dfa5abb1 100644
--- a/code/game/objects/closets/secure/security.dm
+++ b/code/game/objects/closets/secure/security.dm
@@ -187,7 +187,17 @@
new /obj/item/weapon/storage/box/evidence(src)
return
-
+/obj/structure/closet/secure_closet/detective/update_icon()
+ if(broken)
+ icon_state = icon_broken
+ else
+ if(!opened)
+ if(locked)
+ icon_state = icon_locked
+ else
+ icon_state = icon_closed
+ else
+ icon_state = icon_opened
/obj/structure/closet/secure_closet/injection
name = "Lethal Injections"
diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm
index 1bc2a10aad7..c9297618a69 100644
--- a/code/modules/mob/living/carbon/metroid/life.dm
+++ b/code/modules/mob/living/carbon/metroid/life.dm
@@ -65,7 +65,7 @@
starving = 1
else
switch(nutrition)
- if(150 to 800) hungry = 1
+ if(150 to 900) hungry = 1
if(0 to 149) starving = 1
AIproc = 1
while(AIproc && stat != 2 && (attacked > 0 || starving || hungry || rabid || Victim))
@@ -408,12 +408,16 @@
var/starving = 0 // determines if the metroid is starving-hungry
if(istype(src, /mob/living/carbon/metroid/adult)) // 1200 max nutrition
switch(nutrition)
+ if(601 to 900)
+ if(prob(25)) hungry = 1//Ensures they continue eating, but aren't as aggressive at the same time
if(301 to 600) hungry = 1
if(0 to 300)
starving = 1
else
switch(nutrition) // 1000 max nutrition
+ if(501 to 700)
+ if(prob(25)) hungry = 1
if(201 to 500) hungry = 1
if(0 to 200) starving = 1
diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi
index 8eca3452e25..9bc9ec2feb8 100644
Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ