diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index f0bb82efd0..f304404a6d 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1450,8 +1450,10 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/Destroy() PDAs -= src + /* VOREStation Removal if (src.id && prob(90)) //IDs are kept in 90% of the cases src.id.loc = get_turf(src.loc) + */ ..() /obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index f65b9926c8..9743475332 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -85,7 +85,7 @@ else if (E.is_malfunctioning()) //malfunctioning only happens intermittently so treat it as a missing limb when it procs stance_damage += 2 - if(prob(10)) + if(isturf(loc) && prob(10)) visible_message("\The [src]'s [E.name] [pick("twitches", "shudders")] and sparks!") var/datum/effect/effect/system/spark_spread/spark_system = new () spark_system.set_up(5, 0, src) @@ -110,7 +110,7 @@ // standing is poor if(stance_damage >= 4 || (stance_damage >= 2 && prob(5))) - if(!(lying || resting)) + if(!(lying || resting) && !isliving(loc)) if(limb_pain) emote("scream") custom_emote(1, "collapses!") diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index df74367d0d..fc668621f1 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -71,6 +71,7 @@ /obj/item/organ/internal/mmi_holder/removed(var/mob/living/user) if(stored_mmi) + . = stored_mmi //VOREStation Code stored_mmi.loc = get_turf(src) if(owner.mind) owner.mind.transfer_to(stored_mmi.brainmob) diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm index fb17e47195..dac057428a 100644 --- a/code/modules/vore/eating/belly_vr.dm +++ b/code/modules/vore/eating/belly_vr.dm @@ -266,17 +266,8 @@ // Recursive method - To recursively scan thru someone's inventory for digestable/indigestable. /datum/belly/proc/_handle_digested_item(var/obj/item/W) - // PDA's are handled specially in order to get the ID out of them. - if (istype(W, /obj/item/device/pda)) - var/obj/item/device/pda/PDA = W - if (PDA.id) - W = PDA.id - PDA.id = null - W.forceMove(owner) //I think this might be necessary with qdel? - qdel(PDA) - - if (istype(W, /obj/item/weapon/card/id)) - // Keep IDs around, but destroy them! + // IDs are handled specially to 'digest' them + if(istype(W,/obj/item/weapon/card/id)) var/obj/item/weapon/card/id/ID = W ID.desc = "A partially digested card that has seen better days. Much of it's data has been destroyed." ID.icon = 'icons/obj/card_vr.dmi' @@ -285,18 +276,25 @@ ID.forceMove(owner) internal_contents += W - else if (!_is_digestable(W)) - W.forceMove(owner) - internal_contents += W + // Posibrains have to be pulled 'out' of their organ version. + else if(istype(W,/obj/item/organ/internal/mmi_holder)) + var/obj/item/organ/internal/mmi_holder/MMI = W + var/atom/movable/brain = MMI.removed() + if(brain) + brain.forceMove(owner) + internal_contents += brain + else - for (var/obj/item/SubItem in W) - _handle_digested_item(SubItem) - qdel(W) + if(!_is_digestable(W)) + W.forceMove(owner) + internal_contents += W + else + for (var/obj/item/SubItem in W) + _handle_digested_item(SubItem) /datum/belly/proc/_is_digestable(var/obj/item/I) - for (var/T in important_items) - if(istype(I, T)) - return 0 + if(I.type in important_items) + return 0 return 1 // Handle a mob being absorbed