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