From 15dbacca01144eba2cf5843e08c1216234810f31 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 34aa6ede3..3d21cbbf8 100644 --- a/src/scripting/thingdef.cpp +++ b/src/scripting/thingdef.cpp @@ -432,6 +432,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 @@ -513,6 +534,8 @@ void LoadActors() // PASSMOBJ is irrelevant for normal missiles, but not for bouncers. defaults->flags2 |= MF2_PASSMOBJ; } + + CheckDropItems(ti); } if (FScriptPosition::ErrorCounter > 0) {