mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Makes it possible for borg modules to include specific subystems.
This commit is contained in:
@@ -1202,7 +1202,6 @@
|
|||||||
#include "code\modules\mob\living\silicon\ai\login.dm"
|
#include "code\modules\mob\living\silicon\ai\login.dm"
|
||||||
#include "code\modules\mob\living\silicon\ai\logout.dm"
|
#include "code\modules\mob\living\silicon\ai\logout.dm"
|
||||||
#include "code\modules\mob\living\silicon\ai\say.dm"
|
#include "code\modules\mob\living\silicon\ai\say.dm"
|
||||||
#include "code\modules\mob\living\silicon\ai\subsystems.dm"
|
|
||||||
#include "code\modules\mob\living\silicon\decoy\death.dm"
|
#include "code\modules\mob\living\silicon\decoy\death.dm"
|
||||||
#include "code\modules\mob\living\silicon\decoy\decoy.dm"
|
#include "code\modules\mob\living\silicon\decoy\decoy.dm"
|
||||||
#include "code\modules\mob\living\silicon\decoy\life.dm"
|
#include "code\modules\mob\living\silicon\decoy\life.dm"
|
||||||
|
|||||||
@@ -79,13 +79,11 @@ var/list/ai_verbs_default = list(
|
|||||||
|
|
||||||
/mob/living/silicon/ai/proc/add_ai_verbs()
|
/mob/living/silicon/ai/proc/add_ai_verbs()
|
||||||
src.verbs |= ai_verbs_default
|
src.verbs |= ai_verbs_default
|
||||||
src.verbs |= ai_verbs_subsystems
|
src.verbs |= silicon_subsystems
|
||||||
src.verbs |= silicon_verbs_subsystems
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/remove_ai_verbs()
|
/mob/living/silicon/ai/proc/remove_ai_verbs()
|
||||||
src.verbs -= ai_verbs_default
|
src.verbs -= ai_verbs_default
|
||||||
src.verbs -= ai_verbs_subsystems
|
src.verbs -= silicon_subsystems
|
||||||
src.verbs -= silicon_verbs_subsystems
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
|
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
|
||||||
announcement = new()
|
announcement = new()
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
/mob/living/silicon/ai
|
|
||||||
var/list/ai_verbs_subsystems = list(
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_atmos_control,
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_crew_monitor,
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_power_monitor,
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_rcon
|
|
||||||
)
|
|
||||||
|
|
||||||
var/obj/nano_module/atmos_control/atmos_control
|
|
||||||
var/obj/nano_module/crew_monitor/crew_monitor
|
|
||||||
var/obj/nano_module/rcon/rcon
|
|
||||||
var/obj/nano_module/power_monitor/power_monitor
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/init_subsystems()
|
|
||||||
..()
|
|
||||||
del(alarm_monitor)
|
|
||||||
atmos_control = new(src)
|
|
||||||
alarm_monitor = new/obj/nano_module/alarm_monitor/ai(src)
|
|
||||||
crew_monitor = new(src)
|
|
||||||
rcon = new(src)
|
|
||||||
power_monitor = new(src)
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_atmos_control()
|
|
||||||
set category = "Subystems"
|
|
||||||
set name = "Atmospherics Control"
|
|
||||||
|
|
||||||
atmos_control.ui_interact(usr, state = self_state)
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_crew_monitor()
|
|
||||||
set category = "Subystems"
|
|
||||||
set name = "Crew Monitor"
|
|
||||||
|
|
||||||
crew_monitor.ui_interact(usr, state = self_state)
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_power_monitor()
|
|
||||||
set category = "Subystems"
|
|
||||||
set name = "Power Monitor"
|
|
||||||
|
|
||||||
power_monitor.ui_interact(usr, state = self_state)
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/subsystem_rcon()
|
|
||||||
set category = "Subystems"
|
|
||||||
set name = "RCON"
|
|
||||||
|
|
||||||
rcon.ui_interact(usr, state = self_state)
|
|
||||||
@@ -281,10 +281,10 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/add_robot_verbs()
|
/mob/living/silicon/robot/drone/add_robot_verbs()
|
||||||
src.verbs |= silicon_verbs_subsystems
|
src.verbs |= silicon_subsystems
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
||||||
src.verbs -= silicon_verbs_subsystems
|
src.verbs -= silicon_subsystems
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/construction
|
/mob/living/silicon/robot/drone/construction
|
||||||
law_type = /datum/ai_laws/construction_drone
|
law_type = /datum/ai_laws/construction_drone
|
||||||
|
|||||||
@@ -262,7 +262,8 @@
|
|||||||
hands.icon_state = lowertext(modtype)
|
hands.icon_state = lowertext(modtype)
|
||||||
feedback_inc("cyborg_[lowertext(modtype)]",1)
|
feedback_inc("cyborg_[lowertext(modtype)]",1)
|
||||||
updatename()
|
updatename()
|
||||||
choose_icon(6, set_module_sprites(module.sprites))
|
set_module_sprites(module.sprites)
|
||||||
|
choose_icon(module_sprites.len + 1, module_sprites)
|
||||||
notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name)
|
notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name)
|
||||||
|
|
||||||
/mob/living/silicon/robot/proc/updatename(var/prefix as text)
|
/mob/living/silicon/robot/proc/updatename(var/prefix as text)
|
||||||
@@ -1013,7 +1014,6 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/silicon/robot/proc/choose_icon(var/triesleft, var/list/module_sprites)
|
/mob/living/silicon/robot/proc/choose_icon(var/triesleft, var/list/module_sprites)
|
||||||
|
|
||||||
if(triesleft<1 || !module_sprites.len)
|
if(triesleft<1 || !module_sprites.len)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
@@ -1040,6 +1040,7 @@
|
|||||||
var/choice = input("Look at your icon - is this what you want?") in list("Yes","No")
|
var/choice = input("Look at your icon - is this what you want?") in list("Yes","No")
|
||||||
if(choice=="No")
|
if(choice=="No")
|
||||||
choose_icon(triesleft, module_sprites)
|
choose_icon(triesleft, module_sprites)
|
||||||
|
return
|
||||||
else
|
else
|
||||||
triesleft = 0
|
triesleft = 0
|
||||||
return
|
return
|
||||||
@@ -1054,11 +1055,11 @@
|
|||||||
|
|
||||||
/mob/living/silicon/robot/proc/add_robot_verbs()
|
/mob/living/silicon/robot/proc/add_robot_verbs()
|
||||||
src.verbs |= robot_verbs_default
|
src.verbs |= robot_verbs_default
|
||||||
src.verbs |= silicon_verbs_subsystems
|
src.verbs |= silicon_subsystems
|
||||||
|
|
||||||
/mob/living/silicon/robot/proc/remove_robot_verbs()
|
/mob/living/silicon/robot/proc/remove_robot_verbs()
|
||||||
src.verbs -= robot_verbs_default
|
src.verbs -= robot_verbs_default
|
||||||
src.verbs -= silicon_verbs_subsystems
|
src.verbs -= silicon_subsystems
|
||||||
|
|
||||||
// Uses power from cyborg's cell. Returns 1 on success or 0 on failure.
|
// Uses power from cyborg's cell. Returns 1 on success or 0 on failure.
|
||||||
// Properly converts using CELLRATE now! Amount is in Joules.
|
// Properly converts using CELLRATE now! Amount is in Joules.
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
var/global/list/robot_modules = list(
|
var/global/list/robot_modules = list(
|
||||||
"Standard" = /obj/item/weapon/robot_module/standard,
|
"Standard" = /obj/item/weapon/robot_module/standard,
|
||||||
"Service" = /obj/item/weapon/robot_module/butler,
|
"Service" = /obj/item/weapon/robot_module/clerical/butler,
|
||||||
"Clerical" = /obj/item/weapon/robot_module/clerical,
|
"Clerical" = /obj/item/weapon/robot_module/clerical/general,
|
||||||
"Research" = /obj/item/weapon/robot_module/research,
|
"Research" = /obj/item/weapon/robot_module/research,
|
||||||
"Miner" = /obj/item/weapon/robot_module/miner,
|
"Miner" = /obj/item/weapon/robot_module/miner,
|
||||||
"Crisis" = /obj/item/weapon/robot_module/crisis,
|
"Crisis" = /obj/item/weapon/robot_module/medical/crisis,
|
||||||
"Surgeon" = /obj/item/weapon/robot_module/surgeon,
|
"Surgeon" = /obj/item/weapon/robot_module/medical/surgeon,
|
||||||
"Security" = /obj/item/weapon/robot_module/security/general,
|
"Security" = /obj/item/weapon/robot_module/security/general,
|
||||||
|
"Combat" = /obj/item/weapon/robot_module/security/combat,
|
||||||
"Engineering" = /obj/item/weapon/robot_module/engineering/general,
|
"Engineering" = /obj/item/weapon/robot_module/engineering/general,
|
||||||
"Construction" = /obj/item/weapon/robot_module/engineering/construction,
|
"Construction" = /obj/item/weapon/robot_module/engineering/construction,
|
||||||
"Janitor" = /obj/item/weapon/robot_module/janitor,
|
"Janitor" = /obj/item/weapon/robot_module/janitor
|
||||||
"Combat" = /obj/item/weapon/robot_module/security/combat
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module
|
/obj/item/weapon/robot_module
|
||||||
@@ -30,7 +30,7 @@ var/global/list/robot_modules = list(
|
|||||||
var/list/datum/matter_synth/synths = list()
|
var/list/datum/matter_synth/synths = list()
|
||||||
var/obj/item/emag = null
|
var/obj/item/emag = null
|
||||||
var/obj/item/borg/upgrade/jetpack = null
|
var/obj/item/borg/upgrade/jetpack = null
|
||||||
|
var/list/subsystems = list()
|
||||||
var/list/obj/item/borg/upgrade/supported_upgrades = list()
|
var/list/obj/item/borg/upgrade/supported_upgrades = list()
|
||||||
|
|
||||||
// Bookkeeping
|
// Bookkeeping
|
||||||
@@ -45,6 +45,7 @@ var/global/list/robot_modules = list(
|
|||||||
add_camera_networks(R)
|
add_camera_networks(R)
|
||||||
add_languages(R)
|
add_languages(R)
|
||||||
add_radio_channels(R)
|
add_radio_channels(R)
|
||||||
|
add_subsystems(R)
|
||||||
apply_status_flags(R)
|
apply_status_flags(R)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/proc/Reset(var/mob/living/silicon/robot/R)
|
/obj/item/weapon/robot_module/proc/Reset(var/mob/living/silicon/robot/R)
|
||||||
@@ -52,6 +53,7 @@ var/global/list/robot_modules = list(
|
|||||||
remove_camera_networks(R)
|
remove_camera_networks(R)
|
||||||
remove_languages(R)
|
remove_languages(R)
|
||||||
remove_radio_channels(R)
|
remove_radio_channels(R)
|
||||||
|
remove_subsystems(R)
|
||||||
remove_status_flags(R)
|
remove_status_flags(R)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/emp_act(severity)
|
/obj/item/weapon/robot_module/emp_act(severity)
|
||||||
@@ -119,6 +121,12 @@ var/global/list/robot_modules = list(
|
|||||||
modified_radio.config(original_radio_channels)
|
modified_radio.config(original_radio_channels)
|
||||||
original_radio_channels.Cut()
|
original_radio_channels.Cut()
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/proc/add_subsystems(var/mob/living/silicon/robot/R)
|
||||||
|
R.verbs |= subsystems
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/proc/remove_subsystems(var/mob/living/silicon/robot/R)
|
||||||
|
R.verbs -= subsystems
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/proc/apply_status_flags(var/mob/living/silicon/robot/R)
|
/obj/item/weapon/robot_module/proc/apply_status_flags(var/mob/living/silicon/robot/R)
|
||||||
if(!can_be_pushed)
|
if(!can_be_pushed)
|
||||||
R.status_flags &= ~CANPUSH
|
R.status_flags &= ~CANPUSH
|
||||||
@@ -146,11 +154,15 @@ var/global/list/robot_modules = list(
|
|||||||
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
src.emag = new /obj/item/weapon/melee/energy/sword(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/surgeon
|
/obj/item/weapon/robot_module/medical
|
||||||
name = "surgeon robot module"
|
name = "medical robot module"
|
||||||
channels = list("Medical" = 1)
|
channels = list("Medical" = 1)
|
||||||
networks = list(NETWORK_MEDICAL)
|
networks = list(NETWORK_MEDICAL)
|
||||||
|
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||||
can_be_pushed = 0
|
can_be_pushed = 0
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/medical/surgeon
|
||||||
|
name = "surgeon robot module"
|
||||||
sprites = list(
|
sprites = list(
|
||||||
"Basic" = "Medbot",
|
"Basic" = "Medbot",
|
||||||
"Standard" = "surgeon",
|
"Standard" = "surgeon",
|
||||||
@@ -159,7 +171,7 @@ var/global/list/robot_modules = list(
|
|||||||
"Drone" = "drone-surgery"
|
"Drone" = "drone-surgery"
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/surgeon/New()
|
/obj/item/weapon/robot_module/medical/surgeon/New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/device/flash(src)
|
src.modules += new /obj/item/device/flash(src)
|
||||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||||
@@ -194,17 +206,14 @@ var/global/list/robot_modules = list(
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
/obj/item/weapon/robot_module/medical/surgeon/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||||
if(src.emag)
|
if(src.emag)
|
||||||
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
|
var/obj/item/weapon/reagent_containers/spray/PS = src.emag
|
||||||
PS.reagents.add_reagent("pacid", 2 * amount)
|
PS.reagents.add_reagent("pacid", 2 * amount)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/crisis
|
/obj/item/weapon/robot_module/medical/crisis
|
||||||
name = "crisis robot module"
|
name = "crisis robot module"
|
||||||
channels = list("Medical" = 1)
|
|
||||||
networks = list(NETWORK_MEDICAL)
|
|
||||||
can_be_pushed = 0
|
|
||||||
sprites = list(
|
sprites = list(
|
||||||
"Basic" = "Medbot",
|
"Basic" = "Medbot",
|
||||||
"Standard" = "surgeon",
|
"Standard" = "surgeon",
|
||||||
@@ -214,7 +223,7 @@ var/global/list/robot_modules = list(
|
|||||||
"Drone - Chemistry" = "drone-chemistry"
|
"Drone - Chemistry" = "drone-chemistry"
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/crisis/New()
|
/obj/item/weapon/robot_module/medical/crisis/New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/device/flash(src)
|
src.modules += new /obj/item/device/flash(src)
|
||||||
src.modules += new /obj/item/borg/sight/hud/med(src)
|
src.modules += new /obj/item/borg/sight/hud/med(src)
|
||||||
@@ -251,7 +260,7 @@ var/global/list/robot_modules = list(
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
/obj/item/weapon/robot_module/medical/crisis/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||||
|
|
||||||
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
|
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
|
||||||
if(S.mode == 2)
|
if(S.mode == 2)
|
||||||
@@ -271,6 +280,7 @@ var/global/list/robot_modules = list(
|
|||||||
name = "engineering robot module"
|
name = "engineering robot module"
|
||||||
channels = list("Engineering" = 1)
|
channels = list("Engineering" = 1)
|
||||||
networks = list(NETWORK_ENGINEERING)
|
networks = list(NETWORK_ENGINEERING)
|
||||||
|
subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor)
|
||||||
sprites = list(
|
sprites = list(
|
||||||
"Basic" = "Engineering",
|
"Basic" = "Engineering",
|
||||||
"Antique" = "engineerrobot",
|
"Antique" = "engineerrobot",
|
||||||
@@ -378,6 +388,7 @@ var/global/list/robot_modules = list(
|
|||||||
name = "security robot module"
|
name = "security robot module"
|
||||||
channels = list("Security" = 1)
|
channels = list("Security" = 1)
|
||||||
networks = list(NETWORK_SECURITY)
|
networks = list(NETWORK_SECURITY)
|
||||||
|
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||||
can_be_pushed = 0
|
can_be_pushed = 0
|
||||||
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
||||||
|
|
||||||
@@ -446,7 +457,7 @@ var/global/list/robot_modules = list(
|
|||||||
var/obj/item/weapon/reagent_containers/spray/S = src.emag
|
var/obj/item/weapon/reagent_containers/spray/S = src.emag
|
||||||
S.reagents.add_reagent("lube", 2 * amount)
|
S.reagents.add_reagent("lube", 2 * amount)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/butler
|
/obj/item/weapon/robot_module/clerical
|
||||||
name = "service robot module"
|
name = "service robot module"
|
||||||
channels = list("Service" = 1)
|
channels = list("Service" = 1)
|
||||||
languages = list(
|
languages = list(
|
||||||
@@ -459,6 +470,8 @@ var/global/list/robot_modules = list(
|
|||||||
LANGUAGE_TRADEBAND = 1,
|
LANGUAGE_TRADEBAND = 1,
|
||||||
LANGUAGE_GUTTER = 1
|
LANGUAGE_GUTTER = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/obj/item/weapon/robot_module/clerical/butler
|
||||||
sprites = list( "Waitress" = "Service",
|
sprites = list( "Waitress" = "Service",
|
||||||
"Kent" = "toiletbot",
|
"Kent" = "toiletbot",
|
||||||
"Bro" = "Brobot",
|
"Bro" = "Brobot",
|
||||||
@@ -468,7 +481,7 @@ var/global/list/robot_modules = list(
|
|||||||
"Drone - Hydro" = "drone-hydro"
|
"Drone - Hydro" = "drone-hydro"
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/butler/New()
|
/obj/item/weapon/robot_module/clerical/butler/New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/device/flash(src)
|
src.modules += new /obj/item/device/flash(src)
|
||||||
src.modules += new /obj/item/weapon/gripper/service(src)
|
src.modules += new /obj/item/weapon/gripper/service(src)
|
||||||
@@ -500,19 +513,8 @@ var/global/list/robot_modules = list(
|
|||||||
src.emag.name = "Mickey Finn's Special Brew"
|
src.emag.name = "Mickey Finn's Special Brew"
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/clerical
|
/obj/item/weapon/robot_module/clerical/general
|
||||||
name = "clerical robot module"
|
name = "clerical robot module"
|
||||||
channels = list("Service" = 1)
|
|
||||||
languages = list(
|
|
||||||
LANGUAGE_SOL_COMMON = 1,
|
|
||||||
LANGUAGE_UNATHI = 1,
|
|
||||||
LANGUAGE_SIIK_MAAS = 1,
|
|
||||||
LANGUAGE_SIIK_TAJR = 0,
|
|
||||||
LANGUAGE_SKRELLIAN = 1,
|
|
||||||
LANGUAGE_ROOTSPEAK = 1,
|
|
||||||
LANGUAGE_TRADEBAND = 1,
|
|
||||||
LANGUAGE_GUTTER = 1
|
|
||||||
)
|
|
||||||
sprites = list(
|
sprites = list(
|
||||||
"Waitress" = "Service",
|
"Waitress" = "Service",
|
||||||
"Kent" = "toiletbot",
|
"Kent" = "toiletbot",
|
||||||
@@ -522,7 +524,7 @@ var/global/list/robot_modules = list(
|
|||||||
"Drone" = "drone-service"
|
"Drone" = "drone-service"
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/clerical/New()
|
/obj/item/weapon/robot_module/clerical/general/New()
|
||||||
..()
|
..()
|
||||||
src.modules += new /obj/item/device/flash(src)
|
src.modules += new /obj/item/device/flash(src)
|
||||||
src.modules += new /obj/item/weapon/pen/robopen(src)
|
src.modules += new /obj/item/weapon/pen/robopen(src)
|
||||||
@@ -531,7 +533,7 @@ var/global/list/robot_modules = list(
|
|||||||
src.modules += new /obj/item/weapon/hand_labeler(src)
|
src.modules += new /obj/item/weapon/hand_labeler(src)
|
||||||
src.emag = new /obj/item/weapon/stamp/denied(src)
|
src.emag = new /obj/item/weapon/stamp/denied(src)
|
||||||
|
|
||||||
/obj/item/weapon/robot_module/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
/obj/item/weapon/robot_module/general/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||||
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
|
var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules
|
||||||
E.reagents.add_reagent("enzyme", 2 * amount)
|
E.reagents.add_reagent("enzyme", 2 * amount)
|
||||||
if(src.emag)
|
if(src.emag)
|
||||||
|
|||||||
@@ -278,14 +278,6 @@
|
|||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/silicon/proc/init_subsystems()
|
|
||||||
alarm_monitor = new/obj/nano_module/alarm_monitor/borg(src)
|
|
||||||
law_manager = new/obj/nano_module/law_manager(src)
|
|
||||||
|
|
||||||
for(var/datum/alarm_handler/AH in alarm_manager.all_handlers)
|
|
||||||
AH.register(src, /mob/living/silicon/proc/receive_alarm)
|
|
||||||
queued_alarms[AH] = list() // Makes sure alarms remain listed in consistent order
|
|
||||||
|
|
||||||
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
|
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
|
||||||
if(!next_alarm_notice)
|
if(!next_alarm_notice)
|
||||||
next_alarm_notice = world.time + SecondsToTicks(10)
|
next_alarm_notice = world.time + SecondsToTicks(10)
|
||||||
|
|||||||
@@ -1,26 +1,101 @@
|
|||||||
/mob/living/silicon
|
/mob/living/silicon
|
||||||
var/list/silicon_verbs_subsystems = list(
|
var/register_alarms = 1
|
||||||
|
var/obj/nano_module/alarm_monitor/alarm_monitor
|
||||||
|
var/obj/nano_module/atmos_control/atmos_control
|
||||||
|
var/obj/nano_module/crew_monitor/crew_monitor
|
||||||
|
var/obj/nano_module/law_manager/law_manager
|
||||||
|
var/obj/nano_module/power_monitor/power_monitor
|
||||||
|
var/obj/nano_module/rcon/rcon
|
||||||
|
|
||||||
|
var/alarm_monitor_type = /obj/nano_module/alarm_monitor/borg
|
||||||
|
|
||||||
|
/mob/living/silicon
|
||||||
|
alarm_monitor_type = /obj/nano_module/alarm_monitor/borg
|
||||||
|
var/list/silicon_subsystems = list(
|
||||||
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
||||||
/mob/living/silicon/proc/subsystem_law_manager
|
/mob/living/silicon/proc/subsystem_law_manager
|
||||||
)
|
)
|
||||||
|
|
||||||
// Subsystems
|
/mob/living/silicon/ai
|
||||||
var/obj/nano_module/alarm_monitor = null
|
alarm_monitor_type = /obj/nano_module/alarm_monitor/ai
|
||||||
var/obj/nano_module/law_manager = null
|
list/silicon_subsystems = list(
|
||||||
|
/mob/living/silicon/proc/subsystem_alarm_monitor,
|
||||||
/mob/living/silicon/robot/syndicate
|
/mob/living/silicon/proc/subsystem_atmos_control,
|
||||||
silicon_verbs_subsystems = list(
|
/mob/living/silicon/proc/subsystem_crew_monitor,
|
||||||
/mob/living/silicon/proc/subsystem_law_manager
|
/mob/living/silicon/proc/subsystem_law_manager,
|
||||||
|
/mob/living/silicon/proc/subsystem_power_monitor,
|
||||||
|
/mob/living/silicon/proc/subsystem_rcon
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/mob/living/silicon/robot/syndicate
|
||||||
|
register_alarms = 0
|
||||||
|
silicon_subsystems = list(/mob/living/silicon/proc/subsystem_law_manager)
|
||||||
|
|
||||||
|
/mob/living/silicon/proc/init_subsystems()
|
||||||
|
alarm_monitor = new alarm_monitor_type(src)
|
||||||
|
atmos_control = new(src)
|
||||||
|
crew_monitor = new(src)
|
||||||
|
law_manager = new(src)
|
||||||
|
power_monitor = new(src)
|
||||||
|
rcon = new(src)
|
||||||
|
|
||||||
|
if(!register_alarms)
|
||||||
|
return
|
||||||
|
|
||||||
|
for(var/datum/alarm_handler/AH in alarm_manager.all_handlers)
|
||||||
|
AH.register(src, /mob/living/silicon/proc/receive_alarm)
|
||||||
|
queued_alarms[AH] = list() // Makes sure alarms remain listed in consistent order
|
||||||
|
|
||||||
|
/********************
|
||||||
|
* Alarm Monitor *
|
||||||
|
********************/
|
||||||
/mob/living/silicon/proc/subsystem_alarm_monitor()
|
/mob/living/silicon/proc/subsystem_alarm_monitor()
|
||||||
set name = "Alarm Monitor"
|
set name = "Alarm Monitor"
|
||||||
set category = "Subystems"
|
set category = "Subystems"
|
||||||
|
|
||||||
alarm_monitor.ui_interact(usr, state = self_state)
|
alarm_monitor.ui_interact(usr, state = self_state)
|
||||||
|
|
||||||
|
/********************
|
||||||
|
* Atmos Control *
|
||||||
|
********************/
|
||||||
|
/mob/living/silicon/proc/subsystem_atmos_control()
|
||||||
|
set category = "Subystems"
|
||||||
|
set name = "Atmospherics Control"
|
||||||
|
|
||||||
|
atmos_control.ui_interact(usr, state = self_state)
|
||||||
|
|
||||||
|
/********************
|
||||||
|
* Crew Monitor *
|
||||||
|
********************/
|
||||||
|
/mob/living/silicon/proc/subsystem_crew_monitor()
|
||||||
|
set category = "Subystems"
|
||||||
|
set name = "Crew Monitor"
|
||||||
|
|
||||||
|
crew_monitor.ui_interact(usr, state = self_state)
|
||||||
|
|
||||||
|
/****************
|
||||||
|
* Law Manager *
|
||||||
|
****************/
|
||||||
/mob/living/silicon/proc/subsystem_law_manager()
|
/mob/living/silicon/proc/subsystem_law_manager()
|
||||||
set name = "Law Manager"
|
set name = "Law Manager"
|
||||||
set category = "Subystems"
|
set category = "Subystems"
|
||||||
|
|
||||||
law_manager.ui_interact(usr, state = self_state)
|
law_manager.ui_interact(usr, state = self_state)
|
||||||
|
|
||||||
|
/********************
|
||||||
|
* Power Monitor *
|
||||||
|
********************/
|
||||||
|
/mob/living/silicon/proc/subsystem_power_monitor()
|
||||||
|
set category = "Subystems"
|
||||||
|
set name = "Power Monitor"
|
||||||
|
|
||||||
|
power_monitor.ui_interact(usr, state = self_state)
|
||||||
|
|
||||||
|
/************
|
||||||
|
* RCON *
|
||||||
|
************/
|
||||||
|
/mob/living/silicon/proc/subsystem_rcon()
|
||||||
|
set category = "Subystems"
|
||||||
|
set name = "RCON"
|
||||||
|
|
||||||
|
rcon.ui_interact(usr, state = self_state)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/mob/living/silicon/robot/shared_nano_interaction()
|
/mob/living/silicon/robot/shared_nano_interaction()
|
||||||
|
. = STATUS_INTERACTIVE
|
||||||
if(cell.charge <= 0)
|
if(cell.charge <= 0)
|
||||||
return STATUS_CLOSE
|
return STATUS_CLOSE
|
||||||
if(lockcharge)
|
if(lockcharge)
|
||||||
|
|||||||
@@ -6,5 +6,4 @@
|
|||||||
/datum/topic_state/self_state/can_use_topic(var/src_object, var/mob/user)
|
/datum/topic_state/self_state/can_use_topic(var/src_object, var/mob/user)
|
||||||
if(src_object != user)
|
if(src_object != user)
|
||||||
return STATUS_CLOSE
|
return STATUS_CLOSE
|
||||||
|
|
||||||
return user.shared_nano_interaction()
|
return user.shared_nano_interaction()
|
||||||
|
|||||||
Reference in New Issue
Block a user