Files
Bubberstation/code/modules/bitrunning/server/signal_handlers.dm
SkyratBot 964fc99589 [MIRROR] Feature: bitrunner, a new supply role (READY) [MDB IGNORE] (#23865)
* Feature: bitrunner, a new supply role (READY)

* Delete bepis.dm

* Conflicts

* Update dynamic_rulesets_midround.dm

* Fixing this invalid icon file path

It was trying to use the aesthetics one

* Bepis is dead

* New digi sprites courtesy of CandleJaxx!!

Now in the correct branch!

* Fixing merge conflict

* bitrunning hotfixes [NO GBP]

* Modular health adjustments

* Revert "Modular health adjustments"

This reverts commit 0ff3c48d398f6c1aac51cdf8fecaf869491bbc86.

* Modular health adjustments

Only this one should be necessary

* The screenshot test

* Bitrunner den for voidraptor (FOR #23865) (#23891)

* no shower in sight

* lets bitrunners actually get to their room and spawn there

* New digi sprites courtesy of CandleJaxx!!

* Revert "New digi sprites courtesy of CandleJaxx!!"

This reverts commit eea9f47de256dd407c78450bc8f2a09b814f93e9.

---------

Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>

* Removes bitrunning unit tests (#78607)

## About The Pull Request
Removes the fraction of unit tests I thought would be safe.
Not thrilled that I have to exclude ALL unit tests now, but hey.

The issue is that atmos attempts to process on a turf which hasn't
initialized yet.
## Why It's Good For The Game
Other PRs can pass checks now
## Changelog
N/A

* Update birdshot.dmm

* Tweaks the BEPIS category of the bitrunning order console

* Adds back the flashdark that we had skyrat edited in

* Update tgstation.dme

* Fixes Voidraptor bitrunning den not being connected to the powergrid

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-09-29 20:53:36 -04:00

108 lines
4.0 KiB
Plaintext

/// If broken via signal, disconnects all users
/obj/machinery/quantum_server/proc/on_broken(datum/source)
SIGNAL_HANDLER
if(isnull(generated_domain))
return
SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR)
/// Whenever a corpse spawner makes a new corpse, add it to the list of potential mutations
/obj/machinery/quantum_server/proc/on_corpse_spawned(datum/source, mob/living/corpse)
SIGNAL_HANDLER
mutation_candidate_refs.Add(WEAKREF(corpse))
/// Being qdeleted - make sure the circuit and connected mobs go with it
/obj/machinery/quantum_server/proc/on_delete(datum/source)
SIGNAL_HANDLER
if(generated_domain)
SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR)
scrub_vdom()
if(is_ready)
return
// in case they're trying to cheese cooldown
var/obj/item/circuitboard/machine/quantum_server/circuit = locate(/obj/item/circuitboard/machine/quantum_server) in contents
if(circuit)
qdel(circuit)
/// Handles examining the server. Shows cooldown time and efficiency.
/obj/machinery/quantum_server/proc/on_examine(datum/source, mob/examiner, list/examine_text)
SIGNAL_HANDLER
examine_text += span_infoplain("Can be resource intensive to run. Ensure adequate power supply.")
if(capacitor_coefficient < 1)
examine_text += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.")
if(servo_bonus > 0.2)
examine_text += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.")
examine_text += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.")
if(!is_ready)
examine_text += span_notice("It is currently cooling down. Give it a few moments.")
return
/// Whenever something enters the send tiles, check if it's a loot crate. If so, alert players.
/obj/machinery/quantum_server/proc/on_goal_turf_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
SIGNAL_HANDLER
if(!istype(arrived, /obj/structure/closet/crate/secure/bitrunning/encrypted))
return
var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot_crate = arrived
if(!istype(loot_crate))
return
for(var/mob/person in loot_crate.contents)
if(isnull(person.mind))
person.forceMove(get_turf(loot_crate))
var/datum/component/avatar_connection/connection = person.GetComponent(/datum/component/avatar_connection)
connection?.full_avatar_disconnect()
spark_at_location(loot_crate)
qdel(loot_crate)
SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_COMPLETE, arrived, generated_domain.reward_points)
generate_loot()
/// Handles examining the server. Shows cooldown time and efficiency.
/obj/machinery/quantum_server/proc/on_goal_turf_examined(datum/source, mob/examiner, list/examine_text)
SIGNAL_HANDLER
examine_text += span_info("Beneath your gaze, the floor pulses subtly with streams of encoded data.")
examine_text += span_info("It seems to be part of the location designated for retrieving encrypted payloads.")
/// Scans over the inbound created_atoms from lazy templates
/obj/machinery/quantum_server/proc/on_template_loaded(datum/lazy_template/source, list/created_atoms)
SIGNAL_HANDLER
for(var/thing in created_atoms)
if(isliving(thing)) // so we can mutate them
var/mob/living/creature = thing
if(creature.can_be_cybercop)
mutation_candidate_refs.Add(WEAKREF(creature))
continue
if(istype(thing, /obj/effect/mob_spawn/ghost_role)) // so we get threat alerts
RegisterSignal(thing, COMSIG_GHOSTROLE_SPAWNED, PROC_REF(on_threat_created))
continue
if(istype(thing, /obj/effect/mob_spawn/corpse)) // corpses are valid targets too
var/obj/effect/mob_spawn/corpse/spawner = thing
mutation_candidate_refs.Add(spawner.spawned_mob_ref)
UnregisterSignal(source, COMSIG_LAZY_TEMPLATE_LOADED)
/// Handles when cybercops are summoned into the area or ghosts click a ghost role spawner
/obj/machinery/quantum_server/proc/on_threat_created(datum/source, mob/living/threat)
SIGNAL_HANDLER
domain_threats += 1
spawned_threat_refs.Add(WEAKREF(threat))
SEND_SIGNAL(src, COMSIG_BITRUNNER_THREAT_CREATED) // notify players