void CBotFunction::RestoreState(CBotVar** ppVars, CBotStack* &pj, CBotVar* pInstance) { CBotStack* pile = pj->RestoreStack(this); // one end of stack local to this function if ( pile == NULL ) return; CBotStack* pile2 = pile; pile->SetBotCall(m_pProg); // bases for routines if ( pile->GetBlock() < 2 ) { CBotStack* pile2 = pile->RestoreStack(NULL); // one end of stack local to this function if ( pile2 == NULL ) return; pile->SetState(pile->GetState() + pile2->GetState()); pile2->Delete(); } m_Param->RestoreState(pile2, true); // parameters if ( !m_MasterClass.IsEmpty() ) { CBotVar* pThis = pile->FindVar("this"); pThis->SetInit(2); pThis->SetUniqNum(-2); } m_Block->RestoreState(pile2, true); }