Merge pull request #4177 from Verkister/slowitemgurgles

Makes item digestion gradual and belly damage based.
This commit is contained in:
Spades
2018-10-07 17:58:02 -04:00
committed by GitHub
2 changed files with 43 additions and 14 deletions
+7 -3
View File
@@ -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))
+36 -11
View File
@@ -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