diff --git a/baystation12.dme b/baystation12.dme index c22d70873ea..bbe241e3711 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1248,6 +1248,7 @@ #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\life.dm" +#include "code\modules\mob\living\silicon\pai\admin.dm" #include "code\modules\mob\living\silicon\pai\death.dm" #include "code\modules\mob\living\silicon\pai\examine.dm" #include "code\modules\mob\living\silicon\pai\life.dm" diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 0e5116f5d83..7acedbfde97 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -156,6 +156,9 @@ else channels[chan_name] |= FREQ_LISTENING + if(href_list["nowindow"]) // here for pAIs, maybe others will want it, idk + return + interact(usr) /obj/item/device/radio/proc/autosay(var/message, var/from, var/channel) //BS12 EDIT diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 625a63a29e7..2036e209b8b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -88,7 +88,8 @@ var/list/admin_verbs_admin = list( /client/proc/change_human_appearance_admin, /* Allows an admin to change the basic appearance of human-based mobs */ /client/proc/change_human_appearance_self, /* Allows the human-based mob itself change its basic appearance */ /client/proc/change_security_level, - /client/proc/view_chemical_reaction_logs + /client/proc/view_chemical_reaction_logs, + /client/proc/makePAI ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/mob/living/silicon/pai/admin.dm b/code/modules/mob/living/silicon/pai/admin.dm new file mode 100644 index 00000000000..069c5d2c684 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/admin.dm @@ -0,0 +1,21 @@ +// Originally a debug verb, made it a proper adminverb for ~fun~ +/client/proc/makePAI(turf/t in view(), name as text, pai_key as null|text) + set name = "Make pAI" + set category = "Admin" + + if(!check_rights(R_ADMIN)) + return + + if(!pai_key) + var/client/C = input("Select client") as null|anything in clients + if(!C) return + pai_key = C.key + + log_and_message_admins("made a pAI with key=[pai_key] at ([t.x],[t.y],[t.z])") + var/obj/item/device/paicard/card = new(t) + var/mob/living/silicon/pai/pai = new(card) + pai.key = pai_key + card.setPersonality(pai) + + if(name) + pai.SetName(name) diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm index aa692e0a236..79c08227d5a 100644 --- a/code/modules/nano/interaction/default.dm +++ b/code/modules/nano/interaction/default.dm @@ -15,7 +15,7 @@ return STATUS_UPDATE // Ghosts can view updates /mob/living/silicon/pai/default_can_use_topic(var/src_object) - if(src_object == src && !stat) + if((src_object == src || src_object == radio) && !stat) return STATUS_INTERACTIVE else return ..() diff --git a/nano/templates/pai_radio.tmpl b/nano/templates/pai_radio.tmpl index bcdacdb48f1..70e76a26334 100644 --- a/nano/templates/pai_radio.tmpl +++ b/nano/templates/pai_radio.tmpl @@ -8,11 +8,11 @@ code/modules/mob/living/silicon/pai/software_modules.dm