diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 687e2fa9dce..8128e1f44d4 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -45,15 +45,16 @@ name = "station intercom (Security)" frequency = SEC_I_FREQ -/obj/item/radio/intercom/New(turf/loc, var/ndir = 0, var/building = 3) +/obj/item/radio/intercom/New(turf/loc, ndir, building = 3) ..() buildstage = building if(buildstage) processing_objects.Add(src) else - pixel_x = (ndir & 3)? 0 : (ndir == 4 ? 28 : -28) - pixel_y = (ndir & 3)? (ndir ==1 ? 28 : -28) : 0 - dir=ndir + if(ndir) + pixel_x = (ndir & EAST|WEST) ? (ndir == EAST ? 28 : -28) : 0 + pixel_y = (ndir & NORTH|SOUTH) ? (ndir == NORTH ? 28 : -28) : 0 + dir=ndir b_stat=1 on = 0 global_intercoms.Add(src) diff --git a/code/game/objects/items/mountable_frames/extinguisher_frame.dm b/code/game/objects/items/mountable_frames/extinguisher_frame.dm new file mode 100644 index 00000000000..531005ca902 --- /dev/null +++ b/code/game/objects/items/mountable_frames/extinguisher_frame.dm @@ -0,0 +1,10 @@ +/obj/item/mounted/frame/extinguisher + name = "Extinguisher Cabinet Frame" + desc = "Used for building extinguisher cabinet" + icon = 'icons/obj/closet.dmi' + icon_state = "extinguisher_frame" + mount_reqs = list("simfloor", "nospace") + +/obj/item/mounted/frame/extinguisher/do_build(turf/on_wall, mob/user) + new /obj/structure/extinguisher_cabinet(get_turf(src), get_dir(user, on_wall)) + qdel(src) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 4412b547b19..0e9be717ca1 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -90,6 +90,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list( new /datum/stack_recipe("air alarm frame", /obj/item/mounted/frame/alarm_frame, 2), new /datum/stack_recipe("fire alarm frame", /obj/item/mounted/frame/firealarm, 2), new /datum/stack_recipe("intercom frame", /obj/item/mounted/frame/intercom, 2), + new /datum/stack_recipe("extinguisher cabinet frame", /obj/item/mounted/frame/extinguisher, 5), null ) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 048961defd5..ce550871c63 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -7,6 +7,13 @@ density = 0 var/obj/item/extinguisher/has_extinguisher = new/obj/item/extinguisher var/opened = 0 + var/material_drop = /obj/item/stack/sheet/metal + +/obj/structure/extinguisher_cabinet/New(turf/loc, ndir = null) + ..() + if(ndir) + pixel_x = (ndir & EAST|WEST) ? (ndir == EAST ? 28 : -28) : 0 + pixel_y = (ndir & NORTH|SOUTH)? (ndir == WEST ? 28 : -28) : 0 /obj/structure/extinguisher_cabinet/Destroy() QDEL_NULL(has_extinguisher) @@ -23,13 +30,35 @@ to_chat(user, "You place [O] in [src].") else opened = !opened + else if(istype(O, /obj/item/weldingtool)) + if(has_extinguisher) + to_chat(user, "You need to remove the extinguisher before deconstructing the cabinet!") + return + if(!opened) + to_chat(user, "Open the cabinet before cutting it apart!") + return + var/obj/item/weldingtool/WT = O + if(!WT.remove_fuel(0, user)) + to_chat(user, "You need more welding fuel to complete this task.") + return + to_chat(user, "You begin cutting [src] apart...") + playsound(loc, WT.usesound, 40, 1) + if(do_after(user, 40 * WT.toolspeed, 1, target = src)) + if(!src ||!opened || !WT.isOn()) // !src to prevent it being duped + return + visible_message("[user] slices apart [src].", + "You cut [src] apart with [WT].", + "You hear welding.") + var/turf/T = get_turf(src) + new material_drop(T) + qdel(src) else opened = !opened update_icon() - /obj/structure/extinguisher_cabinet/attack_hand(mob/user) if(isrobot(user) || isalien(user)) + to_chat(user, "You don't have the dexterity to do this!") return if(ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 20372528b02..de22e917ddc 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/paradise.dme b/paradise.dme index 303c0ebaed9..0c4d56eeff5 100644 --- a/paradise.dme +++ b/paradise.dme @@ -807,6 +807,7 @@ #include "code\game\objects\items\mountable_frames\air_alarm.dm" #include "code\game\objects\items\mountable_frames\apc_frame.dm" #include "code\game\objects\items\mountable_frames\buttons_switches.dm" +#include "code\game\objects\items\mountable_frames\extinguisher_frame.dm" #include "code\game\objects\items\mountable_frames\fire_alarm.dm" #include "code\game\objects\items\mountable_frames\frames.dm" #include "code\game\objects\items\mountable_frames\intercom.dm"