EMP Refactor & Multi Z-level EMPs (#17781)

* sdfasf

* sdfas

* dsf
This commit is contained in:
Fluffy
2023-12-04 19:37:49 +00:00
committed by GitHub
parent 8f1a282756
commit d8d063edc6
143 changed files with 744 additions and 272 deletions
@@ -92,10 +92,11 @@
STOP_PROCESSING(SSprocessing, src)
/obj/item/cloaking_device/emp_act(severity)
. = ..()
deactivate()
if (cell)
cell.emp_act(severity)
..()
/obj/item/cloaking_device/proc/register_owner(var/mob/user)
if (!owner || owner != user)
@@ -45,12 +45,14 @@
return TRUE
/obj/item/implant/aggression/emp_act(severity)
. = ..()
if(malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
activate("emp")
if(severity == 1)
if(severity == EMP_HEAVY)
if(prob(50))
meltdown()
else if(prob(50))
@@ -23,16 +23,15 @@
return TRUE
/obj/item/implant/anti_augment/emp_act(severity)
. = ..()
switch(severity)
if(1.0)
if(EMP_HEAVY)
if (prob(75))
qdel(src)
if(2.0)
if(EMP_LIGHT)
if (prob(50))
qdel(src)
if(3.0)
if (prob(25))
qdel(src)
return
/obj/item/implantcase/anti_augment
@@ -62,15 +62,18 @@ the implant may become unstable and either pre-maturely inject the subject or si
..()
/obj/item/implant/chem/emp_act(severity)
. = ..()
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
switch(severity)
if(1)
if(EMP_HEAVY)
if(prob(60))
activate(20)
if(2)
if(EMP_LIGHT)
if(prob(30))
activate(5)
@@ -34,6 +34,8 @@
return dat
/obj/item/implant/integrated_circuit/emp_act(severity)
. = ..()
IC.emp_act(severity)
/obj/item/implant/integrated_circuit/examine(mob/user, distance, is_adjacent)
@@ -55,12 +55,15 @@
global_announcer.autosay(death_message, "[mobname]'s Death Alarm", channel)
/obj/item/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
. = ..()
if (malfunction) //so I'm just going to add a meltdown chance here
return
malfunction = MALFUNCTION_TEMPORARY
activate("emp") //let's shout that this dude is dead
if(severity == 1)
if(severity == EMP_HEAVY)
if(prob(40)) //small chance of obvious meltdown
meltdown()
else if (prob(60)) //but more likely it will just quietly die
@@ -197,6 +197,8 @@
return TRUE
/obj/item/implant/explosive/emp_act(severity)
. = ..()
if(malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
@@ -280,21 +282,19 @@
return TRUE
/obj/item/implant/explosive/deadman/emp_act(severity)
. = ..()
if(malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
switch (severity)
if(3.0)
if(prob(1))
small_countdown()
else if(prob(5))
meltdown()
if(2.0)
if(EMP_LIGHT)
if(prob(5))
small_countdown()
else if (prob(10))
meltdown()
if(1.0)
if(EMP_HEAVY)
if(prob(10))
small_countdown()
else if (prob(30))
@@ -39,12 +39,15 @@
return TRUE
/obj/item/implant/mindshield/emp_act(severity)
. = ..()
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
activate("emp")
if(severity == 1)
if(severity == EMP_HEAVY)
if(prob(50))
meltdown()
else if (prob(50))
@@ -48,16 +48,18 @@ Implant Specifics:<BR>"}
return TRUE
/obj/item/implant/tracking/emp_act(severity)
. = ..()
if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning
return
malfunction = MALFUNCTION_TEMPORARY
var/delay = 20
switch(severity)
if(1)
if(EMP_HEAVY)
if(prob(60))
meltdown()
if(2)
if(EMP_LIGHT)
delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time
spawn(delay)
@@ -749,10 +749,11 @@
max_storage_space = max(total_storage_space,max_storage_space) //prevents spawned containers from being too small for their contents
/obj/item/storage/emp_act(severity)
. = ..()
if(!istype(src.loc, /mob/living))
for(var/obj/O in contents)
O.emp_act(severity)
..()
/obj/item/storage/attack_self(mob/user as mob)
//Clicking on itself will empty it, if it has the verb to do that.
+2 -1
View File
@@ -198,9 +198,10 @@
return 1
/obj/item/melee/baton/emp_act(severity)
. = ..()
if(bcell)
bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please.
..()
//secborg stun baton module
+3 -1
View File
@@ -52,7 +52,9 @@ var/list/global/all_tethers = list()
continue
tether(TD)
/obj/item/tethering_device/emp_act()
/obj/item/tethering_device/emp_act(severity)
. = ..()
deactivate()
/obj/item/tethering_device/proc/activate()