Security Blasters - Ill be back edition. (#9932)

This commit is contained in:
Werner
2020-09-12 00:42:35 +02:00
committed by GitHub
parent e32e16f2b6
commit 6b3212d52b
17 changed files with 377 additions and 23 deletions
@@ -0,0 +1,75 @@
/datum/computer_file/program/guntracker
filename = "guntracker"
filedesc = "Firearm Control"
extended_desc = "Official NTsec program for the tracking and remote control of wireless-enabled firearms."
program_icon_state = "security"
color = LIGHT_COLOR_ORANGE
size = 8
requires_ntnet = TRUE
available_on_ntnet = TRUE
required_access_download = access_hos
required_access_run = access_armory
usage_flags = PROGRAM_CONSOLE
/datum/computer_file/program/guntracker/ui_interact(var/mob/user)
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
if(!ui)
ui = new /datum/vueui/modularcomputer(user, src, "security-guntracker", 600, 400, "Firearm Control")
ui.open()
ui.auto_update_content = TRUE
/datum/computer_file/program/guntracker/vueui_transfer(oldobj)
. = FALSE
var/uis = SSvueui.transfer_uis(oldobj, src, "security-guntracker", 600, 400, "Firearm Control")
for(var/tui in uis)
var/datum/vueui/ui = tui
ui.auto_update_content = TRUE
. = TRUE
/datum/computer_file/program/guntracker/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
. = ..()
data = . || data || list()
var/turf/T = get_turf(computer.loc)
var/list/wireless_firing_pins_data = list()
for(var/i in wireless_firing_pins)
var/obj/item/device/firing_pin/wireless/P = i
if(!P.gun)
continue
var/turf/Ts = get_turf(P)
if(ARE_Z_CONNECTED(T.z, Ts.z))
var/list/guntracker_info = list(
"gun_name" = capitalize_first_letters(P.gun.name),
"registered_info" = P.registered_user ? P.registered_user : "Unregistered",
"ref" = "\ref[P]",
"lockstatus" = P.lockstatus
)
wireless_firing_pins_data[++wireless_firing_pins_data.len] = guntracker_info
data["wireless_firing_pins"] = sortByKey(wireless_firing_pins_data, "registered_info")
return data
/datum/computer_file/program/guntracker/Topic(href, href_list)
if(..())
return
//Try and get the pin if a pin is passed
var/obj/item/device/firing_pin/wireless/P = null
if(href_list["pin"])
P = locate(href_list["pin"]) in wireless_firing_pins
switch(href_list["action"])
if("setauto")
if(P)
P.set_mode(WIRELESS_PIN_AUTOMATIC)
if("setdisable")
if(P)
P.set_mode(WIRELESS_PIN_DISABLED)
if("setstun")
if(P)
P.set_mode(WIRELESS_PIN_STUN)
if("setlethal")
if(P)
P.set_mode(WIRELESS_PIN_LETHAL)
return