#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/list/region_access = list(1) //See access.dm var/list/access_list /obj/item/door_remote/Initialize(mapload) . = ..() for(var/i in region_access) access_list += get_region_accesses(i) /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/target, mob/user, proximity_flag, click_parameters) . = ..() var/obj/machinery/door/door if(istype(target, /obj/machinery/door)) door = target if(!door.opens_with_door_remote) return else for (var/obj/machinery/door/door_on_turf in get_turf(target)) if(door_on_turf.opens_with_door_remote) door = door_on_turf break if(isnull(door)) return if(!door.check_access_list(access_list) || !door.requiresID()) target.balloon_alert(user, "can't access!") return var/obj/machinery/door/airlock/airlock = door if(!door.hasPower() || (istype(airlock) && !airlock.canAIControl())) target.balloon_alert(user, mode == WAND_OPEN ? "it won't budge!" : "nothing happens!") return switch(mode) if(WAND_OPEN) if(door.density) door.open() else door.close() if(WAND_BOLT) if(!istype(airlock)) target.balloon_alert(user, "only airlocks!") return if(airlock.locked) airlock.unbolt() log_combat(user, airlock, "unbolted", src) else airlock.bolt() log_combat(user, airlock, "bolted", src) if(WAND_EMERGENCY) if(!istype(airlock)) target.balloon_alert(user, "only airlocks!") return airlock.emergency = !airlock.emergency airlock.update_appearance(UPDATE_ICON) /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 = list(0) /obj/item/door_remote/captain name = "command door remote" icon_state = "gangtool-yellow" region_access = list(7) /obj/item/door_remote/chief_engineer name = "engineering door remote" icon_state = "gangtool-orange" region_access = list(5) /obj/item/door_remote/research_director name = "research door remote" icon_state = "gangtool-purple" region_access = list(4) /obj/item/door_remote/head_of_security name = "security door remote" icon_state = "gangtool-red" region_access = list(2) /obj/item/door_remote/quartermaster name = "supply door remote" desc = "Remotely controls airlocks. This remote has additional Vault access." icon_state = "gangtool-green" region_access = list(6) /obj/item/door_remote/chief_medical_officer name = "medical door remote" icon_state = "gangtool-blue" region_access = list(3) /obj/item/door_remote/civillian name = "civilian door remote" icon_state = "gangtool-white" region_access = list(1, 6) #undef WAND_OPEN #undef WAND_BOLT #undef WAND_EMERGENCY