From 5e490c78e2cd034ab4378fff135a9401f3743ff3 Mon Sep 17 00:00:00 2001 From: Anasari <13087574+Anasari@users.noreply.github.com> Date: Fri, 18 May 2018 15:06:22 +0800 Subject: [PATCH] Allow you to construct and deconstruct fire extinguisher cabinet. Also minor refactor. (Credit to Tigercat2000) --- .../objects/items/devices/radio/intercom.dm | 9 ++--- .../mountable_frames/extinguisher_frame.dm | 10 ++++++ .../items/stacks/sheets/sheet_types.dm | 1 + code/game/objects/structures/extinguisher.dm | 31 +++++++++++++++++- icons/obj/closet.dmi | Bin 106750 -> 106876 bytes paradise.dme | 1 + 6 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 code/game/objects/items/mountable_frames/extinguisher_frame.dm 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 20372528b027b7b969123eec4180a7b1e170e9c3..de22e917ddcd36ea4a24f6575056b81ae7c35d31 100644 GIT binary patch delta 2873 zcmYLIc{CJ!7oM^2vLs|Fsj){SOV$|~Nh6eS;i=P zc4Y}8V<^I8kY(_VzW1E(cYc4|d(Ly7``r87dq`xXx3i_3yT!_kwy{G&Jnwr1`vjtV zkO2TdSbjyGMF3grMC|yse9W4^YIQyWXCI~xeVJo4c$>8U3# zy5z0MB^!MhuZy09M+{a+tSTsysNQiQa68`YvwC8%R4LD;?&7z^E1HNrB`l`9P&%M| zqa7UVk30J_%~v^!x0D%3atPiVSr#q|B;K}i)Bx)U#=iv%8B3bO?|-e2qW^S*PObeB z?`W(4iQ*8(V#~a>q3OQCtYTuMlnBAm1D+{i_Eqy>?*qyD7axGnjjma2KUQenyQb{x zk9ynTqAOVV)}i8##GN}|?^#2v!w-fI=})f@{7@?_?YjK3YfDK_{}MVfzqAXlZ4-P= zbD=!Lzq@3+yF2b`VW}x2U$I9c5a2^C^QW*UQiY2@v1+Z-@B9W{Ywwoi*1i76Kj6pr z-Aq`S{-6Elw)}$&kyg%4q(9B*9q}H}?a%uU2g|x%7w?uRpsSGAFzS=8fLB*j$Z|LOz6(PxtZCP-zu!No_8S*sdAf&p2ULWmC-RH>AxGX5vV=x zjaU|hxz*`~QZ!D@XOmtF61bNRQ@tn~Rs+`z8qn)Y4{raI72M~B=ckxyZ!Ro7VWmsY z#fUWufA3`JZx>7M9xo{pB4#EzetGomCE%vcfZOI!*ce+4VjAbxYs*dI2qk-bHW;V1 zxYQHqEgxQlsx}+qK~9QoR1WNYQ_}2Cm1>;KhT0oY6y(E7i0H3S})JyI7B5?zP^N>RoA=Utr(EDwvAcVw66U@Ck^i}ND}AG8K+PvP61 zEE}F-$;iFs!79i5;X;14nj736{e7O&&kd?k=915}%(0Af$mM1>`nBMelFE%XvOTO= zBvsx@Z~1&!jb-e~rl`B0Ah+Ft5(w&~tTh#$>1tYrJNS`*cjrOL_5Qi>RE1ba%X6pw zOpA$Q&m^E1iP=TDVNqE1k|5`}9}&FKuW9QK%6_k3mRgDEPs{}BZfGUslDqLAM$M`2 zMCAtyYCqF&IV1x7CL}p0#$Gn78KSD+F_Bi;gst?s@ZC86ilxBm)ca`knp1f-+4z$8 zC$OYtDQ*v|bUDQfRHhK|#NA4(zOMaE1rqAJ(2E#<^n%xAN*HT#UL#lAL*ji~_y9~) z0Ch2FOomeVqn=L#QDe=XKyL!GUsAwx{NR&kYBotsX*S(vm{Z-9{%R-=m-Jj_>??cP zc@MyZ$=tbS88#6+KIZ(CSJ52mqJ9U?$pTmPDmhVphN&Lg$rjpP>l)Qy+VjPZe${)C zKH~{{uY5>#(kBS6wOOuJeFh2^tj%J>t$oq*tPS$4z;qn2q@g7iXd{dbWM3m3Vd_Jp zh;UU=p1Ah-UfdFe67>nrEMDm4%i9zm`jvC12?Z$V$qRB`q#5nxd>pq2mh`imwOB^0U1(aQ}7BezZh z;1lVvDJKKXGnyjiSt=dNU&__oKXLQ`Pteo}xfpFXXUpRXMC#S7s$AexH{{d(b%HBO zc}NI!vk|pj@ISFS99(U6wY4WCB&OZN5r~q>$eVst)uaNOox^ejCuqkWR{?@pw^#k?4WxVyWV)B4ySb`-KuE)^v?3rjIML>Y4 z^>9xE5EP{o{kPsAc*OAPC?0kt4`yce{nej!($jOM$#X9rOQjXVF{}p>+rNy~XIp}H zH$2UN)lGY1#~r{`pBY*LFw{AtN^S^hw02N`pQlvBbFTg4M>kc`qVbi~%*<>4pd42* zED_t!1TbVUoL@y+S*1DtpTLT(8CIx&m)6nIahK-N`6RVAe9?A7`iokk1KX730Z-=< zavkF${+>w-hqbm$6yUjImtt`-BAYF%QcCs_H&-V(MxtGWzs2(`l%Km|v$5+8hvxzF zRTlo||16|@44a7dyrN+QX~3R<@|YLdQ)SLZ$+b+Z5(lzL0|=MdU$P|r_?#YUt9nBh zIWHUnfn3_GV6K$o+TPxdu>oXX1QEhnKaAgAh>c}6T@(@!5a@yXutwg!`-(EXx>|9_ zu;x=QRgZ!UxH*61-0R=du)iD8KS&8~w=F7o24nEanh#1+0~@hifQe~3H*z+z3d^>p z(}>68cWU|qV(+4s4MFJ_#e;!!GrHlshWo9x*0lPQKeo2EW|3csy9@?~q-G{5E=if3 z$QQ6y@C)!k)5^-d#+iWW>1jIxnE8*TobYB(m>fz@SsK6rZJE6$ab$)xuHyjS6mKRyKll9HOb5t#P* zc@^J!@y@O;$64!{@{nBzN~!)!hYI7{x8-*o*!Ru5L$Tzzva)vC%9U+3^4uK!%tiu( zagVsc)i~I|TZlaU#zt75q}fZkq#wD%N(p}NiSNY7W%WTziy1%gz0!GZwl zuSveEQv8pIMH$~MD0r*kxX@JQP^1?pOKW->|Fi+&+9H;g^w~gHSICMz$oCK|O!4V^ zzt^M1F!R=xOr5#9x;ozRg2F=cRm1V6Q%P-oSwin9%-i~eFLd{s`1Ew4vyQ|+BgA*Q zBsr7tL=ddie}86bN?ad9cMQA0AmJ4;SDf45-{&eDWU3gvTn~3EgmA%eup=QbQI~&ipF5149SW|pKo9a za{u0I^vcf84l!x|_l{Q`b5cHCl|W$Z4gEfi#nw?T86s0@G}th@u~9qIV94+^O)M8T z3Lm}Dww1w~BV^Y^Tm8hz80#>#X7k()afuLH&0hl`85x;VX%vHe34iPN@}Lp`CAN?1=E0m@H delta 2746 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 ZfaThSzJkOjjoTIimgX1C%1^sR{2v6{W^Mog 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"