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  Fully upgraded  Emagged  Note: NO EMAG  ## 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>
@@ -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
|
||||
|
||||
|
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)
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 705 B |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 328 KiB |
@@ -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"
|
||||
|
||||