mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 04:17:33 +01:00
Buildable Overmap Machinery (#18974)
Sensors, IFF beacons, and thrusters can now be built with circuit boards. Ship sensors consoles will no longer throw an error if their sensors are deleted or destroyed. Thrusters and other unary atmos machines now take their initial dir from the machine frame like other machines rather than requiring modification of the circuit board item.
This commit is contained in:
@@ -1222,6 +1222,7 @@
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\research.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\ship.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\trashcompactor.dm"
|
||||
#include "code\game\objects\items\weapons\circuitboards\machinery\trolley.dm"
|
||||
@@ -3384,6 +3385,7 @@
|
||||
#include "code\modules\research\designs\circuit\mining_circuits.dm"
|
||||
#include "code\modules\research\designs\circuit\misc_electronics.dm"
|
||||
#include "code\modules\research\designs\circuit\shield_designs.dm"
|
||||
#include "code\modules\research\designs\circuit\ship_circuits.dm"
|
||||
#include "code\modules\research\designs\circuit\tcom_designs.dm"
|
||||
#include "code\modules\research\designs\mechfab\hardsuit\modules.dm"
|
||||
#include "code\modules\research\designs\mechfab\hardsuit\rigs.dm"
|
||||
|
||||
@@ -174,6 +174,10 @@
|
||||
if(component_check)
|
||||
attacking_item.play_tool_sound(get_turf(src), 50)
|
||||
var/obj/machinery/new_machine = new circuit.build_path(loc, dir, FALSE)
|
||||
if(istype(circuit, /obj/item/circuitboard/unary_atmos))
|
||||
var/obj/item/circuitboard/unary_atmos/U = circuit
|
||||
U.init_dirs = dir
|
||||
U.machine_dir = U
|
||||
if(istype(new_machine))
|
||||
if(new_machine.component_parts)
|
||||
new_machine.component_parts.Cut()
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
//Thrusters
|
||||
/obj/item/circuitboard/unary_atmos/engine
|
||||
name = T_BOARD("gas thruster")
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/atmospherics/unary/engine
|
||||
origin_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 2)
|
||||
req_components = list(
|
||||
"/obj/item/stack/cable_coil" = 30,
|
||||
"/obj/item/pipe" = 2)
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/engine/scc_shuttle
|
||||
build_path = /obj/machinery/atmospherics/unary/engine/scc_shuttle
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/engine/scc_ship
|
||||
build_path = /obj/machinery/atmospherics/unary/engine/scc_ship_engine
|
||||
|
||||
/obj/item/circuitboard/engine/ion
|
||||
name = T_BOARD("ion propulsion device")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/ion_engine
|
||||
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
|
||||
req_components = list(
|
||||
"/obj/item/stack/cable_coil" = 2,
|
||||
"/obj/item/stock_parts/matter_bin" = 1,
|
||||
"/obj/item/stock_parts/capacitor" = 2)
|
||||
|
||||
/obj/item/circuitboard/engine/maneuvering
|
||||
name = T_BOARD("pulse-maneuvering device")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/maneuvering_engine
|
||||
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
|
||||
req_components = list(
|
||||
"/obj/item/stack/cable_coil" = 2,
|
||||
"/obj/item/stock_parts/matter_bin" = 1,
|
||||
"/obj/item/stock_parts/capacitor" = 2
|
||||
)
|
||||
|
||||
//IFF Beacon
|
||||
/obj/item/circuitboard/iff_beacon
|
||||
name = T_BOARD("IFF transponder")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/iff_beacon
|
||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||
req_components = list(
|
||||
"/obj/item/stack/cable_coil" = 2,
|
||||
"/obj/item/stock_parts/subspace/transmitter" = 1,
|
||||
"/obj/item/stock_parts/capacitor" = 2
|
||||
)
|
||||
|
||||
//Sensors
|
||||
/obj/item/circuitboard/shipsensors
|
||||
name = T_BOARD("sensor suite")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/shipsensors
|
||||
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 5, TECH_BLUESPACE = 3)
|
||||
req_components = list(
|
||||
"/obj/item/stock_parts/subspace/ansible" = 1,
|
||||
"/obj/item/stock_parts/subspace/filter" = 1,
|
||||
"/obj/item/stock_parts/subspace/treatment" = 1,
|
||||
"/obj/item/stock_parts/subspace/analyzer" = 1,
|
||||
"/obj/item/stock_parts/scanning_module" = 2,
|
||||
"/obj/item/stock_parts/manipulator" = 3
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/shipsensors/weak
|
||||
name = T_BOARD("low-power sensor suite")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/shipsensors/weak
|
||||
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 1)
|
||||
req_components = list(
|
||||
"/obj/item/stock_parts/subspace/ansible" = 1,
|
||||
"/obj/item/stock_parts/subspace/filter" = 1,
|
||||
"/obj/item/stock_parts/subspace/treatment" = 1,
|
||||
"/obj/item/stock_parts/scanning_module" = 1,
|
||||
"/obj/item/stock_parts/manipulator" = 3
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/shipsensors/weak/scc
|
||||
build_path = /obj/machinery/shipsensors/weak/scc_shuttle
|
||||
|
||||
/obj/item/circuitboard/shipsensors/strong
|
||||
name = T_BOARD("high-power sensor suite")
|
||||
build_path = /obj/machinery/shipsensors/strong
|
||||
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 8, TECH_BLUESPACE = 5)
|
||||
req_components = list(
|
||||
"/obj/item/stock_parts/subspace/ansible" = 1,
|
||||
"/obj/item/stock_parts/subspace/filter" = 1,
|
||||
"/obj/item/stock_parts/subspace/treatment" = 1,
|
||||
"/obj/item/stock_parts/subspace/analyzer" = 1,
|
||||
"/obj/item/stock_parts/manipulator/pico" = 3,
|
||||
"/obj/item/stock_parts/scanning_module/phasic" = 1,
|
||||
"/obj/item/stack/cable_coil" = 30
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/shipsensors/strong/scc
|
||||
build_path = /obj/machinery/shipsensors/strong/scc_shuttle
|
||||
|
||||
/obj/item/circuitboard/shipsensors/venator
|
||||
name = T_BOARD("venator-class quantum sensor array")
|
||||
build_path = /obj/machinery/shipsensors/strong/venator
|
||||
origin_tech = list(TECH_POWER = 8, TECH_ENGINEERING = 10, TECH_BLUESPACE = 8, TECH_PHORON = 4)
|
||||
req_components = list(
|
||||
"/obj/item/stock_parts/subspace/ansible" = 1,
|
||||
"/obj/item/stock_parts/subspace/filter" = 1,
|
||||
"/obj/item/stock_parts/subspace/treatment" = 1,
|
||||
"/obj/item/stock_parts/subspace/analyzer" = 1,
|
||||
"/obj/item/stock_parts/subspace/amplifier" = 1,
|
||||
"/obj/item/stock_parts/manipulator/pico" = 4,
|
||||
"/obj/item/stock_parts/scanning_module/phasic" = 3,
|
||||
"/obj/item/stack/cable_coil" = 30,
|
||||
"/obj/item/bluespace_crystal" = 1
|
||||
)
|
||||
@@ -7,17 +7,6 @@
|
||||
var/machine_dir = SOUTH
|
||||
var/init_dirs = SOUTH
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/attackby(obj/item/attacking_item, mob/user)
|
||||
if(attacking_item.isscrewdriver())
|
||||
machine_dir = turn(machine_dir, 90)
|
||||
init_dirs = machine_dir
|
||||
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on the [src]'s port configuration pins.</span>", "<span class='notice'>You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].</span>")
|
||||
return
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += "The jumper is connecting the [dir2text(machine_dir)] pins."
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U)
|
||||
//TODO: Move this stuff into the relevant constructor when pipe/construction.dm is cleaned up.
|
||||
U.dir = src.machine_dir
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
icon_keyboard = "cyan_key"
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
extra_view = 4
|
||||
var/obj/machinery/shipsensors/sensors
|
||||
var/obj/machinery/iff_beacon/identification
|
||||
circuit = /obj/item/circuitboard/ship/sensors
|
||||
linked_type = /obj/effect/overmap/visitable
|
||||
@@ -38,6 +37,9 @@
|
||||
light_power_on = 1
|
||||
|
||||
/obj/machinery/computer/ship/sensors/proc/get_sensors()
|
||||
var/obj/machinery/shipsensors/sensors = sensor_ref?.resolve()
|
||||
if(!istype(sensors) || QDELETED(sensors))
|
||||
sensor_ref = null
|
||||
return sensors
|
||||
|
||||
/obj/machinery/computer/ship/sensors/attempt_hook_up(var/obj/effect/overmap/visitable/sector)
|
||||
@@ -54,7 +56,7 @@
|
||||
return
|
||||
for(var/obj/machinery/shipsensors/S in SSmachinery.machinery)
|
||||
if(linked.check_ownership(S))
|
||||
sensors = S
|
||||
sensor_ref = WEAKREF(S)
|
||||
break
|
||||
for(var/obj/machinery/iff_beacon/IB in SSmachinery.machinery)
|
||||
if(linked.check_ownership(IB))
|
||||
@@ -91,7 +93,7 @@
|
||||
/obj/machinery/computer/ship/sensors/ui_data(mob/user)
|
||||
|
||||
simple_asset_ensure_is_sent(user, /datum/asset/simple/paper)
|
||||
|
||||
var/obj/machinery/shipsensors/sensors = get_sensors()
|
||||
var/data = list()
|
||||
|
||||
data["viewing"] = viewing_overmap(user)
|
||||
@@ -229,7 +231,7 @@
|
||||
if(contact_details)
|
||||
data["contact_details"] = contact_details
|
||||
else
|
||||
data["id_status"] = "NOBEACON" //Should not really happen.
|
||||
data["id_status"] = "MISSING"
|
||||
|
||||
return data
|
||||
|
||||
@@ -248,7 +250,7 @@
|
||||
if (action == "link")
|
||||
find_sensors_and_iff()
|
||||
return TRUE
|
||||
|
||||
var/obj/machinery/shipsensors/sensors = get_sensors()
|
||||
if(sensors)
|
||||
if (action == "range")
|
||||
var/nrange = tgui_input_number("Set new sensors range", "Sensor range", sensors.range, sensors.max_range, 1)
|
||||
@@ -398,6 +400,15 @@
|
||||
var/deep_scan_toggled = FALSE //When TRUE, this sensor is using long range sensors.
|
||||
var/deep_scan_sensor_name = "High-Power Sensor Array"
|
||||
idle_power_usage = 5000
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/subspace/analyzer,
|
||||
/obj/item/stock_parts/scanning_module = 2,
|
||||
/obj/item/stock_parts/manipulator = 3
|
||||
)
|
||||
|
||||
var/base_icon_state
|
||||
|
||||
@@ -406,6 +417,12 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/shipsensors/attackby(obj/item/attacking_item, mob/user)
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
var/damage = max_health - health
|
||||
if(damage && attacking_item.iswelder())
|
||||
|
||||
@@ -550,10 +567,26 @@
|
||||
max_range = 7
|
||||
desc = "Miniturized gravity scanner with various other sensors, used to detect irregularities in surrounding space. Can only run in vacuum to protect delicate quantum BS elements."
|
||||
deep_scan_range = 0
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/weak,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/scanning_module,
|
||||
/obj/item/stock_parts/manipulator = 3
|
||||
)
|
||||
|
||||
/obj/machinery/shipsensors/weak/scc_shuttle
|
||||
icon_state = "sensors"
|
||||
icon = 'icons/obj/spaceship/scc/helm_pieces.dmi'
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/weak/scc,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/scanning_module,
|
||||
/obj/item/stock_parts/manipulator = 3
|
||||
)
|
||||
|
||||
/obj/machinery/shipsensors/strong
|
||||
desc = "An upgrade to the standard ship-mounted sensor array, this beast has massive cooling systems running beneath it, allowing it to run hotter for much longer. Can only run in vacuum to protect delicate quantum BS elements."
|
||||
@@ -561,10 +594,30 @@
|
||||
max_range = 14
|
||||
deep_scan_range = 6
|
||||
deep_scan_sensor_name = "High-Power Sensor Array"
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/strong,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/subspace/analyzer,
|
||||
/obj/item/stock_parts/manipulator/pico = 3,
|
||||
/obj/item/stock_parts/scanning_module/phasic,
|
||||
/obj/item/stack/cable_coil = 30
|
||||
)
|
||||
|
||||
/obj/machinery/shipsensors/strong/scc_shuttle //Exclusively for the Horizon scout shuttle.
|
||||
icon_state = "sensors"
|
||||
icon = 'icons/obj/spaceship/scc/shuttle_sensors.dmi'
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/strong/scc,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/subspace/analyzer,
|
||||
/obj/item/stock_parts/manipulator/pico = 3,
|
||||
/obj/item/stock_parts/scanning_module/phasic,
|
||||
/obj/item/stack/cable_coil = 30
|
||||
)
|
||||
|
||||
/obj/machinery/shipsensors/strong/venator
|
||||
name = "venator-class quantum sensor array"
|
||||
@@ -575,3 +628,15 @@
|
||||
layer = ABOVE_HUMAN_LAYER
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/venator,
|
||||
/obj/item/stock_parts/subspace/ansible,
|
||||
/obj/item/stock_parts/subspace/filter,
|
||||
/obj/item/stock_parts/subspace/treatment,
|
||||
/obj/item/stock_parts/subspace/analyzer,
|
||||
/obj/item/stock_parts/subspace/amplifier,
|
||||
/obj/item/stock_parts/manipulator/pico = 4,
|
||||
/obj/item/stock_parts/scanning_module/phasic = 3,
|
||||
/obj/item/bluespace_crystal,
|
||||
/obj/item/stack/cable_coil = 30
|
||||
)
|
||||
|
||||
@@ -126,9 +126,9 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/ship/sensors/Destroy()
|
||||
QDEL_NULL(sound_token)
|
||||
sensors = null
|
||||
sensor_ref = null
|
||||
identification = null
|
||||
QDEL_NULL(sound_token)
|
||||
if(LAZYLEN(viewers))
|
||||
for(var/datum/weakref/W in viewers)
|
||||
var/M = W.resolve()
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
power_channel = EQUIP
|
||||
idle_power_usage = 21600 //6 Wh per tick for default 2 capacitor. Gives them a reason to turn it off, really to nerf backup battery
|
||||
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/unary_atmos/engine,
|
||||
/obj/item/stack/cable_coil = 30,
|
||||
/obj/item/pipe = 2)
|
||||
|
||||
var/datum/ship_engine/gas_thruster/controller
|
||||
var/thrust_limit = 1 //Value between 1 and 0 to limit the resulting thrust
|
||||
var/volume_per_burn = 15 //20 litres(with bin)
|
||||
@@ -78,6 +83,10 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/engine/scc_shuttle
|
||||
icon = 'icons/obj/spaceship/scc/ship_engine.dmi'
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/unary_atmos/engine/scc_shuttle,
|
||||
/obj/item/stack/cable_coil = 30,
|
||||
/obj/item/pipe = 2)
|
||||
|
||||
/obj/machinery/atmospherics/unary/engine/scc_ship_engine
|
||||
name = "ship thruster"
|
||||
@@ -86,6 +95,19 @@
|
||||
opacity = FALSE
|
||||
pixel_x = -64
|
||||
exhaust_offset = 3
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/unary_atmos/engine/scc_ship,
|
||||
/obj/item/stack/cable_coil = 30,
|
||||
/obj/item/pipe = 2)
|
||||
|
||||
/obj/machinery/atmospherics/unary/engine/attackby(obj/item/attacking_item, mob/user)
|
||||
. = ..()
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/unary/engine/scc_ship_engine/check_blockage()
|
||||
return 0
|
||||
@@ -231,11 +253,3 @@
|
||||
spawn(20)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/circuitboard/unary_atmos/engine//why don't we move this elsewhere?
|
||||
name = T_BOARD("gas thruster")
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/atmospherics/unary/engine
|
||||
origin_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 2)
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 30,
|
||||
/obj/item/pipe = 2)
|
||||
|
||||
@@ -43,6 +43,12 @@
|
||||
power_channel = ENVIRON
|
||||
idle_power_usage = 19600
|
||||
anchored = TRUE
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/engine/ion,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stock_parts/matter_bin,
|
||||
/obj/item/stock_parts/capacitor = 2
|
||||
)
|
||||
|
||||
var/datum/ship_engine/ion/controller
|
||||
var/thrust_limit = 1
|
||||
@@ -75,13 +81,11 @@
|
||||
/obj/machinery/ion_engine/proc/get_thrust()
|
||||
return thrust_limit * generated_thrust * on
|
||||
|
||||
/obj/item/circuitboard/engine/ion
|
||||
name = T_BOARD("ion propulsion device")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/ion_engine
|
||||
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stock_parts/matter_bin = 1,
|
||||
/obj/item/stock_parts/capacitor = 2)
|
||||
/obj/machinery/ion_engine/attackby(obj/item/attacking_item, mob/user)
|
||||
. = ..()
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
icon = 'icons/obj/ship_engine.dmi'
|
||||
icon_state = "nozzle"
|
||||
anchored = TRUE
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/engine/maneuvering,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stock_parts/matter_bin,
|
||||
/obj/item/stock_parts/capacitor = 2
|
||||
)
|
||||
|
||||
var/datum/ship_engine/maneuvering/controller
|
||||
var/thrust_limit = 1
|
||||
@@ -54,6 +60,15 @@
|
||||
QDEL_NULL(controller)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/maneuvering_engine/attackby(obj/item/attacking_item, mob/user)
|
||||
. = ..()
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/maneuvering_engine/proc/get_status()
|
||||
. = list()
|
||||
.+= "Location: [get_area(src)]."
|
||||
@@ -64,15 +79,3 @@
|
||||
|
||||
/obj/machinery/maneuvering_engine/proc/get_thrust()
|
||||
return thrust_limit * generated_thrust * on
|
||||
|
||||
/obj/item/circuitboard/engine/maneuvering
|
||||
name = T_BOARD("pulse-maneuvering device")
|
||||
board_type = "machine"
|
||||
icon_state = "mcontroller"
|
||||
build_path = /obj/machinery/maneuvering_engine
|
||||
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stock_parts/matter_bin = 1,
|
||||
/obj/item/stock_parts/capacitor = 2
|
||||
)
|
||||
|
||||
@@ -5,6 +5,12 @@
|
||||
icon_state = "iff"
|
||||
anchored = TRUE
|
||||
idle_power_usage = 500
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/iff_beacon,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stock_parts/subspace/transmitter,
|
||||
/obj/item/stock_parts/capacitor
|
||||
)
|
||||
var/datum/wires/iff/wires
|
||||
var/disabled = FALSE
|
||||
var/obfuscating = FALSE
|
||||
@@ -25,6 +31,10 @@
|
||||
/obj/machinery/iff_beacon/attackby(obj/item/attacking_item, mob/user)
|
||||
if(default_deconstruction_screwdriver(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(user, attacking_item))
|
||||
return TRUE
|
||||
if(default_part_replacement(user, attacking_item))
|
||||
return TRUE
|
||||
|
||||
if(panel_open)
|
||||
if(attacking_item.ismultitool() || attacking_item.iswirecutter())
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/datum/design/circuit/ship
|
||||
p_category = "Ship Component Circuit Designs"
|
||||
|
||||
/datum/design/circuit/ship/engine
|
||||
name = "Gas Propulsion Thruster"
|
||||
req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 2)
|
||||
build_path = /obj/item/circuitboard/unary_atmos/engine
|
||||
|
||||
/datum/design/circuit/ship/engine/ion
|
||||
name = "Ion Propulsion Engine"
|
||||
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
|
||||
materials = list(MATERIAL_GOLD = 250, MATERIAL_GLASS = 2000)
|
||||
build_path = /obj/item/circuitboard/engine/ion
|
||||
|
||||
/datum/design/circuit/ship/sensors_weak
|
||||
name = "Low-Power Sensor Suite"
|
||||
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 3, TECH_BLUESPACE = 1)
|
||||
build_path = /obj/item/circuitboard/shipsensors/weak
|
||||
|
||||
/datum/design/circuit/ship/sensors
|
||||
name = "Sensor Suite"
|
||||
req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 5, TECH_BLUESPACE = 3)
|
||||
build_path = /obj/item/circuitboard/shipsensors
|
||||
|
||||
/datum/design/circuit/ship/sensors_strong
|
||||
name = "High-Power Sensor Suite"
|
||||
req_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 8, TECH_BLUESPACE = 5)
|
||||
build_path = /obj/item/circuitboard/shipsensors/strong
|
||||
materials = list(MATERIAL_GOLD = 250, MATERIAL_GLASS = 2000)
|
||||
|
||||
/datum/design/circuit/ship/iff
|
||||
name = "IFF Transponder"
|
||||
req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 5, TECH_DATA = 3)
|
||||
build_path = /obj/item/circuitboard/iff_beacon
|
||||
@@ -0,0 +1,58 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# - (fixes bugs)
|
||||
# wip
|
||||
# - (work in progress)
|
||||
# qol
|
||||
# - (quality of life)
|
||||
# soundadd
|
||||
# - (adds a sound)
|
||||
# sounddel
|
||||
# - (removes a sound)
|
||||
# rscadd
|
||||
# - (adds a feature)
|
||||
# rscdel
|
||||
# - (removes a feature)
|
||||
# imageadd
|
||||
# - (adds an image or sprite)
|
||||
# imagedel
|
||||
# - (removes an image or sprite)
|
||||
# spellcheck
|
||||
# - (fixes spelling or grammar)
|
||||
# experiment
|
||||
# - (experimental change)
|
||||
# balance
|
||||
# - (balance changes)
|
||||
# code_imp
|
||||
# - (misc internal code change)
|
||||
# refactor
|
||||
# - (refactors code)
|
||||
# config
|
||||
# - (makes a change to the config files)
|
||||
# admin
|
||||
# - (makes changes to administrator tools)
|
||||
# server
|
||||
# - (miscellaneous changes to server)
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: RustingWithYou
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- qol: "Sensors, thrusters, and IFF beacons are now buildable and deconstructable."
|
||||
@@ -63,8 +63,12 @@ type DistressBeaconData = {
|
||||
};
|
||||
|
||||
const SensorSection = function (act, data: SensorsData) {
|
||||
const range_choice_max = data.range_choices[data.range_choices.length - 1];
|
||||
|
||||
let range_choice_max = 0;
|
||||
if (data.range_choices && data.range_choices.length) {
|
||||
range_choice_max = data.range_choices[data.range_choices.length - 1];
|
||||
} else {
|
||||
range_choice_max = 0;
|
||||
}
|
||||
return (
|
||||
<Section
|
||||
title="Sensor Array Control"
|
||||
|
||||
Reference in New Issue
Block a user