mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 04:17:33 +01:00
Cyborg Access Rework (#15157)
This commit is contained in:
committed by
GitHub
parent
2fcfa8adb7
commit
ff7c10f9cc
@@ -386,7 +386,8 @@
|
||||
return
|
||||
for(var/B in get_linked_cyborgs(src))
|
||||
var/mob/living/silicon/robot/target = B
|
||||
target.malf_AI_module = 1
|
||||
target.malf_AI_module = TRUE
|
||||
target.id_card.access = get_all_station_access() + access_equipment // Give full station access
|
||||
to_chat(user, "The robotic transformation machine can now be built. To build get a robot to activate the construction module and use the RTF tool. Be careful, it needs to have empty space to the east and west of it and only one can be built!")
|
||||
sleep(300) //Allows the AI to reset its borgs into combat units
|
||||
to_chat(user, "Bypassing crisis module safeties.")
|
||||
|
||||
@@ -551,10 +551,10 @@ var/const/access_kataphract_knight = 114
|
||||
/*******
|
||||
* Misc *
|
||||
*******/
|
||||
/var/const/access_synth = 199
|
||||
/datum/access/synthetic
|
||||
id = access_synth
|
||||
desc = "Synthetic"
|
||||
/var/const/access_equipment = 199
|
||||
/datum/access/equipment
|
||||
id = access_equipment
|
||||
desc = "Equipment"
|
||||
access_type = ACCESS_TYPE_NONE
|
||||
|
||||
/var/const/access_crate_cash = 200
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "robot_control.tmpl", "Robotic Control Console", 400, 500)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
@@ -41,7 +41,7 @@
|
||||
return
|
||||
var/mob/user = usr
|
||||
if(!src.allowed(user))
|
||||
to_chat(user, "Access Denied")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
|
||||
// Destroys the cyborg
|
||||
@@ -50,11 +50,11 @@
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
if(isAI(user) && (target.connected_ai != user))
|
||||
to_chat(user, "Access Denied. This robot is not linked to you.")
|
||||
to_chat(user, "Access denied. This robot is not linked to you.")
|
||||
return
|
||||
// Cyborgs may blow up themselves via the console
|
||||
if(isrobot(user) && user != target)
|
||||
to_chat(user, "Access Denied.")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
var/choice = input("Really detonate [target.name]?") in list ("Yes", "No")
|
||||
if(choice != "Yes")
|
||||
@@ -69,7 +69,7 @@
|
||||
return
|
||||
|
||||
if(target.emagged)
|
||||
to_chat(user, "Access Denied. Safety protocols are disabled.")
|
||||
to_chat(user, "Access denied. Safety protocols are disabled.")
|
||||
return
|
||||
|
||||
else
|
||||
@@ -82,17 +82,17 @@
|
||||
|
||||
|
||||
// Locks or unlocks the cyborg
|
||||
else if (href_list["lockdown"])
|
||||
else if(href_list["lockdown"])
|
||||
var/mob/living/silicon/robot/target = get_cyborg_by_name(href_list["lockdown"])
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
|
||||
if(isAI(user) && (target.connected_ai != user))
|
||||
to_chat(user, "Access Denied. This robot is not linked to you.")
|
||||
to_chat(user, "Access denied. This robot is not linked to you.")
|
||||
return
|
||||
|
||||
if(isrobot(user))
|
||||
to_chat(user, "Access Denied.")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
|
||||
if(target.emagged)
|
||||
@@ -109,16 +109,45 @@
|
||||
message_admins("[key_name_admin(usr)] [target.lock_charge ? "locked down" : "released"] [target.name]!")
|
||||
log_game("[key_name(usr)] [target.lock_charge ? "locked down" : "released"] [target.name]!",ckey=key_name(usr))
|
||||
to_chat(target, (target.lock_charge ? "You have been locked down!" : "Your lockdown has been lifted!"))
|
||||
|
||||
// Changes borg's access
|
||||
else if(href_list["access"])
|
||||
var/mob/living/silicon/robot/target = get_cyborg_by_name(href_list["access"])
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
if(isAI(user) && (target.connected_ai != user))
|
||||
to_chat(user, "Access denied. This robot is not linked to you.")
|
||||
return
|
||||
|
||||
if(isrobot(user) || target.emagged)
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
if(!target.module)
|
||||
to_chat(user, "\The [src]\s access protocols are immutable.")
|
||||
return
|
||||
|
||||
target.module.all_access = !target.module.all_access
|
||||
target.update_access()
|
||||
|
||||
var/log_message = "[key_name_admin(usr)] changed [target.name] access to [target.module.all_access ? "all access" : "role specific"]."
|
||||
message_admins(log_message)
|
||||
log_game(log_message, ckey = key_name(usr))
|
||||
to_chat(target, ("Your access was changed to: [target.module.all_access ? "all access" : "role specific"]."))
|
||||
|
||||
// Remotely hacks the cyborg. Only antag AIs can do this and only to linked cyborgs.
|
||||
else if (href_list["hack"])
|
||||
else if(href_list["hack"])
|
||||
var/mob/living/silicon/robot/target = get_cyborg_by_name(href_list["hack"])
|
||||
if(!target || !istype(target))
|
||||
return
|
||||
|
||||
// Antag AI checks
|
||||
if(!istype(user, /mob/living/silicon/ai) || !(user.mind.special_role && user.mind.original == user))
|
||||
to_chat(user, "Access Denied")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
|
||||
if(target.emagged)
|
||||
@@ -140,7 +169,7 @@
|
||||
// Arms the emergency self-destruct system
|
||||
else if(href_list["arm"])
|
||||
if(istype(user, /mob/living/silicon))
|
||||
to_chat(user, "Access Denied")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
|
||||
safety = !safety
|
||||
@@ -149,7 +178,7 @@
|
||||
// Destroys all accessible cyborgs if safety is disabled
|
||||
else if(href_list["nuke"])
|
||||
if(istype(user, /mob/living/silicon))
|
||||
to_chat(user, "Access Denied")
|
||||
to_chat(user, "Access denied.")
|
||||
return
|
||||
if(safety)
|
||||
to_chat(user, "Self-destruct aborted - safety active")
|
||||
@@ -189,7 +218,7 @@
|
||||
robot["name"] = R.name
|
||||
if(R.stat)
|
||||
robot["status"] = "Not Responding"
|
||||
else if (R.lock_charge) // changed this from !R.canmove to R.lock_charge because of issues with lockdown and chairs
|
||||
else if(R.lock_charge) // changed this from !R.canmove to R.lock_charge because of issues with lockdown and chairs
|
||||
robot["status"] = "Lockdown"
|
||||
else
|
||||
robot["status"] = "Operational"
|
||||
@@ -205,6 +234,7 @@
|
||||
robot["module"] = R.module ? R.module.name : "None"
|
||||
robot["master_ai"] = R.connected_ai ? R.connected_ai.name : "None"
|
||||
robot["hackable"] = 0
|
||||
robot["access"] = R.module ? R.module.all_access : FALSE
|
||||
// Antag AIs know whether linked cyborgs are hacked or not.
|
||||
if(operator && istype(operator, /mob/living/silicon/ai) && (R.connected_ai == operator) && (operator.mind.special_role && operator.mind.original == operator))
|
||||
robot["hacked"] = R.emagged ? 1 : 0
|
||||
@@ -216,7 +246,7 @@
|
||||
// Parameters: 1 (name - Cyborg we are trying to find)
|
||||
// Description: Helper proc for finding cyborg by name
|
||||
/obj/machinery/computer/robotics/proc/get_cyborg_by_name(var/name)
|
||||
if (!name)
|
||||
if(!name)
|
||||
return
|
||||
for(var/mob/living/silicon/robot/R in mob_list)
|
||||
if(R.name == name)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/global/list/default_internal_channels = list(
|
||||
num2text(PUB_FREQ) = list(),
|
||||
num2text(ENT_FREQ) = list(),
|
||||
num2text(AI_FREQ) = list(access_synth),
|
||||
num2text(AI_FREQ) = list(access_equipment),
|
||||
num2text(ERT_FREQ) = list(access_cent_specops),
|
||||
num2text(COMM_FREQ)= list(access_heads),
|
||||
num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics),
|
||||
|
||||
@@ -425,16 +425,27 @@ var/const/NO_EMAG_ACT = -50
|
||||
access = list(access_merchant)
|
||||
|
||||
/obj/item/card/id/synthetic
|
||||
name = "\improper Synthetic ID"
|
||||
desc = "Access module for NanoTrasen Synthetics"
|
||||
name = "\improper Equipment ID"
|
||||
desc = "Access module for SCC equipment."
|
||||
icon_state = "id-robot"
|
||||
item_state = "tdgreen"
|
||||
assignment = "Synthetic"
|
||||
assignment = "Equipment"
|
||||
|
||||
/obj/item/card/id/synthetic/New()
|
||||
access = get_all_station_access() + access_synth
|
||||
access = get_all_station_access() + access_equipment
|
||||
..()
|
||||
|
||||
/obj/item/card/id/synthetic/cyborg
|
||||
name = "\improper Equipment ID"
|
||||
desc = "Access module for SCC equipment."
|
||||
icon_state = "id-robot"
|
||||
item_state = "tdgreen"
|
||||
assignment = "Equipment"
|
||||
|
||||
/obj/item/card/id/synthetic/cyborg/New()
|
||||
..()
|
||||
access = list(access_equipment, access_ai_upload, access_external_airlocks) // barebones cyborg access. Job special added in different place
|
||||
|
||||
/obj/item/card/id/minedrone
|
||||
name = "\improper Minedrone ID"
|
||||
desc = "Access module for NanoTrasen Minedrones"
|
||||
|
||||
@@ -292,7 +292,7 @@ var/list/ai_verbs_default = list(
|
||||
id_card.registered_name = pickedName
|
||||
id_card.assignment = "AI"
|
||||
id_card.access = get_all_station_access()
|
||||
id_card.access += access_synth
|
||||
id_card.access += access_equipment
|
||||
id_card.update_name()
|
||||
|
||||
if(client)
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
// Modules and active items
|
||||
var/mod_type = "Default"
|
||||
var/spawn_module // Which module does this robot use when it spawns in?
|
||||
var/selecting_module = 0 //whether the borg is in process of selecting its module or not.
|
||||
var/selecting_module = FALSE //whether the borg is in process of selecting its module or not.
|
||||
var/obj/item/robot_module/module
|
||||
var/obj/item/module_active
|
||||
var/obj/item/module_state_1
|
||||
@@ -108,6 +108,8 @@
|
||||
var/key_type
|
||||
var/scrambled_codes = FALSE // When true, doesn't show up on robotics console.
|
||||
|
||||
id_card_type = /obj/item/card/id/synthetic/cyborg
|
||||
|
||||
// Alerts
|
||||
var/view_alerts = FALSE
|
||||
|
||||
@@ -118,7 +120,7 @@
|
||||
var/killswitch_time = 60
|
||||
|
||||
// Weapon lock
|
||||
var/weapon_lock = 0
|
||||
var/weapon_lock = FALSE
|
||||
var/weapon_lock_time = 120
|
||||
|
||||
// Verbs
|
||||
@@ -201,6 +203,24 @@
|
||||
hud_list[IMPTRACK_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank")
|
||||
hud_list[SPECIALROLE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank")
|
||||
|
||||
/mob/living/silicon/robot/proc/update_access()
|
||||
if(emagged || malf_AI_module || crisis)
|
||||
id_card.access = get_all_station_access() + access_equipment // Give full station access
|
||||
return
|
||||
|
||||
id_card = new id_card_type()
|
||||
|
||||
if(module)
|
||||
if(module.all_access)
|
||||
id_card.access = get_all_station_access() + access_equipment // Give full station access
|
||||
return
|
||||
|
||||
for(var/job_type in module.specialized_access_types)
|
||||
var/datum/job/job = new job_type()
|
||||
id_card.access |= job.access
|
||||
|
||||
to_chat(src, SPAN_NOTICE("Access set to the department the role belongs to."))
|
||||
|
||||
/mob/living/silicon/robot/proc/recalculate_synth_capacities()
|
||||
if(!module?.synths)
|
||||
return
|
||||
@@ -212,6 +232,8 @@
|
||||
for(var/obj/item/stack/SM in module.modules)
|
||||
SM.update_icon()
|
||||
|
||||
update_access()
|
||||
|
||||
/mob/living/silicon/robot/proc/init()
|
||||
ai_camera = new /obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
laws = new law_preset()
|
||||
@@ -399,7 +421,7 @@
|
||||
return null
|
||||
|
||||
var/dat = "<HEAD><TITLE>[src.name] Self-Diagnosis Report</TITLE></HEAD><BODY>\n"
|
||||
for (var/V in components)
|
||||
for(var/V in components)
|
||||
var/datum/robot_component/C = components[V]
|
||||
dat += "<b>[capitalize_first_letters(C.name)]</b><br><table><tr><td>Brute Damage:</td><td>[C.brute_damage]</td></tr><tr><td>Electronics Damage:</td><td>[C.electronics_damage]</td></tr><tr><td>Powered:</td><td>[(!C.idle_usage || C.is_powered()) ? "Yes" : "No"]</td></tr><tr><td>Toggled:</td><td>[ C.toggled ? "Yes" : "No"]</td></table>"
|
||||
|
||||
@@ -500,7 +522,7 @@
|
||||
set src in usr
|
||||
|
||||
mopping = !mopping
|
||||
if (mopping)
|
||||
if(mopping)
|
||||
usr.visible_message(SPAN_NOTICE("[usr]'s integrated mopping system rumbles to life."), SPAN_NOTICE("You enable your integrated mopping system."))
|
||||
playsound(usr, 'sound/machines/hydraulic_long.ogg', 100, 1)
|
||||
else
|
||||
@@ -532,11 +554,18 @@
|
||||
else
|
||||
stat(null, text("No Cell Inserted!"))
|
||||
|
||||
/mob/living/silicon/robot/proc/show_access()
|
||||
if(!module)
|
||||
stat(null, text("Access type: assistant level access"))
|
||||
else
|
||||
stat(null, text("Access type: [module.all_access ? "all access" : "role specific"]"))
|
||||
|
||||
// update the status screen display
|
||||
/mob/living/silicon/robot/Stat()
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
show_cell_power()
|
||||
show_access()
|
||||
show_jetpack_pressure()
|
||||
stat(null, text("Lights: [lights_on ? "ON" : "OFF"]"))
|
||||
if(module)
|
||||
@@ -685,7 +714,7 @@
|
||||
to_chat(user, SPAN_NOTICE("You open \the [src]'s maintenance hatch."))
|
||||
opened = TRUE
|
||||
handle_panel_overlay()
|
||||
else if (istype(W, /obj/item/stock_parts/matter_bin) && opened) // Installing/swapping a matter bin
|
||||
else if(istype(W, /obj/item/stock_parts/matter_bin) && opened) // Installing/swapping a matter bin
|
||||
if(storage)
|
||||
to_chat(user, SPAN_NOTICE("You replace \the [storage] with \the [W]"))
|
||||
storage.forceMove(get_turf(src))
|
||||
@@ -719,7 +748,7 @@
|
||||
C.brute_damage = 0
|
||||
C.electronics_damage = 0
|
||||
handle_panel_overlay()
|
||||
else if (W.iswirecutter() || W.ismultitool())
|
||||
else if(W.iswirecutter() || W.ismultitool())
|
||||
if(wires_exposed)
|
||||
wires.Interact(user)
|
||||
else
|
||||
@@ -855,14 +884,14 @@
|
||||
<B>Installed Modules</B><BR><BR>"}
|
||||
|
||||
|
||||
for (var/obj in module.modules)
|
||||
if (!obj)
|
||||
for(var/obj in module.modules)
|
||||
if(!obj)
|
||||
dat += text("<B>Resource depleted</B><BR>")
|
||||
else if(activated(obj))
|
||||
dat += text("[obj]: <B>Activated</B><BR>")
|
||||
else
|
||||
dat += text("[obj]: <A HREF=?src=\ref[src];act=\ref[obj]>Activate</A><BR>")
|
||||
if (emagged)
|
||||
if(emagged)
|
||||
if(activated(module.emag))
|
||||
dat += text("[module.emag]: <B>Activated</B><BR>")
|
||||
else
|
||||
@@ -1215,6 +1244,7 @@
|
||||
clear_supplied_laws()
|
||||
clear_inherent_laws()
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
id_card.access = get_all_station_access() + access_equipment // Give full station access
|
||||
var/time = time2text(world.realtime, "hh:mm:ss")
|
||||
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
|
||||
set_zeroth_law("Only [user.real_name] and people they designate as being such are operatives.")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/global/list/robot_modules = list(
|
||||
"Service" = /obj/item/robot_module/clerical/butler,
|
||||
"Clerical" = /obj/item/robot_module/clerical/general,
|
||||
"Service" = /obj/item/robot_module/service/butler,
|
||||
"Clerical" = /obj/item/robot_module/service/clerical,
|
||||
"Research" = /obj/item/robot_module/research,
|
||||
"Mining" = /obj/item/robot_module/miner,
|
||||
"Rescue" = /obj/item/robot_module/medical/rescue,
|
||||
@@ -20,21 +20,21 @@ var/global/list/robot_modules = list(
|
||||
var/channels = list()
|
||||
var/networks = list()
|
||||
var/languages = list( // Any listed language will be understandable. Any set to TRUE will be speakable
|
||||
LANGUAGE_SOL_COMMON = TRUE,
|
||||
LANGUAGE_ELYRAN_STANDARD = TRUE,
|
||||
LANGUAGE_TRADEBAND = TRUE,
|
||||
LANGUAGE_UNATHI = FALSE,
|
||||
LANGUAGE_SIIK_MAAS = FALSE,
|
||||
LANGUAGE_SKRELLIAN = FALSE,
|
||||
LANGUAGE_GUTTER = TRUE,
|
||||
LANGUAGE_VAURCESE = FALSE,
|
||||
LANGUAGE_ROOTSONG = FALSE,
|
||||
LANGUAGE_SIGN = FALSE,
|
||||
LANGUAGE_SIGN_TAJARA = FALSE,
|
||||
LANGUAGE_SIIK_TAJR = FALSE,
|
||||
LANGUAGE_AZAZIBA = FALSE,
|
||||
LANGUAGE_DELVAHII = FALSE,
|
||||
LANGUAGE_YA_SSA = FALSE
|
||||
LANGUAGE_SOL_COMMON = TRUE,
|
||||
LANGUAGE_ELYRAN_STANDARD = TRUE,
|
||||
LANGUAGE_TRADEBAND = TRUE,
|
||||
LANGUAGE_UNATHI = FALSE,
|
||||
LANGUAGE_SIIK_MAAS = FALSE,
|
||||
LANGUAGE_SKRELLIAN = FALSE,
|
||||
LANGUAGE_GUTTER = TRUE,
|
||||
LANGUAGE_VAURCESE = FALSE,
|
||||
LANGUAGE_ROOTSONG = FALSE,
|
||||
LANGUAGE_SIGN = FALSE,
|
||||
LANGUAGE_SIGN_TAJARA = FALSE,
|
||||
LANGUAGE_SIIK_TAJR = FALSE,
|
||||
LANGUAGE_AZAZIBA = FALSE,
|
||||
LANGUAGE_DELVAHII = FALSE,
|
||||
LANGUAGE_YA_SSA = FALSE
|
||||
)
|
||||
var/sprites = list()
|
||||
var/can_be_pushed = TRUE
|
||||
@@ -50,6 +50,8 @@ var/global/list/robot_modules = list(
|
||||
// Bookkeeping
|
||||
var/list/original_languages = list()
|
||||
var/list/added_networks = list()
|
||||
var/list/specialized_access_types = list(/datum/job/assistant) // an job we take access from. Used to mirror job's IDs for specific borg modules.
|
||||
var/all_access = FALSE
|
||||
|
||||
/obj/item/robot_module/Initialize(mapload, var/mob/living/silicon/robot/R)
|
||||
. = ..()
|
||||
@@ -209,6 +211,7 @@ var/global/list/robot_modules = list(
|
||||
"Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_medi", ROBOT_PANEL = "coolermaster_medi", ROBOT_EYES = "coolermaster"),
|
||||
"Phage" = list(ROBOT_CHASSIS = "phage_medi", ROBOT_PANEL = "phage_medi", ROBOT_EYES = "phage")
|
||||
)
|
||||
specialized_access_types = list(/datum/job/doctor, /datum/job/surgeon)
|
||||
|
||||
/obj/item/robot_module/medical/general/Initialize()
|
||||
. = ..()
|
||||
@@ -270,6 +273,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
/obj/item/robot_module/medical/rescue
|
||||
name = "rescue robot module"
|
||||
specialized_access_types = list(/datum/job/med_tech)
|
||||
// If anyone wants to make custom rescue robot sprites, be my guest.
|
||||
|
||||
/obj/item/robot_module/medical/rescue/Initialize()
|
||||
@@ -353,6 +357,7 @@ var/global/list/robot_modules = list(
|
||||
"Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_engi", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"),
|
||||
"Phage" = list(ROBOT_CHASSIS = "phage_engi", ROBOT_PANEL = "phage", ROBOT_EYES = "phage")
|
||||
)
|
||||
specialized_access_types = list(/datum/job/engineer, /datum/job/atmos)
|
||||
|
||||
/obj/item/robot_module/engineering/construction
|
||||
name = "construction robot module"
|
||||
@@ -551,6 +556,7 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
|
||||
var/mopping = FALSE
|
||||
specialized_access_types = list(/datum/job/janitor)
|
||||
|
||||
/obj/item/robot_module/janitor/Initialize()
|
||||
. = ..()
|
||||
@@ -578,7 +584,7 @@ var/global/list/robot_modules = list(
|
||||
var/obj/item/reagent_containers/spray/S = emag
|
||||
S.reagents.add_reagent(/decl/reagent/lube, 2 * amount)
|
||||
|
||||
/obj/item/robot_module/clerical
|
||||
/obj/item/robot_module/service
|
||||
name = "service robot module"
|
||||
channels = list(CHANNEL_SERVICE = TRUE)
|
||||
networks = list(NETWORK_SERVICE)
|
||||
@@ -621,7 +627,9 @@ var/global/list/robot_modules = list(
|
||||
"Phage" = list(ROBOT_CHASSIS = "phage_serv", ROBOT_PANEL = "phage", ROBOT_EYES = "phage")
|
||||
)
|
||||
|
||||
/obj/item/robot_module/clerical/butler/Initialize()
|
||||
specialized_access_types = list(/datum/job/bartender, /datum/job/chef, /datum/job/hydro)
|
||||
|
||||
/obj/item/robot_module/service/butler/Initialize()
|
||||
. = ..()
|
||||
modules += new /obj/item/gripper/service(src)
|
||||
modules += new /obj/item/reagent_containers/glass/bucket(src)
|
||||
@@ -667,12 +675,13 @@ var/global/list/robot_modules = list(
|
||||
RG.add_reagent(/decl/reagent/polysomnine/beer2, 50)
|
||||
emag.name = "Mickey Finn's Special Brew"
|
||||
|
||||
/obj/item/robot_module/clerical/general
|
||||
/obj/item/robot_module/service/clerical
|
||||
name = "clerical robot module"
|
||||
channels = list(CHANNEL_SUPPLY = TRUE, CHANNEL_COMMAND = TRUE)
|
||||
networks = list(NETWORK_MINE)
|
||||
specialized_access_types = list(/datum/job/janitor) // Janitor is a nice general access without specifics
|
||||
|
||||
/obj/item/robot_module/clerical/general/Initialize()
|
||||
/obj/item/robot_module/service/clerical/Initialize()
|
||||
. = ..()
|
||||
modules += new /obj/item/pen/robopen(src)
|
||||
modules += new /obj/item/form_printer(src)
|
||||
@@ -718,6 +727,7 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
|
||||
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
|
||||
specialized_access_types = list(/datum/job/mining)
|
||||
|
||||
/obj/item/robot_module/miner/Initialize()
|
||||
. = ..()
|
||||
@@ -783,6 +793,7 @@ var/global/list/robot_modules = list(
|
||||
"Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_sci", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"),
|
||||
"Phage" = list(ROBOT_CHASSIS = "phage_sci", ROBOT_PANEL = "phage", ROBOT_EYES = "phage")
|
||||
)
|
||||
specialized_access_types = list(/datum/job/scientist, /datum/job/xenobiologist, /datum/job/xenobotanist)
|
||||
|
||||
/obj/item/robot_module/research/Initialize()
|
||||
. = ..()
|
||||
@@ -876,7 +887,7 @@ var/global/list/robot_modules = list(
|
||||
"Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_syndi", ROBOT_PANEL = "coolermaster_syndi", ROBOT_EYES = "coolermaster"),
|
||||
"Phage" = list(ROBOT_CHASSIS = "phage_syndi", ROBOT_PANEL = "phage_syndi", ROBOT_EYES = "phage")
|
||||
)
|
||||
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/combat/Initialize(mapload, mob/living/silicon/robot/R)
|
||||
. = ..()
|
||||
@@ -914,6 +925,7 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
can_be_pushed = FALSE
|
||||
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/military/Initialize()
|
||||
. = ..()
|
||||
@@ -932,6 +944,7 @@ var/global/list/robot_modules = list(
|
||||
name = "drone module"
|
||||
no_slip = TRUE
|
||||
networks = list(NETWORK_ENGINEERING)
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/drone/Initialize(mapload, mob/living/silicon/robot/robot)
|
||||
. = ..()
|
||||
@@ -1031,6 +1044,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/robot_module/drone/construction
|
||||
name = "construction drone module"
|
||||
channels = list(CHANNEL_ENGINEERING = TRUE)
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/drone/construction/Initialize()
|
||||
. = ..()
|
||||
@@ -1045,6 +1059,7 @@ var/global/list/robot_modules = list(
|
||||
no_slip = TRUE
|
||||
channels = list(CHANNEL_SUPPLY = TRUE)
|
||||
networks = list(NETWORK_MINE)
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/mining_drone/Initialize(mapload, mob/living/silicon/robot/R)
|
||||
. = ..()
|
||||
@@ -1137,6 +1152,7 @@ var/global/list/robot_modules = list(
|
||||
)
|
||||
sprites = list("Roller" = list(ROBOT_CHASSIS = "droid-combat", ROBOT_PANEL = "heavy_syndi", ROBOT_EYES = "droid-combat")) //TMP // temp my left nut // temp my right nut
|
||||
can_be_pushed = FALSE
|
||||
all_access = TRUE
|
||||
|
||||
/obj/item/robot_module/bluespace/Initialize(mapload, mob/living/silicon/robot/R)
|
||||
. = ..()
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
# admin
|
||||
# backend
|
||||
# security
|
||||
# refactor
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: PoZe
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Reworked cyborg's access to be role specific and reflect their crewmate's access for the same role/department."
|
||||
- rscadd: "Added ability to change cyborg's access in Robotics Control Console from role specific to all access and vice-versa."
|
||||
- rscadd: "Added displaying of what access type cyborg has in status tab."
|
||||
@@ -70,14 +70,39 @@
|
||||
<b> N/A %</b>
|
||||
{{/if}}
|
||||
<h3>Actions</h3>
|
||||
{{if value.status == "Operational"}}
|
||||
{{:helper.link('Lockdown', 'locked', {'lockdown' : value.name})}}
|
||||
{{else}}
|
||||
{{:helper.link('Unlock', 'unlocked', {'lockdown' : value.name})}}
|
||||
{{/if}}
|
||||
<span class="itemLabel">
|
||||
Access:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{if value.access == 0}}
|
||||
{{:helper.link('Role Specific Access', 'locked', {'access' : value.name})}}
|
||||
{{else}}
|
||||
{{:helper.link('All Access', 'unlocked', {'access' : value.name})}}
|
||||
{{/if}}
|
||||
</span>
|
||||
<span class="itemLabel">
|
||||
Lockdown Status:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{if value.status == "Operational"}}
|
||||
{{:helper.link('Lockdown', 'locked', {'lockdown' : value.name})}}
|
||||
{{else}}
|
||||
{{:helper.link('Unlock', 'unlocked', {'lockdown' : value.name})}}
|
||||
{{/if}}
|
||||
</span>
|
||||
<span class="itemLabel">
|
||||
Self Destruct:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{:helper.link('Self-Destruct', 'radiation', {'detonate' : value.name}, null, 'redButton')}}
|
||||
</span>
|
||||
{{if value.hackable}}
|
||||
{{:helper.link('Hack', 'calculator', {'hack' : value.name}, null, 'redButton')}}
|
||||
<span class="itemLabel">
|
||||
Hacking Action:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{:helper.link('Hack', 'calculator', {'hack' : value.name}, null, 'redButton')}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/for}}
|
||||
Reference in New Issue
Block a user