Increased efficiency of electrocution code when wearing insulated gloves which greatly reduced lag when touching an object which should electrocute you with insulated gloves. Spamming clicks on electrified doors no longer causes huge server lag.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1225 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
baloh.matevz
2011-03-21 01:44:33 +00:00
parent 013e3704ee
commit 4fdb79cd44

View File

@@ -387,7 +387,7 @@
/obj/machinery/power/proc/disconnect_from_network() /obj/machinery/power/proc/disconnect_from_network()
//TODO: dunno how to do that //TODO: dunno how to do that
return return
/turf/proc/get_cable_node() /turf/proc/get_cable_node()
if(!istype(src, /turf/simulated/floor)) if(!istype(src, /turf/simulated/floor))
return null return null
@@ -409,6 +409,13 @@
//source is an object caused electrocuting (airlock, grille, etc) //source is an object caused electrocuting (airlock, grille, etc)
//No animations will be performed by this proc. //No animations will be performed by this proc.
/proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0) /proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0)
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
var/siem_coef = G.siemens_coefficient
if(siem_coef == 0) //to avoid spamming with insulated glvoes on
return 0
var/area/source_area var/area/source_area
if (istype(power_source,/area)) if (istype(power_source,/area))
source_area = power_source source_area = power_source
@@ -451,7 +458,7 @@
shock_damage = cell_damage shock_damage = cell_damage
var/drained_hp = M.electrocute_act(shock_damage, source, siemens_coeff) //zzzzzzap! var/drained_hp = M.electrocute_act(shock_damage, source, siemens_coeff) //zzzzzzap!
var/drained_energy = drained_hp*20 var/drained_energy = drained_hp*20
if (source_area) if (source_area)
source_area.use_power(drained_energy/CELLRATE) source_area.use_power(drained_energy/CELLRATE)
else if (istype(power_source,/datum/powernet)) else if (istype(power_source,/datum/powernet))