Code:
BOOL CPetProperty::LoadScript( LPCTSTR szFile )
{
CScript s;
if( s.Load( szFile ) == FALSE )
return FALSE;
s.GetToken(); // subject or FINISHED
while( s.tok != FINISHED )
{
if( s.Token == _T( "AvailDestParam" ) )
{
// DST_STR
int nKind = 0;
s.GetToken(); // {
DWORD dwDstParam = s.GetNumber();
while( *s.token != '}' )
{
ASSERT( nKind < PK_MAX );
m_aPetAvailParam[nKind].dwDstParam = dwDstParam;
for( int i = 0; i < MAX_PET_AVAIL_LEVEL; i++ )
m_aPetAvailParam[nKind].m_anParam[i] = s.GetNumber();
m_aPetAvailParam[nKind].m_dwItemId = s.GetNumber();
m_aPetAvailParam[nKind].m_adwIndex[0] = s.GetNumber();
m_aPetAvailParam[nKind].m_adwIndex[1] = s.GetNumber();
m_aPetAvailParam[nKind].m_adwIndex[2] = s.GetNumber();
m_aPetAvailParam[nKind++].m_dwProbability = s.GetNumber();
dwDstParam = s.GetNumber();
}
}
else if( s.Token == _T( "LevelupAvail" ) )
{
// 10000 0 0 0 0 0 0 0 0
int nLevel = (int)PL_D;
s.GetToken(); // {{
DWORD dwProbability = s.GetNumber();
while( *s.token != '}' )
{
m_adwLevelupAvailLevelProbability[nLevel][0] = dwProbability;
for( int i = 1; i < MAX_PET_AVAIL_LEVEL; i++ )
{
m_adwLevelupAvailLevelProbability[nLevel][i] = s.GetNumber();
if( m_adwLevelupAvailLevelProbability[nLevel][i] > 0 )
m_anLevelupAvailLevelMax[nLevel] = i;
}
nLevel++;
dwProbability = s.GetNumber();
}
}
else if( s.Token == _T( "FeedEnergy" ) )
{
int nIndex = s.GetNumber();
ASSERT( nIndex >= 0 && nIndex <= 1 );
vector<FEEDENERGY>* pArr = &m_aFeedEnergy[nIndex];
// 1 575 7 14
FEEDENERGY fe;
s.GetToken(); // {
fe.dwCostMin = s.GetNumber();
while( *s.token != '}' )
{
fe.dwCostMax = s.GetNumber();
fe.wEnergyMin = s.GetNumber();
fe.wEnergyMax = s.GetNumber();
pArr->push_back( fe ); // add
fe.dwCostMin = s.GetNumber();
}
}
else if( s.Token == _T( "IncrementExp" ) )
{
// 100 // 0.1% // 100000ºÐÀÇ 1 ±âÁØ
int nLevel = 0;
s.GetToken(); // {
DWORD dwIncrementExp = s.GetNumber();
while( *s.token != '}' )
{
ASSERT( nLevel < PL_S );
m_adwIncrementExp[nLevel++] = dwIncrementExp;
dwIncrementExp = s.GetNumber();
}
}
else if( s.Token == _T( "MaxEnergy" ) )
{
// 250 // D // ÃÖ´ë ±â·Â
int nLevel = 0;
s.GetToken(); // {
DWORD dwMaxEnergy = s.GetNumber();
while( *s.token != '}' )
{
ASSERT( nLevel <= PL_S );
m_awMaxEnergy[nLevel++] = (WORD)( dwMaxEnergy );
dwMaxEnergy = s.GetNumber();
}
}
else if( s.Token == _T( "AddLifeProbability" ) )
{
// ¼ö¸í ȸº¹¾× È®·ü // Ãß°¡ µÉ °æ¿ì ÇÕÀÌ 100ÀÌ µÇµµ·Ï È®Àå
// 50 // +1
s.GetToken(); // {
WORD wProbability = s.GetNumber();
while( *s.token != '}' )
{
m_awAddLifeProbability.push_back( wProbability );
wProbability = s.GetNumber();
}
}
else if( s.Token == _T( "Penalty" ) )
{
// Pet ¼Òȯ ÈÄ ÇØÁ¦ ½Ã D~A·¹º§¿¡¼± °æÇèÄ¡¸¦ ÀÒ°Ô µÇ¸ç,
// ÃÖ¼Ò 0%¿¡¼*´Â ´õ ÀÌ»ó °¨¼ÒÇÏÁö ¾Ê´Â´Ù.
// S·¹º§¿¡¼± HP°¡ °¨¼ÒÇϸç, ÃÖ¼Ò 5P ÀÌÇϷδ ´õ ÀÌ»ó °¨¼ÒÇÏÁö ¾Ê´Â´Ù.
s.GetToken(); // {
FLOAT fExp = s.GetFloat();
int nLevel = PL_D;
while( *s.token != '}' )
{
m_aPenalty[nLevel].fExp = fExp;
m_aPenalty[nLevel].wEnergy = (WORD)s.GetNumber();
nLevel++;
fExp = s.GetFloat();
}
}
s.GetToken();
}
/*
#ifdef _DEBUG
TRACE( "GetAvailParam\n" );
for( int i = 0; i < PK_MAX; i++ )
{
PPETAVAILPARAM pPetAvailParam = GetAvailParam( i );
TRACE( "dwDstParam=%d, nBase=%d, nParam=%d\n", pPetAvailParam->dwDstParam, pPetAvailParam->nBase, pPetAvailParam->nParam );
}
TRACE( "GetLevelupAvailLevel\n" );
// 0Àº ¸ðµÎ 0À̾î¾ß ÇÑ´Ù.
for( i = PL_EGG; i < PL_MAX; i++ )
{
for( int j = 0; j < 100; j++ )
{
BYTE nAvailLevel = GetLevelupAvailLevel( i );
TRACE( "PetLevel=%d, AvailLevel=%d\n", i, nAvailLevel );
}
}
TRACE( "\nGetFeedEnergy\n" );
for( i = 1; i <= 100; i++ )
{
DWORD dwCost = i * 120;
WORD wEnergy = GetFeedEnergy( dwCost );
TRACE( "dwCost=%d, wEnergy=%d\n", dwCost, wEnergy );
}
TRACE( "\nGetIncrementExp\n" );
for( i = PL_D; i < PL_MAX; i++ )
TRACE( "nLevel=%d, IncrementExp=%d\n", i, GetIncrementExp( (PETLEVEL)i ) );
TRACE( "\nGetMaxEnergy\n" );
for( i = PL_D; i < PL_MAX; i++ )
TRACE( "nLevel=%d, MaxEnergy=%d\n", i, GetMaxEnergy( (PETLEVEL)i ) );
TRACE( "\nGetAddLife\n" );
for( i = 0; i < 100; i++ )
{
TRACE( "AddLife=%d\n", GetAddLife() );
}
#endif // _DEBUG
*/
return TRUE;
}