Partially reverts #89619, where I partially reverted #87936; Puts back the mining and damage AOE damage on Mech PKA, but improves the standard modkits as well (#89993)

## About The Pull Request

In #89619, I removed the mech PKA's mining AOE and reduced the damaging
AOE to a fraction of the damage.

I have restored both of these aspects, but I have also applied this
change to the standard PKA's mining and damage AOE. I have also included
the mob biotype limitations as well.

AOE modkits take 10% capacity, now allowing miners to use them in more
setups. However, they conflict with one another. You can only have one
AOE mod until you can get the dual AOE mod from tendrils.

The AOE damage/mining effect is now a 2 tile effect rather than 1 tile
effect.

## Why It's Good For The Game

My intent in the previous PR was to bring mech PKA's down to standard
mining limitations. So, why not improve those standards for everyone
instead? The new state of mining expects you to be dealing with a lot of
mobs at once. Even small vents can, on occasion, decide to spit out
several goliaths back to back. That's a lot of mobs with a lot of
health.

Miners need AOE options more than ever. They have very little that are
actually meaningful, sadly. So my intent here is that this should be an
expectation for our miners to be seeking out and can fit into their
current, standard gameplay.

Certainly I've only felt like shit having to sacrifice a damage or
cooldown mod for an AOE mod, only to get a very minor amount of damage
splash for my efforts. That, and the radius doesn't usually impact most
mobs as they spawn and attack from awkward angles or distances from one
another where they are JUST out of reach of one another. Trying to use
the splash to hit multiple enemies is often not worth it compared to
just hitting one enemy at a time with a lot of damage.

So, let's just go with the standard of 'Good AOE is fundamentally needed
now' and worth from that premise.

## Changelog
🆑
balance: Mech PKA now once again mines turfs and does full damage on its
AOE explosion (still only hitting mining mobs).
balance: The standard PKA AOE mods are now by default 10% capacity. But
they cannot be used with one another.
balance: The standard PKA offensive AOE mod now does the PKA's full
damage in its AOE.
balance: Mining AOEs will affect everything within a 2 tile radius
around the point of impact, up from a 1 tile radius.
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
necromanceranne
2025-03-19 17:57:52 +11:00
committed by GitHub
parent edcd25dfd1
commit 8df0c5851d
12 changed files with 55 additions and 45 deletions

View File

@@ -249,7 +249,7 @@
modkit_upgrade.projectile_strike(src, target_turf, target, kinetic_gun)
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
M.gets_drilled(firer, TRUE)
M.gets_drilled(firer, 1)
if(iscarbon(firer))
var/mob/living/carbon/carbon_firer = firer
var/skill_modifier = 1
@@ -264,18 +264,19 @@
/obj/projectile/kinetic/mech
range = 5
damage = 50
//the multiplier we apply to our PKa's AOE effect.
var/aoe_damage_multiplier = 0.3
/obj/projectile/kinetic/mech/strike_thing(atom/target)
. = ..()
new /obj/effect/temp_visual/explosion/fast(get_turf(target))
for(var/mob/living/living_mob in range(1, target) - firer - target)
for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(2, target) - target)
mineral_turf.gets_drilled(firer, 0.1)
for(var/mob/living/living_mob in range(2, target) - firer - target)
if(!ismining(living_mob))
continue
var/armor = living_mob.run_armor_check(def_zone, armor_flag, armour_penetration = armour_penetration)
living_mob.apply_damage(damage*aoe_damage_multiplier, damage_type, def_zone, armor)
living_mob.apply_damage(damage, damage_type, def_zone, armor)
to_chat(living_mob, span_userdanger("You're struck by a [name]!"))
//Modkits
@@ -426,6 +427,8 @@
//AoE blasts
/obj/item/borg/upgrade/modkit/aoe
modifier = 0
cost = 10
maximum_of_type = 1
var/turf_aoe = FALSE
var/stats_stolen = FALSE
@@ -450,20 +453,25 @@
/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
K.name = "kinetic explosion"
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
if(turf_aoe)
for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
for(var/T in RANGE_TURFS(2, target_turf) - target_turf)
if(ismineralturf(T))
var/turf/closed/mineral/M = T
M.gets_drilled(K.firer, TRUE)
M.gets_drilled(kinetic_blast.firer, 0.1)
if(modifier)
for(var/mob/living/L in range(1, target_turf) - K.firer - target)
var/armor = L.run_armor_check(K.def_zone, K.armor_flag, "", "", K.armour_penetration)
L.apply_damage(K.damage*modifier, K.damage_type, K.def_zone, armor)
to_chat(L, span_userdanger("You're struck by a [K.name]!"))
for(var/mob/living/living_mob in range(2, target) - kinetic_blast.firer - target)
if(!ismining(living_mob))
continue
var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration)
living_mob.apply_damage(kinetic_blast.damage*modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor)
to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!"))
/obj/item/borg/upgrade/modkit/aoe/turfs
name = "mining explosion"
@@ -471,16 +479,15 @@
denied_type = /obj/item/borg/upgrade/modkit/aoe/turfs
turf_aoe = TRUE
/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs
name = "offensive mining explosion"
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
maximum_of_type = 3
modifier = 0.25
/obj/item/borg/upgrade/modkit/aoe/mobs
name = "offensive explosion"
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
modifier = 0.2
modifier = 1
/obj/item/borg/upgrade/modkit/aoe/mobs/andturfs
name = "offensive mining explosion"
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
turf_aoe = TRUE
//Minebot passthrough
/obj/item/borg/upgrade/modkit/minebot_passthrough

View File

@@ -15,7 +15,7 @@
. = ..()
if(ismineralturf(target))
var/turf/closed/mineral/M = target
M.gets_drilled(firer, FALSE)
M.gets_drilled(firer)
if(mine_range)
mine_range--
range++