void CMover::InitLevel( int nJob, LONG nLevel, BOOL bGamma )
{
#ifdef __WORLDSERVER
// ¿î¿µÀÚ ¸í·ÉÀ¸·Î ·¹º§¾÷ Çϴ°÷ÀÓ
MoverProp* pProp = GetProp();
if( pProp )
{
// ¹æ¶ûÀÚ ½ºÅ³ °ª °¡Áö°í ÀÖ±â.
int nJobSkillBuf[MAX_JOB_SKILL];
int nJobSkillLevelBuf[MAX_JOB_SKILL];
for( int i = 0 ; i < MAX_JOB_SKILL ; ++i )
{
nJobSkillBuf[ i ] = m_aJobSkill[ i ].dwSkill;
nJobSkillLevelBuf[ i ] = m_aJobSkill[ i ].dwLevel;
}
ZeroMemory( m_aJobSkill, sizeof( m_aJobSkill ) );
LPSKILL lpSkill;
// À⽺ų ÃʱâÈ
for( i = 0; i < MAX_SKILL_JOB; i++ )
{
m_aJobSkill[ i ].dwSkill = NULL_ID;
m_aJobSkill[ i ].dwLevel = 0;
}
// 1. ¹æ¶ûÀÚ ½ºÅ³Àº ±×³É Áö±Þ
m_nJob = JOB_VAGRANT;
ItemProp** apSkillProp = prj.m_aJobSkill[ m_nJob ];
int nJobNum = prj.m_aJobSkillNum[ m_nJob ];
for( i = 0; i < nJobNum; i++ )
{
ItemProp* pSkillProp = apSkillProp[ i ];
lpSkill = &m_aJobSkill[ i ];
lpSkill->dwSkill = pSkillProp->dwID;
}
// 2. ±âº» ´É·ÂÄ¡ ÃʱâÈ
m_nLevel = 1;
m_nStr = m_nSta = m_nDex = m_nInt = 15;
m_nRemainGP = 0;
m_nSkillLevel = 0;
m_nSkillPoint = 0;
// 3. LP, GP, Á÷¾÷
for( i = 1 ; i < nLevel ; i++ )
{
m_nLevel = i + 1;
m_nRemainGP += prj.m_aExpCharacter[ m_nLevel ].dwLPPoint;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( nJob >= MAX_PROFESSIONAL && i > 59 )
m_nRemainGP++;
if( nJob < MAX_PROFESSIONAL )
{
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_EXPERT )
{
AddChangeJob( nJob );
}
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 5 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 4 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
AddChangeJob( nJob );
}
}
else
{
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_MASTER )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 15 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 14 ) / 2 );
}
}
#ifdef __3RD_LEGEND16
else if( nJob < MAX_JOB )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 31 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 30 ) / 2 );
}
}
#endif
#ifdef __AZURE_CLASS
else if( nJob < MAX_JOB )
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 39 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 38 ) / 2 );
}
}
#endif
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 23 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 22 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
if( nJob < MAX_MASTER )
{
AddChangeJob( nJob - 10 );
AddChangeJob( nJob );
}
#ifdef __3RD_LEGEND16
else if ( nJob < MAX_JOB)
{
AddChangeJob( nJob - 26 );
AddChangeJob( nJob - 16);
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
#endif
#ifdef __AZURE_CLASS
else if ( nJob < MAX_JOB)
{
AddChangeJob( nJob - 38 );
AddChangeJob( nJob - 26 );
AddChangeJob( nJob - 16);
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
#endif
else
{
AddChangeJob( nJob - 18 );
AddChangeJob( nJob - 8);
AddChangeJob( nJob );
}
}
}
#else //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( ( i + 1 ) == MAX_JOB_LEVEL )
{
if( nJob < MAX_EXPERT )
{
AddChangeJob( nJob );
}
else
{
if( nJob % 2 != 0 )
{
AddChangeJob( ( nJob - 5 ) / 2 );
}
else
{
AddChangeJob( ( nJob - 4 ) / 2 );
}
}
}
else
if( ( i + 1 ) == MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
AddChangeJob( nJob );
}