Files
Yogstation/code/game/objects/empulse.dm
SapphicOverload 510bf4a26e Dynamic EMP Severity (#20855)
* holy hell

-fixed ed-209 only being EMP'd on light EMPs and only 30% of the time
-singulo EMP range and strength dependent on size
-bodyparts handle EMP damage
-HoS gun and ion carbine use the same projectile
-fixed leg implant EMP effects not happening
-fixed cybernetic ears causing less knockdown on stronger EMPs
-fixed nanite heart causing instant death on every EMP

* stuff

* absolutely not

* preternis moment

* fix

* physiology

* subtractive once more

* use define

* missed a spot

* Update implant_misc.dm
2023-12-02 22:03:19 -06:00

31 lines
857 B
Plaintext

/proc/empulse(turf/epicenter, severity, range=null, log=TRUE)
if(!epicenter)
CRASH("Warning: empulse() called without an epicenter!")
if(severity < 1)
return
if(!isturf(epicenter))
epicenter = get_turf(epicenter.loc)
if(isnull(range)) // range is equal to severity by default
range = severity
if(log)
message_admins("EMP with size ([range]) and severity ([severity]) in area [epicenter.loc.name] ")
log_game("EMP with size ([range]) and severity ([severity]) in area [epicenter.loc.name] ")
if(range <= 0)
for(var/atom/A in epicenter)
A.emp_act(severity)
return
var/tile_falloff = severity / range
for(var/A in spiral_range(range, epicenter))
var/atom/T = A
var/decayed_severity = severity - round(get_dist(epicenter, T) * tile_falloff)
if(decayed_severity < 1)
continue
T.emp_act(decayed_severity)
return TRUE