⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skillobjectsingleunit_attack.cpp

📁 墨香最新私服
💻 CPP
字号:
// SkillObjectSingleUnit_Attack.cpp: implementation of the CSkillObjectSingleUnit_Attack class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SkillObjectSingleUnit_Attack.h"

#ifdef _MAPSERVER_
#include "PackedData.h"
#include "AttackManager.h"
#include "SkillObject_server.h"
#include "Battle.h"
#else
#include "ObjectManager.h"
#include "ObjectActionManager.h"
#include "Gamein.h"
#include "SkillObject_Client.h"
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSkillObjectSingleUnit_Attack::CSkillObjectSingleUnit_Attack(DWORD SingleUnitNum)
: CSkillObjectSingleUnit(SingleUnitNum)
{
	m_PNTarget = SKILLRESULTKIND_NEGATIVE;
}

CSkillObjectSingleUnit_Attack::~CSkillObjectSingleUnit_Attack()
{

}

void CSkillObjectSingleUnit_Attack::DoInit(CSkillInfo* pSkillInfo,WORD SkillLevel)
{
	m_PhysicalAttack = 0;
	m_AttribAttack = pSkillInfo->GetContinueAttAttack(SkillLevel);
	m_Attrib = pSkillInfo->GetAttrib();
	m_AttAttackRate = pSkillInfo->GetContinueAttAttackRate(SkillLevel);
}

void CSkillObjectSingleUnit_Attack::Operate(SKILLOBJECT_INFO* pSkillObjectInfo,CSkillObjectTargetList* pTargetList)
{
	CObject* pOperator = m_pSkillObject->GetOperator();
	MSG_SKILL_SINGLE_RESULT msg;
	msg.InitMsg(pSkillObjectInfo->SkillObjectIdx,GetSingleUnitNum());

	CTargetListIterator iter(&msg.TargetList);
	
	CObject* pObject;
	BYTE bTargetKind;
	RESULTINFO damageinfo;
	pTargetList->SetPositionHead();
	while(pTargetList->GetNextTarget(m_PNTarget,&pObject,&bTargetKind))	// 傍拜篮 Negative
	{
		if((bTargetKind & SKILLRESULTKIND_NEGATIVE) == FALSE)
			continue;
		
#ifdef _MAPSERVER_
		if(pOperator->GetBattle())
		if(pOperator->GetBattle()->IsEnemy(pOperator,pObject) == FALSE)
		{
			continue;
		}

		ATTACKMGR->Attack(TRUE, pOperator, pObject, 0, m_PhysicalAttack,	m_Attrib,
									m_AttribAttack, m_AttribAttack, m_AttAttackRate,
									0,
									&damageinfo,
									FALSE);	// FALSE 绰 Single Unit篮 墨款磐 单固瘤 绝澜
#else
		damageinfo.Clear();
		damageinfo.RealDamage = rand() % 100 + 1;
		damageinfo.ShieldDamage = rand() % 30;
		damageinfo.CounterDamage = 0;
#endif

		iter.AddTargetWithResultInfo(pObject->GetID(),bTargetKind,&damageinfo);
	}

	iter.Release();

#ifdef _MAPSERVER_
	PACKEDDATA_OBJ->QuickSend(pOperator,&msg,msg.GetMsgLength());
#else
	// for testclient
	GAMEIN->NetworkMsgParse(msg.Category,msg.Protocol,&msg);
#endif
}


#ifdef _MHCLIENT_
void CSkillObjectSingleUnit_Attack::StartSingleUnitEffect(CObject* pOperator,CTargetList* pTList)
{
	CObject* pObject;
	CTargetListIterator iter(pTList);
	RESULTINFO rinfo;
	while(iter.GetNextTarget())
	{
		pObject = OBJECTMGR->GetObject(iter.GetTargetID());
		if(pObject == NULL)
			continue;

		iter.GetTargetData(&rinfo);

		/*
		// 瘤加瓤苞钎矫
		ySWITCH(m_Attrib)
			yCASE(ATTR_FIRE)	EFFECTMGR->StartSkillMainTainEffect(650,pObject);
			yCASE(ATTR_TREE)	EFFECTMGR->StartSkillMainTainEffect(653,pObject);
			yCASE(ATTR_NOATTR)	EFFECTMGR->StartSkillMainTainEffect(653,pObject);	// 刀
		yENDSWITCH
		// 650	瘤加单固瘤 (拳)		加己 单固瘤瘤加 蔼>0	加己 蔼捞 1(拳)				
		// 653	瘤加单固瘤 (格)		加己 单固瘤瘤加 蔼>0	加己 蔼捞 3(格)				
		*/

		OBJECTACTIONMGR->ApplyResult(pObject,pOperator,&rinfo,eDamageKind_ContinueDamage);
		/*
		OBJECTACTIONMGR->Damage(pObject,pOperator,eDamageKind_Front,rinfo.RealDamage,rinfo.ShieldDamage,rinfo.bCritical);
		
		DWORD CounterDamage = rinfo.CounterDamage;
		if(CounterDamage != 0)
			OBJECTACTIONMGR->Damage(pOperator,pObject,eDamageKind_Counter,CounterDamage,0,FALSE);
		
		if(pObject->IsDied())		// 磷菌促
		{
			OBJECTACTIONMGR->Die(pObject,pOperator,FALSE);	// 弊成 磷扁
		}
		*/
	}
	iter.Release();
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -