// ***************************************************************************
// Function: Return
// Description: Our '/return' command
// Usage: /return [value]
// ***************************************************************************
void Return(PSPAWNINFO pChar, char* szLine)
{
bRunNextCommand = true;
MQMacroStack* pStack = gMacroStack;
if (!gMacroBlock)
{
MacroError("Cannot return when a macro isn't running.");
return;
}
if (!pStack->pNext)
{
// Top of stack (ie. returning from Sub Main)
EndMacro(pChar, "");
return;
}
if (pStack->LocalVariables)
ClearMQ2DataVariables(&pStack->LocalVariables);
if (pStack->Parameters)
ClearMQ2DataVariables(&pStack->Parameters);
if (!pStack->bIsBind) // binds dont return values...
pStack->pNext->Return = szLine;
gMacroBlock->CurrIndex = pStack->pNext->LocationIndex;
gMacroStack = pStack->pNext;
delete pStack;
}