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

📄 bossmonsterinfo.cpp

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

#include "stdafx.h"
#include "BossMonsterInfo.h"
#include "BossMonster.h"
#include "CharacterCalcManager.h"
#include "AISystem.h"
#include "BossMonsterManager.h"
#include "RecallManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBossMonsterInfo::CBossMonsterInfo()
{
	memset(this, 0, sizeof(CBossMonsterInfo)); 
	bEnd = TRUE;
}

CBossMonsterInfo::~CBossMonsterInfo()
{

}

void CBossMonsterInfo::SetParent(CBossMonster * pBoss)
{
	m_pParent = pBoss;
}



//----------------------------------------------------------------------------------------------
// Ȳ¸ª ¼öÈ£ À屺 Ŭ·¡½º
void CGeneralBoss::OnEvent(WORD wEvent)
{
	if(!bEnd) return;
	
	switch(wEvent)
	{	
	case eBOSSEVENT_LIFE:
		{
			switch(dwRoundTime)
			{
			case 0:
				{
					if(m_pParent->GetLife() < m_pParent->GetMaxLife()/2)
					{
						GSTATEMACHINE.SetState(m_pParent, eMA_REST);
						SetTurnState(eBOSS_GENERAL_PREREADY);
					}
			
				}
				break;
			case 1:
				{
					if(m_pParent->GetLife() < m_pParent->GetMaxLife()/3)
					{
						GSTATEMACHINE.SetState(m_pParent, eMA_REST);
						SetTurnState(eBOSS_GENERAL_PREREADY);
					}
				}
				break;
			}
			
		}
		break;
	}
}
void CGeneralBoss::SetTurnState(WORD wTurn)
{
	if(!bEnd) return;
	bEnd = FALSE;

	SetTurn(wTurn);
}

void CGeneralBoss::SetTurn(WORD wTurn)
{

	wCurTurn = wTurn;
	if(wCurTurn >= eBOSS_GENERAL_MAX)
	{
		wCurTurn = eBOSS_GENERAL_MAX - 1;	
		bEnd = TRUE;
		return;
	}
	bChanged = TRUE;
	SetChangingTime();
}


void CGeneralBoss::NextTurn()
{
	SetTurn(wCurTurn+1);
}

void CGeneralBoss::SetChangingTime()
{
	switch(wCurTurn)
	{
	case eBOSS_GENERAL_PREREADY:
		{
			dwTurnChangeTime = 6000;
		}
		break;
	case eBOSS_GENERAL_ATTACK3:
		{
			dwTurnChangeTime = 6000;
		}
		break;
	case eBOSS_GENERAL_RESTDOWN:
		{
			dwTurnChangeTime = 4000;
		}
		break;
	case eBOSS_GENERAL_RECOVER:
		{
			dwTurnChangeTime = 2000;
		}
		break;
	case eBOSS_GENERAL_RECALLSTART:
		{
			dwTurnChangeTime = 3000;
		}
		break;
	case eBOSS_GENERAL_RECALLMONSTER:
		{
			dwTurnChangeTime = 9000;
		}
		break;
	case eBOSS_GENERAL_RESTUP:
		{
			dwTurnChangeTime = 6000;
		}
		break;
	case eBOSS_GENERAL_CHANGESTATE:
		{
		}
		break;
	default:
		{
			ASSERT(0);
		}
	}
}
void CGeneralBoss::ExecuteTrigger()
{
	switch(wCurTurn)
	{
	case eBOSS_GENERAL_PREREADY:
		{
		}
		break;
	case eBOSS_GENERAL_ATTACK3:
		{
			m_pParent->DoAttack((WORD)m_pParent->GetSMonsterList()->AttackIndex[2]);
		}
		break;
	case eBOSS_GENERAL_RESTDOWN:
		{
			m_pParent->DoRest(TRUE);
		}
		break;
	case eBOSS_GENERAL_RECOVER:
		{
			if(dwRoundTime == 0)
				CCharacterCalcManager::StartUpdateLife( m_pParent, (WORD)(m_pParent->GetMaxLife()/2), 5, 5000 );
			else
				CCharacterCalcManager::StartUpdateLife( m_pParent, (WORD)(m_pParent->GetMaxLife()*2/3), 5, 5000 );
		}
		break;
	case eBOSS_GENERAL_RECALLSTART:
		{
			m_pParent->DoRecall();
		}
		break;
	case eBOSS_GENERAL_RECALLMONSTER:
		{
			if(dwRoundTime == 0)
			{
				RECALLINFO * pRecallInfo = ((SMONSTER_LIST*)m_pParent->GetSMonsterList())->RecallInfoClass.GetRecallInfo(0);
				RECALLMGR->RecallObject((CMonster*)m_pParent, pRecallInfo);
			}
			//	g_pAISystem->SendMsg(eMK_Recall_Script, m_pParent->GetID(), m_pParent->GetID(), 0, 0);
			else
			{
				RECALLINFO * pRecallInfo = ((SMONSTER_LIST*)m_pParent->GetSMonsterList())->RecallInfoClass.GetRecallInfo(1);
				RECALLMGR->RecallObject((CMonster*)m_pParent, pRecallInfo);
			}
			//	g_pAISystem->SendMsg(eMK_Recall_Script, m_pParent->GetID(), m_pParent->GetID(), 0, 1);
		}
		break;
	case eBOSS_GENERAL_RESTUP:
		{
			m_pParent->DoRest(FALSE);
		}
		break;
	case eBOSS_GENERAL_CHANGESTATE:
		{
			GSTATEMACHINE.SetState(m_pParent, eMA_WALKAROUND);
			dwRoundTime++;
		}
		break;
	default:
		{
			ASSERT(0);
		}
	}
}
void CGeneralBoss::DoDie()
{
	RECALLINFO * pRecallInfo = ((SMONSTER_LIST*)m_pParent->GetSMonsterList())->RecallInfoClass.GetRecallInfo(2);
	RECALLMGR->RecallObject((CMonster*)m_pParent, pRecallInfo);
}

⌨️ 快捷键说明

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