From b7e0a8d2c74cf7907cf44d12ee97f608b0cf0c21 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Thu, 11 Jul 2019 11:07:09 +0300 Subject: [PATCH] - added validation for presence of drop item classes https://forum.zdoom.org/viewtopic.php?t=65307 --- src/scripting/thingdef.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/scripting/thingdef.cpp b/src/scripting/thingdef.cpp index 261b07f72..bc8f1a876 100644 --- a/src/scripting/thingdef.cpp +++ b/src/scripting/thingdef.cpp @@ -419,6 +419,27 @@ static void CheckStates(PClassActor *obj) } } +void CheckDropItems(const PClassActor *const obj) +{ + const FDropItem *dropItem = obj->ActorInfo()->DropItems; + + while (dropItem != nullptr) + { + if (dropItem->Name != NAME_None) + { + const char *const dropItemName = dropItem->Name.GetChars(); + + if (dropItemName[0] != '\0' && PClass::FindClass(dropItem->Name) == nullptr) + { + Printf(TEXTCOLOR_ORANGE "Undefined drop item class %s referenced from actor %s\n", dropItemName, obj->TypeName.GetChars()); + FScriptPosition::WarnCounter++; + } + } + + dropItem = dropItem->Next; + } +} + //========================================================================== // // LoadActors @@ -500,6 +521,8 @@ void LoadActors() // PASSMOBJ is irrelevant for normal missiles, but not for bouncers. defaults->flags2 |= MF2_PASSMOBJ; } + + CheckDropItems(ti); } if (FScriptPosition::ErrorCounter > 0) {