From 2530d8a09a8c6957b28f5b2d8e272e15ed1cc92f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 23 Jun 2017 13:40:25 -0500 Subject: [PATCH] Intercoms are now constructable --- code/game/objects/items/apc_frame.dm | 14 +++- .../objects/items/devices/radio/intercom.dm | 61 +++++++++++++++++- .../research/designs/autolathe_designs.dm | 8 +++ icons/obj/wallframe.dmi | Bin 761 -> 979 bytes 4 files changed, 80 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index b98e3c6e69..a6c2f6119a 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -6,8 +6,8 @@ item_state = "syringe_kit" w_class = WEIGHT_CLASS_SMALL var/result_path - var/inverse = 0 - // For inverse dir frames like light fixtures. + var/inverse = 0 // For inverse dir frames like light fixtures. + var/pixel_shift //The amount of pixels /obj/item/wallframe/proc/try_build(turf/on_wall, mob/user) if(get_dist(on_wall,user)>1) @@ -40,6 +40,16 @@ ndir = turn(ndir, 180) var/obj/O = new result_path(get_turf(user), ndir, TRUE) + if(pixel_shift) + switch(ndir) + if(NORTH) + O.pixel_y = pixel_shift + if(SOUTH) + O.pixel_y = -pixel_shift + if(EAST) + O.pixel_x = pixel_shift + if(WEST) + O.pixel_x = -pixel_shift after_attach(O) qdel(src) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index a7dceaccf1..39e2b6d473 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -10,15 +10,64 @@ var/mob/living/silicon/ai/ai = list() var/last_tick //used to delay the powercheck dog_fashion = null + var/unfastened = FALSE + +/obj/item/device/radio/intercom/unscrewed + unfastened = TRUE -/obj/item/device/radio/intercom/Initialize() +/obj/item/device/radio/intercom/Initialize(mapload, ndir, building) . = ..() + if(building) + setDir(ndir) START_PROCESSING(SSobj, src) /obj/item/device/radio/intercom/Destroy() STOP_PROCESSING(SSobj, src) return ..() +/obj/item/device/radio/intercom/examine(mob/user) + ..() + if(!unfastened) + to_chat(user, "It's screwed and secured to the wall.") + else + to_chat(user, "It's unscrewed from the wall, and can be detached.") + +/obj/item/device/radio/intercom/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/weapon/screwdriver)) + var/obj/item/weapon/screwdriver/S = I + if(unfastened) + user.visible_message("[user] starts tightening [src]'s screws...", "You start screwing in [src]...") + playsound(src, S.usesound, 50, 1) + if(!do_after(user, 30 * S.toolspeed, target = src)) + return + user.visible_message("[user] tightens [src]'s screws!", "You tighten [src]'s screws.") + playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) + unfastened = FALSE + else + user.visible_message("[user] starts loosening [src]'s screws...", "You start unscrewing [src]...") + playsound(src, S.usesound, 50, 1) + if(!do_after(user, 60 * S.toolspeed, target = src)) + return + user.visible_message("[user] loosens [src]'s screws!", "You unscrew [src], loosening it from the wall.") + playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) + unfastened = TRUE + return + else if(istype(I, /obj/item/weapon/wrench)) + if(!unfastened) + to_chat(user, "You need to unscrew [src] from the wall first!") + return + var/obj/item/weapon/wrench/W = I + user.visible_message("[user] starts unsecuring [src]...", "You start unsecuring [src]...") + playsound(src, W.usesound, 50, 1) + if(!do_after(user, 80 * W.toolspeed, target = src)) + return + user.visible_message("[user] unsecures [src]!", "You detach [src] from the wall.") + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + new/obj/item/wallframe/intercom(get_turf(src)) + qdel(src) + return + return ..() + /obj/item/device/radio/intercom/attack_ai(mob/user) interact(user) @@ -69,3 +118,13 @@ /obj/item/device/radio/intercom/add_blood(list/blood_dna) return 0 + +//Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it! +/obj/item/wallframe/intercom + name = "intercom frame" + desc = "A ready-to-go intercom. Just slap it on a wall and screw it in!" + icon_state = "intercom" + result_path = /obj/item/device/radio/intercom/unscrewed + pixel_shift = 29 + inverse = TRUE + materials = list(MAT_METAL = 75, MAT_GLASS = 25) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 7caae4a024..07d2de3c75 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -479,6 +479,14 @@ build_path = /obj/item/device/radio/off category = list("initial", "T-Comm") +/datum/design/intercom_frame + name = "Intercom Frame" + id = "intercom_frame" + build_type = AUTOLATHE + materials = list(MAT_METAL = 75, MAT_GLASS = 25) + build_path = /obj/item/wallframe/intercom + category = list("initial", "T-Comm") + /datum/design/infrared_emitter name = "Infrared Emitter" id = "infrared_emitter" diff --git a/icons/obj/wallframe.dmi b/icons/obj/wallframe.dmi index 48eff704b64efea025bc741f4d9c1c5cc68dfb86..0e416cac77708215cfd415d4a064d24e04dafba4 100644 GIT binary patch delta 978 zcmV;@11NumAb#^ySjv;NUtsIwvPA%DJWP?(X8yy#M;}`RLYfj-ymmR6jpI z92^{KiJkx$7;1!;WPXrFMn++Gg?@g1TU%TIW;0@9Vk0AwSP*|)a)3%oO2ELt05bp} zARs0sBse%YPEJlfJv|c>6I57OU|(N5J3D`bgi}*fQc_Y;QBfNk8xs-{LP9}WT3R(V zGEh)ZJ60PSKNAuW5IhYHTp%D%Pfy}F_~!rs00DGTPE!Ct=GbNc005zSR9JLGWpiV4 zX>fFDZ*Bkpc$|NYki8CqFce1T_9+@ziJ{=&;$k3%LEfRlmEM7t^j^frxBf&YqT6?p zbCxevhx*vGsya3D3W3l&wO89sF2#a9+X!VLg#{cezkt{<#F?0>OQh&AP$VtIC72Q3 z+j^$SKMK9eiZavR>^w7jw^n{MxG}n6MzRoo$_^Il4Do*-D!OQOeq0k%Rkzjik2^{R zPzs3jV}<|#0vAa{K~z|U?UrqOnlKcG8&L`r7MPn|?bes|Dgmlad?{{j`~N>{Nq7UbtX>e*fCZBAR5S40kDUZX@5bYXaFyW3 z`vlG4NPqyrn6{69d{pEKo|+PH!F^7X;Dyp4$YBWt0>1(lSWNI@dmeOLmx5=3KnNP<^{K%Y zC1@P7R4^(qjOL?QbeqZ;)M&iObj)(E8Epj@Ve(&IzI6y3qmFt(Pfw3-4o?-D>f;J6 z23mjr@Mx;T5YYOs9BR-ccrAbg;VFs*A&FuVCP_jVbWK_tB!Vc8;_!`-8H13wxoSbY zh!^3U%ziLtWUf2`t#0>-AeLpPo7 z)4Cu95^T5I_bn%5D`_v-2?g2DU)g)M-^WV(JzanQ$y5ti>o+8auZmlw;;2Z2!mtL0 ztbky-3f7z;)gqt~($((oZk1}Pum3Nzr>7(T0NHS7EthN`qyPW_07*qoM6N<$f_+M_ AG5`Po delta 745 zcmV;M1&fly3T zMZmzo;Naly?(VOzuK)l5F)=YzR8&7dKO7t!02mlXMn;iw9)JJ&>h$H(IyyQhCoIaj zrQ*=M|N8Lx=+5Ku zFD8(!00001bW%=J06^y0W&i*HntD`NbVOxyV{&P5bZKvH004NLQ&w4YmwttiRNOE1kV&PXjH zs5mdRyf`_rxCFOSWd&D17qB-0FvLU)mG3r_0004iNqF|$oBm2!JtYNX3^S|P>VqEV&#X*MkxRs?bK#1oN zQeKHUKpTO9{_PnC)Y^O>ZtfYt0N{(|$&WQq{x|`s9l>Ynr;i%Q^@GvH<~4 z#A%F@gMU#A@Z8n znZf$h)&UqF;y6CUjG-k^PpZHIjudcA5&#hO^?$1q6e=K1J{Sa0dXf=>C2&&F0bvE4 zrvbYmKp?w~1z388me2tBAOLlc8vx(dz+FTK zj9Efl0C$$A&>nEAgqwB~AN4|DPzRTc-ef4(0Feqp;E_f-&+?x<