mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 11:38:12 +01:00
Merge pull request #320 from VOREStation/synthgurgles
Tweaks digestion code
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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!")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user