MMI update the third and fourth. Barring some big huge bug that didn't turn up in my testing to make sure shit works, the MMI is ready for showtime.

If you're wondering why updates third and fourth happened together, in update the third I redid how brains work, and I was halfway to committing it when I realized "wait, if I upload this now, everything that uses the brain will cause fuckups".

Notable changes:
When your brain is cut out, instead of your client hanging around inside your now brainless and more or less useless body, it it shunted into the brain object, similar to an AI in an intellicard.
While not in an MMI, your brain is "dead", deathchat and all. When stuck into an MMI, you spring to 'life', allowing you to talk to whoever stuck your brain into the thing. It occurs to me while I'm typing this up that it would be very easy to abuse this communication between life and death by slapping brains in and out of MMIs. DO NOT DO THIS OR THE ADMINS WILL HATE YOU AND DO MEAN THINGS TO YOU.

Life in an MMI is pretty boring, so you should yell at people until they stick you into an AI core or robot frame to give you something to do. I know the MMI was originally thought up as a mecha interface, but I haven't gotten around to looking at the mecha code to figure out how to hook it in yet.

I suspect there's going to be howls of "WHY DO YOU HATE ROBOTICISTS" over this next part, but the MMI itself is an R&D-researched object, with a biotech level of 3. That said, the station starts with two of them in the operating room (to get the research level up if nothing else), and they are producible at the protolathe AND the mecha fabricator (since they will eventually get to plug into a mecha.)

Known issues: The MMI is SUPPOSED to pop out of a cyborg with the player attached when the cyborg goes pop, but it didn't in my initial testing, simply ghosting the borg as they already do. Will work on this as I have time, but what with having to go to work these days, I have somewhat less of that.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1311 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
n3ophyt3@gmail.com
2011-03-30 02:42:54 +00:00
parent bcdf69b253
commit 9e50fd8e96
19 changed files with 129 additions and 46 deletions
+11 -9
View File
@@ -341,21 +341,23 @@
if(M.client)
M.client.mob = new/mob/dead/observer(M)
//a mob can't have two clients so get rid of one
if(src.owner)
//this might actually be outdated since barring badminnery, a debrain'd body will have any client sucked out to the brain's internal mob. Leaving it anyway to be safe. --NEO
src.brainmob.mind.transfer_to(M)
src.brainmob = null
// if(src.owner)
//if the brain has an owner corpse
if(src.owner.client)
// if(src.owner.client)
//if the player hasn't ghosted
src.owner.client.mob = M
// src.owner.client.mob = M
//then put them in M
else
// else
//if the player HAS ghosted
for(var/mob/dead/observer/O in world)
if(O.corpse == src.owner && O.client)
// for(var/mob/dead/observer/O in world)
// if(O.corpse == src.owner && O.client)
//find their ghost
O.client.mob = M
// O.client.mob = M
//put their mob in M
del(O)
// del(O)
//delete thier ghost
M:brain_op_stage = 3.0
+13 -8
View File
@@ -127,27 +127,31 @@
else
user << "\blue You need to attach a flash to it first!"
if(istype(W, /obj/item/brain))
if(istype(W, /obj/item/device/mmi))
if(src.check_completion())
if(!istype(src.loc,/turf))
user << "\red You can't put the brain in, it has to be standing on the ground to be perfectly precise."
user << "\red You can't put the MMI in, the frame has to be standing on the ground to be perfectly precise."
return
if(!W:brain)
user << "\red Sticking an empty MMI into the frame would sort of defeat the purpose."
return
if(W:brain.brainmob.stat == 2)
user << "\red Sticking a dead brain into the frame would sort of defeat the purpose."
return
user.drop_item()
W.loc = src
src.brain = W
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(src.loc))
if (src.brain.owner)
O.gender = src.brain.owner.gender
//O.start = 1
O.invisibility = 0
O.name = src.created_name
O.real_name = src.created_name
if (src.brain.owner.client)
src.brain.owner.mind.transfer_to(O)
if (W:brain.brainmob)
W:brain.brainmob.mind.transfer_to(O)
else
for(var/mob/dead/observer/G in world)
if(G.corpse == src.brain.owner && G.client)
if(G.corpse == W:brain.brainmob && G.client)
G.corpse.mind.transfer_to(O)
del(G)
break
@@ -165,10 +169,11 @@
O.cell = src.chest.cell
O.cell.loc = O
O.brain = W
del(src)
else
user << "\blue The brain must go in after everything else!"
user << "\blue The MMI must go in after everything else!"
if (istype(W, /obj/item/weapon/pen))
var/t = input(user, "Enter new robot name", src.name, src.created_name) as text