mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
Reworks pAIs (#68241)
A pretty heavy refactor for pAIs that just spilled into a rework. Attempts to fully document and organize backend code. Fixes a large number of bugs left untouched for a decade. Breaks down the frontend into subcomponents. Rebalances their software modules. (should) fix pAI faces get removed if you activate them during alert #68242
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/client/proc/makepAI(turf/target in GLOB.mob_list)
|
||||
set category = "Admin.Fun"
|
||||
set name = "Make pAI"
|
||||
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
|
||||
|
||||
var/list/available = list()
|
||||
for(var/mob/player as anything in GLOB.player_list)
|
||||
if(player.client && player.key)
|
||||
available.Add(player)
|
||||
var/mob/choice = tgui_input_list(usr, "Choose a player to play the pAI", "Spawn pAI", sort_names(available))
|
||||
if(isnull(choice))
|
||||
return
|
||||
|
||||
var/chosen_name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text|null
|
||||
if (isnull(chosen_name))
|
||||
return
|
||||
|
||||
if(!isobserver(choice))
|
||||
var/confirm = tgui_alert(usr, "[choice.key] isn't ghosting right now. Are you sure you want to yank them out of their body and place them in this pAI?", "Spawn pAI Confirmation", list("Yes", "No"))
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
var/obj/item/pai_card/card = new(target)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
|
||||
pai.name = chosen_name
|
||||
pai.real_name = pai.name
|
||||
pai.key = choice.key
|
||||
card.set_personality(pai)
|
||||
if(SSpai.candidates[key])
|
||||
SSpai.candidates -= key
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/**
|
||||
* Creates a new pAI.
|
||||
*
|
||||
* @param {boolean} delete_old - If TRUE, deletes the old pAI.
|
||||
*/
|
||||
/mob/proc/make_pai(delete_old)
|
||||
var/obj/item/pai_card/card = new(src)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.key = key
|
||||
pai.name = name
|
||||
card.set_personality(pai)
|
||||
if(delete_old)
|
||||
qdel(src)
|
||||
Reference in New Issue
Block a user