mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-15 09:57:49 +01:00
Cyborg Overhaul Booty+
Added dickgirl version of all bootyborgs and improved all of the sprites. Ported /tg/station's service, beaker, and circuit manipulator modules and upgrades for their respective borg types. Added rags, soap, crowbar, ect. to appropriate cyborg modules for quality of life improvment. Made similar changes to dog-borgs to bring them up to speed with the rest of the borg modules.
This commit is contained in:
@@ -44,6 +44,10 @@
|
||||
#define EXAMINE_POSITION_BEFORE 2
|
||||
//End positions
|
||||
#define COMPONENT_EXNAME_CHANGED 1
|
||||
#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon"
|
||||
#define COMSIG_ATOM_NO_UPDATE_ICON_STATE 1
|
||||
#define COMSIG_ATOM_NO_UPDATE_OVERLAYS 2 //from base of atom/update_icon(): ()
|
||||
#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" //from base of atom/update_overlays(): (list/new_overlays)
|
||||
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom)
|
||||
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
|
||||
#define COMPONENT_ATOM_BLOCK_EXIT 1
|
||||
@@ -150,6 +154,7 @@
|
||||
#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living)
|
||||
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage)
|
||||
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
|
||||
#define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" //sent from borg mobs to itself, for tools to catch an upcoming destroy() due to safe decon (rather than detonation)
|
||||
|
||||
// /mob/living/carbon signals
|
||||
#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity))
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
// Interfaces for the SpacemanDMM linter, define'd to nothing when the linter
|
||||
// is not in use.
|
||||
|
||||
// The SPACEMAN_DMM define is set by the linter and other tooling when it runs.
|
||||
#ifdef SPACEMAN_DMM
|
||||
#define RETURN_TYPE(X) set SpacemanDMM_return_type = X
|
||||
#define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X
|
||||
#define UNLINT(X) SpacemanDMM_unlint(X)
|
||||
#else
|
||||
#define RETURN_TYPE(X)
|
||||
#define SHOULD_CALL_PARENT(X)
|
||||
#define UNLINT(X) X
|
||||
#endif
|
||||
+24
-2
@@ -24,7 +24,7 @@
|
||||
var/list/add_overlays // a very temporary list of overlays to add
|
||||
|
||||
var/list/managed_vis_overlays //vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
|
||||
|
||||
var/list/managed_overlays
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
var/buckle_message_cooldown = 0
|
||||
var/fingerprintslast
|
||||
@@ -255,6 +255,28 @@
|
||||
/atom/proc/get_examine_string(mob/user, thats = FALSE)
|
||||
. = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
|
||||
|
||||
/atom/proc/update_icon_state()
|
||||
|
||||
/atom/proc/update_overlaysb()
|
||||
SHOULD_CALL_PARENT(1)
|
||||
. = list()
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .)
|
||||
|
||||
/atom/proc/update_iconb()
|
||||
var/signalOut = SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON)
|
||||
|
||||
if(!(signalOut & COMSIG_ATOM_NO_UPDATE_ICON_STATE))
|
||||
update_icon_state()
|
||||
|
||||
if(!(signalOut & COMSIG_ATOM_NO_UPDATE_OVERLAYS))
|
||||
var/list/new_overlays = update_overlaysb()
|
||||
if(managed_overlays)
|
||||
cut_overlay(managed_overlays)
|
||||
managed_overlays = null
|
||||
if(length(new_overlays))
|
||||
managed_overlays = new_overlays
|
||||
add_overlay(new_overlays)
|
||||
|
||||
/atom/proc/examine(mob/user)
|
||||
to_chat(user, get_examine_string(user, TRUE))
|
||||
|
||||
@@ -709,4 +731,4 @@ Proc for attack log creation, because really why not
|
||||
if(filter_data[name])
|
||||
filter_data -= name
|
||||
update_filters()
|
||||
return TRUE
|
||||
return TRUE
|
||||
@@ -744,3 +744,204 @@
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||
return
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
Borg apparatus
|
||||
***********************************************************************/
|
||||
//These are tools that can hold only specific items. For example, the mediborg gets one that can only hold beakers and bottles.
|
||||
|
||||
/obj/item/borg/apparatus/
|
||||
name = "unknown storage apparatus"
|
||||
desc = "This device seems nonfunctional."
|
||||
icon = 'icons/mob/robot_items.dmi'
|
||||
icon_state = "hugmodule"
|
||||
var/obj/item/stored
|
||||
var/list/storable = list()
|
||||
|
||||
/obj/item/borg/apparatus/Initialize()
|
||||
. = ..()
|
||||
RegisterSignal(loc.loc, COMSIG_BORG_SAFE_DECONSTRUCT, .proc/safedecon)
|
||||
|
||||
/obj/item/borg/apparatus/Destroy()
|
||||
if(stored)
|
||||
qdel(stored)
|
||||
. = ..()
|
||||
|
||||
///If we're safely deconstructed, we put the item neatly onto the ground, rather than deleting it.
|
||||
/obj/item/borg/apparatus/proc/safedecon()
|
||||
if(stored)
|
||||
stored.forceMove(get_turf(src))
|
||||
stored = null
|
||||
|
||||
/obj/item/borg/apparatus/Exited(atom/A)
|
||||
if(A == stored) //sanity check
|
||||
UnregisterSignal(stored, COMSIG_ATOM_UPDATE_ICON)
|
||||
stored = null
|
||||
update_icon()
|
||||
. = ..()
|
||||
|
||||
///A right-click verb, for those not using hotkey mode.
|
||||
/obj/item/borg/apparatus/verb/verb_dropHeld()
|
||||
set category = "Object"
|
||||
set name = "Drop"
|
||||
|
||||
if(usr != loc || !stored)
|
||||
return
|
||||
stored.forceMove(get_turf(usr))
|
||||
return
|
||||
|
||||
/obj/item/borg/apparatus/attack_self(mob/living/silicon/robot/user)
|
||||
if(!stored)
|
||||
return ..()
|
||||
if(user.client?.keys_held["Alt"])
|
||||
stored.forceMove(get_turf(user))
|
||||
return
|
||||
stored.attack_self(user)
|
||||
|
||||
/obj/item/borg/apparatus/pre_attack(atom/A, mob/living/user, params)
|
||||
if(!stored)
|
||||
var/itemcheck = FALSE
|
||||
for(var/i in storable)
|
||||
if(istype(A, i))
|
||||
itemcheck = TRUE
|
||||
break
|
||||
if(itemcheck)
|
||||
var/obj/item/O = A
|
||||
O.forceMove(src)
|
||||
stored = O
|
||||
RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_iconb)
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
stored.melee_attack_chain(user, A, params)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/borg/apparatus/attackby(obj/item/W, mob/user, params)
|
||||
if(stored)
|
||||
W.melee_attack_chain(user, stored, params)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/////////////////
|
||||
//beaker holder//
|
||||
/////////////////
|
||||
|
||||
/obj/item/borg/apparatus/beaker
|
||||
name = "beaker storage apparatus"
|
||||
desc = "A special apparatus for carrying beakers without spilling the contents. Alt-Z or right-click to drop the beaker."
|
||||
icon_state = "borg_beaker_apparatus"
|
||||
storable = list(/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/bottle)
|
||||
|
||||
/obj/item/borg/apparatus/beaker/Initialize()
|
||||
. = ..()
|
||||
stored = new /obj/item/reagent_containers/glass/beaker/large(src)
|
||||
RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_iconb)
|
||||
update_icon()
|
||||
|
||||
/obj/item/borg/apparatus/beaker/Destroy()
|
||||
if(stored)
|
||||
var/obj/item/reagent_containers/C = stored
|
||||
C.SplashReagents(get_turf(src))
|
||||
qdel(stored)
|
||||
. = ..()
|
||||
|
||||
/obj/item/borg/apparatus/beaker/examine()
|
||||
. = ..()
|
||||
if(stored)
|
||||
var/obj/item/reagent_containers/C = stored
|
||||
. += "The apparatus currently has [C] secured, which contains:"
|
||||
if(length(C.reagents.reagent_list))
|
||||
for(var/datum/reagent/R in C.reagents.reagent_list)
|
||||
. += "[R.volume] units of [R.name]"
|
||||
else
|
||||
. += "Nothing."
|
||||
|
||||
/obj/item/borg/apparatus/beaker/update_icon()
|
||||
cut_overlays()
|
||||
if(stored)
|
||||
COMPILE_OVERLAYS(stored)
|
||||
stored.pixel_x = 0
|
||||
stored.pixel_y = 0
|
||||
var/image/img = image("icon"=stored, "layer"=FLOAT_LAYER)
|
||||
var/image/arm = image("icon"="borg_beaker_apparatus_arm", "layer"=FLOAT_LAYER)
|
||||
if(istype(stored, /obj/item/reagent_containers/glass/beaker))
|
||||
arm.pixel_y = arm.pixel_y - 3
|
||||
img.plane = FLOAT_PLANE
|
||||
add_overlay(img)
|
||||
add_overlay(arm)
|
||||
else
|
||||
var/image/arm = image("icon"="borg_beaker_apparatus_arm", "layer"=FLOAT_LAYER)
|
||||
arm.pixel_y = arm.pixel_y - 5
|
||||
add_overlay(arm)
|
||||
|
||||
/obj/item/borg/apparatus/beaker/attack_self(mob/living/silicon/robot/user)
|
||||
if(stored && !user.client?.keys_held["Alt"] && user.a_intent != "help")
|
||||
var/obj/item/reagent_containers/C = stored
|
||||
C.SplashReagents(get_turf(user))
|
||||
loc.visible_message("<span class='notice'>[user] spills the contents of the [C] all over the floor.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/borg/apparatus/beaker/extra
|
||||
name = "secondary beaker storage apparatus"
|
||||
desc = "A supplementary beaker storage apparatus."
|
||||
|
||||
/obj/item/borg/apparatus/beaker/service
|
||||
name = "beverage storage apparatus"
|
||||
desc = "A special apparatus for carrying drinks without spilling the contents. Alt-Z or right-click to drop the beaker."
|
||||
icon_state = "borg_beaker_apparatus"
|
||||
storable = list(/obj/item/reagent_containers/food/drinks/,
|
||||
/obj/item/reagent_containers/food/condiment)
|
||||
|
||||
/obj/item/borg/apparatus/beaker/service/Initialize()
|
||||
. = ..()
|
||||
stored = new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
|
||||
RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_iconb)
|
||||
update_icon()
|
||||
|
||||
////////////////////
|
||||
//engi part holder//
|
||||
////////////////////
|
||||
|
||||
/obj/item/borg/apparatus/circuit
|
||||
name = "circuit manipulation apparatus"
|
||||
desc = "A special apparatus for carrying and manipulating circuit boards. Alt-Z or right-click to drop the stored object."
|
||||
icon_state = "borg_hardware_apparatus"
|
||||
storable = list(/obj/item/circuitboard,
|
||||
/obj/item/electronics)
|
||||
|
||||
/obj/item/borg/apparatus/circuit/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/borg/apparatus/circuit/update_icon()
|
||||
cut_overlays()
|
||||
if(stored)
|
||||
COMPILE_OVERLAYS(stored)
|
||||
stored.pixel_x = -3
|
||||
stored.pixel_y = 0
|
||||
var/image/arm
|
||||
if(istype(stored, /obj/item/circuitboard))
|
||||
arm = image("icon"="borg_hardware_apparatus_arm1", "layer"=FLOAT_LAYER)
|
||||
else
|
||||
arm = image("icon"="borg_hardware_apparatus_arm2", "layer"=FLOAT_LAYER)
|
||||
var/image/img = image("icon"=stored, "layer"=FLOAT_LAYER)
|
||||
img.plane = FLOAT_PLANE
|
||||
add_overlay(arm)
|
||||
add_overlay(img)
|
||||
else
|
||||
var/image/arm = image("icon"="borg_hardware_apparatus_arm1", "layer"=FLOAT_LAYER)
|
||||
add_overlay(arm)
|
||||
|
||||
/obj/item/borg/apparatus/circuit/examine()
|
||||
. = ..()
|
||||
if(stored)
|
||||
. += "The apparatus currently has [stored] secured."
|
||||
|
||||
/obj/item/borg/apparatus/circuit/pre_attack(atom/A, mob/living/user, params)
|
||||
. = ..()
|
||||
if(istype(A, /obj/item/aiModule) && !stored) //If an admin wants a borg to upload laws, who am I to stop them? Otherwise, we can hint that it fails
|
||||
to_chat(user, "<span class='warning'>This circuit board doesn't seem to have standard robot apparatus pin holes. You're unable to pick it up.</span>")
|
||||
@@ -514,7 +514,7 @@
|
||||
/obj/item/robot_module/medical,
|
||||
/obj/item/robot_module/syndicate_medical,
|
||||
/obj/item/robot_module/medihound,
|
||||
/obj/item/robot_module/borgi)
|
||||
/obj/item/robot_module/borgi)
|
||||
|
||||
/obj/item/borg/upgrade/advhealth/action(mob/living/silicon/robot/R, user = usr)
|
||||
. = ..()
|
||||
@@ -620,6 +620,32 @@
|
||||
if (RPED)
|
||||
R.module.remove_module(RPED, TRUE)
|
||||
|
||||
/obj/item/borg/upgrade/circuit_app
|
||||
name = "circuit manipulation apparatus"
|
||||
desc = "An engineering cyborg upgrade allowing for manipulation of circuit boards."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
require_module = TRUE
|
||||
module_type = list(/obj/item/robot_module/engineering)
|
||||
|
||||
/obj/item/borg/upgrade/circuit_app/action(mob/living/silicon/robot/R, user = usr)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/obj/item/borg/apparatus/circuit/C = locate() in R.module.modules
|
||||
if(C)
|
||||
to_chat(user, "<span class='warning'>This unit is already equipped with a circuit apparatus!</span>")
|
||||
return FALSE
|
||||
|
||||
C = new(R.module)
|
||||
R.module.basic_modules += C
|
||||
R.module.add_module(C, FALSE, TRUE)
|
||||
|
||||
/obj/item/borg/upgrade/circuit_app/deactivate(mob/living/silicon/robot/R, user = usr)
|
||||
. = ..()
|
||||
if (.)
|
||||
var/obj/item/borg/apparatus/circuit/C = locate() in R.module.modules
|
||||
if (C)
|
||||
R.module.remove_module(C, TRUE)
|
||||
|
||||
/obj/item/borg/upgrade/pinpointer
|
||||
name = "medical cyborg crew pinpointer"
|
||||
desc = "A crew pinpointer module for the medical cyborg."
|
||||
|
||||
@@ -250,10 +250,12 @@
|
||||
/obj/item/stack/rods/cyborg,
|
||||
/obj/item/stack/tile/plasteel/cyborg,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/borg/apparatus/beaker/service,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/t_scanner/adv_mining_scanner,
|
||||
/obj/item/restraints/handcuffs/cable/zipties,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/borg/cyborghug)
|
||||
emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg)
|
||||
ratvar_modules = list(
|
||||
@@ -269,6 +271,7 @@
|
||||
/obj/item/assembly/flash/cyborg,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/reagent_containers/borghypo,
|
||||
/obj/item/borg/apparatus/beaker,
|
||||
/obj/item/reagent_containers/glass/beaker/large,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
@@ -280,6 +283,9 @@
|
||||
/obj/item/scalpel,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/roller/robo,
|
||||
/obj/item/borg/cyborghug/medical,
|
||||
/obj/item/stack/medical/gauze/cyborg,
|
||||
@@ -311,8 +317,11 @@
|
||||
/obj/item/multitool/cyborg,
|
||||
/obj/item/t_scanner,
|
||||
/obj/item/analyzer,
|
||||
/obj/item/borg/cyborghug,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/geiger_counter/cyborg,
|
||||
/obj/item/assembly/signaler/cyborg,
|
||||
/obj/item/holosign_creator/atmos,
|
||||
/obj/item/areaeditor/blueprints/cyborg,
|
||||
/obj/item/electroadaptive_pseudocircuit,
|
||||
/obj/item/stack/sheet/metal/cyborg,
|
||||
@@ -335,9 +344,15 @@
|
||||
basic_modules = list(
|
||||
/obj/item/assembly/flash/cyborg,
|
||||
/obj/item/restraints/handcuffs/cable/zipties,
|
||||
/obj/item/holosign_creator/security,
|
||||
/obj/item/melee/baton/loaded,
|
||||
/obj/item/gun/energy/disabler/cyborg,
|
||||
/obj/item/reagent_containers/spray/pepper,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/clothing/mask/gas/sechailer/cyborg,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/borg/cyborghug,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/pinpointer/crew)
|
||||
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
|
||||
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
|
||||
@@ -361,7 +376,9 @@
|
||||
/obj/item/reagent_containers/borghypo/peace,
|
||||
/obj/item/holosign_creator/cyborg,
|
||||
/obj/item/borg/cyborghug/peacekeeper,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/borg/projectile_dampen)
|
||||
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
|
||||
ratvar_modules = list(
|
||||
@@ -385,7 +402,9 @@
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/stack/tile/plasteel/cyborg,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/storage/bag/trash/cyborg,
|
||||
/obj/item/borg/cyborghug,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/mop/cyborg,
|
||||
/obj/item/lightreplacer/cyborg,
|
||||
@@ -434,7 +453,8 @@
|
||||
/obj/item/bikehorn,
|
||||
/obj/item/bikehorn/airhorn,
|
||||
/obj/item/paint/anycolor,
|
||||
/obj/item/soap/nanotrasen,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/cookiesynth,
|
||||
/obj/item/pneumatic_cannon/pie/selfcharge/cyborg,
|
||||
/obj/item/razor, //killbait material
|
||||
/obj/item/lipstick/purple,
|
||||
@@ -442,7 +462,10 @@
|
||||
/obj/item/borg/cyborghug/peacekeeper,
|
||||
/obj/item/borg/lollipop/clown,
|
||||
/obj/item/picket_sign/cyborg,
|
||||
/obj/item/reagent_containers/borghypo/borgshaker,
|
||||
/obj/item/reagent_containers/borghypo/clown,
|
||||
/obj/item/borg/apparatus/beaker/service,
|
||||
/obj/item/reagent_containers/glass/beaker/large,
|
||||
/obj/item/extinguisher/mini)
|
||||
emag_modules = list(
|
||||
/obj/item/reagent_containers/borghypo/clown/hacked,
|
||||
@@ -459,16 +482,20 @@
|
||||
name = "Service"
|
||||
basic_modules = list(
|
||||
/obj/item/assembly/flash/cyborg,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/glass/beaker/large,
|
||||
/obj/item/borg/apparatus/beaker/service,
|
||||
/obj/item/reagent_containers/food/condiment/enzyme,
|
||||
/obj/item/pen,
|
||||
/obj/item/toy/crayon/spraycan/borg,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/hand_labeler/borg,
|
||||
/obj/item/razor,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/instrument/violin,
|
||||
/obj/item/instrument/guitar,
|
||||
/obj/item/rsf/cyborg,
|
||||
/obj/item/borg/cyborghug,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/lighter,
|
||||
/obj/item/storage/bag/tray,
|
||||
@@ -496,7 +523,9 @@
|
||||
/obj/item/pickaxe/drill/cyborg,
|
||||
/obj/item/shovel,
|
||||
/obj/item/crowbar/cyborg,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/weldingtool/mini,
|
||||
/obj/item/borg/cyborghug,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/storage/bag/sheetsnatcher/borg,
|
||||
/obj/item/t_scanner/adv_mining_scanner,
|
||||
|
||||
@@ -704,7 +704,7 @@
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000, MAT_GOLD=10000, MAT_TITANIUM=5000, MAT_DIAMOND=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
|
||||
/datum/design/borg_upgrade_surgicalprocessor
|
||||
name = "Cyborg Upgrade (Surgical Processor)"
|
||||
id = "borg_upgrade_surgicalprocessor"
|
||||
@@ -759,6 +759,15 @@
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_circuit_app
|
||||
name = "Cyborg Upgrade (Circuit Manipulator)"
|
||||
id = "borg_upgrade_circuitapp"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/circuit_app
|
||||
materials = list(MAT_METAL=2000, MAT_TITANIUM=500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_pinpointer
|
||||
name = "Cyborg Upgrade (Crew pinpointer)"
|
||||
id = "borg_upgrade_pinpointer"
|
||||
|
||||
Reference in New Issue
Block a user