-
Notifications
You must be signed in to change notification settings - Fork 67
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[MIRROR] New operative reinforcement option: Intelligence Overwatch A…
…gent (#2753) * New operative reinforcement option: Intelligence Overwatch Agent (#82307) ## About The Pull Request Introducing a new Nuclear Operative reinforcement option: The Overwatch Intelligence Agent. Equipped with multi-hudglasses, they have an advanced camera console, station alerts, and bodycams of every operative! If something can be known, they will know about it. They can also remotely pilot your ship. Finally, everyone can ride in the Steel Rain without getting stuck on the station! This role spawns in the formerly unused outpost just north of the nukie base. With a few shelves of supplies and some tools in the back room, they can set up their workplace however they like. This also gives them something to work on while they wait for the operatives to gear up. ![image](https://github.com/tgstation/tgstation/assets/28870487/4a39ec5f-0578-4825-8c6b-cc4db47bf726) As you can see, it's rather cramped and the lights are quite dim in the backroom. Set it up however you like, this is how I did mine: ![image](https://github.com/tgstation/tgstation/assets/28870487/f80b65fa-dcd1-425e-a6ce-c0ed94a8a3a5) Total price? 12 TC per agent. It might get a bit cramped, but you could buy a second to make sure the first guy doesn't get lonely! This turned into a 30-commit ugly because the bodycams were originally meant to be accomplished via a refactoring of the spyglass kit. Big mistake that made me shelve the project -- until Melbert's simple bodycam component conveniently did exactly what I needed in a much simpler way. ## Why It's Good For The Game Having a "guy in the chair" for your kickass murder operator squad enables more brainy strategizing, and is thematically sound. Also, nukies have the opportunity to bring in another player to participate in the fun! ## Changelog :cl: Rhials add: Nuclear Operatives now purchase an Intelligence Agent, who can watch cameras and bodycams, move the shuttle, and provide radio support. Only 12 Telecrystals! /:cl: * New operative reinforcement option: Intelligence Overwatch Agent --------- Co-authored-by: NovaBot <[email protected]> Co-authored-by: Rhials <[email protected]>
- Loading branch information
1 parent
eaa9cb8
commit 7bf5d43
Showing
17 changed files
with
379 additions
and
40 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/// For when a new teammate is added to a nukie team | ||
#define COMSIG_NUKE_TEAM_ADDITION "nuke_team_addition" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
code/modules/antagonists/nukeop/datums/operative_support.dm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/datum/antagonist/nukeop/support | ||
name = ROLE_OPERATIVE_OVERWATCH | ||
show_to_ghosts = TRUE | ||
send_to_spawnpoint = TRUE | ||
nukeop_outfit = /datum/outfit/syndicate/support | ||
|
||
/datum/antagonist/nukeop/support/greet() | ||
owner.current.playsound_local(get_turf(owner.current), 'sound/machines/printer.ogg', 100, 0, use_reverb = FALSE) | ||
to_chat(owner, span_big("You are a [name]! You've been temporarily assigned to provide camera overwatch and manage communications for a nuclear operative team!")) | ||
to_chat(owner, span_red("Use your tools to set up your equipment however you like, but do NOT attempt to leave your outpost.")) | ||
owner.announce_objectives() | ||
|
||
/datum/antagonist/nukeop/support/on_gain() | ||
..() | ||
for(var/datum/mind/teammate_mind in nuke_team.members) | ||
var/mob/living/our_teammate = teammate_mind.current | ||
our_teammate.AddComponent( \ | ||
/datum/component/simple_bodycam, \ | ||
camera_name = "operative bodycam", \ | ||
c_tag = "[our_teammate.real_name]", \ | ||
network = OPERATIVE_CAMERA_NET, \ | ||
emp_proof = FALSE, \ | ||
) | ||
our_teammate.playsound_local(get_turf(owner.current), 'sound/weapons/egloves.ogg', 100, 0) | ||
to_chat(our_teammate, span_notice("A Syndicate Overwatch Intelligence Agent has been assigned to your team. Smile, you're on camera!")) | ||
|
||
RegisterSignal(nuke_team, COMSIG_NUKE_TEAM_ADDITION, PROC_REF(late_bodycam)) | ||
|
||
owner.current.grant_language(/datum/language/codespeak) | ||
|
||
/datum/antagonist/nukeop/support/get_spawnpoint() | ||
return pick(GLOB.nukeop_overwatch_start) | ||
|
||
/datum/antagonist/nukeop/support/forge_objectives() | ||
var/datum/objective/overwatch/objective = new | ||
objective.owner = owner | ||
objectives += objective | ||
|
||
/datum/antagonist/nukeop/support/proc/late_bodycam(datum/source, mob/living/new_teammate) | ||
SIGNAL_HANDLER | ||
new_teammate.AddComponent( \ | ||
/datum/component/simple_bodycam, \ | ||
camera_name = "operative bodycam", \ | ||
c_tag = "[new_teammate.real_name]", \ | ||
network = OPERATIVE_CAMERA_NET, \ | ||
emp_proof = FALSE, \ | ||
) | ||
to_chat(new_teammate, span_notice("You have been equipped with a bodycam, viewable by your Overwatch Intelligence Agent. Make sure to show them a good performance!")) | ||
|
||
/datum/objective/overwatch | ||
explanation_text = "Provide intelligence support and overwatch to your operative team!" | ||
|
||
/datum/objective/overwatch/check_completion() | ||
return GLOB.station_was_nuked |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
code/modules/antagonists/nukeop/equipment/overwatch_tools.dm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
///One of the special items that spawns in the overwatch agent's room. | ||
/obj/item/paper/fluff/overwatch | ||
name = "OVERWATCH NOTES #1" | ||
color = COLOR_RED | ||
desc = "A note from Syndicate leadership regarding your new job. You should read this!" | ||
default_raw_text = @{" | ||
Congratulations! You have been picked to be the Sole Survivor of an anti-Nanotrasen suicide mission! | ||
We're kidding of course, these types of missions tend to have abnormally high survival rates. I guess that says a lot about who your team will be going up against. | ||
<br> | ||
You've been assigned to provide intelligence support to the ground-pounders carrying out the operation. | ||
Each operative has been equipped with a bodycam that can be accessed via your Overwatch Camera Console. | ||
Additionally, you have been given the boards to access station alerts, cameras, and remotely control the infiltrator shuttle. | ||
<br> | ||
Feel free to set up your workplace however you like. We've provided the tools and boards in your backroom. | ||
<br> | ||
Happy hunting! | ||
"} | ||
|
||
/obj/machinery/computer/security/overwatch | ||
name = "overwatch camera console" | ||
desc = "Allows you to view members of your operative team via their bodycam feeds. We call them 'bodycams', but they're actually a swarm of tiny, near-imperceptible camera drones that follow each target. \ | ||
It is believed that adversaries either don't notice the drones, or avoid attacking them in hopes that they'll capture footage of their combat prowess against our operatives." | ||
icon_screen = "commsyndie" | ||
icon_keyboard = "syndie_key" | ||
network = list(OPERATIVE_CAMERA_NET) | ||
circuit = /obj/item/circuitboard/computer/overwatch | ||
|
||
/obj/item/circuitboard/computer/overwatch | ||
name = "Overwatch Body Cameras" | ||
build_path = /obj/machinery/computer/security/overwatch | ||
greyscale_colors = CIRCUIT_COLOR_SECURITY | ||
|
||
/obj/item/circuitboard/computer/syndicate_shuttle_docker | ||
name = "Shuttle Controller" | ||
build_path = /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate | ||
greyscale_colors = CIRCUIT_COLOR_SECURITY | ||
|
||
/obj/item/clothing/glasses/overwatch | ||
name = "intelligence glasses" | ||
desc = "A set of incredibly advanced sunglasses, providing you with an array of different sensor scans and visual readouts for pretty much anything you look at. \ | ||
It's kind of overwhelming, actually. Wearing this for a few hours will probably give you a migrane." | ||
icon_state = "sunhudmed" | ||
flags_cover = GLASSESCOVERSEYES | ||
flash_protect = FLASH_PROTECTION_WELDER | ||
clothing_traits = list(TRAIT_REAGENT_SCANNER) | ||
var/list/hudlist = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED, DATA_HUD_SECURITY_ADVANCED) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters