I don't see any existing function that will do what you want.
With DBI installed you could query the tiems table, but that doesn't guarantee that the item actually exists in the shared memory block.
You could try this though:
questmgr.h (somewhere under public
Code:
bool IsValidItem(int32 itemid);
questmgr.cpp
Code:
bool QuestManager::IsValidItem(int32 itemid)
{
return(database.GetItem(itemid));
}
perlparser.cpp
Code:
XS(XS__IsValidItem);
XS(XS__IsValidItem)
{
dXSARGS;
if (items != 1)
Perl_croak(aTHX_ "Usage: IsValidItem(itemid)");
int32 itemid = (int32)SvUV(ST(0));
bool RETVAL;
dXSTARG;
RETVAL = quest_manager.IsValidItem(itemid);
XSprePUSH; PUSHu((IV)RETVAL);
XSRETURN(1);
}
Then add to the boot_quest function in perlparser.cpp
Code:
newXS(strcpy(buf, "IsValidItem"), XS__IsValidItem, file);
I can test it fully in the morning, but for now I can at least tell you that it compiles.