mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
## 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>
135 lines
4.2 KiB
Plaintext
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")
|