[PORT] Gives mass driver a new sprite, sound, lets you build it and LAUNCH SHIT AT EVEN HIGHER VELOCITIES (#21349)

* surely adding this will be a good idea

* OKAY WE'RE IN BUSINESS

* REAL

* now in glorious SOUND

ripped directly from my HL1 game files

* Misc cleanup

* louda

* moved tech node

oughta have more stuff in adv, and would cut down on a pretty powerful machine being built too early I'd imagine
This commit is contained in:
AMyriad
2024-02-11 18:11:57 +01:00
committed by GitHub
parent 63b3906e9f
commit 61e78aea65
9 changed files with 79 additions and 9 deletions

View File

@@ -49,3 +49,4 @@
#define WIRE_ZAP1 "High Voltage Circuit 1"
#define WIRE_ZAP2 "High Voltage Circuit 2"
#define WIRE_AGELIMIT "Age Limit"
#define WIRE_LAUNCH "Launch"

View File

@@ -0,0 +1,25 @@
/datum/wires/mass_driver
holder_type = /obj/machinery/mass_driver
proper_name = "Mass Driver"
/datum/wires/mass_driver/New(atom/holder)
wires = list(WIRE_LAUNCH, WIRE_SAFETY)
..()
/datum/wires/mass_driver/on_pulse(wire)
var/obj/machinery/mass_driver/the_mass_driver = holder
switch(wire)
if(WIRE_LAUNCH)
the_mass_driver.drive()
holder.visible_message(span_notice("The drive mechanism activates."))
if(WIRE_SAFETY)
the_mass_driver.power = 3
holder.visible_message(span_notice("You hear a worrying whirring noise emitting from the mass driver."))
/datum/wires/mass_driver/on_cut(wire, mend, source)
var/obj/machinery/mass_driver/the_mass_driver = holder
switch(wire)
if(WIRE_SAFETY)
if(the_mass_driver.power > 1)
the_mass_driver.power = 1
holder.visible_message(span_notice("The whirring noise emitting from the mass driver stops."))

View File

@@ -1,21 +1,30 @@
/obj/machinery/mass_driver
name = "mass driver"
desc = "The finest in spring-loaded piston toy technology, now on a space station near you."
desc = "A miniaturized mass driver, the finest in hydraulic piston technology." // Imagine what an actual mass driver would look like
icon = 'icons/obj/stationobjs.dmi'
icon_state = "mass_driver"
circuit = /obj/item/circuitboard/machine/mass_driver
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 50
var/power = 1
var/code = 1
var/id = 1
var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
var/drive_range = 10
var/power_per_obj = 500
/obj/machinery/mass_driver/Initialize(mapload)
. = ..()
wires = new /datum/wires/mass_driver(src)
/obj/machinery/mass_driver/Destroy()
QDEL_NULL(wires)
. = ..()
/obj/machinery/mass_driver/proc/drive(amount)
if(stat & (BROKEN|NOPOWER))
if(stat & (BROKEN|NOPOWER) || panel_open)
return
use_power(500)
use_power(power_per_obj)
var/O_limit
var/atom/target = get_edge_target_turf(src, dir)
for(var/atom/movable/O in loc)
@@ -26,15 +35,34 @@
if(O_limit >= 20)
audible_message(span_notice("[src] lets out a screech, it doesn't seem to be able to handle the load."))
break
use_power(500)
use_power(power_per_obj)
O.throw_at(target, drive_range * power, power)
playsound(get_turf(src), 'sound/machines/mass_driver.ogg', 75)
flick("mass_driver1", src)
/obj/machinery/mass_driver/attackby(obj/item/I, mob/living/user, params)
if(is_wire_tool(I) && panel_open)
wires.interact(user)
return
if(default_deconstruction_screwdriver(user, "mass_driveropen", "mass_driver", I))
return
if(default_change_direction_wrench(user, I))
return
if(default_deconstruction_crowbar(I))
return
return ..()
/obj/machinery/mass_driver/RefreshParts()
. = ..()
for(var/obj/item/stock_parts/capacitor/C in component_parts)
drive_range += 10 * C.rating
/obj/machinery/mass_driver/emp_act(severity)
. = ..()
if (. & EMP_PROTECT_SELF)
return
if(stat & (BROKEN|NOPOWER))
if(stat & (BROKEN|NOPOWER) || panel_open)
return
drive()

View File

@@ -1438,3 +1438,9 @@
req_components = list(
/obj/item/stock_parts/capacitor = 3,
/obj/item/stock_parts/micro_laser = 1)
/obj/item/circuitboard/machine/mass_driver
name = "Mass Driver"
build_path = /obj/machinery/mass_driver
req_components = list(
/obj/item/stock_parts/capacitor = 1)

View File

@@ -793,4 +793,12 @@
id = "mindmachine_pod"
build_path = /obj/item/circuitboard/machine/mindmachine_pod
category = list("Medical Machinery")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/board/mass_driver
name = "Machine Design (Mass Driver)"
desc = "The circuit board for a mass driver."
id = "mass_driver"
build_path = /obj/item/circuitboard/machine/mass_driver
category = list("Misc. Machinery")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE

View File

@@ -155,7 +155,8 @@
design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin", "scanner_gate",
"atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod",
"cell_charger", "stack_console", "stack_machine", "conveyor_belt", "conveyor_switch", "reactor_control",
"oxygen_tank", "plasma_tank", "emergency_oxygen", "emergency_oxygen_engi", "plasmaman_tank_belt", "electrolyzer", "floorigniter", "crystallizer", "suit_storage_unit", "atmos_thermal")
"oxygen_tank", "plasma_tank", "emergency_oxygen", "emergency_oxygen_engi", "plasmaman_tank_belt", "electrolyzer", "floorigniter", "crystallizer", "suit_storage_unit",
"atmos_thermal")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
/datum/techweb_node/adv_engi
@@ -163,7 +164,7 @@
display_name = "Advanced Engineering"
description = "Pushing the boundaries of physics, one chainsaw-fist at a time."
prereq_ids = list("engineering", "emp_basic")
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "decontamination_unit", "particle_emitter", "tricorder")
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "decontamination_unit", "particle_emitter", "tricorder", "mass_driver")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
/datum/techweb_node/anomaly

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

View File

@@ -808,6 +808,7 @@
#include "code\datums\wires\emitter.dm"
#include "code\datums\wires\explosive.dm"
#include "code\datums\wires\igniter.dm"
#include "code\datums\wires\mass_driver.dm"
#include "code\datums\wires\mech_fabricator.dm"
#include "code\datums\wires\microwave.dm"
#include "code\datums\wires\mulebot.dm"