mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 09:08:30 +01:00
Adds Modular Shield Cables and wrench connection QoL, Spraypainting the generator now causes it to color the shields on next activation (#91122)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot
LemonInTheDark
SmArtKar
parent
3ff811c10a
commit
32abbcc58f
@@ -175,7 +175,7 @@
|
||||
radius = initial(radius)
|
||||
active = TRUE
|
||||
initiating = TRUE
|
||||
|
||||
var/color_shield = cached_color_filter || color
|
||||
if(radius >= 10) //the shield is large so we are going to use the midpoint formula and clamp it to the lowest full number in order to save processing power
|
||||
LAZYADD(inside_shield, circle_range_turfs(src, radius - 1))//in the future we might want to apply an effect to turfs inside the shield
|
||||
LAZYADD(list_of_turfs, get_perimeter(src, radius))
|
||||
@@ -189,7 +189,8 @@
|
||||
var/obj/structure/emergency_shield/modular/deploying_shield = new(target_tile)
|
||||
deploying_shield.shield_generator = src
|
||||
LAZYADD(deployed_shields, deploying_shield)
|
||||
|
||||
if(color_shield)
|
||||
deploying_shield.add_atom_colour(color_shield, FIXED_COLOUR_PRIORITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_field)), 2 SECONDS)
|
||||
calculate_regeneration()
|
||||
return
|
||||
@@ -200,6 +201,8 @@
|
||||
var/obj/structure/emergency_shield/modular/deploying_shield = new(target_tile)
|
||||
deploying_shield.shield_generator = src
|
||||
LAZYADD(deployed_shields, deploying_shield)
|
||||
if(color_shield)
|
||||
deploying_shield.add_atom_colour(color_shield, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_field)), 2 SECONDS)
|
||||
calculate_regeneration()
|
||||
@@ -218,6 +221,8 @@
|
||||
var/obj/structure/emergency_shield/modular/deploying_shield = new(target_tile)
|
||||
deploying_shield.shield_generator = src
|
||||
LAZYADD(deployed_shields, deploying_shield)
|
||||
if(color_shield)
|
||||
deploying_shield.add_atom_colour(color_shield, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_field)), 2 SECONDS)
|
||||
calculate_regeneration()
|
||||
@@ -231,6 +236,8 @@
|
||||
var/obj/structure/emergency_shield/modular/deploying_shield = new(target_tile)
|
||||
deploying_shield.shield_generator = src
|
||||
LAZYADD(deployed_shields, deploying_shield)
|
||||
if(color_shield)
|
||||
deploying_shield.add_atom_colour(color_shield, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_field)), 2 SECONDS)
|
||||
calculate_regeneration()
|
||||
@@ -384,13 +391,18 @@
|
||||
//Start of other machines
|
||||
///The general code used for machines that want to connect to the network
|
||||
/obj/machinery/modular_shield/module
|
||||
|
||||
name = "modular shield debugger" //Filler name and sprite for testing
|
||||
desc = "This is filler for testing you shouldn't see this."
|
||||
icon = 'icons/obj/machines/mech_bay.dmi'
|
||||
icon_state = "recharge_port"
|
||||
density = TRUE
|
||||
|
||||
///This var is what determines if boosters, such as charger or well, can connect to this module
|
||||
var/allow_boosters = TRUE
|
||||
|
||||
///This var is what determines if we are a booster or a logistic module
|
||||
var/is_booster = FALSE
|
||||
|
||||
///The shield generator we are connected to if we find one or a node provides us one
|
||||
var/obj/machinery/modular_shield_generator/shield_generator
|
||||
|
||||
@@ -403,7 +415,8 @@
|
||||
/obj/machinery/modular_shield/module/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
connected_turf = get_step(loc, dir)
|
||||
connected_turf = get_step(src, dir)
|
||||
try_connect()
|
||||
|
||||
/obj/machinery/modular_shield/module/Destroy()
|
||||
|
||||
@@ -412,6 +425,7 @@
|
||||
shield_generator.calculate_boost()
|
||||
if(connected_node)
|
||||
LAZYREMOVE(connected_node.connected_through_us, (src))
|
||||
connected_node.update_icon_state()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/modular_shield/module/examine(mob/user)
|
||||
@@ -456,9 +470,11 @@
|
||||
|
||||
if(connected_node)
|
||||
LAZYREMOVE(connected_node.connected_through_us, (src))
|
||||
connected_node.update_icon_state()
|
||||
connected_node = null
|
||||
|
||||
connected_turf = get_step(loc, dir)
|
||||
connected_turf = get_step(src, dir)
|
||||
try_connect()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/modular_shield/module/crowbar_act(mob/living/user, obj/item/tool)
|
||||
@@ -470,13 +486,14 @@
|
||||
|
||||
/obj/machinery/modular_shield/module/setDir(new_dir)
|
||||
. = ..()
|
||||
connected_turf = get_step(loc, dir)
|
||||
connected_turf = get_step(src, dir)
|
||||
|
||||
///checks for a valid machine in front of us and connects to it
|
||||
/obj/machinery/modular_shield/module/proc/try_connect(user)
|
||||
|
||||
if(shield_generator || connected_node)
|
||||
balloon_alert(user, "already connected to something!")
|
||||
update_icon_state()
|
||||
return
|
||||
|
||||
shield_generator = (locate(/obj/machinery/modular_shield_generator) in connected_turf)
|
||||
@@ -493,7 +510,15 @@
|
||||
|
||||
if(connected_node)
|
||||
|
||||
//checks if the node allows boosters and if we are a booster
|
||||
if(!connected_node.allow_boosters && is_booster)
|
||||
connected_node = null
|
||||
update_icon_state()
|
||||
balloon_alert(user, "cant connect")
|
||||
return
|
||||
|
||||
LAZYOR(connected_node.connected_through_us, (src))
|
||||
connected_node.update_icon_state()
|
||||
shield_generator = connected_node.shield_generator
|
||||
if(shield_generator)
|
||||
LAZYOR(shield_generator.connected_modules, (src))
|
||||
@@ -501,14 +526,15 @@
|
||||
update_icon_state()
|
||||
shield_generator.calculate_boost()
|
||||
return
|
||||
update_icon_state()
|
||||
balloon_alert(user, "connected to node")
|
||||
return
|
||||
update_icon_state()
|
||||
balloon_alert(user, "no connection!")
|
||||
|
||||
|
||||
|
||||
/obj/machinery/modular_shield/module/node
|
||||
|
||||
name = "modular shield node"
|
||||
desc = "A waist high mess of humming pipes and wires that extend the modular shield network."
|
||||
icon = 'icons/obj/machines/modular_shield_generator.dmi'
|
||||
@@ -541,9 +567,11 @@
|
||||
|
||||
if(connected_node)
|
||||
LAZYREMOVE(connected_node.connected_through_us, (src))
|
||||
connected_node.update_icon_state()
|
||||
connected_node = null
|
||||
|
||||
connected_turf = get_step(loc, dir)
|
||||
connected_turf = get_step(src, dir)
|
||||
try_connect()
|
||||
return TRUE
|
||||
|
||||
//after trying to connect to a machine infront of us, we will try to link anything connected to us to a generator
|
||||
@@ -588,12 +616,38 @@
|
||||
connected.shield_generator = null
|
||||
connected.update_icon_state()
|
||||
|
||||
/obj/machinery/modular_shield/module/charger
|
||||
/obj/machinery/modular_shield/module/node/cable
|
||||
name = "modular shield cable"
|
||||
desc = "An ankle high mess of cables packed as low as possible at the cost of lacking connection components necessary for anything other than nodes and the generator itself."
|
||||
icon = 'icons/obj/machines/modular_shield_generator.dmi'
|
||||
icon_state = "cable_node_closed_r_b_l"
|
||||
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.1
|
||||
circuit = /obj/item/circuitboard/machine/modular_shield_cable
|
||||
density = FALSE
|
||||
allow_boosters = FALSE
|
||||
|
||||
/obj/machinery/modular_shield/module/node/cable/update_icon_state()
|
||||
. = ..()
|
||||
var/turf/right_turf = get_step(src, turn(dir, 270))
|
||||
var/obj/machinery/modular_shield/module/node/connected_right = (locate(/obj/machinery/modular_shield/module/node) in right_turf)
|
||||
if(!(connected_right in connected_through_us))
|
||||
connected_right = null
|
||||
var/turf/back_turf = get_step(src, turn(dir, 180))
|
||||
var/obj/machinery/modular_shield/module/node/connected_back = (locate(/obj/machinery/modular_shield/module/node) in back_turf)
|
||||
if(!(connected_back in connected_through_us))
|
||||
connected_back = null
|
||||
var/turf/left_turf = get_step(src, turn(dir, 90))
|
||||
var/obj/machinery/modular_shield/module/node/connected_left = (locate(/obj/machinery/modular_shield/module/node) in left_turf)
|
||||
if(!(connected_left in connected_through_us))
|
||||
connected_left = null
|
||||
icon_state = "cable_node_[panel_open ? "open" : "closed"]_[connected_right ? "r" : "nr"]_[connected_back ? "b" : "nb"]_[connected_left ? "l" : "nl"]"
|
||||
|
||||
/obj/machinery/modular_shield/module/charger
|
||||
name = "modular shield charger"
|
||||
desc = "A machine that somehow fabricates hardlight using electrons."
|
||||
icon = 'icons/obj/machines/modular_shield_generator.dmi'
|
||||
icon_state = "charger_off_closed"
|
||||
is_booster = TRUE
|
||||
|
||||
circuit = /obj/item/circuitboard/machine/modular_shield_charger
|
||||
|
||||
@@ -617,11 +671,11 @@
|
||||
shield_generator.calculate_boost()
|
||||
|
||||
/obj/machinery/modular_shield/module/relay
|
||||
|
||||
name = "modular shield relay"
|
||||
desc = "It helps the shield generator project farther out."
|
||||
icon = 'icons/obj/machines/modular_shield_generator.dmi'
|
||||
icon_state = "relay_off_closed"
|
||||
is_booster = TRUE
|
||||
|
||||
circuit = /obj/item/circuitboard/machine/modular_shield_relay
|
||||
|
||||
@@ -645,11 +699,11 @@
|
||||
shield_generator.calculate_boost()
|
||||
|
||||
/obj/machinery/modular_shield/module/well
|
||||
|
||||
name = "modular shield well"
|
||||
desc = "A device used to hold more hardlight for the modular shield generator."
|
||||
icon = 'icons/obj/machines/modular_shield_generator.dmi'
|
||||
icon_state = "well_off_closed"
|
||||
is_booster = TRUE
|
||||
|
||||
circuit = /obj/item/circuitboard/machine/modular_shield_well
|
||||
|
||||
|
||||
@@ -193,6 +193,14 @@
|
||||
/obj/item/stack/sheet/plasteel = 2,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/modular_shield_cable
|
||||
name = "Modular Shield Cable"
|
||||
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
|
||||
build_path = /obj/machinery/modular_shield/module/node/cable
|
||||
req_components = list(
|
||||
/obj/item/stack/sheet/plasteel = 1,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/modular_shield_well
|
||||
name = "Modular Shield Well"
|
||||
greyscale_colors = CIRCUIT_COLOR_ENGINEERING
|
||||
|
||||
@@ -217,6 +217,16 @@
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/modular_shield_cable
|
||||
name = "Modular Shield Cable Board"
|
||||
desc = "The circuit board for a modular shield cable."
|
||||
id = "modular_shield_cable"
|
||||
build_path = /obj/item/circuitboard/machine/modular_shield_cable
|
||||
category = list(
|
||||
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/modular_shield_relay
|
||||
name = "Modular Shield Relay Board"
|
||||
desc = "The circuit board for a modular shield relay."
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
"holodisk",
|
||||
"modular_shield_generator",
|
||||
"modular_shield_node",
|
||||
"modular_shield_cable",
|
||||
"modular_shield_relay",
|
||||
"modular_shield_charger",
|
||||
"modular_shield_well",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 38 KiB |
Reference in New Issue
Block a user