mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Powernet separation (#29348)
* Adds reinforced APCs and frames for them. * farragus WIP * more farragus stuff * more faragus stuff * more farragus * uses plastic for insulation instead * box and faragus changes * Box changes * cerebron changes * more meta updates * fixes short on box station * fixes shorts on meta station * delta changes * adds reinforced apcs with bigger cells * emerald things * more diagoras * cleaning up cables in diagoras * switches elecmaints smes to the engineering type on diagoras * adds more grid monitors to cyberiad * various corrections * 2 doors on cyberiad electrical maints * boxstation fixes * Kerberos fixes * cerebron fixes * some faragus fixes * more cyberiad fixes * meta fixes * more kerberos fixes * faragus and cyberiad fixes * emerald fixes * farragus fixes * emerald fixes * farragus fixes * emerald fixes * diagoras fix * more map fixes * more CI fixes * final fixes I hope * Update emeraldstation.dmm * finish merging metastation * reset meta to master version * redoing some of the meta changes * Update metastation.dmm * clear merge conflict * Update metastation.dmm * Update metastation.dmm * Update metastation.dmm * meta resolution * emerald resolution * delta resolution * fartgas resolution * box box * stay out stay out * metastation fixes * faragus fix * delta fix * meta changes * Starting over with farragus * Starting over in faragus * faragus changes * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * Update cerestation.dmm * resolving some faragus conflicts * resolve faragus conflicts * resolves delta conflicts * resolves cyberiad conflicts * resolves emerald conflicts * fixes cables in faragus * fixes meta cables * fixes delta cables * more meta fixes * more farragus cable fixes * more cable fixes * meta and faragus fixes * box and delta fixes * more mapping fixes * hopefully the last fix * Update metastation.dmm * Update metastation.dmm * fixes shorts on cyberiad cerebron and farragus * CI fixes * Update cerestation.dmm * resolve faragus conflicts * resolve emerald conflict * fix some faragus cabling * more cabling correction in faragus * more cable fixes * Update cerestation.dmm * remove doubled scrubber pipe on tile * resolves faragus conflict * changes the default power input of engineering SMES to 200kw and 80kW respectively * connects power monitoring computers to the grid that weren't * meta station elec maints improvements * adds missing power monitoring computers on box and delta * removes dirt from wall * corrects area boundry on meta * adds missing cable on box sci * removes dirt from wall on box * connects cyberiad bridge to the rest of the powernet * connects box brig to powernet * Adds catwalks to box maints * adds catwalks to meta * Adds catwalks to delta * Update deltastation.dmm * adds ability to insulate cables * Moves stations to using extra insulated cables for high power network * Removes catwalks from meta * Removes catwalks from box * Removes catwalks from delta * resolves box conflicts * Update cable.dm * remove floating request console * corrects position of fire alarm and removes extra intercom on metastation * resolves faragus conflict * fixes a stray light bulb and light switch in maints as well as a doubled power * wires kerberos security checkpoint to the grid * Update cerestation.dmm * Removes stray extinguisher cabinet from meta station * resolves area conflict on faragus * resolves more faragus issues * fixes faragus cabling issues * Update cerestation.dmm * removes another stray fire extinguisher cabinet * insulates the APC in delta PTL room * connect delta fore starboard solars to the high power grid instead of the low power * Update deltastation.dmm * deconflict * solves some unconnected cables * connects delta customs to network and finishes resolving conflicts * Update deltastation.dmm * adds the new cables. needs coils and mapping * moves connection perms to the heavy duty cables. toggled with engineering permission ID. box gets new cables * sorts cables on stations * faragus cable connections * cable corrections. Adds heavy duty cables to the autolathe * CI fix * more fixes and makes the new cables show up on t ray scanners * box station mapping fixes * delta mapping fixes * meta fix * Update deltastation.dmm * delta and faragus fixes * Update emeraldstation.dmm * adds diagonal sprites to heavy duty cables. allows sillicons to toggle them and * Makes borg versions of the heavy duty cable coil * palete consolidation * Improves visibility of high power cables * fixes a wrong wire under the pet store maints door in delta station * resolve conflicts * migrates new cable type to new attack chain * Update cable_coil.dm
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
// These exist here and not as defines in `apc_defines.dm` so they can be modified for `test_apc_construction.dm`.
|
||||
var/apc_frame_welding_time = 2 SECONDS
|
||||
var/apc_terminal_wiring_time = 2 SECONDS
|
||||
var/frame_type = /obj/item/mounted/frame/apc_frame
|
||||
var/sheet_type = /obj/item/stack/sheet/metal
|
||||
|
||||
// set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :(
|
||||
powernet = 0
|
||||
@@ -226,6 +228,7 @@
|
||||
. += "Electronics installed but not wired."
|
||||
else /* if(!has_electronics() && !terminal) */
|
||||
. += "There are no electronics nor connected wires."
|
||||
. += shock_proof ? "There is additional plastic insulation" : "There is a place to put in some plastic insulation"
|
||||
else
|
||||
if(stat & MAINT)
|
||||
. += "The cover is closed. Something wrong with it: it doesn't work."
|
||||
@@ -376,7 +379,7 @@
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
// APC frame repair. Instant, but you consume 2 metal instead of doing it for free.
|
||||
if(istype(used, /obj/item/mounted/frame/apc_frame) && opened)
|
||||
if(istype(used, frame_type) && opened)
|
||||
if(!(stat & BROKEN || opened == APC_COVER_OFF || obj_integrity < max_integrity))
|
||||
to_chat(user, "<span class='warning'>[src] has no damage to fix!</span>")
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
@@ -408,6 +411,26 @@
|
||||
update_icon()
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(istype(used, /obj/item/stack/sheet/plastic))
|
||||
var/obj/item/stack/sheet/plastic/plastic_stack = used
|
||||
if(!opened)
|
||||
to_chat(user, "<span class='warning'>You can't add insulation with the cover closed!</span>")
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(shock_proof)
|
||||
to_chat(user, "<span class='warning'>[src] already has extra insulation installed!</span>")
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(plastic_stack.get_amount() < 10)
|
||||
to_chat(user, "<span class='warning'>You need ten sheets of plastic to add insulation to [src]!</span>")
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
plastic_stack.use(10)
|
||||
to_chat(user, "<span class='notice'>You add extra insulation to [src].</span>")
|
||||
shock_proof = TRUE
|
||||
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/apc/AltClick(mob/user)
|
||||
@@ -441,6 +464,11 @@
|
||||
cell = null
|
||||
charging = APC_NOT_CHARGING
|
||||
update_icon()
|
||||
else if(shock_proof)
|
||||
to_chat(user, "<span class='info'>You remove the insulation from [src]</span>")
|
||||
var/obj/item/stack/sheet/plastic/plastic_stack = new(loc, 10)
|
||||
user.put_in_hands(plastic_stack)
|
||||
shock_proof = FALSE
|
||||
return
|
||||
|
||||
if(stat & (BROKEN|MAINT))
|
||||
@@ -859,8 +887,10 @@
|
||||
if(obj_integrity > integrity_failure || opened != APC_COVER_OFF)
|
||||
return
|
||||
var/drop_loc = drop_location()
|
||||
new /obj/item/stack/sheet/metal(drop_loc, 3) // Metal from the frame
|
||||
new sheet_type(drop_loc, 3) // Metal from the frame
|
||||
new /obj/item/stack/cable_coil(drop_loc, 10) // wiring from the terminal and the APC, some lost due to explosion
|
||||
if(shock_proof)
|
||||
new /obj/item/stack/sheet/plastic(drop_loc, 10)
|
||||
QDEL_NULL(terminal) // We don't want floating terminals
|
||||
qdel(src)
|
||||
|
||||
@@ -1131,6 +1161,17 @@
|
||||
/obj/machinery/power/apc/critical
|
||||
cell_type = 25000
|
||||
|
||||
/// Can handle any amount of power. Made with plasteel frames and is found in maints and other high power areas.
|
||||
/obj/machinery/power/apc/reinforced
|
||||
shock_proof = TRUE
|
||||
|
||||
/obj/machinery/power/apc/reinforced/important
|
||||
cell_type = 10000
|
||||
|
||||
/obj/machinery/power/apc/reinforced/critical
|
||||
cell_type = 25000
|
||||
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/syndicate, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/syndicate/off, 24, 24)
|
||||
@@ -1139,6 +1180,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/critical, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/off_station, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/off_station/empty_charge, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/worn_out, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/reinforced, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/reinforced/important, 24, 24)
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/reinforced/critical, 24, 24)
|
||||
|
||||
|
||||
/obj/item/apc_electronics
|
||||
|
||||
@@ -169,14 +169,16 @@
|
||||
WELDER_ATTEMPT_SLICING_MESSAGE
|
||||
if(I.use_tool(src, user, apc_frame_welding_time, amount = 3, volume = I.tool_volume))
|
||||
if((stat & BROKEN) || opened == APC_COVER_OFF)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
new sheet_type(loc)
|
||||
if(shock_proof)
|
||||
new /obj/item/stack/sheet/plastic(loc, 10)
|
||||
user.visible_message(\
|
||||
"<span class='notice'>[user] has cut [src] apart with [I].</span>",
|
||||
"<span class='notice'>You disassembled the broken APC frame.</span>",
|
||||
"<span class='warning'>You hear welding.</span>"
|
||||
)
|
||||
else
|
||||
new /obj/item/mounted/frame/apc_frame(loc)
|
||||
new frame_type(loc)
|
||||
user.visible_message(\
|
||||
"<span class='notice'>[user] has cut [src] from the wall with [I].</span>",
|
||||
"<span class='notice'>You cut the APC frame from the wall.</span>",
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
* Cable directions (d1 and d2)
|
||||
* 9 1 5
|
||||
@@ -21,7 +20,7 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
*/
|
||||
/obj/structure/cable
|
||||
name = "power cable"
|
||||
desc = "A flexible superconducting cable for heavy-duty power transfer."
|
||||
desc = "A low-cost superconducting cable"
|
||||
icon = 'icons/obj/power_cond/power_cond_white.dmi'
|
||||
icon_state = "0-1"
|
||||
level = 1
|
||||
@@ -40,6 +39,15 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
/// The regional powernet this cable is registered to
|
||||
var/datum/regional_powernet/powernet
|
||||
var/strengthened = FALSE
|
||||
/// The type of cable coil you make when deconstructed
|
||||
var/cable_coil_type = /obj/item/stack/cable_coil
|
||||
/// Whether the cable has additional insulation to prevent shocking on contact
|
||||
var/extra_insulated = FALSE
|
||||
/// Types of cables that can connect to this cable
|
||||
var/connect_type = CABLE_LOW_POWER
|
||||
/// The types of cables that can merge with this cable
|
||||
var/merge_id = CABLE_MERGE_LOW_POWER
|
||||
|
||||
|
||||
/obj/structure/cable/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -107,8 +115,20 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
var/obj/item/toy/crayon/C = W
|
||||
cable_color(C.dye_color)
|
||||
|
||||
else if(istype(W, /obj/item/stack/sheet/plastic))
|
||||
if(extra_insulated)
|
||||
to_chat(user, "<span class='warning'>The cable is already insulated</span>")
|
||||
return
|
||||
var/obj/item/stack/sheet/plastic/plastack = W
|
||||
if(plastack.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>Not enough plastic!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='info'>You add insulation to the cable</span>")
|
||||
plastack.use(1)
|
||||
extra_insulated = TRUE
|
||||
|
||||
else
|
||||
if(W.flags & CONDUCT)
|
||||
if(!extra_insulated && W.flags & CONDUCT)
|
||||
shock(user, 50, 0.7)
|
||||
|
||||
add_fingerprint(user)
|
||||
@@ -131,6 +151,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
|
||||
/obj/structure/cable/examine(mob/user)
|
||||
. = ..()
|
||||
if(extra_insulated)
|
||||
. += "<span class='notice'>It has additional insulation</span>"
|
||||
if(isobserver(user))
|
||||
. += generate_power_message()
|
||||
|
||||
@@ -169,9 +191,9 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
investigate_log("was deconstructed by [key_name(usr, 1)] in [get_area(usr)]([T.x], [T.y], [T.z] - [ADMIN_JMP(T)])",INVESTIGATE_WIRES)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
if(d1) // 0-X cables are 1 unit, X-X cables are 2 units long
|
||||
new/obj/item/stack/cable_coil(T, 2, color)
|
||||
new cable_coil_type(T, 2, color)
|
||||
else
|
||||
new/obj/item/stack/cable_coil(T, 1, color)
|
||||
new cable_coil_type(T, 1, color)
|
||||
qdel(src)
|
||||
|
||||
/* ===POWERNET PROCS=== */
|
||||
@@ -222,6 +244,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
for(var/obj/structure/cable/C in get_step(src, direction))
|
||||
if(src == C) // skip ourself
|
||||
continue
|
||||
if(!(C.connect_type & connect_type))
|
||||
continue
|
||||
if(C.d1 != flipped_direction && C.d2 != flipped_direction)
|
||||
continue //no match! Continue the search
|
||||
//if the matching cable somehow got no powernet, make him one (should not happen for cables)
|
||||
@@ -247,6 +271,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
//first let's add turf cables to our powernet
|
||||
if(istype(object, /obj/structure/cable))
|
||||
var/obj/structure/cable/C = object
|
||||
if(!(C.connect_type & connect_type))
|
||||
continue
|
||||
if(C.d1 == d1 || C.d2 == d1 || C.d1 == d2 || C.d2 == d2) //only connected if they have a common direction
|
||||
if(C.powernet == powernet)
|
||||
continue
|
||||
@@ -284,6 +310,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
for(var/obj/structure/cable/C in get_step(src, direction & (NORTH|SOUTH)))
|
||||
if(src == C) // skip ourself
|
||||
continue
|
||||
if(!(C.connect_type & connect_type))
|
||||
continue
|
||||
//we've got a diagonally matching cable
|
||||
if(C.d1 == FLIP_DIR_VERTICALLY(direction) || C.d2 == FLIP_DIR_VERTICALLY(direction))
|
||||
if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables)
|
||||
@@ -298,6 +326,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
for(var/obj/structure/cable/C in get_step(src, direction & (EAST|WEST)))
|
||||
if(src == C)
|
||||
continue
|
||||
if(!(C.connect_type & connect_type))
|
||||
continue
|
||||
if(C.d1 == FLIP_DIR_HORIZONTALLY(direction) || C.d2 == FLIP_DIR_HORIZONTALLY(direction)) //we've got a diagonally matching cable
|
||||
if(!C.powernet) //if the matching cable somehow got no powernet, make him one (should not happen for cables)
|
||||
var/datum/regional_powernet/new_powernet = new()
|
||||
@@ -439,6 +469,56 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
src.strengthened = FALSE
|
||||
UnregisterSignal(demon, COMSIG_MOB_DEATH)
|
||||
|
||||
/// Variant for high power carrying. insulated by default
|
||||
/obj/structure/cable/extra_insulated
|
||||
name = "heavy duty power cable"
|
||||
desc = "A smart, flexible superconducting cable for heavy-duty power transfer.\nAn ID card can be swiped to toggle the ability to connect to other cables"
|
||||
icon = 'icons/obj/power_cond/hv_power_cond.dmi'
|
||||
color = null
|
||||
extra_insulated = TRUE
|
||||
merge_id = CABLE_MERGE_HIGH_POWER
|
||||
connect_type = CABLE_HIGH_POWER
|
||||
cable_coil_type = /obj/item/stack/cable_coil/extra_insulated
|
||||
req_one_access = list(ACCESS_ENGINE, ACCESS_CE)
|
||||
|
||||
/// A pre unlocked bridge cable for mapping
|
||||
/obj/structure/cable/extra_insulated/pre_connect
|
||||
icon = 'icons/obj/power_cond/hv_power_cond_connected.dmi'
|
||||
connect_type = CABLE_ALL_CONNECTIONS
|
||||
|
||||
/obj/structure/cable/extra_insulated/proc/toggle_connection(user)
|
||||
if(allowed(user))
|
||||
if(connect_type == CABLE_ALL_CONNECTIONS)
|
||||
connect_type = CABLE_HIGH_POWER
|
||||
icon = 'icons/obj/power_cond/hv_power_cond.dmi'
|
||||
else
|
||||
connect_type = CABLE_ALL_CONNECTIONS
|
||||
icon = 'icons/obj/power_cond/hv_power_cond_connected.dmi'
|
||||
|
||||
|
||||
// Reconnect the cable according to what is allowed now
|
||||
if(powernet)
|
||||
cut_cable_from_powernet(FALSE)
|
||||
merge_connected_networks_on_turf()
|
||||
|
||||
if(d1)
|
||||
merge_connected_networks(d1)
|
||||
if(IS_DIR_DIAGONAL(d1))
|
||||
merge_diagonal_networks(d1)
|
||||
if(d2)
|
||||
merge_connected_networks(d2)
|
||||
if(IS_DIR_DIAGONAL(d2))
|
||||
merge_diagonal_networks(d2)
|
||||
|
||||
/obj/structure/cable/extra_insulated/item_interaction(mob/living/user, obj/item/W, list/modifiers)
|
||||
. = ITEM_INTERACT_COMPLETE
|
||||
if(W.GetID())
|
||||
toggle_connection(user)
|
||||
return ..()
|
||||
|
||||
/obj/structure/cable/extra_insulated/attack_ai(mob/user)
|
||||
toggle_connection(user)
|
||||
|
||||
//
|
||||
// This ASCII art represents my brain after looking at cable
|
||||
// code for too long, half of this was written before I was even
|
||||
|
||||
@@ -24,6 +24,11 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
|
||||
usesound = 'sound/items/deconstruct.ogg'
|
||||
/// Type of cable this coil makes
|
||||
var/cable_type = /obj/structure/cable
|
||||
/// Bitflag of the types of cable we can add cable to with this coil.
|
||||
/// This is different to the cable connection flag since it only governs connecting on the same tile
|
||||
var/cable_merge_id = CABLE_MERGE_LOW_POWER
|
||||
|
||||
/obj/item/stack/cable_coil/Initialize(mapload, length, paramcolor)
|
||||
. = ..()
|
||||
@@ -70,6 +75,13 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
else
|
||||
. += "A coil of power cables."
|
||||
|
||||
/obj/item/stack/cable_coil/can_merge(obj/item/stack/check, inhand = FALSE)
|
||||
. = FALSE
|
||||
if(istype(check, merge_type))
|
||||
var/obj/item/stack/cable_coil/coil_check = check
|
||||
. = coil_check.cable_merge_id == cable_merge_id
|
||||
return . && ..()
|
||||
|
||||
//you can use wires to heal robotics
|
||||
/obj/item/stack/cable_coil/attack__legacy__attackchain(mob/M, mob/user)
|
||||
if(!ishuman(M))
|
||||
@@ -133,6 +145,9 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
// Cable merging is handled by parent proc
|
||||
if(C.cable_merge_id != cable_merge_id)
|
||||
to_chat(user, "These coils are of different types.")
|
||||
return
|
||||
if(C.get_amount() >= MAXCOIL)
|
||||
to_chat(user, "The coil is as long as it will get.")
|
||||
return
|
||||
@@ -152,7 +167,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
//////////////////////////////////////////////
|
||||
|
||||
/obj/item/stack/cable_coil/proc/get_new_cable(location)
|
||||
var/obj/structure/cable/C = new(location)
|
||||
var/obj/structure/cable/C = new cable_type(location)
|
||||
C.cable_color(color)
|
||||
|
||||
return C
|
||||
@@ -212,6 +227,8 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
|
||||
/// called when cable_coil is click on an installed obj/cable or click on a turf that already contains a "node" cable
|
||||
/obj/item/stack/cable_coil/proc/cable_join(obj/structure/cable/C, mob/user)
|
||||
if(C.merge_id != cable_merge_id)
|
||||
return
|
||||
var/turf/U = user.loc
|
||||
if(!isturf(U))
|
||||
return
|
||||
@@ -378,6 +395,29 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
. = ..()
|
||||
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN, COLOR_ORANGE)
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated
|
||||
name = "heavy duty cable coil"
|
||||
singular_name = "heavy duty cable"
|
||||
icon = 'icons/obj/cable_coils/heavy_duty.dmi'
|
||||
color = null
|
||||
cable_type = /obj/structure/cable/extra_insulated
|
||||
cable_merge_id = CABLE_MERGE_HIGH_POWER
|
||||
req_one_access = list(ACCESS_ENGINE, ACCESS_CE)
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated/proc/toggle_connection(user)
|
||||
if(allowed(user))
|
||||
if(cable_type == /obj/structure/cable/extra_insulated/pre_connect)
|
||||
cable_type = /obj/structure/cable/extra_insulated
|
||||
icon = 'icons/obj/cable_coils/heavy_duty.dmi'
|
||||
else
|
||||
cable_type = /obj/structure/cable/extra_insulated/pre_connect
|
||||
icon = 'icons/obj/cable_coils/heavy_duty_connected.dmi'
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated/attackby__legacy__attackchain(obj/item/I, mob/living/user)
|
||||
if(I.GetID())
|
||||
toggle_connection(user)
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/cable_coil/cut
|
||||
icon_state = "coil2"
|
||||
|
||||
@@ -399,5 +439,16 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain
|
||||
cable_color(cablecolor)
|
||||
update_icon()
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated/cyborg
|
||||
energy_type = /datum/robot_storage/energy/cable
|
||||
is_cyborg = TRUE
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated/cyborg/attack_self__legacy__attackchain(mob/user)
|
||||
toggle_connection(user)
|
||||
update_icon()
|
||||
|
||||
/obj/item/stack/cable_coil/extra_insulated/cyborg/update_icon_state()
|
||||
return // icon_state should always be a full cable
|
||||
|
||||
#undef HEALPERCABLE
|
||||
#undef MAXCABLEPERHEAL
|
||||
|
||||
@@ -455,6 +455,8 @@
|
||||
|
||||
/obj/machinery/power/smes/engineering
|
||||
charge = 0.08e6 // Engineering starts with some charge for singulo
|
||||
input_level = 200000
|
||||
output_level = 80000
|
||||
|
||||
/obj/machinery/power/smes/empty
|
||||
|
||||
|
||||
Reference in New Issue
Block a user