mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-19 11:17:19 +01:00
New year new tyr Update (#12196)
This commit is contained in:
@@ -13,12 +13,12 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
see_in_dark = 3
|
||||
melee_damage_lower = 16 //6.25 hits unarmored.
|
||||
melee_damage_upper = 16 //Rng numbers are wierd
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 12
|
||||
attack_sharp = TRUE
|
||||
attack_edge = 1
|
||||
|
||||
meat_amount = 3
|
||||
meat_amount = 7
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/tyrant
|
||||
|
||||
tame_items = list(/obj/item/reagent_containers/food/snacks/crabmeat = 20)
|
||||
@@ -59,16 +59,6 @@
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 25
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //knock back ant
|
||||
name = "bronze metal ant"
|
||||
icon_state = "bronze_ant"
|
||||
icon_living = "bronze_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/bronze = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/apply_melee_effects(atom/A)
|
||||
..()
|
||||
|
||||
@@ -95,10 +85,6 @@
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/copperant
|
||||
|
||||
special_attack_min_range = 0
|
||||
special_attack_max_range = 2
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
visible_message(span_cult("[P] seems ineffective!."))
|
||||
@@ -120,6 +106,10 @@
|
||||
special_attack_max_range = 2
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
color = "#FF7D51"
|
||||
glow_range = 5
|
||||
glow_intensity = 2
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate/do_special_attack(atom/A)
|
||||
explosion(src.loc, 2, 1, 1, 1)
|
||||
|
||||
@@ -134,17 +124,6 @@
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/quartzant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
||||
name = "painite metal ant"
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
icon_state = "painite_ant"
|
||||
icon_living = "painite_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/painite = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond //slower, tankier, more damage
|
||||
name = "diamond metal ant"
|
||||
icon_state = "diamond_ant"
|
||||
@@ -179,34 +158,72 @@
|
||||
special_attack_max_range = 2
|
||||
special_attack_cooldown = 5 SECONDS
|
||||
|
||||
color = "#91FF91"
|
||||
glow_range = 5
|
||||
glow_intensity = 2
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium/do_special_attack(atom/A)
|
||||
visible_message(span_bolddanger(span_orange("The ant glows bright green!.")))
|
||||
SSradiation.radiate(src, 15)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium
|
||||
name = "tritium ant"
|
||||
icon_state = "tritium_ant"
|
||||
icon_living = "tritium_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/tritium = 18\
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //secondary spawner
|
||||
name = "mhydro ant"
|
||||
icon_state = "mhydro_ant"
|
||||
icon_living = "mhydro_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/mhydrogen = 6\
|
||||
/obj/item/stack/material/mhydrogen = 12\
|
||||
)
|
||||
size_multiplier = 0.5
|
||||
movement_cooldown = -1
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
||||
name = "painite metal ant"
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
icon_state = "painite_ant"
|
||||
icon_living = "painite_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/painite = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite/apply_melee_effects(atom/A)
|
||||
..()
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
to_chat(L, span_danger("You've been burned by \the [src]!"))
|
||||
L.ignite_mob()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze
|
||||
name = "bronze metal ant"
|
||||
icon_state = "bronze_ant"
|
||||
icon_living = "bronze_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/bronze = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/death()
|
||||
visible_message(span_warning("\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.") )
|
||||
for(var/i = 1 to 8)
|
||||
new /obj/effect/spider/spiderling/antling (src.loc)
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite //nothing special here
|
||||
name = "graphite ant"
|
||||
icon_state = "graphite_ant"
|
||||
icon_living = "graphite_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/graphite = 18\
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder
|
||||
name = "concrete ant"
|
||||
name = "tritium ant"
|
||||
icon_state = "builder_ant"
|
||||
icon_living = "builder_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/concrete = 6\
|
||||
/obj/item/stack/material/tritium = 18\
|
||||
)
|
||||
nutrition = 150
|
||||
var/build_type = /obj/random/ant_building
|
||||
@@ -301,7 +318,7 @@ ANT STRUCTURES
|
||||
icon_state = "hole"
|
||||
anchored = TRUE
|
||||
|
||||
spawn_delay = 10 MINUTES
|
||||
spawn_delay = 15 MINUTES
|
||||
|
||||
spawn_types = list(
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 1,
|
||||
@@ -312,12 +329,12 @@ ANT STRUCTURES
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/verdantium = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro = 1
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite = 1,
|
||||
)
|
||||
|
||||
simultaneous_spawns = 3
|
||||
simultaneous_spawns = 5
|
||||
|
||||
destructible = 1
|
||||
health = 50 //Unsure why you would want to break it but you can
|
||||
@@ -433,9 +450,9 @@ ANT STRUCTURES
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/verdantium,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro)
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite)
|
||||
faction = FACTION_TYR_ANT
|
||||
|
||||
/obj/effect/ant_structure/webbarrier
|
||||
|
||||
@@ -20,10 +20,13 @@
|
||||
vore_standing_too = TRUE
|
||||
unacidable = TRUE
|
||||
special_attack_min_range = 0
|
||||
special_attack_max_range = 7
|
||||
special_attack_max_range = 14
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
|
||||
melee_miss_chance = 0
|
||||
see_in_dark = 14
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
|
||||
loot_list = list(/obj/item/gun/energy/tyr_rifle = 30,
|
||||
/obj/item/tool/wirecutters/hybrid/alien = 30,
|
||||
@@ -198,21 +201,19 @@
|
||||
name = "experiment 20"
|
||||
icon_state = "crystalized"
|
||||
icon_living = "crystalized"
|
||||
specialattackprojectile = /obj/item/projectile/arc/fragmentation/tyr_mortar
|
||||
health = 400
|
||||
maxHealth = 400 //15ish hits with E sword
|
||||
wreckage = /obj/item/prop/tyrlore/crystal_boss
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
attack_armor_pen = 40
|
||||
melee_attack_delay = 2.5 SECONDS
|
||||
movement_cooldown = 4
|
||||
special_attack_cooldown = 8 SECONDS
|
||||
evasion = 200 //forced to fight in melee lol
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,3)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
addtimer(CALLBACK(src, PROC_REF(gattlingfire), A, rng_cycle, 8, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 4), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss
|
||||
name = "experiment 25"
|
||||
@@ -298,10 +299,11 @@
|
||||
icon = 'modular_chomp/icons/mob/hivebot.dmi'
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/swarm_boss
|
||||
special_attack_cooldown = 8 SECONDS
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
movement_cooldown = 4
|
||||
special_attack_cooldown = 12 SECONDS
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
attack_armor_pen = 0
|
||||
movement_cooldown = 8
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/bullet_act(obj/item/projectile/P)
|
||||
for(var/i =1 to 3)
|
||||
@@ -338,8 +340,8 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot //tutortial for ADD invul mechanics
|
||||
name = "medical robot"
|
||||
desc = "A massive hivebot with medical equipment."
|
||||
health = 400
|
||||
maxHealth = 400
|
||||
health = 1000
|
||||
maxHealth = 1000
|
||||
icon_state = "white"
|
||||
icon_living = "white"
|
||||
icon = 'icons/mob/hivebot.dmi'
|
||||
@@ -350,7 +352,7 @@
|
||||
attack_armor_pen = 80
|
||||
movement_cooldown = 4
|
||||
|
||||
special_attack_cooldown = 12 SECONDS
|
||||
special_attack_cooldown = 25 SECONDS
|
||||
|
||||
var/datum/disease/base_disease = /datum/disease/advance/agate_rot
|
||||
|
||||
@@ -360,9 +362,13 @@
|
||||
H.ContractDisease(base_disease)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/do_special_attack(atom/A)
|
||||
for(var/i =1 to 2)
|
||||
new /mob/living/simple_mob/mechanical/hivebot/tyr/heart(src.loc)
|
||||
|
||||
visible_message(span_boldwarning(span_orange("The beast restores itself to a prime condition!.")))
|
||||
adjustBruteLoss(-1000)
|
||||
adjustFireLoss(-1000)
|
||||
adjustToxLoss(-1000)
|
||||
adjustOxyLoss(-1000)
|
||||
adjustCloneLoss(-1000)
|
||||
/*
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart
|
||||
name = "barrier unit"
|
||||
icon = 'modular_chomp/icons/mob/tyr.dmi'
|
||||
@@ -374,20 +380,4 @@
|
||||
melee_damage_upper = 10
|
||||
attack_armor_pen = 80
|
||||
movement_cooldown = 4
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/handle_special()
|
||||
if(stat != DEAD)
|
||||
untouchable_aura()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/proc/untouchable_aura()
|
||||
for(var/mob/living/L in orange(src, 3))
|
||||
if(L.stat == DEAD || !IIsAlly(L))
|
||||
continue
|
||||
L.add_modifier(/datum/modifier/aura/heart_barrier, null, src)
|
||||
|
||||
/datum/modifier/aura/heart_barrier
|
||||
stacks = MODIFIER_STACK_FORBID
|
||||
mob_overlay_state = "deflect"
|
||||
incoming_damage_percent = 0
|
||||
aura_max_distance = 3
|
||||
*/
|
||||
|
||||
+7
-1
@@ -38,9 +38,15 @@
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/meteor
|
||||
maxHealth = 2 LASERS_TO_KILL // 80 hp
|
||||
health = 2 LASERS_TO_KILL
|
||||
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/dodge
|
||||
projectiletype = /obj/item/projectile/energy/agate_lighting/fast
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/dodge
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/dodge/post_ranged_attack(atom/A)
|
||||
holder.IMove(get_step(holder, pick(GLOB.alldirs)))
|
||||
holder.face_atom(A)
|
||||
|
||||
/obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
damage = 40
|
||||
armor_penetration = 60
|
||||
|
||||
@@ -99,13 +99,7 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
temperature = 313
|
||||
allowed_weather_types = list(
|
||||
WEATHER_CLEAR = new /datum/weather/tyr/clear(),
|
||||
WEATHER_FIRESTART = new /datum/weather/tyr/firestart(),
|
||||
WEATHER_FLAMESTORM = new /datum/weather/tyr/flamestorm(),
|
||||
WEATHER_SANDSTORM = new /datum/weather/tyr/sandstorm(),
|
||||
WEATHER_HEAVYSANDSTORM = new /datum/weather/tyr/sandstorm_fierce(),
|
||||
WEATHER_FALLOUT_TEMP = new /datum/weather/tyr/starrynight(),
|
||||
WEATHER_BLIZZARD = new /datum/weather/tyr/blizzard(),
|
||||
WEATHER_STORM = new /datum/weather/tyr/storm(),
|
||||
WEATHER_FOG = new /datum/weather/tyr/fog()
|
||||
|
||||
)
|
||||
@@ -123,8 +117,8 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
name = "clear"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 20
|
||||
)
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_FOG = 10)
|
||||
transition_messages = list(
|
||||
"The sky clears up.",
|
||||
"The sky is visible.",
|
||||
@@ -134,51 +128,6 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
observed_message = "The sky is clear."
|
||||
imminent_transition_message = "The sky is rapidly clearing up."
|
||||
|
||||
/datum/weather/tyr/firestart
|
||||
name = "warm winds"
|
||||
icon_state = "ashfall_light"
|
||||
transition_chances = list(
|
||||
WEATHER_FIRESTART = 50,
|
||||
WEATHER_FLAMESTORM = 50)
|
||||
transition_messages = list(
|
||||
"The sky begins to turn orange."
|
||||
)
|
||||
sky_visible = TRUE
|
||||
observed_message = "The sky is orange."
|
||||
imminent_transition_message = "The sky flares orange."
|
||||
|
||||
|
||||
/datum/weather/tyr/flamestorm
|
||||
name = "fire storm"
|
||||
icon_state = "ashfall_light"
|
||||
transition_chances = list(
|
||||
WEATHER_FLAMESTORM = 50,
|
||||
WEATHER_CLEAR = 50)
|
||||
transition_messages = list(
|
||||
"The sky is engulfed by flames."
|
||||
)
|
||||
sky_visible = TRUE
|
||||
observed_message = "The sky is on fire."
|
||||
imminent_transition_message = "The sky is set ablaze."
|
||||
effect_flags = HAS_PLANET_EFFECT | EFFECT_ONLY_HUMANS
|
||||
|
||||
/datum/weather/tyr/flamestorm/planet_effect(mob/living/carbon/H)
|
||||
if(H.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
return
|
||||
|
||||
var/target_zone = pick(BP_ALL)
|
||||
var/amount_blocked = H.run_armor_check(target_zone, "bio")
|
||||
|
||||
var/damage = rand(1,1)
|
||||
|
||||
if(amount_blocked >= 40)
|
||||
return
|
||||
|
||||
H.apply_damage(damage, BURN, target_zone, amount_blocked, used_weapon = "burning ash")
|
||||
if(show_message)
|
||||
to_chat(H, effect_message)
|
||||
|
||||
/datum/weather/tyr/sandstorm
|
||||
name = "sandstorm"
|
||||
@@ -186,7 +135,7 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_HEAVYSANDSTORM = 10)
|
||||
WEATHER_FOG = 10)
|
||||
transition_messages = list(
|
||||
"The sky is engulfed by sand."
|
||||
)
|
||||
@@ -213,128 +162,14 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
if(show_message)
|
||||
to_chat(H, effect_message)
|
||||
|
||||
/datum/weather/tyr/sandstorm_fierce
|
||||
name = "fierce sandstorm"
|
||||
icon_state = "sandstorm"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_HEAVYSANDSTORM = 10)
|
||||
transition_messages = list(
|
||||
"The sky is engulfed by sand."
|
||||
)
|
||||
sky_visible = TRUE
|
||||
observed_message = "The sky is full of sand."
|
||||
light_color = "#996600"
|
||||
light_modifier = 0.5
|
||||
|
||||
imminent_transition_message = "The sky is blocked out by rock."
|
||||
effect_flags = HAS_PLANET_EFFECT | EFFECT_ONLY_HUMANS
|
||||
|
||||
/datum/weather/tyr/sandstorm_fierce/planet_effect(mob/living/carbon/H)
|
||||
if(H.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
return
|
||||
|
||||
var/target_zone = pick(BP_ALL)
|
||||
var/amount_blocked = H.run_armor_check(target_zone, "melee")
|
||||
|
||||
var/damage = rand(5,5)
|
||||
|
||||
if(amount_blocked >= 40)
|
||||
return
|
||||
|
||||
H.apply_damage(damage, BRUTE, target_zone, amount_blocked, used_weapon = "sand")
|
||||
if(show_message)
|
||||
to_chat(H, effect_message)
|
||||
|
||||
//Anomalous/summonable weather
|
||||
/datum/weather/tyr/starrynight
|
||||
name = "unknown"
|
||||
icon_state = "starry_night"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 50,
|
||||
WEATHER_FALLOUT_TEMP = 50)
|
||||
|
||||
imminent_transition_message = "The sky is rapidly begins to glow."
|
||||
effect_flags = HAS_PLANET_EFFECT | EFFECT_ONLY_HUMANS
|
||||
|
||||
/datum/weather/tyr/starrynight/planet_effect(mob/living/carbon/H)
|
||||
if(H.z in holder.our_planet.expected_z_levels)
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T.is_outdoors())
|
||||
return
|
||||
H.add_modifier(/datum/modifier/starrynight_boon, 1 SECONDS, src)
|
||||
|
||||
/datum/weather/tyr/blizzard
|
||||
name = "blizzard"
|
||||
icon_state = "snowfall_heavy_old"
|
||||
temp_high = 153.15
|
||||
temp_low = 130.15
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 50,
|
||||
WEATHER_BLIZZARD = 50)
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/storm
|
||||
indoor_sounds_type = /datum/looping_sound/weather/storm/indoors
|
||||
|
||||
imminent_transition_message = "The sky is overtaken by snow."
|
||||
|
||||
/datum/weather/tyr/storm
|
||||
icon_state = "fallout"
|
||||
light_modifier = 0.7
|
||||
light_color = "#CCFFCC"
|
||||
temp_high = 233.15
|
||||
temp_low = 200.15
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 50,
|
||||
WEATHER_STORM = 50)
|
||||
imminent_transition_message = "Sky and clouds are growing sickly green... Radiation storm is approaching, get to cover!"
|
||||
outdoor_sounds_type = /datum/looping_sound/weather/wind
|
||||
indoor_sounds_type = /datum/looping_sound/weather/wind/indoors
|
||||
|
||||
imminent_transition_message = "The sky is overtaken by green clouds."
|
||||
|
||||
// How much radiation a mob gets while on an outside tile.
|
||||
var/direct_rad_low = RAD_LEVEL_LOW
|
||||
var/direct_rad_high = RAD_LEVEL_MODERATE
|
||||
|
||||
// How much radiation is bursted onto a random tile near a mob.
|
||||
var/fallout_rad_low = RAD_LEVEL_HIGH
|
||||
var/fallout_rad_high = RAD_LEVEL_VERY_HIGH
|
||||
effect_flags = HAS_PLANET_EFFECT | EFFECT_ONLY_LIVING
|
||||
|
||||
/datum/weather/tyr/storm/planet_effect(mob/living/L)
|
||||
if(L.z in holder.our_planet.expected_z_levels)
|
||||
irradiate_nearby_turf(L)
|
||||
var/turf/T = get_turf(L)
|
||||
if(!T.is_outdoors())
|
||||
return // They're indoors, so no need to irradiate them with fallout.
|
||||
|
||||
L.rad_act(rand(direct_rad_low, direct_rad_high))
|
||||
|
||||
// This makes random tiles near people radioactive for awhile.
|
||||
// Tiles far away from people are left alone, for performance.
|
||||
/datum/weather/tyr/storm/proc/irradiate_nearby_turf(mob/living/L)
|
||||
if(!istype(L))
|
||||
return
|
||||
var/list/turfs = RANGE_TURFS(world.view, L)
|
||||
var/turf/T = pick(turfs) // We get one try per tick.
|
||||
if(!istype(T))
|
||||
return
|
||||
if(T.is_outdoors())
|
||||
SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high))
|
||||
|
||||
|
||||
|
||||
/datum/weather/tyr/fog
|
||||
light_modifier = 0.5
|
||||
light_color = "#FF0000"
|
||||
temp_high = 183.15
|
||||
temp_low = 160.15
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 50,
|
||||
WEATHER_FOG = 50)
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_FOG = 10)
|
||||
|
||||
imminent_transition_message = "Fog emerges from nowhere."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user