Merge pull request #11994 from atlantiscze/2016-01-16-robotchanges

Robot module changes
This commit is contained in:
PsiOmegaDelta
2016-01-20 08:06:23 +01:00
9 changed files with 118 additions and 55 deletions
@@ -50,7 +50,10 @@
cell_use_power(50)
if(lights_on)
cell_use_power(30) // 30W light. Normal lights would use ~15W, but increased for balance reasons.
if(intenselight)
cell_use_power(100) // Upgraded light. Double intensity, much larger power usage.
else
cell_use_power(30) // 30W light. Normal lights would use ~15W, but increased for balance reasons.
src.has_power = 1
else
+35 -5
View File
@@ -60,6 +60,8 @@
var/obj/item/device/pda/ai/rbPDA = null
var/obj/item/weapon/stock_parts/matter_bin/storage = null
var/opened = 0
var/emagged = 0
var/wiresexposed = 0
@@ -85,6 +87,7 @@
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
var/tracking_entities = 0 //The number of known entities currently accessing the internal camera
var/braintype = "Cyborg"
var/intenselight = 0 // Whether cyborg's integrated light was upgraded
var/list/robot_verbs_default = list(
/mob/living/silicon/robot/proc/sensor_mode,
@@ -153,6 +156,15 @@
hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
/mob/living/silicon/robot/proc/recalculate_synth_capacities()
if(!module || !module.synths)
return
var/mult = 1
if(storage)
mult += storage.rating
for(var/datum/matter_synth/M in module.synths)
M.set_multiplier(mult)
/mob/living/silicon/robot/proc/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
laws = new /datum/ai_laws/nanotrasen()
@@ -252,6 +264,7 @@
hands.icon_state = lowertext(modtype)
feedback_inc("cyborg_[lowertext(modtype)]",1)
updatename()
recalculate_synth_capacities()
notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name)
/mob/living/silicon/robot/proc/updatename(var/prefix as text)
@@ -331,10 +344,7 @@
lights_on = !lights_on
usr << "You [lights_on ? "enable" : "disable"] your integrated light."
if(lights_on)
set_light(integrated_light_power) // 1.5x luminosity of flashlight
else
set_light(0)
update_robot_light()
/mob/living/silicon/robot/verb/self_diagnosis_verb()
set category = "Robot Commands"
@@ -374,6 +384,15 @@
C.toggled = 1
src << "\red You enable [C.name]."
/mob/living/silicon/robot/proc/update_robot_light()
if(lights_on)
if(intenselight)
set_light(integrated_light_power * 2, integrated_light_power)
else
set_light(integrated_light_power)
else
set_light(0)
// this function displays jetpack pressure in the stat panel
/mob/living/silicon/robot/proc/show_jetpack_pressure()
// if you have a jetpack, show the internal tank pressure
@@ -409,7 +428,7 @@
stat(null, text("Lights: [lights_on ? "ON" : "OFF"]"))
if(module)
for(var/datum/matter_synth/ms in module.synths)
stat("[ms.name]: [ms.energy]/[ms.max_energy]")
stat("[ms.name]: [ms.energy]/[ms.max_energy_multiplied]")
/mob/living/silicon/robot/restrained()
return 0
@@ -529,6 +548,17 @@
user << "You open the cover."
opened = 1
updateicon()
else if (istype(W, /obj/item/weapon/stock_parts/matter_bin) && opened) // Installing/swapping a matter bin
if(storage)
user << "You replace \the [storage] with \the [W]"
storage.forceMove(get_turf(src))
storage = null
else
user << "You install \the [W]"
user.drop_item()
storage = W
W.forceMove(src)
recalculate_synth_capacities()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
var/datum/robot_component/C = components["power cell"]
@@ -9,7 +9,6 @@ var/global/list/robot_modules = list(
"Security" = /obj/item/weapon/robot_module/security/general,
"Combat" = /obj/item/weapon/robot_module/security/combat,
"Engineering" = /obj/item/weapon/robot_module/engineering/general,
"Construction" = /obj/item/weapon/robot_module/engineering/construction,
"Janitor" = /obj/item/weapon/robot_module/janitor
)
@@ -310,6 +309,7 @@ var/global/list/robot_modules = list(
channels = list("Engineering" = 1)
networks = list(NETWORK_ENGINEERING)
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
supported_upgrades = list(/obj/item/borg/upgrade/rcd)
sprites = list(
"Basic" = "Engineering",
"Antique" = "engineerrobot",
@@ -319,48 +319,6 @@ var/global/list/robot_modules = list(
"Eyebot" = "eyebot-engineering"
)
/obj/item/weapon/robot_module/engineering/construction
name = "construction robot module"
no_slip = 1
/obj/item/weapon/robot_module/engineering/construction/New()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/rcd/borg(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
src.modules += new /obj/item/device/floor_painter(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal()
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel()
var/datum/matter_synth/glass = new /datum/matter_synth/glass()
synths += metal
synths += plasteel
synths += glass
var/obj/item/stack/material/cyborg/steel/M = new (src)
M.synths = list(metal)
src.modules += M
var/obj/item/stack/rods/cyborg/R = new /obj/item/stack/rods/cyborg(src)
R.synths = list(metal)
src.modules += R
var/obj/item/stack/material/cyborg/plasteel/S = new (src)
S.synths = list(plasteel)
src.modules += S
var/obj/item/stack/material/cyborg/glass/reinforced/RG = new (src)
RG.synths = list(metal, glass)
src.modules += RG
..()
/obj/item/weapon/robot_module/engineering/general/New()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/meson(src)
@@ -377,14 +335,17 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gripper(src)
src.modules += new /obj/item/device/lightreplacer(src)
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
src.modules += new /obj/item/weapon/inflatable_dispenser(src)
src.emag = new /obj/item/borg/stun(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(40000)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(60000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel(20000)
var/datum/matter_synth/wire = new /datum/matter_synth/wire()
synths += metal
synths += glass
synths += plasteel
synths += wire
var/obj/item/weapon/matter_decompiler/MD = new /obj/item/weapon/matter_decompiler(src)
@@ -416,6 +377,10 @@ var/global/list/robot_modules = list(
RG.synths = list(metal, glass)
src.modules += RG
var/obj/item/stack/material/cyborg/plasteel/PL = new (src)
PL.synths = list(plasteel)
src.modules += PL
..()
/obj/item/weapon/robot_module/security
+13
View File
@@ -334,6 +334,12 @@
id = "borg_reset_module"
build_path = /obj/item/borg/upgrade/reset
/datum/design/item/robot_upgrade/floodlight
name = "Floodlight module"
desc = "Used to boost cyborg's integrated light intensity."
id = "borg_floodlight_module"
build_path = /obj/item/borg/upgrade/floodlight
/datum/design/item/robot_upgrade/restart
name = "Emergency restart module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
@@ -362,6 +368,13 @@
materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
build_path = /obj/item/borg/upgrade/jetpack
/datum/design/item/robot_upgrade/rcd
name = "RCD module"
desc = "A rapid construction device module for use during construction operations."
id = "borg_rcd_module"
materials = list(DEFAULT_WALL_MATERIAL = 25000, "phoron" = 10000, "gold" = 1000, "silver" = 1000)
build_path = /obj/item/borg/upgrade/rcd
/datum/design/item/robot_upgrade/syndicate
name = "Illegal upgrade"
desc = "Allows for the construction of lethal upgrades for cyborgs."