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

📄 patternnpc.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// PatternNPC.cpp: implementation of the CPatternNPC class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PatternNPC.h"
#include "Monster.h"
#include <time.h>


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

CPatternNPC::CPatternNPC()
{
//	m_dwCurSearchTime = NULL;
//	m_dwTmpSearchTime = NULL;
//	m_dwLastSearchTime = NULL;
//	m_bFirstSearch = FALSE;
	srand((unsigned)time(NULL));
}

CPatternNPC::~CPatternNPC()
{

}

BOOL CPatternNPC::MonsterAreaCheck(CMonster* pMonster)
{

//	VECTOR3 RegenPos = pMonster->
	return FALSE;
}

void CPatternNPC::MonsterPatternManager(CMonster* pMonster, BYTE StateFlag)
{
/*	if(!pMonster->GetFirstSearch())
	{
//		m_dwCurSearchTime = m_dwTmpSearchTime = m_dwLastSearchTime = gCurTime;
		pMonster->SetCurSearchTime(gCurTime);
		pMonster->SetTmpSearchTime(gCurTime);
		pMonster->SetLastSearchTime(gCurTime);

		StateFlag = MonsterSearchTarget(pMonster);
		pMonster->SetFirstSearch(TRUE);
	}
	else
	{
		pMonster->SetCurSearchTime(gCurTime);
		pMonster->SetTmpSearchTime(pMonster->GetCurSearchTime() - pMonster->GetLastSearchTime());
		if(pMonster->GetTmpSearchTime() > GAMERESRCMNGR->GetMonsterInfo(pMonster->GetMonsterKind())->SearchTime * 1)
		{
			StateFlag = MonsterSearchTarget(pMonster);
			pMonster->SetLastSearchTime(pMonster->GetCurSearchTime());
		}

	}
	
	//////////////////////////////////////////////////////////////////////////
	// 阁胶磐档 粱 奖矫促... -_-+ [3/18/2003]
	if(pMonster->Rest(gTickTime) == FALSE)
		return;

	if(pMonster->GetState() == eObjectState_Die) return;
	
	switch(StateFlag)
	{
	case PEACE_STATE:
		PeacePattern(pMonster);
		break;
	case ANGER_STATE:
		AngerPattern(pMonster);
		break;
	case ATTACK_STATE:
		AttackPattern(pMonster);
		break;
	}*/
}

void CPatternNPC::NpcPatternManager(CNpc* pNpc, BYTE StateFlag)
{
/*	switch(StateFlag)
	{
	case PEACE_STATE:
		PeacePattern(pMonster);
		break;
	case ANGER_STATE:
		AngerPattern(pMonster);
		break;
	case ATTACK_STATE:
		AttackPattern(pMonster);
		break;
	}*/
}

BYTE CPatternNPC::MonsterSearchTarget(CMonster* pMonster)
{
//	BYTE state = pMonster->GetMonsterState()->GetCurState();
//	BYTE Kind = pMonster->GetObjectKind();
//	BYTE dist = 9;

//	CPlayer* pPeacePlayer = (CPlayer*)g_pServerSystem->GetGridSystem()->FindPlayerInRange(0, CCharMove::GetPosition(pMonster), GAMERESRCMNGR->GetMonsterInfo(Kind)->MoveArea);
//	CPlayer* pAngerPlayer = (CPlayer*)GAMESYSTEM_OBJ->GetGridSystem()->FindPlayerInRange(0, CCharMove::GetPosition(pMonster), GAMERESRCMNGR->GetMonsterInfo(Kind)->AngryArea);
//	WORD AttDist = GAMERESRCMNGR->GetMonsterInfo(Kind)->Attack1Distance;
//	WORD SearchDist = GAMERESRCMNGR->GetMonsterInfo(Kind)->SearchArea;
//	CPlayer* SearchPlayer = (CPlayer*)g_pServerSystem->GetGridSystem()->FindPlayerInRange(0, CCharMove::GetPosition(pMonster), SearchDist);
//	CPlayer* AttPlayer = (CPlayer*)g_pServerSystem->GetGridSystem()->FindPlayerInRange(0, CCharMove::GetPosition(pMonster), 500);
//	WORD tmp1 = GAMERESRCMNGR->GetMonsterInfo(Kind)->MoveArea;
////	if(pPeacePlayer)
//	{
//		if(pAngerPlayer)
//		{
/*	if(SearchPlayer)
	{
		if(AttPlayer)
		{
			pMonster->SetTargetPlayer(AttPlayer);
			pMonster->SetTargetObjectPos(CCharMove::GetPosition(AttPlayer));
			pMonster->GetMonsterState()->SetCurState(ATTACK_STATE);
		}
		else
		{
//				pMonster->SetTargetPlayer(pAngerPlayer);
//				pMonster->SetTargetPlayer(pPeacePlayer);
//				pMonster->SetTargetObjectPos(CCharMove::GetPosition(pPeacePlayer));
//				pMonster->GetMonsterState()->SetCurState(ANGER_STATE);
			pMonster->GetMonsterState()->SetCurState(PEACE_STATE);
		}
	}
	
//		}
//		else
//		{
//			pMonster->SetTargetPlayer(pPeacePlayer);
//			pMonster->SetTargetObjectPos(CCharMove::GetPosition(pPeacePlayer));
//			pMonster->GetMonsterState()->SetCurState(PEACE_STATE);
//		}
//	}
//	else
//	{
//		pMonster->GetMonsterState()->SetCurState(PEACE_STATE);
//	}*/
	return 1;
}


void CPatternNPC::PeacePattern(CMonster* pMonster)
{
	switch(pMonster->GetMonsterKind())
	{
	case eParakho_L:
	case eParakho:
	case eParakho_S:			ParakhoPeace(pMonster); break;
	case eHucpyobom_L:
	case eHucpyobom:
	case eHucpyobom_S:			HucpyobomPeace(pMonster); break;
	case eCoyente_L:
	case eCoyente:
	case eCoyente_S:			CoyentePeace(pMonster); break;
	case eHyelgwiso_L:
	case eHyelgwiso:
	case eHyelgwiso_S:			HyelgwisoPeace(pMonster); break;
	case eGorilra_L:	
	case eGorilra:	
	case eGorilra_S:			GorilraPeace(pMonster); break;
	case eNokrimdo_L:
	case eNokrimdo:
	case eNokrimdo_S:			NokrimdoPeace(pMonster); break;
	case eGom_L:	
	case eGom:	
	case eGom_S:				GomPeace(pMonster); break;
	case eTochawo_L:
	case eTochawo:
	case eTochawo_S:			TochawoPeace(pMonster); break;
	case eYeti_L:	
	case eYeti:	
	case eYeti_S:				YetiPeace(pMonster); break;
	case eGongGwi_L:
	case eGongGwi:
	case eGongGwi_S:			GongGwiPeace(pMonster); break;
	case eHorangie_L:	
	case eHorangie:	
	case eHorangie_S:			HorangiePeace(pMonster); break;
	case eDongyounginja_L:
	case eDongyounginja:
	case eDongyounginja_S:		DongyounginjaPeace(pMonster); break;
	case eYewa_L:
	case eYewa:
	case eYewa_S:				YewaPeace(pMonster); break;
	case eSanso_L:
	case eSanso:
	case eSanso_S:				SansoPeace(pMonster); break;
	case eAlyou_L:
	case eAlyou:
	case eAlyou_S:				AlyouPeace(pMonster); break;
	case eSagalru_L:
	case eSagalru:
	case eSagalru_S:			SagalruPeace(pMonster); break;
	case ePyobom_L:
	case ePyobom:
	case ePyobom_S:				PyobomPeace(pMonster); break;
	case eYekgwi_L:
	case eYekgwi:
	case eYekgwi_S:				YekgwiPeace(pMonster); break;
	case eImugi_L:
	case eImugi:
	case eImugi_S:				ImugiPeace(pMonster); break;
	case eSamurai_L:	
	case eSamurai:	
	case eSamurai_S:			SamuraiPeace(pMonster); break;
	case eBunwun_L:
	case eBunwun:
	case eBunwun_S:				BunwunPeace(pMonster); break;
	case eMokbigwi_L:	
	case eMokbigwi:	
	case eMokbigwi_S:			MokbigwiPeace(pMonster); break;
	case eSuckgein_L:	
	case eSuckgein:	
	case eSuckgein_S:			SuckgeinPeace(pMonster); break;
	case eHu_L:	
	case eHu:	
	case eHu_S:					HuPeace(pMonster); break;
	case eInmeundanrang_L:
	case eInmeundanrang:
	case eInmeundanrang_S:		InmeundanrangPeace(pMonster); break;
	case eNokrimchejuPe_L:
	case eNokrimchejuPe:
	case eNokrimchejuPe_S:		NokrimchejuPeace(pMonster); break;
	case eMujiki_L:
	case eMujiki:
	case eMujiki_S:				MujikiPeace(pMonster); break;
	case eBarki_L:
	case eBarki:
	case eBarki_S:				BarkiPeace(pMonster); break;
	case eHwan_L:	
	case eHwan:	
	case eHwan_S:				HwanPeace(pMonster); break;
	case eYoumyou_L:
	case eYoumyou:
	case eYoumyou_S:			YoumyouPeace(pMonster); break;
	case eSansin_L:
	case eSansin:
	case eSansin_S:				SansinPeace(pMonster); break;
	case eSagaik_L:
	case eSagaik:
	case eSagaik_S:				SagaikPeace(pMonster); break;
	case eBuHey_L:
	case eBuHey:
	case eBuHey_S:				BuHeyPeace(pMonster); break;
	case eHeulkyojangro_L:
	case eHeulkyojangro:
	case eHeulkyojangro_S:		HeulkyojangroPeace(pMonster); break;
	case eKangsi_L:
	case eKangsi:
	case eKangsi_S:				KangsiPeace(pMonster); break;
	case eHungchun_L:	
	case eHungchun:	
	case eHungchun_S:			HungchunPeace(pMonster); break;
	case eTa_L:
	case eTa:
	case eTa_S:					TaPeace(pMonster); break;
	case eSanjewangPeac_L:
	case eSanjewangPeac:
	case eSanjewangPeac_S:		SanjewangPeace(pMonster);break;
	case eBackho_L:
	case eBackho:
	case eBackho_S:				BackhoPeace(pMonster); break;
	case eKumong_L:
	case eKumong:
	case eKumong_S:				KumongPeace(pMonster); break;
	case eWomawang_L:
	case eWomawang:
	case eWomawang_S:			WomawangPeace(pMonster); break;
	case eJujak_L:
	case eJujak:
	case eJujak_S:				JujakPeace(pMonster); break;
	case eHyunmu_L:
	case eHyunmu:
	case eHyunmu_S:				HyunmuPeace(pMonster); break;
	case eKirin_L:
	case eKirin:
	case eKirin_S:				KirinPeace(pMonster); break;
	case eYoung_L:
	case eYoung:
	case eYoung_S:				YoungPeace(pMonster); break;
	}
}

void CPatternNPC::AngerPattern(CMonster* pMonster)
{
	switch(pMonster->GetMonsterKind())
	{
	case eParakho_L:
	case eParakho:
	case eParakho_S:			ParakhoAnger(pMonster); break;
	case eHucpyobom_L:
	case eHucpyobom:
	case eHucpyobom_S:			HucpyobomAnger(pMonster); break;
	case eCoyente_L:
	case eCoyente:
	case eCoyente_S:			CoyenteAnger(pMonster); break;
	case eHyelgwiso_L:
	case eHyelgwiso:
	case eHyelgwiso_S:			HyelgwisoAnger(pMonster); break;
	case eGorilra_L:	
	case eGorilra:	
	case eGorilra_S:			GorilraAnger(pMonster); break;
	case eNokrimdo_L:
	case eNokrimdo:
	case eNokrimdo_S:			NokrimdoAnger(pMonster); break;
	case eGom_L:	
	case eGom:	
	case eGom_S:				GomAnger(pMonster); break;
	case eTochawo_L:
	case eTochawo:
	case eTochawo_S:			TochawoAnger(pMonster); break;
	case eYeti_L:	
	case eYeti:	
	case eYeti_S:				YetiAnger(pMonster); break;
	case eGongGwi_L:
	case eGongGwi:
	case eGongGwi_S:			GongGwiAnger(pMonster); break;
	case eHorangie_L:	
	case eHorangie:	
	case eHorangie_S:			HorangieAnger(pMonster); break;
	case eDongyounginja_L:
	case eDongyounginja:
	case eDongyounginja_S:		DongyounginjaAnger(pMonster); break;
	case eYewa_L:
	case eYewa:
	case eYewa_S:				YewaAnger(pMonster); break;
	case eSanso_L:
	case eSanso:
	case eSanso_S:				SansoAnger(pMonster); break;
	case eAlyou_L:
	case eAlyou:
	case eAlyou_S:				AlyouAnger(pMonster); break;
	case eSagalru_L:
	case eSagalru:
	case eSagalru_S:			SagalruAnger(pMonster); break;
	case ePyobom_L:
	case ePyobom:
	case ePyobom_S:				PyobomAnger(pMonster); break;
	case eYekgwi_L:
	case eYekgwi:
	case eYekgwi_S:				YekgwiAnger(pMonster); break;
	case eImugi_L:
	case eImugi:
	case eImugi_S:				ImugiAnger(pMonster); break;
	case eSamurai_L:	
	case eSamurai:	
	case eSamurai_S:			SamuraiAnger(pMonster); break;
	case eBunwun_L:
	case eBunwun:
	case eBunwun_S:				BunwunAnger(pMonster); break;
	case eMokbigwi_L:	
	case eMokbigwi:	
	case eMokbigwi_S:			MokbigwiAnger(pMonster); break;
	case eSuckgein_L:	
	case eSuckgein:	
	case eSuckgein_S:			SuckgeinAnger(pMonster); break;
	case eHu_L:	
	case eHu:	
	case eHu_S:					HuAnger(pMonster); break;
	case eInmeundanrang_L:
	case eInmeundanrang:
	case eInmeundanrang_S:		InmeundanrangAnger(pMonster); break;
	case eNokrimchejuPe_L:
	case eNokrimchejuPe:
	case eNokrimchejuPe_S:		NokrimchejuAnger(pMonster); break;
	case eMujiki_L:
	case eMujiki:
	case eMujiki_S:				MujikiAnger(pMonster); break;
	case eBarki_L:
	case eBarki:
	case eBarki_S:				BarkiAnger(pMonster); break;
	case eHwan_L:	
	case eHwan:	
	case eHwan_S:				HwanAnger(pMonster); break;
	case eYoumyou_L:
	case eYoumyou:
	case eYoumyou_S:			YoumyouAnger(pMonster); break;
	case eSansin_L:
	case eSansin:
	case eSansin_S:				SansinAnger(pMonster); break;
	case eSagaik_L:
	case eSagaik:
	case eSagaik_S:				SagaikAnger(pMonster); break;
	case eBuHey_L:
	case eBuHey:
	case eBuHey_S:				BuHeyAnger(pMonster); break;
	case eHeulkyojangro_L:
	case eHeulkyojangro:
	case eHeulkyojangro_S:		HeulkyojangroAnger(pMonster); break;
	case eKangsi_L:
	case eKangsi:
	case eKangsi_S:				KangsiAnger(pMonster); break;
	case eHungchun_L:	
	case eHungchun:	
	case eHungchun_S:			HungchunAnger(pMonster); break;
	case eTa_L:
	case eTa:
	case eTa_S:					TaAnger(pMonster); break;
	case eSanjewangPeac_L:
	case eSanjewangPeac:
	case eSanjewangPeac_S:		SanjewangAnger(pMonster);break;
	case eBackho_L:
	case eBackho:
	case eBackho_S:				BackhoAnger(pMonster); break;
	case eKumong_L:
	case eKumong:
	case eKumong_S:				KumongAnger(pMonster); break;
	case eWomawang_L:
	case eWomawang:
	case eWomawang_S:			WomawangAnger(pMonster); break;
	case eJujak_L:
	case eJujak:
	case eJujak_S:				JujakAnger(pMonster); break;
	case eHyunmu_L:
	case eHyunmu:
	case eHyunmu_S:				HyunmuAnger(pMonster); break;
	case eKirin_L:
	case eKirin:
	case eKirin_S:				KirinAnger(pMonster); break;
	case eYoung_L:
	case eYoung:

⌨️ 快捷键说明

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