diff --git a/code/game/objects/devices/paicard.dm b/code/game/objects/devices/paicard.dm
index c3c3f65f33..57584feda4 100644
--- a/code/game/objects/devices/paicard.dm
+++ b/code/game/objects/devices/paicard.dm
@@ -11,6 +11,10 @@
var/looking_for_personality = 0
var/mob/living/silicon/pai/pai
+ New()
+ ..()
+ overlays += "pai-off"
+
attack_self(mob/user)
if (!in_range(src, user))
return
@@ -71,7 +75,7 @@
M << "Your mental faculties leave you.
"
M << "oblivion...
"
M.death(0)
- src.pai = null
+ removePersonality()
if(href_list["wires"])
var/t1 = text2num(href_list["wires"])
if (radio.wires & t1)
@@ -87,12 +91,33 @@
pai << "Supplemental Directives:
[pai.pai_laws]"
attack_self(usr)
-
-
// WIRE_SIGNAL = 1
// WIRE_RECEIVE = 2
// WIRE_TRANSMIT = 4
+ proc/setPersonality(mob/living/silicon/pai/personality)
+ src.pai = personality
+ src.overlays += "pai-happy"
+
+ proc/removePersonality()
+ src.pai = null
+ src.overlays = null
+ src.overlays += "pai-off"
+
+ proc/setEmotion(var/emotion)
+ if(pai)
+ src.overlays = null
+ switch(emotion)
+ if(1) src.overlays += "pai-happy"
+ if(2) src.overlays += "pai-cat"
+ if(3) src.overlays += "pai-extremely-happy"
+ if(4) src.overlays += "pai-face"
+ if(5) src.overlays += "pai-laugh"
+ if(6) src.overlays += "pai-off"
+ if(7) src.overlays += "pai-sad"
+ if(8) src.overlays += "pai-angry"
+ if(9) src.overlays += "pai-what"
+
proc/alertUpdate()
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 6e97188ccf..4d7dede92f 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -125,7 +125,7 @@
var/answer = input("REALLY kill yourself? This action can't be undone.", "Suicide", "No") in list ("Yes", "No")
if(answer == "Yes")
var/obj/item/device/paicard/card = loc
- card.pai = null
+ card.removePersonality()
var/turf/T = get_turf_or_move(card.loc)
for (var/mob/M in viewers(T))
M.show_message("\blue [src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\"", 3, "\blue [src] bleeps electronically.", 2)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index cde750815e..3e756e5c28 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -193,7 +193,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
pai.name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
pai.real_name = pai.name
pai.key = choice.key
- card.pai = pai
+ card.setPersonality(pai)
for(var/datum/paiCandidate/candidate in paiController.pai_candidates)
if(candidate.key == choice.key)
paiController.pai_candidates.Remove(candidate)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 7ae5a32305..94967a4f8d 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -214,6 +214,6 @@
var/obj/item/device/paicard/card = new(t)
var/mob/living/silicon/pai/pai = new(card)
pai.key = src.key
- card.pai = pai
+ card.setPersonality(pai)
*/
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index 0867024f8b..e50f2d6280 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -28,7 +28,10 @@ var/datum/paiController/paiController // Global handler for pAI candidates
return
if(istype(card,/obj/item/device/paicard) && istype(candidate,/datum/paiCandidate))
var/mob/living/silicon/pai/pai = new(card)
- pai.name = candidate.name
+ if(!candidate.name)
+ pai.name = pick(ninja_names)
+ else
+ pai.name = candidate.name
pai.real_name = pai.name
pai.key = candidate.key
@@ -36,7 +39,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
pai.mind.current = pai
pai.mind.assigned_role = "Assistant"//Default to an assistant.
- card.pai = pai
+ card.setPersonality(pai)
card.looking_for_personality = 0
ticker.mode.update_cult_icons_removed(card.pai.mind)
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index afcf2e471a..bb12bd39af 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -144,6 +144,31 @@
if("radio")
src.card.radio.attack_self(src)
+ if("image")
+ var/newImage = input("Select your new display image.", "Display Image", "Happy") in list("Happy", "Cat", "Extremely Happy", "Face", "Laugh", "Off", "Sad", "Angry", "What")
+ var/pID = 1
+
+ switch(newImage)
+ if("Happy")
+ pID = 1
+ if("Cat")
+ pID = 2
+ if("Extremely Happy")
+ pID = 3
+ if("Face")
+ pID = 4
+ if("Laugh")
+ pID = 5
+ if("Off")
+ pID = 6
+ if("Sad")
+ pID = 7
+ if("Angry")
+ pID = 8
+ if("What")
+ pID = 9
+ src.card.setEmotion(pID)
+
if("signaller")
if(href_list["send"])
@@ -256,6 +281,7 @@
// Built-in
dat += "Directives
"
dat += "Radio Configuration
"
+ dat += "Screen Display
"
//dat += "Text Messaging
"
dat += "
"
diff --git a/html/changelog.html b/html/changelog.html
index b31f43e21e..bf0bd74968 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,10 @@ should be listed in the changelog upon commit tho. Thanks. -->