if ( pCharSkill ) // ¹è¿î ½ºÅ³ÀÏ °æ¿ì¿¡...
{
BOOL bADDED = FALSE;
for( int nImpact=0; nImpact<SKILL::MAX_IMPACT; ++nImpact )
{
if ( sAPPLY.sImpacts[nImpact].emADDON != EMIMPACTA_NONE )
{
WORD wLevel = pCharSkill->wLevel;
if ( bNextLevel ) wLevel = pCharSkill->wLevel + 1;
const float fADDON_VAR = sAPPLY.sImpacts[nImpact].fADDON_VAR[wLevel];
if ( 0 != fADDON_VAR )
{
if ( !bADDED )
{
AddTextNoSplit(ID2GAMEWORD("SKILL_CATEGORY", 5),NS_UITEXTCOLOR::LIGHTSKYBLUE);
bADDED = TRUE;
}
float fADDON_VAR_SCALE = fADDON_VAR * COMMENT::IMPACT_ADDON_SCALE[sAPPLY.sImpacts[nImpact].emADDON];
if ( COMMENT::IsIMPACT_ADDON_PER(sAPPLY.sImpacts[nImpact].emADDON) )
{
strText.Format ( "%s:%2.2f%%", COMMENT::IMPACT_ADDON[sAPPLY.sImpacts[nImpact].emADDON].c_str(), fADDON_VAR_SCALE );
}
else
{
strText.Format ( "%s:%2.2f", COMMENT::IMPACT_ADDON[sAPPLY.sImpacts[nImpact].emADDON].c_str(), fADDON_VAR_SCALE );
}
AddTextNoSplit(strText, NS_UITEXTCOLOR::PRIVATE );
}
}
}
}
// Ư¼öÈ¿°ú
if ( pCharSkill ) // ¹è¿î ½ºÅ³ÀÏ °æ¿ì¿¡...
{
WORD wLevel = pCharSkill->wLevel;
if ( bNextLevel ) wLevel = pCharSkill->wLevel + 1;
BOOL bADDED = FALSE;
for( int nSpec=0; nSpec<SKILL::MAX_SPEC; ++nSpec )
{
const SKILL::SSPEC& sSPEC = sAPPLY.sSpecs[nSpec].sSPEC[wLevel];
if ( sAPPLY.sSpecs[nSpec].emSPEC != EMSPECA_NULL )
{
if ( sAPPLY.sSpecs[nSpec].emSPEC == EMSPECA_PROHIBIT_POTION ) continue;
if ( !bADDED )
{
AddTextNoSplit(ID2GAMEWORD("SKILL_CATEGORY", 6),NS_UITEXTCOLOR::LIGHTSKYBLUE);
bADDED = TRUE;
}
strText.Format ( "%s:%s", ID2GAMEWORD("SKILL_SPEC_TYPE", 0), COMMENT::SPEC_ADDON[sAPPLY.sSpecs[nSpec].emSPEC].c_str() );
AddTextNoSplit(strText, NS_UITEXTCOLOR::PRIVATE );
strText.Empty();
CString strTemp;
if ( sAPPLY.sSpecs[nSpec].emSPEC == EMSPECA_NONBLOW || sAPPLY.sSpecs[nSpec].emSPEC == EMSPECA_RECBLOW )
{
if ( sSPEC.dwFLAG & DIS_NUMB )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_NUMB].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_STUN )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_STUN].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_STONE )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_STONE].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_BURN )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_BURN].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_FROZEN )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_FROZEN].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_MAD )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_MAD].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_POISON )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_POISON].c_str() );
strText += strTemp;
}
if ( sSPEC.dwFLAG & DIS_CURSE )
{
strTemp.Format ( "%s ", COMMENT::BLOW[EMBLOW_CURSE].c_str() );
strText += strTemp;
}
}
// ¹ßµ¿ ½ºÅ³
else if ( sAPPLY.sSpecs[nSpec].emSPEC == EMSPECA_DEFENSE_SKILL_ACTIVE )
{
GLSKILL* pSkillTemp = GLSkillMan::GetInstance().GetData( sSPEC.dwNativeID );
if ( pSkillTemp )
{
strTemp.Format ( "%s Lv%d", pSkillTemp->GetName(),sSPEC.dwFLAG );
strText += strTemp;
}
}
/*debuff skill logic, Juver, 2017/06/10 */
else if ( sAPPLY.sSpecs[nSpec].emSPEC == EMSPECA_BUFF_REMOVE )
{
strTemp.Format ( "%s", COMMENT::SKILL_ACTION_TYPE[sSPEC.dwFLAG].c_str() );
strText += strTemp;
}
if ( strText.GetLength () )
{
AddTextNoSplit(strText, NS_UITEXTCOLOR::PRIVATE );
}
// Ư¼öÈ¿°ú°¡ ¾øÀ½ À϶§´Â ȸ鿡 º¸¿©ÁÖÁö ¾Êµµ·Ï Àӽà ¼öÁ¤~
// Ư¼öÈ¿°ú°¡ ¾øÀ½ À϶§´Â Åø¿¡¼ Á÷Á¢ °ª¿¡ 0À» ³Öµµ·Ï ¹Ù²Ù´Â°Ô ÁÁ´Ù ( ÁØÇõ )
if ( 0 != sSPEC.fVAR1 )
{
if( COMMENT::SPEC_ADDON_VAR1[EMSPECA_NULL] != COMMENT::SPEC_ADDON_VAR1[sAPPLY.sSpecs[nSpec].emSPEC] )
{
float fVAR1_SCALE = sSPEC.fVAR1 * COMMENT::SPEC_ADDON_VAR1_SCALE[sAPPLY.sSpecs[nSpec].emSPEC];
if ( COMMENT::IsSPEC_ADDON1_PER(sAPPLY.sSpecs[nSpec].emSPEC) )
strText.Format ( "%s:%2.2f%%", COMMENT::SPEC_ADDON_VAR1[sAPPLY.sSpecs[nSpec].emSPEC].c_str(), fVAR1_SCALE );
else
strText.Format ( "%s:%2.2f", COMMENT::SPEC_ADDON_VAR1[sAPPLY.sSpecs[nSpec].emSPEC].c_str(), fVAR1_SCALE );
AddTextNoSplit(strText, NS_UITEXTCOLOR::PRIVATE );
}
}
if ( 0 != sSPEC.fVAR2 )
{
if( COMMENT::SPEC_ADDON_VAR2[EMSPECA_NULL] != COMMENT::SPEC_ADDON_VAR2[sAPPLY.sSpecs[nSpec].emSPEC] )
{
float fVAR2_SCALE = sSPEC.fVAR2 * COMMENT::SPEC_ADDON_VAR2_SCALE[sAPPLY.sSpecs[nSpec].emSPEC];
if ( COMMENT::IsSPEC_ADDON2_PER(sAPPLY.sSpecs[nSpec].emSPEC) )
strText.Format ( "%s:%2.1f%%", COMMENT::SPEC_ADDON_VAR2[sAPPLY.sSpecs[nSpec].emSPEC].c_str(), fVAR2_SCALE );
else
strText.Format ( "%s:%2.1f", COMMENT::SPEC_ADDON_VAR2[sAPPLY.sSpecs[nSpec].emSPEC].c_str(), fVAR2_SCALE );
AddTextNoSplit(strText, NS_UITEXTCOLOR::PRIVATE );
}
}
}
}
}
BOOL bNOT_LEARN = wDispLevel==0;
// ¿ä±¸Ä¡ Á¤º¸
if ( (!bMaster && bNextLevel) || bNOT_LEARN )
{
AddTextNoSplit(ID2GAMEWORD("SKILL_CATEGORY", 7),NS_UITEXTCOLOR::LIGHTSKYBLUE);
WORD wNextLevel = wDispLevel;
GLCharacter* const pCharacter = GLGaeaClient::GetInstance().GetCharacter();
SKILL::SLEARN& sLEARN = pSkill->m_sLEARN;
SKILL::SLEARN_LVL& sLVL = sLEARN.sLVL_STEP[wNextLevel];
// 1. ¿ä±¸º¸À¯½ºÅ³
SNATIVEID NeedSkillID = pSkill->m_sLEARN.sSKILL;
if ( NeedSkillID != NATIVEID_NULL() )
{
BOOL bVALID = FALSE;
BOOL bNeedSkillLevel = FALSE;
CString strNeedSkillName;
CString strNeedSkillLevel;
PGLSKILL pNeedSkill = GLSkillMan::GetInstance().GetData ( NeedSkillID.wMainID, NeedSkillID.wSubID );
if( pNeedSkill ) strNeedSkillName.Format("%s:%s", ID2GAMEWORD( "SKILL_ADVANCED_INFO", 0), pNeedSkill->GetName() );
bVALID = pCharacter->ISLEARNED_SKILL ( NeedSkillID );
// 2. ¿ä±¸º¸À¯½ºÅ³·¹º§
if ( 0 < sLVL.dwSKILL_LVL )
{
strNeedSkillLevel.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO", 1), (sLVL.dwSKILL_LVL + 1) );
bNeedSkillLevel = TRUE;
SCHARDATA2::SKILL_MAP& map = pCharacter->m_ExpSkills;
SCHARDATA2::SKILL_MAP_ITER iter = map.find ( NeedSkillID.dwID );
if ( iter != map.end() )
{
SCHARSKILL& rCharSkill = (*iter).second;
// »ö Á¶Àý
bVALID = rCharSkill.wLevel >= sLVL.dwSKILL_LVL;
}
}
AddTextNoSplit(strNeedSkillName,NS_UITEXTCONTROL::GetEvaluateColor ( bVALID ));
if ( bNeedSkillLevel )
AddTextNoSplit(strNeedSkillLevel, NS_UITEXTCONTROL::GetEvaluateColor ( bVALID ) );
}
// 3. ¿ä±¸°æÇèÄ¡
if ( 0 < sLVL.dwSKP )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO", 2), sLVL.dwSKP);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_dwSkillPoint >= sLVL.dwSKP ) );
}
// 4. ¿ä±¸·¹º§
if ( 0 < sLVL.dwLEVEL )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO", 3), sLVL.dwLEVEL);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->GETLEVEL () >= int(sLVL.dwLEVEL) ) );
}
// Á¶°Ç - ¾Ï±¤
//BOOL bValue = TRUE;
//strText.Format ( "%s", COMMENT::BRIGHT[sLEARN.emBRIGHT].c_str() );
//if ( sLEARN.emBRIGHT != BRIGHT_BOTH )
//{
// if ( pCharacter->GETBRIGHT() != sLEARN.emBRIGHT )
// {
// bValue = FALSE;
// }
//}
//AddTextNoSplit ( strText, NS_UITEXTCONTROL::GetEvaluateColor ( bValue ) );
// Stats
// 1. ¿ä±¸Èû
if ( 0 < sLVL.sSTATS.wPow )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 0), sLVL.sSTATS.wPow);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wPow >= sLVL.sSTATS.wPow ) );
}
// 2. ¿ä±¸Ã¼·Â
if ( 0 < sLVL.sSTATS.wStr )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 1), sLVL.sSTATS.wStr);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wStr >= sLVL.sSTATS.wStr ) );
}
// 3. ¿ä±¸Á¤½Å
if ( 0 < sLVL.sSTATS.wSpi )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 2), sLVL.sSTATS.wSpi);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wSpi >= sLVL.sSTATS.wSpi ));
}
// 4. ¿ä±¸¹Îø
if ( 0 < sLVL.sSTATS.wDex )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 3), sLVL.sSTATS.wDex);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wDex >= sLVL.sSTATS.wDex ) );
}
// 5. ¿ä±¸Áö·Â
if ( 0 < sLVL.sSTATS.wInt )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 4), sLVL.sSTATS.wInt);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wInt >= sLVL.sSTATS.wInt ) );
}
// 6. ¿ä±¸±Ù·Â
if ( 0 < sLVL.sSTATS.wSta )
{
strText.Format("%s:%d",ID2GAMEWORD( "SKILL_ADVANCED_INFO_STATS", 5), sLVL.sSTATS.wSta);
AddTextNoSplit(strText, NS_UITEXTCONTROL::GetEvaluateColor ( pCharacter->m_sSUMSTATS.wPow >= sLVL.sSTATS.wSta ) );
}
}
if ( bNextLevel ) return ;
// °£´ÜÇÑ ¼³¸í
if( !pSkill->GetDesc() ) return;
int StrLength = static_cast<int>( strlen( pSkill->GetDesc() ) );
if ( StrLength )
{
AddTextNoSplit ( ID2GAMEWORD ( "SKILL_CATEGORY", 8 ), NS_UITEXTCOLOR::LIGHTSKYBLUE );
AddTextLongestLineSplit ( pSkill->GetDesc(), NS_UITEXTCOLOR::DEFAULT );
}
}
void LOAD ( const SNATIVEID& sNativeID, const BOOL bNextLevel )
{
if ( sNativeID != NATIVEID_NULL() )
{
BOOL bUPDATE = FALSE;
if (( bNextLevel != m_bNextLevel_BEFORE_FRAME ) ||
( sNativeID != m_sNativeIDBack) )
{
bUPDATE = TRUE;
}
if ( bUPDATE )
{
PGLSKILL pSkill = GLSkillMan::GetInstance().GetData ( sNativeID.wMainID, sNativeID.wSubID );
if ( pSkill ) // ½ºÅ³ÀÌ Á¸ÀçÇÒ °æ¿ì
{
RemoveAllInfo ();
SCHARSKILL* pCharSkill = GLGaeaClient::GetInstance().GetCharacter()->GETLEARNED_SKILL ( sNativeID );
LOAD ( pSkill, pCharSkill, bNextLevel );
}
m_sNativeIDBack = sNativeID;
m_bNextLevel_BEFORE_FRAME = bNextLevel;
}
}
}
};