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

View File

@@ -577,11 +577,11 @@
user.show_message(SPAN_WARNING("You feel rather silly, trying to commit suicide with a toy."))
mouthshoot = FALSE
return
else if(in_chamber.damage_type == PAIN)
user.apply_damage(in_chamber.damage * 2, PAIN, BP_HEAD)
else if(in_chamber.damage_type == DAMAGE_PAIN)
user.apply_damage(in_chamber.damage * 2, DAMAGE_PAIN, BP_HEAD)
else
log_and_message_admins("[key_name(user)] commited suicide using \a [src].")
user.apply_damage(in_chamber.damage * 20, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", damage_flags = DAM_SHARP)
user.apply_damage(in_chamber.damage * 20, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", damage_flags = DAMAGE_FLAG_SHARP)
user.death()
handle_post_fire(user, user, FALSE, FALSE, FALSE)

View File

@@ -98,7 +98,7 @@
icon = 'icons/obj/machinery/particle_accelerator2.dmi'
icon_state = "particle"
damage = 60
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
check_armor = "bullet"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE

View File

@@ -70,7 +70,7 @@
name = "plasma arc"
icon_state = "omnilaser"
damage = 20
damage_type = BURN
damage_type = DAMAGE_BURN
check_armor = "laser"
range = 5
pass_flags = PASSTABLE|PASSRAILING

View File

@@ -71,7 +71,7 @@
to_chat(M, "<span class='warning'>Your gun feels pleasantly warm for a moment.</span>")
else
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
M.apply_effect(rand(3,120), IRRADIATE)
SSradiation.radiate(src, rand(3, 50))
return
/obj/item/gun/energy/gun/nuclear/medium_fail(var/mob/user)
@@ -85,7 +85,7 @@
to_chat(user, "<span class='danger'>Your gun's reactor overloads!</span>")
for (var/mob/living/M in range(rand(1,4),src))
to_chat(M, "<span class='warning'>You feel a wave of heat wash over you.</span>")
M.apply_effect(300, IRRADIATE)
SSradiation.radiate(src, rand(3, 80))
crit_fail = 1 //break the gun so it stops recharging
self_recharge = FALSE
update_icon()

View File

@@ -48,20 +48,20 @@
for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
if (M != user)
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
M.apply_effect(rand(1,10)*(prototype.criticality+1), IRRADIATE)
M.apply_effect(rand(1,10)*(prototype.criticality+1), DAMAGE_RADIATION)
return
/obj/item/laser_components/capacitor/nuclear/medium_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)
for (var/mob/living/M in range(round((prototype.criticality+1)),src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
if (M != user)
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
M.apply_effect(rand(1,40)*(prototype.criticality+1), IRRADIATE)
M.apply_effect(rand(1,40)*(prototype.criticality+1), DAMAGE_RADIATION)
return
/obj/item/laser_components/capacitor/nuclear/critical_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)
for (var/mob/living/M in range(rand(2,6)*(prototype.criticality+1),src))
to_chat(M, "<span class='warning'>You feel a wave of heat wash over you.</span>")
M.apply_effect(300*(prototype.criticality+1), IRRADIATE)
M.apply_effect(300*(prototype.criticality+1), DAMAGE_RADIATION)
..()
/obj/item/laser_components/capacitor/teranium
@@ -97,7 +97,7 @@
for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
if (M != user)
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
M.apply_effect(rand(1,10)*(prototype.criticality+1), IRRADIATE)
M.apply_effect(rand(1,10)*(prototype.criticality+1), DAMAGE_RADIATION)
return
/obj/item/laser_components/capacitor/phoron/medium_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)

View File

@@ -28,8 +28,8 @@
//Effects
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, PAIN are the only things that should be in here
var/damage_flags = DAM_BULLET
var/damage_type = DAMAGE_BRUTE //DAMAGE_BRUTE, DAMAGE_BURN, DAMAGE_TOXIN, DAMAGE_OXY, DAMAGE_CLONE, DAMAGE_PAIN are the only things that should be in here
var/damage_flags = DAMAGE_FLAG_BULLET
var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
var/check_armor = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
var/list/impact_sounds //for different categories, IMPACT_MEAT etc
@@ -114,7 +114,7 @@
if(isanimal(target))
return FALSE
var/mob/living/L = target
if(damage_type == BRUTE && damage > 5) //weak hits shouldn't make you gush blood
if(damage_type == DAMAGE_BRUTE && damage > 5) //weak hits shouldn't make you gush blood
var/splatter_color = "#A10808"
var/mob/living/carbon/human/H = target
if (istype(H) && H.species && H.species.blood_color)
@@ -126,7 +126,7 @@
L.apply_effects(0, weaken, paralyze, 0, stutter, eyeblur, drowsy, 0, incinerate, blocked)
L.stun_effect_act(stun, agony, def_zone, src, damage_flags)
L.apply_damage(irradiate, IRRADIATE, damage_flags = DAM_DISPERSED) //radiation protection is handled separately from other armor types.
L.apply_damage(irradiate, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED) //radiation protection is handled separately from other armor types.
return 1
//called when the projectile stops flying because it collided with something
@@ -136,7 +136,7 @@
//Checks if the projectile is eligible for embedding. Not that it necessarily will.
/obj/item/projectile/proc/can_embed()
//embed must be enabled and damage type must be brute
if(!embed || damage_type != BRUTE)
if(!embed || damage_type != DAMAGE_BRUTE)
return FALSE
return TRUE
@@ -151,7 +151,7 @@
return SP
/obj/item/projectile/proc/get_structure_damage()
if(damage_type == BRUTE || damage_type == BURN)
if(damage_type == DAMAGE_BRUTE || damage_type == DAMAGE_BURN)
return damage * anti_materiel_potential
return FALSE

View File

@@ -2,7 +2,7 @@
name = "bolt of animation"
icon_state = "ice_1"
damage = 0
damage_type = BURN
damage_type = DAMAGE_BURN
nodamage = 1
check_armor = "energy"

View File

@@ -4,11 +4,11 @@
ping_effect = "ping_s"
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
damage = 30
damage_type = BURN
damage_type = DAMAGE_BURN
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_LASER_MEAT, BULLET_IMPACT_METAL = SOUNDS_LASER_METAL)
check_armor = "laser"
eyeblur = 4
damage_flags = DAM_LASER
damage_flags = DAMAGE_FLAG_LASER
var/frequency = 1
hitscan = 1
invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine
@@ -20,7 +20,7 @@
/obj/item/projectile/beam/practice
name = "laser"
damage = 5
damage_type = PAIN
damage_type = DAMAGE_PAIN
eyeblur = 0
/obj/item/projectile/beam/pistol
@@ -143,7 +143,7 @@
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
damage = 0
no_attack_log = 1
damage_type = BURN
damage_type = DAMAGE_BURN
check_armor = "laser"
var/laser_tag_color = "red"
@@ -198,7 +198,7 @@
sharp = FALSE
eyeblur = 1
agony = 45
damage_type = BURN
damage_type = DAMAGE_BURN
muzzle_type = /obj/effect/projectile/muzzle/stun
tracer_type = /obj/effect/projectile/tracer/stun
@@ -219,7 +219,7 @@
name = "electrical arc"
icon_state = "stun"
damage = 1
damage_type = BURN
damage_type = DAMAGE_BURN
muzzle_type = /obj/effect/projectile/muzzle/stun
tracer_type = /obj/effect/projectile/tracer/stun
@@ -268,7 +268,7 @@
name = "diffuse electrical arc"
nodamage = FALSE
damage_type = BURN
damage_type = DAMAGE_BURN
damage = 15
agony = 30
@@ -414,7 +414,7 @@
name = "energy net projection"
icon_state = "xray"
nodamage = 1
damage_type = PAIN
damage_type = DAMAGE_PAIN
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
@@ -447,7 +447,7 @@
name = "tesla bolt"
icon_state = "lightning"
damage = 10
damage_type = BURN
damage_type = DAMAGE_BURN
pass_flags = PASSTABLE | PASSGRILLE | PASSRAILING
range = 40
eyeblur = 0
@@ -475,7 +475,7 @@
icon_state = "bluelaser"
pass_flags = PASSTABLE | PASSRAILING
damage = 15
damage_type = BURN
damage_type = DAMAGE_BURN
check_armor = "energy"
muzzle_type = /obj/effect/projectile/muzzle/laser/blue

View File

@@ -2,7 +2,7 @@
name = "bullet"
icon_state = "bullet"
damage = 60
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
nodamage = FALSE
check_armor = "bullet"
@@ -277,7 +277,7 @@
weaken = 0
drowsy = 0
eyeblur = 0
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
speed = 0.3
/obj/item/projectile/bullet/rifle/tranq/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
@@ -301,7 +301,7 @@
if(isanimal(target))
target.visible_message("<b>[target]</b> twitches, foaming at the mouth.")
L.apply_damage(35, TOX) //temporary until simple_animal paralysis actually works.
L.apply_damage(35, DAMAGE_TOXIN) //temporary until simple_animal paralysis actually works.
..()
/* Miscellaneous */
@@ -328,7 +328,7 @@
/obj/item/projectile/bullet/pistol/cap
name = "cap"
damage_type = PAIN
damage_type = DAMAGE_PAIN
damage = 0
nodamage = 1
embed = 0
@@ -343,7 +343,7 @@
icon = 'icons/obj/terminator.dmi'
icon_state = "flechette_bullet"
damage = 40
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
check_armor = "bullet"
embed = 1
sharp = 1
@@ -414,7 +414,7 @@
var/turf/T = get_turf(mob)
if(T && (loc.z == T.z))
if(ishuman(mob))
mob.apply_damage(250, IRRADIATE, damage_flags = DAM_DISPERSED)
mob.apply_damage(250, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
new /obj/effect/temp_visual/nuke(A.loc)
explosion(A,2,5,9)
..()

View File

@@ -2,7 +2,7 @@
name = "bolt of change"
icon_state = "ice_1"
damage = 0
damage_type = BURN
damage_type = DAMAGE_BURN
nodamage = 1
check_armor = "energy"

View File

@@ -2,7 +2,7 @@
name = "energy"
icon_state = "spark"
damage = 0
damage_type = BURN
damage_type = DAMAGE_BURN
check_armor = "energy"
//releases a burst of light on impact or after travelling a distance
@@ -47,7 +47,7 @@
name = "electrode"
icon_state = "spark"
damage = 2 //Flavor.
damage_type = BURN
damage_type = DAMAGE_BURN
agony = 40
eyeblur = 1
//Damage will be handled on the MOB side, to prevent window shattering.
@@ -61,35 +61,35 @@
name = "decloner beam"
icon_state = "declone"
damage = 20
damage_type = CLONE
damage_type = DAMAGE_CLONE
irradiate = 40
/obj/item/projectile/energy/dart
name = "dart"
icon_state = "toxin"
damage = 5
damage_type = TOX
damage_type = DAMAGE_TOXIN
weaken = 5
/obj/item/projectile/energy/bolt
name = "bolt"
icon_state = "cbbolt"
damage = 1
damage_type = BURN
damage_type = DAMAGE_BURN
agony = 45
stutter = 10
/obj/item/projectile/energy/bolt/large
name = "largebolt"
damage = 2
damage_type = BURN
damage_type = DAMAGE_BURN
agony = 60
/obj/item/projectile/energy/neurotoxin
name = "neuro"
icon_state = "neurotoxin"
damage = 5
damage_type = TOX
damage_type = DAMAGE_TOXIN
weaken = 5
/obj/item/projectile/energy/phoron
@@ -103,7 +103,7 @@
icon_state = "bfg"
check_armor = "bomb"
damage = 60
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
range = 100
embed = 0
@@ -131,7 +131,7 @@
if(M.stat == DEAD)
M.gib()
else
M.apply_damage(60, BRUTE, BP_HEAD)
M.apply_damage(60, DAMAGE_BRUTE, BP_HEAD)
playsound(src, 'sound/magic/LightningShock.ogg', 75, 1)
else if(isturf(a) || isobj(a))
var/atom/A = a
@@ -145,7 +145,7 @@
icon = 'icons/obj/projectiles.dmi'
icon_state = "bluespace"
damage = 0
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
pass_flags = PASSTABLE | PASSGRILLE | PASSRAILING
range = 10
embed = 0
@@ -172,8 +172,8 @@
icon_state = "heavybolt"
damage = 30
check_armor = "laser"
damage_type = BURN
damage_flags = DAM_LASER
damage_type = DAMAGE_BURN
damage_flags = DAMAGE_FLAG_LASER
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
muzzle_type = /obj/effect/projectile/muzzle/bolt
hit_effect = /obj/effect/temp_visual/blaster_effect
@@ -184,7 +184,7 @@
/obj/item/projectile/energy/blaster/disruptor/practice
damage = 5
damage_type = PAIN
damage_type = DAMAGE_PAIN
eyeblur = 0
/obj/item/projectile/energy/disruptorstun
@@ -193,14 +193,14 @@
damage = 1
agony = 40
speed = 0.4
damage_type = BURN
damage_type = DAMAGE_BURN
eyeblur = TRUE
pass_flags = PASSTABLE | PASSRAILING
muzzle_type = /obj/effect/projectile/muzzle/bolt
/obj/item/projectile/energy/disruptorstun/practice
damage = 5
damage_type = PAIN
damage_type = DAMAGE_PAIN
eyeblur = 0
/obj/item/projectile/energy/blaster/heavy

View File

@@ -2,7 +2,7 @@
name = "ion bolt"
icon_state = "ion"
damage = 0
damage_type = BURN
damage_type = DAMAGE_BURN
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_ION_ANY, BULLET_IMPACT_METAL = SOUNDS_ION_ANY)
check_armor = "energy"
var/pulse_range = 1
@@ -90,7 +90,7 @@
name = "freeze beam"
icon_state = "ice_2"
damage = 0
damage_type = BURN
damage_type = DAMAGE_BURN
nodamage = 1
check_armor = "energy"
//var/temperature = 300
@@ -107,7 +107,7 @@
icon = 'icons/obj/meteor.dmi'
icon_state = "small1"
damage = 0
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
nodamage = 1
check_armor = "bullet"
@@ -136,7 +136,7 @@
name = "alpha somatoray"
icon_state = "energy"
damage = 0
damage_type = TOX
damage_type = DAMAGE_TOXIN
nodamage = 1
check_armor = "energy"
@@ -144,7 +144,7 @@
name = "gamma somatoray"
icon_state = "energy2"
damage = 0
damage_type = TOX
damage_type = DAMAGE_TOXIN
nodamage = TRUE
var/singleton/plantgene/gene = null
@@ -154,7 +154,7 @@
var/mob/living/carbon/human/H = M
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
if(prob(15))
H.apply_damage(rand(30,80), IRRADIATE, damage_flags = DAM_DISPERSED)
H.apply_damage(rand(30,80), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
M.Weaken(5)
for (var/mob/V in viewers(src))
V.show_message("<span class='warning'>[M] writhes in pain as [M.get_pronoun("his")] vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
@@ -177,7 +177,7 @@
name = "beta somatoray"
icon_state = "energy2"
damage = 0
damage_type = TOX
damage_type = DAMAGE_TOXIN
nodamage = 1
check_armor = "energy"
@@ -220,7 +220,7 @@
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
embed = 0 // nope
nodamage = 1
damage_type = PAIN
damage_type = DAMAGE_PAIN
muzzle_type = /obj/effect/projectile/muzzle/bullet
/obj/item/projectile/bullet/cannon
@@ -244,13 +244,13 @@
damage = 0
check_armor = "energy"
embed = 0
damage_type = PAIN
damage_type = DAMAGE_PAIN
/obj/item/projectile/magic/fireball
name = "fireball"
icon_state = "fireball"
damage = 20
damage_type = BURN
damage_type = DAMAGE_BURN
/obj/item/projectile/magic/fireball/on_impact(var/atom/A)
explosion(A, 0, 0, 4)
@@ -277,8 +277,8 @@
name = "plasma slug"
icon_state = "plasma_bolt"
damage = 20
damage_type = BRUTE
damage_flags = DAM_LASER
damage_type = DAMAGE_BRUTE
damage_flags = DAMAGE_FLAG_LASER
check_armor = "energy"
incinerate = 10
armor_penetration = 60
@@ -308,14 +308,14 @@
name ="ice bolt"
icon_state= "icer_bolt"
damage = 15
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
check_armor = "energy"
/obj/item/projectile/bonedart
name = "bone dart"
icon_state = "bonedart"
damage = 35
damage_type = BRUTE
damage_type = DAMAGE_BRUTE
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
nodamage = FALSE
check_armor = "melee"