Files
Bubberstation/code/modules/events/meteors/stray_meteor_event.dm
T
tralezabandGitHub c0ef4ba907 Adds the Dark Matt-eor when you emag a stupid amount of meteor shields + lots of meteor file sorting + qol + dark matter singularity + dark matt-eor summoning final traitor objective (#74330)
## About The Pull Request

<details>
  <summary>Dark Matt-eor Image</summary>
  

![image](https://user-images.githubusercontent.com/40974010/228368755-34ae5f89-e1bb-498b-bbf8-a14ff4240dc0.png)

</details>

> A barely visible blur in the cosmic darkness, like a ghostly shadow on
a moonless night. A piercing howl in the vacuum of space, as if it were
tearing the fabric of reality. A twisted halo of light around it,
bending and breaking the rays of distant suns. A shower of quantum
sparks, flickering and fading in its wake. A dark matter meteor (dark
matt-eor) is a wonder to witness, and to dread.

> A sudden impact, like a hammer blow to the heart of the station. A
violent tremor, shaking and shattering the metal walls and windows. A
deafening roar, as the air rushes out of the breached hull. A blinding
flash, as the dark matter meteor unleashes its hidden energy. A tiny
black hole, forming and growing in the center of the station. A
relentless pull, dragging everything towards the abyss. A dark matter
meteor is incredibly deadly.

Emagging too many meteor shields will summon a dark matt-eor. This comes
with several warnings, and after awhile, warns the station that someone
is trying to summon a dark matteor.

The dark matt-eor itself is not that damaging in its impact, but drops a
singularity in its final resting place.

## Why It's Good For The Game

It's a new way to terrorize a round as an antagonist. Before, emagging a
lot of meteor shields would basically make meteor showers the only event
that can run, which is cool, but since constant meteor waves are going
to destroy the station, let's also throw in the mother of all meteors!

This also adds warnings to spamming emagging meteor shields, which imo
needs it. The round ends when someone spams emagged meteor shields, and
since they're meteor shields nobody is going to reasonably check on
them.

## Changelog
🆑
add: The dark matt-eor
add: Summon a dark matt-eor final traitor objective
add: Dark matter singularity variant, which can't grow as big as a
regular singularity but hungers for blood
code: cleaned up/sorted meteor shield code, satellite control, and more
qol: added a lot of feedback to interacting with meteor shields
balance: emagging a lot of meteor shields warns the station, but
emagging enough of them summons a Dark Matt-eor.
/🆑
2023-03-29 19:48:15 +00:00

44 lines
1.7 KiB
Plaintext

/datum/round_event_control/stray_meteor
name = "Stray Meteor"
typepath = /datum/round_event/stray_meteor
weight = 15 //Number subject to change based on how often meteors actually collide with the station
min_players = 15
max_occurrences = 3
earliest_start = 20 MINUTES
category = EVENT_CATEGORY_SPACE
description = "Throw a random meteor somewhere near the station."
min_wizard_trigger_potency = 3
max_wizard_trigger_potency = 7
admin_setup = list(/datum/event_admin_setup/listed_options/stray_meteor)
map_flags = EVENT_SPACE_ONLY
/datum/round_event/stray_meteor
announce_when = 1
fakeable = FALSE //Already faked by meteors that miss
///The selected meteor type if chosen through admin setup.
var/chosen_meteor
/datum/round_event/stray_meteor/start()
if(chosen_meteor)
var/list/chosen_meteor_list = list()
chosen_meteor_list[chosen_meteor] = 1
spawn_meteor(chosen_meteor_list)
else
spawn_meteor(GLOB.meteors_stray)
/datum/round_event/stray_meteor/announce(fake)
if(GLOB.meteor_list)
var/obj/effect/meteor/detected_meteor = pick(GLOB.meteor_list) //If we accidentally pick a meteor not spawned by the event, we're still technically not wrong
var/sensor_name = detected_meteor.signature
priority_announce("Our [sensor_name] sensors have detected an incoming signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert")
/datum/event_admin_setup/listed_options/stray_meteor
input_text = "Select a meteor type?"
normal_run_option = "Random Meteor"
/datum/event_admin_setup/listed_options/stray_meteor/get_list()
return subtypesof(/obj/effect/meteor)
/datum/event_admin_setup/listed_options/stray_meteor/apply_to_event(datum/round_event/stray_meteor/event)
event.chosen_meteor = chosen