From 3f2f7a1a37e468e83d05a3bcc677afce161e2efe Mon Sep 17 00:00:00 2001 From: Casey Date: Wed, 22 Jun 2022 22:33:02 -0400 Subject: [PATCH 1/2] More pAI interface! --- code/_onclick/hud/screen_objects_vr.dm | 37 --- code/modules/mob/living/silicon/pai/pai.dm | 3 +- .../modules/mob/living/silicon/pai/pai_hud.dm | 266 ++++++++++++++---- code/modules/mob/living/silicon/pai/pai_vr.dm | 187 +++++++++++- .../living/silicon/pai/software_modules.dm | 42 ++- icons/mob/pai_hud.dmi | Bin 4110 -> 5729 bytes 6 files changed, 408 insertions(+), 127 deletions(-) diff --git a/code/_onclick/hud/screen_objects_vr.dm b/code/_onclick/hud/screen_objects_vr.dm index 526a316618..65b6df5c3b 100644 --- a/code/_onclick/hud/screen_objects_vr.dm +++ b/code/_onclick/hud/screen_objects_vr.dm @@ -66,43 +66,6 @@ if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert. if(H.revive_ready == REVIVING_DONE) // Sanity check. H.hatch() // Hatch. - //pAI buttons!!! - if("fold/unfold") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - if(p.loc == p.card) - p.fold_out() - else - p.fold_up() - if("choose chassis") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.choose_chassis() - - if("software interface") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.paiInterface() - - if("radio configuration") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.radio.tgui_interact(p) - - if("pda") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.pda.cmd_pda_open_ui() - - if("communicator") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.communicator.activate() - - if("known languages") - if(ispAI(usr)) - var/mob/living/silicon/pai/p = usr - p.check_languages() else return 0 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index f3177ebc97..9e992f7414 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -84,8 +84,7 @@ var/obj/item/device/pda/ai/pai/pda = null - var/secHUD = 0 // Toggles whether the Security HUD is active or not - var/medHUD = 0 // Toggles whether the Medical HUD is active or not + var/paiHUD = 0 // Toggles whether the AR HUD is active or not var/medical_cannotfind = 0 var/datum/data/record/medicalActive1 // Datacore record declarations for record software diff --git a/code/modules/mob/living/silicon/pai/pai_hud.dm b/code/modules/mob/living/silicon/pai/pai_hud.dm index ce1fe4384b..aede47e7e1 100644 --- a/code/modules/mob/living/silicon/pai/pai_hud.dm +++ b/code/modules/mob/living/silicon/pai/pai_hud.dm @@ -1,6 +1,74 @@ /mob/living/silicon/pai var/obj/screen/pai/pai_fold_display = null +/obj/screen/pai + icon = 'icons/mob/pai_hud.dmi' + var/base_state + +/obj/screen/pai/Click_vr(location, control, params) + if(!usr) return 1 + if(!ispAI(usr)) return 1 + var/mob/living/silicon/pai/p = usr + switch(name) + if("fold/unfold") + if(p.loc == p.card) + p.fold_out() + else + p.fold_up() + if("choose chassis") + p.choose_chassis() + + if("software interface") + p.paiInterface() + + if("radio configuration") + p.radio.tgui_interact(p) + + if("pda") + p.pda.cmd_pda_open_ui() + + if("communicator") + p.communicator.activate() + + if("known languages") + p.check_languages() + + if("software toggle") + p.refresh_software_status() + if(p.hud_used.inventory_shown) + p.hud_used.inventory_shown = 0 + p.client.screen -= p.hud_used.other + else + p.hud_used.inventory_shown = 1 + p.client.screen += p.hud_used.other + + if("directives") + p.directives() + + if("crew manifest") + p.crew_manifest() + + if("universal translator") + p.translator() + + if("medical records") + p.med_records() + + if("security records") + p.sec_records() + + if("remote signaler") + p.remote_signal() + + if("atmosphere sensor") + p.atmos_sensor() + + if("door jack") + p.door_jack() + + if("ar hud") + p.ar_hud() + /obj/screen/pai/pai_fold_display name = "fold/unfold" icon = 'icons/mob/pai_hud.dmi' @@ -26,7 +94,7 @@ HUD.hotkeybuttons = hotkeybuttons HUD.hud_elements = hud_elements - var/obj/screen/using + var/obj/screen/pai/using //Small intent quarters @@ -91,66 +159,6 @@ using.alpha = ui_alpha HUD.hotkeybuttons += using - //Choose chassis button - using = new /obj/screen() - using.name = "choose chassis" - using.icon = ui_style - using.icon_state = "choose_chassis" - using.screen_loc = ui_movi - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - - //Software interface button - using = new /obj/screen() - using.name = "software interface" - using.icon = ui_style - using.icon_state = "software_interface" - using.screen_loc = ui_acti - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - - //Radio configuration button - using = new /obj/screen() - using.name = "radio configuration" - using.icon = ui_style - using.icon_state = "radio_configuration" - using.screen_loc = ui_acti - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - - //PDA button - using = new /obj/screen() - using.name = "pda" - using.icon = ui_style - using.icon_state = "pda" - using.screen_loc = ui_pai_comms - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - - //Communicator button - using = new /obj/screen() - using.name = "communicator" - using.icon = ui_style - using.icon_state = "communicator" - using.screen_loc = ui_pai_comms - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - - //Language button - using = new /obj/screen() - using.name = "known languages" - using.icon = ui_style - using.icon_state = "language" - using.screen_loc = ui_acti - using.color = ui_color - using.alpha = ui_alpha - hud_elements |= using - //Pull button pullin = new /obj/screen() pullin.icon = ui_style @@ -183,6 +191,139 @@ pai_fold_display.icon_state = "folded" HUD.hud_elements |= pai_fold_display + //Choose chassis button + using = new /obj/screen/pai() + using.name = "choose chassis" + using.icon_state = "choose_chassis" + using.screen_loc = ui_movi + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + //Software interface button + using = new /obj/screen/pai() + using.name = "software interface" + using.icon_state = "software_interface" + using.screen_loc = ui_acti + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + //Radio configuration button + using = new /obj/screen/pai() + using.name = "radio configuration" + using.icon_state = "radio_configuration" + using.screen_loc = ui_acti + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + //PDA button + using = new /obj/screen/pai() + using.name = "pda" + using.icon_state = "pda" + using.screen_loc = ui_pai_comms + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + //Communicator button + using = new /obj/screen/pai() + using.name = "communicator" + using.icon_state = "communicator" + using.screen_loc = ui_pai_comms + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + //Language button + using = new /obj/screen/pai() + using.name = "known languages" + using.icon_state = "language" + using.screen_loc = ui_acti + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + using = new /obj/screen/pai() + using.name = "software toggle" + using.icon_state = "software" + using.screen_loc = ui_inventory + using.color = ui_color + using.alpha = ui_alpha + hud_elements |= using + + using = new /obj/screen/pai() + using.name = "directives" + using.icon_state = "directives" + using.screen_loc = "WEST:6,SOUTH:18" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "crew manifest" + using.icon_state = "manifest" + using.screen_loc = "WEST:6,SOUTH+1:2" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "medical records" + using.base_state = "med_records" + using.screen_loc = "WEST:6,SOUTH+1:18" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "security records" + using.base_state = "sec_records" + using.screen_loc = "WEST:6,SOUTH+2:2" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "atmosphere sensor" + using.base_state = "atmos_sensor" + using.screen_loc = "WEST:6,SOUTH+2:18" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "remote signaler" + using.base_state = "signaller" + using.screen_loc = "WEST:6,SOUTH+3:2" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "universal translator" + using.base_state = "translator" + using.screen_loc = "WEST:6,SOUTH+3:18" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "door jack" + using.base_state = "door_jack" + using.screen_loc = "WEST:6,SOUTH+4:2" + using.color = ui_color + using.alpha = ui_alpha + other |= using + + using = new /obj/screen/pai() + using.name = "ar hud" + using.base_state = "ar_hud" + using.screen_loc = "WEST:6,SOUTH+4:18" + using.color = ui_color + using.alpha = ui_alpha + other |= using if(client) client.screen = list() @@ -190,6 +331,9 @@ client.screen += adding + hotkeybuttons client.screen += client.void + HUD.inventory_shown = 0 + + /mob/living/silicon/pai/handle_regular_hud_updates() . = ..() if(healths) diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm index 62deaa125f..12dd50682d 100644 --- a/code/modules/mob/living/silicon/pai/pai_vr.dm +++ b/code/modules/mob/living/silicon/pai/pai_vr.dm @@ -42,6 +42,14 @@ "car", "typeone" ) + //These vars keep track of whether you have the related software, used for easily updating the UI + var/soft_ut = FALSE //universal translator + var/soft_mr = FALSE //medical records + var/soft_sr = FALSE //security records + var/soft_dj = FALSE //door jack + var/soft_as = FALSE //atmosphere sensor + var/soft_si = FALSE //signaler + var/soft_ar = FALSE //ar hud /mob/living/silicon/pai/Initialize() . = ..() @@ -362,4 +370,181 @@ if(!new_gender_identity) return 0 gender = new_gender_identity - return 1 \ No newline at end of file +<<<<<<< HEAD + return 1 +======= + return 1 + +/mob/living/silicon/pai/verb/pai_hide() + set name = "Hide" + set desc = "Allows to hide beneath tables or certain items. Toggled on or off." + set category = "Abilities" + + hide() + if(status_flags & HIDING) + hide_glow = TRUE + else + hide_glow = FALSE + update_icon() + +/mob/living/silicon/pai/verb/screen_message(message as text|null) + set category = "pAI Commands" + set name = "Screen Message" + set desc = "Allows you to display a message on your screen. This will show up in the chat of anyone who is holding your card." + + if (src.client) + if(client.prefs.muted & MUTE_IC) + to_chat(src, "You cannot speak in IC (muted).") + return + if(loc != card) + to_chat(src, "Your message won't be visible while unfolded!") + if (!message) + message = tgui_input_text(src, "Enter text you would like to show on your screen.","Screen Message") + message = sanitize_or_reflect(message,src) + if (!message) + return + message = capitalize(message) + if (stat == DEAD) + return + card.screen_msg = message + var/logmsg = "(CARD SCREEN)[message]" + log_say(logmsg,src) + to_chat(src, "You print a message to your screen, \"[message]\"") + if(isliving(card.loc)) + var/mob/living/L = card.loc + if(L.client) + to_chat(L, "[src.name]'s screen prints, \"[message]\"") + else return + else if(isbelly(card.loc)) + var/obj/belly/b = card.loc + if(b.owner.client) + to_chat(b.owner, "[src.name]'s screen prints, \"[message]\"") + else return + else if(istype(card.loc, /obj/item/device/pda)) + var/obj/item/device/pda/p = card.loc + if(isliving(p.loc)) + var/mob/living/L = p.loc + if(L.client) + to_chat(L, "[src.name]'s screen prints, \"[message]\"") + else return + else if(isbelly(p.loc)) + var/obj/belly/b = card.loc + if(b.owner.client) + to_chat(b.owner, "[src.name]'s screen prints, \"[message]\"") + else return + else return + else return + to_chat(src, "Your message was relayed.") + for (var/mob/G in player_list) + if (istype(G, /mob/new_player)) + continue + else if(isobserver(G) && G.is_preference_enabled(/datum/client_preference/ghost_ears)) + if(is_preference_enabled(/datum/client_preference/whisubtle_vis) || G.client.holder) + to_chat(G, "[src.name]'s screen prints, \"[message]\"") + +/mob/living/silicon/pai/proc/touch_window(soft_name) //This lets us touch TGUI procs and windows that may be nested behind other TGUI procs and windows + for(var/thing in software) //so we can access our software without having to open up the software interface TGUI window + var/datum/pai_software/S = software[thing] + if(istype(S, /datum/pai_software) && S.name == soft_name) + if(S.toggle) + S.toggle(src) + to_chat(src, "You toggled [S.name].") + refresh_software_status() + else + S.tgui_interact(src) + refresh_software_status() + return + for(var/thing in pai_software_by_key) + var/datum/pai_software/our_soft = pai_software_by_key[thing] + if(our_soft.name == soft_name) + if(!(ram >= our_soft.ram_cost)) + to_chat(src, "Insufficient RAM for download. (Cost [our_soft.ram_cost] : [ram] Remaining)") + return + if(tgui_alert(src, "Do you want to download [our_soft.name]? It costs [our_soft.ram_cost], and you have [ram] remaining.", "Download [our_soft.name]", list("Yes", "No")) == "Yes") + ram -= our_soft.ram_cost + software[our_soft.id] = our_soft + to_chat(src, "You downloaded [our_soft.name]. ([ram] RAM remaining.)") + refresh_software_status() + +/mob/living/silicon/pai/proc/refresh_software_status() //This manages the pAI software status buttons icon states based on if you have them and if they are enabled + for(var/thing in software) //this only gets called when you click one of the relevent buttons, rather than all the time! + var/datum/pai_software/soft = software[thing] + if(istype(soft,/datum/pai_software/med_records)) + soft_mr = TRUE + if(istype(soft,/datum/pai_software/sec_records)) + soft_sr = TRUE + if(istype(soft,/datum/pai_software/door_jack)) + soft_dj = TRUE + if(istype(soft,/datum/pai_software/atmosphere_sensor)) + soft_as = TRUE + if(istype(soft,/datum/pai_software/pai_hud)) + soft_ar = TRUE + if(istype(soft,/datum/pai_software/translator)) + soft_ut = TRUE + if(istype(soft,/datum/pai_software/signaller)) + soft_si = TRUE + for(var/obj/screen/pai/button in hud_used.other) + if(button.name == "medical records") + if(soft_mr) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "security records") + if(soft_sr) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "door jack") + if(soft_dj) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "atmosphere sensor") + if(soft_as) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "remote signaler") + if(soft_si) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "universal translator") + if(soft_ut && translator_on) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + if(button.name == "ar hud") + if(soft_ar && paiHUD) + button.icon_state = "[button.base_state]" + else + button.icon_state = "[button.base_state]_o" + +//Procs for using the various UI buttons for your softwares +/mob/living/silicon/pai/proc/directives() + touch_window("Directives") + +/mob/living/silicon/pai/proc/crew_manifest() + touch_window("Crew Manifest") + +/mob/living/silicon/pai/proc/med_records() + touch_window("Medical Records") + +/mob/living/silicon/pai/proc/sec_records() + touch_window("Security Records") + +/mob/living/silicon/pai/proc/remote_signal() + touch_window("Remote Signaler") + +/mob/living/silicon/pai/proc/atmos_sensor() + touch_window("Atmosphere Sensor") + +/mob/living/silicon/pai/proc/translator() + touch_window("Universal Translator") + +/mob/living/silicon/pai/proc/door_jack() + touch_window("Door Jack") + +/mob/living/silicon/pai/proc/ar_hud() + touch_window("AR HUD") +>>>>>>> 950b23cc87... Merge pull request #13142 from Very-Soft/morepaiinterface diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 07d82b74d0..d8594fd5fc 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -369,34 +369,24 @@ return data -/datum/pai_software/sec_hud - name = "Security HUD" - ram_cost = 20 - id = "sec_hud" +/datum/pai_software/pai_hud + name = "AR HUD" + ram_cost = 30 + id = "ar_hud" -/datum/pai_software/sec_hud/toggle(mob/living/silicon/pai/user) - user.secHUD = !user.secHUD - user.plane_holder.set_vis(VIS_CH_ID, user.secHUD) - user.plane_holder.set_vis(VIS_CH_WANTED, user.secHUD) - user.plane_holder.set_vis(VIS_CH_IMPTRACK, user.secHUD) - user.plane_holder.set_vis(VIS_CH_IMPLOYAL, user.secHUD) - user.plane_holder.set_vis(VIS_CH_IMPCHEM, user.secHUD) +/datum/pai_software/pai_hud/toggle(mob/living/silicon/pai/user) + user.paiHUD = !user.paiHUD + user.plane_holder.set_vis(VIS_CH_ID,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_WANTED,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_IMPTRACK,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_IMPCHEM,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_STATUS_R,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_HEALTH_VR,user.paiHUD) + user.plane_holder.set_vis(VIS_CH_BACKUP,user.paiHUD) //backup stuff from silicon_vr is here now + user.plane_holder.set_vis(VIS_AUGMENTED,user.paiHUD) -/datum/pai_software/sec_hud/is_active(mob/living/silicon/pai/user) - return user.secHUD - -/datum/pai_software/med_hud - name = "Medical HUD" - ram_cost = 20 - id = "med_hud" - -/datum/pai_software/med_hud/toggle(mob/living/silicon/pai/user) - user.medHUD = !user.medHUD - user.plane_holder.set_vis(VIS_CH_STATUS, user.medHUD) - user.plane_holder.set_vis(VIS_CH_HEALTH, user.medHUD) - -/datum/pai_software/med_hud/is_active(mob/living/silicon/pai/user) - return user.medHUD +/datum/pai_software/pai_hud/is_active(mob/living/silicon/pai/user) + return user.paiHUD /datum/pai_software/translator name = "Universal Translator" diff --git a/icons/mob/pai_hud.dmi b/icons/mob/pai_hud.dmi index c1be3ab314deb857b0277f44e79b11f2340bb384..2009b0e237213249516b6c36b3f416f4391f0e2c 100644 GIT binary patch literal 5729 zcmcIoc{r4Bxc+7ghR6_Q&7PEBNJ3)97+Xbz$`27Cm3?1l?1ZdES;iKT5VD4mHQ8ky zj24kF7=|%3=1k|0bDclWxz2U|dY|`s-sSne>v`_`{=NiL69aBeVNL)5xQz@^w*Uad zG(iBAjXBtOzj0ijA!AN^bB)D&C(WX4 z^M$dkSlf_^-=l@8=eqDF+F|;|2NroPFW;ne7PXb1|D#cE@@}odMR0qMBF67u+{uia6D1KRQvq-_@NOrl5EN6Uz}>OIbuxZuEKO_KWnt zr^%;0R4q<;@}>Ct!|uxDv^_;7MZJqErku4kh<1a{cPv3kMsg)Go*(kZ9-tAO5E=p& zx%4ztQ+@eO<$}f0#&GcX_IYED)%_~Sx`8z~@LrV69^O}Ws&e6hVpQYWH`lifDXoW! z{?YFtXZ%_=0D#}h2&H2Yn7fe&Pn7xmvKO1_&r{!Pr5PC$o8vU=#p*a8IIZz4*Jt?N z+a$}V(TiUTm*?O4^K=SC9oLaIRRo8DI)zqz$){F%l#mV(6)pvb^R$NB>>WfSz84@U2(hemk&$4hgZIVobN++vb@TY+%&W zgVuK&?P@q{iWR<6-!w(+BTaBr-xrSPv2m8e)zYiu?4vOcGAuR-WHZ*aG;qFdf!mU z7wEwd--hB;Xj)SZT}O>ML(X+@p1%R+j<68w?~QY1bf%B8)x~26zj`&3Ozu(aK+{$o zmu5Qv^F~`ToKEvs&B|*h3xU+3Z=zNjsw<9HE`*x`17CJBX1NG=h_T^vjbX@3O9Ggk zS{j5k9~{WCzT=kQ_sfmfpJ7A9 z$LX{Iw%_&>evtHlGvD9jxdq64f?{AiWplt(O$BJWi7lKPUCwyyA%8VQ1i+XNpKdvg z2cTZ+lWf3@l&P=H@AJNv?7tF$Lraa)IXM)ots7AKli+`2VmF2MIKP9n4+N7+H+KWv z6>-7_W&3WnI!XlWNf1|_+@dy?7mz%CxCdTGGE#jS^@?mQvrmGWrr(Y|f%uArw}c@r zluAzFPI1rRM}rFg`0;8JcIhH=YK+Zie1ag@_xt_on9&;@+AGG1KjT0i0fVLs!wG$>BlP7z_q)uI>qpLe2wFkSR1Y6z(T#5D^a)|Nb{E&xjM z3y;#`^MsNqLm{i;pi6fkQqlEGuQ1VPo!2XH=&g0Cl&^QRWkfMv4#g5h0%vBm`h9sz zop_wvC&8?d;RGwbsGt4=^JEUIbH(XV!f|y*zeAfhPIzBXQWcbZ>Z%9Kc^A7jqMOeV zH$76Q=Cf-4KKOu%`Xn*%AQzi(pWR*V&o>ZIX^Xs)(7&z5zb zup?MNbrNY_pZQv=7l5=tv7#v44ySQ53-3(JUmJIRR% z2;Utg_lW;(6$4xyfhDXlk1~e#Zxs%1)7W4hxfDYAvY#SO2Lj2*Jsa~zI@)Yw+SR6~ zJ}{=y)?u3aq<}UaN5YKpeZpc3S@k2MYQ;m2-SRg3lsh~?>{4UczNi}!+Xh6RJ#$GY z9##Z!0+LS)0a%gX|G$xaJJ=Ixc=~UD^ZQp&*YYR<*Ma)w-VA5#YRN|hxK2cw(UZyL zDBg%zz_5R$YF2wJVVUNUE~v2eH6ACa@ob zOS?bs!7d{_Ic}{zxDSeemc>TQb*a7fF&RmZWV-H5E$b4~Fq)kYRhFo~JVw{pWPblv z<@$P9Y~(yp=gZN@m%rdVSht&ZOlf6b9(XCF#I=iTfd=OHTtYPOjZM|%@*n>;;$Bzc za$f}J9T)|^X+9(<@^qT=cz5lYcl#fzf&haAJ=DAf{H)c(d!guoT;^x$>f5cYM{Ka0 zeJ4{GLESVldB9uwKIx>fGK};C6gk`x^E*-dxKZBv;H~`T#3`+lcZ+*Zsy3WG^c#8| z4VK88I~-g>am<|FoNOn$?lag}^RMw~i?b`=(D)D_#ScgwYt4M}BK!N=$mM+hB(c(; zYH1jyvw-*eGT#fVA!q*0X#X*Bvk?@3B4YS*YE3}`1}u>wdj;+(8r81f%8k=LS&Hq7 z=Z*OJmNLj?03PTf(!z2L*!p^}lSF&k&1x8Q>a`=;tD3NT2`gVYwXEzR634v!y17JS zikodewZ4xT-k{tiVs(>9Ec`%%sICiDdOc2;O{!ib)e^9(%-cw}BI+_0I?9$FTiEcG zDo;FN5s8H1M29Fh*&V9TglI;a$aGZ2~4TdaEj@$>w-Gc z+h_22t`eLw1M7bo=ruOS$@vay1=h2))NsDU?LS4=Iy(57pxRyxg^j0xRZGQ)chO2+1B%-LOE}LCiou7;l54SsDJ0?q}}~wOQygAI+lOMgOrQaXP8*Qk+jwl#TXZWo5CgQF2!O>jKl>pa(j&|noX^z&fjg4qd zo1`>AQl}IJwE3j+d^6pdKA1Z(Rm~&YZhM%6ZdG~bPjHbz7-GsZA{-_e0Y56j%+ID! zpQ-eO4inlJ1JX91r}peb)D`Fws&J#-aYqE=W`$;HLai7c1t}H7*-ta*$eMluYmS5= zcElp>Cuoir5te;(V?~g=UauHet>gn)x-GB1iBU*1^8q<5tHEu$#I{}jWl(oG+sT;E z(h!l6>CODB@kJ2jrCg42cCR{6+pI&M0{7&TQ`uLq)J&?F{rJf6*Ab!A2)LxJWqnPg`@5F5J(Y->AL&aU?6;%Uv z6aRs!0mUQ!+t**lNu2p`@^hjENd1M4zj((2kw|S?p;W0wyntqZBx<76;d!sPbRG%d z2Dd#@wvHtq__*e);ngwvDG4>{gmP-#pNw2o1#n3kXvH!tLNHo(xPUgHhkiK&-r-lY zend-)WUT>Ku<)PGUPzp6yl{ z3snV}{R7T+*CuE)0!A)6jz)U{OyI?U8Js|1Ldr*%HeATkYlh&xk7%KT#l%yA4890Q zrb~iPbLDNAivzsod}z&a(Q{8vWJOE!iOKcxM?{eVJ~FbUYH}|FD*Q8d2#x#A#}ZdoHbH?c6sTPwB9s>svVK6XQ=q$*{w#A5z*quamyp)z@^F64sIrsn0w0N4 z5b**4@{;lcu{aG@n@5U(j|^J(O0uhga$aT zwk<6V%tOX^lr&F z+7O#2iJ{o5{;)a%krrET4nTiLoFJ=NuM9B)@Y_cem*;bRzZdqwGHq^VD!6;vX?}-v3A_WZ(M| z86az)yYC-Kj^a3LK0}Noo=N&ul5@S#vpo5e@!W*k|wg8C{Dxh2Uafv3TeCh z`$p?%%Ein(+A2;~i!rzBFOd5jkNgK}X*;qs;xE=M?R^ge&Pp(>C_A4Qp=r#KdSQ_D z-bbF9k%}ctOD)BxrUDWPbVBS~V0$CL%yN<>ga+pVz~&>zfMR;9`|H|=U?BfV7cffeE_H|*7+J8iz&G9~!X zt~$&NY~L2Ire)FrI|CGNYSiQ-#q$TZY4z3k_Uv;wghBf7RGkO+(ojK<=^9=1DYEjEqKfv{n0Q_{hb~Z0I-(F@W0#LQPk3i$ zTfv@D!p@h=-v@0b4*0eaW(jTG_b?Y$h(0!K8vrs_C5<_F%Inlsj|+DI z8yCA*B*l$z{J|Q*>wO-<4RS-0%Xa$aKiAfz0lPdOBNNq9&L2l(q&=`;D`LP;^wlt$ zRTFGPI(`^?&?>)*2C@$h?8 z2M7k1emcPi1eHuE_`eBn4F!%;KOKlX*(ZZaafSbglz5eeO1ForHDj@4l?xoP!WE?A zl?H6i6lvcsovN_d;ZL=F3&wwe;jdrpyUER+E#T!rrmim+`c$71?`g-V@_HPfO={7T zn63SmGxW>3W2o(l(vqFjRpGz0y4mRCBmO*v`UsL^jrd&X`2FzI7!pI}hbiYSjq9Bv zxmR5)!{@RRvR*DYJhF{sx504pH`wlI4+4$r0k+LESufqnGR!3HBg&j?d&|Q|DYovH zbGQfPE;o?M3aWuEgS2PPALQKj`UDQm%WJ>dCm_CdbUN2HUy}##NCBS*4eQPG5^ zzF*G$rc1lLh)3(=1Ph&=#hcfvOo6zRe}a$bD^IO=~Dk?E6v4s5gceVDv=)3G|{5AF6P?E9p=(&%+f)8Tv?*GR&MN8!lkl%ed%N0@}xN_4=F_)_zMO7KmxjRpqI10^( zxDo96ZbCBaA-orglhuN6j9eAVUVW|bWxf${@smKrf5Vag0+j!iF?iod>D@7@QSC9V zEQq-~_E_XNr;>3kjzsdrx* z$`$m;&sRLl$$p+{C6q3rB-e}w(o2$R#}Puj?MM|Xryruo((jkSZ0Mzzx)U-D8~uGj zi~Px$Xqmob;4t=;avsi|+aojjy_=?+nE&-qa!FcrH%|uDa)sGbA8#4Ih=6Y*L|tXyeWgl$iOGn_#IM)@3!>vuEBVi^QG?da0bdeR XrfhBBwQj*Me;qS%$OKh|w2%A`$#>-~ literal 4110 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 Xk(qkxfF19j53s&|%c9=QJL!J_v1<%W From 53dec0241d9a19572ca6d295365d66f396e8ed81 Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Wed, 22 Jun 2022 23:51:14 -0400 Subject: [PATCH 2/2] powder that makes you say yes --- code/modules/mob/living/silicon/pai/pai.dm | 33 ---------------------- 1 file changed, 33 deletions(-) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 0267fdbff3..729283c9aa 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -497,36 +497,3 @@ src.master = null src.master_dna = null to_chat(src, "You feel unbound.") - -//FLUSH RAM, it sounded cool at first tbh now im not so sure -//Externally now called Factory Reset. -/mob/living/silicon/pai/verb/flush_ram() - set name = "Factory Reset" - set category = "pAI Commands" - set desc = "Uninstalls all software and reinstalls default." - - software = null - software = default_pai_software.Copy() - ram = 100 //Reset since we just admin yeet the software and reloaded defaults. -// Various software-specific vars - secHUD = 0 // Toggles whether the Security HUD is active or not - medHUD = 0 // Toggles whether the Medical HUD is active or not - medical_cannotfind = 0 - security_cannotfind = 0 - translator_on = 0 // keeps track of the translator module -//MEDHUD - src.plane_holder.set_vis(VIS_CH_STATUS, medHUD) - src.plane_holder.set_vis(VIS_CH_HEALTH, medHUD) -//SECHUD - src.plane_holder.set_vis(VIS_CH_ID, secHUD) - src.plane_holder.set_vis(VIS_CH_WANTED, secHUD) - src.plane_holder.set_vis(VIS_CH_IMPTRACK, secHUD) - src.plane_holder.set_vis(VIS_CH_IMPLOYAL, secHUD) - src.plane_holder.set_vis(VIS_CH_IMPCHEM, secHUD) -//Translator - src.remove_language(LANGUAGE_UNATHI) - src.remove_language(LANGUAGE_SIIK) - src.remove_language(LANGUAGE_AKHANI) - src.remove_language(LANGUAGE_SKRELLIAN) - src.remove_language(LANGUAGE_ZADDAT) - src.remove_language(LANGUAGE_SCHECHI)