diff --git a/code/game/objects/structures/medkit.dm b/code/game/objects/structures/medkit.dm new file mode 100644 index 00000000..a05f0983 --- /dev/null +++ b/code/game/objects/structures/medkit.dm @@ -0,0 +1,154 @@ +/obj/structure/medkit_cabinet + name = "Medkit Cabinet" + desc = "A small wall mounted cabinet designed to hold a medical kit." + icon = 'icons/obj/wallmounts.dmi' + icon_state = "medkit_closed" + anchored = TRUE + density = FALSE + max_integrity = 200 + integrity_failure = 50 + var/obj/item/storage/firstaid/regular/stored_medkit + var/opened = FALSE + +/obj/structure/medkit_cabinet/Initialize(mapload, ndir, building) + . = ..() + if(building) + setDir(ndir) + pixel_x = (dir & 3)? 0 : (dir == 4 ? -27 : 27) + pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 + opened = TRUE + icon_state = "medkit_empty" + else + stored_medkit = new /obj/item/storage/firstaid/regular(src) + +/obj/structure/medkit_cabinet/examine(mob/user) + ..() + to_chat(user, "Alt-click to [opened ? "close":"open"] it.") + +/obj/structure/medkit_cabinet/Destroy() + if(stored_medkit) + qdel(stored_medkit) + stored_medkit = null + return ..() + +//obj/structure/medkit_cabinet/contents_explosion(severity, target) + //if(stored_medkit) + //stored_medkit.ex_act(severity, target) + +/obj/structure/medkit_cabinet/handle_atom_del(atom/A) + if(A == stored_medkit) + stored_medkit = null + update_icon() + +/obj/structure/medkit_cabinet/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/wrench) && !stored_medkit) + to_chat(user, "You start unsecuring [name]...") + I.play_tool_sound(src) + if(I.use_tool(src, user, 60)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) + to_chat(user, "You unsecure [name].") + deconstruct(TRUE) + return + + if(iscyborg(user) || isalien(user)) + return + if(istype(I, /obj/item/storage/firstaid)) + if(!stored_medkit && opened) + if(!user.transferItemToLoc(I, src)) + return + stored_medkit = I + to_chat(user, "You place [I] in [src].") + update_icon() + return TRUE + else + toggle_cabinet(user) + else if(user.a_intent != INTENT_HARM) + toggle_cabinet(user) + else + return ..() + + +/obj/structure/medkit_cabinet/attack_hand(mob/user) + . = ..() + if(.) + return + if(iscyborg(user) || isalien(user)) + return + if(stored_medkit) + user.put_in_hands(stored_medkit) + to_chat(user, "You take [stored_medkit] from [src].") + stored_medkit = null + if(!opened) + opened = 1 + playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) + update_icon() + else + toggle_cabinet(user) + + +/obj/structure/medkit_cabinet/attack_tk(mob/user) + if(stored_medkit) + stored_medkit.forceMove(loc) + to_chat(user, "You telekinetically remove [stored_medkit] from [src].") + stored_medkit = null + opened = 1 + playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) + update_icon() + else + toggle_cabinet(user) + + +/obj/structure/medkit_cabinet/attack_paw(mob/user) + return attack_hand(user) + +/obj/structure/medkit_cabinet/AltClick(mob/living/user) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + toggle_cabinet(user) + +/obj/structure/medkit_cabinet/proc/toggle_cabinet(mob/user) + if(opened && broken) + to_chat(user, "[src] is broken open.") + else + playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) + opened = !opened + update_icon() + +/obj/structure/medkit_cabinet/update_icon() + if(!opened) + icon_state = "medkit_closed" + return + if(stored_medkit) + if(istype(stored_medkit, /obj/item/storage/hypospraykit)) + icon_state = "medkit_white" + else + icon_state = "medkit_white" + else + icon_state = "medkit_empty" + +/obj/structure/medkit_cabinet/obj_break(damage_flag) + if(!broken && !(flags_1 & NODECONSTRUCT_1)) + broken = 1 + opened = 1 + if(stored_medkit) + stored_medkit.forceMove(loc) + stored_medkit = null + update_icon() + + +/obj/structure/medkit_cabinet/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(disassembled) + new /obj/item/wallframe/medkit_cabinet(loc) + else + new /obj/item/stack/sheet/metal (loc, 2) + if(stored_medkit) + stored_medkit.forceMove(loc) + stored_medkit = null + qdel(src) + +/obj/item/wallframe/medkit_cabinet + name = "Medkit wall frame." + desc = "Used for building wall-mounted medkit cabinets." + icon_state = "medkit" + result_path = /obj/structure/medkit_cabinet diff --git a/icons/obj/wallframe.dmi b/icons/obj/wallframe.dmi index 70149901..99b904fc 100644 Binary files a/icons/obj/wallframe.dmi and b/icons/obj/wallframe.dmi differ diff --git a/icons/obj/wallmounts.dmi b/icons/obj/wallmounts.dmi index 67d05103..5cbaf8de 100644 Binary files a/icons/obj/wallmounts.dmi and b/icons/obj/wallmounts.dmi differ