mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
[MIRROR] robot upgrade overhaul + some fixes (#7640)
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: CHOMPStation2 <chompsation2@gmail.com> Co-authored-by: Aroliacue <96730930+Aroliacue@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com> Co-authored-by: Raeschen <rycoop29@gmail.com> Co-authored-by: Eli <fracshun@gmail.com> Co-authored-by: tacoguy7765093 <karokaromaro@gmail.com> Co-authored-by: Nadyr <41974248+Darlantanis@users.noreply.github.com> Co-authored-by: Changelogs <action@github.com> Co-authored-by: TheGreatKitsune <88862343+TheGreatKitsune@users.noreply.github.com> Co-authored-by: Missile597 <150307788+Missile597@users.noreply.github.com>
This commit is contained in:
@@ -7,8 +7,10 @@
|
||||
#define MODIFIY_ROBOT_MODULE_ADD "Add a Module"
|
||||
#define MODIFIY_ROBOT_MODULE_REMOVE "Remove a Module"
|
||||
#define MODIFIY_ROBOT_APPLY_UPGRADE "Apply an Upgrade"
|
||||
#define MODIFIY_ROBOT_SUPP_ADD "Add Upgrade Support"
|
||||
#define MODIFIY_ROBOT_SUPP_REMOVE "Remove Upgrade Support"
|
||||
#define MODIFIY_ROBOT_RADIOC_ADD "Add a Radio Channel"
|
||||
#define MODIFIY_ROBOT_RADIOC_REMOVE "Remove a Radio Channel"
|
||||
#define MODIFIY_ROBOT_COMP_ADD "Replace a Component"
|
||||
#define MODIFIY_ROBOT_COMP_REMOVE "Remove a Component"
|
||||
#define MODIFIY_ROBOT_RESET_MODULE "Fully Resets a Robot Module"
|
||||
#define MODIFIY_ROBOT_RESET_MODULE "Fully Reset Robot Module"
|
||||
|
||||
@@ -1,15 +1,30 @@
|
||||
|
||||
/// Module is compatible with All Cyborg models, utility upgrades
|
||||
#define BORG_UTILITY (1<<0)
|
||||
/// Module is compatible with All Cyborg models, basic upgrades
|
||||
#define BORG_BASIC (1<<1)
|
||||
/// Module is compatible with All Cyborg models, advanced upgrades
|
||||
#define BORG_ADVANCED (1<<2)
|
||||
/// Module is compatible with Security Cyborg models
|
||||
#define BORG_MODULE_SECURITY (1<<0)
|
||||
#define BORG_MODULE_SECURITY (1<<3)
|
||||
/// Module is compatible with Miner Cyborg models
|
||||
#define BORG_MODULE_MINER (1<<1)
|
||||
#define BORG_MODULE_MINER (1<<4)
|
||||
/// Module is compatible with Janitor Cyborg models
|
||||
#define BORG_MODULE_JANITOR (1<<2)
|
||||
#define BORG_MODULE_JANITOR (1<<5)
|
||||
/// Module is compatible with Medical Cyborg models
|
||||
#define BORG_MODULE_MEDICAL (1<<3)
|
||||
#define BORG_MODULE_MEDICAL (1<<6)
|
||||
/// Module is compatible with Engineering Cyborg models
|
||||
#define BORG_MODULE_ENGINEERING (1<<4)
|
||||
#define BORG_MODULE_ENGINEERING (1<<7)
|
||||
/// Module is compatible with Science Cyborg models
|
||||
#define BORG_MODULE_SCIENCE (1<<5)
|
||||
#define BORG_MODULE_SCIENCE (1<<8)
|
||||
/// Module is compatible with Service Cyborg models
|
||||
#define BORG_MODULE_SERVICE (1<<9)
|
||||
/// Module is compatible with Clerical Cyborg models
|
||||
#define BORG_MODULE_CLERIC (1<<10)
|
||||
/// Module is compatible with Combat Cyborg models
|
||||
#define BORG_MODULE_COMBAT (1<<11)
|
||||
/// Module is compatible with Exploration Cyborg models
|
||||
#define BORG_MODULE_EXPLO (1<<12)
|
||||
/// Module is compatible with Ripley Exosuit models
|
||||
#define EXOSUIT_MODULE_RIPLEY (1<<0)
|
||||
/// Module is compatible with Odyseeus Exosuit models
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/datum/supply_pack/recreation/donksoftborg
|
||||
name = "Donk-Soft Cyborg Blaster Crate"
|
||||
contains = list(
|
||||
/obj/item/borg/upgrade/toygun = 2,
|
||||
/obj/item/borg/upgrade/no_prod/toygun = 2,
|
||||
)
|
||||
cost = 35
|
||||
containertype = /obj/structure/closet/crate/allico
|
||||
|
||||
@@ -139,6 +139,12 @@
|
||||
var/module_types = initial(U.module_flags)
|
||||
sub_category = list()
|
||||
if(module_types)
|
||||
if(module_types & BORG_UTILITY)
|
||||
sub_category += "All Cyborgs - Utility"
|
||||
if(module_types & BORG_BASIC)
|
||||
sub_category += "All Cyborgs - Basic"
|
||||
if(module_types & BORG_ADVANCED)
|
||||
sub_category += "All Cyborgs - Advanced"
|
||||
if(module_types & BORG_MODULE_SECURITY)
|
||||
sub_category += "Security"
|
||||
if(module_types & BORG_MODULE_MINER)
|
||||
@@ -151,9 +157,16 @@
|
||||
sub_category += "Engineering"
|
||||
if(module_types & BORG_MODULE_SCIENCE)
|
||||
sub_category += "Science"
|
||||
|
||||
if(module_types & BORG_MODULE_SERVICE)
|
||||
sub_category += "Service"
|
||||
if(module_types & BORG_MODULE_CLERIC)
|
||||
sub_category += "Cleric"
|
||||
if(module_types & BORG_MODULE_COMBAT)
|
||||
sub_category += "Combat"
|
||||
if(module_types & BORG_MODULE_EXPLO)
|
||||
sub_category += "Exploration"
|
||||
else
|
||||
sub_category += "All Cyborgs"
|
||||
sub_category += "This shouldn't be here, bother a dev!"
|
||||
// Else check if this design builds a piece of exosuit equipment.
|
||||
else if(built_item in typesof(/obj/item/mecha_parts/mecha_equipment))
|
||||
var/obj/item/mecha_parts/mecha_equipment/E = built_item
|
||||
|
||||
@@ -18,31 +18,39 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/* ######################################################################################################
|
||||
# Utility section. All reusable upgrades without lasting effects, like renaming, reset, etc. go here.#
|
||||
######################################################################################################*/
|
||||
|
||||
/obj/item/borg/upgrade/reset
|
||||
/obj/item/borg/upgrade/utility
|
||||
module_flags = BORG_UTILITY
|
||||
|
||||
/obj/item/borg/upgrade/utility/reset
|
||||
name = "robotic module reset board"
|
||||
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
|
||||
desc = "Used to reset a cyborg's module. Destroys any higher than basic upgrades applied to the robot."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return 0
|
||||
/obj/item/borg/upgrade/utility/reset/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
R.module_reset()
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/rename
|
||||
/obj/item/borg/upgrade/utility/rename
|
||||
name = "robot reclassification board"
|
||||
desc = "Used to rename a cyborg."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
var/heldname = "default name"
|
||||
|
||||
/obj/item/borg/upgrade/rename/attack_self(mob/user as mob)
|
||||
heldname = sanitizeSafe(tgui_input_text(user, "Enter new robot name", "Robot Reclassification", heldname, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
/obj/item/borg/upgrade/utility/rename/attack_self(mob/user as mob)
|
||||
var/new_name = sanitizeSafe(tgui_input_text(user, "Enter new robot name", "Robot Reclassification", heldname, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
if(new_name)
|
||||
heldname = new_name
|
||||
|
||||
/obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/utility/rename/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
R.notify_ai(ROBOT_NOTIFICATION_NEW_NAME, R.name, heldname)
|
||||
R.name = heldname
|
||||
@@ -51,14 +59,17 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/restart
|
||||
/obj/item/borg/upgrade/utility/restart
|
||||
name = "robot emergency restart module"
|
||||
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/utility/restart/action(var/mob/living/silicon/robot/R)
|
||||
if(R.stat == CONSCIOUS)
|
||||
return 0
|
||||
|
||||
if(R.health < 0)
|
||||
to_chat(usr, "You have to repair the robot before using this module!")
|
||||
return 0
|
||||
@@ -75,133 +86,82 @@
|
||||
R.notify_ai(ROBOT_NOTIFICATION_NEW_UNIT)
|
||||
return 1
|
||||
|
||||
/* ###################################################################################
|
||||
# Basic section. All upgrades which effect the robot's variables directly go here.#
|
||||
###################################################################################*/
|
||||
|
||||
/obj/item/borg/upgrade/vtec
|
||||
/obj/item/borg/upgrade/basic
|
||||
module_flags = BORG_BASIC
|
||||
|
||||
/obj/item/borg/upgrade/basic/vtec
|
||||
name = "robotic VTEC Module"
|
||||
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/basic/vtec/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.speed == -1 || (/mob/living/silicon/robot/proc/toggle_vtec in R.verbs))
|
||||
if(R.has_basic_upgrade(type))
|
||||
to_chat(R, "Actuator already running on overdrive mode!")
|
||||
to_chat(usr, "It'd be unwise to plug another vtec module in!")
|
||||
return 0
|
||||
|
||||
R.verbs += /mob/living/silicon/robot/proc/toggle_vtec
|
||||
R.speed--
|
||||
R.speed = -1
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/tasercooler
|
||||
name = "robotic Rapid Taser Cooling Module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_SECURITY
|
||||
require_module = 1
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its taser removed!</span>")
|
||||
return 0
|
||||
|
||||
if(T.recharge_time <= 2)
|
||||
to_chat(R, "Maximum cooling achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another cooling unit!")
|
||||
return 0
|
||||
|
||||
else
|
||||
T.recharge_time = max(2 , T.recharge_time - 4)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/jetpack
|
||||
name = "robot jetpack"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity operations."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
/obj/item/borg/upgrade/basic/sizeshift
|
||||
name = "robot size alteration module"
|
||||
desc = "Using technology similar to one used in sizeguns, allows cyborgs to adjust their own size as neccesary."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/basic/sizeshift/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/tank/jetpack/carbondioxide/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/tank/jetpack/carbondioxide(R.module)
|
||||
for(var/obj/item/weapon/tank/jetpack/carbondioxide in R.module.modules)
|
||||
R.internals = src
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
if(R.has_basic_upgrade(type))
|
||||
to_chat(R, "Size alteration module already applied!")
|
||||
to_chat(usr, "There's no space for another size alteration module!")
|
||||
return 0
|
||||
|
||||
/obj/item/borg/upgrade/advhealth
|
||||
name = "advanced health analyzer module"
|
||||
desc = "An Advanced Health Analyzer, optimized for borg mounting."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advhealth/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/device/healthanalyzer/advanced/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/device/healthanalyzer/advanced(R.module)
|
||||
R.verbs += /mob/living/proc/set_size
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
/obj/item/borg/upgrade/syndicate/
|
||||
/obj/item/borg/upgrade/basic/syndicate
|
||||
name = "scrambled equipment module"
|
||||
desc = "Unlocks new and often deadly module specific items of a robot"
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/syndicate/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/basic/syndicate/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.emag_items == 1)
|
||||
if(R.has_basic_upgrade(type))
|
||||
to_chat(R, "Secret modules already unlocked!")
|
||||
to_chat(usr, "Plugging another scambled module would be useless!")
|
||||
return 0
|
||||
|
||||
R.emag_items = 1
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/language
|
||||
/obj/item/borg/upgrade/basic/language
|
||||
name = "language module"
|
||||
desc = "Used to let cyborgs other than clerical or service speak a variety of languages."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
|
||||
/obj/item/borg/upgrade/language/action(var/mob/living/silicon/robot/R)
|
||||
/obj/item/borg/upgrade/basic/language/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.has_basic_upgrade(type))
|
||||
to_chat(R, "All possible languages already uploaded!")
|
||||
to_chat(usr, "The language database is up to date!")
|
||||
return 0
|
||||
|
||||
R.add_language(LANGUAGE_SOL_COMMON, 1)
|
||||
R.add_language(LANGUAGE_TRADEBAND, 1)
|
||||
R.add_language(LANGUAGE_UNATHI, 1)
|
||||
@@ -213,5 +173,301 @@
|
||||
R.add_language(LANGUAGE_ROOTLOCAL, 1)
|
||||
R.add_language(LANGUAGE_TERMINUS, 1)
|
||||
R.add_language(LANGUAGE_ZADDAT, 1)
|
||||
R.add_language(LANGUAGE_BIRDSONG, 1)
|
||||
R.add_language(LANGUAGE_SAGARU, 1)
|
||||
R.add_language(LANGUAGE_CANILUNZT, 1)
|
||||
R.add_language(LANGUAGE_ECUREUILIAN, 1)
|
||||
R.add_language(LANGUAGE_DAEMON, 1)
|
||||
R.add_language(LANGUAGE_ENOCHIAN, 1)
|
||||
R.add_language(LANGUAGE_DRUDAKAR, 1)
|
||||
R.add_language(LANGUAGE_TAVAN, 1)
|
||||
R.add_language(LANGUAGE_SIGN, 1)
|
||||
R.add_language(LANGUAGE_VOX, 1)
|
||||
R.add_language(LANGUAGE_ALAI, 1)
|
||||
R.add_language(LANGUAGE_PROMETHEAN, 1)
|
||||
R.add_language(LANGUAGE_GIBBERISH, 1)
|
||||
R.add_language(LANGUAGE_VESPINAE, 1)
|
||||
R.add_language(LANGUAGE_SPACER, 1)
|
||||
R.add_language(LANGUAGE_MOUSE, 1)
|
||||
R.add_language(LANGUAGE_ANIMAL, 1)
|
||||
R.add_language(LANGUAGE_TEPPI, 1)
|
||||
//CHOMPEdit Start
|
||||
R.add_language(LANGUAGE_SLAVIC, 1)
|
||||
R.add_language(LANGUAGE_MARISH, 1)
|
||||
//CHOMPEdit End
|
||||
/* Admin Stuff
|
||||
R.add_language(LANGUAGE_CULT, 1)
|
||||
R.add_language(LANGUAGE_SWARMBOT, 1)
|
||||
R.add_language(LANGUAGE_MINBUS, 1)
|
||||
R.add_language(LANGUAGE_EVENT1, 1)
|
||||
*/
|
||||
/* We don't want telepathy, but want to mark it that it's not been oversighted
|
||||
R.add_language(LANGUAGE_CHANGELING, 1)
|
||||
R.add_language(LANGUAGE_ROOTGLOBAL, 1)
|
||||
R.add_language(LANGUAGE_SHADEKIN, 1)
|
||||
*/
|
||||
|
||||
return 1
|
||||
|
||||
/* ###########################################################################
|
||||
# Advanced section. All upgrades which effect the robot's modules go here.#
|
||||
###########################################################################*/
|
||||
|
||||
/obj/item/borg/upgrade/advanced
|
||||
module_flags = BORG_ADVANCED
|
||||
|
||||
/obj/item/borg/upgrade/advanced/bellysizeupgrade
|
||||
name = "robohound capacity expansion module"
|
||||
desc = "Used to double a robohound's belly capacity. This only affects total volume, and won't allow support of more than one patient in case of sleeper bellies. Can only be applied once."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/bellysizeupgrade/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/T = R.has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its processor removed!</span>")
|
||||
return 0
|
||||
|
||||
if(R.has_advanced_upgrade(type))
|
||||
to_chat(R, "Maximum capacity achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another capacity upgrade!")
|
||||
return 0
|
||||
|
||||
var/obj/item/device/dogborg/sleeper/B = T
|
||||
var/X = B.max_item_count*2
|
||||
B.max_item_count = X //I couldn't do T = maxitem*2 for some reason.
|
||||
to_chat(R, "Internal capacity doubled.")
|
||||
to_chat(usr, "Internal capacity doubled.")
|
||||
B.upgraded_capacity = TRUE
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/jetpack
|
||||
name = "robot jetpack"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity operations."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/jetpack/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.has_advanced_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/tank/jetpack/carbondioxide(R.module)
|
||||
for(var/obj/item/weapon/tank/jetpack/carbondioxide in R.module.modules)
|
||||
R.internals = src
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/advhealth
|
||||
name = "advanced health analyzer module"
|
||||
desc = "An Advanced Health Analyzer, optimized for borg mounting."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/advhealth/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.has_advanced_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/device/healthanalyzer/advanced(R.module)
|
||||
return 1
|
||||
|
||||
//Robot size gun
|
||||
/obj/item/borg/upgrade/advanced/sizegun
|
||||
name = "robot mounted size gun"
|
||||
desc = "A size gun adapted for installation in cyborgs, allows them to turn people pocket-sized among other uses. What could go wrong?"
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advanced/sizegun/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.has_advanced_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/gun/energy/sizegun/mounted(R.module)
|
||||
return 1
|
||||
|
||||
/* ##############################################################################
|
||||
# Restricted section. All upgrades which only work on specific modules go here.#
|
||||
##############################################################################*/
|
||||
|
||||
//adds the capability to ingest items to the sleeper modules as optional upgrade
|
||||
/obj/item/borg/upgrade/restricted/bellycapupgrade
|
||||
name = "robohound capability expansion module"
|
||||
desc = "Used to enable a robohound's sleeper to ingest items. This only affects sleepers, and has no effect on compactor bellies. Can only be applied once."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
module_flags = BORG_MODULE_SECURITY | BORG_MODULE_MEDICAL | BORG_MODULE_COMBAT
|
||||
|
||||
/obj/item/borg/upgrade/restricted/bellycapupgrade/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.supports_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
var/obj/T = R.has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its processor removed!</span>")
|
||||
return 0
|
||||
|
||||
if(R.has_restricted_upgrade(type))
|
||||
to_chat(R, "Maximum capability achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another capability upgrade!")
|
||||
return 0
|
||||
|
||||
var/obj/item/device/dogborg/sleeper/B = T
|
||||
var/X = B.max_item_count*2 //double the capacity from 1 to 2 to allow sleepers to store some items, at most 4 with both upgrades
|
||||
B.max_item_count = X //I couldn't do T = maxitem*2 for some reason.
|
||||
to_chat(R, "Internal capability upgraded.")
|
||||
to_chat(usr, "Internal capability upgraded.")
|
||||
B.compactor = TRUE
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/restricted/tasercooler
|
||||
name = "robotic Rapid Taser Cooling Module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_SECURITY
|
||||
require_module = 1
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/restricted/tasercooler/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.supports_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
var/obj/T = R.has_upgrade_module(/obj/item/weapon/gun/energy/taser/mounted/cyborg)
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its taser removed!</span>")
|
||||
return 0
|
||||
|
||||
if(R.has_restricted_upgrade(type))
|
||||
to_chat(R, "Maximum cooling achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another cooling unit!")
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/gun/energy/taser/mounted/cyborg/B = T
|
||||
B.recharge_time = max(2 , B.recharge_time - 4)
|
||||
return 1
|
||||
|
||||
//Advanced RPED
|
||||
/obj/item/borg/upgrade/restricted/advrped
|
||||
name = "Advanced Rapid Part Exchange Device"
|
||||
desc = "An ARPED, now in borg size!"
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_SCIENCE
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/restricted/advrped/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.supports_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
if(R.has_restricted_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/storage/part_replacer/adv(R.module)
|
||||
return 1
|
||||
|
||||
//Diamond Drill
|
||||
/obj/item/borg/upgrade/restricted/diamonddrill
|
||||
name = "Mounted Diamond Drill"
|
||||
desc = "An advanced drill, optimized for borg use."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_MINER
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/restricted/diamonddrill/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.supports_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
if(R.has_restricted_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/pickaxe/diamonddrill(R.module)
|
||||
return 1
|
||||
|
||||
//PKA
|
||||
/obj/item/borg/upgrade/restricted/pka
|
||||
name = "Protokenetic Accelerator Upgrade"
|
||||
desc = "A borg mounted PKA Rifle for use in mining and wildlife defense."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_MINER
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/restricted/pka/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.supports_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
if(R.has_restricted_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(R.module)
|
||||
return 1
|
||||
|
||||
/* ###############################################
|
||||
# Unsorted section. All cargo modules go here.#
|
||||
###############################################*/
|
||||
|
||||
/obj/item/borg/upgrade/no_prod
|
||||
var/hidden_from_scan = 0//use this for unproduceable modules you want to hide from scanning (e.g. event tools / admeme)
|
||||
|
||||
//cyborg foam dart gun
|
||||
/obj/item/borg/upgrade/no_prod/toygun
|
||||
name = "Donk-Soft Cyborg Blaster module" //Cyborg Blaster is capitalized because it's the brand name
|
||||
desc = "A foam dart gun designed for mounting into cyborgs. It's Donk or Don't! DISCLAIMER: Donk-Soft bears no responsibility for incidents relating to cyborgs becoming too accustomed to shooting at crew. Installation of the Donk-Soft Cyborg Blaster must be performed only by a licensed roboticist."
|
||||
icon_state = "cyborg_upgrade5"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/no_prod/toygun/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(R.has_no_prod_upgrade(type))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
R.module.modules += new/obj/item/weapon/gun/projectile/cyborgtoy(R.module)
|
||||
return 1
|
||||
|
||||
@@ -1,243 +0,0 @@
|
||||
/obj/item/borg/upgrade/language/action(var/mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
R.add_language(LANGUAGE_BIRDSONG, 1)
|
||||
R.add_language(LANGUAGE_SAGARU, 1)
|
||||
R.add_language(LANGUAGE_CANILUNZT, 1)
|
||||
R.add_language(LANGUAGE_ECUREUILIAN, 1)
|
||||
R.add_language(LANGUAGE_DAEMON, 1)
|
||||
R.add_language(LANGUAGE_ENOCHIAN, 1)
|
||||
R.add_language(LANGUAGE_SLAVIC, 1) //CHOMP reAdd
|
||||
R.add_language(LANGUAGE_DRUDAKAR, 1)
|
||||
R.add_language(LANGUAGE_TAVAN, 1)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
//Robot resizing module
|
||||
|
||||
/obj/item/borg/upgrade/sizeshift
|
||||
name = "robot size alteration module"
|
||||
desc = "Using technology similar to one used in sizeguns, allows cyborgs to adjust their own size as neccesary."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/sizeshift/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(/mob/living/proc/set_size in R.verbs)
|
||||
return 0
|
||||
|
||||
R.verbs += /mob/living/proc/set_size
|
||||
return 1
|
||||
|
||||
//Robot size gun
|
||||
/obj/item/borg/upgrade/sizegun
|
||||
name = "robot mounted size gun"
|
||||
desc = "A size gun adapted for installation in cyborgs, allows them to turn people pocket-sized among other uses. What could go wrong?"
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/sizegun/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/gun/energy/sizegun/mounted/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/gun/energy/sizegun/mounted(R.module)
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
/obj/item/borg/upgrade/bellysizeupgrade
|
||||
name = "robohound capacity expansion module"
|
||||
desc = "Used to double a robohound's belly capacity. This only affects total volume, and won't allow support of more than one patient in case of sleeper bellies. Can only be applied once."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/bellysizeupgrade/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.module)//can work
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
var/obj/item/device/dogborg/sleeper/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its processor removed!</span>")
|
||||
return 0
|
||||
|
||||
if(T.upgraded_capacity)// == TRUE
|
||||
to_chat(R, "Maximum capacity achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another capacity upgrade!")
|
||||
return 0
|
||||
else
|
||||
var/X = T.max_item_count*2
|
||||
T.max_item_count = X //I couldn't do T = maxitem*2 for some reason.
|
||||
to_chat(R, "Internal capacity doubled.")
|
||||
to_chat(usr, "Internal capacity doubled.")
|
||||
T.upgraded_capacity = TRUE
|
||||
return 1
|
||||
|
||||
//adds the capability to ingest items to the sleeper modules as optional upgrade
|
||||
/obj/item/borg/upgrade/bellycapupgrade
|
||||
name = "robohound capability expansion module"
|
||||
desc = "Used to enable a robohound's sleeper to ingest items. This only affects sleepers, and has no effect on compactor bellies. Can only be applied once."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/bellycapupgrade/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.module)//can work
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
var/obj/item/device/dogborg/sleeper/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>This robot has had its processor removed!</span>")
|
||||
return 0
|
||||
|
||||
if(T.compactor)// == TRUE, the belly unit is a compactor and no sleeper unit already
|
||||
to_chat(R, "Maximum capability achieved for this hardpoint!")
|
||||
to_chat(usr, "There's no room for another capability upgrade!")
|
||||
return 0
|
||||
else
|
||||
var/X = T.max_item_count*2 //double the capacity from 1 to 2 to allow sleepers to store some items, at most 4 with both upgrades
|
||||
T.max_item_count = X //I couldn't do T = maxitem*2 for some reason.
|
||||
to_chat(R, "Internal capability upgraded.")
|
||||
to_chat(usr, "Internal capability upgraded.")
|
||||
T.compactor = TRUE
|
||||
return 1
|
||||
|
||||
//Advanced RPED
|
||||
/obj/item/borg/upgrade/advrped
|
||||
name = "Advanced Rapid Part Exchange Device"
|
||||
desc = "An ARPED, now in borg size!"
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_SCIENCE
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/advrped/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/storage/part_replacer/adv/T = locate() in R.module
|
||||
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/storage/part_replacer/adv(R.module)
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
//Diamond Drill
|
||||
/obj/item/borg/upgrade/diamonddrill
|
||||
name = "Mounted Diamond Drill"
|
||||
desc = "An advanced drill, optimized for borg use."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_MINER
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/diamonddrill/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/pickaxe/diamonddrill/T = locate() in R.module
|
||||
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/pickaxe/diamonddrill(R.module)
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
//PKA
|
||||
/obj/item/borg/upgrade/pka
|
||||
name = "Protokenetic Accelerator Upgrade"
|
||||
desc = "A borg mounted PKA Rifle for use in mining and wildlife defense."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
module_flags = BORG_MODULE_MINER
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/pka/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/T = locate() in R.module
|
||||
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(R.module)
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
|
||||
//cyborg foam dart gun
|
||||
/obj/item/borg/upgrade/toygun
|
||||
name = "Donk-Soft Cyborg Blaster module" //Cyborg Blaster is capitalized because it's the brand name
|
||||
desc = "A foam dart gun designed for mounting into cyborgs. It's Donk or Don't! DISCLAIMER: Donk-Soft bears no responsibility for incidents relating to cyborgs becoming too accustomed to shooting at crew. Installation of the Donk-Soft Cyborg Blaster must be performed only by a licensed roboticist."
|
||||
icon_state = "cyborg_upgrade5"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/toygun/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
var/obj/item/weapon/gun/projectile/cyborgtoy/T = locate() in R.module
|
||||
if(!T)
|
||||
T = locate() in R.module.contents
|
||||
if(!T)
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
R.module.modules += new/obj/item/weapon/gun/projectile/cyborgtoy(R.module)
|
||||
return 1
|
||||
if(T)
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
return 0
|
||||
@@ -349,7 +349,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/weapon/stock_parts/subspace/treatment,
|
||||
/obj/item/frame,
|
||||
/obj/item/broken_device/random,
|
||||
/obj/item/borg/upgrade/restart,
|
||||
/obj/item/borg/upgrade/utility/restart,
|
||||
/obj/item/weapon/cell,
|
||||
/obj/item/weapon/cell/high,
|
||||
/obj/item/weapon/cell/device,
|
||||
@@ -407,10 +407,10 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/device/tvcamera,
|
||||
/obj/item/device/universal_translator,
|
||||
/obj/item/device/aicard,
|
||||
/obj/item/borg/upgrade/jetpack,
|
||||
/obj/item/borg/upgrade/advhealth,
|
||||
/obj/item/borg/upgrade/vtec,
|
||||
/obj/item/borg/upgrade/tasercooler,
|
||||
/obj/item/borg/upgrade/advanced/jetpack,
|
||||
/obj/item/borg/upgrade/advanced/advhealth,
|
||||
/obj/item/borg/upgrade/basic/vtec,
|
||||
/obj/item/borg/upgrade/restricted/tasercooler,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser,
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
|
||||
/obj/item/rig_module/device/drill,
|
||||
@@ -917,11 +917,11 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
rare_loot = list(
|
||||
/obj/item/weapon/cell/super,
|
||||
/obj/item/borg/upgrade/restart,
|
||||
/obj/item/borg/upgrade/jetpack,
|
||||
/obj/item/borg/upgrade/tasercooler,
|
||||
/obj/item/borg/upgrade/syndicate,
|
||||
/obj/item/borg/upgrade/vtec
|
||||
/obj/item/borg/upgrade/utility/restart,
|
||||
/obj/item/borg/upgrade/advanced/jetpack,
|
||||
/obj/item/borg/upgrade/restricted/tasercooler,
|
||||
/obj/item/borg/upgrade/basic/syndicate,
|
||||
/obj/item/borg/upgrade/basic/vtec
|
||||
)
|
||||
|
||||
// Contains old mediciation, most of it unidentified and has a good chance of being useless.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
set name = "Modify Robot Module"
|
||||
set desc = "Allows to add or remove modules to/from robots."
|
||||
set category = "Admin"
|
||||
if(!check_rights(R_ADMIN, R_FUN, R_VAREDIT))
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!istype(target) || !target.module)
|
||||
@@ -12,12 +12,16 @@
|
||||
if(!target.module.modules)
|
||||
return
|
||||
|
||||
var/list/modification_options = list(MODIFIY_ROBOT_MODULE_ADD,MODIFIY_ROBOT_MODULE_REMOVE, MODIFIY_ROBOT_APPLY_UPGRADE, MODIFIY_ROBOT_RADIOC_ADD, MODIFIY_ROBOT_RADIOC_REMOVE, MODIFIY_ROBOT_COMP_ADD, MODIFIY_ROBOT_COMP_REMOVE, MODIFIY_ROBOT_RESET_MODULE)
|
||||
var/list/modification_options = list(MODIFIY_ROBOT_MODULE_ADD,MODIFIY_ROBOT_MODULE_REMOVE, MODIFIY_ROBOT_APPLY_UPGRADE, MODIFIY_ROBOT_SUPP_ADD, MODIFIY_ROBOT_SUPP_REMOVE, MODIFIY_ROBOT_RADIOC_ADD, MODIFIY_ROBOT_RADIOC_REMOVE, MODIFIY_ROBOT_COMP_ADD, MODIFIY_ROBOT_COMP_REMOVE, MODIFIY_ROBOT_RESET_MODULE)
|
||||
|
||||
while(TRUE)
|
||||
var/modification_choice = tgui_input_list(usr, "Select if you want to add or remove a module to/from [target]","Choice", modification_options)
|
||||
if(!modification_choice || modification_choice == "Cancel")
|
||||
break
|
||||
return
|
||||
|
||||
if(!target.module || !target.module.modules)
|
||||
to_chat(usr, "<span class='danger'>[target] was recently reset, you must wait until module selection has been completed before continuing modifying.</span>")
|
||||
continue
|
||||
|
||||
log_and_message_admins("[key_name(src)] has used MODIFYROBOT ([modification_choice]) on [key_name(target)].")
|
||||
feedback_add_details("admin_verb","MODIFYROBOT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -105,6 +109,7 @@
|
||||
if(MODIFIY_ROBOT_APPLY_UPGRADE)
|
||||
var/list/upgrades = list()
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/upgrade)
|
||||
if(!(target.has_upgrade(initial(upgrade.build_path))))
|
||||
upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
|
||||
while(TRUE)
|
||||
var/selected_module_upgrade = tgui_input_list(usr, "Please select the module to remove", "Upgrades", upgrades)
|
||||
@@ -114,9 +119,16 @@
|
||||
if(tgui_alert(usr, "Are you sure that you want to install [selected_module_upgrade] and reset the robot's module?","Confirm",list("Yes","No"))=="No")
|
||||
continue
|
||||
var/new_upgrade = upgrades[capitalize(selected_module_upgrade)]
|
||||
target.module.supported_upgrades += new_upgrade
|
||||
upgrades.Remove(selected_module_upgrade)
|
||||
var/obj/item/borg/upgrade/U = new new_upgrade(src)
|
||||
if(selected_module_upgrade == "Rename Module")
|
||||
var/obj/item/borg/upgrade/utility/rename/UN = U
|
||||
var/new_name = sanitizeSafe(tgui_input_text(usr, "Enter new robot name", "Robot Reclassification", UN.heldname, MAX_NAME_LEN), MAX_NAME_LEN)
|
||||
if(new_name)
|
||||
UN.heldname = new_name
|
||||
U = UN
|
||||
if(istype(U, /obj/item/borg/upgrade/restricted))
|
||||
target.module.supported_upgrades |= new_upgrade
|
||||
if(U.action(target))
|
||||
to_chat(usr, "<span class='danger'>You apply the [U] to [target]!</span>")
|
||||
usr.drop_item()
|
||||
@@ -143,6 +155,30 @@
|
||||
modkits.Remove(selected_ka_upgrade)
|
||||
M.install(kin, target)
|
||||
capacity = kin.get_remaining_mod_capacity()
|
||||
if(MODIFIY_ROBOT_SUPP_ADD)
|
||||
var/list/whitelisted_upgrades = list()
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
|
||||
if(!(initial(upgrade.build_path) in target.module.supported_upgrades))
|
||||
whitelisted_upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
|
||||
while(TRUE)
|
||||
var/selected_upgrade_type = tgui_input_list(usr, "Please select which upgrade you want this module to support", "Upgrades", whitelisted_upgrades)
|
||||
if(!selected_upgrade_type || selected_upgrade_type == "Cancel")
|
||||
break
|
||||
var/upgrade_path = whitelisted_upgrades[capitalize(selected_upgrade_type)]
|
||||
whitelisted_upgrades.Remove(selected_upgrade_type)
|
||||
target.module.supported_upgrades |= upgrade_path
|
||||
if(MODIFIY_ROBOT_SUPP_REMOVE)
|
||||
var/list/whitelisted_upgrades = list()
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
|
||||
if((initial(upgrade.build_path) in target.module.supported_upgrades))
|
||||
whitelisted_upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
|
||||
while(TRUE)
|
||||
var/selected_upgrade_type = tgui_input_list(usr, "Please select which upgrade you want this module to support", "Upgrades", whitelisted_upgrades)
|
||||
if(!selected_upgrade_type || selected_upgrade_type == "Cancel")
|
||||
break
|
||||
var/upgrade_path = whitelisted_upgrades[capitalize(selected_upgrade_type)]
|
||||
whitelisted_upgrades.Remove(selected_upgrade_type)
|
||||
target.module.supported_upgrades -= upgrade_path
|
||||
if(MODIFIY_ROBOT_RADIOC_ADD)
|
||||
var/list/available_channels = radiochannels.Copy()
|
||||
for(var/has_channel in target.radio.channels)
|
||||
@@ -240,6 +276,6 @@
|
||||
to_chat(usr, "<span class='danger'>You removed \"[C]\" from [target]</span>")
|
||||
if(MODIFIY_ROBOT_RESET_MODULE)
|
||||
if(tgui_alert(usr, "Are you sure that you want to reset the entire module?","Confirm",list("Yes","No"))=="No")
|
||||
return
|
||||
continue
|
||||
target.module_reset()
|
||||
to_chat(usr, "<span class='danger'>You resetted [target]'s module selection.</span>")
|
||||
|
||||
@@ -413,11 +413,13 @@
|
||||
if(H.internal_organs) H.internal_organs.Cut()
|
||||
if(H.organs_by_name) H.organs_by_name.Cut()
|
||||
if(H.internal_organs_by_name) H.internal_organs_by_name.Cut()
|
||||
if(H.bad_external_organs) H.bad_external_organs.Cut()
|
||||
|
||||
H.organs = list()
|
||||
H.internal_organs = list()
|
||||
H.organs_by_name = list()
|
||||
H.internal_organs_by_name = list()
|
||||
H.bad_external_organs = list()
|
||||
|
||||
for(var/limb_type in has_limbs)
|
||||
var/list/organ_data = has_limbs[limb_type]
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_state = "robotanalyzer"
|
||||
item_state = "analyzer"
|
||||
desc = "A hand-held scanner able to diagnose robotic injuries."
|
||||
description_info = "Alt-click to toggle between robot analysis and robot module scan mode."
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 3
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -18,6 +19,10 @@
|
||||
/obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
do_scan(M, user)
|
||||
|
||||
/obj/item/device/robotanalyzer/AltClick(mob/user)
|
||||
mode = !mode
|
||||
user.show_message(span_blue("[mode ? "Toggled to cyborg analyzing mode." : "Toggled to cyborg upgrade scan mode."]"), 1)
|
||||
|
||||
/obj/item/device/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
to_chat(user, span_red("You try to analyze the floor's vitals!"))
|
||||
@@ -43,6 +48,7 @@
|
||||
user.visible_message("<span class='notice'>\The [user] has analyzed [M]'s components.</span>","<span class='notice'>You have analyzed [M]'s components.</span>")
|
||||
switch(scan_type)
|
||||
if("robot")
|
||||
if(mode)
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
user.show_message(span_blue("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health - M.halloss]% functional"]"))
|
||||
@@ -51,6 +57,21 @@
|
||||
if(M.tod && M.stat == DEAD)
|
||||
user.show_message(span_blue("Time of Disable: [M.tod]"))
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/obj/item/weapon/cell/cell = H.get_cell()
|
||||
if(cell)
|
||||
var/cell_charge = round(cell.percent())
|
||||
var/cell_text
|
||||
if(cell_charge > 60)
|
||||
cell_text = span_green("[cell_charge]")
|
||||
else if (cell_charge > 30)
|
||||
cell_text = span_yellow("[cell_charge]")
|
||||
else if (cell_charge > 10)
|
||||
cell_text = span_orange("[cell_charge]")
|
||||
else if (cell_charge > 1)
|
||||
cell_text = span_red("[cell_charge]")
|
||||
else
|
||||
cell_text = span_red("<b>[cell_charge]</b>")
|
||||
user.show_message("\t Power Cell Status: [span_blue("[capitalize(cell.name)]")] at [cell_text]% charge")
|
||||
var/list/damaged = H.get_damaged_components(1,1,1)
|
||||
user.show_message(span_blue("Localized Damage:"),1)
|
||||
if(length(damaged)>0)
|
||||
@@ -67,6 +88,79 @@
|
||||
if(H.emagged && prob(5))
|
||||
user.show_message(span_red("\t ERROR: INTERNAL SYSTEMS COMPROMISED"),1)
|
||||
user.show_message(span_blue("Operating Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)"), 1)
|
||||
else
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/obj/item/weapon/cell/cell = H.get_cell()
|
||||
user.show_message(span_blue("Upgrade Analyzing Results for [M]:"))
|
||||
if(cell)
|
||||
user.show_message("\t Power Cell Details: [span_blue("[capitalize(cell.name)]")] with a capacity of [cell.maxcharge] at [round(cell.percent())]% charge")
|
||||
var/show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/utility/upgrade)
|
||||
var/obj/item/borg/upgrade/utility/upgrade_type = initial(upgrade.build_path)
|
||||
var/needs_module = initial(upgrade_type.require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || (H.stat != DEAD && initial(upgrade.name) == "Emergency Restart Module"))
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Utility Modules, used for modifying purposes:")
|
||||
show_title = FALSE
|
||||
if(H.stat == DEAD)
|
||||
if(initial(upgrade.name) == "Emergency Restart Module")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_green("Usable")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_green("Usable")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/basic/upgrade)
|
||||
var/obj/item/borg/upgrade/basic/upgrade_type = initial(upgrade.build_path)
|
||||
var/needs_module = initial(upgrade_type.require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Basic Modules, used for direct upgrade purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_basic_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_basic_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/advanced/upgrade)
|
||||
var/obj/item/borg/upgrade/advanced/upgrade_type = initial(upgrade.build_path)
|
||||
var/needs_module = initial(upgrade_type.require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Advanced Modules, used for module upgrade purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_advanced_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_advanced_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
|
||||
var/obj/item/borg/upgrade/restricted/upgrade_type = initial(upgrade.build_path)
|
||||
var/needs_module = initial(upgrade_type.require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || !H.supports_upgrade(initial(upgrade.build_path)) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Restricted Modules, used for module upgrade purposes on specific chassis:")
|
||||
show_title = FALSE
|
||||
if(H.has_restricted_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_restricted_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/no_prod/upgrade)
|
||||
var/obj/item/borg/upgrade/no_prod/upgrade_type = initial(upgrade.build_path)
|
||||
var/needs_module = initial(upgrade_type.require_module)
|
||||
var/hidden = initial(upgrade_type.hidden_from_scan)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || hidden || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Special Modules, used for recreation purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_no_prod_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_no_prod_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
|
||||
if("prosthetics")
|
||||
|
||||
@@ -109,7 +203,7 @@
|
||||
|
||||
var/output = {"<span class='notice'>Analyzing Results for \the [Mecha]:</span><br>
|
||||
<b>Chassis Integrity: </b> [integrity]%<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[Mecha.cell.percent()]%"]<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[capitalize(initial(Mecha.cell.name))] at [Mecha.cell.percent()]%"]<br>
|
||||
<b>Air source: </b>[Mecha.use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
|
||||
<b>Airtank temperature: </b>[tank_temperature]K|[tank_temperature - T0C]°C<br>
|
||||
|
||||
@@ -1490,3 +1490,75 @@
|
||||
rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options)
|
||||
if(!rest_style)
|
||||
rest_style = "Default"
|
||||
|
||||
// Those basic ones require quite detailled checks on the robot's vars to see if they are installed!
|
||||
/mob/living/silicon/robot/proc/has_basic_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/basic/vtec)
|
||||
return (/mob/living/silicon/robot/proc/toggle_vtec in verbs)
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/sizeshift)
|
||||
return (/mob/living/proc/set_size in verbs)
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/syndicate)
|
||||
return emag_items
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/language)
|
||||
return (speech_synthesizer_langs.len > 20) // Service with the most has 18
|
||||
return null
|
||||
|
||||
// We check for the module only here
|
||||
/mob/living/silicon/robot/proc/has_upgrade_module(var/given_type)
|
||||
var/obj/T = locate(given_type) in module
|
||||
if(!T)
|
||||
T = locate(given_type) in module.contents
|
||||
if(!T)
|
||||
T = locate(given_type) in module.modules
|
||||
return T
|
||||
|
||||
// Most of the advanced ones, we can easily check, but a few special cases exist and need to be handled specially
|
||||
/mob/living/silicon/robot/proc/has_advanced_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/bellysizeupgrade)
|
||||
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(T && T.upgraded_capacity)
|
||||
return T
|
||||
else
|
||||
return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/jetpack)
|
||||
return has_upgrade_module(/obj/item/weapon/tank/jetpack/carbondioxide)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/advhealth)
|
||||
return has_upgrade_module(/obj/item/device/healthanalyzer/advanced)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/sizegun)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/energy/sizegun/mounted)
|
||||
return null
|
||||
|
||||
// Do we support specific upgrades?
|
||||
/mob/living/silicon/robot/proc/supports_upgrade(var/given_type)
|
||||
return (given_type in module.supported_upgrades)
|
||||
|
||||
// Most of the restricted ones, we can easily check, but a few special cases exist and need to be handled specially
|
||||
/mob/living/silicon/robot/proc/has_restricted_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(T && T.compactor)
|
||||
return T
|
||||
else
|
||||
return ""
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/tasercooler)
|
||||
var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = has_upgrade_module(/obj/item/weapon/gun/energy/taser/mounted/cyborg)
|
||||
if(T && T.recharge_time <= 2)
|
||||
return T
|
||||
else
|
||||
return ""
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/advrped)
|
||||
return has_upgrade_module(/obj/item/weapon/storage/part_replacer/adv)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/diamonddrill)
|
||||
return has_upgrade_module(/obj/item/weapon/pickaxe/diamonddrill)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/pka)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg)
|
||||
return null
|
||||
|
||||
// Check if we have any non production upgrades
|
||||
/mob/living/silicon/robot/proc/has_no_prod_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/no_prod/toygun)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/projectile/cyborgtoy)
|
||||
return null
|
||||
|
||||
/mob/living/silicon/robot/proc/has_upgrade(var/given_type)
|
||||
return (has_basic_upgrade(given_type) || has_advanced_upgrade(given_type) || has_restricted_upgrade(given_type) || has_no_prod_upgrade(given_type))
|
||||
|
||||
@@ -47,8 +47,6 @@ var/global/list/robot_modules = list(
|
||||
var/list/modules = list()
|
||||
var/list/datum/matter_synth/synths = list()
|
||||
var/list/emag = list()
|
||||
var/obj/item/borg/upgrade/jetpack = null
|
||||
var/obj/item/borg/upgrade/advhealth = null
|
||||
var/list/subsystems = list()
|
||||
var/list/obj/item/borg/upgrade/supported_upgrades = list()
|
||||
|
||||
@@ -110,8 +108,6 @@ var/global/list/robot_modules = list(
|
||||
modules.Cut()
|
||||
synths.Cut()
|
||||
emag.Cut()
|
||||
qdel(jetpack)
|
||||
jetpack = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/robot_module/emp_act(severity)
|
||||
@@ -245,6 +241,7 @@ var/global/list/robot_modules = list(
|
||||
networks = list(NETWORK_MEDICAL)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
pto_type = PTO_MEDICAL
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/* CHOMPedit start: Removal of Surgeon module. *
|
||||
|
||||
@@ -507,7 +504,7 @@ var/global/list/robot_modules = list(
|
||||
channels = list("Security" = 1)
|
||||
networks = list(NETWORK_SECURITY)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/tasercooler, /obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
pto_type = PTO_SECURITY
|
||||
|
||||
/obj/item/weapon/robot_module/robot/security/general
|
||||
@@ -707,7 +704,7 @@ var/global/list/robot_modules = list(
|
||||
name = "miner robot module"
|
||||
channels = list("Supply" = 1)
|
||||
networks = list(NETWORK_MINE)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/pka, /obj/item/borg/upgrade/restricted/diamonddrill)
|
||||
pto_type = PTO_CARGO
|
||||
|
||||
/obj/item/weapon/robot_module/robot/miner/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
@@ -730,7 +727,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/weapon/robot_module/robot/research
|
||||
name = "research module"
|
||||
channels = list("Science" = 1)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/advrped)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/advrped)
|
||||
pto_type = PTO_SCIENCE
|
||||
|
||||
/obj/item/weapon/robot_module/robot/research/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
@@ -793,6 +790,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/weapon/robot_module/robot/security/combat
|
||||
name = "combat robot module"
|
||||
hide_on_manifest = TRUE
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/security/combat/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
// Gets a big shield and a gun that shoots really fast to scare the opposing force.
|
||||
/obj/item/weapon/robot_module/robot/syndicate/protector
|
||||
name = "protector robot module"
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/syndicate/protector/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
@@ -133,6 +134,7 @@
|
||||
// Mediborg optimized for on-the-field healing, but can also do surgery if needed.
|
||||
/obj/item/weapon/robot_module/robot/syndicate/combat_medic
|
||||
name = "combat medic robot module"
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/syndicate/combat_medic/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
vore_stomach_name = "fuel processor"
|
||||
vore_stomach_flavor = "You have ended up in the fuel processor of this corrupted machine. This place was definitely not designed with safety and comfort in mind. The heated and cramped surroundings oozing potent fluids all over your form, eager to do nothing less than breaking you apart to fuel its rampage for the next few days... hours... minutes? Oh dear..."
|
||||
|
||||
loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
|
||||
loot_list = list(/obj/item/borg/upgrade/basic/syndicate = 6, /obj/item/borg/upgrade/basic/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
|
||||
@@ -71,8 +71,10 @@
|
||||
to_chat(src, "<span class='filter_notice'><I>... You can almost hear someone talking ...</I></span>")
|
||||
else
|
||||
if(client && client.prefs.chat_timestamp)
|
||||
msg = replacetext(msg, new/regex("^(<span(?: \[^>]*)?>)((?:.|\\n)*</span>)", ""), "$1[time] $2")
|
||||
to_chat(src,msg)
|
||||
// TG-Chat filters latch directly to the spans, we no longer need that
|
||||
//msg = replacetext(msg, new/regex("^(<span(?: \[^>]*)?>)((?:.|\\n)*</span>)", ""), "$1[time] $2") // Insteres timestamps after the first qualifying span
|
||||
//msg = replacetext(msg, new/regex("^\[^<]((?:.|\\n)*)", ""), "[time] $1") // Spanless messages also get timestamped
|
||||
to_chat(src,"[time] [msg]")
|
||||
else if(teleop)
|
||||
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[msg]")
|
||||
else
|
||||
|
||||
@@ -161,12 +161,6 @@
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
|
||||
|
||||
// cyborgs produced by Robotize get an automatic power cell
|
||||
O.cell = new(O)
|
||||
O.cell.maxcharge = 7500
|
||||
O.cell.charge = 7500
|
||||
|
||||
|
||||
O.gender = gender
|
||||
O.invisibility = 0
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
* Robot
|
||||
*/
|
||||
/obj/item/weapon/cell/robot_station
|
||||
name = "A standard robot power cell"
|
||||
name = "standard robot power cell"
|
||||
maxcharge = 7500
|
||||
|
||||
/*
|
||||
@@ -76,7 +76,7 @@
|
||||
* Syndicate
|
||||
*/
|
||||
/obj/item/weapon/cell/robot_syndi
|
||||
name = "A syndicate robot power cell"
|
||||
name = "syndicate robot power cell"
|
||||
description_fluff = "Almost as good as a hyper."
|
||||
icon_state = "super" //We don't want roboticists confuse it with a low standard cell
|
||||
maxcharge = 25000
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob) //Change the mode
|
||||
var/t = ""
|
||||
var/t = "<span class='infoplain'>"
|
||||
for(var/i = 1 to reagent_ids.len)
|
||||
if(t)
|
||||
t += ", "
|
||||
@@ -106,7 +106,7 @@
|
||||
t += "<b>[reagent_names[i]]</b>"
|
||||
else
|
||||
t += "<a href='?src=\ref[src];reagent=[reagent_ids[i]]'>[reagent_names[i]]</a>"
|
||||
t = "Available reagents: [t]."
|
||||
t = "Available reagents: [t].</span>"
|
||||
to_chat(user,t)
|
||||
|
||||
return
|
||||
|
||||
@@ -385,68 +385,140 @@
|
||||
time = 12
|
||||
materials = list(MAT_STEEL = 7500)
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/rename
|
||||
// Section for utility upgrades
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/utility/rename
|
||||
name = "Rename Module"
|
||||
desc = "Used to rename a cyborg."
|
||||
id = "borg_rename_module"
|
||||
build_path = /obj/item/borg/upgrade/rename
|
||||
build_path = /obj/item/borg/upgrade/utility/rename
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/reset
|
||||
/datum/design/item/prosfab/robot_upgrade/utility/reset
|
||||
name = "Reset Module"
|
||||
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
|
||||
id = "borg_reset_module"
|
||||
build_path = /obj/item/borg/upgrade/reset
|
||||
build_path = /obj/item/borg/upgrade/utility/reset
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restart
|
||||
/datum/design/item/prosfab/robot_upgrade/utility/restart
|
||||
name = "Emergency Restart Module"
|
||||
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
|
||||
id = "borg_restart_module"
|
||||
materials = list(MAT_STEEL = 45000, MAT_GLASS = 3750)
|
||||
build_path = /obj/item/borg/upgrade/restart
|
||||
build_path = /obj/item/borg/upgrade/utility/restart
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/vtec
|
||||
// Section for basic upgrades for all cyborgs
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/basic/sizeshift
|
||||
name = "Size Alteration Module"
|
||||
id = "borg_sizeshift_module"
|
||||
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/basic/sizeshift
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/basic/vtec
|
||||
name = "VTEC Module"
|
||||
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
||||
id = "borg_vtec_module"
|
||||
materials = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 3750)
|
||||
build_path = /obj/item/borg/upgrade/vtec
|
||||
build_path = /obj/item/borg/upgrade/basic/vtec
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/tasercooler
|
||||
name = "Rapid Taser Cooling Module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
id = "borg_taser_module"
|
||||
materials = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 1500, MAT_DIAMOND = 375)
|
||||
build_path = /obj/item/borg/upgrade/tasercooler
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/jetpack
|
||||
name = "Jetpack Module"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
||||
id = "borg_jetpack_module"
|
||||
materials = list(MAT_STEEL = 7500, MAT_PHORON = 11250, MAT_URANIUM = 15000)
|
||||
build_path = /obj/item/borg/upgrade/jetpack
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/advhealth
|
||||
name = "Advanced Health Analyzer Module"
|
||||
desc = "An advanced health analyzer suitable for diagnosing more serious injuries."
|
||||
id = "borg_advhealth_module"
|
||||
materials = list(MAT_STEEL = 10000, MAT_GLASS = 6500, MAT_DIAMOND = 350)
|
||||
build_path = /obj/item/borg/upgrade/advhealth
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/syndicate
|
||||
/datum/design/item/prosfab/robot_upgrade/basic/syndicate
|
||||
name = "Scrambled Equipment Module"
|
||||
desc = "Allows for the construction of lethal upgrades for cyborgs."
|
||||
id = "borg_syndicate_module"
|
||||
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
|
||||
materials = list(MAT_STEEL = 7500, MAT_GLASS = 11250, MAT_DIAMOND = 7500)
|
||||
build_path = /obj/item/borg/upgrade/syndicate
|
||||
build_path = /obj/item/borg/upgrade/basic/syndicate
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/language
|
||||
/datum/design/item/prosfab/robot_upgrade/basic/language
|
||||
name = "Language Module"
|
||||
desc = "Used to let cyborgs other than clerical or service speak a variety of languages."
|
||||
id = "borg_language_module"
|
||||
req_tech = list(TECH_DATA = 6, TECH_MATERIAL = 6)
|
||||
materials = list(MAT_STEEL = 25000, MAT_GLASS = 3000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/borg/upgrade/language
|
||||
build_path = /obj/item/borg/upgrade/basic/language
|
||||
|
||||
// Section for advanced upgrades for all cyborgs
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/advanced/bellysizeupgrade
|
||||
name = "Robohound Capacity Expansion Module"
|
||||
id = "borg_hound_capacity_module"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
|
||||
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/advanced/bellysizeupgrade
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/advanced/sizegun
|
||||
name = "Size Gun Module"
|
||||
id = "borg_sizegun_module"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/advanced/sizegun
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/advanced/jetpack
|
||||
name = "Jetpack Module"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
||||
id = "borg_jetpack_module"
|
||||
materials = list(MAT_STEEL = 7500, MAT_PHORON = 11250, MAT_URANIUM = 15000)
|
||||
build_path = /obj/item/borg/upgrade/advanced/jetpack
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/advanced/advhealth
|
||||
name = "Advanced Health Analyzer Module"
|
||||
desc = "An advanced health analyzer suitable for diagnosing more serious injuries."
|
||||
id = "borg_advhealth_module"
|
||||
materials = list(MAT_STEEL = 10000, MAT_GLASS = 6500, MAT_DIAMOND = 350)
|
||||
build_path = /obj/item/borg/upgrade/advanced/advhealth
|
||||
|
||||
/*
|
||||
Some job related borg upgrade modules, adding useful items for puppers.
|
||||
*/
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restricted/bellycapupgrade
|
||||
name = "Robohound Capability Expansion Module"
|
||||
id = "borg_hound_capability_module"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
|
||||
materials = list(MAT_STEEL = 8000, MAT_GLASS = 6000)
|
||||
build_path = /obj/item/borg/upgrade/restricted/bellycapupgrade
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restricted/advrped
|
||||
name = "Advanced Rapid Part Exchange Device"
|
||||
desc = "Exactly the same as a standard Advanced RPED, but this one has mounting hardware for a Science Borg."
|
||||
id = "borg_advrped_module"
|
||||
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
|
||||
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000)
|
||||
build_path = /obj/item/borg/upgrade/restricted/advrped
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restricted/diamonddrill
|
||||
name = "Diamond Drill"
|
||||
desc = "A mining drill with a diamond tip, made for use by Mining Borgs."
|
||||
id = "borg_ddrill_module"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_ENGINEERING = 5)
|
||||
materials = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/borg/upgrade/restricted/diamonddrill
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restricted/pka
|
||||
name = "Proto-Kinetic Accelerator"
|
||||
desc = "A mining weapon designed for clearing rocks and hostile wildlife. This model is equiped with a self upgrade system, allowing it to attach modules hands free."
|
||||
id = "borg_pka_module"
|
||||
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
|
||||
materials = list(MAT_PLASTEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PLATINUM = 350)
|
||||
build_path = /obj/item/borg/upgrade/restricted/pka
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/restricted/tasercooler
|
||||
name = "Rapid Taser Cooling Module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
id = "borg_taser_module"
|
||||
materials = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 1500, MAT_DIAMOND = 375)
|
||||
build_path = /obj/item/borg/upgrade/restricted/tasercooler
|
||||
|
||||
// Section for quick access for admins, events and such, but can't be produced.
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/no_prod/cyborgtoy
|
||||
category = list() // We simply do not sort them in
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/no_prod/cyborgtoy
|
||||
name = "Donk-Soft Cyborg Blaster"
|
||||
id = "borg_hound_cyborg_blaster"
|
||||
build_path = /obj/item/borg/upgrade/no_prod/toygun
|
||||
|
||||
// Synthmorph Bags.
|
||||
|
||||
@@ -546,3 +618,46 @@
|
||||
time = 30
|
||||
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000)
|
||||
//req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
|
||||
|
||||
///// pAI parts!!!
|
||||
|
||||
//////////////////// Cyborg Parts ////////////////////
|
||||
/datum/design/item/prosfab/paiparts
|
||||
category = list("pAI Parts")
|
||||
time = 20
|
||||
materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
|
||||
|
||||
/datum/design/item/prosfab/paiparts/cell
|
||||
name = "pAI Cell"
|
||||
id = "pai_cell"
|
||||
build_path = /obj/item/paiparts/cell
|
||||
|
||||
/datum/design/item/prosfab/paiparts/processor
|
||||
name = "pAI Processor"
|
||||
id = "pai_processor"
|
||||
build_path = /obj/item/paiparts/processor
|
||||
|
||||
/datum/design/item/prosfab/paiparts/board
|
||||
name = "pAI Board"
|
||||
id = "pai_board"
|
||||
build_path = /obj/item/paiparts/board
|
||||
|
||||
/datum/design/item/prosfab/paiparts/capacitor
|
||||
name = "pAI capacitor"
|
||||
id = "pai_capacitor"
|
||||
build_path = /obj/item/paiparts/capacitor
|
||||
|
||||
/datum/design/item/prosfab/paiparts/projector
|
||||
name = "pAI Projector"
|
||||
id = "pai_projector"
|
||||
build_path = /obj/item/paiparts/projector
|
||||
|
||||
/datum/design/item/prosfab/paiparts/emitter
|
||||
name = "pAI Emitter"
|
||||
id = "pai_emitter"
|
||||
build_path = /obj/item/paiparts/emitter
|
||||
|
||||
/datum/design/item/prosfab/paiparts/speech_synthesizer
|
||||
name = "pAI Speech Synthesizer"
|
||||
id = "pai_speech_synthesizer"
|
||||
build_path = /obj/item/paiparts/speech_synthesizer
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
//Prosfab stuff for borgs and such
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/sizeshift
|
||||
name = "Size Alteration Module"
|
||||
id = "borg_sizeshift_module"
|
||||
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/sizeshift
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/sizegun
|
||||
name = "Size Gun Module"
|
||||
id = "borg_sizegun_module"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/sizegun
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/bellysizeupgrade
|
||||
name = "Robohound Capacity Expansion Module"
|
||||
id = "borg_hound_capacity_module"
|
||||
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
|
||||
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
|
||||
build_path = /obj/item/borg/upgrade/bellysizeupgrade
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/bellycapupgrade
|
||||
name = "Robohound Capability Expansion Module"
|
||||
id = "borg_hound_capability_module"
|
||||
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
|
||||
materials = list(MAT_STEEL = 8000, MAT_GLASS = 6000)
|
||||
build_path = /obj/item/borg/upgrade/bellycapupgrade
|
||||
|
||||
/*
|
||||
Some job related borg upgrade modules, adding useful items for puppers.
|
||||
|
||||
*/
|
||||
/datum/design/item/prosfab/robot_upgrade/advrped
|
||||
name = "Advanced Rapid Part Exchange Device"
|
||||
desc = "Exactly the same as a standard Advanced RPED, but this one has mounting hardware for a Science Borg."
|
||||
id = "borg_advrped_module"
|
||||
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
|
||||
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000)
|
||||
build_path = /obj/item/borg/upgrade/advrped
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/diamonddrill
|
||||
name = "Diamond Drill"
|
||||
desc = "A mining drill with a diamond tip, made for use by Mining Borgs."
|
||||
id = "borg_ddrill_module"
|
||||
req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_ENGINEERING = 5)
|
||||
materials = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/borg/upgrade/diamonddrill
|
||||
|
||||
/datum/design/item/prosfab/robot_upgrade/pka
|
||||
name = "Proto-Kinetic Accelerator"
|
||||
desc = "A mining weapon designed for clearing rocks and hostile wildlife. This model is equiped with a self upgrade system, allowing it to attach modules hands free."
|
||||
id = "borg_pka_module"
|
||||
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
|
||||
materials = list(MAT_PLASTEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PLATINUM = 350)
|
||||
build_path = /obj/item/borg/upgrade/pka
|
||||
|
||||
///// pAI parts!!!
|
||||
|
||||
//////////////////// Cyborg Parts ////////////////////
|
||||
/datum/design/item/prosfab/paiparts
|
||||
category = list("pAI Parts")
|
||||
time = 20
|
||||
materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
|
||||
|
||||
/datum/design/item/prosfab/paiparts/cell
|
||||
name = "pAI Cell"
|
||||
id = "pai_cell"
|
||||
build_path = /obj/item/paiparts/cell
|
||||
|
||||
/datum/design/item/prosfab/paiparts/processor
|
||||
name = "pAI Processor"
|
||||
id = "pai_processor"
|
||||
build_path = /obj/item/paiparts/processor
|
||||
|
||||
/datum/design/item/prosfab/paiparts/board
|
||||
name = "pAI Board"
|
||||
id = "pai_board"
|
||||
build_path = /obj/item/paiparts/board
|
||||
|
||||
/datum/design/item/prosfab/paiparts/capacitor
|
||||
name = "pAI capacitor"
|
||||
id = "pai_capacitor"
|
||||
build_path = /obj/item/paiparts/capacitor
|
||||
|
||||
/datum/design/item/prosfab/paiparts/projector
|
||||
name = "pAI Projector"
|
||||
id = "pai_projector"
|
||||
build_path = /obj/item/paiparts/projector
|
||||
|
||||
/datum/design/item/prosfab/paiparts/emitter
|
||||
name = "pAI Emitter"
|
||||
id = "pai_emitter"
|
||||
build_path = /obj/item/paiparts/emitter
|
||||
|
||||
/datum/design/item/prosfab/paiparts/speech_synthesizer
|
||||
name = "pAI Speech Synthesizer"
|
||||
id = "pai_speech_synthesizer"
|
||||
build_path = /obj/item/paiparts/speech_synthesizer
|
||||
@@ -203,7 +203,7 @@
|
||||
/obj/item/weapon/vehicle_assembly/spacebike/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
switch(build_stage)
|
||||
if(0)
|
||||
if(istype(W, /obj/item/weapon/tank/jetpack) || istype(W, /obj/item/borg/upgrade/jetpack))
|
||||
if(istype(W, /obj/item/weapon/tank/jetpack) || istype(W, /obj/item/borg/upgrade/advanced/jetpack))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
increase_step()
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
* Robot
|
||||
*/
|
||||
/obj/item/weapon/cell/robot_station
|
||||
name = "A standard robot power cell"
|
||||
name = "standard robot power cell"
|
||||
maxcharge = 7500
|
||||
|
||||
/*
|
||||
* Syndicate
|
||||
*/
|
||||
/obj/item/weapon/cell/robot_syndi
|
||||
name = "A syndicate robot power cell"
|
||||
name = "syndicate robot power cell"
|
||||
description_fluff = "Almost as good as a hyper."
|
||||
icon_state = "b_sup" //We don't want roboticists confuse it with a low standard cell
|
||||
maxcharge = 25000
|
||||
|
||||
@@ -1342,7 +1342,6 @@
|
||||
#include "code\game\objects\items\robot\robot_items.dm"
|
||||
#include "code\game\objects\items\robot\robot_parts.dm"
|
||||
#include "code\game\objects\items\robot\robot_upgrades.dm"
|
||||
#include "code\game\objects\items\robot\robot_upgrades_vr.dm"
|
||||
#include "code\game\objects\items\stacks\marker_beacons.dm"
|
||||
#include "code\game\objects\items\stacks\matter_synth.dm"
|
||||
#include "code\game\objects\items\stacks\medical.dm"
|
||||
@@ -4108,7 +4107,6 @@
|
||||
#include "code\modules\research\mechfab_designs_vr.dm"
|
||||
#include "code\modules\research\message_server.dm"
|
||||
#include "code\modules\research\prosfab_designs.dm"
|
||||
#include "code\modules\research\prosfab_designs_vr.dm"
|
||||
#include "code\modules\research\protolathe.dm"
|
||||
#include "code\modules\research\rd-readme.dm"
|
||||
#include "code\modules\research\rdconsole.dm"
|
||||
|
||||
Reference in New Issue
Block a user