diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 14d62f7978..eff5d9eca9 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -230,9 +230,6 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define EXPLODE_LIGHT 3
#define EXPLODE_GIB_THRESHOLD 50
-#define EMP_HEAVY 1
-#define EMP_LIGHT 2
-
#define GRENADE_CLUMSY_FUMBLE 1
#define GRENADE_NONCLUMSY_FUMBLE 2
#define GRENADE_NO_FUMBLE 3
diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm
index 04fbc4a590..68c475f67b 100644
--- a/code/datums/wires/_wires.dm
+++ b/code/datums/wires/_wires.dm
@@ -204,12 +204,12 @@
return S
/// Called from [/atom/proc/emp_act]
-/datum/wires/proc/emp_pulse()
+/datum/wires/proc/emp_pulse(severity)
var/list/possible_wires = shuffle(wires)
var/remaining_pulses = MAXIMUM_EMP_WIRES
for(var/wire in possible_wires)
- if(prob(33))
+ if(prob(10 + severity/3.5))
pulse(wire)
remaining_pulses--
if(!remaining_pulses)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 684d29102b..98b502122c 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -296,7 +296,7 @@
/atom/proc/emp_act(severity)
var/protection = SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity)
if(!(protection & EMP_PROTECT_WIRES) && istype(wires))
- wires.emp_pulse()
+ wires.emp_pulse(severity)
return protection // Pass the protection value collected here upwards
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
diff --git a/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm
index a7e44ef325..ed17d830ba 100644
--- a/code/game/gamemodes/gangs/dominator.dm
+++ b/code/game/gamemodes/gangs/dominator.dm
@@ -42,7 +42,7 @@
return ..()
/obj/machinery/dominator/emp_act(severity)
- take_damage(100, BURN, "energy", 0)
+ take_damage(75+severity/4, BURN, "energy", 0)
..()
/obj/machinery/dominator/hulk_damage()
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 047e6c955f..bced9db61f 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -95,7 +95,7 @@
inject_chem(R.type, occupant)
open_machine()
//Is this too much? Cit specific
- if(severity == EMP_HEAVY)
+ if(severity >= 80)
var/chem = pick(available_chems)
available_chems -= chem
available_chems += get_random_reagent_id()
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 46b4bbe574..8d7a8c047a 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -175,7 +175,7 @@ Class Procs:
/obj/machinery/emp_act(severity)
. = ..()
if(use_power && !stat && !(. & EMP_PROTECT_SELF))
- use_power(7500/severity)
+ use_power(1000 + severity*65)
new /obj/effect/temp_visual/emp(loc)
/obj/machinery/proc/open_machine(drop = TRUE)
@@ -535,7 +535,7 @@ Class Procs:
else if(zap_flags & ZAP_OBJ_DAMAGE)
take_damage(power/2000, BURN, "energy")
if(prob(40))
- emp_act(EMP_LIGHT)
+ emp_act(50)
/obj/machinery/Exited(atom/movable/AM, atom/newloc)
. = ..()
diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm
index b004746051..1b1fa949a2 100644
--- a/code/game/machinery/announcement_system.dm
+++ b/code/game/machinery/announcement_system.dm
@@ -160,7 +160,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
/obj/machinery/announcement_system/emp_act(severity)
. = ..()
- if(!(stat & (NOPOWER|BROKEN)) && !(. & EMP_PROTECT_SELF))
+ if(!(stat & (NOPOWER|BROKEN)) && !(. & EMP_PROTECT_SELF) && severity >= 30)
act_up()
/obj/machinery/announcement_system/emag_act()
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 2795ba45a9..7950d54ad3 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -97,7 +97,7 @@
if(!status)
return
if(!(. & EMP_PROTECT_SELF))
- if(prob(150/severity))
+ if(prob(severity/0.7))
update_icon()
var/list/previous_network = network
network = list()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 5bbd3f8a65..60a310e9d5 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -431,7 +431,7 @@
. = ..()
if (!(. & EMP_PROTECT_SELF))
var/mob/living/mob_occupant = occupant
- if(mob_occupant && prob(100/(severity*efficiency)))
+ if(mob_occupant && prob((25+severity/1.34)/efficiency))
connected_message(Gibberish("EMP-caused Accidental Ejection", 0))
SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of, ERROR: John Doe, prematurely." ,0))
mob_occupant.copy_from_prefs_vr()
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 6a1514a85e..16081db2c1 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -104,13 +104,8 @@
/obj/machinery/computer/emp_act(severity)
. = ..()
if (!(. & EMP_PROTECT_SELF))
- switch(severity)
- if(1)
- if(prob(50))
- obj_break("energy")
- if(2)
- if(prob(10))
- obj_break("energy")
+ if(prob(severity/1.8))
+ obj_break("energy")
/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user)
on_deconstruction()
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 4fb39c04e1..077571b931 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -126,12 +126,7 @@
return
var/empprize = null
- var/num_of_prizes = 0
- switch(severity)
- if(1)
- num_of_prizes = rand(1,4)
- if(2)
- num_of_prizes = rand(0,2)
+ var/num_of_prizes = rand(round(severity/50),round(severity/100))
for(var/i = num_of_prizes; i > 0; i--)
empprize = pickweight(prizes)
new empprize(loc)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 4e99f67157..7f5fafcd80 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -541,7 +541,7 @@
. = ..()
if(!(stat & (BROKEN|NOPOWER)) && !(. & EMP_PROTECT_SELF))
for(var/datum/data/record/R in GLOB.data_core.medical)
- if(prob(10/severity))
+ if(prob(severity/10))
switch(rand(1,6))
if(1)
if(prob(10))
@@ -560,7 +560,7 @@
R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable")
continue
- else if(prob(1))
+ else if(prob(severity/80))
qdel(R)
continue
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 844f14465a..0157f4ca87 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -769,7 +769,7 @@ What a mess.*/
return
for(var/datum/data/record/R in GLOB.data_core.security)
- if(prob(10/severity))
+ if(prob(severity/10))
switch(rand(1,8))
if(1)
if(prob(10))
@@ -794,7 +794,7 @@ What a mess.*/
R.fields["photo_side"] = G.fields["photo_side"]
continue
- else if(prob(1))
+ else if(prob(severity/80))
qdel(R)
continue
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index b34e97d374..fe2bdf90b1 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -612,7 +612,7 @@
. += "The cogwheel has been loosened, but remains connected loosely to the door!"
/obj/machinery/door/airlock/clockwork/emp_act(severity)
- if(prob(80/severity))
+ if(prob(severity/1.25))
open()
/obj/machinery/door/airlock/clockwork/canAIControl(mob/user)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index d4ba70bb6c..1faff76626 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -243,13 +243,8 @@
. = ..()
if (. & EMP_PROTECT_SELF)
return
- if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
+ if(prob(severity/5) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
INVOKE_ASYNC(src, .proc/open)
- if(prob(severity*10 - 20))
- if(secondsElectrified == MACHINE_NOT_ELECTRIFIED)
- secondsElectrified = MACHINE_ELECTRIFIED_PERMANENT
- LAZYADD(shockedby, "\[[TIME_STAMP("hh:mm:ss", FALSE)]\]EM Pulse")
- addtimer(CALLBACK(src, .proc/unelectrify), 300)
/obj/machinery/door/proc/unelectrify()
secondsElectrified = MACHINE_NOT_ELECTRIFIED
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 22bacf6aa1..3cd2011334 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -397,7 +397,7 @@
return ..()
/obj/machinery/door/window/clockwork/emp_act(severity)
- if(prob(80/severity))
+ if(prob(severity/1.25))
open()
/obj/machinery/door/window/clockwork/ratvar_act()
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 000b3dc7b5..ca9ce09ced 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -103,7 +103,7 @@
if (. & EMP_PROTECT_SELF)
return
- if(prob(50 / severity))
+ if(prob(severity/1.8))
alarm()
/obj/machinery/firealarm/emag_act(mob/user)
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 8f7aee68ce..34745a65f6 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -719,9 +719,7 @@
/obj/machinery/porta_turret/syndicate/ComponentInitialize()
. = ..()
- // AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES)
- AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) //this one or ^ one?
-
+ AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES)
/obj/machinery/porta_turret/syndicate/setup()
return
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 6793d361b5..8a0f376b0f 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -25,11 +25,10 @@
. = ..()
if (. & EMP_PROTECT_SELF)
return
- switch(severity)
- if(1)
- qdel(src)
- if(2)
- take_damage(50, BRUTE, "energy", 0)
+ if(severity >= 70)
+ qdel(src)
+ else
+ take_damage(severity/1.3, BRUTE, "energy", 0)
/obj/structure/emergency_shield/play_attack_sound(damage, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 4740adaffb..6282d74346 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -150,9 +150,9 @@
. = ..()
if(stat & (NOPOWER|BROKEN) || . & EMP_PROTECT_SELF)
return
- if(prob(15 * severity))
+ if(prob(1500 / severity))
return
- if(prob(1)) // :^)
+ if(prob(1 * severity/100)) // :^)
obj_flags |= EMAGGED
var/severity_ascending = 4 - severity
money = max(rand(money - (200 * severity_ascending), money + (200 * severity_ascending)), 0)
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index e1b345f507..f75eef0b21 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -119,7 +119,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
/obj/machinery/telecomms/proc/update_power()
if(toggled)
// if powered, on. if not powered, off. if too damaged, off
- if(CHECK_BITFIELD(stat, (BROKEN | NOPOWER | EMPED)))
+ if(CHECK_BITFIELD(stat, (BROKEN | NOPOWER | EMPED)))
on = FALSE
else
on = TRUE
@@ -139,9 +139,9 @@ GLOBAL_LIST_EMPTY(telecomms_list)
. = ..()
if(CHECK_BITFIELD(., EMP_PROTECT_SELF))
return
- if(prob(100 / severity))
+ if(prob(severity))
if(!CHECK_BITFIELD(stat, EMPED))
ENABLE_BITFIELD(stat, EMPED)
- var/duration = (300 * 10) / severity
+ var/duration = severity * 35
spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot.
DISABLE_BITFIELD(stat, EMPED)
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index 50d18c6fda..0e47872221 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -131,7 +131,7 @@
if(recharging)
return
if(chassis)
- chassis.emp_act(EMP_HEAVY)
+ chassis.emp_act(80)
addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
recharging = TRUE
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index 368bf193ae..d5b27a9636 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -140,8 +140,8 @@
if (. & EMP_PROTECT_SELF)
return
if(get_charge())
- use_power((cell.charge/3)/(severity*2))
- take_damage(30 / severity, BURN, "energy", 1)
+ use_power(cell.charge*severity/100)
+ take_damage(severity/3, BURN, "energy", 1)
mecha_log_message("EMP detected", color="red")
if(istype(src, /obj/mecha/combat))
@@ -309,7 +309,7 @@
clearInternalDamage(MECHA_INT_CONTROL_LOST)
/obj/mecha/narsie_act()
- emp_act(EMP_HEAVY)
+ emp_act(100)
/obj/mecha/ratvar_act()
if((GLOB.ratvar_awakens || GLOB.clockwork_gateway_activated) && occupant)
diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm
index b63a126c5d..235fbf6a9f 100644
--- a/code/game/objects/empulse.dm
+++ b/code/game/objects/empulse.dm
@@ -1,32 +1,28 @@
-/proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
+/proc/empulse(turf/epicenter, power, log=0)
if(!epicenter)
return
if(!isturf(epicenter))
epicenter = get_turf(epicenter.loc)
- if(log)
- message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
- log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
+ var/max_distance = max(round((power/7)^0.7), 1)
- if(heavy_range >= 1)
+ if(log)
+ message_admins("EMP with power [power], max distance [max_distance] in area [epicenter.loc.name] ")
+ log_game("EMP with power [power], max distance [max_distance] in area [epicenter.loc.name] ")
+
+ if(power > 100)
new /obj/effect/temp_visual/emp/pulse(epicenter)
- if(heavy_range > light_range)
- light_range = heavy_range
-
- for(var/A in spiral_range(light_range, epicenter))
+ for(var/A in spiral_range(max_distance, epicenter))
var/atom/T = A
var/distance = get_dist(epicenter, T)
- if(distance < 0)
- distance = 0
- if(distance < heavy_range)
- T.emp_act(EMP_HEAVY)
- else if(distance == heavy_range)
- if(prob(50))
- T.emp_act(EMP_HEAVY)
- else
- T.emp_act(EMP_LIGHT)
- else if(distance <= light_range)
- T.emp_act(EMP_LIGHT)
+ var/severity = 100
+ if(distance != 0) //please dont divide by 0
+ severity = min(max((max_distance / distance^0.3) * (100/max_distance), 1),100) //if it goes below 1 or above 100 stuff gets bad
+ T.emp_act(severity)
return 1
+
+/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/credit_holochip.dm b/code/game/objects/items/credit_holochip.dm
index 0acb225772..21cfd1fbad 100644
--- a/code/game/objects/items/credit_holochip.dm
+++ b/code/game/objects/items/credit_holochip.dm
@@ -101,7 +101,7 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- var/wipe_chance = 60 / severity
+ var/wipe_chance = severity/1.5
if(prob(wipe_chance))
visible_message("[src] fizzles and disappears!")
qdel(src) //rip cash
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 6396a4fe3d..484901990a 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -140,7 +140,7 @@
/obj/item/defibrillator/emp_act(severity)
. = ..()
if(cell && !(. & EMP_PROTECT_CONTENTS))
- deductcharge(1000 / severity)
+ deductcharge(severity*10)
if (. & EMP_PROTECT_SELF)
return
if(safety)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 10b2b68646..c09d23aafb 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -1206,7 +1206,7 @@ GLOBAL_LIST_EMPTY(PDAs)
A.emp_act(severity)
if (!(. & EMP_PROTECT_SELF))
emped += 1
- spawn(200 * severity)
+ spawn(2 * severity)
emped -= 1
/proc/get_viewable_pdas()
diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm
index 6b53a9ba46..e20321414d 100644
--- a/code/game/objects/items/devices/camera_bug.dm
+++ b/code/game/objects/items/devices/camera_bug.dm
@@ -225,7 +225,7 @@
if(C && istype(C) && C.bug == src)
if(!same_z_level(C))
return
- C.emp_act(EMP_HEAVY)
+ C.emp_act(80)
C.bug = null
bugged_cameras -= C.c_tag
interact()
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 75024aec26..035375fdaf 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -428,7 +428,7 @@
else
A.visible_message("[user] blinks \the [src] at \the [A].")
to_chat(user, "\The [src] now has [emp_cur_charges] charge\s.")
- A.emp_act(EMP_HEAVY)
+ A.emp_act(80)
else
to_chat(user, "\The [src] needs time to recharge!")
return
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index c931d92379..6d10d31f5c 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -128,7 +128,7 @@
else if(istype(target, /obj/machinery/camera))
var/obj/machinery/camera/C = target
if(prob(effectchance * diode.rating))
- C.emp_act(EMP_HEAVY)
+ C.emp_act(80)
outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!"
log_combat(user, C, "EMPed", src)
else
diff --git a/code/game/objects/items/electrostaff.dm b/code/game/objects/items/electrostaff.dm
index 9750994c87..65d2fdd699 100644
--- a/code/game/objects/items/electrostaff.dm
+++ b/code/game/objects/items/electrostaff.dm
@@ -261,4 +261,4 @@
if (!(. & EMP_PROTECT_SELF))
turn_off()
if(!iscyborg(loc))
- deductcharge(1000 / severity, TRUE, FALSE)
+ deductcharge(severity*10, TRUE, FALSE)
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 979fa7e958..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, 1, 1)
+ 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 815a3b343c..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, 4, 10)
+ 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 08d6a586c8..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, 3, 5)
+ empulse_using_range(imp_in, 7)
if(!uses)
qdel(src)
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 1a84b85a1a..5e76d506ba 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -232,7 +232,7 @@
if (!(. & EMP_PROTECT_SELF))
switch_status(FALSE)
if(!iscyborg(loc))
- deductcharge(1000 / severity, TRUE, FALSE)
+ deductcharge(severity*10, TRUE, FALSE)
/obj/item/melee/baton/stunsword
name = "stunsword"
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index 905888c904..2a4856f60e 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -104,9 +104,6 @@
set_sign(new /datum/barsign/hiddensigns/empbarsign)
broken = TRUE
-
-
-
/obj/structure/sign/barsign/emag_act(mob/user)
. = ..()
if(broken || (obj_flags & EMAGGED))
@@ -128,8 +125,6 @@
return
set_sign(picked_name)
-
-
//Code below is to define useless variables for datums. It errors without these
@@ -140,95 +135,77 @@
var/desc = "desc"
var/hidden = FALSE
-
//Anything below this is where all the specific signs are. If people want to add more signs, add them below.
-
-
-
/datum/barsign/maltesefalcon
name = "Maltese Falcon"
icon = "maltesefalcon"
desc = "The Maltese Falcon, Space Bar and Grill."
-
/datum/barsign/thebark
name = "The Bark"
icon = "thebark"
desc = "Ian's bar of choice."
-
/datum/barsign/harmbaton
name = "The Harmbaton"
icon = "theharmbaton"
desc = "A great dining experience for both security members and assistants."
-
/datum/barsign/thesingulo
name = "The Singulo"
icon = "thesingulo"
desc = "Where people go that'd rather not be called by their name."
-
/datum/barsign/thedrunkcarp
name = "The Drunk Carp"
icon = "thedrunkcarp"
desc = "Don't drink and swim."
-
/datum/barsign/scotchservinwill
name = "Scotch Servin Willy's"
icon = "scotchservinwill"
desc = "Willy sure moved up in the world from clown to bartender."
-
/datum/barsign/officerbeersky
name = "Officer Beersky's"
icon = "officerbeersky"
desc = "Man eat a dong, these drinks are great."
-
/datum/barsign/thecavern
name = "The Cavern"
icon = "thecavern"
desc = "Fine drinks while listening to some fine tunes."
-
/datum/barsign/theouterspess
name = "The Outer Spess"
icon = "theouterspess"
desc = "This bar isn't actually located in outer space."
-
/datum/barsign/slipperyshots
name = "Slippery Shots"
icon = "slipperyshots"
desc = "Slippery slope to drunkeness with our shots!"
-
/datum/barsign/thegreytide
name = "The Grey Tide"
icon = "thegreytide"
desc = "Abandon your toolboxing ways and enjoy a lazy beer!"
-
/datum/barsign/honkednloaded
name = "Honked 'n' Loaded"
icon = "honkednloaded"
desc = "Honk."
-
/datum/barsign/thenest
name = "The Nest"
icon = "thenest"
desc = "A good place to retire for a drink after a long night of crime fighting."
-
/datum/barsign/thecoderbus
name = "The Coderbus"
icon = "thecoderbus"
desc = "A very controversial bar known for its wide variety of constantly-changing drinks."
-
/datum/barsign/theadminbus
name = "The Adminbus"
icon = "theadminbus"
@@ -313,7 +290,6 @@
hidden = TRUE
//Hidden signs list below this point
-
/datum/barsign/hiddensigns/empbarsign
name = "Haywire Barsign"
icon = "empbarsign"
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 5c5b2bb132..46eb82342a 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -571,10 +571,10 @@
O.emp_act(severity)
if(!secure || broken)
return ..()
- if(prob(50 / severity))
+ if(prob(severity/2))
locked = !locked
update_icon()
- if(prob(20 / severity) && !opened)
+ if(prob(severity/5) && !opened)
if(!locked)
open()
else
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 5997558c60..13f91ff79f 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -646,23 +646,14 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_ADMIN))
return
- var/heavy = input("Range of heavy pulse.", text("Input")) as num|null
- if(heavy == null)
- return
- var/light = input("Range of light pulse.", text("Input")) as num|null
- if(light == null)
+ var/range = input("Range.", text("Input")) as num|null
+ if(!range)
return
+ 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
- if (heavy || light)
-
- empulse(O, heavy, light)
- log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]")
- message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]")
- 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!
-
- return
- else
- return
+ 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!
/client/proc/cmd_admin_gib(mob/M in GLOB.mob_list)
set category = "Special Verbs"
diff --git a/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm b/code/modules/antagonists/blob/blob/blobstrains/electromagnetic_web.dm
index 45bf2b1e1d..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, 1, 3) //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"
@@ -28,6 +28,6 @@
/datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
reac_volume = ..()
if(prob(reac_volume*2))
- M.emp_act(EMP_LIGHT)
+ M.emp_act(50)
if(M)
M.apply_damage(reac_volume, BURN, wound_bonus=CANT_WOUND)
diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm
index ed85726a4a..22d1458086 100644
--- a/code/modules/antagonists/blob/blob/theblob.dm
+++ b/code/modules/antagonists/blob/blob/theblob.dm
@@ -204,7 +204,7 @@
if(severity > 0)
if(overmind)
overmind.blobstrain.emp_reaction(src, severity)
- if(prob(100 - severity * 30))
+ if(prob(severity/1.5))
new /obj/effect/temp_visual/emp(get_turf(src))
/obj/structure/blob/zap_act(power)
diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm
index cfea9fcf1e..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), 2, 5, 1)
+ 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_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
index 89ed669e7b..5affcd5dec 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm
@@ -223,7 +223,7 @@
L.flash_act(1, 1)
if(issilicon(target))
var/mob/living/silicon/S = L
- S.emp_act(EMP_HEAVY)
+ S.emp_act(80)
else //for Nar'sian weaklings
to_chat(L, "\"How does it feel to see the light, dog?\"")
L.visible_message("[L]'s eyes flare with burning light!", \
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 6c8477ab5b..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),1,1,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 68a890028e..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, 2, 5)
+ empulse_using_range(owner, 8)
owner.whisper(invocation, language = /datum/language/common)
charges--
if(charges<=0)
@@ -451,7 +451,7 @@
L.flash_act(1,1)
if(issilicon(target))
var/mob/living/silicon/S = L
- S.emp_act(EMP_HEAVY)
+ S.emp_act(80)
else if(iscarbon(target))
var/mob/living/carbon/C = L
C.silent += clamp(12 - C.silent, 0, 6)
@@ -610,7 +610,7 @@
var/prev_color = candidate.color
candidate.color = "black"
if(do_after(user, 90, target = candidate))
- candidate.emp_act(EMP_HEAVY)
+ candidate.emp_act(80)
var/construct_class = alert(user, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer")
user.visible_message("The dark cloud receedes from what was formerly [candidate], revealing a\n [construct_class]!")
switch(construct_class)
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 3ea160c5cc..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, 0.42*(intensity), 1)
+ 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 799667999e..fbaa6cd26e 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
@@ -424,8 +424,7 @@
range = -1
include_user = TRUE
charge_max = 300
- emp_heavy = 6
- emp_light = 10
+ range = 14
sound = 'sound/effects/lingscreech.ogg'
/obj/effect/proc_holder/spell/aoe_turf/fire_cascade
diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm
index 1be16a4837..e4ce920499 100644
--- a/code/modules/antagonists/revenant/revenant_abilities.dm
+++ b/code/modules/antagonists/revenant/revenant_abilities.dm
@@ -300,7 +300,7 @@
continue
to_chat(human, "You feel [pick("your sense of direction flicker out", "a stabbing pain in your head", "your mind fill with static")].")
new /obj/effect/temp_visual/revenant(human.loc)
- human.emp_act(EMP_HEAVY)
+ human.emp_act(80)
for(var/obj/thing in T)
if(istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on SMES and APCs, to prevent kekkery
continue
@@ -310,12 +310,12 @@
thing.emag_act(null)
else
if(!istype(thing, /obj/machinery/clonepod)) //I hate everything but mostly the fact there's no better way to do this without just not affecting it at all
- thing.emp_act(EMP_HEAVY)
+ thing.emp_act(80)
for(var/mob/living/silicon/robot/S in T) //Only works on cyborgs, not AI
playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1)
new /obj/effect/temp_visual/revenant(S.loc)
S.spark_system.start()
- S.emp_act(EMP_HEAVY)
+ S.emp_act(80)
//Blight: Infects nearby humans and in general messes living stuff up.
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index bdde8f0f22..2c9bcdc1a7 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -63,9 +63,9 @@
if(. & EMP_PROTECT_SELF)
return
if(is_operational())
- if(prob(50 / severity))
+ if(prob(severity/2))
on = !on
- if(prob(100 / severity))
+ if(prob(severity))
direction = PUMP_OUT
pump.target_pressure = rand(0, 100 * ONE_ATMOSPHERE)
update_icon()
@@ -80,7 +80,6 @@
else if(on && holding && direction == PUMP_OUT)
investigate_log("[key_name(user)] started a transfer into [holding].", INVESTIGATE_ATMOS)
-
/obj/machinery/portable_atmospherics/pump/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 7976ba641a..7fd50158ca 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -58,7 +58,7 @@
if(. & EMP_PROTECT_SELF)
return
if(is_operational())
- if(prob(50 / severity))
+ if(prob(severity/3))
on = !on
update_icon()
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 3f77a2befc..57659a70c4 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -62,13 +62,12 @@
if(. & EMP_PROTECT_SELF)
return
var/mob/living/carbon/human/user = src.loc
- switch(severity)
- if(1)
- if(activated && user && ishuman(user) && (user.wear_suit == src))
- to_chat(user, "E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD")
- to_chat(user, "An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!")
- user.emote("scream")
- deactivate(1, 1)
+ if(severity >= 70)
+ if(activated && user && ishuman(user) && (user.wear_suit == src))
+ to_chat(user, "E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD")
+ to_chat(user, "An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!")
+ user.emote("scream")
+ deactivate(1, 1)
/obj/item/clothing/suit/space/chronos/proc/finish_chronowalk(mob/living/carbon/human/user, turf/to_turf)
if(!user)
diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm
index cb62e0df22..0342ca4643 100644
--- a/code/modules/events/communications_blackout.dm
+++ b/code/modules/events/communications_blackout.dm
@@ -23,4 +23,4 @@
/datum/round_event/communications_blackout/start()
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
- T.emp_act(EMP_HEAVY)
+ T.emp_act(80)
diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm
index 4cbfb8ae9a..3bcec9f471 100644
--- a/code/modules/events/pirates.dm
+++ b/code/modules/events/pirates.dm
@@ -141,7 +141,7 @@
for(var/obj/machinery/rnd/server/S in GLOB.machines)
if(S.stat & (NOPOWER|BROKEN))
continue
- S.emp_act(1)
+ S.emp_act(80)
new /obj/effect/temp_visual/emp(get_turf(S))
/obj/machinery/shuttle_scrambler/proc/dump_loot(mob/user)
diff --git a/code/modules/events/processor_overload.dm b/code/modules/events/processor_overload.dm
index 6bedce6b4b..6f20d954ed 100644
--- a/code/modules/events/processor_overload.dm
+++ b/code/modules/events/processor_overload.dm
@@ -36,4 +36,4 @@
// at all
P.ex_act(EXPLODE_DEVASTATE)
else
- P.emp_act(EMP_HEAVY)
+ P.emp_act(80)
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index e9f8079400..9c503279d4 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -61,24 +61,18 @@
playsound(src,'sound/effects/sparks4.ogg',50,1)
qdel(src)
-/obj/item/wormhole_jaunter/emp_act(power)
+/obj/item/wormhole_jaunter/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
var/mob/M = loc
if(istype(M))
- var/triggered = FALSE
if(M.get_item_by_slot(SLOT_BELT) == src)
- if(power == 1)
- triggered = TRUE
- else if(power == 2 && prob(50))
- triggered = TRUE
-
- if(triggered)
- M.visible_message("[src] overloads and activates!")
- SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
- activate(M)
+ if(prob(severity))
+ M.visible_message("[src] overloads and activates!")
+ SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation
+ activate(M)
/obj/item/wormhole_jaunter/proc/chasm_react(mob/source, datum/component/chasm/C)
to_chat(source, "Your [name] activates, saving you from the chasm!")
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 891243496a..85c256f5b0 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -169,13 +169,7 @@
if(!brainmob || iscyborg(loc))
return
else
- switch(severity)
- if(1)
- brainmob.emp_damage = min(brainmob.emp_damage + rand(20,30), 30)
- if(2)
- brainmob.emp_damage = min(brainmob.emp_damage + rand(10,20), 30)
- if(3)
- brainmob.emp_damage = min(brainmob.emp_damage + rand(0,10), 30)
+ brainmob.emp_damage = min(brainmob.emp_damage + rand(-5,5) + severity/3, 30)
brainmob.emote("alarm")
/obj/item/mmi/Destroy()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 18501b4ca2..ecaa5e16c3 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -412,13 +412,8 @@
if(!informed)
to_chat(src, "You feel a sharp pain as your robotic limbs overload.")
informed = TRUE
- switch(severity)
- if(1)
- L.receive_damage(0,10)
- Stun(200)
- if(2)
- L.receive_damage(0,5)
- Stun(100)
+ L.receive_damage(0,severity/10)
+ Stun(severity*2)
/mob/living/carbon/human/acid_act(acidpwr, acid_volume, bodyzone_hit)
var/list/damaged = list()
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index cd9b3b80c7..c182defda4 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -84,11 +84,7 @@
EMPeffect = TRUE
spec_updatehealth(H)
to_chat(H, "You feel the light of your body leave you.")
- switch(severity)
- if(EMP_LIGHT)
- addtimer(CALLBACK(src, .proc/stop_emp, H), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 10 seconds
- if(EMP_HEAVY)
- addtimer(CALLBACK(src, .proc/stop_emp, H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds
+ addtimer(CALLBACK(src, .proc/stop_emp, H), (severity/5) SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //lights out
/datum/species/ethereal/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
if(emageffect)
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 228a69c30f..a7d9ce4473 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -184,7 +184,7 @@
else if(isliving(AM))
var/mob/living/L = AM
if(isethereal(AM))
- AM.emp_act(EMP_LIGHT)
+ AM.emp_act(50)
if(iscyborg(AM))
var/mob/living/silicon/robot/borg = AM
if(borg.lamp_intensity)
diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm
index 9cefa7a12f..b05b5f1aaf 100644
--- a/code/modules/mob/living/silicon/ai/ai_defense.dm
+++ b/code/modules/mob/living/silicon/ai/ai_defense.dm
@@ -19,13 +19,14 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- disconnect_shell()
- if (prob(30))
- switch(pick(1,2))
- if(1)
- view_core()
- if(2)
- SSshuttle.requestEvac(src,"ALERT: Energy surge detected in AI core! Station integrity may be compromised! Initiati--%m091#ar-BZZT")
+ if(severity >= 60)
+ disconnect_shell()
+ if(prob(30))
+ switch(pick(1,2))
+ if(1)
+ view_core()
+ if(2)
+ SSshuttle.requestEvac(src,"ALERT: Energy surge detected in AI core! Station integrity may be compromised! Initiati--%m091#ar-BZZT")
/mob/living/silicon/ai/ex_act(severity, target)
switch(severity)
diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm
index 64509d2deb..d8c1b8fe7d 100644
--- a/code/modules/mob/living/silicon/pai/pai_defense.dm
+++ b/code/modules/mob/living/silicon/pai/pai_defense.dm
@@ -7,8 +7,8 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- take_holo_damage(50/severity)
- DefaultCombatKnockdown(400/severity)
+ take_holo_damage(severity/2)
+ DefaultCombatKnockdown(severity*4)
silent = max(silent, (PAI_EMP_SILENCE_DURATION) / SSmobs.wait / severity)
if(holoform)
fold_in(force = TRUE)
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index a0ea9b735c..0ed380040b 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -85,12 +85,7 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- switch(severity)
- if(1)
- Paralyze(160)
- if(2)
- Paralyze(60)
-
+ Paralyze(10 + severity/1.2)
/mob/living/silicon/robot/emag_act(mob/user)
if(user == src)//To prevent syndieborgs from emagging themselves
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 8be2183d3b..3377bf9601 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -105,14 +105,10 @@
to_chat(src, "Warning: Electromagnetic pulse detected.")
if(. & EMP_PROTECT_SELF)
return
- switch(severity)
- if(1)
- src.take_bodypart_damage(20)
- if(2)
- src.take_bodypart_damage(10)
+ src.take_bodypart_damage(severity/5)
to_chat(src, "*BZZZT*")
for(var/mob/living/M in buckled_mobs)
- if(prob(severity*50))
+ if(prob(severity/2))
unbuckle_mob(M)
M.DefaultCombatKnockdown(40)
M.visible_message("[M] is thrown off of [src]!",
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index a1772d9281..bb7c437ca7 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -370,7 +370,7 @@
ejectpai(0)
if(on)
turn_off()
- spawn(severity*300)
+ spawn(3 * severity)
stat &= ~EMPED
if(was_on)
turn_on()
@@ -1060,4 +1060,4 @@ Pass a positive integer as an argument to override a bot's default speed.
path.Cut(1, 2)
/mob/living/silicon/rust_heretic_act()
- adjustBruteLoss(500)
+ adjustBruteLoss(500)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index 91462a6713..3f28fd6e01 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -459,12 +459,10 @@ Auto Patrol[]"},
/mob/living/simple_animal/bot/ed209/emp_act(severity)
- if(severity == 2 && prob(70))
- severity = 1
. = ..()
if(. & EMP_PROTECT_SELF)
return
- if (severity >= 2)
+ if (severity >= 65)
new /obj/effect/temp_visual/emp(loc)
var/list/mob/living/carbon/targets = new
for(var/mob/living/carbon/C in view(12,src))
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index ceaf7a6f96..9176f410c3 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -729,7 +729,6 @@
if(load)
load.emp_act(severity)
-
/mob/living/simple_animal/bot/mulebot/explode()
visible_message("[src] blows apart!")
var/atom/Tsec = drop_location()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index 2a84152088..a8c0e7d207 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -220,11 +220,10 @@
return
Stun(100)
to_chat(src, "ER@%R: MME^RY CO#RU9T! R&$b@0tin)...")
- if(severity == 1)
+ if(severity >= 65)
adjustBruteLoss(heavy_emp_damage)
to_chat(src, "HeAV% DA%^MMA+G TO I/O CIR!%UUT!")
-
/mob/living/simple_animal/drone/proc/triggerAlarm(class, area/A, O, obj/alarmsource)
if(alarmsource.z != z)
return
@@ -240,7 +239,6 @@
L[A.name] = list(A, list(alarmsource))
to_chat(src, "--- [class] alarm detected in [A.name]!")
-
/mob/living/simple_animal/drone/proc/cancelAlarm(class, area/A, obj/origin)
if(stat != DEAD)
var/list/L = alarms[class]
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 ea96c1cdf6..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, 4, 6) //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/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index 568ad893a2..cac2b1f2b1 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -30,7 +30,6 @@
var/stored_power = 0//Power to deploy per tick
-
/obj/machinery/power/am_control_unit/Initialize()
. = ..()
linked_shielding = list()
@@ -44,7 +43,6 @@
QDEL_NULL(fueljar)
return ..()
-
/obj/machinery/power/am_control_unit/process()
if(exploding)
explosion(get_turf(src),8,12,18,12)
@@ -72,7 +70,6 @@
return
-
/obj/machinery/power/am_control_unit/proc/produce_power()
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
var/core_power = reported_core_efficiency//Effectively how much fuel we can safely deal with
@@ -103,15 +100,9 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- switch(severity)
- if(1)
- if(active)
- toggle_power()
- stability -= rand(15,30)
- if(2)
- if(active)
- toggle_power()
- stability -= rand(10,20)
+ if(active)
+ toggle_power()
+ stability -= rand(round(severity/5),round(severity/3))
/obj/machinery/power/am_control_unit/blob_act()
stability -= 20
@@ -123,20 +114,17 @@
check_stability()
return
-
/obj/machinery/power/am_control_unit/ex_act(severity, target)
stability -= (80 - (severity * 20))
check_stability()
return
-
/obj/machinery/power/am_control_unit/bullet_act(obj/item/projectile/Proj)
. = ..()
if(Proj.flag != "bullet")
stability -= Proj.force
check_stability()
-
/obj/machinery/power/am_control_unit/power_change()
..()
if(stat & NOPOWER)
@@ -150,7 +138,6 @@
return
-
/obj/machinery/power/am_control_unit/update_icon_state()
if(active)
icon_state = "control_on"
@@ -158,7 +145,6 @@
icon_state = "control"
//No other icons for it atm
-
/obj/machinery/power/am_control_unit/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/wrench))
if(!anchored)
@@ -192,7 +178,6 @@
else
return ..()
-
/obj/machinery/power/am_control_unit/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
switch(damage_type)
if(BRUTE)
@@ -221,7 +206,6 @@
update_shield_icons = 1
return 1
-
/obj/machinery/power/am_control_unit/proc/remove_shielding(obj/machinery/am_shielding/AMS)
if(!istype(AMS))
return 0
@@ -231,13 +215,11 @@
toggle_power()
return 1
-
/obj/machinery/power/am_control_unit/proc/check_stability()//TODO: make it break when low also might want to add a way to fix it like a part or such that can be replaced
if(stability <= 0)
qdel(src)
return
-
/obj/machinery/power/am_control_unit/proc/toggle_power(powerfail = 0)
active = !active
if(active)
@@ -249,7 +231,6 @@
update_icon()
return
-
/obj/machinery/power/am_control_unit/proc/check_shield_icons()//Forces icon_update for all shields
if(shield_icon_delay)
return
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 1045786917..3bfcd0a921 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -1449,7 +1449,7 @@
environ = 0
update_icon()
update()
- addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600)
+ addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), severity*8)
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 6425feac31..4dac668adc 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -136,8 +136,8 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- charge -= 1000 / severity
- if (charge < 0)
+ charge -= 10 * severity
+ if(charge < 0)
charge = 0
/obj/item/stock_parts/cell/ex_act(severity, target)
@@ -359,7 +359,7 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- charge = clamp((charge-(10000/severity)),0,maxcharge)
+ charge = clamp((charge-(100*severity)),0,maxcharge)
/obj/item/stock_parts/cell/emergency_light
name = "miniature power cell"
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index e2f8c4e58a..b5ed659e47 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -209,7 +209,7 @@
if(obj_flags & EMAGGED)
return
obj_flags |= EMAGGED
- emp_act(EMP_HEAVY)
+ emp_act(100)
/obj/machinery/power/port_gen/pacman/attack_ai(mob/user)
interact(user)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index cc3a19cf55..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, 8, 10)
+ empulse_using_range(src, 10)
return
/obj/singularity/singularity_act()
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index a4fc7d0641..f0f99ab7da 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -407,7 +407,7 @@
outputting = output_attempt
output_level = rand(0, output_level_max)
input_level = rand(0, input_level_max)
- charge -= 1e6/severity
+ charge -= 10000*severity
if (charge < 0)
charge = 0
update_icon()
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 89c5aa3316..fc51915b73 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -346,7 +346,7 @@
if(issilicon(closest_mob))
var/mob/living/silicon/S = closest_mob
if((zap_flags & ZAP_MOB_STUN) && (zap_flags & ZAP_MOB_DAMAGE))
- S.emp_act(EMP_LIGHT)
+ S.emp_act(50)
next_range = 7 // metallic folks bounce it further
else
next_range = 5
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 0a587e8eba..0f5934e8fd 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -41,7 +41,7 @@
/obj/item/gun/energy/emp_act(severity)
. = ..()
if(!(. & EMP_PROTECT_CONTENTS))
- cell.use(round(cell.charge / severity))
+ cell.use(round(cell.charge * severity/100))
chambered = null //we empty the chamber
recharge_newshot() //and try to charge a new shot
update_icon()
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index 2c9794f391..45bc3a79dc 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -132,7 +132,7 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- fail_chance = min(fail_chance + round(15/severity), 100)
+ fail_chance = min(fail_chance + round(severity/6.6), 100)
/obj/item/gun/energy/e_gun/nuclear/update_overlays()
. = ..()
diff --git a/code/modules/projectiles/projectile/special/ion.dm b/code/modules/projectiles/projectile/special/ion.dm
index 9755269031..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, emp_radius)
+ empulse_using_range(target, emp_radius)
return BULLET_ACT_HIT
/obj/item/projectile/ion/weak
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index efa92ef7d6..86464aceea 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -114,12 +114,9 @@
/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, multiplier)
var/location = get_turf(holder.my_atom)
- // 100 multiplier = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
- // 200 multiplier = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
- empulse(location, round(multiplier / 12), round(multiplier / 7), 1)
+ empulse(location, multiplier)
holder.clear_reagents()
-
/datum/chemical_reaction/beesplosion
name = "Bee Explosion"
id = "beesplosion"
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 2c3f25e73a..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), 3, 7)
+ 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 9667830dbc..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, 4, 6)
+ 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 ae0d8d35aa..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, 1, 2)
+ empulse_using_range(host_mob, 3)
/datum/nanite_program/pyro/active_effect()
host_mob.fire_stacks += 1
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index d3b4bb6bac..6f8ea50f05 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -40,12 +40,12 @@
else
working = TRUE
-/obj/machinery/rnd/server/emp_act()
+/obj/machinery/rnd/server/emp_act(severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
stat |= EMPED
- addtimer(CALLBACK(src, .proc/unemp), 600)
+ addtimer(CALLBACK(src, .proc/unemp), severity*9)
refresh_working()
/obj/machinery/rnd/server/proc/unemp()
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index bc78e3ab1a..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, 1, 2)
+ 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 98723273ae..91706d843e 100644
--- a/code/modules/spells/spell_types/emplosion.dm
+++ b/code/modules/spells/spell_types/emplosion.dm
@@ -3,9 +3,7 @@
desc = "This spell emplodes an area."
charge_max = 250
cooldown_min = 50
-
- var/emp_heavy = 2
- var/emp_light = 3
+ var/emp_range = 4 //same as a 50/50 reaction of uranium and iron
action_icon_state = "emp"
sound = 'sound/weapons/zapbang.ogg'
@@ -15,6 +13,6 @@
for(var/mob/living/target in targets)
if(target.anti_magic_check())
continue
- empulse(target.loc, emp_heavy, emp_light)
+ empulse_using_range(target.loc, emp_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 14f359ef81..0be8cb9196 100644
--- a/code/modules/spells/spell_types/wizard.dm
+++ b/code/modules/spells/spell_types/wizard.dm
@@ -96,8 +96,7 @@
include_user = 1
cooldown_min = 200 //50 deciseconds reduction per rank
- emp_heavy = 6
- emp_light = 10
+ range = 14
sound = 'sound/magic/disable_tech.ogg'
/obj/effect/proc_holder/spell/targeted/turf_teleport/blink
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index fcc3f71b8b..ea8c188346 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -33,10 +33,9 @@
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
- owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity)
+ owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount * severity/100)
to_chat(owner, "You feel like your insides are burning.")
-
/obj/item/organ/cyberimp/chest/nutriment/plus
name = "Nutriment pump implant PLUS"
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
@@ -115,10 +114,10 @@
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
- if(H.stat != DEAD && prob(50 / severity) && H.can_heartattack())
+ if(H.stat != DEAD && prob(severity/2) && H.can_heartattack())
H.set_heartattack(TRUE)
to_chat(H, "You feel a horrible agony in your chest!")
- addtimer(CALLBACK(src, .proc/undo_heart_attack), 60 SECONDS / severity)
+ addtimer(CALLBACK(src, .proc/undo_heart_attack), (60 * severity/100) SECONDS)
/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
var/mob/living/carbon/human/H = owner
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 6705b4c7b4..5861f0e48b 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -34,11 +34,10 @@
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
- var/stun_amount = 200/severity
+ var/stun_amount = 2*severity
owner.Stun(stun_amount)
to_chat(owner, "Your body seizes up!")
-
/obj/item/organ/cyberimp/brain/anti_drop
name = "anti-drop implant"
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
@@ -68,12 +67,11 @@
release_items()
to_chat(owner, "Your hands relax...")
-
/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity)
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
- var/range = severity ? 10 : 5
+ var/range = severity/10
var/atom/A
if(active)
release_items()
@@ -114,7 +112,7 @@
return
crit_fail = TRUE
organ_flags |= ORGAN_FAILING
- addtimer(CALLBACK(src, .proc/reboot), 90 / severity)
+ addtimer(CALLBACK(src, .proc/reboot), 0.9 * severity)
/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
crit_fail = FALSE
@@ -136,6 +134,6 @@
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
- if(prob(60/severity))
+ if(prob(0.6*severity))
to_chat(owner, "Your breathing tube suddenly closes!")
owner.losebreath += 2
diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm
index c1e33c7dac..7b55b842dc 100644
--- a/code/modules/surgery/organs/ears.dm
+++ b/code/modules/surgery/organs/ears.dm
@@ -131,4 +131,4 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- damage += 40/severity
+ damage += 0.5 * severity
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index e3ab44213f..7c28be6883 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -166,7 +166,7 @@
return
to_chat(owner, "Static obfuscates your vision!")
owner.flash_act(visual = 1)
- if(severity == EMP_HEAVY)
+ if(severity >= 70)
owner.adjustOrganLoss(ORGAN_SLOT_EYES, 20)
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index e251abfd35..25b7e8fa48 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -198,8 +198,8 @@ obj/item/organ/heart/slime
if(. & EMP_PROTECT_SELF)
return
Stop()
- addtimer(CALLBACK(src, .proc/Restart), 20/severity SECONDS)
- damage += 100/severity
+ addtimer(CALLBACK(src, .proc/Restart), 0.2*severity SECONDS)
+ damage += severity
/obj/item/organ/heart/cybernetic/upgraded
name = "upgraded cybernetic heart"
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index f0f98a5fa5..69633c54df 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -112,8 +112,4 @@
. = ..()
if(. & EMP_PROTECT_SELF)
return
- switch(severity)
- if(1)
- damage+=100
- if(2)
- damage+=50
+ damage += severity
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index e34fd8e8a9..adb092cc16 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -487,7 +487,6 @@
owner.losebreath = 20
owner.adjustOrganLoss(ORGAN_SLOT_LUNGS, 25)
-
/obj/item/organ/lungs/cybernetic/upgraded
name = "upgraded cybernetic lungs"
desc = "A more advanced version of the stock cybernetic lungs. They are capable of filtering out lower levels of toxins and carbon dioxide."
diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
index e81c7c18d3..d7212f61d2 100644
--- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
+++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm
@@ -11,7 +11,7 @@
var/recentpump = 0 // to prevent spammage
/obj/item/gun/energy/pumpaction/emp_act(severity) //makes it not rack itself when emp'd
- cell.use(round(cell.charge / severity))
+ cell.use(round(cell.charge * severity/100))
chambered = null //we empty the chamber
update_icon()
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 56ad24c599..3ad24ba399 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -221,7 +221,7 @@
C.electrocute_act(10, (get_turf(C)), 1, SHOCK_ILLUSION)
if(prob(10))
var/atom/T = C
- T.emp_act(EMP_HEAVY)
+ T.emp_act(80)
to_chat(C, "You feel a strange tingling sensation come from your core.")
if(isnull(N))
return ..()
@@ -233,7 +233,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
if(O == active_obj)
return
react_objs += O
- O.emp_act(EMP_HEAVY)
+ O.emp_act(80)
/datum/reagent/fermi/nanite_b_goneTox
name = "Electromagnetic crystals"
@@ -248,7 +248,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
C.electrocute_act(10, (get_turf(C)), 1, SHOCK_ILLUSION)
if(prob(50))
var/atom/T = C
- T.emp_act(EMP_HEAVY)
+ T.emp_act(80)
to_chat(C, "You feel your hair stand on end as you glow brightly for a moment!")
..()
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 0cee2fc5cd..da9fd34cd6 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -95,8 +95,7 @@
if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less)
ImpureTot *= volume
- var/empVol = clamp(volume/10, 0, 15)
- empulse(T, empVol, ImpureTot/10, 1)
+ empulse(T, volume, 1)
my_atom.reagents.clear_reagents() //just in case
return