diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bcb27d12..1bfb5432 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -77,6 +77,9 @@ /atom/proc/emp_act(var/severity) return +/atom/proc/emp_act_console(var/severity) + return + /atom/proc/bullet_act(obj/item/projectile/P, def_zone) P.on_hit(src, 0, def_zone) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 47504766..c9104405 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -610,10 +610,18 @@ /obj/mecha/meteorhit() return ex_act(rand(1,3))//should do for now -/obj/mecha/emp_act(severity) +/obj/mecha/emp_act(severity) // Severity is generally best left at 1; damage = (50 x severity), cell drain = ((current charge / 2) x severity) if(get_charge()) - use_power((cell.charge/2)/severity) - take_damage(50 / severity,"energy") + use_power((cell.charge/2)*severity) + take_damage(50*severity,"energy") + src.log_message("EMP detected",1) + check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) + return + +/obj/mecha/emp_act_console(severity) // So that mechs actually drain their damn energy + if(get_charge()) + use_power(cell.charge/2) + take_damage(50*severity,"energy") src.log_message("EMP detected",1) check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) return diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 98ac9f5b..3c3debae 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -92,7 +92,7 @@ return answer - emp_act() + emp_act_console() del src return @@ -108,7 +108,8 @@ proc/shock() var/obj/mecha/M = in_mecha() if(M) - M.emp_act(2) + M.emp_act_console(5) + empulse(src.loc, 0, 1, 1) del(src) proc/get_mecha_log() diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index b69d3c0b..96ab2d59 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -33,7 +33,7 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0) if(prob(50)) T.emp_act(1) else - T.emp_act(2) + T.emp_act(0.5) else if(distance <= light_range) - T.emp_act(2) + T.emp_act(0.5) return 1 \ No newline at end of file diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 512b9429..66ccd73e 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -37,7 +37,7 @@ spawn(5) if(!powernet) connect_to_network() - + dir_loop: for(var/d in cardinal) var/turf/T = get_step(src, d) @@ -347,7 +347,7 @@ if(prob(50)) emp_act(1) else - emp_act(2) + emp_act(0.5) if(prob(5)) //smoke only var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() smoke.set_up(3, 0, src.loc)