Skip to content

Commit

Permalink
[MIRROR] Add circuit component cameras [MDB IGNORE] (#2926)
Browse files Browse the repository at this point in the history
* Add circuit component cameras (#83578)

## About The Pull Request
This PR introduces a limited set of camera components that can be used
by surveillance security consoles and the PDA/laptop camera app.

<img width="366" alt="components"
src="https://github.com/tgstation/tgstation/assets/80724828/0e628863-9998-46d6-8822-e0a44543b4c2">

There is four camera components, each limited to a specified shell
circuit type.

Additionally, drone circuit shells can now use the recharge stations
too, much like how mobs with BCIs can recharge.

### New Components

<img width="136" alt="drone camera"
src="https://github.com/tgstation/tgstation/assets/80724828/fd045871-56bf-44a6-bb4f-ebe895d56d3d">

* Drone Camera
This camera component captures the surrounding area. It has an option to
set the camera range (near 5x5/far 14x14).

<img width="136" alt="bci camera"
src="https://github.com/tgstation/tgstation/assets/80724828/16bf2dd1-823b-4d66-8249-5d0f1bb1b779">

* BCI Camera
This camera component uses the active user's eyes as a camera function.
If the user's sights are damaged, the range will be forced to the near
setting. If the user is unconscious/dead/blinded or has no eyes, the
stream will be cut off.
It has an option to set the camera range (near 5x5/far 14x14).

<img width="136" alt="polaroid camera"
src="https://github.com/tgstation/tgstation/assets/80724828/7c4d53df-b4af-4f7c-8942-a63842510720">

* Polaroid Camera Add-On
This camera component streams to a camera network. The camera range is
hardcoded to the near setting (5x5).

<img width="136" alt="airlock camera"
src="https://github.com/tgstation/tgstation/assets/80724828/5d9e9d55-49fc-45a7-99c8-aaf1ae08f6d1">

* Airlock Camera
This camera component streams to a camera network. The camera range is
hardcoded to the near setting (5x5).

### Features

* The cameras can be EMP'd and will be disabled for 90 seconds if
successful
* When the cameras are active, they will actively drain the cell's power
per second (near range uses 3kJ & far range uses 8kJ)
* Advance camera console/AIs can use these cameras, however the camera
light is disabled (they will be useless in dark areas)

### Screenshots In Action
<details>
This is the drone camera viewed on a security camera console<br>
<img width="425" alt="near"
src="https://github.com/tgstation/tgstation/assets/80724828/e5247828-0fee-4552-9e70-5e5ee897c117"><br>
This is the same drone, now set to the far range setting<br>
<img width="425" alt="far"
src="https://github.com/tgstation/tgstation/assets/80724828/e58e3e85-aa90-4f1a-9dff-957c65764b77"><br>
</details>

## Why It's Good For The Game
This promotes emergent gameplay and improves the overall usefulness for
drones as they can be 100% used remotely.

## Changelog
:cl:
add: Added new circuit camera components
qol: Circuit drones can now recharge at recharge stations
/:cl:

---------

Co-authored-by: Watermelon914 <[email protected]>

* Add circuit component cameras

---------

Co-authored-by: tmyqlfpir <[email protected]>
Co-authored-by: Watermelon914 <[email protected]>
Co-authored-by: NovaBot13 <[email protected]>
  • Loading branch information
4 people authored and StealsThePRs committed Jun 8, 2024
1 parent 7acf9e9 commit 646d449
Show file tree
Hide file tree
Showing 8 changed files with 450 additions and 4 deletions.
2 changes: 1 addition & 1 deletion code/game/machinery/rechargestation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
req_access = list(ACCESS_ROBOTICS)
state_open = TRUE
circuit = /obj/item/circuitboard/machine/cyborgrecharger
occupant_typecache = list(/mob/living/silicon/robot, /mob/living/carbon/human)
occupant_typecache = list(/mob/living/silicon/robot, /mob/living/carbon/human, /mob/living/circuit_drone)
processing_flags = NONE
var/recharge_speed
var/repairs
Expand Down
2 changes: 1 addition & 1 deletion code/modules/photography/camera/camera.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

/obj/item/camera/Initialize(mapload)
. = ..()
AddComponent(/datum/component/shell, list(new /obj/item/circuit_component/camera), SHELL_CAPACITY_SMALL)
AddComponent(/datum/component/shell, list(new /obj/item/circuit_component/camera, new /obj/item/circuit_component/remotecam/polaroid), SHELL_CAPACITY_SMALL)

/obj/item/camera/attack_self(mob/user)
if(!disk)
Expand Down
5 changes: 5 additions & 0 deletions code/modules/research/designs/wiremod_designs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,11 @@
id = "comp_assoc_list_pick"
build_path = /obj/item/circuit_component/list_pick/assoc

/datum/design/component/bci/bci_camera
name = "BCI Camera"
id = "comp_camera_bci"
build_path = /obj/item/circuit_component/remotecam/bci

/datum/design/compact_remote_shell
name = "Compact Remote Shell"
desc = "A handheld shell with one big button."
Expand Down
1 change: 1 addition & 0 deletions code/modules/research/techweb/all_nodes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,7 @@
"bci_implanter",
"bci_shell",
"comp_bar_overlay",
"comp_camera_bci",
"comp_counter_overlay",
"comp_install_detector",
"comp_object_overlay",
Expand Down
Loading

0 comments on commit 646d449

Please sign in to comment.