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

📄 npc.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//
//	-	辨靛 惑隆拱牢 版快 (傍拜<->规绢)肺 函版 矫糯
////////////////////////////////////////////////////////////////////////////////////////
void NPC::MakeNewMonster()
{
	g_pMap->m_MapNPC[m_nMapLayer]->Delete( m_dwHandle );	//	秦寸 阁胶磐 沥焊甫 昏力 矫糯	
	Clear_NPC();
	
	m_dwHandle	= g_pMap->CreateTempHandle();				//	NPC Handle阑 备窃 

	//
	//	辨靛 惑隆拱牢 版快 
	//
#ifdef DEF_AZIT
	switch( m_dwDBSEQ )
	{
	//	傍拜螟 惑隆拱
	case	335	:	m_dwDBSEQ	=	336;	break;

	//	规绢螟 惑隆拱
	case	336	:	m_dwDBSEQ	=	335;	break;
	}

#endif

	SetBaseNPC( m_dwDBSEQ );								//	NPC 扁夯单捞鸥 涝仿
	
	//	--------------------------------------------------------------------------------
	//	扁檬 单捞鸥 檬扁拳 累诀
	//	--------------------------------------------------------------------------------
	m_bChangeTick		=	false;
	m_nStepNow			=	0;	
	m_pTarget			=	NULL;	
	m_nCurseDownHP		=	0;

	//	--------------------------------------------------------------------------------
	//	NPC 惑怕 函版
	//	--------------------------------------------------------------------------------
	m_nStrategy			=	m_nBaseStrategy;

	m_nStatusLevel		=	STATLVL_NORMAL;

	ChangeStatus(STATUS_STAY) ;
	
	switch(	m_nClassType  )
	{
	//	蜡聪农 阁胶磐 积己
	case	MONSTER_UNIQUE		: 
		{
			MakeUniqueMonster();
			return;
		}
		break;

	//	粮 焊胶 阁胶磐
	case	MONSTER_ZONEBOSS	:	
		{
			MakeZoneBossMonster();
			return;
		}
		break;
	}

	

	//	--------------------------------------------------------------------------------
	//	犬伏俊 蝶扼 积己 登绰 阁胶磐啊 撇妨咙
	//
	//	-	阁胶磐 Level 20捞惑 何磐 概流/饭绢
	//	--------------------------------------------------------------------------------
	if( m_nLevel < 20 )
	{
		MakeNormalMonster();
	}
	else
	{
		int	nTempRand ;

#ifdef DEF_TESTITEMDROP		
		int iRand = 199 ;

		if(_Module.IsEvent(DEF_GMCMD_RAREMONSTERSPAWN))
		{
			nTempRand =	rand()%31;
			iRand = 30 ;
		}
		else
		{
			nTempRand =	rand()%200;
		}

		if( nTempRand < iRand	)				//	老馆 阁胶磐 积己
#else

		if(_Module.IsEvent(DEF_GMCMD_RAREMONSTERSPAWN))
			nTempRand =	rand()%201;
		else
			nTempRand =	rand()%200;

		if( nTempRand < 199	)				//	老馆 阁胶磐 积己

#endif
		{
			MakeNormalMonster();
		}
		else								//	饭绢 阁胶磐 积己 
		{
#ifdef	DEF_MUTATION 	
			
			if( ( rand()%2 ) == 0 )
			{
				MakeRareMonster();			//	饭绢 阁胶磐
			}
			else
			{
				MakeMuationMonster();		//	倒楷 函捞 阁胶磐
			}

#else
			MakeRareMonster();
#endif

			
		}	
	}


}


////////////////////////////////////////////////////////////////////////////////////////
//	NPC 沥焊甫 檬扁拳 矫糯
//
//	-	UNIQUE MONSTER贸府俊 措茄 眠饶 风凭 荐沥 累诀
//	-	AZITSYMBOL 风凭眠啊	2005.02.12	Duke Kim
////////////////////////////////////////////////////////////////////////////////////////
bool NPC::SetBaseNPC( WORD pDBSEQ, bool pFirst )
{
	//	--------------------------------------------------------------------------------
	//	阁胶磐狼 扁夯 沥焊甫 涝仿矫糯
	//	--------------------------------------------------------------------------------
	_BASE_NPC_ *pBaseNPC	=  (_BASE_NPC_ *)g_Base.m_BaseNPC.Find( pDBSEQ );
	if( !pBaseNPC )	return false;
	
	//
	//	阁胶磐狼 VISAUL沥焊甫 涝仿矫糯
	//
	memset( m_pNPCList, 0x00, sizeof(_ZP_NPCLIST_REP ));

	m_pNPCList->wIndex	=	pDBSEQ;							//	DB Index	
	m_dwQuestNewBaseID	=	pDBSEQ;

	//
	//	阁胶磐狼 捞抚
	//
	memcpy(	m_csName				, pBaseNPC->strNAME, sizeof(pBaseNPC->strNAME)		);	
	memcpy( m_pNPCList->strNPCName	, pBaseNPC->strNAME, sizeof(m_pNPCList->strNPCName) );

	m_nLevel			= pBaseNPC->nLVL;					//	阁胶磐狼 饭骇
	m_nExp				= pBaseNPC->nEXP;					//	阁胶磐狼 泅犁 版氰摹
	m_nCharacterType	= pBaseNPC->nCLASS;					//	阁胶磐狼 努贰胶		
	m_pNPCList->wType	= pBaseNPC->wTYPE;					//	NPC TYPE
	
	//	--------------------------------------------------------------------------------
	//	Magic/Rare/Unique Monster眠啊
	//	--------------------------------------------------------------------------------
	//if( pFirst )		//滚弊肺 牢秦 林利 贸府		//Jason 2004-06-11
	//{	
		if( pBaseNPC->wTYPE < 100 )
		{
			m_nClassType = MONSTER_NORMAL;
		}
		else
		{
			m_nClassType = pBaseNPC->wTYPE;					//	NPC TYPE

		//	NPC牢 版快 NPC Talkable惑怕肺 函版矫糯
			m_dwAIType	|=	SETNPC_TALK;					//	NPC Talkable

		}
		
		//	----------------------------------------------------------------------------
		//	2004.01.12 Duke Kim眠啊 -> 眠饶 DB Filed沥焊肺 犬厘 矫糯
		//
		//	-	UNIQUE
		//	-	ZONE BOSS
		//	-	AZITSYMBOL	(2005.2.11	Duke Kim眠啊)
		//	----------------------------------------------------------------------------
		switch( pDBSEQ )
		{
		case	22	:	//	叼隔饭捞磐
		case	23	:	//	单静 唱捞飘
				{
					m_nClassType			=	MONSTER_UNIQUE;
					m_dwTimeSkillTickTime	=	timeGetTime();
					
					//	免泅 矫埃
					m_dwSpawnTime			=	timeGetTime() +	UNIQUE_SPAWNTIME;
					m_nUniqueBeforeTime		=	0;
				}
				break;

		case	160 :	//	单阁鸥快矾胶
		case	161 :	//	酒奔扼
				{
					m_nClassType			=	MONSTER_ZONEBOSS;
					m_dwTimeSkillTickTime	=	timeGetTime();
					
					//	免泅 矫埃
					m_dwSpawnTime			=	timeGetTime() +	UNIQUE_SPAWNTIME;
					m_nUniqueBeforeTime		=	0;
				}
				break;

#ifdef	DEF_AZIT

		//
		//	辨靛 酒瘤飘 惑隆拱
		//	
		case	335	:
		case	336	:	
				{
					m_nClassType			=	MONSTER_AZITSYMBOL;
				}
				break;
#endif	


		default		:	break;
		}
	//}
		

	if(pBaseNPC->wTYPE == 6 || pBaseNPC->wTYPE == 8 )
	{
		m_nAlign	= -1 ;
	}
	else 
	{
		m_nAlign	=  1 ;
	}	
	
		
	//	--------------------------------------------------------------------------------
	//	STAT
	//	--------------------------------------------------------------------------------
	m_nStr					= pBaseNPC->nSTR;				//	阁胶磐狼 扁夯 塞
	m_nDex					= pBaseNPC->nDEX;				//	阁胶磐狼 扁夯 刮酶
	m_nIntel				= pBaseNPC->nINTEL;				//	阁胶磐狼 扁夯 瘤仿
	m_nLuck					= pBaseNPC->nLUCK;				//	阁胶磐狼 扁夯 款

	m_nMinAttack			= (int)(pBaseNPC->nAP);			//	弥家 傍拜仿 
	m_nMaxAttack			= (int)(1.5 * pBaseNPC->nAP);	//	弥措 傍拜仿

	//	--------------------------------------------------------------------------------
	//	Set Battle Parameters
	//	--------------------------------------------------------------------------------
	m_nAP					= 0;							//	阁胶磐狼 傍拜仿

	m_nAR					= pBaseNPC->nAR;				//	阁胶磐狼 傍拜 殿鞭

	m_nDR					= pBaseNPC->nDR;				//	阁胶磐狼 规绢 殿鞭
	m_nDP					= pBaseNPC->nDP;				//	阁胶磐狼 DefensePower
	m_nBR					= pBaseNPC->nBR;				//	阁胶磐狼 喉废 饭捞飘

	m_nCR					= 50;							
	
	//	--------------------------------------------------------------------------------
	//	付过傍拜仿
	//	--------------------------------------------------------------------------------
	m_nMAP					= pBaseNPC->nMAP;				//	阁胶磐狼 付过 傍拜仿
	m_nMDP					= pBaseNPC->nMDP;				//	阁胶磐狼 付过 规绢仿
	

	//	--------------------------------------------------------------------------------
	//	HP/MP荐摹 蔼
	//	--------------------------------------------------------------------------------
	m_nHP					= pBaseNPC->nHP;				//	阁胶磐狼 弥绊 眉仿
	m_nMP					= pBaseNPC->nMP;				//	阁胶磐狼 弥绊 付过仿
	
	m_nMaxHP				= pBaseNPC->nHP;				//	阁胶磐狼 弥绊 眉仿
	m_nMaxMP				= pBaseNPC->nMP;				//	阁胶磐狼 弥绊 付过仿	

	//	--------------------------------------------------------------------------------
	//	Set Registance
	//	--------------------------------------------------------------------------------
	m_nFireResi				= pBaseNPC->nFIRERES;			//	阁胶磐狼 阂 历亲仿
	m_nLighResi				= pBaseNPC->nLIGHTRES;			//	阁胶磐狼 傈扁 历亲仿
	m_nIceResi				= pBaseNPC->nCOLDRES;			//	阁胶磐狼 倔澜 历亲仿
	m_nStatResi				= pBaseNPC->nSTATRES;			//	阁胶磐狼 惑怕傍拜 历亲仿
	
	//	--------------------------------------------------------------------------------
	//	NPC惑怕 傍拜 颇扼固磐 眠啊	2003-10-31 
	//	--------------------------------------------------------------------------------
	m_nFireAttack			= pBaseNPC->nFIREDMG;			//	阂 傍 拜
	m_nIceAttack			= pBaseNPC->nICEDMG;			//	倔澜 傍拜
	m_nLightningAttack		= pBaseNPC->nLIGHTNINGDMG;		//	锄傈 傍拜

	m_nHPAbsorb				= pBaseNPC->nHPABSORB;			//	眉仿 软荐
	m_nMPAbsorb				= pBaseNPC->nMPABSORB;			//	付过 软荐

	m_nHold					= pBaseNPC->nHOLD;				//	V1.15 挨塞...

	m_nPoisonAttack			= pBaseNPC->nPOISON;			//	刀

	m_nBurning				= pBaseNPC->nBURNING;			//	滚醋 

	m_nSlow					= pBaseNPC->nSLOW;				//	蠢妨咙
	m_nStun					= pBaseNPC->nSTUN;				//	胶畔
	m_nKnockback			= pBaseNPC->nKNOCKBACK;			//	第肺 拱矾巢
	m_nOpenWound			= pBaseNPC->nOPENWOUND;			//	惑贸 厩拳
	m_nDispel				= pBaseNPC->nDISPEL;

	m_nIntegrity			= pBaseNPC->wINTEGRITY;			//	笼窜拳档 0 ~ 100,	100捞搁 例措 面己!
	m_nAggressiveness		= pBaseNPC->wAGGRESSIVE;		//	傍拜己 0 ~ 100,	100捞搁 公炼扒 傍拜, 档噶 绝澜

	//	--------------------------------------------------------------------------------
	//	矫具 芭府 & 傍拜 芭府 
	//	--------------------------------------------------------------------------------
	m_nSightRange			= pBaseNPC->wSIGHTRANGE;		//	矫具 芭府
	m_nAttackRange			= pBaseNPC->wATTACKRANGE;		//	傍拜 芭府 
	m_nMaxMoveTile			= pBaseNPC->wMOVETILE;			//	阁胶磐 捞悼 鸥老

	//	--------------------------------------------------------------------------------
	//	历亲 皑家. 眠啊等 货 鞘靛 
	//	--------------------------------------------------------------------------------
	m_nFireResiDown			= pBaseNPC->wFIRERESIDOWN;		//	阂 历亲 皑家
	m_nIceResiDown			= pBaseNPC->wICERESIDOWN;		//	倔澜 历亲 皑家
	m_nLighResiDown			= pBaseNPC->wLIGHTNINGRESIDOWN;	//	锅俺 历亲 皑家
	m_nStatResiDown			= pBaseNPC->wSTATRESIDOWN;		//	惑怕 规绢 皑家

	//	--------------------------------------------------------------------------------
	//	Visual 沥焊甫 Setting矫糯 (Client俊辑 荤侩凳)
	//	--------------------------------------------------------------------------------
	m_pNPCList->dwVisual1	= pBaseNPC->dwVISUAL1;			//	Visaul 沥焊#1
	m_pNPCList->dwVisual2	= pBaseNPC->dwVISUAL2;			//	Visaul 沥焊#2
	m_pNPCList->dwVisual3	= pBaseNPC->dwVISUAL3;			//	Visaul 沥焊#3
	m_pNPCList->dwVisual4	= pBaseNPC->dwVISUAL4;			//	Visaul 沥焊#4
	m_pNPCList->dwVisual5	= pBaseNPC->dwVISUAL5;			//	Visaul 沥焊#5
	
	m_pNPCList->wWIDTH		= pBaseNPC->wWIDTH;				//	气 	
	m_pNPCList->wHEIGHT		= pBaseNPC->wHEIGHT;			//	臭捞 

	m_pNPCList->wMOVESPEED	= pBaseNPC->wMOVESPEED;			//	捞悼 加档
	m_pNPCList->nSOUNDHIT	= pBaseNPC->nSOUNDHIT;			//	阁胶磐 嘎绰 家府
	
	m_pNPCList->dwVisualOption= pBaseNPC->nVALUE;			//	阁胶磐 可记 殿鞭

	//	--------------------------------------------------------------------------------
	//	荤侩 SKILL阑 且寸 (弥檬 矫累矫 SKILL沥焊 涝仿)
	//	--------------------------------------------------------------------------------
	//if( pFirst )			//滚弊肺 牢秦 林利 贸府		//Jason 2004-06-11
	//{
		//	----------------------------------------------------------------------------
		//	傍拜 胶懦
		//	----------------------------------------------------------------------------
		m_nAttackSkill			= pBaseNPC->wATTACKSKILL;	//	傍拜 胶懦 沥焊

		//	----------------------------------------------------------------------------
		//	焊龋 SKILL
		//	----------------------------------------------------------------------------
		if( pBaseNPC->wASSISTSKILL	)
		{	
			if(NULL == m_pAssistSkill )
			{
				m_pAssistSkill	= new CEnchant;
			}
			m_pAssistSkill->Clear_Skill();		

			if( !m_pAssistSkill->ReadSkill( pBaseNPC->wASSISTSKILL ) )
			{
				delete m_pAssistSkill;
				m_pAssistSkill	= NULL;

⌨️ 快捷键说明

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