mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-28 23:59:40 +01:00
Merge pull request #4177 from Verkister/slowitemgurgles
Makes item digestion gradual and belly damage based.
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user