Ports the radiation subsystem and cleans up damage flags. (#15715)

This commit is contained in:
Matt Atlas
2023-02-07 13:22:47 +01:00
committed by GitHub
parent 5527fc0810
commit 31c73ead85
198 changed files with 981 additions and 649 deletions
@@ -206,12 +206,12 @@
rng = rand(0,8)
switch(rng)
if(0)
apply_damage(instability * 0.3, PAIN)
apply_damage(instability * 0.3, DAMAGE_PAIN)
if(1)
return
if(2)
if(can_feel_pain())
apply_damage(instability * 0.3, PAIN)
apply_damage(instability * 0.3, DAMAGE_PAIN)
to_chat(src, "<span class='danger'>You feel a sharp pain!</span>")
if(3)
apply_effect(instability * 0.3, EYE_BLUR)
@@ -234,12 +234,12 @@
rng = rand(0,8)
switch(rng)
if(0)
apply_damage(instability * 0.2, IRRADIATE)
apply_damage(instability * 0.2, DAMAGE_RADIATION)
if(1)
return
if(2)
if(can_feel_pain())
apply_damage(instability * 0.7, PAIN)
apply_damage(instability * 0.7, DAMAGE_PAIN)
to_chat(src, "<span class='danger'>You feel an extremely angonizing pain from all over your body!</span>")
if(3)
apply_effect(instability * 0.5, EYE_BLUR)
@@ -257,14 +257,14 @@
rng = rand(0,7)
switch(rng)
if(0)
apply_effect(instability, IRRADIATE)
apply_damage(instability, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
if(1)
visible_message("<span class='warning'>\The [src] suddenly collapses!</span>",
"<span class='danger'>You suddenly feel very light-headed, and faint!</span>")
Paralyse(instability * 0.1)
if(2)
if(can_feel_pain())
apply_damage(instability, PAIN)
apply_damage(instability, DAMAGE_PAIN)
to_chat(src, "<span class='danger'>You feel an extremely angonizing pain from all over your body!</span>")
if(3)
apply_effect(instability, EYE_BLUR)
@@ -295,7 +295,7 @@
// This should only be used for EXTERNAL sources of instability, such as from someone or something glowing.
/mob/living/proc/receive_radiated_instability(amount)
// Energy armor like from the AMI RIG can protect from this.
var/armor_ratio = get_blocked_ratio(BP_CHEST, BURN, damage = 40)
var/armor_ratio = get_blocked_ratio(BP_CHEST, DAMAGE_BURN, damage = 40)
amount = amount * armor_ratio
if(amount && prob(10))
if(isSynthetic())
@@ -30,7 +30,7 @@
var/damage_to_inflict = max(L.health / L.getMaxHealth(), 0) // Otherwise, those in crit would actually be healed.
var/armor_factor = L.modify_damage_by_armor(BP_CHEST, 30, BURN, armor_pen = 40)
var/armor_factor = L.modify_damage_by_armor(BP_CHEST, 30, DAMAGE_BURN, armor_pen = 40)
damage_to_inflict = damage_to_inflict * armor_factor
if(L.isSynthetic())
@@ -25,4 +25,4 @@
icon_state = "plasma_bolt"
damage = 25
armor_penetration = 15
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
@@ -26,7 +26,7 @@
icon_state = "lightning"
damage = 25
armor_penetration = 25
damage_type = BURN
damage_type = DAMAGE_BURN
muzzle_type = /obj/effect/projectile/muzzle/tesla
tracer_type = /obj/effect/projectile/tracer/tesla
@@ -25,7 +25,7 @@
/obj/item/projectile/overload
name = "overloaded bolt"
icon_state = "bluespace"
damage_type = BURN
damage_type = DAMAGE_BURN
armor_penetration = 100
/obj/item/spell/projectile/overload/make_projectile(obj/item/projectile/projectile_type, mob/living/user)
@@ -51,5 +51,5 @@
continue
var/radius = max(get_dist(L, src), 1)
var/rads = (adjusted_power / 10) * ( 1 / (radius**2) )
L.apply_effect(rads, IRRADIATE)
L.apply_damage(rads, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
adjust_instability(2)