// robot_upgrades.dm // Contains various borg upgrades. /obj/item/borg/upgrade name = "borg upgrade module." desc = "Protected by FRM." icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" var/locked = 0 var/require_module = 0 var/installed = 0 /obj/item/borg/upgrade/proc/action(var/mob/living/silicon/robot/R) if(R.stat == DEAD) to_chat(usr, "The [src] will not function on a deceased robot.") return 1 return 0 /obj/item/borg/upgrade/reset name = "robotic module reset board" desc = "Used to reset a cyborg's module. Destroys any other 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 R.module_reset() return 1 /obj/item/borg/upgrade/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(input(user, "Enter new robot name", "Robot Reclassification", heldname), MAX_NAME_LEN) /obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R) if(..()) return 0 R.notify_ai(ROBOT_NOTIFICATION_NEW_NAME, R.name, heldname) R.name = heldname R.custom_name = heldname R.real_name = heldname return 1 /obj/item/borg/upgrade/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) if(R.health < 0) to_chat(usr, "You have to repair the robot before using this module!") return 0 if(!R.key) for(var/mob/observer/dead/ghost in player_list) if(ghost.mind && ghost.mind.current == R) R.key = ghost.key R.set_stat(CONSCIOUS) dead_mob_list -= R living_mob_list |= R R.notify_ai(ROBOT_NOTIFICATION_NEW_UNIT) return 1 /obj/item/borg/upgrade/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) if(..()) return 0 if(R.speed == -1) return 0 R.speed-- 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" 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, "This robot has had its taser removed!") 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" item_state = "cyborg_upgrade" require_module = 1 /obj/item/borg/upgrade/jetpack/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!") return 0 /obj/item/borg/upgrade/advhealth name = "advanced health analyzer module" 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/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) 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/ 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) if(..()) return 0 if(R.emag_items == 1) return 0 R.emag_items = 1 return 1 /obj/item/borg/upgrade/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) if(..()) return 0 R.add_language(LANGUAGE_SOL_COMMON, 1) R.add_language(LANGUAGE_TRADEBAND, 1) R.add_language(LANGUAGE_UNATHI, 1) R.add_language(LANGUAGE_SIIK, 1) R.add_language(LANGUAGE_AKHANI, 1) R.add_language(LANGUAGE_SKRELLIAN, 1) R.add_language(LANGUAGE_SKRELLIANFAR, 0) R.add_language(LANGUAGE_GUTTER, 1) R.add_language(LANGUAGE_SCHECHI, 1) R.add_language(LANGUAGE_ROOTLOCAL, 1) R.add_language(LANGUAGE_TERMINUS, 1) R.add_language(LANGUAGE_ZADDAT, 1) return 1