diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm
index bf49a8399b..235fbf6a9f 100644
--- a/code/game/objects/empulse.dm
+++ b/code/game/objects/empulse.dm
@@ -23,5 +23,6 @@
T.emp_act(severity)
return 1
-/proc/empulse_power_from_range(range) //work out the power required for an emp of a given wanted range
- return (7*(range^(1/0.7)))
+/proc/empulse_using_range(turf/epicenter, range, log=0) //make an emp using range instead of power
+ var/power_from_range = (7*(range^(1/0.7)))
+ empulse(epicenter, power_from_range, log)
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 2ac938a49c..6ab12b7e39 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -351,7 +351,7 @@
/obj/item/book/granter/spell/charge/recoil(mob/user)
..()
to_chat(user,"[src] suddenly feels very warm!")
- empulse(src, 7)
+ empulse_using_range(src, 1)
/obj/item/book/granter/spell/summonitem
spell = /obj/effect/proc_holder/spell/targeted/summonitem
diff --git a/code/game/objects/items/grenades/emgrenade.dm b/code/game/objects/items/grenades/emgrenade.dm
index db341c66c1..56b00bd2d6 100644
--- a/code/game/objects/items/grenades/emgrenade.dm
+++ b/code/game/objects/items/grenades/emgrenade.dm
@@ -7,5 +7,5 @@
/obj/item/grenade/empgrenade/prime(mob/living/lanced_by)
. = ..()
update_mob()
- empulse(src, 400)
+ empulse_using_range(src, 14)
qdel(src)
diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm
index b6e468d56a..36f82b599c 100644
--- a/code/game/objects/items/implants/implant_misc.dm
+++ b/code/game/objects/items/implants/implant_misc.dm
@@ -65,7 +65,7 @@
/obj/item/implant/emp/activate()
. = ..()
uses--
- empulse(imp_in, 200)
+ empulse_using_range(imp_in, 7)
if(!uses)
qdel(src)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index e3c4d614a7..13f91ff79f 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -646,12 +646,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_ADMIN))
return
- var/power = input("Power.", text("Input")) as num|null
- if(!power)
+ var/range = input("Range.", text("Input")) as num|null
+ if(!range)
return
- log_admin("[key_name(usr)] created an EM Pulse - log below")
- message_admins("[key_name_admin(usr)] created an EM Pulse at [AREACOORD(O)] with power [power]")
- empulse(O, power, TRUE) //its details get shown too
+ log_admin("[key_name(usr)] created an EM Pulse - log below") //because we'll just log the empulse itself
+ message_admins("[key_name_admin(usr)] created an EM Pulse at [AREACOORD(O)] with range [range]")
+ empulse_using_range(O, range, TRUE) //its details get shown too
SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm b/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm
index bad4c5e9c2..7a1715cb4a 100644
--- a/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm
+++ b/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm
@@ -18,7 +18,7 @@
/datum/blobstrain/reagent/electromagnetic_web/death_reaction(obj/structure/blob/B, damage_flag)
if(damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser")
- empulse(B.loc, 75) //less than screen range, so you can stand out of range to avoid it
+ empulse_using_range(B.loc, 5) //less than screen range, so you can stand out of range to avoid it
/datum/reagent/blob/electromagnetic_web
name = "Electromagnetic Web"
diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm
index 9cd35c5cee..0e2515fdae 100644
--- a/code/modules/antagonists/changeling/powers/shriek.dm
+++ b/code/modules/antagonists/changeling/powers/shriek.dm
@@ -48,6 +48,6 @@
for(var/obj/machinery/light/L in range(5, usr))
L.on = 1
L.break_light_tube()
- empulse(get_turf(user), 140, TRUE)
+ empulse_using_range(get_turf(user), 8, TRUE)
playsound(get_turf(user), 'sound/effects/lingempscreech.ogg', 75, TRUE, 5, soundenvwet = 0)
return TRUE
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/power_null.dm b/code/modules/antagonists/clockcult/clock_structures/traps/power_null.dm
index 988afd6867..92a3cc8065 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/power_null.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/power_null.dm
@@ -11,7 +11,7 @@
/obj/structure/destructible/clockwork/trap/power_nullifier/activate()
if(!activated)
activated = TRUE
- empulse(get_turf(src),7,TRUE)
+ empulse_using_range(get_turf(src),1,TRUE)
/obj/structure/destructible/clockwork/trap/power_nullifier/emp_act(var/strength=1)
activate()
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index fbf4b37c72..e6ec3a08b6 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -165,7 +165,7 @@
/datum/action/innate/cult/blood_spell/emp/Activate()
owner.visible_message("[owner]'s hand flashes a bright blue!", \
"You speak the cursed words, emitting an EMP blast from your hand.")
- empulse(owner, 140)
+ empulse_using_range(owner, 8)
owner.whisper(invocation, language = /datum/language/common)
charges--
if(charges<=0)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index b61b773f82..6cc2fb94b8 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -982,7 +982,7 @@ structure_check() searches for nearby cultist structures required for the invoca
visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!")
for(var/mob/living/L in range(src, 3))
L.DefaultCombatKnockdown(30)
- empulse(T, 16*(intensity))
+ empulse_using_range(T, 0.65*(intensity))
var/list/images = list()
var/zmatch = T.z
var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED]
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
index 44171ca758..fbaa6cd26e 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
@@ -424,7 +424,7 @@
range = -1
include_user = TRUE
charge_max = 300
- power = 400
+ range = 14
sound = 'sound/effects/lingscreech.ogg'
/obj/effect/proc_holder/spell/aoe_turf/fire_cascade
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm
index baebefcfb4..29dc78e5f3 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm
@@ -6,5 +6,5 @@
if(!ninjacost(250,N_STEALTH_CANCEL))
var/mob/living/carbon/human/H = affecting
playsound(H.loc, 'sound/effects/empulse.ogg', 60, 2)
- empulse(H, 200) //Procs sure are nice. Slightly weaker than wizard's disable tch.
+ empulse_using_range(H, 9) //Procs sure are nice. Slightly weaker than wizard's disable tch.
s_coold = 2
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 03537d64e7..ee4b9ce6ba 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -434,7 +434,7 @@
/obj/singularity/proc/emp_area()
- empulse(src, 250)
+ empulse_using_range(src, 10)
return
/obj/singularity/singularity_act()
diff --git a/code/modules/projectiles/projectile/special/ion.dm b/code/modules/projectiles/projectile/special/ion.dm
index e5e8869354..757f87a4d9 100644
--- a/code/modules/projectiles/projectile/special/ion.dm
+++ b/code/modules/projectiles/projectile/special/ion.dm
@@ -10,7 +10,7 @@
/obj/item/projectile/ion/on_hit(atom/target, blocked = FALSE)
..()
- empulse(target, emp_radius * 7)
+ empulse_using_range(target, emp_radius)
return BULLET_ACT_HIT
/obj/item/projectile/ion/weak
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 651de8e1dd..1e78d81f24 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -296,7 +296,7 @@
required_other = TRUE
/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, multiplier)
- empulse(get_turf(holder.my_atom), 200)
+ empulse_using_range(get_turf(holder.my_atom), 10)
..()
/datum/chemical_reaction/slime/slimecell
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index c69d0cf5db..67af26e468 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -328,7 +328,7 @@
throwSmoke(loc)
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
visible_message("[src] melts [exp_on], ionizing the air around it!")
- empulse(loc, 150)
+ empulse_using_range(loc, 9)
investigate_log("Experimentor has generated an Electromagnetic Pulse.", INVESTIGATE_EXPERIMENTOR)
ejectItem(TRUE)
////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm
index 7ec48d9052..b9fa0db22f 100644
--- a/code/modules/research/nanites/nanite_programs/weapon.dm
+++ b/code/modules/research/nanites/nanite_programs/weapon.dm
@@ -123,7 +123,7 @@
rogue_types = list(/datum/nanite_program/toxic)
/datum/nanite_program/emp/on_trigger(comm_message)
- empulse(host_mob, 40)
+ empulse_using_range(host_mob, 3)
/datum/nanite_program/pyro/active_effect()
host_mob.fire_stacks += 1
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 953e16ce3a..a8cefd9bed 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -258,7 +258,7 @@
if(SLIME_ACTIVATE_MAJOR)
user.visible_message("[user]'s skin starts flashing intermittently...", "Your skin starts flashing intermittently...")
if(do_after(user, 25, target = user))
- empulse(user, 40)
+ empulse_using_range(user, 3)
user.visible_message("[user]'s skin flashes!", "Your skin flashes as you emit an electromagnetic pulse!")
return 600
diff --git a/code/modules/spells/spell_types/emplosion.dm b/code/modules/spells/spell_types/emplosion.dm
index 913bb702de..9958aeabe4 100644
--- a/code/modules/spells/spell_types/emplosion.dm
+++ b/code/modules/spells/spell_types/emplosion.dm
@@ -3,7 +3,7 @@
desc = "This spell emplodes an area."
charge_max = 250
cooldown_min = 50
- var/power = 100 //same as a 50/50 reaction of uranium and iron
+ var/range = 4 //same as a 50/50 reaction of uranium and iron
action_icon_state = "emp"
sound = 'sound/weapons/zapbang.ogg'
@@ -13,6 +13,6 @@
for(var/mob/living/target in targets)
if(target.anti_magic_check())
continue
- empulse(target.loc, power)
+ empulse_using_range(target.loc, range)
- return
\ No newline at end of file
+ return
diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm
index c95a801f0c..0be8cb9196 100644
--- a/code/modules/spells/spell_types/wizard.dm
+++ b/code/modules/spells/spell_types/wizard.dm
@@ -96,7 +96,7 @@
include_user = 1
cooldown_min = 200 //50 deciseconds reduction per rank
- power = 400
+ range = 14
sound = 'sound/magic/disable_tech.ogg'
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink