mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Continues the wiring upgrade. Now cameras, airlocks, robots, and air alarms also use the new wire datum system. Global wiring code is now removed but there are sneaky objects which didn't rely on them such as mulebots and autolathes. Fixes a few issues from the previous upgrade.
179 lines
4.9 KiB
Plaintext
179 lines
4.9 KiB
Plaintext
// 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/construction_time = 120
|
|
var/construction_cost = list("metal"=10000)
|
|
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)
|
|
usr << "\red 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"
|
|
require_module = 1
|
|
|
|
/obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R)
|
|
if(..()) return 0
|
|
R.uneq_all()
|
|
R.hands.icon_state = "nomod"
|
|
R.icon_state = "robot"
|
|
//world << R.custom_sprite
|
|
if(R.custom_sprite == 1)
|
|
//world << R.icon_state
|
|
icon = 'icons/mob/custom-synthetic.dmi'
|
|
R.icon_state = "[R.ckey]-Standard"
|
|
del(R.module)
|
|
R.module = null
|
|
R.camera.network.Remove(list("Engineering","Medical","MINE"))
|
|
R.updatename("Default")
|
|
R.status_flags |= CANPUSH
|
|
R.updateicon()
|
|
R.notify_ai(2)
|
|
|
|
return 1
|
|
|
|
/obj/item/borg/upgrade/rename
|
|
name = "robot reclassification board"
|
|
desc = "Used to rename a cyborg."
|
|
icon_state = "cyborg_upgrade1"
|
|
construction_cost = list("metal"=35000)
|
|
var/heldname = "default name"
|
|
|
|
/obj/item/borg/upgrade/rename/attack_self(mob/user as mob)
|
|
heldname = stripped_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(3, 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."
|
|
construction_cost = list("metal"=60000 , "glass"=5000)
|
|
icon_state = "cyborg_upgrade1"
|
|
|
|
|
|
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
|
|
if(R.health < 0)
|
|
usr << "You have to repair the robot before using this module!"
|
|
return 0
|
|
|
|
if(!R.key)
|
|
for(var/mob/dead/observer/ghost in player_list)
|
|
if(ghost.mind && ghost.mind.current == R)
|
|
R.key = ghost.key
|
|
|
|
R.stat = CONSCIOUS
|
|
dead_mob_list -= R
|
|
living_mob_list |= R
|
|
R.notify_ai(1)
|
|
return 1
|
|
|
|
|
|
/obj/item/borg/upgrade/vtec
|
|
name = "robotic VTEC Module"
|
|
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
|
construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 5000)
|
|
icon_state = "cyborg_upgrade2"
|
|
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."
|
|
construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500)
|
|
icon_state = "cyborg_upgrade3"
|
|
require_module = 1
|
|
|
|
|
|
/obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R)
|
|
if(..()) return 0
|
|
|
|
if(!istype(R.module, /obj/item/weapon/robot_module/security))
|
|
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
|
usr << "There's no mounting point for the module!"
|
|
return 0
|
|
|
|
var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module
|
|
if(!T)
|
|
T = locate() in R.module.contents
|
|
if(!T)
|
|
T = locate() in R.module.modules
|
|
if(!T)
|
|
usr << "This robot has had its taser removed!"
|
|
return 0
|
|
|
|
if(T.recharge_time <= 2)
|
|
R << "Maximum cooling achieved for this hardpoint!"
|
|
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 = "mining robot jetpack"
|
|
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
|
construction_cost = list("metal"=10000,"phoron"=15000,"uranium" = 20000)
|
|
icon_state = "cyborg_upgrade3"
|
|
require_module = 1
|
|
|
|
/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R)
|
|
if(..()) return 0
|
|
|
|
if(!istype(R.module, /obj/item/weapon/robot_module/miner))
|
|
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
|
usr << "There's no mounting point for the module!"
|
|
return 0
|
|
else
|
|
R.module.modules += new/obj/item/weapon/tank/jetpack/carbondioxide
|
|
for(var/obj/item/weapon/tank/jetpack/carbondioxide in R.module.modules)
|
|
R.internals = src
|
|
//R.icon_state="Miner+j"
|
|
return 1
|
|
|
|
|
|
/obj/item/borg/upgrade/syndicate/
|
|
name = "illegal equipment module"
|
|
desc = "Unlocks the hidden, deadlier functions of a robot"
|
|
construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000)
|
|
icon_state = "cyborg_upgrade3"
|
|
require_module = 1
|
|
|
|
/obj/item/borg/upgrade/syndicate/action(var/mob/living/silicon/robot/R)
|
|
if(..()) return 0
|
|
|
|
if(R.emagged == 1)
|
|
return 0
|
|
|
|
R.emagged = 1
|
|
return 1 |