Files
Polaris/code/modules/power/tesla/telsa_construction.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

32 lines
1.2 KiB
Plaintext

//////////////////////////
// Circuits and Research
//////////////////////////
// Tesla coils are built as machines using a circuit researchable in RnD
/obj/item/weapon/circuitboard/tesla_coil
name = T_BOARD("tesla coil")
build_path = /obj/machinery/power/tesla_coil
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
/datum/design/circuit/tesla_coil
name = "Machine Design (Tesla Coil Board)"
desc = "The circuit board for a tesla coil."
id = "tesla_coil"
build_path = /obj/item/weapon/circuitboard/tesla_coil
req_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
sort_string = "MAAAC"
// Grounding rods can be built as machines using a circuit made in an autolathe.
/obj/item/weapon/circuitboard/grounding_rod
name = T_BOARD("grounding rod")
build_path = /obj/machinery/power/grounding_rod
board_type = new /datum/frame/frame_types/machine
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list()
/datum/category_item/autolathe/engineering/grounding_rod
name = "grounding rod electronics"
path = /obj/item/weapon/circuitboard/grounding_rod