mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
159 lines
5.0 KiB
Plaintext
159 lines
5.0 KiB
Plaintext
////////////////////DOORBELL CHIME///////////////////////////////////////
|
|
/obj/machinery/doorbell_chime
|
|
name = "doorbell chime"
|
|
desc = "Small wall-mounted chime triggered by a doorbell"
|
|
icon = 'icons/obj/machines/doorbell_vr.dmi'
|
|
icon_state = "dbchime-standby"
|
|
use_power = USE_POWER_IDLE
|
|
idle_power_usage = 10
|
|
active_power_usage = 200
|
|
anchored = TRUE
|
|
var/id_tag = null
|
|
var/chime_sound = 'sound/machines/doorbell.ogg'
|
|
|
|
/obj/machinery/doorbell_chime/Initialize(mapload)
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/machinery/doorbell_chime/proc/chime()
|
|
set waitfor = FALSE
|
|
if(inoperable())
|
|
return
|
|
use_power(active_power_usage)
|
|
playsound(src, chime_sound, 75)
|
|
icon_state = "dbchime-active"
|
|
set_light(2, 0.5, "#33FF33")
|
|
visible_message("\The [src]'s light flashes.")
|
|
sleep(30)
|
|
set_light(0)
|
|
update_icon()
|
|
|
|
/obj/machinery/doorbell_chime/power_change()
|
|
..()
|
|
update_icon()
|
|
|
|
/obj/machinery/doorbell_chime/update_icon()
|
|
cut_overlays()
|
|
if(panel_open)
|
|
add_overlay("dbchime-open")
|
|
if(inoperable())
|
|
icon_state = "dbchime-off"
|
|
if(!id_tag)
|
|
icon_state = "dbchime-red"
|
|
else
|
|
icon_state = "dbchime-standby"
|
|
|
|
/obj/machinery/doorbell_chime/attackby(obj/item/W as obj, mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if(default_deconstruction_screwdriver(user, W))
|
|
return
|
|
// else if(default_deconstruction_crowbar(user, W))
|
|
// return
|
|
else if(default_part_replacement(user, W))
|
|
return
|
|
else if(panel_open && istype(W, /obj/item/multitool))
|
|
var/obj/item/multitool/M = W
|
|
if(M.connectable && istype(M.connectable, /obj/machinery/button/doorbell))
|
|
var/obj/machinery/button/doorbell/B = M.connectable
|
|
id_tag = B.id
|
|
to_chat(user, span_notice("You upload the data from \the [W]'s buffer."))
|
|
return
|
|
..()
|
|
|
|
////////////////////DOORBELL CHIME CONSTRUCTION///////////////////////////////////////
|
|
// We want these to be constructable so more chimes can be added in departments.
|
|
/datum/frame/frame_types/doorbell_chime
|
|
name = "Doorbell Chime"
|
|
frame_class = "alarm" // It isn't an alarm, but thats the construction flow we want.
|
|
frame_size = 3
|
|
frame_style = "wall"
|
|
circuit = /obj/item/circuitboard/doorbell_chime
|
|
icon_override = 'icons/obj/machines/doorbell_vr.dmi'
|
|
x_offset = 32
|
|
y_offset = 32
|
|
|
|
// Annoyingly we need to provide a circuit board even if never seen by players.
|
|
// Makes some sense, its how the frame code knows what to actually build. Alternative
|
|
// is to make building it a single-step process which is too quick I say.
|
|
// This links up the frame_type to the acutal machine to build. Never seen by players.
|
|
/obj/item/circuitboard/doorbell_chime
|
|
build_path = /obj/machinery/doorbell_chime
|
|
board_type = new /datum/frame/frame_types/doorbell_chime
|
|
req_components = list()
|
|
|
|
////////////////////DOORBELL SWITCH///////////////////////////////////////
|
|
|
|
/obj/machinery/button/doorbell
|
|
name = "doorbell switch"
|
|
desc = "A doorbell, press to chime."
|
|
icon = 'icons/obj/machines/doorbell_vr.dmi'
|
|
icon_state = "doorbell-standby"
|
|
use_power = USE_POWER_OFF
|
|
|
|
/obj/machinery/button/doorbell/Initialize(mapload, var/dir, var/building = FALSE)
|
|
. = ..()
|
|
if(building)
|
|
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
|
|
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
|
|
if (!id)
|
|
assign_uid()
|
|
id = num2text(uid)
|
|
|
|
/obj/machinery/button/doorbell/Initialize(mapload)
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/machinery/button/doorbell/power_change()
|
|
..()
|
|
update_icon()
|
|
|
|
/obj/machinery/button/doorbell/update_icon()
|
|
if(stat & (NOPOWER|BROKEN))
|
|
icon_state = "doorbell-off"
|
|
else
|
|
icon_state = "doorbell-standby"
|
|
|
|
/obj/machinery/button/doorbell/attack_hand(mob/user as mob)
|
|
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
|
if(..())
|
|
return
|
|
use_power(5)
|
|
flick("doorbell-active", src)
|
|
|
|
for(var/obj/machinery/doorbell_chime/M in GLOB.machines)
|
|
if(M.id_tag == id)
|
|
M.chime()
|
|
|
|
/obj/machinery/button/doorbell/attackby(obj/item/W as obj, mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if(default_deconstruction_screwdriver(user, W))
|
|
return
|
|
else if(panel_open && istype(W, /obj/item/pen))
|
|
var/t = sanitizeSafe(tgui_input_text(user, "Enter the name for \the [src].", src.name, initial(src.name), MAX_NAME_LEN, encode = FALSE), MAX_NAME_LEN)
|
|
if(t && in_range(src, user))
|
|
name = t
|
|
else if(panel_open && istype(W, /obj/item/multitool))
|
|
var/obj/item/multitool/M = W
|
|
M.connectable = src
|
|
to_chat(user, span_notice("You save the data in \the [M]'s buffer."))
|
|
else if(W.has_tool_quality(TOOL_WRENCH))
|
|
to_chat(user, span_notice("You start to unwrench \the [src]."))
|
|
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
|
if(do_after(user, 15, target = src) && !QDELETED(src))
|
|
to_chat(user, span_notice("You unwrench \the [src]."))
|
|
new /obj/item/frame/doorbell(src.loc)
|
|
qdel(src)
|
|
return
|
|
|
|
////////////////////DOORBELL SWITCH CONSTRUCTION///////////////////////////////////////
|
|
// Right now they are very simple to construct, just throw them up on the wall
|
|
|
|
/obj/item/frame/doorbell
|
|
name = "doorbell switch frame"
|
|
desc = "Used for building doorbell switches."
|
|
icon = 'icons/obj/machines/doorbell_vr.dmi'
|
|
icon_state = "doorbell-off"
|
|
refund_amt = 4
|
|
refund_type = /obj/item/stack/material/wood
|
|
build_machine_type = /obj/machinery/button/doorbell
|