mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-29 16:10:02 +01:00
Various pAI Fixes (#18222)
* Change various PAI abilities from proc to verb, init their verbs on creation
* Provide exit button on notFound and missingExport page
* Prevent programs with no ID from populating. Will still show in services. Things like pAI Flashlight
* allows pAIs to use PDAs they are inserted into
* prevent RTE for admin created pAIs
* adds error message when trying to download incompatible software
* fixes not being able to open pAI computer UIs if the client is closed with the UIs open
* changelog
* test fix?
* Revert "Provide exit button on notFound and missingExport page"
This reverts commit 77168da050.
* changelog change
* to_chat
* don't code 30s after waking up
This commit is contained in:
@@ -15,13 +15,13 @@
|
||||
|
||||
/mob/living/silicon/ai
|
||||
silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/silicon_mimic_accent
|
||||
/mob/living/silicon/verb/silicon_mimic_accent
|
||||
)
|
||||
|
||||
/mob/living/silicon/robot/combat
|
||||
register_alarms = 0
|
||||
silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/silicon_mimic_accent
|
||||
/mob/living/silicon/verb/silicon_mimic_accent
|
||||
)
|
||||
|
||||
/mob/living/silicon/proc/init_subsystems()
|
||||
@@ -38,13 +38,13 @@
|
||||
/****************
|
||||
* Computer *
|
||||
*****************/
|
||||
/mob/living/silicon/proc/computer_interact()
|
||||
/mob/living/silicon/verb/computer_interact()
|
||||
set name = "Open Computer Interface"
|
||||
set category = "Subsystems"
|
||||
|
||||
computer.attack_self(src)
|
||||
|
||||
/mob/living/silicon/pai/proc/personal_computer_interact()
|
||||
/mob/living/silicon/pai/verb/personal_computer_interact()
|
||||
set name = "Access Local Computer"
|
||||
set category = "Subsystems"
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.key = pai_key
|
||||
card.setPersonality(pai)
|
||||
if(pai.mind)
|
||||
pai.mind.current.client.init_verbs()
|
||||
|
||||
if(name)
|
||||
pai.SetName(name)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
/mob/living/silicon/pai/Logout()
|
||||
SStgui.close_uis(src.computer)
|
||||
if(!isnull(src.parent_computer))
|
||||
SStgui.close_uis(src.parent_computer)
|
||||
..()
|
||||
@@ -183,12 +183,6 @@
|
||||
add_language(LANGUAGE_SIGN, 0)
|
||||
set_custom_sprite()
|
||||
|
||||
add_verb(src, /mob/living/silicon/pai/proc/choose_chassis)
|
||||
add_verb(src, /mob/living/silicon/pai/proc/choose_verbs)
|
||||
add_verb(src, /mob/living/silicon/proc/computer_interact)
|
||||
add_verb(src, /mob/living/silicon/pai/proc/personal_computer_interact)
|
||||
add_verb(src, /mob/living/silicon/proc/silicon_mimic_accent)
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -366,7 +360,7 @@
|
||||
|
||||
close_up()
|
||||
|
||||
/mob/living/silicon/pai/proc/choose_chassis()
|
||||
/mob/living/silicon/pai/verb/choose_chassis()
|
||||
set category = "pAI Commands"
|
||||
set name = "Choose Chassis"
|
||||
|
||||
@@ -381,7 +375,7 @@
|
||||
holder_type = pai_holder_types[choice]
|
||||
chassis = icon_state
|
||||
|
||||
remove_verb(src, /mob/living/silicon/pai/proc/choose_chassis)
|
||||
remove_verb(src, /mob/living/silicon/pai/verb/choose_chassis)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
|
||||
/mob/living/silicon/pai/verb/get_onmob_location()
|
||||
@@ -395,7 +389,7 @@
|
||||
|
||||
card.report_onmob_location(0, card.get_equip_slot(), src)
|
||||
|
||||
/mob/living/silicon/pai/proc/choose_verbs()
|
||||
/mob/living/silicon/pai/verb/choose_verbs()
|
||||
set category = "pAI Commands"
|
||||
set name = "Choose Speech Verbs"
|
||||
|
||||
@@ -407,7 +401,7 @@
|
||||
speak_exclamation = sayverbs[(sayverbs.len>1 ? 2 : sayverbs.len)]
|
||||
speak_query = sayverbs[(sayverbs.len>2 ? 3 : sayverbs.len)]
|
||||
|
||||
remove_verb(src, /mob/living/silicon/pai/proc/choose_verbs)
|
||||
remove_verb(src, /mob/living/silicon/pai/verb/choose_verbs)
|
||||
|
||||
/mob/living/silicon/pai/lay_down()
|
||||
set name = "Rest"
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
// Internal Computer
|
||||
var/obj/item/modular_computer/silicon/computer
|
||||
var/list/silicon_subsystems = list(
|
||||
/mob/living/silicon/proc/computer_interact,
|
||||
/mob/living/silicon/proc/silicon_mimic_accent
|
||||
/mob/living/silicon/verb/computer_interact,
|
||||
/mob/living/silicon/verb/silicon_mimic_accent
|
||||
)
|
||||
|
||||
// Utility
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/silicon/proc/silicon_mimic_accent()
|
||||
/mob/living/silicon/verb/silicon_mimic_accent()
|
||||
set name = "Mimic Accent"
|
||||
set category = "Subsystems"
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
for(var/datum/computer_file/program/P in hard_drive.stored_files)
|
||||
if(P.program_hidden())
|
||||
continue
|
||||
if(!istype(P, /datum/computer_file/program/scanner))
|
||||
if(!istype(P, /datum/computer_file/program/scanner) && !isnull(P.tgui_id))
|
||||
data["programs"] += list(list(
|
||||
"filename" = P.filename,
|
||||
"desc" = P.filedesc,
|
||||
@@ -180,8 +180,11 @@
|
||||
register_account()
|
||||
. = TRUE
|
||||
if(action == "PC_toggleservice")
|
||||
toggle_service(params["service_to_toggle"], usr)
|
||||
. = TRUE
|
||||
if(params["service_to_toggle"] == "pai_access_lock" && istype(usr, /mob/living/silicon/pai))
|
||||
to_chat(usr, SPAN_WARNING("Access denied."))
|
||||
else
|
||||
toggle_service(params["service_to_toggle"], usr)
|
||||
. = TRUE
|
||||
|
||||
playsound(src, click_sound)
|
||||
update_icon()
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
return TRUE
|
||||
|
||||
if(!PRG.is_supported_by_hardware(computer.hardware_flag))
|
||||
to_chat(user, SPAN_WARNING("Hardware Error - Incompatible software."))
|
||||
return FALSE
|
||||
|
||||
if(PRG.available_on_ntnet)
|
||||
|
||||
@@ -47,8 +47,15 @@ var/global/datum/ui_state/default/default_state = new
|
||||
return UI_CLOSE
|
||||
|
||||
/mob/living/silicon/pai/default_can_use_topic(src_object)
|
||||
// pAIs can only use themselves and the owner's radio.
|
||||
// pAIs can use themselves, the owner's radio, and any computer they're inserted into. Limited by synced ID for certain programs.
|
||||
if((src_object == src || src_object == radio) && !stat)
|
||||
return UI_INTERACTIVE
|
||||
else
|
||||
return min(..(), UI_UPDATE)
|
||||
else if(src_object == src.parent_computer)
|
||||
if(istype(src_object, /obj/item/modular_computer))
|
||||
var/obj/item/modular_computer/PDA = src_object
|
||||
if(PDA.pAI_lock == FALSE)
|
||||
return UI_INTERACTIVE
|
||||
else
|
||||
to_chat(src, SPAN_WARNING("Access denied."))
|
||||
|
||||
return min(..(), UI_UPDATE)
|
||||
|
||||
Reference in New Issue
Block a user