Files
fulpstation/code/__DEFINES/weather.dm
John Willard 7199947c08 [MDB IGNORE] [IDB IGNORE] WIP TGU (#1427)
Several months worth of updates.

---------

Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
Co-authored-by: Ray <64306407+OneAsianTortoise@users.noreply.github.com>
Co-authored-by: Cure221 <106662180+Cure221@users.noreply.github.com>
2025-11-06 08:20:20 -05:00

59 lines
2.9 KiB
Plaintext

//A reference to this list is passed into area sound managers, and it's modified in a manner that preserves that reference in ash_storm.dm
GLOBAL_LIST_EMPTY(ash_storm_sounds)
GLOBAL_LIST_EMPTY(rain_storm_sounds)
GLOBAL_LIST_EMPTY(sand_storm_sounds)
/// Tracks where we should play snowstorm sounds for the area sound listener
GLOBAL_LIST_EMPTY(snowstorm_sounds)
/// The wizard rain event can run multiple times so we use a global reagent whitelist to reuse the same list to boost performance
GLOBAL_LIST_EMPTY(wizard_rain_reagents)
#define STARTUP_STAGE 1
#define MAIN_STAGE 2
#define WIND_DOWN_STAGE 3
#define END_STAGE 4
/// The amount of reagent units that is applied when an object comes into contact with rain
#define WEATHER_REAGENT_VOLUME 5
/// Weather reagent volume applied to randomly selected turfs/objects is scaled by this multiplier to compensate for reduced processing frequency
#define TURF_REAGENT_VOLUME_MULTIPLIER 3
/// 1 / 400 chance for a turf to get a thunder strike per tick (death and destruction to mobs/equipment in area)
#define THUNDER_CHANCE_INSANE 0.0025
/// 1 / 1,000 chance for a turf to get a thunder strike per tick (damage to mobs/equipment in area)
#define THUNDER_CHANCE_HIGH 0.001
/// 1 / 5,000 chance for a turf to get a thunder strike per tick (sporadic damage to mobs/equipment in area)
#define THUNDER_CHANCE_AVERAGE 0.0002
/// 1 / 20,000 chance for a turf to get a thunder strike per tick (rare damage to mobs/equipment in area)
#define THUNDER_CHANCE_RARE 0.00005
/// 1 / 50,000 chance for a turf to get a thunder strike per tick (almost no damage to mobs/equipment in area)
#define THUNDER_CHANCE_VERY_RARE 0.00002
/// admin verb to control thunder via the run_weather command
GLOBAL_LIST_INIT(thunder_chance_options, list(
"Relentless - The Sky is Angry, Very Angry" = THUNDER_CHANCE_INSANE,
"Abundant - A shocking amount of thunder" = THUNDER_CHANCE_HIGH,
"Regular - Standard Storm Activity" = THUNDER_CHANCE_AVERAGE,
"Occasional - A polite amount of thunder" = THUNDER_CHANCE_RARE,
"Rare - Like finding a four-leaf clover, but in the sky" = THUNDER_CHANCE_VERY_RARE,
"None - Admin Safe Space (Thunder Disabled)" = NONE,
))
//WEATHER FLAGS
/// If weather will affect turfs
#define WEATHER_TURFS (1<<0)
/// If weather will affect mobs
#define WEATHER_MOBS (1<<1)
/// If weather will apply thunder strikes to turfs
#define WEATHER_THUNDER (1<<2)
/// If weather will be allowed to affect indoor areas
#define WEATHER_INDOORS (1<<3)
/// If weather is endless and can only be stopped manually
#define WEATHER_ENDLESS (1<<4)
/// If weather will be detected by a barometer
#define WEATHER_BAROMETER (1<<5)
/// If weather temperature ignores clothing insulation when adjusting bodytemperature
#define WEATHER_TEMPERATURE_BYPASS_CLOTHING (1<<6)
/// Does weather have any type of processing related to mobs, turfs, or thunder?
#define FUNCTIONAL_WEATHER (WEATHER_TURFS|WEATHER_MOBS|WEATHER_THUNDER)