Files
Bubberstation/code/modules/events/meteors/meteor_wave_events.dm
dd02f7c015 halloween: a 2spooky update (#2211)
## About The Pull Request

A little package of Halloween goodies and fixes.

- Meteor wave adjustments
- - Adds Halloween candy meteors (and later, potentially Christmas and
Easter)
- - Adjusts timings, giving more time to set up shields for threatening
events, faster start when there's no time to order shields
- - Clips the long meteor alert announcement sound to a better length
- Fixes holiday event spawns, making them Storyteller compatible and
properly trigger at round start
- Extends the Halloween holiday datum to two weeks (not applicable to
Halloween races)
- Adds a bunch of tile variations so that we aren't staring at the same
pattern for a month straight

## Why It's Good For The Game

Adds some more flavour for a holiday that is kinda lacking for something
that runs for more than a few days.

## Changelog

🆑 LT3
add: Halloween candy meteors
fix: Halloween, Easter, and Valentines Day events correctly trigger at
roundstart
image: More Halloween holiday tile patterns
sound: Reduced length of meteor alert warning sound
balance: Adjusted warning time for meteor waves depending on intensity
/🆑

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
2024-10-26 00:36:41 +02:00

135 lines
4.2 KiB
Plaintext

// Normal strength
/datum/round_event_control/meteor_wave
name = "Meteor Wave: Normal"
typepath = /datum/round_event/meteor_wave
weight = 4
min_players = 15
max_occurrences = 3
earliest_start = 25 MINUTES
category = EVENT_CATEGORY_SPACE
description = "A regular meteor wave."
map_flags = EVENT_SPACE_ONLY
/datum/round_event/meteor_wave
start_when = 6
end_when = 66
announce_when = 1
var/list/wave_type
var/wave_name = "normal"
/datum/round_event/meteor_wave/New()
..()
if(!wave_type)
determine_wave_type()
/datum/round_event/meteor_wave/proc/determine_wave_type()
if(!wave_name)
wave_name = pick_weight(list(
"normal" = 50,
"threatening" = 40,
"catastrophic" = 10))
switch(wave_name)
if("normal")
wave_type = GLOB.meteors_normal
if("threatening")
wave_type = GLOB.meteors_threatening
if("catastrophic")
if(check_holidays(HALLOWEEN))
wave_type = GLOB.meteorsSPOOKY
else
wave_type = GLOB.meteors_catastrophic
if("meaty")
wave_type = GLOB.meateors
if("space dust")
wave_type = GLOB.meteors_dust
if("halloween")
wave_type = GLOB.meteorsSPOOKY
else
WARNING("Wave name of [wave_name] not recognised.")
kill()
/datum/round_event/meteor_wave/announce(fake)
priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", ANNOUNCER_METEORS)
/datum/round_event/meteor_wave/tick()
if(ISMULTIPLE(activeFor, 3))
spawn_meteors(5, wave_type) //meteor list types defined in gamemode/meteor/meteors.dm
/datum/round_event_control/meteor_wave/threatening
name = "Meteor Wave: Threatening"
typepath = /datum/round_event/meteor_wave/threatening
weight = 5
min_players = 20
max_occurrences = 3
earliest_start = 35 MINUTES
description = "A meteor wave with higher chance of big meteors."
/datum/round_event/meteor_wave/threatening
wave_name = "threatening"
/datum/round_event_control/meteor_wave/catastrophic
name = "Meteor Wave: Catastrophic"
typepath = /datum/round_event/meteor_wave/catastrophic
weight = 7
min_players = 25
max_occurrences = 3
earliest_start = 45 MINUTES
description = "A meteor wave that might summon a tunguska class meteor."
/datum/round_event/meteor_wave/catastrophic
wave_name = "catastrophic"
/datum/round_event_control/meteor_wave/meaty
name = "Meteor Wave: Meaty"
typepath = /datum/round_event/meteor_wave/meaty
weight = 2
max_occurrences = 1
description = "A meteor wave made of meat."
/datum/round_event/meteor_wave/meaty
wave_name = "meaty"
/* BUBBER EDIT REMOVAL BEGIN - moved to modular_zubbers/code/modules/events/meteor_wave.dm
/datum/round_event/meteor_wave/meaty/announce(fake)
priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.", ANNOUNCER_METEORS)
*/// BUBBER EDIT REMOVAL FINISH
/datum/round_event_control/meteor_wave/dust_storm
name = "Major Space Dust"
typepath = /datum/round_event/meteor_wave/dust_storm
weight = 14
description = "The station is pelted by sand."
earliest_start = 15 MINUTES
min_wizard_trigger_potency = 4
max_wizard_trigger_potency = 7
/datum/round_event/meteor_wave/dust_storm
announce_chance = 85
wave_name = "space dust"
/datum/round_event/meteor_wave/dust_storm/announce(fake)
var/list/reasons = list()
reasons += "[station_name()] is passing through a debris cloud, expect minor damage \
to external fittings and fixtures."
reasons += "Nanotrasen Superweapons Division is testing a new prototype \
[pick("field","projection","nova","super-colliding","reactive")] \
[pick("cannon","artillery","tank","cruiser","\[REDACTED\]")], \
some mild debris is expected."
reasons += "A neighbouring station is throwing rocks at you. (Perhaps they've \
grown tired of your messages.)"
reasons += "[station_name()]'s orbit is passing through a cloud of remnants from an asteroid \
mining operation. Minor hull damage is to be expected."
reasons += "A large meteoroid on intercept course with [station_name()] has been demolished. \
Residual debris may impact the station exterior."
reasons += "[station_name()] has hit a particularly rough patch of space. \
Please mind any turbulence or damage from debris."
priority_announce(pick(reasons), "Collision Alert")