mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 19:11:51 +00:00
Merge pull request #20083 from PKPenguin321/explosive-tesla
[READY] Explosive Tesla, Take 2
This commit is contained in:
@@ -401,6 +401,9 @@ var/bomb_set
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/nuclearbomb/tesla_act(var/power)
|
||||
..()
|
||||
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
|
||||
|
||||
#define NUKERANGE 127
|
||||
/obj/machinery/nuclearbomb/proc/explode()
|
||||
|
||||
@@ -105,6 +105,10 @@
|
||||
O << "The screen bursts into static."
|
||||
..()
|
||||
|
||||
/obj/machinery/camera/tesla_act(var/power)//EMP proof upgrade also makes it tesla immune
|
||||
if(isEmpProof())
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/camera/blob_act(obj/effect/blob/B)
|
||||
if(B && B.loc == loc)
|
||||
|
||||
@@ -467,10 +467,8 @@ Class Procs:
|
||||
/obj/machinery/tesla_act(var/power)
|
||||
..()
|
||||
if(prob(85))
|
||||
emp_act(2)
|
||||
explosion(src.loc,1,2,4,flame_range = 2, adminlog = 0, smoke = 0)
|
||||
else if(prob(50))
|
||||
ex_act(3)
|
||||
else if(prob(90))
|
||||
ex_act(2)
|
||||
emp_act(2)
|
||||
else
|
||||
ex_act(1)
|
||||
ex_act(2)
|
||||
|
||||
@@ -48,6 +48,11 @@
|
||||
var/datum/effect_system/expl_particles/P = new/datum/effect_system/expl_particles()
|
||||
P.set_up(10, 0, location)
|
||||
P.start()
|
||||
|
||||
/datum/effect_system/explosion/smoke
|
||||
|
||||
/datum/effect_system/explosion/smoke/start()
|
||||
..()
|
||||
spawn(5)
|
||||
var/datum/effect_system/smoke_spread/S = new
|
||||
S.set_up(2, location)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//TODO: Flash range does nothing currently
|
||||
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0)
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1)
|
||||
set waitfor = 0
|
||||
src = null //so we don't abort once src is deleted
|
||||
epicenter = get_turf(epicenter)
|
||||
@@ -70,9 +70,14 @@
|
||||
SSmachine.postpone(postponeCycles)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
if(smoke)
|
||||
var/datum/effect_system/explosion/smoke/E = new/datum/effect_system/explosion/smoke()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
else
|
||||
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
|
||||
@@ -264,8 +264,17 @@
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/structure/cable/C = T.get_cable_node()
|
||||
if(C)
|
||||
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
|
||||
tesla_zap(src, 3, C.powernet.avail * 0.08) //ZAP for 1/5000 of the amount of power, which is from 15-25 with 200000W
|
||||
var/mob/living/closest_mob
|
||||
for(var/A in oview(src, 3))
|
||||
if(istype(A, /mob/living))
|
||||
var/dist = get_dist(src, A)
|
||||
if(dist <= 3)
|
||||
closest_mob = A
|
||||
if(closest_mob)
|
||||
var/shock_damage = C.powernet.avail * 0.08
|
||||
src.Beam(closest_mob, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5)
|
||||
closest_mob.electrocute_act(shock_damage, src, 1, tesla_shock = 1)//ZAP for 1/5000 of the amount of power, which is from 15-25 with 200000W
|
||||
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
|
||||
take_damage(tforce)
|
||||
|
||||
/obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
|
||||
|
||||
@@ -36,6 +36,10 @@ var/const/GRAV_NEEDS_WRENCH = 3
|
||||
if(prob(20))
|
||||
set_broken()
|
||||
|
||||
/obj/machinery/gravity_generator/tesla_act(var/power)
|
||||
..()
|
||||
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
|
||||
|
||||
/obj/machinery/gravity_generator/update_icon()
|
||||
..()
|
||||
icon_state = "[get_status()]_[sprite_number]"
|
||||
|
||||
@@ -535,6 +535,10 @@
|
||||
else
|
||||
flicker()
|
||||
|
||||
/obj/machinery/light/tesla_act(var/power)
|
||||
explosion(src.loc,0,0,0,flame_range = 5, adminlog = 0)
|
||||
qdel(src)
|
||||
|
||||
// called when area power state changes
|
||||
/obj/machinery/light/power_change()
|
||||
var/area/A = get_area(src)
|
||||
|
||||
@@ -38,6 +38,9 @@ var/list/blacklisted_tesla_types = typecacheof(list(/obj/machinery/atmospherics,
|
||||
var/energy_to_raise = 32
|
||||
var/energy_to_lower = -20
|
||||
|
||||
/obj/singularity/energy_ball/ex_act(severity, target)
|
||||
return
|
||||
|
||||
/obj/singularity/energy_ball/Destroy()
|
||||
if(orbiting && istype(orbiting, /obj/singularity/energy_ball))
|
||||
var/obj/singularity/energy_ball/EB = orbiting
|
||||
|
||||
Reference in New Issue
Block a user