diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index bb798781bf..7942abb5fb 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -47,9 +47,13 @@ I.gurgle_contaminate(src, cont_flavor) items_preserved |= I else - digest_item(I) - to_update = TRUE - did_an_item = TRUE + I.gurgle_contaminate(src, cont_flavor) + if(I.digest_stage && I.digest_stage > 0) + digest_item(I) + else + digest_item(I) + did_an_item = TRUE + to_update = TRUE //Handle eaten mobs else if(isliving(A)) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index cc247b5497..2641a43700 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -4,17 +4,38 @@ // Ye default implementation. /obj/item/proc/digest_act(var/atom/movable/item_storage = null) - for(var/obj/item/O in contents) - if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets. - for(var/obj/item/SO in O) - if(item_storage) - SO.forceMove(item_storage) - qdel(O) - else if(item_storage) - O.forceMove(item_storage) - - qdel(src) - return w_class + if(istype(item_storage,/obj/item/device/dogborg/sleeper)) + for(var/obj/item/O in contents) + if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets. + for(var/obj/item/SO in O) + if(item_storage) + SO.forceMove(item_storage) + qdel(O) + else if(item_storage) + O.forceMove(item_storage) + qdel(src) + return w_class + var/g_damage = 1 + if(digest_stage == null) + digest_stage = w_class + if(isbelly(item_storage)) + var/obj/belly/B = item_storage + g_damage = 0.25 * (B.digest_brute + B.digest_burn) + if(digest_stage > 0) + if(g_damage > digest_stage) + g_damage = digest_stage + digest_stage -= g_damage + else + for(var/obj/item/O in contents) + if(istype(O,/obj/item/weapon/storage/internal)) //Dump contents from dummy pockets. + for(var/obj/item/SO in O) + if(item_storage) + SO.forceMove(item_storage) + qdel(O) + else if(item_storage) + O.forceMove(item_storage) + qdel(src) + return g_damage ///////////// // Some indigestible stuff @@ -91,3 +112,7 @@ /obj/item/device/mmi/digital/posibrain/digest_act(var/atom/movable/item_storage = null) //Replace this with a VORE setting so all types of posibrains can/can't be digested on a whim return FALSE + +// Gradual damage measurement +/obj/item + var/digest_stage = null \ No newline at end of file