mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 10:01:58 +00:00
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:
@@ -22,5 +22,5 @@
|
||||
addtimer(CALLBACK(src, .proc/zap), rand(30, 100))
|
||||
|
||||
/obj/item/organ/heart/gland/electric/proc/zap()
|
||||
tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_IS_TESLA)
|
||||
tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
|
||||
playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, TRUE)
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
new /obj/effect/temp_visual/emp(get_turf(src))
|
||||
|
||||
/obj/structure/blob/zap_act(power)
|
||||
..()
|
||||
. = ..()
|
||||
if(overmind)
|
||||
if(overmind.blobstrain.tesla_reaction(src, power))
|
||||
take_damage(power/400, BURN, "energy")
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
siemens_coefficient = -1
|
||||
var/zap_power = 25000
|
||||
var/zap_range = 20
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_IS_TESLA
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla/dropped(mob/user)
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon_state = "tesla_projectile"
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
|
||||
var/chain
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_IS_TESLA
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
|
||||
var/zap_range = 3
|
||||
var/power = 10000
|
||||
|
||||
|
||||
@@ -630,7 +630,7 @@
|
||||
|
||||
var/zap_power = 20000
|
||||
var/zap_range = 15
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_MOB_STUN | ZAP_OBJ_DAMAGE | ZAP_IS_TESLA
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_MOB_STUN | ZAP_OBJ_DAMAGE
|
||||
var/chain
|
||||
var/mob/living/caster
|
||||
|
||||
|
||||
@@ -441,7 +441,7 @@
|
||||
modifier = -100
|
||||
mix_message = "<span class='boldannounce'>The teslium starts to spark as electricity arcs away from it!</span>"
|
||||
mix_sound = 'sound/machines/defib_zap.ogg'
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_IS_TESLA
|
||||
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN
|
||||
|
||||
/datum/chemical_reaction/reagent_explosion/teslium_lightning/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/T1 = created_volume * 20 //100 units : Zap 3 times, with powers 2000/5000/12000. Tesla revolvers have a power of 10000 for comparison.
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
action_icon_state = "lightning0"
|
||||
sound = 'sound/magic/lightningbolt.ogg'
|
||||
active = FALSE
|
||||
projectile_var_overrides = list("zap_range" = 15, "zap_power" = 20000, "zap_flags" = ZAP_MOB_DAMAGE | ZAP_IS_TESLA)
|
||||
projectile_var_overrides = list("zap_range" = 15, "zap_power" = 20000, "zap_flags" = ZAP_MOB_DAMAGE)
|
||||
active_msg = "You energize your hand with arcane lightning!"
|
||||
deactive_msg = "You let the energy flow out of your hands back into yourself..."
|
||||
projectile_type = /obj/projectile/magic/aoe/lightning
|
||||
|
||||
Reference in New Issue
Block a user