diff --git a/code/modules/projectiles/projectile/energy_projectiles.dm b/code/modules/projectiles/projectile/energy_projectiles.dm index 844bf431d63..c619e429076 100644 --- a/code/modules/projectiles/projectile/energy_projectiles.dm +++ b/code/modules/projectiles/projectile/energy_projectiles.dm @@ -57,11 +57,13 @@ /obj/item/projectile/energy/bolt/large damage = 20 +#define BSG_BASE_DAMAGE 90 + /obj/item/projectile/energy/bsg name = "orb of pure bluespace energy" icon_state = "bluespace" impact_effect_type = /obj/effect/temp_visual/bsg_kaboom - damage = 90 + damage = BSG_BASE_DAMAGE damage_type = BURN armour_penetration_flat = 50 range = 9 @@ -89,6 +91,8 @@ ..() /obj/item/projectile/energy/bsg/proc/kaboom(atom/target) + // If a lens is modifying the damage of the projectile, the AOE should be impacted as well + var/damage_multiplier = damage / BSG_BASE_DAMAGE playsound(src, 'sound/weapons/bsg_explode.ogg', 75, TRUE) for(var/mob/living/M in hearers(7, src)) //No stuning people with thermals through a wall. if(M == target) @@ -102,7 +106,7 @@ if(prob(min(400 / distance, 100))) //100% chance to hit with the blast up to 3 tiles, after that chance to hit is 80% at 4 tiles, 66.6% at 5, 57% at 6, and 50% at 7 if(prob(min(200 / distance, 100)))//100% chance to upgraded to a stun as well at a direct hit, 100% at 1 tile, 66% at 2, 50% at 3, 40% at 4, 33% at 5, 28.5% at 6, and finaly 25% at 7. This is calculated after the first hit however. floored = TRUE - M.apply_damage((rand(60, 80) * (1.1 - distance / 10)), BURN) //reduced by 10% per tile + M.apply_damage((rand(60, 80) * (1.1 - distance / 10)) * damage_multiplier, BURN) //reduced by 10% per tile add_attack_logs(firer, M, "Hit heavily by [src]") if(floored) to_chat(M, "You see a flash of briliant blue light as [src] explodes, knocking you to the ground and burning you!") @@ -115,9 +119,11 @@ else to_chat(M, "You feel the heat of the explosion of [src], but the blast mostly misses you.") add_attack_logs(firer, M, "Hit lightly by [src]") - M.apply_damage(rand(20, 25), BURN) + M.apply_damage(rand(20, 25) * damage_multiplier, BURN) if(ROLE_BLOB in M.faction) - M.apply_damage(rand(20, 25), BURN) //Ensures it clears all blob spores on the screen without fail. + M.apply_damage(rand(20, 25) * damage_multiplier, BURN) //Ensures it clears all blob spores on the screen without fail. + +#undef BSG_BASE_DAMAGE /obj/item/projectile/energy/weak_plasma name = "plasma bolt" @@ -151,10 +157,13 @@ homing_active = TRUE ..() + +#define ARC_REVOLVER_BASE_DAMAGE 10 + /obj/item/projectile/energy/arc_revolver name = "arc emitter" icon_state = "plasma_light" - damage = 10 + damage = ARC_REVOLVER_BASE_DAMAGE damage_type = BURN var/charge_number = null @@ -167,7 +176,7 @@ A.duration += 10 SECONDS qdel(src) return - new /obj/effect/abstract/arc_revolver(target, charge_number, immolate) + new /obj/effect/abstract/arc_revolver(target, charge_number, immolate, damage) qdel(src) @@ -180,13 +189,15 @@ var/successfulshocks = 0 var/wait_for_three = 0 var/our_immolate = 0 + var/damage_multiplier = 1 -/obj/effect/abstract/arc_revolver/Initialize(mapload, charge_number, immolate) +/obj/effect/abstract/arc_revolver/Initialize(mapload, charge_number, immolate, damage) . = ..() charge_numbers += charge_number START_PROCESSING(SSfastprocess, src) GLOB.arc_emitters += src our_immolate = immolate / 5 + damage_multiplier = damage / ARC_REVOLVER_BASE_DAMAGE build_chains() /obj/effect/abstract/arc_revolver/proc/build_chains() @@ -255,7 +266,7 @@ "You are shocked by the lightning chain!", \ "You hear a heavy electrical crack." \ ) - var/damage = (2 - isliving(B.origin) + 2 - isliving(B.target)) //Damage is upped depending if the origin is a mob or not. Wall to wall hurts more than mob to wall, or mob to mob + var/damage = (2 - isliving(B.origin) + 2 - isliving(B.target)) * damage_multiplier //Damage is upped depending if the origin is a mob or not. Wall to wall hurts more than mob to wall, or mob to mob L.adjustFireLoss(damage) //time to die if(our_immolate) L.adjust_fire_stacks(our_immolate) @@ -274,3 +285,5 @@ var/datum/cd = chain if(!chain || QDELETED(cd)) chains -= chain + +#undef ARC_REVOLVER_BASE_DAMAGE