Files
CHOMPStation2/code/datums/wires/tesla_coil.dm
Leshana db0ba60f64 Implements the Tesla engine and supporting features (#4539)
* Adds "typecache" utility functions. A fast way to filter lists by type.

Ported from TG

* Ports the "orbit" feature and subsystem from TG

* Adds a feature that allows mobs and objs to "orbit" around some atom.  They literally are moved around in circles.  See the `orbit` proc in orbit.dm.
* Adds a subsystem that processes the actual movement of orbiting items.

* Adds utility methods for common machinery behavior.

* Adds default_unfasten_wrench which handles the standard anchor/unanchor behavior of wrenches being used on machines.  Together with the other default_x_tool machinery procs we can eliminate having that code duplicated in dozens of places!
* Adds is_wire_tool proc to easily detect when a machine is hit with a tool that should open its wires UI (if it has one).

Based on ideas from Paradise, with improvements for us.

* Implements the Tesla Engine

Ported from a mixture of TG and Paradise code and assets: Edison's Bane

Includes the tesla energy ball itself, the generator that makes it, tesla coils, grounding rods, the circuits and frames to build them.

* Switch dusting to zapping on impact and spin better

Ported /tg SpinAnimation which supports more than triangles.
2018-01-19 14:56:08 -06:00

19 lines
387 B
Plaintext

/datum/wires/tesla_coil
wire_count = 1
holder_type = /obj/machinery/power/tesla_coil
var/const/WIRE_ZAP = 1
/datum/wires/tesla_coil/CanUse(mob/living/L)
var/obj/machinery/power/tesla_coil/T = holder
if(T && T.panel_open)
return 1
return 0
/datum/wires/tesla_coil/UpdatePulsed(index)
var/obj/machinery/power/tesla_coil/T = holder
switch(index)
if(WIRE_ZAP)
T.zap()
..()