- Fixed: If AbsorbDamage resulted in an item having been destroyed, the following items in the inventory chain were not processed.

This commit is contained in:
Player701 2020-11-17 14:20:12 +03:00 committed by drfrag
parent f53e9cb5fc
commit 70ceced6b0

View file

@ -3256,8 +3256,11 @@ bool AActor::AdjustReflectionAngle (AActor *thing, DAngle &angle)
int AActor::AbsorbDamage(int damage, FName dmgtype, AActor *inflictor, AActor *source, int flags)
{
for (AActor *item = Inventory; item != nullptr; item = item->Inventory)
AActor *next;
for (AActor *item = Inventory; item != nullptr; item = next)
{
// [Player701] Remember the next item now in case the current item is destroyed later
next = item->Inventory;
IFVIRTUALPTRNAME(item, NAME_Inventory, AbsorbDamage)
{
VMValue params[7] = { item, damage, dmgtype.GetIndex(), &damage, inflictor, source, flags };