//Updated by Cutelildick
var/list/obj/machinery/faxmachine/allfaxes = list()
var/list/alldepartments = list("Central Command")
/obj/machinery/faxmachine
name = "fax machine"
icon = 'icons/obj/library.dmi'
icon_state = "fax"
req_one_access = list(access_lawyer, access_heads)
anchored = 1
density = 1
use_power = 1
idle_power_usage = 30
active_power_usage = 200
power_channel = EQUIP
var/obj/item/weapon/card/id/scan = null // identification
var/authenticated = 0
var/obj/item/weapon/paper/tofax = null // what we're sending
var/sendcooldown = 0 // to avoid spamming fax messages
var/faxtime = 0 //so people can know when we can fax again!
var/department = "Unknown" // our department
var/dpt = "Central Command" // the department we're sending to
/obj/machinery/faxmachine/New()
..()
allfaxes += src
if( !("[department]" in alldepartments) )
alldepartments += department
/obj/machinery/faxmachine/attack_ghost(mob/user as mob)
usr << "Nope."
return 0
/obj/machinery/faxmachine/attack_ai(mob/user as mob)
return attack_hand(user)
/obj/machinery/faxmachine/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/faxmachine/attack_hand(mob/user as mob)
user.set_machine(src)
var/dat = "Fax Machine
"
var/scan_name
if(scan)
scan_name = scan.name
else
scan_name = "--------"
dat += "Confirm Identity: [scan_name]
"
if(authenticated)
dat += "{Log Out}"
else
dat += "{Log In}"
dat += "
"
if(authenticated)
dat += "Logged in to: Central Command Quantum Entanglement Network
"
if(tofax)
dat += "Remove Paper
"
if(sendcooldown)
dat += "Transmitter arrays realigning. Please stand by for [(faxtime - world.timeofday) / 10] second\s.
"
else
dat += "Send
"
dat += "Currently sending: [tofax.name]
"
if(dpt == null)
//Old bug fix. Not selecting a dpt and/or my new lawyer access feature broke the dpt select.
dpt = "Central Command"
dat += "Sending to: [dpt]
"
else
if(sendcooldown)
dat += "Please insert paper to send via secure connection.
"
dat += "Transmitter arrays realigning. Please stand by for [(faxtime - world.timeofday) / 10] second\s.
"
else
dat += "Please insert paper to send via secure connection.
"
else
dat += "\proper authentication is required to use this device.
"
if(tofax)
dat += "Remove Paper
"
user << browse(dat, "window=copier")
onclose(user, "copier")
return
/obj/machinery/faxmachine/Topic(href, href_list)
if(href_list["send"])
if(tofax)
log_game("([usr]/([usr.ckey]) sent a fax titled [tofax] to [dpt] - contents: [tofax.info]")
if((dpt == "Central Command") | (dpt == "Nanotrasen HR"))
if(dpt == "Central Command")
Centcomm_fax(tofax, tofax.name, usr)
if(dpt == "Nanotrasen HR")
if(findtext(tofax.stamps, "magnetic"))
if(findtext(tofax.name,"Demotion"))
new /obj/item/demote_chip(src.loc)
if(findtext(tofax.name,"Commendation"))
new /obj/item/mounted/poster(src.loc,-1)
sendcooldown = 900
else
SendFax(tofax.info, tofax.name, usr, dpt)
sendcooldown = 600
usr << "Message transmitted successfully."
faxtime = world.timeofday + sendcooldown
spawn(sendcooldown) // cooldown time
sendcooldown = 0
if(href_list["remove"])
if(tofax)
tofax.loc = usr.loc
usr.put_in_hands(tofax)
usr << "You take the paper out of \the [src]."
tofax = null
if(href_list["scan"])
if (scan)
if(ishuman(usr))
scan.loc = usr.loc
if(!usr.get_active_hand())
usr.put_in_hands(scan)
scan = null
else
scan.loc = src.loc
scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src)
scan = I
authenticated = 0
if(href_list["dept"])
dpt = input(usr, "Which department?", "Choose a department", "") as null|anything in alldepartments
if(href_list["auth"])
if ( (!( authenticated ) && (scan)) )
if (check_access(scan))
authenticated = 1
if(access_lawyer in scan.access)
alldepartments += "Nanotrasen HR"
if(href_list["logout"])
authenticated = 0
if(access_lawyer in scan.access)
alldepartments -= "Nanotrasen HR"
updateUsrDialog()
/obj/machinery/faxmachine/attackby(obj/item/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/paper))
if(!tofax)
user.drop_item(O, src)
tofax = O
user << "You insert the paper into \the [src]."
flick("faxsend", src)
updateUsrDialog()
else
user << "There is already something in \the [src]."
else if(istype(O, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = O
if(!scan)
usr.drop_item(idcard, src)
scan = idcard
else if(istype(O, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
anchored = !anchored
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
return
/proc/Centcomm_fax(var/obj/item/weapon/paper/sent, var/sentname, var/mob/Sender)
writepanic("[__FILE__].[__LINE__] (no type)([usr ? usr.ckey : ""]) \\/proc/Centcomm_fax() called tick#: [world.time]")
var/msg = "CENTCOMM FAX: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (RPLY): Receiving '[sentname]' via secure connection ... view message"
admins << msg
admins << 'sound/effects/fax.ogg'
proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt)
writepanic("[__FILE__].[__LINE__] \\/proc/SendFax() called tick#: [world.time]")
for(var/obj/machinery/faxmachine/F in allfaxes)
if( F.department == dpt )
if(! (F.stat & (BROKEN|NOPOWER) ) )
flick("faxreceive", F)
// give the sprite some time to flick
spawn(20)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( F.loc )
P.name = "[sentname]"
P.info = "[sent]"
P.update_icon()
playsound(F.loc, "sound/effects/fax.ogg", 50, 1)