void Client::ParseBuffs(string str) { if (str.length() > 0) { std::vector<string> bufftokens; std::vector<string> tokens; boost::split(bufftokens, str, boost::is_any_of("|")); for (int i = 0; i < bufftokens.size(); ++i) { boost::split(tokens, bufftokens[i], boost::is_any_of(",")); if (tokens.size() == 3) SetBuff(tokens[0], tokens[1], _atoi64(tokens[2].c_str())); } } }
void cBuffSkillInfo::RemovePassiveStatus( CPlayer* pPlayer ) const { Status* pStatus = NULL; if( mInfo.StatusDataType == BUFF_SKILL_INFO::StatusTypeAdd ) { pStatus = pPlayer->GetPassiveStatus(); } else if( mInfo.StatusDataType == BUFF_SKILL_INFO::StatusTypePercent ) { pStatus = pPlayer->GetRatePassiveStatus(); } else { pStatus = pPlayer->GetPassiveStatus(); } SkillScript::Buff buff; buff.mKind = mInfo.Status; buff.mValue = mInfo.StatusData; // 081203 LUJ, 속성을 적용한다 SetStatus( *pPlayer, *pStatus, buff, SetSkillStatusRemove ); // 081203 LUJ, 스킬 스크립트를 적용한다 { const SkillScript& script = GAMERESRCMNGR->GetSkillScript( GetIndex() ); ::SetSkillStatus( pPlayer->GetPassiveStatus(), pPlayer->GetRatePassiveStatus(), script, SetSkillStatusRemove ); SetBuff( *pPlayer, script, SetSkillStatusRemove ); } }
void cBuffSkillInfo::RemoveBuffStatus( CObject* pTarget ) const { if(0 == pTarget) { return; } Status* status = pTarget->GetBuffStatus(); switch( mInfo.StatusDataType ) { case BUFF_SKILL_INFO::StatusTypePercent: { status = pTarget->GetRateBuffStatus(); break; } } if( ! status ) { return; } SkillScript::Buff buff; buff.mKind = mInfo.Status; buff.mValue = mInfo.StatusData; // 081203 LUJ, 속성을 적용한다 SetStatus( *pTarget, *status, buff, SetSkillStatusRemove ); // 081203 LUJ, 스킬 스크립트를 적용한다 { const SkillScript& script = GAMERESRCMNGR->GetSkillScript( GetIndex() ); ::SetSkillStatus( pTarget->GetBuffStatus(), pTarget->GetRateBuffStatus(), script, SetSkillStatusRemove ); SetBuff( *pTarget, script, SetSkillStatusRemove ); } switch( pTarget->GetObjectKind() ) { case eObjectKind_Player: { CPlayer* player = ( CPlayer* )pTarget; CHARCALCMGR->CalcCharStats( player ); break; } case eObjectKind_Pet: { CPet* pet = ( CPet* )pTarget; pet->CalcStats(); break; } } }