mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* 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
31 lines
857 B
Plaintext
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
|