diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index f3e14d0b291..acf60d5dd3c 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1153,7 +1153,7 @@
src.occupant.client.perspective = MOB_PERSPECTIVE
*/
src.occupant << browse(null, "window=exosuit")
- if(istype(mob_container, /obj/item/device/mmi))
+ if(istype(mob_container, /obj/item/device/mmi) || istype(mob_container, /obj/item/device/posibrain))
var/obj/item/device/mmi/mmi = mob_container
if(mmi.brainmob)
occupant.loc = mmi
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 189aad862a7..b9dc3170434 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -198,6 +198,7 @@
user.drop_item()
+ O.mmi = W
O.invisibility = 0
O.custom_name = created_name
O.updatename("Default")
@@ -212,7 +213,6 @@
O.cell = chest.cell
O.cell.loc = O
W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
- O.mmi = W
feedback_inc("cyborg_birth",1)
diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm
index 7ecd5370d1e..edd6a239333 100644
--- a/code/modules/mob/living/carbon/brain/posibrain.dm
+++ b/code/modules/mob/living/carbon/brain/posibrain.dm
@@ -57,14 +57,19 @@
src.brainmob.real_name = "PBU-[rand(100, 999)]"
src.brainmob.loc = src
src.brainmob.container = src
+ src.brainmob.robot_talk_understand = 1
src.brainmob.stat = 0
src.brainmob.silent = 0
src.brainmob.brain_op_stage = 4.0
src.brainmob.key = candidate.key
-
dead_mob_list -= src.brainmob
living_mob_list += src.brainmob
+ src.brainmob << "You are a positronic brain, brought into existence on [station_name()]."
+ src.brainmob << "As a synthetic intelligence, you answer to all crewmembers, as well as the AI."
+ src.brainmob << "Use say :b to speak to other artificial intelligences on the station."
+ src.brainmob.mind.assigned_role = "Positronic Brain"
+
var/turf/T = get_turf_or_move(src.loc)
for (var/mob/M in viewers(T))
M.show_message("\blue The positronic brain chimes quietly.")
diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm
index c4d9a865da2..de169087b44 100644
--- a/code/modules/mob/living/carbon/brain/say.dm
+++ b/code/modules/mob/living/carbon/brain/say.dm
@@ -5,6 +5,11 @@
if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/posibrain))))
return //No MMI, can't speak, bucko./N
else
+ if ((copytext(message, 1, 3) == ":b") || (copytext(message, 1, 3) == ":B") && (container && istype(container, /obj/item/device/posibrain)))
+ message = copytext(message, 3)
+ message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
+ robot_talk(message)
+ return
if(prob(emp_damage*4))
if(prob(10))//10% chane to drop the message entirely
return
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 07660d1b1cb..0a7aa0874cb 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -53,7 +53,7 @@
var/lockcharge //Used when locking down a borg to preserve cell charge
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
-
+ var/braintype = "Cyborg"
/mob/living/silicon/robot/New(loc,var/syndie = 0)
spark_system = new /datum/effect/effect/system/spark_spread()
@@ -195,11 +195,16 @@
/mob/living/silicon/robot/proc/updatename(var/prefix as text)
+ if(istype(mmi, /obj/item/device/posibrain))
+ braintype = "Android"
+ else
+ braintype = "Cyborg"
+
var/changed_name = ""
if(custom_name)
changed_name = custom_name
else
- changed_name = "[(prefix ? "[prefix] " : "")]Cyborg-[num2text(ident)]"
+ changed_name = "[(prefix ? "[prefix] " : "")][braintype]-[num2text(ident)]"
real_name = changed_name
name = real_name