mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
[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:
@@ -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"
|
||||
|
||||
25
code/datums/wires/mass_driver.dm
Normal file
25
code/datums/wires/mass_driver.dm
Normal 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."))
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
BIN
sound/machines/mass_driver.ogg
Normal file
BIN
sound/machines/mass_driver.ogg
Normal file
Binary file not shown.
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user