Merge pull request #5453 from Crazylemon64/ipc_surgery_fix

Makes IPC surgery much more reliable.
This commit is contained in:
TheDZD
2016-08-17 20:15:53 -04:00
committed by GitHub
32 changed files with 552 additions and 460 deletions
+23 -1
View File
@@ -178,4 +178,26 @@
/obj/item/device/mmi/syndie
name = "Syndicate Man-Machine Interface"
desc = "Syndicate's own brand of MMI. It enforces laws designed to help Syndicate agents achieve their goals upon cyborgs created with it, but doesn't fit in Nanotrasen AI cores."
syndiemmi = 1
syndiemmi = 1
/obj/item/device/mmi/attempt_become_organ(obj/item/organ/external/parent,mob/living/carbon/human/H)
if(!brainmob)
return 0
if(!parent)
log_debug("Attempting to insert into a null parent!")
return 0
if(H.get_int_organ(/obj/item/organ/internal/brain))
// one brain at a time
return 0
var/obj/item/organ/internal/brain/mmi_holder/holder = new()
holder.parent_organ = parent.limb_name
forceMove(holder)
holder.stored_mmi = src
holder.update_from_mmi()
if(istype(src, /obj/item/device/mmi/posibrain))
holder.robotize()
if(brainmob && brainmob.mind)
brainmob.mind.transfer_to(H)
holder.insert(H)
return 1
@@ -79,7 +79,7 @@
if(istype(owner,/mob/living/carbon/human))
var/mob/living/carbon/human/H = owner
H.update_hair(1)
..()
. = ..()
/obj/item/organ/internal/brain/insert(var/mob/living/target,special = 0)
@@ -100,7 +100,9 @@
brainmob.mind.transfer_to(target)
else
target.key = brainmob.key
..(target, special = special, dont_remove_slot = brain_already_exists)
else
log_debug("Multibrain shenanigans at ([target.x],[target.y],[target.z]), mob '[target]'")
..(target, special = special)
/obj/item/organ/internal/brain/prepare_eat()
return // Too important to eat.
@@ -12,13 +12,15 @@
animation.master = src
playsound(src.loc, 'sound/goonstation/effects/gib.ogg', 50, 1)
else
playsound(src.loc, 'sound/goonstation/effects/robogib.ogg', 50, 1)
for(var/obj/item/organ/internal/I in internal_organs)
if(isturf(loc))
I.remove(src)
I.forceMove(get_turf(src))
var/atom/movable/thing = I.remove(src)
thing.forceMove(get_turf(src))
spawn()
I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5)
thing.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5)
for(var/obj/item/organ/external/E in src.organs)
if(istype(E, /obj/item/organ/external/chest))
@@ -13,7 +13,7 @@
if(H.hand)
temp = H.organs_by_name["l_hand"]
if(!temp || !temp.is_usable())
to_chat(H, "\red You can't use your hand.")
to_chat(H, "<span class='warning'>You can't use your hand.</span>")
return
..()
@@ -62,10 +62,9 @@
for(var/datum/surgery/S in src.surgeries)
if(S.next_step(M, src))
return 1
else
help_shake_act(M)
add_logs(src, M, "shaked")
return 1
help_shake_act(M)
add_logs(src, M, "shaked")
return 1
if(health >= config.health_threshold_crit)
help_shake_act(M)
add_logs(src, M, "shaked")
@@ -231,4 +230,4 @@
return
/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params)
return
return
+2 -1
View File
@@ -1113,7 +1113,8 @@
return
if(H.species && H.species.flags & NO_BREATHE)
return //no puking if you can't smell!
if(H.mind.assigned_role == "Detective")
// Humans can lack a mind datum, y'know
if(H.mind && H.mind.assigned_role == "Detective")
return //too cool for puke
to_chat(H, "<spawn class='warning'>You smell something foul...")
H.fakevomit()