mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Anomalous Weather Part 1 (#8488)
This commit is contained in:
@@ -173,7 +173,7 @@
|
||||
|
||||
/datum/weather
|
||||
var/name = "weather base"
|
||||
var/icon = 'icons/effects/weather.dmi'
|
||||
var/icon = 'modular_chomp/icons/effects/weather.dmi' //ChompEDIT: I am making custom weather and I am not touching upstream.
|
||||
var/icon_state = null // Icon to apply to turf undergoing weather.
|
||||
var/temp_high = T20C // Temperature to apply when at noon.
|
||||
var/temp_low = T0C // Temperature to apply when at midnight.
|
||||
|
||||
@@ -1,3 +1,29 @@
|
||||
//Sif defines
|
||||
/datum/weather_holder/sif
|
||||
temperature = T0C
|
||||
allowed_weather_types = list(
|
||||
WEATHER_CLEAR = new /datum/weather/sif/clear(),
|
||||
WEATHER_OVERCAST = new /datum/weather/sif/overcast(),
|
||||
WEATHER_LIGHT_SNOW = new /datum/weather/sif/light_snow(),
|
||||
WEATHER_SNOW = new /datum/weather/sif/snow(),
|
||||
WEATHER_BLIZZARD = new /datum/weather/sif/blizzard(),
|
||||
WEATHER_RAIN = new /datum/weather/sif/rain(),
|
||||
WEATHER_STORM = new /datum/weather/sif/storm(),
|
||||
WEATHER_HAIL = new /datum/weather/sif/hail(),
|
||||
WEATHER_FOG = new /datum/weather/sif/fog(),
|
||||
WEATHER_BLOOD_MOON = new /datum/weather/sif/blood_moon(),
|
||||
WEATHER_EMBERFALL = new /datum/weather/sif/emberfall(),
|
||||
WEATHER_ASH_STORM = new /datum/weather/sif/ash_storm(),
|
||||
WEATHER_FALLOUT = new /datum/weather/sif/fallout(),
|
||||
WEATHER_FALLOUT_TEMP = new /datum/weather/sif/fallout/temp(),
|
||||
WEATHER_CONFETTI = new /datum/weather/sif/confetti(),
|
||||
WEATHER_EERIE_WIND = new /datum/weather/sif/eeriewind(),
|
||||
WEATHER_SANDSTORM = new /datum/weather/sif/sandstorm(),
|
||||
WEATHER_TOXIN_RAIN = new /datum/weather/sif/toxinrain(),
|
||||
WEATHER_STARRY_RIFT = new /datum/weather/sif/starryrift(),
|
||||
WEATHER_MIDNIGHT_FOG = new /datum/weather/sif/midnightfog()
|
||||
)
|
||||
//Weather
|
||||
/datum/weather/sif/fog
|
||||
name = "fog"
|
||||
icon_state = "fog"
|
||||
@@ -9,11 +35,12 @@
|
||||
temp_low = 263.15 // -10c
|
||||
|
||||
transition_chances = list(
|
||||
WEATHER_FOG = 35,
|
||||
WEATHER_FOG = 30,
|
||||
WEATHER_CLEAR = 35,
|
||||
WEATHER_OVERCAST = 15,
|
||||
WEATHER_LIGHT_SNOW = 10,
|
||||
WEATHER_RAIN = 5
|
||||
WEATHER_RAIN = 5,
|
||||
WEATHER_EERIE_WIND = 5
|
||||
)
|
||||
|
||||
/datum/weather/sif/fallout/temp //fixys firework stars
|
||||
@@ -42,3 +69,177 @@
|
||||
"Suddenly, colorful confetti starts raining from the sky."
|
||||
)
|
||||
imminent_transition_message = "A rain is starting... A rain of confetti...?"
|
||||
|
||||
/datum/weather/sif/blizzard
|
||||
name = "blizzard"
|
||||
icon_state = "snowfall_heavy"
|
||||
temp_high = 243.15 // -30c
|
||||
temp_low = 233.15 // -40c
|
||||
wind_high = 4
|
||||
wind_low = 2
|
||||
light_modifier = 0.3
|
||||
flight_failure_modifier = 10
|
||||
transition_chances = list(
|
||||
WEATHER_SNOW = 40,
|
||||
WEATHER_BLIZZARD = 40,
|
||||
WEATHER_HAIL = 10,
|
||||
WEATHER_OVERCAST = 5,
|
||||
WEATHER_EERIE_WIND = 5
|
||||
)
|
||||
|
||||
|
||||
|
||||
//Anomalous Weather
|
||||
/datum/weather/sif/eeriewind
|
||||
name = "breezy winds"
|
||||
transition_chances = list(
|
||||
WEATHER_SANDSTORM = 25,
|
||||
WEATHER_TOXIN_RAIN = 25,
|
||||
WEATHER_STARRY_RIFT = 25,
|
||||
WEATHER_MIDNIGHT_FOG = 25
|
||||
)
|
||||
|
||||
/datum/weather/sif/toxinrain //wanted phoron but explosions come with phoron
|
||||
name = "toxic rain"
|
||||
icon_state = "toxic_rain"
|
||||
//light_modifier = 0.7
|
||||
|
||||
temp_high = 283.15
|
||||
temp_low = 303.15
|
||||
transition_chances = list(
|
||||
WEATHER_OVERCAST = 100
|
||||
)
|
||||
|
||||
/datum/weather/sif/toxinrain/process_effects()
|
||||
..()
|
||||
for(var/mob/living/carbon/H as anything in human_mob_list)
|
||||
if(H?.z in holder.our_planet.expected_z_levels) // CHOMPedit Add a check that L has to be valid and not null
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
continue
|
||||
|
||||
var/obj/item/weapon/melee/umbrella/U = H.get_active_hand()
|
||||
if(!istype(U) || !U.open)
|
||||
U = H.get_inactive_hand()
|
||||
|
||||
if(istype(U) && U.open)
|
||||
if(show_message)
|
||||
to_chat(H, "<span class='notice'>Rain patters onto your umbrella.</span>")
|
||||
continue
|
||||
|
||||
var/target_zone = pick(BP_ALL)
|
||||
var/amount_blocked = H.run_armor_check(target_zone, "bio")
|
||||
var/amount_soaked = H.get_armor_soak(target_zone, "bio")
|
||||
|
||||
var/damage = rand(1,5)
|
||||
|
||||
if(amount_blocked >= 40)
|
||||
continue
|
||||
|
||||
if(amount_soaked >= damage)
|
||||
continue // No need to apply damage.
|
||||
|
||||
H.apply_damage(damage, BURN, target_zone, amount_blocked, amount_soaked, used_weapon = "acidic rain")
|
||||
if(show_message)
|
||||
to_chat(H, effect_message)
|
||||
|
||||
/datum/weather/sif/sandstorm
|
||||
icon_state = "sandstorm"
|
||||
temp_high = 313.15
|
||||
temp_low = 333.15
|
||||
transition_chances = list(
|
||||
WEATHER_OVERCAST = 100
|
||||
)
|
||||
|
||||
|
||||
|
||||
/datum/weather/sif/sandstorm/process_effects()
|
||||
..()
|
||||
for(var/mob/living/carbon/H as anything in human_mob_list)
|
||||
if(H?.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
continue
|
||||
|
||||
var/target_zone = pick(BP_ALL)
|
||||
var/amount_blocked = H.run_armor_check(target_zone, "melee")
|
||||
var/amount_soaked = H.get_armor_soak(target_zone, "melee")
|
||||
|
||||
var/damage = rand(1,2)
|
||||
|
||||
if(amount_blocked >= 10)
|
||||
continue
|
||||
|
||||
if(amount_soaked >= damage)
|
||||
continue // No need to apply damage.
|
||||
|
||||
H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "sand")
|
||||
if(show_message)
|
||||
to_chat(H, effect_message)
|
||||
|
||||
//datum/weather/sif/stupidbrainwantingthingsinfives
|
||||
|
||||
/datum/weather/sif/starryrift
|
||||
icon_state = "starry_night"
|
||||
light_modifier = 1.5
|
||||
|
||||
temp_high = 323.15
|
||||
temp_low = 343.15
|
||||
transition_chances = list(
|
||||
WEATHER_OVERCAST = 100
|
||||
)
|
||||
|
||||
/datum/weather/sif/starryrift/process_effects()
|
||||
..()
|
||||
for(var/mob/living/carbon/H as anything in human_mob_list)
|
||||
if(H?.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
continue
|
||||
H.add_modifier(/datum/modifier/starrynight_boon, 1 SECONDS, src)
|
||||
|
||||
/datum/modifier/starrynight_boon
|
||||
name = "Starry Night"
|
||||
desc = "You feel serene and well rested."
|
||||
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
incoming_healing_percent = 2
|
||||
|
||||
/*
|
||||
/datum/modifier/starrynight_boon/tick() Wanna have this and it's counter part mess with kin but brain says noto figuring out how lol
|
||||
holder.shadekin_adjust_energy(-3)
|
||||
*/
|
||||
|
||||
/datum/modifier/midnightfog_boon
|
||||
name = "Midnight Fog"
|
||||
desc = "You feel not fully there."
|
||||
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
bleeding_rate_percent = 2 //It desires you
|
||||
evasion = 10 //Worlds bend and meld. Small chance you aren't where you appear to be
|
||||
|
||||
/*
|
||||
/datum/modifier/midnightfog_boon/tick()
|
||||
holder.shadekin_adjust_energy(3)
|
||||
*/
|
||||
|
||||
/datum/weather/sif/midnightfog
|
||||
icon_state = "midnight_fog"
|
||||
light_modifier = 0.3
|
||||
|
||||
temp_high = 303.15
|
||||
temp_low = 323.15
|
||||
transition_chances = list(
|
||||
WEATHER_OVERCAST = 100
|
||||
)
|
||||
|
||||
/datum/weather/sif/midnightfog/process_effects()
|
||||
..()
|
||||
for(var/mob/living/carbon/H as anything in human_mob_list)
|
||||
if(H?.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
continue
|
||||
H.add_modifier(/datum/modifier/midnightfog_boon, 1 SECONDS, src)
|
||||
BIN
modular_chomp/icons/effects/weather.dmi
Normal file
BIN
modular_chomp/icons/effects/weather.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
Reference in New Issue
Block a user