Bitrunners can broadcast their bitruns to the crew via Entertainment Monitors (#82218)

## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/51863163/72b90aba-863c-4776-b596-89f0dc0ee45f)

Bitrunners are now equipped with body cameras. 
The Quantum Console now holds a switch which you can toggle on to
broadcast your body camera footage to the station's Entertainment
Monitors.

I also cleaned up some balloon alerts

## Why It's Good For The Game

I did a gimmick with a bunch of bitrunners and thought it was lame I
couldn't watch them as they did the bitrunning part.
So here we are. I think it is pretty neat and fun, and also kinda
thematic, since it is VR after all.

## Changelog

🆑 Melbert
add: Bitrunners can now broadcast their Bitruns to the station's
Entertainment Monitors.
/🆑
This commit is contained in:
MrMelbert
2024-03-26 12:28:45 -06:00
committed by GitHub
parent ae8cfefa0e
commit c1047432c0
10 changed files with 162 additions and 7 deletions
@@ -44,6 +44,10 @@
var/threat = 0
/// The turfs we can place a hololadder on.
var/turf/exit_turfs = list()
/// Determines if we broadcast to entertainment monitors or not
var/broadcasting = FALSE
/// Cooldown between being able to toggle broadcasting
COOLDOWN_DECLARE(broadcast_toggle_cd)
/obj/machinery/quantum_server/Initialize(mapload)
. = ..()
@@ -30,11 +30,11 @@
return FALSE
if(isnull(map_key))
balloon_alert_to_viewers("no domain specified.")
balloon_alert_to_viewers("no domain specified!")
return FALSE
if(generated_domain)
balloon_alert_to_viewers("stop the current domain first.")
balloon_alert_to_viewers("stop the current domain first!")
return FALSE
if(length(avatar_connection_refs))
@@ -46,7 +46,7 @@
/// If any one of these fail, it reverts the entire process
if(!load_domain(map_key) || !load_map_items() || !load_mob_segments())
balloon_alert_to_viewers("initialization failed.")
balloon_alert_to_viewers("initialization failed!")
scrub_vdom()
is_ready = TRUE
return FALSE
@@ -63,6 +63,9 @@
update_use_power(ACTIVE_POWER_USE)
update_appearance()
if(broadcasting)
start_broadcasting_network(BITRUNNER_CAMERA_NET)
return TRUE
/// Initializes a new domain if the given key is valid and the user has enough points
@@ -147,6 +150,8 @@
domain_randomized = FALSE
retries_spent = 0
stop_broadcasting_network(BITRUNNER_CAMERA_NET)
/// Tries to clean up everything in the domain
/obj/machinery/quantum_server/proc/scrub_vdom()
sever_connections() /// just in case someone's connected
@@ -83,6 +83,13 @@
SSid_access.apply_trim_to_card(outfit_id, /datum/id_trim/bit_avatar)
avatar.AddComponent( \
/datum/component/simple_bodycam, \
camera_name = "bitrunner bodycam", \
c_tag = "Avatar [avatar.real_name]", \
network = BITRUNNER_CAMERA_NET, \
emp_proof = TRUE, \
)
return avatar
/// Generates a new hololadder for the bitrunner. Effectively a respawn attempt.
+14
View File
@@ -98,3 +98,17 @@
return chosen_turf
#undef MAX_DISTANCE
/// Toggles broadcast on and off
/obj/machinery/quantum_server/proc/toggle_broadcast()
if(!COOLDOWN_FINISHED(src, broadcast_toggle_cd))
return FALSE
broadcasting = !broadcasting
if(generated_domain)
// The cooldown only really matter is we're flipping TVs
COOLDOWN_START(src, broadcast_toggle_cd, 5 SECONDS)
// And we only flip TVs when there's a domain, because otherwise there's no cams to watch
set_network_broadcast_status(BITRUNNER_CAMERA_NET, broadcasting)
return TRUE