// This item just has an integrated camera console, which the data is "proxied" to
/obj/item/camera_bug
name = "camera bug"
desc = "For illicit snooping through the camera network."
icon = 'icons/obj/device.dmi'
icon_state = "camera_bug"
w_class = WEIGHT_CLASS_TINY
throw_speed = 4
throw_range = 20
origin_tech = "syndicate=1;engineering=3"
/// Integrated camera console to serve UI data
var/obj/machinery/computer/security/camera_bug/integrated_console
var/connections = 0
/obj/machinery/computer/security/camera_bug
name = "invasive camera utility"
desc = "How did this get here?! Please report this as a bug to github"
power_state = NO_POWER_USE
interact_offline = TRUE
silent_console = TRUE
/obj/item/camera_bug/Initialize(mapload)
. = ..()
integrated_console = new(src)
integrated_console.parent = src
integrated_console.network = list("SS13", "camera_bug[UID()]")
GLOB.restricted_camera_networks += "camera_bug[UID()]"
/obj/item/camera_bug/Destroy()
QDEL_NULL(integrated_console)
return ..()
/obj/item/camera_bug/attack_self__legacy__attackchain(mob/user as mob)
ui_interact(user)
/obj/item/camera_bug/ui_state(mob/user)
return GLOB.inventory_state
/obj/item/camera_bug/ui_interact(mob/user, datum/tgui/ui = null)
integrated_console.ui_interact(user, ui)
/obj/item/camera_bug/ert
name = "\improper ERT Camera Monitor"
desc = "A small handheld device used by ERT commanders to view camera feeds remotely."
/obj/item/camera_bug/ert/Initialize(mapload)
. = ..()
integrated_console.network = list("ERT")
/obj/item/wall_bug
name = "small camera"
desc = "A camera with a sticky backside."
icon = 'icons/obj/device.dmi'
icon_state = "wall_bug"
w_class = WEIGHT_CLASS_TINY
var/obj/machinery/camera/portable/camera_bug/camera
var/index = "REPORT THIS TO CODERS"
/// What name shows up on the camera bug list
var/camera_tag = "Hidden Camera"
/// If it sticks to whatever you throw at it
var/is_sticky = TRUE
/obj/item/wall_bug/Initialize(mapload, obj/item/camera_bug/the_bug)
. = ..()
link_to_camera(the_bug)
if(is_sticky)
AddComponent(/datum/component/sticky)
ADD_TRAIT(src, TRAIT_NO_THROWN_MESSAGE, ROUNDSTART_TRAIT)
/obj/item/wall_bug/Destroy()
QDEL_NULL(camera)
return ..()
/obj/item/wall_bug/examine(mob/user)
. = ..()
if(in_range(user, src))
. += "It has a small label on it reading \"[index]\"."
/obj/item/wall_bug/proc/link_to_camera(obj/item/camera_bug/camera_bug)
if(!istype(camera_bug))
return
if(camera) // we can't link twice
return
camera_bug.connections++
index = camera_bug.connections
camera = new /obj/machinery/camera/portable/camera_bug(src)
camera.network = list("camera_bug[camera_bug.UID()]")
camera.c_tag = "[camera_tag] [index]"
/// Created by a mindflayer ability
/obj/item/wall_bug/computer_bug
name = "nanobot"
desc = "A small droplet of a shimmering metallic slurry."
camera_tag = "Surveillance Unit"
is_sticky = FALSE
/// Reference to the creator's antag datum
var/datum/antagonist/mindflayer/flayer
COOLDOWN_DECLARE(alert_cooldown)
/obj/item/wall_bug/computer_bug/Destroy()
flayer = null
return ..()
/obj/item/wall_bug/computer_bug/link_to_camera(obj/item/camera_bug/camera_bug, datum/antagonist/mindflayer/flayer_datum)
..()
if(flayer_datum)
flayer = flayer_datum
/obj/machinery/camera/portable/camera_bug
non_chunking_camera = TRUE
/obj/item/paper/camera_bug
name = "\improper Camera Bug Guide"
info = {"Instructions on your new invasive camera utility
This camera bug can access all default cameras on the station, along with the hidden cameras provided in this kit.
The cameras in this kit have a sticky backside, allowing you to attach them to literally anything, even people.
You may remove the cameras from said objects by grabbing them with an empty hand.
You can view these hidden cameras by looking up "Hidden Camera" on your camera bug.
Only the camera bug provided in this kit can see these hidden cameras.
Other Camera bugs cannot see your hidden cameras.
There is no other way to get these hidden cameras, so make sure to not lose them!
"}