mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 15:47:15 +01:00
Introduces particle weather, converts rain and ash storms to it (#96297)
Co-authored-by: Lucy <lucy@absolucy.moe>
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
///what blackboard key are we setting
|
||||
var/weather_key
|
||||
|
||||
/datum/component/ai_listen_to_weather/Initialize(weather_type = /datum/weather/ash_storm, weather_key = BB_STORM_APPROACHING)
|
||||
/datum/component/ai_listen_to_weather/Initialize(weather_type = /datum/weather/particle/ash_storm, weather_key = BB_STORM_APPROACHING)
|
||||
if(!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
src.weather_type = weather_type
|
||||
|
||||
@@ -8,17 +8,20 @@
|
||||
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
||||
var/list/datum/weather/active_weather = list()
|
||||
var/list/atom/movable/screen/plane_master/plane_masters = list()
|
||||
/// Do we care about all weather or only particle weather?
|
||||
var/particle_only = FALSE
|
||||
|
||||
/datum/component/hide_weather_planes/Initialize(atom/movable/screen/plane_master/care_about)
|
||||
/datum/component/hide_weather_planes/Initialize(atom/movable/screen/plane_master/care_about, particle_only = FALSE)
|
||||
if(!istype(parent, /datum/plane_master_group))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
src.particle_only = particle_only
|
||||
var/datum/plane_master_group/home = parent
|
||||
plane_masters += care_about
|
||||
RegisterSignal(care_about, COMSIG_QDELETING, PROC_REF(plane_master_deleted))
|
||||
|
||||
var/list/starting_signals = list()
|
||||
var/list/ending_signals = list()
|
||||
for(var/datum/weather/weather_type as anything in typesof(/datum/weather))
|
||||
for(var/datum/weather/weather_type as anything in valid_subtypesof(particle_only ? /datum/weather/particle : /datum/weather))
|
||||
starting_signals += COMSIG_WEATHER_TELEGRAPH(weather_type)
|
||||
ending_signals += COMSIG_WEATHER_END(weather_type)
|
||||
|
||||
@@ -103,6 +106,8 @@
|
||||
|
||||
var/list/connected_levels = SSmapping.get_connected_levels(new_z)
|
||||
for(var/datum/weather/active as anything in SSweather.processing)
|
||||
if(particle_only && !istype(active, /datum/weather/particle))
|
||||
continue
|
||||
if(length(connected_levels & active.impacted_z_levels))
|
||||
active_weather += WEAKREF(active)
|
||||
|
||||
|
||||
@@ -69,9 +69,9 @@
|
||||
user.name = target.name
|
||||
user.reset_perspective(target)
|
||||
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/ash_storm, ZTRAIT_ASHSTORM, GLOB.ash_storm_sounds)
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/particle/ash_storm, ZTRAIT_ASHSTORM, GLOB.ash_storm_sounds)
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/snow_storm, ZTRAIT_SNOWSTORM, GLOB.snowstorm_sounds)
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/rain_storm, ZTRAIT_RAINSTORM, GLOB.rain_storm_sounds)
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/particle/rain_storm, ZTRAIT_RAINSTORM, GLOB.rain_storm_sounds)
|
||||
target.AddElement(/datum/element/weather_listener, /datum/weather/sand_storm, ZTRAIT_SANDSTORM, GLOB.sand_storm_sounds)
|
||||
|
||||
RegisterSignal(target, COMSIG_QDELETING, PROC_REF(end_possession))
|
||||
@@ -84,8 +84,8 @@
|
||||
|
||||
var/mob/poltergeist = parent
|
||||
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/ash_storm, ZTRAIT_ASHSTORM, GLOB.ash_storm_sounds)
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/rain_storm, ZTRAIT_RAINSTORM, GLOB.rain_storm_sounds)
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/particle/ash_storm, ZTRAIT_ASHSTORM, GLOB.ash_storm_sounds)
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/particle/rain_storm, ZTRAIT_RAINSTORM, GLOB.rain_storm_sounds)
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/sand_storm, ZTRAIT_SANDSTORM, GLOB.sand_storm_sounds)
|
||||
possessed.RemoveElement(/datum/element/weather_listener, /datum/weather/snow_storm, ZTRAIT_SNOWSTORM, GLOB.snowstorm_sounds)
|
||||
UnregisterSignal(possessed, COMSIG_QDELETING)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/datum/component/storm_hating
|
||||
/// Types of weather which trigger the effect
|
||||
var/static/list/stormy_weather = list(
|
||||
/datum/weather/ash_storm,
|
||||
/datum/weather/particle/ash_storm,
|
||||
/datum/weather/snow_storm,
|
||||
/datum/weather/void_storm,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user