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

📄 bossmonster.cpp

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

#include "stdafx.h"
#include "BossMonster.h"
#include "CharMove.h"
#include "SkillManager_server.h"
#include "PackedData.h"
#include "GridSystem.h"
#include "..\[CC]Header\GameResourceManager.h"
#include "BossMonsterManager.h"
#include "UserTable.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBossMonster::CBossMonster()
{
	m_pBossParam = NULL;
}

CBossMonster::~CBossMonster()
{
	if(m_pBossParam)
	{
		delete m_pBossParam;
		m_pBossParam = NULL;
	}
	
}
void CBossMonster::InitBossMonster(MONSTER_TOTALINFO* pTotalInfo)
{
	CMonster::InitMonster(pTotalInfo);
	switch(GetMonsterKind())
	{
	case eBOSSKIND_GENERAL:
		{
			m_pBossParam = new CGeneralBoss;
		}
		break;
	case eBOSSKIND_YUKJI:
		{

		}
		break;
	}
	
	m_pBossParam->SetParent(this);
}
void CBossMonster::OnEndObjectState(BYTE State)
{
	switch(State)
	{
	case eObjectState_Die:
		m_pBossParam->DoDie();
		g_pServerSystem->RemoveBossMonster(GetID());		
		break;
	}
}
void CBossMonster::DoDamage(CObject* pAttacker, RESULTINFO* pDamageInfo,DWORD beforeLife)
{
	CMonster::DoDamage(pAttacker, pDamageInfo,beforeLife);
}
void CBossMonster::SetLife(DWORD Life,BOOL bSendMsg)
{
	CMonster::SetLife(Life, bSendMsg);

	
	MSG_DWORD2 msg;
	msg.Category = MP_BOSSMONSTER;
	msg.Protocol = MP_BOSS_LIFE_NOTIFY;
	msg.dwData1 = GetLife();
	msg.dwData2 = GetMonsterKind();
	PACKEDDATA_OBJ->QuickSend(this,&msg,sizeof(msg));

	BOSSMGR->CatchEvent(this, eBOSSEVENT_LIFE);
}
void CBossMonster::SetAddMsg(char* pAddMsg,WORD* pMsgLen,DWORD dwReceiverID,BOOL bLogin)
{
	SEND_MONSTER_TOTALINFO* pMsg = (SEND_MONSTER_TOTALINFO*)pAddMsg;
	pMsg->AddableInfo.Init();

	pMsg->Category = MP_USERCONN;
	pMsg->Protocol = MP_USERCONN_BOSSMONSTER_ADD;
	pMsg->dwObjectID = dwReceiverID;
	GetSendMoveInfo(&pMsg->MoveInfo,&pMsg->AddableInfo);
	GetBaseObjectInfo(&pMsg->BaseObjectInfo);
	GetMonsterTotalInfo(&pMsg->TotalInfo);
	pMsg->bLogin = bLogin;

	*pMsgLen = pMsg->GetMsgLength();
}
CObject * CBossMonster::DoSearch()
{
	return g_pServerSystem->GetGridSystem()->FindPlayerInRange(CCharMove::GetPosition(this), (float)m_pSInfo->SearchRange, this, (BYTE)m_pSInfo->TargetSelect );
}

void CBossMonster::DoRecall()
{
	MSG_DWORD msg;
	msg.Category = MP_BOSSMONSTER;
	msg.Protocol = MP_BOSS_RECALL_NOTIFY;
	msg.dwData = GetMonsterKind();
	PACKEDDATA_OBJ->QuickSend(this,&msg,sizeof(msg));
}

void CBossMonster::DoRest(BOOL bStart)
{
	if(bStart)
	{
		MSG_DWORD msg;
		msg.Category = MP_BOSSMONSTER;
		msg.Protocol = MP_BOSS_REST_START_NOTIFY;
		msg.dwData = GetMonsterKind();
		PACKEDDATA_OBJ->QuickSend(this,&msg,sizeof(msg));
	}
	else
	{
		MSG_DWORD msg;
		msg.Category = MP_BOSSMONSTER;
		msg.Protocol = MP_BOSS_REST_END_NOTIFY;
		msg.dwData = GetMonsterKind();
		PACKEDDATA_OBJ->QuickSend(this,&msg,sizeof(msg));
	}
}

BOOL CBossMonster::DoAttack( WORD attackNum )
{
	OnStop();
	
	// yh
	if( GetState() == eObjectState_TiedUp_CanMove ||
		GetState() == eObjectState_TiedUp )
		return TRUE;

	if(m_pTObject)
	{
		// 措惑捞 乐阑 锭
		//SKILLMGR->MonsterAttack(GetCurAttackIndex(), this, m_pTObject);
		SKILLMGR->MonsterAttack(attackNum, this, m_pTObject);
	}
	else
	{
		// 措惑捞 绝阑 锭
		
		VECTOR3 decisionPoint;
		GetPosition(&decisionPoint);
		BeelinePoint(&decisionPoint, &m_MoveInfo.Move_Direction, 2000, &decisionPoint);
		SKILLMGR->MonsterAttack(attackNum, this,&decisionPoint);
	}
	
	return TRUE;
}

void CBossMonster::StateProcess()
{
	switch(GetState())
	{
	case eObjectState_Die:
		{
		}
		break;
	}
}

⌨️ 快捷键说明

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