Skip to content

Commit

Permalink
regexes damage to damage_force on projectiles (#6734)
Browse files Browse the repository at this point in the history
for clarity and standardization purposes; it's this way on /item
  • Loading branch information
silicons committed Sep 8, 2024
1 parent 5e57d4e commit faa9eab
Show file tree
Hide file tree
Showing 75 changed files with 300 additions and 300 deletions.
2 changes: 1 addition & 1 deletion code/datums/components/mobs/parry_frame.dm
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@
. = shieldcall_returns
// todo: doesn't take into account any damage randomization
var/obj/projectile/proj = bullet_act_args[BULLET_ACT_ARG_PROJECTILE]
var/estimated_severity = clamp(proj.damage / 20 * 75, 0, 100)
var/estimated_severity = clamp(proj.damage_force / 20 * 75, 0, 100)
bullet_act_args[BULLET_ACT_ARG_EFFICIENCY] = bullet_act_args[BULLET_ACT_ARG_EFFICIENCY] * clamp(1 - efficiency, 0, 1)
. = perform_aftereffects(defending, ATTACK_TYPE_PROJECTILE, efficiency, proj, .)
perform_audiovisuals(defending, ATTACK_TYPE_PROJECTILE, efficiency, proj, ., estimated_severity, proj, tool_text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
name = "pulse"
icon_state = "u_laser"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
damage = 60
damage_force = 60
damage_tier = LASER_TIER_EXTREME
armor_penetration = 75
light_color = "#0066FF"
Expand All @@ -113,5 +113,5 @@
impact_type = /obj/effect/projectile/impact/laser_pulse

/obj/projectile/beam/pulse/shotgun
damage = 50
damage_force = 50
armor_penetration = 25
2 changes: 1 addition & 1 deletion code/game/content/factions/orion/iwl/guns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@
// projectile_type = /obj/projectile/bullet/rifle/s72

// /obj/projectile/bullet/rifle/s72
// damage = 35
// damage_force = 35
2 changes: 1 addition & 1 deletion code/game/gamemodes/cult/construct_spells.dm
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@
name = "inversion beam"
icon_state = "invert"
fire_sound = 'sound/weapons/spiderlunge.ogg'
damage = 15
damage_force = 15
damage_type = BURN
damage_flag = ARMOR_LASER
armor_penetration = 60
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/technomancer/devices/shield_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
if(P.agony)
var/agony_blocked = P.agony * (modified_block_percentage / 100)
P.agony -= agony_blocked
P.damage = P.damage - damage_blocked
P.damage_force = P.damage_force - damage_blocked

user.visible_message("<span class='danger'>\The [user]'s [src] absorbs the attack!</span>")
to_chat(user, "<span class='warning'>Your shield has absorbed most of \the [damage_source].</span>")
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/technomancer/spells/projectile/beam.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
fire_sound = 'sound/weapons/Laser.ogg'

/obj/projectile/beam/blue
damage = 30
damage_force = 30

muzzle_type = /obj/effect/projectile/muzzle/laser_blue
tracer_type = /obj/effect/projectile/tracer/laser_blue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@
/obj/projectile/force_missile
name = "force missile"
icon_state = "force_missile"
damage = 25
damage_force = 25
damage_type = BRUTE
damage_flag = ARMOR_MELEE
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@
var/obj/projectile/overload/P = new projectile_type(get_turf(user))
var/energy_before_firing = core.energy
if(check_for_scepter())
P.damage = round(energy_before_firing * 0.004) // .4% of their current energy pool.
P.damage_force = round(energy_before_firing * 0.004) // .4% of their current energy pool.
else
P.damage = round(energy_before_firing * 0.003) // .3% of their current energy pool.
P.damage = min(calculate_spell_power(P.damage), 80)
P.damage_force = round(energy_before_firing * 0.003) // .3% of their current energy pool.
P.damage_force = min(calculate_spell_power(P.damage_force), 80)
return P

/obj/item/spell/projectile/overload/on_ranged_cast(atom/hit_atom, mob/living/user)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

/obj/item/spell/projectile/proc/make_projectile(obj/projectile/projectile_type, mob/living/user)
var/obj/projectile/P = new projectile_type(get_turf(user))
P.damage = calculate_spell_power(P.damage)
P.damage_force = calculate_spell_power(P.damage_force)
return P

/obj/item/spell/projectile/proc/set_up(atom/hit_atom, mob/living/user)
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/technomancer/spells/reflect.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
P.legacy_redirect(P.starting.x, P.starting.y, curloc, user)
P.reflected = 1
if(check_for_scepter())
P.damage = P.damage * 1.5
P.damage_force = P.damage_force * 1.5

spark_system.start()
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/shield/types/transforming/energy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@
if(istype(weapon, /obj/projectile))
var/obj/projectile/casted_projectile = weapon
if(legacy_projectile_damage_drop)
if((is_sharp(casted_projectile) && casted_projectile.damage > 10) || (casted_projectile.projectile_type & PROJECTILE_TYPE_BEAM))
if(prob(casted_projectile.damage / legacy_projectile_damage_drop_divisor))
if((is_sharp(casted_projectile) && casted_projectile.damage_force > 10) || (casted_projectile.projectile_type & PROJECTILE_TYPE_BEAM))
if(prob(casted_projectile.damage_force / legacy_projectile_damage_drop_divisor))
return // drop the shield
. = ..()
if(!.)
Expand Down
10 changes: 5 additions & 5 deletions code/game/objects/items/shooting_range.dm
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@

if( virtualIcon.GetPixel(p_x, p_y) ) // if the located pixel isn't blank (null)

hp -= proj.damage
hp -= proj.damage_force
if(hp <= 0)
for(var/mob/O in oviewers())
if ((O.client && !( O.has_status_effect(/datum/status_effect/sight/blindness) )))
Expand All @@ -111,7 +111,7 @@
bmark.pixel_x--
bmark.pixel_y--

if(proj.damage >= 20 || istype(proj, /obj/projectile/beam/practice))
if(proj.damage_force >= 20 || istype(proj, /obj/projectile/beam/practice))
bmark.icon_state = "scorch"
bmark.setDir(pick(NORTH,SOUTH,EAST,WEST)) // random scorch design

Expand All @@ -123,12 +123,12 @@
// Bullets are hard. They make dents!
bmark.icon_state = "dent"

if(proj.damage >= 10 && bulletholes.len <= 35) // maximum of 35 bullet holes
if(proj.damage_force >= 10 && bulletholes.len <= 35) // maximum of 35 bullet holes
if(decaltype == 2) // bullet
if(prob(proj.damage+30)) // bullets make holes more commonly!
if(prob(proj.damage_force+30)) // bullets make holes more commonly!
new/datum/bullethole(src, bmark.pixel_x, bmark.pixel_y) // create new bullet hole
else // Lasers!
if(prob(proj.damage-10)) // lasers make holes less commonly
if(prob(proj.damage_force-10)) // lasers make holes less commonly
new/datum/bullethole(src, bmark.pixel_x, bmark.pixel_y) // create new bullet hole

// draw bullet holes
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/crates_lockers/crates.dm
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@
if(!(proj.damage_type == BRUTE || proj.damage_type == BURN))
return ..()

if(locked && tamper_proof && integrity <= proj.damage)
if(locked && tamper_proof && integrity <= proj.damage_force)
if(tamper_proof == 2) // Mainly used for events to prevent any chance of opening the box improperly.
visible_message("<font color='red'><b>The anti-tamper mechanism of [src] triggers an explosion!</b></font>")
var/turf/T = get_turf(src.loc)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/props/projectile_lock.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
if(timing)
return PROJECTILE_IMPACT_DELETE

if(istype(proj, /obj/projectile/beam/heavylaser/cannon) || istype(proj, /obj/projectile/beam/emitter) || (proj.damage >= 80 && proj.damtype == BURN))
if(istype(proj, /obj/projectile/beam/heavylaser/cannon) || istype(proj, /obj/projectile/beam/emitter) || (proj.damage_force >= 80 && proj.damtype == BURN))
toggle_lock()
visible_message("<span class='notice'>\The [src] [enabled ? "disengages" : "engages"] its locking mechanism.</span>")

Expand Down
4 changes: 2 additions & 2 deletions code/game/turfs/simulated/wall/wall-defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@
return ..()

//! legacy code handling
if((proj.projectile_type & (PROJECTILE_TYPE_ENERGY | PROJECTILE_TYPE_BEAM)) && !proj.nodamage && proj.damage)
if((proj.projectile_type & (PROJECTILE_TYPE_ENERGY | PROJECTILE_TYPE_BEAM)) && !proj.nodamage && proj.damage_force)
burn(2500)
if(proj.damage_type == BURN && proj.damage && !proj.nodamage)
if(proj.damage_type == BURN && proj.damage_force && !proj.nodamage)
if(thermite)
thermitemelt()
if(proj.ricochet_sounds && prob(15))
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/verbs/debug.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
else
to_chat(user, "<span class='warning'>DPS calculation by this verb is not supported for \the [G]'s type. Energy or Ballistic only, sorry.</span>")

weapon_damage = P.damage
weapon_damage = P.damage_force
weapon_attack_speed = G.fire_delay / 10
qdel(P)

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mining/kinetic_crusher.dm
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@
name = "destabilizing force"
icon_state = "pulse1"
nodamage = TRUE
damage = 0 //We're just here to mark people. This is still a melee weapon.
damage_force = 0 //We're just here to mark people. This is still a melee weapon.
damage_type = BRUTE
damage_flag = ARMOR_BOMB
range = WORLD_ICON_SIZE * 6
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/carbon/human/human-defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
var/obj/item/organ/external/organ = get_organ()

if(!proj.nodamage)
organ.add_autopsy_data("[proj.name]", proj.damage)
organ.add_autopsy_data("[proj.name]", proj.damage_force)

//Shrapnel
if(proj.can_embed())
var/armor = getarmor_organ(organ, "bullet")
if(!prob(armor/2)) //Even if the armor doesn't stop the bullet from hurting you, it might stop it from embedding.
var/hit_embed_chance = proj.embed_chance + (proj.damage - armor) //More damage equals more chance to embed
var/hit_embed_chance = proj.embed_chance + (proj.damage_force - armor) //More damage equals more chance to embed
if(prob(max(hit_embed_chance, 0)))
var/obj/item/material/shard/shrapnel/SP = new()
SP.name = (proj.name != "shrapnel")? "[proj.name] shrapnel" : "shrapnel"
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/silicon/robot/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,7 @@
if(. & PROJECTILE_IMPACT_FLAGS_UNCONDITIONAL_ABORT)
return
// todo: why is this in bullet act and not where we take damage maybe?
if(prob(75) && proj.damage > 0)
if(prob(75) && proj.damage_force > 0)
spark_system.start()

/mob/living/silicon/robot/attackby(obj/item/W as obj, mob/user as mob)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/mob/living/simple_animal/aliens/drone.dm
Original file line number Diff line number Diff line change
Expand Up @@ -281,10 +281,10 @@
..()

/obj/projectile/beam/drone
damage = 15
damage_force = 15

/obj/projectile/beam/pulse/drone
damage = 10
damage_force = 10

// A slightly easier drone, for POIs.
// Difference is that it should not be faster than you.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
return TRUE

/obj/projectile/beam/drone
damage = 10
damage_force = 10

/obj/item/shield_projector/rectangle/automatic/drone
shield_health = 150
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@
/obj/projectile/arc/blue_energy
name = "energy missle"
icon_state = "force_missile"
damage = 12
damage_force = 12
damage_type = BURN

//Direct Ranged Mob
Expand Down Expand Up @@ -389,11 +389,11 @@

//These are the projectiles mobs use
/obj/projectile/beam/drone
damage = 3
damage_force = 3
/obj/projectile/arc/blue_energy
name = "energy missle"
icon_state = "force_missile"
damage = 12
damage_force = 12
damage_type = BURN

//Boss Mob - The High Priest
Expand Down Expand Up @@ -430,7 +430,7 @@
/obj/projectile/arc/blue_energy/priest
name = "nanite cloud"
icon_state = "particle-heavy"
damage = 15
damage_force = 15
damage_type = BRUTE

/obj/projectile/arc/blue_energy/priest/on_impact(atom/target, impact_flags, def_zone, efficiency)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@

// The hivebot's default projectile.
/obj/projectile/bullet/hivebot
damage = 10
damage_force = 10
damage_type = BRUTE
sharp = FALSE
edge = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
icon_state = "explosion_particle"
modifier_type_to_apply = /datum/modifier/fire
modifier_duration = 6 SECONDS // About 15 damage per stack, as Life() ticks every two seconds.
damage = 0
damage_force = 0
nodamage = TRUE


Expand Down Expand Up @@ -125,7 +125,7 @@
/obj/projectile/arc/blue_energy
name = "energy missile"
icon_state = "force_missile"
damage = 15 // A bit stronger since arcing projectiles are much easier to avoid than traditional ones.
damage_force = 15 // A bit stronger since arcing projectiles are much easier to avoid than traditional ones.
damage_type = BURN

// Very long ranged hivebot that rains down hell.
Expand Down Expand Up @@ -249,7 +249,7 @@


/obj/projectile/beam/smalllaser/hivebot
damage = 25
damage_force = 25
agony = 20
muzzle_type = /obj/effect/projectile/muzzle/lightning
tracer_type = /obj/effect/projectile/tracer/lightning
Expand All @@ -273,5 +273,5 @@


/obj/projectile/beam/cyan/hivebot
damage = 45
damage_force = 45
armor_penetration = 15
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
/obj/projectile/energy/homing_bolt
name = "homing bolt"
icon_state = "force_missile"
damage = 20
damage_force = 20
damage_type = BURN
damage_flag = ARMOR_LASER
speed = 5 * WORLD_ICON_SIZE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
/obj/projectile/fake_syringe
name = "syringe"
icon_state = "syringe"
damage = 5 // Getting hit with a launched syringe probably hurts, and makes it at least slightly relevant against synthetics.
damage_force = 5 // Getting hit with a launched syringe probably hurts, and makes it at least slightly relevant against synthetics.
var/piercing = FALSE // If true, ignores thick material.

/obj/projectile/fake_syringe/on_impact(atom/target, impact_flags, def_zone, efficiency)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@
AddComponent(/datum/component/horror_aura/strong)

/mob/living/simple_mob/construct/juggernaut/on_bullet_act(obj/projectile/proj, impact_flags, list/bullet_act_args)
var/reflectchance = 80 - round(proj.damage/3)
var/reflectchance = 80 - round(proj.damage_force/3)
if(prob(reflectchance) && !istype(src, /mob/living/simple_mob/construct/juggernaut/behemoth))
var/damage_mod = rand(2,4)
var/projectile_dam_type = proj.damage_type
var/incoming_damage = (round(proj.damage / damage_mod) - (round((proj.damage / damage_mod) * 0.3)))
var/incoming_damage = (round(proj.damage_force / damage_mod) - (round((proj.damage_force / damage_mod) * 0.3)))
var/armorcheck = run_armor_check(null, proj.damage_flag)
var/soakedcheck = get_armor_soak(null, proj.damage_flag)
if(!(istype(proj, /obj/projectile/energy) || istype(proj, /obj/projectile/beam)))
Expand All @@ -84,7 +84,7 @@
visible_message("<span class='danger'>The [proj.name] gets reflected by [src]'s shell!</span>", \
"<span class='userdanger'>The [proj.name] gets reflected by [src]'s shell!</span>")
damage_mod = rand(3,5)
incoming_damage = (round(proj.damage / damage_mod) - (round((proj.damage / damage_mod) * 0.3)))
incoming_damage = (round(proj.damage_force / damage_mod) - (round((proj.damage_force / damage_mod) * 0.3)))
if(!(proj.damage_type == BRUTE || proj.damage_type == BURN))
projectile_dam_type = BURN
incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased.
Expand Down Expand Up @@ -138,7 +138,7 @@
)

/mob/living/simple_mob/construct/juggernaut/behemoth/on_bullet_act(obj/projectile/proj, impact_flags, list/bullet_act_args)
var/reflectchance = 80 - round(proj.damage/3)
var/reflectchance = 80 - round(proj.damage_force/3)
if(prob(reflectchance))
visible_message("<span class='danger'>The [proj.name] gets reflected by [src]'s shell!</span>", \
"<span class='userdanger'>The [proj.name] gets reflected by [src]'s shell!</span>")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
/obj/projectile/icicle
name = "icicle"
icon_state = "ice_2"
damage = 40
damage_force = 40
damage_type = BRUTE
damage_flag = ARMOR_MELEE
armor_penetration = 30
Expand All @@ -80,7 +80,7 @@
playsound(get_turf(target), "shatter", 70, 1)

/obj/projectile/icicle/get_structure_damage()
return damage / 2 // They're really deadly against mobs, but less effective against solid things.
return damage_force / 2 // They're really deadly against mobs, but less effective against solid things.

/mob/living/simple_mob/slime/feral/dark_blue/handle_special()
if(stat != DEAD)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@

/mob/living/simple_mob/slime/xenobio/dark_purple/on_bullet_act(obj/projectile/proj, impact_flags, list/bullet_act_args)
. = ..()
if(proj.damage_type && proj.damage_type == BURN && proj.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
if(proj.damage_type && proj.damage_type == BURN && proj.damage_force) // Most bullets won't trigger the explosion, as a mercy towards Security.
log_and_message_admins("[src] ignited due to bring hit by a burning projectile[proj.firer ? " by [key_name(proj.firer)]" : ""].")
ignite()

Expand Down Expand Up @@ -654,7 +654,7 @@

/mob/living/simple_mob/slime/xenobio/oil/on_bullet_act(obj/projectile/proj, impact_flags, list/bullet_act_args)
. = ..()
if(proj.damage_type && proj.damage_type == BURN && proj.damage) // Most bullets won't trigger the explosion, as a mercy towards Security.
if(proj.damage_type && proj.damage_type == BURN && proj.damage_force) // Most bullets won't trigger the explosion, as a mercy towards Security.
log_and_message_admins("[src] exploded due to bring hit by a burning projectile[proj.firer ? " by [key_name(proj.firer)]" : ""].")
explode()

Expand Down
Loading

0 comments on commit faa9eab

Please sign in to comment.