diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm index f791fe74a0f..dd4cdc1f17f 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon.dmm @@ -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" = ( diff --git a/code/__DEFINES/exosuit_fab.dm b/code/__DEFINES/exosuit_fab.dm index 54d72dcae7e..0f36232fc8e 100644 --- a/code/__DEFINES/exosuit_fab.dm +++ b/code/__DEFINES/exosuit_fab.dm @@ -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 diff --git a/code/__DEFINES/~~bubber_defines/research/research_categories.dm b/code/__DEFINES/~~bubber_defines/research/research_categories.dm index 32d6fb02ffa..a4f2c8727f2 100644 --- a/code/__DEFINES/~~bubber_defines/research/research_categories.dm +++ b/code/__DEFINES/~~bubber_defines/research/research_categories.dm @@ -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" diff --git a/code/__DEFINES/~~bubber_defines/robot_defines.dm b/code/__DEFINES/~~bubber_defines/robot_defines.dm index 8a086f942e9..8d059095ae7 100644 --- a/code/__DEFINES/~~bubber_defines/robot_defines.dm +++ b/code/__DEFINES/~~bubber_defines/robot_defines.dm @@ -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 diff --git a/modular_skyrat/modules/borgs/icons/robot_items.dmi b/modular_skyrat/modules/borgs/icons/robot_items.dmi index 31c6eff46c5..1fbaced71b9 100644 Binary files a/modular_skyrat/modules/borgs/icons/robot_items.dmi and b/modular_skyrat/modules/borgs/icons/robot_items.dmi differ diff --git a/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm b/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm index f808f17e7be..907a8514096 100644 --- a/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm +++ b/modular_skyrat/modules/tarkon/code/misc-fluff/research.dm @@ -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 - - - diff --git a/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm b/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm index 0db2f37a129..9be766710c0 100644 --- a/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm +++ b/modular_zubbers/code/modules/silicons/borgs/code/robot_upgrade.dm @@ -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) diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi index 358300a6e3f..b82ff016ed3 100644 Binary files a/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi and b/modular_zubbers/code/modules/silicons/borgs/sprites/felibot_all.dmi differ diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi new file mode 100644 index 00000000000..99012e786be Binary files /dev/null and b/modular_zubbers/code/modules/silicons/borgs/sprites/tallrobot_tarkon.dmi differ diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi new file mode 100644 index 00000000000..23da8622e07 Binary files /dev/null and b/modular_zubbers/code/modules/silicons/borgs/sprites/widerobot_tarkon.dmi differ diff --git a/modular_zubbers/code/modules/tarkon/code/borg_content.dm b/modular_zubbers/code/modules/tarkon/code/borg_content.dm new file mode 100644 index 00000000000..9609d32849d --- /dev/null +++ b/modular_zubbers/code/modules/tarkon/code/borg_content.dm @@ -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 + ) diff --git a/tgstation.dme b/tgstation.dme index 7442c083215..3a506f77817 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -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"