Files
kiwistation/code/game/objects/items/control_wand.dm
T
ACCount 1f5b59190d NTNet airlocks (#35947)
* Standardizes access checks

* Makes SS Networks init before SS Atoms to prevent NTNet interfaces from initializing before them

* Adds passkey support to NTNet packets

* Adds NTNet support to airlocks, makes door remote use NTNet

* Access levels given by jobs are now shuffled

* Access code improvements

* Adds IC card readers

* Fixes a delay issue with opening/closing airlocks with NTNet or signalers

* code review memes

* Renames plaintext_passkey to encrypted_passkey

* death by thousand nitpicks
2018-03-08 18:39:17 -05:00

101 lines
2.5 KiB
Plaintext

#define WAND_OPEN "Open Door"
#define WAND_BOLT "Toggle Bolts"
#define WAND_EMERGENCY "Toggle Emergency Access"
/obj/item/door_remote
icon_state = "gangtool-white"
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
icon = 'icons/obj/device.dmi'
name = "control wand"
desc = "Remotely controls airlocks."
w_class = WEIGHT_CLASS_TINY
var/mode = WAND_OPEN
var/region_access = 1 //See access.dm
var/list/access_list
/obj/item/door_remote/Initialize()
. = ..()
access_list = get_region_accesses(region_access)
AddComponent(/datum/component/ntnet_interface)
/obj/item/door_remote/attack_self(mob/user)
switch(mode)
if(WAND_OPEN)
mode = WAND_BOLT
if(WAND_BOLT)
mode = WAND_EMERGENCY
if(WAND_EMERGENCY)
mode = WAND_OPEN
to_chat(user, "Now in mode: [mode].")
// Airlock remote works by sending NTNet packets to whatever it's pointed at.
/obj/item/door_remote/afterattack(atom/A, mob/user)
GET_COMPONENT_FROM(target_interface, /datum/component/ntnet_interface, A)
if(!target_interface)
return
// Generate a control packet.
var/datum/netdata/data = new
data.recipient_ids = list(target_interface.hardware_id)
switch(mode)
if(WAND_OPEN)
data.plaintext_data = "open"
if(WAND_BOLT)
data.plaintext_data = "bolt"
if(WAND_EMERGENCY)
data.plaintext_data = "emergency"
data.plaintext_data_secondary = "toggle"
data.passkey = access_list
ntnet_send(data)
/obj/item/door_remote/omni
name = "omni door remote"
desc = "This control wand can access any door on the station."
icon_state = "gangtool-yellow"
region_access = 0
/obj/item/door_remote/captain
name = "command door remote"
icon_state = "gangtool-yellow"
region_access = 7
/obj/item/door_remote/chief_engineer
name = "engineering door remote"
icon_state = "gangtool-orange"
region_access = 5
/obj/item/door_remote/research_director
name = "research door remote"
icon_state = "gangtool-purple"
region_access = 4
/obj/item/door_remote/head_of_security
name = "security door remote"
icon_state = "gangtool-red"
region_access = 2
/obj/item/door_remote/quartermaster
name = "supply door remote"
icon_state = "gangtool-green"
region_access = 6
/obj/item/door_remote/chief_medical_officer
name = "medical door remote"
icon_state = "gangtool-blue"
region_access = 3
/obj/item/door_remote/civillian
name = "civillian door remote"
icon_state = "gangtool-white"
region_access = 1
#undef WAND_OPEN
#undef WAND_BOLT
#undef WAND_EMERGENCY