Fixes tesla bugs, makes code better (#49260)

* Cleans shit up, adds some upper limits on zap count, makes explosions less commen. Need to fix apc issue before
I test how it plays

* Mood, buffs and nerfs tesla

* Cherry-Picking

* eyyo

* back to basics

* aight

* broooooooooooooooooo

* adds else

* range

* fixes shit

* Sure

* Cleans shit up

* Fixes prob issue

* Gee I like this spooky guy

* I swear to god if prob picks just makes a list I am gonna blow a gasket
This commit is contained in:
LemonInTheDark
2020-02-27 12:06:52 +01:00
committed by GitHub
parent 5d55e64398
commit df9d859da8
14 changed files with 41 additions and 40 deletions
+7 -10
View File
@@ -13,7 +13,7 @@
circuit = /obj/item/circuitboard/machine/tesla_coil
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_IS_TESLA
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
var/power_loss = 2
var/input_power_multiplier = 1
var/zap_cooldown = 100
@@ -94,11 +94,9 @@
addtimer(CALLBACK(src, .proc/reset_shocked), 10)
zap_buckle_check(power)
playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
if(!(zap_flags & ZAP_IS_TESLA))
return power_produced
tesla_zap(src, 5, power_produced, zap_flags, shocked_targets)
return power_produced
else
..()
. = ..()
/obj/machinery/power/tesla_coil/proc/zap()
if((last_zap + zap_cooldown) > world.time || !powernet)
@@ -134,11 +132,9 @@
addtimer(CALLBACK(src, .proc/reset_shocked), 10)
zap_buckle_check(power)
playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
if(!(zap_flags & ZAP_IS_TESLA))
return power_produced
tesla_zap(src, 5, power_produced, zap_flags, shocked_targets)
return power_produced
else
..()
. = ..()
/obj/machinery/power/tesla_coil/research/default_unfasten_wrench(mob/user, obj/item/wrench/W, time = 20)
. = ..()
@@ -193,5 +189,6 @@
if(anchored && !panel_open)
flick("grounding_rodhit", src)
zap_buckle_check(power)
return 0
else
..()
. = ..()
+21 -13
View File
@@ -60,7 +60,7 @@
pixel_x = 0
pixel_y = 0
tesla_zap(src, 7, TESLA_DEFAULT_POWER, TRUE)
tesla_zap(src, 7, TESLA_DEFAULT_POWER)
pixel_x = -32
pixel_y = -32
@@ -169,6 +169,8 @@
C.dust()
/proc/tesla_zap(atom/source, zap_range = 3, power, zap_flags = ZAP_DEFAULT_FLAGS, list/shocked_targets)
if(QDELETED(source))
return
. = source.dir
if(power < 1000)
return
@@ -181,7 +183,7 @@
var/obj/vehicle/ridden/bicycle/closest_million_dollar_baby
var/obj/machinery/power/tesla_coil/closest_tesla_coil
var/obj/machinery/power/grounding_rod/closest_grounding_rod
var/obj/vehicle/ridden/bicycle/closest_rideable
var/obj/vehicle/ridden/closest_rideable
var/mob/living/closest_mob
var/obj/machinery/closest_machine
var/obj/structure/closest_structure
@@ -207,7 +209,6 @@
/obj/machinery/gateway,
/obj/structure/lattice,
/obj/structure/grille,
/obj/machinery/the_singularitygen/tesla,
/obj/structure/frame/machine))
for(var/A in typecache_filter_multi_list_exclusion(oview(source, zap_range+2), things_to_shock, blacklisted_tesla_types))
@@ -312,36 +313,43 @@
. = zapdir
//per type stuff:
var/range = 3
if(!QDELETED(closest_million_dollar_baby))
closest_million_dollar_baby.zap_act(power, zap_flags, shocked_targets)
power = closest_million_dollar_baby.zap_act(power, zap_flags, shocked_targets)
else if(!QDELETED(closest_tesla_coil))
closest_tesla_coil.zap_act(power, zap_flags, shocked_targets)
power = closest_tesla_coil.zap_act(power, zap_flags, shocked_targets)
range = 5
else if(!QDELETED(closest_grounding_rod))
closest_grounding_rod.zap_act(power, zap_flags, shocked_targets)
power = closest_grounding_rod.zap_act(power, zap_flags, shocked_targets)
else if(!QDELETED(closest_rideable))
closest_rideable.zap_act(power, zap_flags, shocked_targets)
power = closest_rideable.zap_act(power, zap_flags, shocked_targets)
else if(!QDELETED(closest_mob))
closest_mob.set_shocked()
addtimer(CALLBACK(closest_mob, /mob/living/proc/reset_shocked), 10)
var/shock_damage = (zap_flags & ZAP_MOB_DAMAGE)? (min(round(power/600), 90) + rand(-5, 5)) : 0
var/shock_damage = (zap_flags & ZAP_MOB_DAMAGE) ? (min(round(power/600), 90) + rand(-5, 5)) : 0
closest_mob.electrocute_act(shock_damage, source, 1, SHOCK_TESLA | ((zap_flags & ZAP_MOB_STUN) ? NONE : SHOCK_NOSTUN))
if(issilicon(closest_mob))
var/mob/living/silicon/S = closest_mob
if((zap_flags & ZAP_MOB_STUN) && (zap_flags & ZAP_MOB_DAMAGE))
S.emp_act(EMP_LIGHT)
tesla_zap(S, 7, power / 1.5, zap_flags, shocked_targets) // metallic folks bounce it further
range = 7 // metallic folks bounce it further
else
tesla_zap(closest_mob, 5, power / 1.5, zap_flags, shocked_targets)
range = 5
power /= 1.5
else if(!QDELETED(closest_machine))
closest_machine.zap_act(power, zap_flags, shocked_targets)
power = closest_machine.zap_act(power, zap_flags, shocked_targets)
else if(!QDELETED(closest_blob))
closest_blob.zap_act(power, zap_flags, shocked_targets)
power = closest_blob.zap_act(power, zap_flags, shocked_targets)
else if(!QDELETED(closest_structure))
closest_structure.zap_act(power, zap_flags, shocked_targets)
power = closest_structure.zap_act(power, zap_flags, shocked_targets)
tesla_zap(closest_mob, range, power, zap_flags, shocked_targets)
if(prob(20))//I know I know
tesla_zap(closest_mob, range, power / 2, zap_flags, shocked_targets)