📄 bossmonsterinfo.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 + -