diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index b992b9d8a..e6759e18a 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -217,6 +217,39 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, IsPointerEqual) return 0; } +//========================================================================== +// +// CountInv +// +// NON-ACTION function to return the inventory count of an item. +// +//========================================================================== + +DEFINE_ACTION_FUNCTION_PARAMS(AActor, CountInv) +{ + if (numret > 0) + { + assert(ret != NULL); + PARAM_PROLOGUE; + PARAM_OBJECT(self, AActor); + PARAM_CLASS(itemtype, AInventory); + PARAM_INT_OPT(pick_pointer) { pick_pointer = AAPTR_DEFAULT; } + + self = COPY_AAPTR(self, pick_pointer); + if (self == NULL || itemtype == NULL) + { + ret->SetInt(false); + } + else + { + AInventory *item = self->FindInventory(itemtype); + ret->SetInt(item ? item->Amount : 0); + return 1; + } + } + return 0; +} + //========================================================================== // // A_RearrangePointers diff --git a/wadsrc/static/actors/actor.txt b/wadsrc/static/actors/actor.txt index 31153f2ea..8677cfb82 100644 --- a/wadsrc/static/actors/actor.txt +++ b/wadsrc/static/actors/actor.txt @@ -36,6 +36,7 @@ ACTOR Actor native //: Thinker // Functions native bool CheckClass(class checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false); native bool IsPointerEqual(int ptr_select1, int ptr_select2); + native int CountInv(class itemtype, int ptr_select = AAPTR_DEFAULT); // Action functions // Meh, MBF redundant functions. Only for DeHackEd support.