///////////////////////////////////////////// //SPARK SYSTEM (like steam system) // The attach(atom/atom) proc is optional, and can be called to attach the effect // to something, like the RCD, so then you can just call start() and the sparks // will always spawn at the items location. ///////////////////////////////////////////// /proc/do_sparks(number, cardinal_only, datum/source) var/datum/effect_system/spark_spread/sparks = new sparks.set_up(number, cardinal_only, source) sparks.autocleanup = TRUE sparks.start() /obj/effect/particle_effect/sparks name = "sparks" icon_state = "sparks" anchored = TRUE light_system = OVERLAY_LIGHT light_range = 1.5 light_power = 0.8 light_color = LIGHT_COLOR_FIRE /obj/effect/particle_effect/sparks/Initialize(mapload) ..() return INITIALIZE_HINT_LATELOAD /obj/effect/particle_effect/sparks/LateInitialize() flick(icon_state, src) playsound(src, SFX_SPARKS, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) var/turf/T = loc if(isturf(T)) T.hotspot_expose(1000,100) QDEL_IN(src, 20) /obj/effect/particle_effect/sparks/Destroy() var/turf/T = loc if(isturf(T)) T.hotspot_expose(1000,100) return ..() /obj/effect/particle_effect/sparks/Move() ..() var/turf/T = loc if(isturf(T)) T.hotspot_expose(1000,100) /datum/effect_system/spark_spread effect_type = /obj/effect/particle_effect/sparks /datum/effect_system/spark_spread/quantum effect_type = /obj/effect/particle_effect/sparks/quantum //electricity /obj/effect/particle_effect/sparks/electricity name = "lightning" icon_state = "electricity" /obj/effect/particle_effect/sparks/quantum name = "quantum sparks" icon_state = "quantum_sparks" /datum/effect_system/lightning_spread effect_type = /obj/effect/particle_effect/sparks/electricity