Adds Research cyborgs [Modularish] (oh no) (#1407)

## About The Pull Request

This PR added a new module for cyborgs it also ~~replaces the
malfunctioning AI cyborg factory~~ with the ability when hacked to
manufacture cyborgs manually (Cyborg building CO-OP) Malfunctioning AI
cyborg factory was added back.

The PR also adds a research cyborg exclusive jaunting module, much like
the ninja energy sword and hierophant, when they are emagged or hacked.

An alterative way was added to remove cells on cyborgs to allow for
cyborgs to upgrade ONLY cells. Other upgrades are restricted to balance
them.

This comes with a few base sprites for the research cyborgs more will be
added later or in a future PR.

## Why It's Good For The Game

I've always wondered why the research department never had cyborgs of
their own, but own them.

Research cyborgs are for a dedicated cyborg type assisting the research
department.

~~Disabling the robot factory was done because the printer would just
shit 3 to 4 cyborgs at once and make them out of nothing.~~

It was added with and optional Cyborg CO-OP to encourage the cyborgs and
the AI to make cyborgs them self if they wish for more cyborgs.

Research cyborgs were given jaunting and a stun arm to hopefully allow
them to evade capture. In other words they are to run when hunted as
they are mostly defenseless (fighting back is a bad idea.)


## Proof Of Testing


NOTE: These images taken were during development and may be missing a
few items. Also some items may have been removed wile testing.

LIST OF ITEMS REMOVED:
Dropper
Syringe
Mech gripper

Stock

![dreamseeker_zPm0yyoOZC](https://github.com/Bubberstation/Bubberstation/assets/78038207/267bb6d8-6042-451b-9678-7d7907f53bd0)


Fully upgraded

![dreamseeker_qyG5Oq1cav](https://github.com/Bubberstation/Bubberstation/assets/78038207/a53dffb1-2d75-4e0f-95f5-5971403c2c7d)


Emagged

![dreamseeker_nQcm41bycd](https://github.com/Bubberstation/Bubberstation/assets/78038207/2618afe6-8d04-40fe-a8bf-e8550e3e4fcf)
Note: NO EMAG

![dreamseeker_tNIapvYTHM](https://github.com/Bubberstation/Bubberstation/assets/78038207/98f76dcf-d042-474f-94f7-2d1923755524)



## Changelog

🆑
add: Research cyborgs
add: ability to pry cyborg cells out 
del: ~~disabled malf cyborg factory~~
qol: made an alt method removing cells
balance: rebalanced cyborg making
image: Sprites for research cyborgs
code: what ever needed to get the cyborgs working
/🆑

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
This commit is contained in:
pixelkitty286
2024-06-10 10:53:57 +02:00
committed by GitHub
co-authored by Waterpig projectkepler-RU
parent 59a1304978
commit 7f6cddac52
24 changed files with 426 additions and 16 deletions
+4
View File
@@ -10,6 +10,10 @@
#define BORG_MODEL_ENGINEERING (1<<4)
/// Module is compatible with Service Cyborg model
#define BORG_MODEL_SERVICE (1<<5)
//Bubber addition start
/// Module is compatible with Research Cyborg model
#define BORG_MODEL_RESEARCH (1<<6)
//Bubber addition end
/// Module is compatible with Ripley Exosuit models
#define EXOSUIT_MODULE_RIPLEY (1<<0)
@@ -0,0 +1,2 @@
//I'm tired. This is defines for mech fabs.
#define RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH "/Research Cyborgs"
@@ -1,2 +1,8 @@
// This file contains all the bubber modular traits
#define TRAIT_HYDROPHILIC "hydrophilic"
#define TRAIT_CAN_BE_PICKED_UP "can_be_picked_up"
//Cyborg traits
#define TRAIT_RESEARCH_CYBORG "research_cyborg"
@@ -517,14 +517,14 @@
defib_instance?.forceMove(borg.drop_location()) // [on_defib_instance_qdel_or_moved()] handles the rest.
/obj/item/borg/upgrade/processor
name = "medical cyborg surgical processor"
desc = "An upgrade to the Medical model, installing a processor \
name = "medical and research cyborg surgical processor" // BUBBER EDIT Research borgs
desc = "An upgrade to the Medical and Research model, installing a processor \
capable of scanning surgery disks and carrying \
out procedures"
icon_state = "cyborg_upgrade3"
require_model = TRUE
model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical)
model_flags = BORG_MODEL_MEDICAL
model_flags = list(BORG_MODEL_MEDICAL, BORG_MODEL_RESEARCH)
items_to_add = list(/obj/item/surgical_processor)
@@ -170,6 +170,7 @@
"Miner" = /obj/item/robot_model/miner,
"Janitor" = /obj/item/robot_model/janitor,
"Service" = /obj/item/robot_model/service,
"Research" = /obj/item/robot_model/sci,//BUBBEREDIT - Addition of Research borgs
)
if(!CONFIG_GET(flag/disable_peaceborg))
GLOB.cyborg_model_list["Peacekeeper"] = /obj/item/robot_model/peacekeeper
Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 198 KiB

@@ -608,7 +608,10 @@
"Peacekeeper" = image(icon = 'icons/mob/silicon/robots.dmi', icon_state = "peace"),
"Clown" = image(icon = 'icons/mob/silicon/robots.dmi', icon_state = "clown"),
"Syndicate" = image(icon = 'icons/mob/silicon/robots.dmi', icon_state = "synd_sec"),
"Spider Clan" = image(icon = CYBORG_ICON_NINJA, icon_state = "ninja_engi")
"Spider Clan" = image(icon = CYBORG_ICON_NINJA, icon_state = "ninja_engi"),
//Bubber addition start
"Research" = image(icon = 'modular_zubbers/modules/borgs/sprites/robot_sci.dmi', icon_state = "research"),
//Bubber addition end
))
var/model_selection = show_radial_menu(user, user, model_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 42, require_near = TRUE)
if(!model_selection)
@@ -640,6 +643,10 @@
model = new /obj/item/robot_model/syndicatejack
if("Spider Clan")
model = new /obj/item/robot_model/ninja
//Bubber addition start
if("Research")
model = new /obj/item/robot_model/sci
//Bubber addition end
else
return FALSE
if (!set_disguise_vars(model, user))
@@ -293,7 +293,7 @@
chance *= 5.5
delay_mult *= 0.85
knows_wires = TRUE
if (HAS_TRAIT(user, TRAIT_DIAGNOSTIC_HUD))
if (HAS_TRAIT(user, TRAIT_DIAGNOSTIC_HUD) || HAS_TRAIT(user, TRAIT_RESEARCH_CYBORG)) // BUBBER EDIT - Research cyborgs
if (knows_wires)
chance *= 1.25 // ((10 * 8) * 1.25) = 100%
else
@@ -4,6 +4,82 @@
icon_state = "borg_stack_apparatus"
storable = list(/obj/item/paper)
//Research cyborg apparatus
/obj/item/borg/apparatus/research
name = "Research manipulation gripper"
desc = "A simple grasping tool suited to assist in a wide array of research applications."
icon = 'modular_zubbers/modules/borgs/sprites/robot_items.dmi'
icon_state = "gripper_sci"
storable = list(
/obj/item/slime_extract,
/obj/item/slimepotion,
/obj/item/disk,
/obj/item/stock_parts,
/obj/item/reagent_containers/cup/beaker,
/obj/item/assembly/prox_sensor,
/obj/item/healthanalyzer, //To build medibots
/obj/item/borg_restart_board, //To allow repairs
/obj/item/borg/upgrade/rename, //Basics not an upgrade
/obj/item/relic,
/obj/item/mod,
/obj/item/reagent_containers/syringe,
/obj/item/reagent_containers/dropper,
)
/obj/item/borg/apparatus/research/examine()
. = ..()
if(stored)
. += "The gripper currently has [stored] secured."
. += span_notice(" <i>Alt-click</i> will drop the currently held item. ")
/obj/item/borg/apparatus/circuit_sci
name = "Research circuit assembly gripper"
desc = "A complex grasping tool used for working with circuitry."
icon = 'modular_zubbers/modules/borgs/sprites/robot_items.dmi'
icon_state = "gripper_circ"
storable = list(
/obj/item/circuitboard,
/obj/item/compact_remote,
/obj/item/controller,
/obj/item/multitool/circuit,
/obj/item/integrated_circuit,
/obj/item/circuit_component,
/obj/item/usb_cable,
)
/obj/item/borg/apparatus/circuit_sci/examine()
. = ..()
if(stored)
. += "The gripper currently has [stored] secured."
. += span_notice(" <i>Alt-click</i> will drop the currently held item. ")
/obj/item/borg/apparatus/circuit_sci/pre_attack(atom/atom, mob/living/user, params) // copy and paste
if(istype(atom, /obj/item/ai_module) && !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_warning("This circuit board doesn't seem to have standard robot apparatus pin holes. You're unable to pick it up."))
return ..()
//Illegal gripper to allow research cyborgs when hacked to do further robotics work
/obj/item/borg/apparatus/illegal
name = "Sketchy looking gripper"
desc = "A tool used to expanded robotics work"
icon_state = "connector"
storable = list(
/obj/item/mmi,
/obj/item/assembly/flash, //to build borgs,
/obj/item/bodypart/arm/left/robot,
/obj/item/bodypart/arm/right/robot,
/obj/item/bodypart/leg/left/robot,
/obj/item/bodypart/leg/right/robot,
/obj/item/bodypart/chest/robot,
/obj/item/bodypart/head/robot,
/obj/item/borg/upgrade/ai, //Shell makeing
)
/obj/item/borg/apparatus/illegal/examine()
. = ..()
if(stored)
. += "The apparatus currently has [stored] secured."
. += span_notice(" <i>Alt-click</i> will drop the currently held item. ")
/obj/item/borg/apparatus/tank_manipulator
name = "tank manipulation apparatus"
desc = "An apparatus for carrying and manipulating handheld tanks."
@@ -25,3 +101,7 @@
/obj/item/robot_model/saboteur/New(...)
. = ..()
basic_modules += /obj/item/borg/apparatus/tank_manipulator
/obj/item/borg/apparatus/sheet_manipulator/Initialize()
. = ..()
storable += /obj/item/stack/rods
@@ -13,3 +13,57 @@
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MINING
)
//research cyborg upgrades
/datum/design/borg_upgrade_advancedhealth
name = "Research Advanced Health Analyzer"
id = "borg_upgrade_advancedanalyzer"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/healthanalyzer
materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/silver =SHEET_MATERIAL_AMOUNT, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT * 1.5)
construction_time = 4 SECONDS
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH,
)
//Blue space Rped upgrade
/datum/design/borg_upgrade_brped
name = "Bluespace Rapid Part Exchange Device"
id = "borg_upgrade_brped"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/brped
materials = list(
/datum/material/iron =SHEET_MATERIAL_AMOUNT*5,
/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5,
)
construction_time = 12 SECONDS
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH
)
/datum/design/borg_upgrade_inducer_sci
name = "Research Cyborg inducer"
id = "borg_upgrade_inducer_sci"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/inducer_sci
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
construction_time = 12 SECONDS
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH
)
//so we have our own category
/datum/design/borg_upgrade_surgical_processor_sci
name = "Research Surgical Processor"
id = "borg_upgrade_surgicalprocessor_sci"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/processor
materials = list(
/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5,
/datum/material/glass =SHEET_MATERIAL_AMOUNT*2,
/datum/material/silver =SHEET_MATERIAL_AMOUNT*2,
)
construction_time = 4 SECONDS
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_RESEARCH
)
@@ -17,6 +17,7 @@
. = ..()
design_ids += list(
"crewmonitor",
"borg_upgrade_advancedanalyzer",
)
/datum/techweb_node/xenoorgan_biotech/New()
. = ..()
@@ -39,7 +40,16 @@
. = ..()
design_ids += list(
"borg_upgrade_advcutter",
"borg_upgrade_inducer_sci",
"borg_upgrade_brped"
)
/datum/techweb_node/cyborg_upg_med/New()
design_ids += list(
"borg_upgrade_surgicalprocessor_sci",
)
return ..()
// Computer Tech
/datum/techweb_node/computer_board_gaming/New()
. = ..()
@@ -0,0 +1,18 @@
//Alt method of removing the cell
/mob/living/silicon/robot/screwdriver_act_secondary(mob/living/user, obj/item/tool)
if(!opened)
return ..()
if(!wiresexposed)
if(!cell)
balloon_alert(user, "no cell!")
return TRUE
balloon_alert(user, "removing cell...")
tool.play_tool_sound(src, 100)
if(!tool.use_tool(src, user, 3 SECONDS) || !opened)
balloon_alert(user, "interrupted!")
return TRUE
tool.play_tool_sound(src, 100)
balloon_alert(user, "cell removed")
cell.forceMove(drop_location())
diag_hud_set_borgcell()
return TRUE
@@ -38,7 +38,11 @@
#define CYBORG_ICON_TYPE_RAPTOR "raptor"
//Small raptors I moved it into here to be found easier
#define CYBORG_ICON_SCI_WIDE 'modular_zubbers/modules/borgs/sprites/widerobot_sci.dmi'
#define CYBORG_ICON_SCI_TALL 'modular_zubbers/modules/borgs/sprites/tallrobot_sci.dmi'
#define CYBORG_ICON_SCI_LARGE_BUBBER 'modular_zubbers/modules/borgs/sprites/largerobot_sci.dmi'
#define CYBORG_ICON_SCI 'modular_zubbers/modules/borgs/sprites/robot_sci.dmi'
#define CYBORG_ICON_TYPE_SMOLRAPTOR "smolraptor"
#define CYBORG_ICON_GEN_SMOLRAPTOR 'modular_zubbers/modules/borgs/sprites/smallraptors/smolraptor_gen.dmi'
@@ -67,7 +71,6 @@
#define CYBORG_ICON_TYPE_SYNDI_CATBORG "FELI-Combat"
#define CYBORG_ICON_TYPE_NINJA_CATBORG "FELI-Ninja"
/mob/living/silicon/robot/model/centcom
icon = CYBORG_ICON_CENTCOM_WIDE_BUBBER
icon_state = "valecc"
@@ -92,3 +95,7 @@
/mob/living/silicon/robot/model/centcom/ResetModel()
return
//Research cyborgs
/mob/living/silicon/robot/model/sci
icon_state = "research"
@@ -100,3 +100,74 @@
/obj/item/gun/energy/recharge/kinetic_accelerator/cyborg
max_mod_capacity = 100
//Research borg stuff
/obj/item/inducer/cyborg/sci
icon = 'icons/obj/tools.dmi'
icon_state = "inducer-sci"
//illegal teleporter module
/obj/item/experimental_dash
name = "Exerimental Dash"
desc = "An experimental module that allows for dashing."
desc_controls = "Left-click to dash."
icon = 'icons/mob/actions/actions_items.dmi'
icon_state = "jetboot"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/charge_cost = (STANDARD_CELL_CHARGE * 3.2)
var/datum/effect_system/spark_spread/spark_system
var/datum/action/innate/dash/research/jaunt
var/mob/living/silicon/robot/cyborg
/obj/item/experimental_dash/Initialize(mapload)
. = ..()
jaunt = new(src)
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
/obj/item/experimental_dash/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
return
if(cyborg.cell.charge <= charge_cost)//Prevents usage when charge is low
user.balloon_alert(user, "Low charge!")
return
if(!target.density && jaunt?.teleport(user, target))
cyborg?.cell?.use(charge_cost)
/obj/item/experimental_dash/equipped(mob/user, slot, initial)
. = ..()
if(!QDELETED(jaunt))
jaunt.Grant(user, src)
cyborg = user
/obj/item/experimental_dash/dropped(mob/user)
. = ..()
if(!QDELETED(jaunt))
jaunt.Remove(user)
cyborg = null
/obj/item/experimental_dash/Destroy()
QDEL_NULL(spark_system)
QDEL_NULL(jaunt)
return ..()
/datum/action/innate/dash/research
current_charges = 1
max_charges = 1
charge_rate = 15 SECONDS
beam_length = 1 SECONDS
recharge_sound = null
beam_effect = "plasmabeam"
/datum/action/innate/dash/research/GiveAction(mob/viewer) //this action should be invisible
return
/datum/action/innate/dash/research/HideFrom(mob/viewer)
return
//No more ghetto
/obj/item/screwdriver/cyborg/power
sharpness = NONE
@@ -60,6 +60,121 @@
cyborg.req_access = list(ACCESS_ROBOTICS)
cyborg.faction -= ROLE_DEATHSQUAD //You're no longer part of CENTCOM
//Research cyborgs
/obj/item/robot_model/sci
name = "Research"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg/power,
/obj/item/crowbar/cyborg/power,
/obj/item/multitool/cyborg,
/obj/item/analyzer,
/obj/item/assembly/signaler/cyborg,
/obj/item/borg/apparatus/sheet_manipulator,
/obj/item/stack/cable_coil,
/obj/item/borg/apparatus/beaker,
/obj/item/borg/apparatus/organ_storage,
/obj/item/borg/apparatus/research,
/obj/item/borg/apparatus/circuit_sci,
/obj/item/storage/part_replacer/cyborg,
/obj/item/surgical_drapes,
/obj/item/healthanalyzer,
/obj/item/experi_scanner,
/obj/item/bonesetter,
/obj/item/stack/medical/gauze,
/obj/item/borg/apparatus/tank_manipulator,
)
radio_channels = list(RADIO_CHANNEL_SCIENCE)
//TODO: Illegal science stuff
emag_modules = list(
/obj/item/borg/stun,
/obj/item/experimental_dash,
/obj/item/borg/apparatus/illegal //To replace malf printers
)
cyborg_base_icon = "research"
cyborg_icon_override = CYBORG_ICON_SCI
model_select_icon = "research"
model_select_alternate_icon = 'modular_zubbers/modules/borgs/sprites/screen_robot.dmi'
model_traits = list(TRAIT_KNOW_ROBO_WIRES, TRAIT_RESEARCH_CYBORG)
hat_offset = 0
borg_skins = list(
"F3-LINE" = list(
SKIN_ICON_STATE = CYBORG_ICON_TYPE_SCI_CATBORG,
SKIN_ICON = CYBORG_ICON_ALL_CATBORG,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE, TRAIT_R_SMALL)
),
"Vale" = list(
SKIN_ICON_STATE = "vale",
SKIN_ICON = CYBORG_ICON_SCI_WIDE,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"Borgi" = list(
SKIN_ICON_STATE = "borgi",
SKIN_ICON = CYBORG_ICON_SCI_WIDE,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"Hound" = list(
SKIN_ICON_STATE = "hound",
SKIN_ICON = CYBORG_ICON_SCI_WIDE,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"DarkHound" = list(
SKIN_ICON_STATE = "hounddark",
SKIN_ICON = CYBORG_ICON_SCI_WIDE,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"Drake" = list(
SKIN_ICON_STATE = "drake",
SKIN_ICON = CYBORG_ICON_SCI_WIDE,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"Zoomba" = list(
SKIN_ICON_STATE = "zoomba",
SKIN_ICON = CYBORG_ICON_SCI,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL),
SKIN_HAT_OFFSET = -13,
),
"Eyebot" = list(
SKIN_ICON_STATE = "eyebot",
SKIN_ICON = CYBORG_ICON_SCI,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL),
),
"Raptor" = list(
SKIN_ICON_STATE = CYBORG_ICON_TYPE_RAPTOR,
SKIN_ICON = CYBORG_ICON_SCI_LARGE_BUBBER,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE),
),
"Meka" = list(
SKIN_ICON_STATE = "mekasci",
SKIN_ICON = CYBORG_ICON_SCI_TALL,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), SKIN_HAT_OFFSET = 15
),
"NiKA" = list(
SKIN_ICON_STATE = "fmekasci",
SKIN_ICON = CYBORG_ICON_SCI_TALL,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), SKIN_HAT_OFFSET = 15
),
"NiKO" = list(
SKIN_ICON_STATE = "mmekasci",
SKIN_ICON = CYBORG_ICON_SCI_TALL,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), SKIN_HAT_OFFSET = 15
),
"K4T (Research)" = list(
SKIN_ICON_STATE = "k4tsci",
SKIN_ICON = CYBORG_ICON_SCI_TALL,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), SKIN_HAT_OFFSET = 15
),
"SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR,
SKIN_ICON = CYBORG_ICON_SCI_SMOLRAPTOR,
SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE)
),
)
/* BUBBER SPRITE ADDITIONS BELOW */
/obj/item/robot_model/clown/Initialize(mapload)
. = ..()
@@ -366,15 +481,6 @@
)
/*
/obj/item/robot_model/research/Initialize(mapload)
. = ..()
borg_skins |= list(
"F3-LINE" = list(SKIN_ICON_STATE = "FELI-Research", SKIN_ICON = 'modular_zubbers/modules/borgs/sprites/felibot_all.dmi', SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE, TRAIT_R_SMALL)),
)
*/
/obj/item/robot_model/ninja/Initialize(mapload)
. = ..()
borg_skins |= list(
@@ -12,3 +12,45 @@
desc = "Allows you to to turn a cyborg into a Security model, shitsec abound."
icon_state = "cyborg_upgrade3"
new_model = /obj/item/robot_model/security
//Research borg upgrades
//ADVANCED ROBOTICS REPAIR
/obj/item/borg/upgrade/healthanalyzer
name = "Research cyborg advanced Health Analyzer"
desc = "An upgrade to the Research model cyborg's standard health analyzer."
icon_state = "cyborg_upgrade3"
require_model = TRUE
model_type = list(/obj/item/robot_model/sci)
model_flags = BORG_MODEL_RESEARCH
items_to_add = list(/obj/item/healthanalyzer/advanced)
items_to_remove = list(/obj/item/healthanalyzer)
//Science inducer
/obj/item/borg/upgrade/inducer_sci
name = "Research integrated power inducer"
desc = "An integrated inducer that can charge a device's internal cell from power provided by the cyborg."
require_model = TRUE
model_type = list(/obj/item/robot_model/sci)
model_flags = BORG_MODEL_RESEARCH
items_to_add = list(/obj/item/inducer/cyborg/sci)
//Bluespace RPED
/obj/item/borg/upgrade/brped
name = "Research cyborg Rapid Part Exchange Device Upgrade"
desc = "An upgrade to the Research model cyborg's standard RPED."
icon_state = "cyborg_upgrade3"
require_model = TRUE
model_type = list(/obj/item/robot_model/sci)
model_flags = BORG_MODEL_RESEARCH
items_to_add = list(/obj/item/storage/part_replacer/bluespace)
items_to_remove = list(/obj/item/storage/part_replacer)
// Drapes upgrades
/obj/item/borg/upgrade/processor/Initialize()
. = ..()
model_type += /obj/item/robot_model/sci
model_flags += BORG_MODEL_RESEARCH
items_to_remove = list(/obj/item/surgical_drapes)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

+2
View File
@@ -491,6 +491,7 @@
#include "code\__DEFINES\~~bubber_defines\footsteps.dm"
#include "code\__DEFINES\~~bubber_defines\jobs.dm"
#include "code\__DEFINES\~~bubber_defines\misc.dm"
#include "code\__DEFINES\~~bubber_defines\research_categories.dm"
#include "code\__DEFINES\~~bubber_defines\say.dm"
#include "code\__DEFINES\~~bubber_defines\signals.dm"
#include "code\__DEFINES\~~bubber_defines\species.dm"
@@ -8874,6 +8875,7 @@
#include "modular_zubbers\modules\blooper\atoms_movable.dm"
#include "modular_zubbers\modules\blooper\bark.dm"
#include "modular_zubbers\modules\blooper\bark_list.dm"
#include "modular_zubbers\modules\borgs\code\robot_defense.dm"
#include "modular_zubbers\modules\borgs\code\robot_defines.dm"
#include "modular_zubbers\modules\borgs\code\robot_items.dm"
#include "modular_zubbers\modules\borgs\code\robot_model.dm"