Partial sparks boilerplate reduction (#26081)

* Partial sparks boilerplate reduction

- Lots of obects are making `/datum/effect_system/spark_spread`, setting
them up, firing them, and then not qdeling them afterwards.
- Makes a `do_sparks` global proc that takes the same arguments as `set_up`
and then calls `start` and then `qdel`
- Switches a bunch of things to use this proc
- Makes emitters keep their own spark_spread datum around, since they
spark so damn much.
- Also makes some things use timers and ports some things to Initialize.

* Compilation
This commit is contained in:
coiax
2017-04-12 18:59:45 +01:00
committed by AnturK
parent a1403bc424
commit de35ec5f67
21 changed files with 72 additions and 114 deletions

View File

@@ -162,9 +162,7 @@
used = 1 used = 1
var/mob/dead/observer/theghost = pick(nuke_candidates) var/mob/dead/observer/theghost = pick(nuke_candidates)
spawn_antag(theghost.client, get_turf(src), "syndieborg") spawn_antag(theghost.client, get_turf(src), "syndieborg")
var/datum/effect_system/spark_spread/S = new /datum/effect_system/spark_spread do_sparks(4, TRUE, src)
S.set_up(4, 1, src)
S.start()
qdel(src) qdel(src)
else else
to_chat(user, "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>") to_chat(user, "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>")

View File

@@ -21,10 +21,8 @@
if(!charge && !panel_open) if(!charge && !panel_open)
panel_open = TRUE panel_open = TRUE
icon_state = "[initial(icon_state)]-o" icon_state = "[initial(icon_state)]-o"
var/datum/effect_system/spark_spread/spks = new(get_turf(src)) do_sparks(10, FALSE, src)
spks.set_up(10, 0, get_turf(src)) visible_message("<span class='warning'>[src]'s panel flies open with a flurry of sparks!</span>")
spks.start()
visible_message("<span class='warning'>[src]'s panel flies open with a flurry of spark</span>")
update_icon() update_icon()
/obj/item/weapon/stock_parts/cell/power_drain(clockcult_user) /obj/item/weapon/stock_parts/cell/power_drain(clockcult_user)

View File

@@ -24,7 +24,7 @@
set_light(2) set_light(2)
GLOB.poi_list |= src GLOB.poi_list |= src
spark_system = new spark_system = new
spark_system.set_up(5, 1, src) spark_system.set_up(5, TRUE, src)
countdown = new(src) countdown = new(src)
/obj/machinery/dominator/examine(mob/user) /obj/machinery/dominator/examine(mob/user)
@@ -129,9 +129,8 @@
set_broken() set_broken()
GLOB.poi_list.Remove(src) GLOB.poi_list.Remove(src)
gang = null gang = null
qdel(spark_system) QDEL_NULL(spark_system)
qdel(countdown) QDEL_NULL(countdown)
countdown = null
STOP_PROCESSING(SSmachines, src) STOP_PROCESSING(SSmachines, src)
return ..() return ..()

View File

@@ -339,9 +339,7 @@
return FALSE //Already shocked someone recently? return FALSE //Already shocked someone recently?
if(!prob(prb)) if(!prob(prb))
return FALSE //you lucked out, no shock for you return FALSE //you lucked out, no shock for you
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, src)
s.set_up(5, 1, src)
s.start() //sparks always.
var/tmp/check_range = TRUE var/tmp/check_range = TRUE
if(electrocute_mob(user, get_area(src), src, 1, check_range)) if(electrocute_mob(user, get_area(src), src, 1, check_range))
hasShocked = TRUE hasShocked = TRUE

View File

@@ -23,7 +23,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
/datum/effect_system /datum/effect_system
var/number = 3 var/number = 3
var/cardinals = 0 var/cardinals = FALSE
var/turf/location var/turf/location
var/atom/holder var/atom/holder
var/effect_type var/effect_type
@@ -34,7 +34,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
location = null location = null
return ..() return ..()
/datum/effect_system/proc/set_up(n = 3, c = 0, loca) /datum/effect_system/proc/set_up(n = 3, c = FALSE, loca)
if(n > 10) if(n > 10)
n = 10 n = 10
number = n number = n

View File

@@ -5,6 +5,17 @@
// will always spawn at the items location. // will always spawn at the items location.
///////////////////////////////////////////// /////////////////////////////////////////////
/proc/do_sparks(n, c, source)
// n - number of sparks
// c - cardinals, bool, do the sparks only move in cardinal directions?
// source - source of the sparks.
var/datum/effect_system/spark_spread/sparks = new
sparks.set_up(n, c, source)
sparks.start()
qdel(sparks)
/obj/effect/particle_effect/sparks /obj/effect/particle_effect/sparks
name = "sparks" name = "sparks"
icon_state = "sparks" icon_state = "sparks"

View File

@@ -247,7 +247,7 @@
var/armed = 0 var/armed = 0
var/trap_damage = 20 var/trap_damage = 20
/obj/item/weapon/restraints/legcuffs/beartrap/New() /obj/item/weapon/restraints/legcuffs/beartrap/Initialize()
..() ..()
icon_state = "[initial(icon_state)][armed]" icon_state = "[initial(icon_state)][armed]"
@@ -307,9 +307,7 @@
/obj/item/weapon/restraints/legcuffs/beartrap/energy/proc/dissipate() /obj/item/weapon/restraints/legcuffs/beartrap/energy/proc/dissipate()
if(!istype(loc, /mob)) if(!istype(loc, /mob))
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
qdel(src) qdel(src)
/obj/item/weapon/restraints/legcuffs/beartrap/energy/attack_hand(mob/user) /obj/item/weapon/restraints/legcuffs/beartrap/energy/attack_hand(mob/user)

View File

@@ -350,9 +350,7 @@
else else
to_chat(user, "<span class='userdanger'>You stick \the [W] into the light socket!</span>") to_chat(user, "<span class='userdanger'>You stick \the [W] into the light socket!</span>")
if(has_power() && (W.flags & CONDUCT)) if(has_power() && (W.flags & CONDUCT))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(3, TRUE, src)
s.set_up(3, 1, src)
s.start()
if (prob(75)) if (prob(75))
electrocute_mob(user, get_area(src), src, rand(0.7,1.0), TRUE) electrocute_mob(user, get_area(src), src, rand(0.7,1.0), TRUE)
else else
@@ -523,9 +521,7 @@
if(status == LIGHT_OK || status == LIGHT_BURNED) if(status == LIGHT_OK || status == LIGHT_BURNED)
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
if(on) if(on)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(3, TRUE, src)
s.set_up(3, 1, src)
s.start()
status = LIGHT_BROKEN status = LIGHT_BROKEN
update() update()

View File

@@ -123,9 +123,7 @@
if(hasShocked) if(hasShocked)
return 0 return 0
hasShocked = 1 hasShocked = 1
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, AM.loc)
s.set_up(5, 1, AM.loc)
s.start()
var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src))) var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src)))
AM.throw_at(target, 200, 4) AM.throw_at(target, 200, 4)
addtimer(CALLBACK(src, .proc/clear_shock), 5) addtimer(CALLBACK(src, .proc/clear_shock), 5)

View File

@@ -28,6 +28,8 @@
var/projectile_sound = 'sound/weapons/emitter.ogg' var/projectile_sound = 'sound/weapons/emitter.ogg'
var/datum/effect_system/spark_spread/sparks
/obj/machinery/power/emitter/New() /obj/machinery/power/emitter/New()
..() ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/emitter(null) var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/emitter(null)
@@ -87,11 +89,15 @@
if(state == 2 && anchored) if(state == 2 && anchored)
connect_to_network() connect_to_network()
sparks = new
sparks.set_up(5, TRUE, src)
/obj/machinery/power/emitter/Destroy() /obj/machinery/power/emitter/Destroy()
if(SSticker && SSticker.current_state == GAME_STATE_PLAYING) if(SSticker && SSticker.current_state == GAME_STATE_PLAYING)
message_admins("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1) message_admins("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Emitter deleted at ([x],[y],[z])") log_game("Emitter deleted at ([x],[y],[z])")
investigate_log("<font color='red'>deleted</font> at ([x],[y],[z]) at [get_area(src)]","singulo") investigate_log("<font color='red'>deleted</font> at ([x],[y],[z]) at [get_area(src)]","singulo")
QDEL_NULL(sparks)
return ..() return ..()
/obj/machinery/power/emitter/update_icon() /obj/machinery/power/emitter/update_icon()
@@ -198,9 +204,7 @@
A.setDir(src.dir) A.setDir(src.dir)
playsound(src.loc, projectile_sound, 25, 1) playsound(src.loc, projectile_sound, 25, 1)
if(prob(35)) if(prob(35))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread sparks.start()
s.set_up(5, 1, src)
s.start()
switch(dir) switch(dir)
if(NORTH) if(NORTH)
A.yo = 20 A.yo = 20

View File

@@ -152,9 +152,7 @@
return return
var/obj/structure/cable/N = T.get_cable_node() //get the connecting node cable, if there's one var/obj/structure/cable/N = T.get_cable_node() //get the connecting node cable, if there's one
if (prob(50) && electrocute_mob(usr, N, N, 1, TRUE)) //animate the electrocution if uncautious and unlucky if (prob(50) && electrocute_mob(usr, N, N, 1, TRUE)) //animate the electrocution if uncautious and unlucky
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, src)
s.set_up(5, 1, src)
s.start()
return return
C.use(10) C.use(10)

View File

@@ -62,9 +62,7 @@
if(do_after(user, 50*W.toolspeed, target = src)) if(do_after(user, 50*W.toolspeed, target = src))
if(!master || master.can_terminal_dismantle()) if(!master || master.can_terminal_dismantle())
if(prob(50) && electrocute_mob(user, powernet, src, 1, TRUE)) if(prob(50) && electrocute_mob(user, powernet, src, 1, TRUE))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, master)
s.set_up(5, 1, master)
s.start()
return return
new /obj/item/stack/cable_coil(loc, 10) new /obj/item/stack/cable_coil(loc, 10)
to_chat(user, "<span class='notice'>You cut the cables and dismantle the power terminal.</span>") to_chat(user, "<span class='notice'>You cut the cables and dismantle the power terminal.</span>")

View File

@@ -49,10 +49,8 @@
..() ..()
/obj/item/projectile/bullet/pellet/weak/on_range() /obj/item/projectile/bullet/pellet/weak/on_range()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src) ..()
sparks.start()
..()
/obj/item/projectile/bullet/pellet/overload /obj/item/projectile/bullet/pellet/overload
damage = 3 damage = 3
@@ -66,11 +64,9 @@
explosion(target, 0, 0, 2) explosion(target, 0, 0, 2)
/obj/item/projectile/bullet/pellet/overload/on_range() /obj/item/projectile/bullet/pellet/overload/on_range()
explosion(src, 0, 0, 2) explosion(src, 0, 0, 2)
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(3, TRUE, src)
sparks.set_up(3, 3, src) ..()
sparks.start()
..()
/obj/item/projectile/bullet/midbullet /obj/item/projectile/bullet/midbullet
damage = 20 damage = 20

View File

@@ -21,9 +21,7 @@
/obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = 0) /obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = 0)
. = ..() . = ..()
if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks!
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
else if(iscarbon(target)) else if(iscarbon(target))
var/mob/living/carbon/C = target var/mob/living/carbon/C = target
if(C.dna && C.dna.check_mutation(HULK)) if(C.dna && C.dna.check_mutation(HULK))
@@ -32,9 +30,7 @@
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5) addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
..() ..()
/obj/item/projectile/energy/net /obj/item/projectile/energy/net
@@ -45,7 +41,7 @@
hitsound = 'sound/weapons/taserhit.ogg' hitsound = 'sound/weapons/taserhit.ogg'
range = 10 range = 10
/obj/item/projectile/energy/net/New() /obj/item/projectile/energy/net/Initialize()
..() ..()
SpinAnimation() SpinAnimation()
@@ -53,13 +49,11 @@
if(isliving(target)) if(isliving(target))
var/turf/Tloc = get_turf(target) var/turf/Tloc = get_turf(target)
if(!locate(/obj/effect/nettingportal) in Tloc) if(!locate(/obj/effect/nettingportal) in Tloc)
new/obj/effect/nettingportal(Tloc) new /obj/effect/nettingportal(Tloc)
..() ..()
/obj/item/projectile/energy/net/on_range() /obj/item/projectile/energy/net/on_range()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
..() ..()
/obj/effect/nettingportal /obj/effect/nettingportal
@@ -69,7 +63,7 @@
icon_state = "dragnetfield" icon_state = "dragnetfield"
anchored = 1 anchored = 1
/obj/effect/nettingportal/New() /obj/effect/nettingportal/Initialize()
..() ..()
set_light(3) set_light(3)
var/obj/item/device/radio/beacon/teletarget = null var/obj/item/device/radio/beacon/teletarget = null
@@ -77,16 +71,18 @@
if(com.target) if(com.target)
if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged) if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
teletarget = com.target teletarget = com.target
addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
/obj/effect/nettingportal/proc/pop(teletarget)
if(teletarget) if(teletarget)
spawn(30) for(var/mob/living/L in get_turf(src))
for(var/mob/living/L in get_turf(src)) do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon
do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon
qdel(src)
else else
spawn(30) for(var/mob/living/L in get_turf(src))
for(var/mob/living/L in get_turf(src)) do_teleport(L, L, 15) //Otherwise it just warps you off somewhere.
do_teleport(L, L, 15) //Otherwise it just warps you off somewhere.
qdel(src) qdel(src)
/obj/item/projectile/energy/trap /obj/item/projectile/energy/trap
@@ -106,7 +102,7 @@
..() ..()
/obj/item/projectile/energy/trap/on_range() /obj/item/projectile/energy/trap/on_range()
new/obj/item/weapon/restraints/legcuffs/beartrap/energy(loc) new /obj/item/weapon/restraints/legcuffs/beartrap/energy(loc)
..() ..()
/obj/item/projectile/energy/trap/cyborg /obj/item/projectile/energy/trap/cyborg
@@ -119,21 +115,16 @@
/obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = 0) /obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = 0)
if(!ismob(target) || blocked >= 100) if(!ismob(target) || blocked >= 100)
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
qdel(src) qdel(src)
if(iscarbon(target)) if(iscarbon(target))
var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target)) var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target))
B.Crossed(target) B.Crossed(target)
spawn(10) QDEL_IN(src, 10)
qdel(src)
..() ..()
/obj/item/projectile/energy/trap/cyborg/on_range() /obj/item/projectile/energy/trap/cyborg/on_range()
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread do_sparks(1, TRUE, src)
sparks.set_up(1, 1, src)
sparks.start()
qdel(src) qdel(src)
/obj/item/projectile/energy/declone /obj/item/projectile/energy/declone

View File

@@ -261,7 +261,6 @@
color = "#EFD65A" color = "#EFD65A"
complementary_color = "#00E5B1" complementary_color = "#00E5B1"
message_living = ", and you feel a horrible tingling sensation" message_living = ", and you feel a horrible tingling sensation"
var/datum/effect_system/spark_spread/spark_system = new/datum/effect_system/spark_spread()
/datum/reagent/blob/energized_jelly/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) /datum/reagent/blob/energized_jelly/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
reac_volume = ..() reac_volume = ..()
@@ -272,8 +271,7 @@
/datum/reagent/blob/energized_jelly/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag) /datum/reagent/blob/energized_jelly/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && B.obj_integrity - damage <= 0 && prob(10)) if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && B.obj_integrity - damage <= 0 && prob(10))
spark_system.set_up(rand(2, 4), 0, B) do_sparks(rand(2, 4), FALSE, B)
spark_system.start()
return ..() return ..()
/datum/reagent/blob/energized_jelly/tesla_reaction(obj/structure/blob/B, power) /datum/reagent/blob/energized_jelly/tesla_reaction(obj/structure/blob/B, power)

View File

@@ -216,9 +216,7 @@
if(holder.has_reagent("stabilizing_agent")) if(holder.has_reagent("stabilizing_agent"))
return return
var/location = get_turf(holder.my_atom) var/location = get_turf(holder.my_atom)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(2, TRUE, location)
s.set_up(2, 1, location)
s.start()
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location)) for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location))
if(C.flash_act()) if(C.flash_act())
if(get_dist(C, location) < 4) if(get_dist(C, location) < 4)
@@ -235,9 +233,7 @@
/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom) var/location = get_turf(holder.my_atom)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(2, TRUE, location)
s.set_up(2, 1, location)
s.start()
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location)) for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location))
if(C.flash_act()) if(C.flash_act())
if(get_dist(C, location) < 4) if(get_dist(C, location) < 4)
@@ -402,4 +398,4 @@
required_reagents = list("nitrous_oxide" = 1) required_reagents = list("nitrous_oxide" = 1)
strengthdiv = 7 strengthdiv = 7
required_temp = 575 required_temp = 575
modifier = 1 modifier = 1

View File

@@ -30,9 +30,7 @@
return 0 return 0
if(!prob(prb)) if(!prob(prb))
return 0 return 0
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, src)
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7, TRUE)) if (electrocute_mob(user, get_area(src), src, 0.7, TRUE))
return 1 return 1
else else

View File

@@ -295,9 +295,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
if(isliving(target) && message) if(isliving(target) && message)
to_chat(target, text("[message]")) to_chat(target, text("[message]"))
if(sparks_spread) if(sparks_spread)
var/datum/effect_system/spark_spread/sparks = new do_sparks(sparks_amt, FALSE, location)
sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is
sparks.start()
if(smoke_spread) if(smoke_spread)
if(smoke_spread == 1) if(smoke_spread == 1)
var/datum/effect_system/smoke_spread/smoke = new var/datum/effect_system/smoke_spread/smoke = new

View File

@@ -50,9 +50,7 @@
if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad
return return
var/mob/M = target var/mob/M = target
var/datum/effect_system/spark_spread/sparks = new do_sparks(4, FALSE, M.loc)
sparks.set_up(4, 0, M.loc) //no idea what the 0 is
sparks.start()
M.gib() M.gib()
..() ..()
@@ -73,4 +71,4 @@
var/mob/living/M = target var/mob/living/M = target
M.Stun(2) M.Stun(2)
M.petrify() M.petrify()
..() ..()

View File

@@ -167,8 +167,6 @@
/obj/item/weapon/rcs/emag_act(mob/user) /obj/item/weapon/rcs/emag_act(mob/user)
if(!emagged) if(!emagged)
emagged = 1 emagged = TRUE
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, src)
s.set_up(5, 1, src)
s.start()
to_chat(user, "<span class='caution'>You emag the RCS. Click on it to toggle between modes.</span>") to_chat(user, "<span class='caution'>You emag the RCS. Click on it to toggle between modes.</span>")

View File

@@ -139,20 +139,14 @@
var/datum/browser/popup = new(user, "telesci", name, 300, 500) var/datum/browser/popup = new(user, "telesci", name, 300, 500)
popup.set_content(t) popup.set_content(t)
popup.open() popup.open()
return
/obj/machinery/computer/telescience/proc/sparks() /obj/machinery/computer/telescience/proc/sparks()
if(telepad) if(telepad)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, get_turf(telepad))
s.set_up(5, 1, get_turf(telepad))
s.start()
else
return
/obj/machinery/computer/telescience/proc/telefail() /obj/machinery/computer/telescience/proc/telefail()
sparks() sparks()
visible_message("<span class='warning'>The telepad weakly fizzles.</span>") visible_message("<span class='warning'>The telepad weakly fizzles.</span>")
return
/obj/machinery/computer/telescience/proc/doteleport(mob/user) /obj/machinery/computer/telescience/proc/doteleport(mob/user)
@@ -201,9 +195,7 @@
// use a lot of power // use a lot of power
use_power(power * 10) use_power(power * 10)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread do_sparks(5, TRUE, get_turf(telepad))
s.set_up(5, 1, get_turf(telepad))
s.start()
temp_msg = "Teleport successful.<BR>" temp_msg = "Teleport successful.<BR>"
if(teles_left < 10) if(teles_left < 10)
@@ -211,10 +203,7 @@
else else
temp_msg += "Data printed below." temp_msg += "Data printed below."
var/sparks = get_turf(target) do_sparks(5, TRUE, get_turf(target))
var/datum/effect_system/spark_spread/y = new /datum/effect_system/spark_spread
y.set_up(5, 1, sparks)
y.start()
var/turf/source = target var/turf/source = target
var/turf/dest = get_turf(telepad) var/turf/dest = get_turf(telepad)