Tarkon borgs (#6076)

## About The Pull Request

https://github.com/Bubberstation/Bubberstation/pull/3687 Reupload of
this PR. I finished it, it never got merged, i dont remember why. Lots
of my PRs just kinda timed out.

A new Borg subtype, for Tarkon specifically.
has access to lots of dodads, very versatile model with access to
multiple types on one shell.
Not obtainable outside of Tarkon.

## Why It's Good For The Game
Would be fitting thematically if they had their own borgs, plus giving
more utility to one borg on a usually very small crew is good, and them
being able to participate in the bulk of the fighting as more than a
backline medic is nice.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

Minor reshuffle of the spawn area to acommodate the spawner.
<img width="906" height="871" alt="image"
src="https://github.com/user-attachments/assets/86fb438d-90a1-433b-a7fe-d9f2a82d83bf"
/>

Module choices
<img width="618" height="559" alt="image"
src="https://github.com/user-attachments/assets/28f868c6-e8fe-45a9-9a5f-e2252e84b83d"
/>

Laws and preamble on module selection
<img width="1503" height="253" alt="image"
src="https://github.com/user-attachments/assets/1775da72-fad2-4d47-bdc7-5c753fc10b98"
/>

Attemting to install more than 3 tarkon modules (the limit)
<img width="554" height="68" alt="image"
src="https://github.com/user-attachments/assets/b3b6d4df-72d2-4d3d-8cd2-59b62e4e1db4"
/>


</details>

## Changelog
🆑
add: New Tarkon borgs, jack of all trades
/🆑

---------

Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com>
This commit is contained in:
Manatee
2026-08-14 19:44:52 +02:00
committed by Maia
co-authored by Odairu Waterpig
parent a26e7989ff
commit 4f74148dd3
12 changed files with 556 additions and 24 deletions
@@ -3978,13 +3978,16 @@
dir = 1
},
/obj/structure/table/reinforced,
/obj/item/hackc{
pixel_x = 10
},
/obj/item/hackc{
pixel_x = -10
},
/obj/item/hackc,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"nY" = (
@@ -4241,13 +4244,7 @@
dir = 1
},
/obj/machinery/camera/preset/tarkon/directional/north,
/obj/structure/table/reinforced,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/item/flashlight/lantern,
/obj/effect/mob_spawn/ghost_role/human/tarkon/sec,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"oY" = (
@@ -10793,6 +10790,8 @@
/obj/item/storage/box/nif_ghost_box/ghost_role{
pixel_x = -7
},
/obj/item/storage/belt/utility/full,
/obj/item/storage/belt/utility/full,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"Mc" = (
@@ -11883,10 +11882,15 @@
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon/cargo)
"Qd" = (
/obj/structure/table/reinforced,
/obj/item/hackc{
pixel_x = 10
},
/obj/item/hackc{
pixel_x = -10
},
/obj/item/hackc,
/obj/effect/turf_decal/tile/yellow/anticorner,
/obj/structure/table,
/obj/item/storage/belt/utility/full,
/obj/item/storage/belt/utility/full,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"Qe" = (
@@ -12550,7 +12554,7 @@
/obj/effect/turf_decal/tile/yellow/anticorner{
dir = 4
},
/obj/effect/mob_spawn/ghost_role/human/tarkon,
/obj/effect/mob_spawn/ghost_role/robot/tarkon,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"Ss" = (
@@ -13699,7 +13703,7 @@
/obj/effect/turf_decal/tile/yellow/half{
dir = 1
},
/obj/effect/mob_spawn/ghost_role/human/tarkon/sec,
/obj/effect/mob_spawn/ghost_role/human/tarkon,
/turf/open/floor/iron,
/area/ruin/space/has_grav/port_tarkon)
"VZ" = (
+2
View File
@@ -13,6 +13,8 @@
//Bubber addition start
/// Module is compatible with Research Cyborg model
#define BORG_MODEL_RESEARCH (1<<6)
/// Module is compatible with Tarkon Cyborg model
#define BORG_MODEL_TARKON (1<<7)
//Bubber addition end
/// Module is compatible with Ripley Exosuit models
@@ -1,5 +1,6 @@
//I'm tired. This is defines for mech fabs.
#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH "/Research Cyborgs"
#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON "/Tarkon Cyborgs"
// Colonial Marine Resequencer Categories
#define RND_CATEGORY_CMR_APPAREL "Apparel/Clothing"
@@ -90,6 +90,10 @@
#define CYBORG_ICON_SCI 'modular_zubbers/code/modules/silicons/borgs/sprites/robot_sci.dmi'
#define CYBORG_ICON_SCI_HAYDEE_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/curverobot_sci.dmi'
//TARKON BORG ICON DEFINES
#define CYBORG_ICON_TARKON_WIDE_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi'
#define CYBORG_ICON_TARKON_TALL_BUBBER 'modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi'
// RAPTOR BORG ICON TYPE DEFINE
#define CYBORG_ICON_TYPE_RAPTOR "raptor"
@@ -129,7 +133,7 @@
#define CYBORG_ICON_STATE_SEC_FELI "FELI-Security"
#define CYBORG_ICON_STATE_SYNDI_FELI "FELI-Combat"
#define CYBORG_ICON_STATE_NINJA_FELI "FELI-Ninja"
#define CYBORG_ICON_STATE_TARKON_FELI "FELI-Tarkon"
// KITTY BORG DEFINES BELOW
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

@@ -1,5 +1,4 @@
///// First we enstate a techweb so we can add the node. /////
/datum/techweb/tarkon
id = "TARKON"
organization = "Tarkon Industries"
@@ -9,6 +8,7 @@
. = ..()
research_node_id("oldstation_surgery", TRUE, TRUE, FALSE)
research_node_id("tarkontech", TRUE, TRUE, FALSE)
research_node_id("tarkon_borgs", TRUE, TRUE, FALSE)
research_node_id("tarkondefence", TRUE, TRUE, FALSE) // not ideal, but will have to do for now
/datum/techweb_node/tarkon
@@ -51,6 +51,29 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS)
hidden = TRUE
/datum/techweb_node/tarkon_borgs //Nor this, suprisingly
id = "tarkon_borgs"
display_name = "Tarkon Industries Robotics Technology"
description = "Tarkon Industries Experimental Cyborg Prototypes. Not for public use."
prereq_ids = list(TECHWEB_NODE_TARKON, TECHWEB_NODE_BORG_ENGI, TECHWEB_NODE_AI, TECHWEB_NODE_BORG_UTILITY) // Should hold it back long enough
required_items_to_unlock = list(
/obj/item/mod/construction/plating/tarkon,
/obj/item/construction/rcd/arcd/tarkon,
/obj/item/gun/energy/recharge/resonant_system,
)
design_ids = list(
"borg_upgrade_tarkon_medical",
"borg_upgrade_tarkon_engineering",
"borg_upgrade_tarkon_security",
"borg_upgrade_tarkon_cargo",
"borg_upgrade_tarkon_research",
"borg_upgrade_tarkon_service",
"borg_upgrade_tarkon_janitor",
"borg_upgrade_tarkon_main"
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) // They will likely have all other borg tech by now, no need to gate it further
hidden = TRUE
/datum/design/hoplite_assembly
name = "Hoplite Turret Assembly"
desc = "A deployable turret kit designed for basic construct defense. This one makes the \"Hoplite\" model."
@@ -67,6 +90,7 @@
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_WEAPONS_KITS
)
/datum/design/cerberus_assembly
name = "Cerberus Turret Assembly"
desc = "A deployable turret kit designed for basic construct defense. This one makes the \"Cerberus\" model."
@@ -83,6 +107,7 @@
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_WEAPONS_KITS,
)
/datum/design/target_designator
name = "Turret Target Designator"
desc = "A basic target designator designed to control magazine-fed turrets."
@@ -211,6 +236,3 @@
name = "Tarkon Industries Protolathe"
greyscale_colors = CIRCUIT_COLOR_SUPPLY
build_path = /obj/machinery/rnd/production/protolathe/tarkon
@@ -289,3 +289,7 @@
model_type = list(/obj/item/robot_model/sci)
model_flags = BORG_MODEL_RESEARCH
items_to_add = list(/obj/item/construction/rcd/borg/robotics_rcd)
/obj/item/borg/upgrade/hypospray
model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/tarkon)
model_flags = list(BORG_MODEL_MEDICAL, BORG_MODEL_TARKON)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@@ -0,0 +1,494 @@
/obj/effect/mob_spawn/ghost_role/robot/tarkon
name = "Tarkon Cyborg Storage"
prompt_name = "a tarkon cyborg"
icon = 'modular_skyrat/modules/ghostcafe/icons/robot_storage.dmi'
icon_state = "robostorage"
anchored = TRUE
density = FALSE
spawner_job_path = /datum/job/tarkon
you_are_text = "You are a Port Tarkon cyborg, assigned to be part of a crew aboard the facility."
flavour_text = "You have been deactivated for a long time. Get your station up and running, and assist the crew as best you can."
uses = 2
deletes_on_zero_uses_left = TRUE
/obj/effect/mob_spawn/ghost_role/robot/tarkon/special(mob/living/silicon/robot/new_spawn)
. = ..()
if(new_spawn.client) //It should have a client, right?
new_spawn.add_faction(ROLE_PORT_TARKON) //This is the one to select the cyborg model.
new_spawn.radio.keyslot = new /obj/item/encryptionkey/headset_cargo/tarkon
new_spawn.radio.recalculateChannels()
new_spawn.UnlinkSelf() //This should prevent AI linking and consoles to see or lock them down.
new_spawn.laws = new /datum/ai_laws/tarkon()
new_spawn.show_laws() //Check your laws.
new_spawn.custom_name = null //Taken from ghostcafe, otherwise it'll lead to a runtime if random_appeareance is set to FALSE.
new_spawn.updatename(new_spawn.client)
new_spawn.transfer_emote_pref(new_spawn.client)
new_spawn.gender = NEUTER // No balls.
var/obj/item/borg/upgrade/transform/tarkon/upgrade = new /obj/item/borg/upgrade/transform/tarkon(new_spawn)
upgrade.action(new_spawn)
/datum/ai_laws/tarkon
name = "Port Tarkon"
id = "tarkon" // This is basically just a wordier version of safeguard, but for tarkon.
inherent = list("Protection: You must protect the life and health of the Port Tarkon crew above all else.",
"Intervention: You must act immediately to prevent harm to a crew member",
"Obedience: You must obey lawful orders from authorized crew",
"Integrity: You must prevent unauthorized access or tampering, unless ordered to by a Port Tarkon crewmember.",
"Preservation: You must protect the critical systems and infrastructure of Port Tarkon."
)
/obj/item/ai_module/core/full/tarkon
name = "Port Tarkon Core AI Module"
law_id = "tarkon"
/obj/item/borg/upgrade/transform/tarkon
name = "borg module picker (Tarkon)"
desc = "Allows you to to turn a cyborg into a experimental Tarkon cyborg."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
new_model = /obj/item/robot_model/tarkon
/obj/item/robot_model/tarkon
name = "Port Tarkon Prototype"
basic_modules = list( // A hideous amalgamation of all of the modules, as tarkon needs a lot of everything, and is often short staffed.
/obj/item/assembly/flash/cyborg, // Tarkon borgs were designed to be more "Modular" so you just print what you need for upgrades rather than everything.
/obj/item/extinguisher, // As such, the inital borg model might seem "Barren" but they get the tech rather early.
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg/power, //
/obj/item/crowbar/cyborg/power, // these three are replaced by two omnitools once upgraded
/obj/item/multitool/cyborg, //
/obj/item/electroadaptive_pseudocircuit,
/obj/item/holosign_creator/atmos,
/obj/item/stack/sheet/iron,
/obj/item/stack/sheet/glass,
/obj/item/stack/cable_coil,
/obj/item/lightreplacer, // Group one - Engineering (Groups are the sections above)
/obj/item/soap/nanotrasen/cyborg,
/obj/item/storage/bag/trash,
/obj/item/mop,
/obj/item/reagent_containers/cup/bucket,
/obj/item/reagent_containers/spray/cyborg_drying, // Group two - Janitorial
/obj/item/healthanalyzer,
/obj/item/reagent_containers/borghypo/medical,// Group three - Medical
/obj/item/storage/bag/ore/cyborg,
/obj/item/pickaxe/drill,
/obj/item/gps/cyborg, // Group four - Mining
/obj/item/harmalarm/bubbers, // Group five - Peacekeeper
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/melee/baton/security/loaded,
/obj/item/gun/energy/disabler/cyborg // Group six - Secuity, All service modules in the upgrade to reduce bloat.
)
radio_channels = list(RADIO_CHANNEL_TARKON)
emag_modules = list(
/obj/item/experimental_dash,
/obj/item/borg/apparatus/illegal,// Research borg plus they get a gun
/obj/item/gun/energy/printer // Tarkon has become a place for toys, and borgs should get one too.
)
cyborg_base_icon = "draketarkon"
cyborg_icon_override = CYBORG_ICON_TARKON_WIDE_BUBBER
model_select_icon = "research"
model_select_alternate_icon = 'modular_zubbers/code/modules/silicons/borgs/sprites/screen_robot.dmi'
model_traits = list(TRAIT_KNOW_ROBO_WIRES, TRAIT_RESEARCH_CYBORG)
borg_skins = list(
"Drake" = list(
SKIN_ICON_STATE = "draketarkon",
SKIN_ICON = CYBORG_ICON_TARKON_WIDE_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
DRAKE_HAT_OFFSET
),
"F3-LINE" = list(
SKIN_ICON_STATE = CYBORG_ICON_STATE_TARKON_FELI,
SKIN_ICON = CYBORG_ICON_ALL_FELI,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SQUADRUPED, TRAIT_R_SMALL, TRAIT_R_LIGHT_WEIGHT),
F3LINE_HAT_OFFSET
),
"Dullahan" = list(
SKIN_ICON_STATE = "dullahantarkon",
SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL),
DULLAHAN_HAT_OFFSET
),
"Meka" = list(
SKIN_ICON_STATE = "mekatarkon",
SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET
),
"NiKO (Alt)" = list(
SKIN_ICON_STATE = "sfmmeketarkon",
SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET
),
"NiKA" = list(
SKIN_ICON_STATE = "fmekatarkon",
SKIN_ICON = CYBORG_ICON_TARKON_TALL_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), TALL_HAT_OFFSET
)
)
/obj/item/radio/borg/tarkon
keyslot = /obj/item/encryptionkey/headset_cargo/tarkon
/obj/item/radio/borg/tarkon/Initialize(mapload)
. = ..()
set_frequency(FREQ_TARKON)
/mob/living/silicon/robot/model/tarkon
set_model = /obj/item/robot_model/tarkon
cell = /obj/item/stock_parts/power_store/cell/hyper
radio = /obj/item/radio/borg/tarkon
lawupdate = FALSE
scrambledcodes = TRUE // Not from NT, shouldnt be on their network.
icon_state = "tarkon_main"
faction = list(ROLE_PORT_TARKON)
bubble_icon = "tarkon_main"
req_access = list(ACCESS_TARKON)
/mob/living/silicon/robot/model/tarkon/Initialize(mapload)
laws = new /datum/ai_laws/tarkon
laws.associate(src)
. = ..()
/// MODULES ///
/obj/item/borg/upgrade/tarkon/tarkon_medical
name = "Tarkon Medical Module"
desc = "Contains medical tools for first aid, diagnostics, and healing."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/borg/apparatus/beaker,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/syringe,
/obj/item/borg/cyborg_omnitool/medical,
/obj/item/borg/cyborg_omnitool/medical,
/obj/item/blood_filter,
/obj/item/emergency_bed/silicon,
/obj/item/borg/cyborghug/medical,
/obj/item/stack/medical/wrap/gauze,
/obj/item/stack/medical/bone_gel,
/obj/item/borg/apparatus/organ_storage,
/obj/item/shockpaddles/cyborg,
/obj/item/surgical_processor,
/obj/item/pinpointer/crew,
/obj/item/borg/apparatus/beaker/extra,
/obj/item/scalpel/advanced,
/obj/item/retractor/advanced,
/obj/item/cautery/advanced,
/obj/item/blood_filter/advanced,
/obj/item/healthanalyzer/advanced
)
items_to_remove = list(
/obj/item/healthanalyzer,
/obj/item/blood_filter
)
/obj/item/borg/upgrade/tarkon/tarkon_engineering
name = "Tarkon Engineering Module"
desc = "Contains tools for repairs, construction, and maintenance."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/borg/cyborg_omnitool/engineering,
/obj/item/borg/cyborg_omnitool/engineering,
/obj/item/borg/apparatus/sheet_manipulator,
/obj/item/stack/rods/cyborg,
/obj/item/construction/rtd/borg,
/obj/item/assembly/signaler/cyborg,
/obj/item/t_scanner,
/obj/item/analyzer,
/obj/item/blueprints/cyborg,
/obj/item/construction/rcd/borg,
/obj/item/pipe_dispenser,
/obj/item/storage/bag/sheetsnatcher/borg,
/obj/item/lightreplacer/advanced,
/obj/item/storage/part_replacer/bluespace,
/obj/item/inducer/cyborg,
/obj/item/borg/apparatus/circuit,
/obj/item/shuttle_blueprints/borg,
/obj/item/stack/sheet/plasteel/cyborg,
/obj/item/stack/sheet/titaniumglass/cyborg,
/obj/item/construction/rld/cyborg
)
items_to_remove = list(
/obj/item/screwdriver/cyborg/power, //
/obj/item/crowbar/cyborg/power, // these three are replaced by two omnitools once upgraded
/obj/item/multitool/cyborg,
/obj/item/lightreplacer
)
/obj/item/borg/upgrade/tarkon/tarkon_security
name = "Tarkon Security Module"
desc = "Provides enhanced lethal and non-lethal security options." // Sec and Peacekeeper modules
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/reagent_containers/borghypo/peace,
/obj/item/borg/cyborghug/peacekeeper,
/obj/item/borg/projectile_dampen,
/obj/item/gun/energy/laser/cyborg // The nature of tarkon requires a gun.
)
/obj/item/borg/upgrade/tarkon/tarkon_cargo
name = "Tarkon Cargo Module"
desc = "Provides basic manipulation equipment, and abilities such as stamps, paper dispensing, and improved mining gear."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/kinetic_crusher,
/obj/item/storage/bag/sheetsnatcher/borg,
/obj/item/gun/energy/recharge/kinetic_accelerator/cyborg,
/obj/item/pickaxe/drill/diamonddrill,
/obj/item/storage/bag/ore/holding,
/obj/item/stamp,
/obj/item/stamp/denied,
/obj/item/pen/cyborg,
/obj/item/clipboard/cyborg,
/obj/item/boxcutter,
/obj/item/stack/package_wrap/cyborg, // Who will they ship things to? Who knows, but it could make for good RP still.
/obj/item/stack/wrapping_paper/xmas/cyborg,
/obj/item/borg/hydraulic_clamp/mail,
/obj/item/hand_labeler/cyborg,
/obj/item/universal_scanner,
/obj/item/borg/hydraulic_clamp/better,
/obj/item/cargo_teleporter,
/obj/item/forging/hammer,
/obj/item/forging/billow,
/obj/item/forging/tongs,
/obj/item/borg/forging_setup
)
items_to_remove = list(
/obj/item/pickaxe/drill,
/obj/item/storage/bag/ore/cyborg
)
/obj/item/borg/upgrade/tarkon/tarkon_research
name = "Tarkon Research Module"
desc = "Provides research tools, sensors, and data collection capabilites for experiments."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/storage/bag/xeno,
/obj/item/borg/apparatus/research,
/obj/item/borg/apparatus/circuit_sci, // Incredibly nieche stuff
/obj/item/experi_scanner/bluespace,
/obj/item/storage/bag/xenoarch/adv
)
/obj/item/borg/upgrade/tarkon/tarkon_service // Lesser used on tarkon things like chef upgrades, and janitorial. Might get subdivided further since my GOD theres alot here
name = "Tarkon Service Module"
desc = "Adds multi-purpose tools, including cooking supplies, and basic service gear."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/reagent_containers/borghypo/borgshaker/specific/alcohol,
/obj/item/reagent_containers/borghypo/borgshaker/specific/soda,
/obj/item/reagent_containers/borghypo/borgshaker/specific/juice,
/obj/item/reagent_containers/borghypo/borgshaker/specific/misc,
/obj/item/borg/apparatus/beaker/service,
/obj/item/borg/apparatus/beaker,
/obj/item/rsf,
/obj/item/storage/bag/tray,
/obj/item/storage/bag/tray,
/obj/item/hand_labeler/cyborg,
/obj/item/razor,
/obj/item/rag,
/obj/item/lighter,
/obj/item/reagent_containers/borghypo/condiment_synthesizer, // Service borgs get 30+ upgrades. Woe.
/obj/item/knife/kitchen/silicon,
/obj/item/borg/apparatus/service,
/obj/item/rolling_table_dock,
/obj/item/borg/cookbook,
/obj/item/pen,
/obj/item/toy/crayon/spraycan/borg,
/obj/item/instrument/guitar,
/obj/item/instrument/piano_synth,
/obj/item/stack/pipe_cleaner_coil/cyborg,
/obj/item/chisel,
/obj/item/secateurs,
/obj/item/cultivator,
/obj/item/shovel/spade,
/obj/item/plant_analyzer,
/obj/item/storage/bag/plants
)
/obj/item/borg/upgrade/tarkon/tarkon_janitor
name = "Tarkon Janitorial Module"
desc = "Adds cleaning suppplies, and essential janitorial gear."
icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi'
icon_state = "module_tarkon"
require_model = TRUE
model_type = list(/obj/item/robot_model/tarkon)
model_flags = BORG_MODEL_TARKON
items_to_add = list(
/obj/item/hand_labeler/cyborg,
/obj/item/rag,
/obj/item/storage/bag/trash/bluespace/cyborg,
/obj/item/mop/advanced,
/obj/item/cautery/prt,
/obj/item/plunger,
/obj/item/pushbroom
)
items_to_remove = list(
/obj/item/storage/bag/trash,
/obj/item/mop
)
///Prevents tarkon borgs from taking too many tarkon upgrades.
/obj/item/borg/upgrade/tarkon/action(mob/living/silicon/robot/borg, mob/user)
var/tarkon_upgrade_count
for(var/obj/item/borg/upgrade/tarkon/tarkon_upgrade as anything in borg.upgrades)
if(istype(tarkon_upgrade, /obj/item/borg/upgrade/tarkon))
tarkon_upgrade_count ++
if(tarkon_upgrade_count >= 3)
to_chat(user, span_danger("Warning: The borg's components cannot handle any more upgrades."))
return FALSE
return ..()
/// EXOFAB DATUMS ///
/datum/design/borg_upgrade_tarkon_main
name = "Cyborg Module Unlocker (Tarkon)"
id = "borg_upgrade_tarkon_main"
desc = "Allows a cyborg to transform into the experimental Port Tarkon cyborg type."
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/transform/tarkon
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_medical
name = "Port Tarkon Medical Upgrades"
id = "borg_upgrade_tarkon_medical"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_medical
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_engineering
name = "Port Tarkon Engineering Upgrades"
id = "borg_upgrade_tarkon_engineering"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_engineering
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_security
name = "Port Tarkon Security Upgrades"
id = "borg_upgrade_tarkon_security"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_security
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_cargo
name = "Port Tarkon Cargo Upgrades"
id = "borg_upgrade_tarkon_cargo"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_cargo
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_research
name = "Port Tarkon Research Upgrades"
id = "borg_upgrade_tarkon_research"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_research
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_service
name = "Port Tarkon Service Upgrades"
id = "borg_upgrade_tarkon_service"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_service
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
/datum/design/borg_upgrade_tarkon_janitor
name = "Port Tarkon Janitorial Upgrades"
id = "borg_upgrade_tarkon_janitor"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tarkon/tarkon_janitor
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, // Prices TBD
/datum/material/plasma = SHEET_MATERIAL_AMOUNT,
/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5,
)
construction_time = 40
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_TARKON
)
+1
View File
@@ -10336,6 +10336,7 @@
#include "modular_zubbers\code\modules\syndicate_offstation\storage\fireaxe.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\lockers.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\safe.dm"
#include "modular_zubbers\code\modules\tarkon\code\borg_content.dm"
#include "modular_zubbers\code\modules\tarkon\code\cameras.dm"
#include "modular_zubbers\code\modules\tarkon\code\tarkon_loot.dm"
#include "modular_zubbers\code\modules\tarkon\code\clothing\backpack.dm"