예제 #1
0
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()));
		}
	}
}
예제 #2
0
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 );
	}
}
예제 #3
0
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;
		}
	}
}