diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 247630c4bf8..b8d38a5cd5c 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -2154,11 +2154,6 @@
/obj/effect/decal/cleanable/oil,
/turf/closed/wall/r_wall,
/area/ruin/space/has_grav/ancientstation/deltaai)
-"fz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/field/generator,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"fA" = (
/obj/machinery/portable_atmospherics/canister/air,
/turf/open/floor/plating/airless{
@@ -4378,11 +4373,6 @@
},
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/proto)
-"kl" = (
-/obj/structure/table/reinforced,
-/obj/machinery/the_singularitygen,
-/turf/open/floor/plasteel/white,
-/area/ruin/space/has_grav/ancientstation/proto)
"km" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{
@@ -4500,14 +4490,6 @@
},
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/ancientstation/proto)
-"kz" = (
-/obj/machinery/light{
- dir = 4
- },
-/obj/structure/table/reinforced,
-/obj/item/paper/fluff/ruins/oldstation/protosing,
-/turf/open/floor/plasteel/white,
-/area/ruin/space/has_grav/ancientstation/proto)
"kA" = (
/obj/machinery/atmospherics/pipe/manifold/yellow/visible,
/turf/open/floor/plasteel,
@@ -5168,6 +5150,14 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
+"mm" = (
+/obj/structure/table/reinforced,
+/obj/machinery/power/supermatter_crystal/shard,
+/obj/structure/closet/crate/engineering{
+ name = "supermatter shard crate"
+ },
+/turf/open/floor/plasteel/white,
+/area/ruin/space/has_grav/ancientstation/proto)
"mn" = (
/turf/open/floor/plasteel/white/corner{
dir = 4
@@ -5957,14 +5947,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
-"nU" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/sheet/mineral/uranium{
- amount = 25
- },
-/obj/structure/closet/crate,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"nV" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/science{
@@ -6699,11 +6681,6 @@
/obj/item/stack/rods,
/turf/template_noop,
/area/space/nearstation)
-"td" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/particle_accelerator/particle_emitter/center,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"tn" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/chair,
@@ -6719,12 +6696,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
-"tT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/particle_accelerator/end_cap,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"up" = (
/obj/machinery/light/small{
dir = 8
@@ -6745,6 +6716,14 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/betacorridor)
+"uP" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/item/stack/sheet/mineral/uranium{
+ amount = 25
+ },
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/ancientstation/deltacorridor)
"uR" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3,
@@ -6801,6 +6780,11 @@
/obj/item/wallframe/camera,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/ancientstation/deltaai)
+"wj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/ancientstation/deltacorridor)
"wz" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{
@@ -6808,11 +6792,6 @@
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
-"wC" = (
-/obj/structure/particle_accelerator/power_box,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"wL" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -6931,11 +6910,6 @@
/obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/engine/o2,
/area/ruin/space/has_grav/ancientstation/atmo)
-"BH" = (
-/obj/structure/particle_accelerator/particle_emitter/left,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"BX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/decal/cleanable/glass,
@@ -7167,11 +7141,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
-"Ku" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/particle_accelerator/control_box,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"Ky" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating/airless,
@@ -7186,6 +7155,16 @@
/obj/machinery/light/small,
/turf/open/floor/engine/n2,
/area/ruin/space/has_grav/ancientstation/atmo)
+"KG" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/item/paper/fluff/ruins/oldstation/protosing{
+ info = "*Supermatter Crystal Shard*
Modern power generation typically comes in two forms, a Fusion Generator or a Fission Generator. Fusion provides the best space to power \ntratio, and is typically seen on military or high security ships and stations, however Fission reactors require the usage of expensive, and rare, materials in its construction. Fission generators are massive and bulky, and require a large reserve of uranium to power, however they are extremely cheap to operate and oft need little maintenance once \ntoperational.
The Supermatter aims to alter this, a functional Supermatter is essentially a gas producer that generates far more radiation than Fusion or Fission \ntgenerators can ever hope to produce. "
+ },
+/turf/open/floor/plasteel/white,
+/area/ruin/space/has_grav/ancientstation/proto)
"KO" = (
/obj/item/stack/rods,
/turf/open/floor/plating/airless{
@@ -7212,12 +7191,6 @@
/obj/structure/window/reinforced,
/turf/open/floor/engine/o2,
/area/ruin/space/has_grav/ancientstation/atmo)
-"Ll" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/particle_accelerator/particle_emitter/right,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"Ln" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/yellow{
@@ -7470,12 +7443,6 @@
},
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
-"Sf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/particle_accelerator/fuel_chamber,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
-/area/ruin/space/has_grav/ancientstation/deltacorridor)
"Sn" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -7491,6 +7458,22 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/ruin/space/has_grav/ancientstation/kitchen)
+"SI" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate/engineering{
+ name = "radiation suit crate"
+ },
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/geiger_counter,
+/obj/item/geiger_counter,
+/obj/item/geiger_counter,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/ancientstation/deltacorridor)
"SP" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/mirror{
@@ -7733,6 +7716,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/atmo)
+"Zk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/crate,
+/obj/item/pipe_dispenser,
+/obj/item/pipe_dispenser,
+/turf/open/floor/plating,
+/area/ruin/space/has_grav/ancientstation/deltacorridor)
(1,1,1) = {"
aa
@@ -11444,8 +11434,8 @@ dy
Yr
ca
jA
-kl
-kz
+mm
+KG
jA
kU
lc
@@ -11681,9 +11671,9 @@ eZ
dh
dh
dh
-nU
-td
-tT
+dh
+dh
+wj
bE
Ve
dh
@@ -11725,14 +11715,14 @@ AF
fV
bE
eZ
-fz
-fz
+hK
+hK
dk
-hK
-hK
-Ku
-Ll
-Sf
+SI
+dh
+dh
+wj
+wj
bE
jg
jz
@@ -11774,14 +11764,14 @@ bE
bY
bE
bE
-fz
-fz
-fz
hK
hK
-BH
-wC
-bE
+uP
+Zk
+dh
+dh
+dh
+wj
bE
bE
bE
@@ -11831,7 +11821,7 @@ bE
bE
bE
bE
-gK
+bE
gK
gK
gK
@@ -11881,7 +11871,7 @@ gK
gK
gK
gK
-aa
+gK
aa
aa
aa
diff --git a/code/datums/wires/particle_accelerator.dm b/code/datums/wires/particle_accelerator.dm
deleted file mode 100644
index e58dba4631f..00000000000
--- a/code/datums/wires/particle_accelerator.dm
+++ /dev/null
@@ -1,48 +0,0 @@
-/datum/wires/particle_accelerator/control_box
- holder_type = /obj/machinery/particle_accelerator/control_box
- proper_name = "Particle Accelerator"
-
-/datum/wires/particle_accelerator/control_box/New(atom/holder)
- wires = list(
- WIRE_POWER, WIRE_STRENGTH, WIRE_LIMIT,
- WIRE_INTERFACE
- )
- add_duds(2)
- ..()
-
-/datum/wires/particle_accelerator/control_box/interactable(mob/user)
- var/obj/machinery/particle_accelerator/control_box/C = holder
- if(C.construction_state == 2)
- return TRUE
-
-/datum/wires/particle_accelerator/control_box/on_pulse(wire)
- var/obj/machinery/particle_accelerator/control_box/C = holder
- switch(wire)
- if(WIRE_POWER)
- C.toggle_power()
- if(WIRE_STRENGTH)
- C.add_strength()
- if(WIRE_INTERFACE)
- C.interface_control = !C.interface_control
- if(WIRE_LIMIT)
- C.visible_message("[icon2html(C, viewers(holder))][C] makes a large whirring noise.")
-
-/datum/wires/particle_accelerator/control_box/on_cut(wire, mend)
- var/obj/machinery/particle_accelerator/control_box/C = holder
- switch(wire)
- if(WIRE_POWER)
- if(C.active == !mend)
- C.toggle_power()
- if(WIRE_STRENGTH)
- for(var/i = 1; i < 3; i++)
- C.remove_strength()
- if(WIRE_INTERFACE)
- if(!mend)
- C.interface_control = FALSE
- if(WIRE_LIMIT)
- C.strength_upper_limit = (mend ? 2 : 3)
- if(C.strength_upper_limit < C.strength)
- C.remove_strength()
-
-/datum/wires/particle_accelerator/control_box/emp_pulse() // to prevent singulo from pulsing wires
- return
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index 583632d581b..8c4ec8c3a67 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -198,10 +198,6 @@
icon_state = "engineering"
build_path = /obj/machinery/power/port_gen/pacman/super
-/obj/item/circuitboard/machine/pacman/mrs
- name = "MRSPACMAN-type Generator (Machine Board)"
- build_path = /obj/machinery/power/port_gen/pacman/mrs
-
/obj/item/circuitboard/machine/power_compressor
name = "Power Compressor (Machine Board)"
icon_state = "engineering"
diff --git a/code/modules/cargo/bounties/engineering.dm b/code/modules/cargo/bounties/engineering.dm
index 63e0b56d2ef..2626ededb0f 100644
--- a/code/modules/cargo/bounties/engineering.dm
+++ b/code/modules/cargo/bounties/engineering.dm
@@ -34,18 +34,6 @@
description = "Our R&D department is working on the development of more efficient electrical batteries using hydrogen as a catalyst. Ship us a tank full of it. (20 Moles)"
gas_type = /datum/gas/hydrogen
-/datum/bounty/item/engineering/energy_ball
- name = "Contained Tesla Ball"
- description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper."
- reward = 75000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle
- wanted_types = list(/obj/singularity/energy_ball)
-
-/datum/bounty/item/engineering/energy_ball/applies_to(obj/O)
- if(!..())
- return FALSE
- var/obj/singularity/energy_ball/T = O
- return !T.miniball
-
/datum/bounty/item/engineering/emitter
name = "Emitter"
description = "We think there may be a defect in your station's emitter designs, based on the sheer number of delaminations your sector seems to see. Ship us one of yours."
diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm
index 1afbc87285e..93461e281f3 100644
--- a/code/modules/cargo/exports/large_objects.dm
+++ b/code/modules/cargo/exports/large_objects.dm
@@ -81,16 +81,6 @@
unit_name = "tesla coil"
export_types = list(/obj/machinery/power/tesla_coil)
-/datum/export/large/pa
- cost = 350
- unit_name = "particle accelerator part"
- export_types = list(/obj/structure/particle_accelerator)
-
-/datum/export/large/pa/controls
- cost = 500
- unit_name = "particle accelerator control console"
- export_types = list(/obj/machinery/particle_accelerator/control_box)
-
/datum/export/large/supermatter
cost = 8000
unit_name = "supermatter shard"
@@ -101,17 +91,6 @@
unit_name = "grounding rod"
export_types = list(/obj/machinery/power/grounding_rod)
-/datum/export/large/tesla_gen
- cost = 4000
- unit_name = "energy ball generator"
- export_types = list(/obj/machinery/the_singularitygen/tesla)
-
-/datum/export/large/singulo_gen
- cost = 4000
- unit_name = "gravitational singularity generator"
- export_types = list(/obj/machinery/the_singularitygen)
- include_subtypes = FALSE
-
/datum/export/large/iv
cost = 50
unit_name = "iv drip"
diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm
index 621b1a572a7..a73fb583a75 100644
--- a/code/modules/cargo/exports/tools.dm
+++ b/code/modules/cargo/exports/tools.dm
@@ -136,26 +136,6 @@
unit_name = "rapid pipe dispenser"
export_types = list(/obj/item/pipe_dispenser)
-/datum/export/singulo //failsafe in case someone decides to ship a live singularity to CentCom without the corresponding bounty
- cost = 1
- unit_name = "singularity"
- export_types = list(/obj/singularity)
- include_subtypes = FALSE
-
-/datum/export/singulo/total_printout(datum/export_report/ex, notes = TRUE)
- . = ..()
- if(. && notes)
- . += " ERROR: Invalid object detected."
-
-/datum/export/singulo/tesla //see above
- unit_name = "energy ball"
- export_types = list(/obj/singularity/energy_ball)
-
-/datum/export/singulo/tesla/total_printout(datum/export_report/ex, notes = TRUE)
- . = ..()
- if(. && notes)
- . += " ERROR: Unscheduled energy ball delivery detected."
-
//artisanal exports for the mom and pops
/datum/export/soap
cost = 75
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 50514a05058..a06a0308041 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -886,7 +886,7 @@
/datum/supply_pack/engine/grounding_rods
name = "Grounding Rod Crate"
- desc = "Four grounding rods guaranteed to keep any uppity tesla's lightning under control."
+ desc = "Four grounding rods guaranteed to keep any uppity tesla coil's lightning under control."
cost = 1700
contains = list(/obj/machinery/power/grounding_rod,
/obj/machinery/power/grounding_rod,
@@ -895,19 +895,6 @@
crate_name = "grounding rod crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
-/datum/supply_pack/engine/particle_accelerator
- name = "Particle Accelerator Crate"
- desc = "A supermassive black hole or hyper-powered teslaball are the perfect way to spice up any party! This \"My First Apocalypse\" kit contains everything you need to build your own Particle Accelerator! Ages 10 and up."
- cost = 3000
- contains = list(/obj/structure/particle_accelerator/fuel_chamber,
- /obj/machinery/particle_accelerator/control_box,
- /obj/structure/particle_accelerator/particle_emitter/center,
- /obj/structure/particle_accelerator/particle_emitter/left,
- /obj/structure/particle_accelerator/particle_emitter/right,
- /obj/structure/particle_accelerator/power_box,
- /obj/structure/particle_accelerator/end_cap)
- crate_name = "particle accelerator crate"
-
/datum/supply_pack/engine/collector
name = "Radiation Collector Crate"
desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!"
@@ -917,13 +904,6 @@
/obj/machinery/power/rad_collector)
crate_name = "collector crate"
-/datum/supply_pack/engine/sing_gen
- name = "Singularity Generator Crate"
- desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included."
- cost = 5000
- contains = list(/obj/machinery/the_singularitygen)
- crate_name = "singularity generator crate"
-
/datum/supply_pack/engine/solar
name = "Solar Panel Crate"
desc = "Go green with this DIY advanced solar array. Contains twenty one solar assemblies, a solar-control circuit board, and tracker. If you have any questions, please check out the enclosed instruction book."
@@ -967,7 +947,7 @@
/datum/supply_pack/engine/tesla_coils
name = "Tesla Coil Crate"
- desc = "Whether it's high-voltage executions, creating research points, or just plain old power generation: This pack of four Tesla coils can do it all!"
+ desc = "Whether it's high-voltage executions, creating research points, or just plain old assistant electrofrying: This pack of four Tesla coils can do it all!"
cost = 2500
contains = list(/obj/machinery/power/tesla_coil,
/obj/machinery/power/tesla_coil,
@@ -976,13 +956,6 @@
crate_name = "tesla coil crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
-/datum/supply_pack/engine/tesla_gen
- name = "Tesla Generator Crate"
- desc = "The key to unlocking the power of the Tesla energy ball. Particle Accelerator not included."
- cost = 5000
- contains = list(/obj/machinery/the_singularitygen/tesla)
- crate_name = "tesla generator crate"
-
//////////////////////////////////////////////////////////////////////////////
/////////////////////// Canisters & Materials ////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 636ad2b3488..0cb5e24c720 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -284,15 +284,3 @@
/obj/machinery/power/port_gen/pacman/super/overheat()
explosion(src.loc, 3, 3, 3, -1)
-
-/obj/machinery/power/port_gen/pacman/mrs
- name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator"
- base_icon = "portgen2"
- icon_state = "portgen2_0"
- circuit = /obj/item/circuitboard/machine/pacman/mrs
- sheet_path = /obj/item/stack/sheet/mineral/diamond
- power_gen = 40000
- time_per_sheet = 80
-
-/obj/machinery/power/port_gen/pacman/mrs/overheat()
- explosion(src.loc, 4, 4, 4, -1)
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
deleted file mode 100644
index 2aefa8dc789..00000000000
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ /dev/null
@@ -1,69 +0,0 @@
-/obj/effect/accelerated_particle
- name = "Accelerated Particles"
- desc = "Small things moving very fast."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "particle"
- anchored = TRUE
- density = FALSE
- var/movement_range = 10
- var/energy = 10
- var/speed = 1
-
-/obj/effect/accelerated_particle/weak
- movement_range = 8
- energy = 5
-
-/obj/effect/accelerated_particle/strong
- movement_range = 15
- energy = 15
-
-/obj/effect/accelerated_particle/powerful
- movement_range = 20
- energy = 50
-
-
-/obj/effect/accelerated_particle/New(loc)
- ..()
-
- addtimer(CALLBACK(src, .proc/move), 1)
-
-
-/obj/effect/accelerated_particle/Bump(atom/A)
- if(A)
- if(isliving(A))
- toxmob(A)
- else if(istype(A, /obj/machinery/the_singularitygen))
- var/obj/machinery/the_singularitygen/S = A
- S.energy += energy
- else if(istype(A, /obj/singularity))
- var/obj/singularity/S = A
- S.energy += energy
- else if(istype(A, /obj/structure/blob))
- var/obj/structure/blob/B = A
- B.take_damage(energy*0.6)
- movement_range = 0
-
-/obj/effect/accelerated_particle/Crossed(atom/A)
- . = ..()
- if(isliving(A))
- toxmob(A)
-
-
-/obj/effect/accelerated_particle/ex_act(severity, target)
- qdel(src)
-
-/obj/effect/accelerated_particle/singularity_pull()
- return
-
-/obj/effect/accelerated_particle/proc/toxmob(mob/living/M)
- M.rad_act(energy*6)
-
-/obj/effect/accelerated_particle/proc/move()
- if(!step(src,dir))
- forceMove(get_step(src,dir))
- movement_range--
- if(movement_range == 0)
- qdel(src)
- else
- sleep(speed)
- move()
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
deleted file mode 100644
index 816fa750795..00000000000
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ /dev/null
@@ -1,181 +0,0 @@
-/*Composed of 7 parts :
-
- 3 Particle Emitters
- 1 Power Box
- 1 Fuel Chamber
- 1 End Cap
- 1 Control computer
-
- Setup map
-
- |EC|
- CC|FC|
- |PB|
- PE|PE|PE
-
-*/
-#define PA_CONSTRUCTION_UNSECURED 0
-#define PA_CONSTRUCTION_UNWIRED 1
-#define PA_CONSTRUCTION_PANEL_OPEN 2
-#define PA_CONSTRUCTION_COMPLETE 3
-
-/obj/structure/particle_accelerator
- name = "Particle Accelerator"
- desc = "Part of a Particle Accelerator."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "none"
- anchored = FALSE
- density = TRUE
- max_integrity = 500
- armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 80)
-
- var/obj/machinery/particle_accelerator/control_box/master = null
- var/construction_state = PA_CONSTRUCTION_UNSECURED
- var/reference = null
- var/powered = 0
- var/strength = null
-
-/obj/structure/particle_accelerator/examine(mob/user)
- . = ..()
-
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED)
- . += "Looks like it's not attached to the flooring."
- if(PA_CONSTRUCTION_UNWIRED)
- . += "It is missing some cables."
- if(PA_CONSTRUCTION_PANEL_OPEN)
- . += "The panel is open."
-
-/obj/structure/particle_accelerator/Destroy()
- construction_state = PA_CONSTRUCTION_UNSECURED
- if(master)
- master.connected_parts -= src
- master.assembled = 0
- master = null
- return ..()
-
-/obj/structure/particle_accelerator/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS )
-
-
-/obj/structure/particle_accelerator/set_anchored(anchorvalue)
- . = ..()
- if(isnull(.))
- return
- construction_state = anchorvalue ? PA_CONSTRUCTION_UNWIRED : PA_CONSTRUCTION_UNSECURED
- update_state()
- update_icon()
-
-/obj/structure/particle_accelerator/attackby(obj/item/W, mob/user, params)
- var/did_something = FALSE
-
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED)
- if(W.tool_behaviour == TOOL_WRENCH && !isinspace())
- W.play_tool_sound(src, 75)
- set_anchored(TRUE)
- user.visible_message("[user.name] secures the [name] to the floor.", \
- "You secure the external bolts.")
- user.changeNext_move(CLICK_CD_MELEE)
- return //set_anchored handles the rest of the stuff we need to do.
- if(PA_CONSTRUCTION_UNWIRED)
- if(W.tool_behaviour == TOOL_WRENCH)
- W.play_tool_sound(src, 75)
- set_anchored(FALSE)
- user.visible_message("[user.name] detaches the [name] from the floor.", \
- "You remove the external bolts.")
- user.changeNext_move(CLICK_CD_MELEE)
- return //set_anchored handles the rest of the stuff we need to do.
- else if(istype(W, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/CC = W
- if(CC.use(1))
- user.visible_message("[user.name] adds wires to the [name].", \
- "You add some wires.")
- construction_state = PA_CONSTRUCTION_PANEL_OPEN
- did_something = TRUE
- if(PA_CONSTRUCTION_PANEL_OPEN)
- if(W.tool_behaviour == TOOL_WIRECUTTER)//TODO:Shock user if its on?
- user.visible_message("[user.name] removes some wires from the [name].", \
- "You remove some wires.")
- construction_state = PA_CONSTRUCTION_UNWIRED
- did_something = TRUE
- else if(W.tool_behaviour == TOOL_SCREWDRIVER)
- user.visible_message("[user.name] closes the [name]'s access panel.", \
- "You close the access panel.")
- construction_state = PA_CONSTRUCTION_COMPLETE
- did_something = TRUE
- if(PA_CONSTRUCTION_COMPLETE)
- if(W.tool_behaviour == TOOL_SCREWDRIVER)
- user.visible_message("[user.name] opens the [name]'s access panel.", \
- "You open the access panel.")
- construction_state = PA_CONSTRUCTION_PANEL_OPEN
- did_something = TRUE
-
- if(did_something)
- user.changeNext_move(CLICK_CD_MELEE)
- update_state()
- update_icon()
- return
-
- return ..()
-
-
-/obj/structure/particle_accelerator/deconstruct(disassembled = TRUE)
- if(!(flags_1 & NODECONSTRUCT_1))
- new /obj/item/stack/sheet/metal (loc, 5)
- qdel(src)
-
-/obj/structure/particle_accelerator/Move()
- . = ..()
- if(master && master.active)
- master.toggle_power()
- investigate_log("was moved whilst active; it powered down.", INVESTIGATE_SINGULO)
-
-
-/obj/structure/particle_accelerator/update_icon_state()
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED,PA_CONSTRUCTION_UNWIRED)
- icon_state="[reference]"
- if(PA_CONSTRUCTION_PANEL_OPEN)
- icon_state="[reference]w"
- if(PA_CONSTRUCTION_COMPLETE)
- if(powered)
- icon_state="[reference]p[strength]"
- else
- icon_state="[reference]c"
-
-/obj/structure/particle_accelerator/proc/update_state()
- if(master)
- master.update_state()
-
-/obj/structure/particle_accelerator/proc/connect_master(obj/O)
- if(O.dir == dir)
- master = O
- return 1
- return 0
-
-///////////
-// PARTS //
-///////////
-
-
-/obj/structure/particle_accelerator/end_cap
- name = "Alpha Particle Generation Array"
- desc = "This is where Alpha particles are generated from \[REDACTED\]."
- icon_state = "end_cap"
- reference = "end_cap"
-
-/obj/structure/particle_accelerator/power_box
- name = "Particle Focusing EM Lens"
- desc = "This uses electromagnetic waves to focus the Alpha particles."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "power_box"
- reference = "power_box"
-
-/obj/structure/particle_accelerator/fuel_chamber
- name = "EM Acceleration Chamber"
- desc = "This is where the Alpha particles are accelerated to radical speeds."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "fuel_chamber"
- reference = "fuel_chamber"
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
deleted file mode 100644
index d5a3179731b..00000000000
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ /dev/null
@@ -1,328 +0,0 @@
-/obj/machinery/particle_accelerator/control_box
- name = "Particle Accelerator Control Console"
- desc = "This controls the density of the particles."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "control_box"
- anchored = FALSE
- density = TRUE
- use_power = NO_POWER_USE
- idle_power_usage = 500
- active_power_usage = 10000
- dir = NORTH
- mouse_opacity = MOUSE_OPACITY_OPAQUE
- var/strength_upper_limit = 2
- var/interface_control = TRUE
- var/list/obj/structure/particle_accelerator/connected_parts
- var/assembled = FALSE
- var/construction_state = PA_CONSTRUCTION_UNSECURED
- var/active = FALSE
- var/strength = 0
- var/powered = FALSE
-
-/obj/machinery/particle_accelerator/control_box/Initialize()
- . = ..()
- wires = new /datum/wires/particle_accelerator/control_box(src)
- connected_parts = list()
-
-/obj/machinery/particle_accelerator/control_box/Destroy()
- if(active)
- toggle_power()
- for(var/CP in connected_parts)
- var/obj/structure/particle_accelerator/part = CP
- part.master = null
- connected_parts.Cut()
- QDEL_NULL(wires)
- return ..()
-
-/obj/machinery/particle_accelerator/control_box/multitool_act(mob/living/user, obj/item/I)
- . = ..()
- if(construction_state == PA_CONSTRUCTION_PANEL_OPEN)
- wires.interact(user)
- return TRUE
-
-/obj/machinery/particle_accelerator/control_box/proc/update_state()
- if(construction_state < PA_CONSTRUCTION_COMPLETE)
- use_power = NO_POWER_USE
- assembled = FALSE
- active = FALSE
- for(var/CP in connected_parts)
- var/obj/structure/particle_accelerator/part = CP
- part.strength = null
- part.powered = FALSE
- part.update_icon()
- connected_parts.Cut()
- return
- if(!part_scan())
- use_power = IDLE_POWER_USE
- active = FALSE
- connected_parts.Cut()
-
-/obj/machinery/particle_accelerator/control_box/update_icon_state()
- if(active)
- icon_state = "control_boxp1"
- else
- if(use_power)
- if(assembled)
- icon_state = "control_boxp"
- else
- icon_state = "ucontrol_boxp"
- else
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED, PA_CONSTRUCTION_UNWIRED)
- icon_state = "control_box"
- if(PA_CONSTRUCTION_PANEL_OPEN)
- icon_state = "control_boxw"
- else
- icon_state = "control_boxc"
-
-/obj/machinery/particle_accelerator/control_box/proc/strength_change()
- for(var/CP in connected_parts)
- var/obj/structure/particle_accelerator/part = CP
- part.strength = strength
- part.update_icon()
-
-/obj/machinery/particle_accelerator/control_box/proc/add_strength(s)
- if(assembled && (strength < strength_upper_limit))
- strength++
- strength_change()
-
- message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]")
- log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]")
- investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
-
-/obj/machinery/particle_accelerator/control_box/proc/remove_strength(s)
- if(assembled && (strength > 0))
- strength--
- strength_change()
-
- message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]")
- log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]")
- investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
-
-/obj/machinery/particle_accelerator/control_box/power_change()
- . = ..()
- if(machine_stat & NOPOWER)
- active = FALSE
- use_power = NO_POWER_USE
- else if(!machine_stat && construction_state == PA_CONSTRUCTION_COMPLETE)
- use_power = IDLE_POWER_USE
-
-/obj/machinery/particle_accelerator/control_box/process()
- if(active)
- //a part is missing!
- if(connected_parts.len < 6)
- investigate_log("lost a connected part; It powered down.", INVESTIGATE_SINGULO)
- toggle_power()
- update_icon()
- return
- //emit some particles
- for(var/obj/structure/particle_accelerator/particle_emitter/PE in connected_parts)
- PE.emit_particle(strength)
-
-/obj/machinery/particle_accelerator/control_box/proc/part_scan()
- var/ldir = turn(dir,-90)
- var/rdir = turn(dir,90)
- var/odir = turn(dir,180)
- var/turf/T = loc
-
- assembled = FALSE
- critical_machine = FALSE
-
- var/obj/structure/particle_accelerator/fuel_chamber/F = locate() in orange(1,src)
- if(!F)
- return FALSE
-
- setDir(F.dir)
- connected_parts.Cut()
-
- T = get_step(T,rdir)
- if(!check_part(T, /obj/structure/particle_accelerator/fuel_chamber))
- return FALSE
- T = get_step(T,odir)
- if(!check_part(T, /obj/structure/particle_accelerator/end_cap))
- return FALSE
- T = get_step(T,dir)
- T = get_step(T,dir)
- if(!check_part(T, /obj/structure/particle_accelerator/power_box))
- return FALSE
- T = get_step(T,dir)
- if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/center))
- return FALSE
- T = get_step(T,ldir)
- if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/left))
- return FALSE
- T = get_step(T,rdir)
- T = get_step(T,rdir)
- if(!check_part(T, /obj/structure/particle_accelerator/particle_emitter/right))
- return FALSE
-
- assembled = TRUE
- critical_machine = TRUE //Only counts if the PA is actually assembled.
- return TRUE
-
-/obj/machinery/particle_accelerator/control_box/proc/check_part(turf/T, type)
- var/obj/structure/particle_accelerator/PA = locate(/obj/structure/particle_accelerator) in T
- if(istype(PA, type) && (PA.construction_state == PA_CONSTRUCTION_COMPLETE))
- if(PA.connect_master(src))
- connected_parts.Add(PA)
- return TRUE
- return FALSE
-
-/obj/machinery/particle_accelerator/control_box/proc/toggle_power()
- active = !active
- investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
- message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? ADMIN_LOOKUPFLW(usr) : "outside forces"] in [ADMIN_VERBOSEJMP(src)]")
- log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] at [AREACOORD(src)]")
- if(active)
- use_power = ACTIVE_POWER_USE
- for(var/CP in connected_parts)
- var/obj/structure/particle_accelerator/part = CP
- part.strength = strength
- part.powered = TRUE
- part.update_icon()
- else
- use_power = IDLE_POWER_USE
- for(var/CP in connected_parts)
- var/obj/structure/particle_accelerator/part = CP
- part.strength = null
- part.powered = FALSE
- part.update_icon()
- return TRUE
-
-/obj/machinery/particle_accelerator/control_box/examine(mob/user)
- . = ..()
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED)
- . += "Looks like it's not attached to the flooring."
- if(PA_CONSTRUCTION_UNWIRED)
- . += "It is missing some cables."
- if(PA_CONSTRUCTION_PANEL_OPEN)
- . += "The panel is open."
-
-/obj/machinery/particle_accelerator/control_box/set_anchored(anchorvalue)
- . = ..()
- if(isnull(.))
- return
- construction_state = anchorvalue ? PA_CONSTRUCTION_UNWIRED : PA_CONSTRUCTION_UNSECURED
- update_state()
- update_icon()
-
-/obj/machinery/particle_accelerator/control_box/attackby(obj/item/W, mob/user, params)
- var/did_something = FALSE
-
- switch(construction_state)
- if(PA_CONSTRUCTION_UNSECURED)
- if(W.tool_behaviour == TOOL_WRENCH && !isinspace())
- W.play_tool_sound(src, 75)
- set_anchored(TRUE)
- user.visible_message("[user.name] secures the [name] to the floor.", \
- "You secure the external bolts.")
- user.changeNext_move(CLICK_CD_MELEE)
- return //set_anchored handles the rest of the stuff we need to do.
- if(PA_CONSTRUCTION_UNWIRED)
- if(W.tool_behaviour == TOOL_WRENCH)
- W.play_tool_sound(src, 75)
- set_anchored(FALSE)
- user.visible_message("[user.name] detaches the [name] from the floor.", \
- "You remove the external bolts.")
- user.changeNext_move(CLICK_CD_MELEE)
- return //set_anchored handles the rest of the stuff we need to do.
- else if(istype(W, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/CC = W
- if(CC.use(1))
- user.visible_message("[user.name] adds wires to the [name].", \
- "You add some wires.")
- construction_state = PA_CONSTRUCTION_PANEL_OPEN
- did_something = TRUE
- if(PA_CONSTRUCTION_PANEL_OPEN)
- if(W.tool_behaviour == TOOL_WIRECUTTER)//TODO:Shock user if its on?
- user.visible_message("[user.name] removes some wires from the [name].", \
- "You remove some wires.")
- construction_state = PA_CONSTRUCTION_UNWIRED
- did_something = TRUE
- else if(W.tool_behaviour == TOOL_SCREWDRIVER)
- user.visible_message("[user.name] closes the [name]'s access panel.", \
- "You close the access panel.")
- construction_state = PA_CONSTRUCTION_COMPLETE
- did_something = TRUE
- if(PA_CONSTRUCTION_COMPLETE)
- if(W.tool_behaviour == TOOL_SCREWDRIVER)
- user.visible_message("[user.name] opens the [name]'s access panel.", \
- "You open the access panel.")
- construction_state = PA_CONSTRUCTION_PANEL_OPEN
- did_something = TRUE
-
- if(did_something)
- user.changeNext_move(CLICK_CD_MELEE)
- update_state()
- update_icon()
- return
-
- return ..()
-
-/obj/machinery/particle_accelerator/control_box/blob_act(obj/structure/blob/B)
- if(prob(50))
- qdel(src)
-
-/obj/machinery/particle_accelerator/control_box/interact(mob/user)
- if(construction_state == PA_CONSTRUCTION_PANEL_OPEN)
- wires.interact(user)
- else
- ..()
-
-/obj/machinery/particle_accelerator/control_box/proc/is_interactive(mob/user)
- if(!interface_control)
- to_chat(user, "ERROR: Request timed out. Check wire contacts.")
- return FALSE
- if(construction_state != PA_CONSTRUCTION_COMPLETE)
- return FALSE
- return TRUE
-
-/obj/machinery/particle_accelerator/control_box/ui_status(mob/user)
- if(is_interactive(user))
- return ..()
- return UI_CLOSE
-
-/obj/machinery/particle_accelerator/control_box/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "ParticleAccelerator", name)
- ui.open()
-
-/obj/machinery/particle_accelerator/control_box/ui_data(mob/user)
- var/list/data = list()
- data["assembled"] = assembled
- data["power"] = active
- data["strength"] = strength
- return data
-
-/obj/machinery/particle_accelerator/control_box/ui_act(action, params)
- if(..())
- return
-
- switch(action)
- if("power")
- if(wires.is_cut(WIRE_POWER))
- return
- toggle_power()
- . = TRUE
- if("scan")
- part_scan()
- . = TRUE
- if("add_strength")
- if(wires.is_cut(WIRE_STRENGTH))
- return
- add_strength()
- . = TRUE
- if("remove_strength")
- if(wires.is_cut(WIRE_STRENGTH))
- return
- remove_strength()
- . = TRUE
-
- update_icon()
-
-#undef PA_CONSTRUCTION_UNSECURED
-#undef PA_CONSTRUCTION_UNWIRED
-#undef PA_CONSTRUCTION_PANEL_OPEN
-#undef PA_CONSTRUCTION_COMPLETE
diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm
deleted file mode 100644
index fc7cca55e65..00000000000
--- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm
+++ /dev/null
@@ -1,43 +0,0 @@
-/obj/structure/particle_accelerator/particle_emitter
- name = "EM Containment Grid"
- desc = "This launches the Alpha particles, might not want to stand near this end."
- icon = 'icons/obj/machines/particle_accelerator.dmi'
- icon_state = "none"
- var/fire_delay = 50
- var/last_shot = 0
-
-/obj/structure/particle_accelerator/particle_emitter/center
- icon_state = "emitter_center"
- reference = "emitter_center"
-
-/obj/structure/particle_accelerator/particle_emitter/left
- icon_state = "emitter_left"
- reference = "emitter_left"
-
-/obj/structure/particle_accelerator/particle_emitter/right
- icon_state = "emitter_right"
- reference = "emitter_right"
-
-/obj/structure/particle_accelerator/particle_emitter/proc/set_delay(delay)
- if(delay >= 0)
- fire_delay = delay
- return 1
- return 0
-
-/obj/structure/particle_accelerator/particle_emitter/proc/emit_particle(strength = 0)
- if((last_shot + fire_delay) <= world.time)
- last_shot = world.time
- var/turf/T = get_turf(src)
- var/obj/effect/accelerated_particle/P
- switch(strength)
- if(0)
- P = new/obj/effect/accelerated_particle/weak(T)
- if(1)
- P = new/obj/effect/accelerated_particle(T)
- if(2)
- P = new/obj/effect/accelerated_particle/strong(T)
- if(3)
- P = new/obj/effect/accelerated_particle/powerful(T)
- P.setDir(dir)
- return 1
- return 0
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 61b19f6d9ff..c882cf405a6 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -147,7 +147,6 @@
/obj/singularity/process()
if(current_size >= STAGE_TWO)
move()
- radiation_pulse(src, min(5000, (energy*4.5)+1000), RAD_DISTANCE_COEFFICIENT*0.5)
if(prob(event_chance))//Chance for it to run a special event TODO:Come up with one or two more that fit
event()
eat()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index ebb8d5378c9..e15307770b5 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -440,10 +440,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
S.consume(src)
return //No boom for me sir
else if(power > POWER_PENALTY_THRESHOLD)
- investigate_log("has spawned additional energy balls.", INVESTIGATE_SUPERMATTER)
+ investigate_log("has released tritium from an overcharge.", INVESTIGATE_SUPERMATTER)
if(T)
- var/obj/singularity/energy_ball/E = new(T)
- E.energy = power
+ atmos_spawn_air("tritium=2500;TEMP=500000") //extremely fucking hot and could do fusion if you tried hard enough //GEORGE SEARS DID 9/11
investigate_log("has exploded.", INVESTIGATE_SUPERMATTER)
//Dear mappers, balance the sm max explosion radius to 17.5, 37, 39, 41
explosion(get_turf(T), explosion_power * max(gasmix_power_ratio, 0.205) * 0.5 , explosion_power * max(gasmix_power_ratio, 0.205) + 2, explosion_power * max(gasmix_power_ratio, 0.205) + 4 , explosion_power * max(gasmix_power_ratio, 0.205) + 6, 1, 1)
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index bf7c990e562..5ec1b412ea2 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -102,7 +102,7 @@
/obj/machinery/power/grounding_rod
name = "grounding rod"
- desc = "Keep an area from being fried from Edison's Bane."
+ desc = "Keep an area from being fried."
icon = 'icons/obj/tesla_engine/tesla_coil.dmi'
icon_state = "grounding_rod0"
anchored = FALSE
diff --git a/code/modules/power/tesla/generator.dm b/code/modules/power/tesla/generator.dm
deleted file mode 100644
index a63e11b4914..00000000000
--- a/code/modules/power/tesla/generator.dm
+++ /dev/null
@@ -1,12 +0,0 @@
-/obj/machinery/the_singularitygen/tesla
- name = "energy ball generator"
- desc = "Makes the wardenclyffe look like a child's plaything when shot with a particle accelerator."
- icon = 'icons/obj/tesla_engine/tesla_generator.dmi'
- icon_state = "TheSingGen"
- creation_type = /obj/singularity/energy_ball
-
-/obj/machinery/the_singularitygen/tesla/zap_act(power, zap_flags)
- if(zap_flags & ZAP_MACHINE_EXPLOSIVE)
- energy += power
- zap_flags &= ~(ZAP_MACHINE_EXPLOSIVE | ZAP_OBJ_DAMAGE) // Don't blow yourself up yeah?
- return ..()
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/tesla_zap.dm
similarity index 51%
rename from code/modules/power/tesla/energy_ball.dm
rename to code/modules/power/tesla/tesla_zap.dm
index 56b5c217154..4191853fd49 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/tesla_zap.dm
@@ -10,176 +10,6 @@
#define BLOB (STRUCTURE + 1)
#define STRUCTURE (1)
-/obj/singularity/energy_ball
- name = "energy ball"
- desc = "An energy ball."
- icon = 'icons/obj/tesla_engine/energy_ball.dmi'
- icon_state = "energy_ball"
- pixel_x = -32
- pixel_y = -32
- current_size = STAGE_TWO
- move_self = 1
- grav_pull = 0
- contained = 0
- density = TRUE
- energy = 0
- dissipate = 1
- dissipate_delay = 5
- dissipate_strength = 1
- var/list/orbiting_balls = list()
- var/miniball = FALSE
- var/produced_power
- var/energy_to_raise = 32
- var/energy_to_lower = -20
-
-/obj/singularity/energy_ball/Initialize(mapload, starting_energy = 50, is_miniball = FALSE)
- miniball = is_miniball
- . = ..()
- if(!is_miniball)
- set_light(10, 7, "#EEEEFF")
-
-/obj/singularity/energy_ball/ex_act(severity, target)
- return
-
-/obj/singularity/energy_ball/consume(severity, target)
- return
-
-/obj/singularity/energy_ball/Destroy()
- if(orbiting && istype(orbiting.parent, /obj/singularity/energy_ball))
- var/obj/singularity/energy_ball/EB = orbiting.parent
- EB.orbiting_balls -= src
-
- for(var/ball in orbiting_balls)
- var/obj/singularity/energy_ball/EB = ball
- QDEL_NULL(EB)
-
- . = ..()
-
-/obj/singularity/energy_ball/admin_investigate_setup()
- if(miniball)
- return //don't annnounce miniballs
- ..()
-
-
-/obj/singularity/energy_ball/process()
- if(!orbiting)
- handle_energy()
-
- move_the_basket_ball(4 + orbiting_balls.len * 1.5)
-
- playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, TRUE, extrarange = 30)
-
- pixel_x = 0
- pixel_y = 0
-
- tesla_zap(src, 7, TESLA_DEFAULT_POWER)
-
- pixel_x = -32
- pixel_y = -32
- for (var/ball in orbiting_balls)
- var/range = rand(1, clamp(orbiting_balls.len, 3, 7))
- tesla_zap(ball, range, TESLA_MINI_POWER/7*range)
- else
- energy = 0 // ensure we dont have miniballs of miniballs
-
-/obj/singularity/energy_ball/examine(mob/user)
- . = ..()
- if(orbiting_balls.len)
- . += "There are [orbiting_balls.len] mini-balls orbiting it."
-
-
-/obj/singularity/energy_ball/proc/move_the_basket_ball(move_amount)
- //we face the last thing we zapped, so this lets us favor that direction a bit
- var/move_bias = pick(GLOB.alldirs)
- for(var/i in 0 to move_amount)
- var/move_dir = pick(GLOB.alldirs + move_bias) //ensures large-ball teslas don't just sit around
- if(target && prob(10))
- move_dir = get_dir(src,target)
- var/turf/T = get_step(src, move_dir)
- if(can_move(T))
- forceMove(T)
- setDir(move_dir)
- for(var/mob/living/carbon/C in loc)
- dust_mobs(C)
-
-
-/obj/singularity/energy_ball/proc/handle_energy()
- if(energy >= energy_to_raise)
- energy_to_lower = energy_to_raise - 20
- energy_to_raise = energy_to_raise * 1.25
-
- playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, TRUE, extrarange = 30)
- addtimer(CALLBACK(src, .proc/new_mini_ball), 100)
-
- else if(energy < energy_to_lower && orbiting_balls.len)
- energy_to_raise = energy_to_raise / 1.25
- energy_to_lower = (energy_to_raise / 1.25) - 20
-
- var/Orchiectomy_target = pick(orbiting_balls)
- qdel(Orchiectomy_target)
-
- else if(orbiting_balls.len)
- dissipate() //sing code has a much better system.
-
-/obj/singularity/energy_ball/proc/new_mini_ball()
- if(!loc)
- return
- var/obj/singularity/energy_ball/EB = new(loc, 0, TRUE)
-
- EB.transform *= pick(0.3, 0.4, 0.5, 0.6, 0.7)
- var/icon/I = icon(icon,icon_state,dir)
-
- var/orbitsize = (I.Width() + I.Height()) * pick(0.4, 0.5, 0.6, 0.7, 0.8)
- orbitsize -= (orbitsize / world.icon_size) * (world.icon_size * 0.25)
-
- EB.orbit(src, orbitsize, pick(FALSE, TRUE), rand(10, 25), pick(3, 4, 5, 6, 36))
-
-
-/obj/singularity/energy_ball/Bump(atom/A)
- dust_mobs(A)
-
-/obj/singularity/energy_ball/Bumped(atom/movable/AM)
- dust_mobs(AM)
-
-/obj/singularity/energy_ball/attack_tk(mob/user)
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- to_chat(C, "That was a shockingly dumb idea.")
- var/obj/item/organ/brain/rip_u = locate(/obj/item/organ/brain) in C.internal_organs
- C.ghostize(0)
- qdel(rip_u)
- C.death()
-
-/obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target)
- if (istype(target))
- target.orbiting_balls += src
- GLOB.poi_list -= src
- target.dissipate_strength = target.orbiting_balls.len
- . = ..()
-
-/obj/singularity/energy_ball/stop_orbit()
- if (orbiting && istype(orbiting.parent, /obj/singularity/energy_ball))
- var/obj/singularity/energy_ball/orbitingball = orbiting.parent
- orbitingball.orbiting_balls -= src
- orbitingball.dissipate_strength = orbitingball.orbiting_balls.len
- . = ..()
- if (!QDELETED(src))
- qdel(src)
-
-
-/obj/singularity/energy_ball/proc/dust_mobs(atom/A)
- if(isliving(A))
- var/mob/living/L = A
- if(L.incorporeal_move || L.status_flags & GODMODE)
- return
- if(!iscarbon(A))
- return
- for(var/obj/machinery/power/grounding_rod/GR in orange(src, 2))
- if(GR.anchored)
- return
- var/mob/living/carbon/C = A
- C.dust()
-
/proc/tesla_zap(atom/source, zap_range = 3, power, zap_flags = ZAP_DEFAULT_FLAGS, list/shocked_targets = list())
if(QDELETED(source))
return
@@ -197,13 +27,6 @@
/obj/machinery/power/emitter,
/obj/machinery/field/generator,
/mob/living/simple_animal,
- /obj/machinery/particle_accelerator/control_box,
- /obj/structure/particle_accelerator/fuel_chamber,
- /obj/structure/particle_accelerator/particle_emitter/center,
- /obj/structure/particle_accelerator/particle_emitter/left,
- /obj/structure/particle_accelerator/particle_emitter/right,
- /obj/structure/particle_accelerator/power_box,
- /obj/structure/particle_accelerator/end_cap,
/obj/machinery/field/containment,
/obj/structure/disposalpipe,
/obj/structure/disposaloutlet,
@@ -328,7 +151,7 @@
power /= 1.5
else
- power = closest_atom.zap_act(power, zap_flags)
+ power = closest_atom.zap_act(power, zap_flags, shocked_targets)
if(prob(20))//I know I know
tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_targets.Copy())//No pass by ref, it's a bad play
tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_targets.Copy())
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 7b4df5f02c3..92d1cb6e6e5 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -17,22 +17,6 @@
category = list ("Engineering Machinery")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-/datum/design/board/circulator
- name = "Machine Design (Circulator Board)"
- desc = "The circuit board for a circulator."
- id = "circulator"
- build_path = /obj/item/circuitboard/machine/circulator
- category = list ("Engineering Machinery")
- departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-
-/datum/design/board/teg
- name = "Machine Design (TEG Board)"
- desc = "The circuit board for a TEG."
- id = "teg"
- build_path = /obj/item/circuitboard/machine/generator
- category = list ("Engineering Machinery")
- departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-
/datum/design/board/announcement_system
name = "Machine Design (Automated Announcement System Board)"
desc = "The circuit board for an automated announcement system."
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 8efaad3b760..aa0999b2227 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -90,10 +90,3 @@
id = "superpacman"
build_path = /obj/item/circuitboard/machine/pacman/super
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-
-/datum/design/board/pacman/mrs
- name = "Machine Design (MRSPACMAN-type Generator Board)"
- desc = "The circuit board that for a MRSPACMAN-type portable generator."
- id = "mrspacman"
- build_path = /obj/item/circuitboard/machine/pacman/mrs
- departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 3c605f85eb3..cd8303375c9 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -181,7 +181,7 @@
display_name = "Advanced Power Manipulation"
description = "How to get more zap."
prereq_ids = list("engineering")
- design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "mrspacman", "power_turbine", "power_turbine_console", "power_compressor", "circulator", "teg")
+ design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "power_turbine", "power_turbine_console", "power_compressor")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
diff --git a/icons/obj/machines/particle_accelerator.dmi b/icons/obj/machines/particle_accelerator.dmi
index c601b8d1b6a..9c4b6e81c05 100644
Binary files a/icons/obj/machines/particle_accelerator.dmi and b/icons/obj/machines/particle_accelerator.dmi differ
diff --git a/icons/obj/singularity.dmi b/icons/obj/singularity.dmi
index 3cc086b9396..e036731d00e 100644
Binary files a/icons/obj/singularity.dmi and b/icons/obj/singularity.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 5fab26d3362..b5753eb4e2f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -654,7 +654,6 @@
#include "code\datums\wires\explosive.dm"
#include "code\datums\wires\microwave.dm"
#include "code\datums\wires\mulebot.dm"
-#include "code\datums\wires\particle_accelerator.dm"
#include "code\datums\wires\r_n_d.dm"
#include "code\datums\wires\radio.dm"
#include "code\datums\wires\robot.dm"
@@ -2649,14 +2648,9 @@
#include "code\modules\power\singularity\investigate.dm"
#include "code\modules\power\singularity\narsie.dm"
#include "code\modules\power\singularity\singularity.dm"
-#include "code\modules\power\singularity\particle_accelerator\particle.dm"
-#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm"
-#include "code\modules\power\singularity\particle_accelerator\particle_control.dm"
-#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm"
#include "code\modules\power\supermatter\supermatter.dm"
#include "code\modules\power\tesla\coil.dm"
-#include "code\modules\power\tesla\energy_ball.dm"
-#include "code\modules\power\tesla\generator.dm"
+#include "code\modules\power\tesla\tesla_zap.dm"
#include "code\modules\procedural_mapping\mapGenerator.dm"
#include "code\modules\procedural_mapping\mapGeneratorModule.dm"
#include "code\modules\procedural_mapping\mapGeneratorObj.dm"