- 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 Christoph Oelckers
parent 75c791ecff
commit 7ff79546e4
1 changed files with 4 additions and 1 deletions

View File

@ -3242,8 +3242,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 };