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

📄 npc.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			}
		}
		else
		{
			m_pAssistSkill	=	NULL;
		}

		//	----------------------------------------------------------------------------
		//	历林 胶懦
		//	----------------------------------------------------------------------------
		if( pBaseNPC->wCURSESKILL	)
		{
			if(NULL == m_pCurseSkill)
			{
				m_pCurseSkill	= new CEnchant;
			}

			m_pCurseSkill->Clear_Skill();		

			if( !m_pCurseSkill->ReadSkill( pBaseNPC->wCURSESKILL ))
			{
				delete m_pCurseSkill;
				m_pCurseSkill	= NULL;
			}
		}
		else
		{
			m_pCurseSkill	=	NULL;
		}

		//	----------------------------------------------------------------------------
		//	磷看阑锭 唱坷绰 胶懦
		//	----------------------------------------------------------------------------
		if( pBaseNPC->wONKILLSKILL	)
		{
			if(NULL == m_pOnKillSkill)
			{
				m_pOnKillSkill	= new CEnchant;
			}

			m_pOnKillSkill->Clear_Skill();		
			m_pOnKillSkill->ReadSkill( pBaseNPC->wONKILLSKILL );
		}
		else
		{
			m_pOnKillSkill	=	NULL;
		}

		//	----------------------------------------------------------------------------
		//	傍拜 罐阑锭 惯悼登绰 胶懦
		//	----------------------------------------------------------------------------
		if( pBaseNPC->wONATTACKSKILL )
		{
			if(NULL == m_pOnAttackSkill)
			{
				m_pOnAttackSkill	= new CEnchant;
			}
			m_pOnAttackSkill->Clear_Skill();		
			m_pOnAttackSkill->ReadSkill( pBaseNPC->wONATTACKSKILL );
		}
		else
		{
			m_pOnAttackSkill	=	NULL;
		}

		//	----------------------------------------------------------------------------
		//	鸥烙 胶懦
		//	----------------------------------------------------------------------------
		if(	pBaseNPC->wTIMESKILL	)
		{
			if(NULL == m_pTimeSkill)
			{
				m_pTimeSkill	= new CEnchant;
			}
			m_pTimeSkill->Clear_Skill();		
			m_pTimeSkill->ReadSkill( pBaseNPC->wTIMESKILL );
		}
		else
		{
			m_pTimeSkill		=	NULL;
		}
	//}


	m_nGold				=	pBaseNPC->iGOLD ;
	m_iMinGold			=	pBaseNPC->iMINGOLD ;

	//
	//	Preminum
	//
	#ifdef DEF_PREMINUM	
		m_nFreeExp		=	pBaseNPC->nFREEEXP;			
		m_nFreeGold		=	pBaseNPC->nFREEGOLD;
		m_nFreeMinGold	=	pBaseNPC->nFREEGOLDMIN;
	#endif

	m_dwAttackTime			= timeGetTime();
	
	return	true;
}

////////////////////////////////////////////////////////////////////////////////////////
//	Monster甫 悼累 矫糯 (NPC惑怕喊肺 框流 捞档废 父惦)
//	
//	-	阁胶磐狼 惑怕 (STATUS DIAGRAM累己)
//
////////////////////////////////////////////////////////////////////////////////////////
void NPC::Action( int & pTurnNum )
{	
	//
	//	UNIQUIE MONSTER 汗蓖 & TIME SKILL
	//
	//
	if(	( m_nClassType ==	MONSTER_UNIQUE ) || ( m_nClassType == MONSTER_ZONEBOSS   ) )
	{
		
		// 蜡聪农 阁胶磐啊 悼累且 鞘夸 绝栏搁 
		if(false == bIsUniqueAction()) return ;
	}
		
	switch( m_nStatus )
	{
	//
	//	磷篮 惑怕 (Monaster狼 积己 矫埃阑 函版窃)
	//
	case STATUS_DEAD:
	case STATUS_PKDEAD:
		{
			DeadAction() ;
		}
		break;

	//	--------------------------------------------------------------------------------
	//	
	//	--------------------------------------------------------------------------------
	case STATUS_FOLLOW:
		{
			MoveTo(m_pStrategicTarget) ;

			if(m_bIsSpirit == false && g_pMap->IsSafeZone( m_pStrategicTarget->m_nMapLayer, m_pStrategicTarget->m_Tile))
			{
				SuddenDeath() ;
				g_pServer->PacketSend_NPCSummonDead(((PlayerInfo *) m_pStrategicTarget)->m_pSocketFD, this );
			}
		}
		break; 
	
	//	--------------------------------------------------------------------------------
	//
	//	--------------------------------------------------------------------------------
	case STATUS_TELEPORT:
		{

			if(m_bIsSpirit == false && g_pMap->IsSafeZone( m_pStrategicTarget->m_nMapLayer, m_pStrategicTarget->m_Tile))
			{
				SuddenDeath() ;
				g_pServer->PacketSend_NPCSummonDead(((PlayerInfo *) m_pStrategicTarget)->m_pSocketFD, this );
				
				break;
			}

			TeleportTo(m_pStrategicTarget) ;
		}
		break; 

	//	--------------------------------------------------------------------------------
	//	措扁 惑怕
	//	--------------------------------------------------------------------------------
	case STATUS_STAY:
		{
			//	------------------------------------------------------------------------
			//	家券 阁胶磐绰 傍拜且 NPC甫 茫澜
			//	------------------------------------------------------------------------
			if( bFindTarget() ) return;
			
			//	------------------------------------------------------------------------
			//	傈帆俊 蝶弗 汲沥
			//	------------------------------------------------------------------------
			switch( m_nStrategy ) 
			{
			case STRATEGY_ROAMING:
				{
					m_ptPoints[DESTINATION] = RandomSelectRoamingArea( m_ptPoints[0] );
				}
				break;
			}
			
			m_nStatus		= STATUS_NORMALMOVE;
			m_nStatusLevel	= STATLVL_NORMAL;
		}			
		break;

	//	--------------------------------------------------------------------------------
	//	酒捞袍 凛扁 葛靛 (眠饶 MONSTER STEAL备泅 矫 荤侩凳)
	//	--------------------------------------------------------------------------------
	case STATUS_STEAL:
		{
			/*
			//酒捞袍捞 绝芭唱 酒聪搁 促弗镑栏肺 埃促.
			if(!m_pTarget->IsItem())
			{
				m_nStatus		= STATUS_STAY;
				m_nStatusLevel	= STATLVL_CALM;
				return;
			}

			//芭府啊 1 捞窍啊 登搁 酒捞袍阑 凛绰促.
			if(GetDistance(m_pTarget) <= 1)
			{
				//酒捞袍阑 家芭茄促. 弊府绊 措扁茄促澜 促澜阑 扁促赴促.
				m_pTarget->Delete();
				m_nStatus = STATUS_STAY;
				m_nStatusLevel = STATLVL_CALM;
				return;
			}
			else
			{
				//芭府啊 钢搁 捞悼茄促.
				MoveTo(m_pTarget);
			}
			*/
		}
		break;

	//	--------------------------------------------------------------------------------
	//	捞悼 MODE 捞悼 葛靛绰 捞悼 傈帆俊 蝶扼 促福促.
	//	--------------------------------------------------------------------------------
	case STATUS_NORMALMOVE:
		{			
			NormalMove() ; 
		}		
		break;

	//	--------------------------------------------------------------------------------
	//	傍拜捞 绝绰 捞悼 MODE 捞悼 葛靛绰 捞悼 傈帆俊 蝶扼 促福促.
	//	--------------------------------------------------------------------------------
	case STATUS_MOVE:
		{			
			//	------------------------------------------------------------------------
			//	傈帆俊 蝶弗 捞悼 
			//	------------------------------------------------------------------------
			switch( m_nStrategy )
			{
			
			//	------------------------------------------------------------------------
			//	痢 飞
			//	------------------------------------------------------------------------
			case STRATEGY_OCCUPATION:

					// 格钎俊 档崔沁栏搁 瘤挪促.
					if( IsDistanceRange( m_ptPoints[0] ,  2 ) )
					{
						m_nStrategy				= STRATEGY_ROAMING;
						m_nStatus				= STATUS_STAY;
						m_nStatusLevel			= STATLVL_CALM;
						m_ptPoints[0]	= m_Tile;
					}
					else	//促澜 瘤痢俊 档馒窍瘤 臼疽栏骨肺 拌加 框流咯具茄促.
						MoveTo( m_ptPoints[m_nStepNow] );

					break;
			case STRATEGY_PROTECT:
					//	----------------------------------------------------------------
					//	父老 眠利 措惑捞 磷菌促搁 硅雀 傈帆栏肺 函版
					//	----------------------------------------------------------------
					if( m_pStrategicTarget == NULL || m_pStrategicTarget->IsDead() )
					{
						m_nStrategy			= STRATEGY_ROAMING;
						m_nStatus			= STATUS_STAY;
						m_nStatusLevel		= STATLVL_CALM;

						return;
					}
					
					//	----------------------------------------------------------------
					//	-	焊龋 措惑狼 林函栏肺 捞悼窃
					//	-	焊龋 阁胶磐狼 林函 瘤开阑 公累困肺 瘤沥饶 捞悼
					//	----------------------------------------------------------------
					if( !IsDistanceRange( m_pStrategicTarget->m_Tile, 4)  )
					{

						int nRandMove	= rand() % 8;
						_POINT_TILE	MoveTile;

						MoveTile.x	=	m_pStrategicTarget->m_Tile.x + _MONSTERSLAVE_TABLE_[nRandMove].x;
						MoveTile.y	=	m_pStrategicTarget->m_Tile.y + _MONSTERSLAVE_TABLE_[nRandMove].y;
			
						MoveTo( MoveTile );
					}
					else
					{
						bFindTarget();
					}

					if(m_dwSummoner && (m_bIsSpirit == false) && g_pMap->IsSafeZone( m_pStrategicTarget->m_nMapLayer, m_pStrategicTarget->m_Tile))
					{
						SuddenDeath() ;
						g_pServer->PacketSend_NPCSummonDead(((PlayerInfo *) m_pStrategicTarget)->m_pSocketFD, this );
					}
			}
		}		
		break;

		
	//	--------------------------------------------------------------------------------
	//	傍拜 MODE
	//	
	//	-	辟芭府 傍拜 /	盔芭府 傍拜	Monster备盒
	//	-	盔芭府 傍拜牢 版快 1 荤恩父 傍拜 窍档废 父惦
	//	--------------------------------------------------------------------------------
	case STATUS_COUNTERATTACK:	//	馆	拜 
	case STATUS_ATTACK:			//	傍	拜
		{
			if( ( m_nClassType == MONSTER_UNIQUE ) || ( m_nClassType == MONSTER_ZONEBOSS ) )
				UniqueMonsterAttack();
			else
				MonsterAttack(pTurnNum);
		}
		break;
		
	case STATUS_HELP:
		{
			Skill_Enchant(m_pAssistSkill);
		}
		break;
	//	--------------------------------------------------------------------------------
	//	档噶 Mode
	//	--------------------------------------------------------------------------------
	case STATUS_FLEE:
		{	

			//	------------------------------------------------------------------------
			//	惑措啊 唱俊霸 利狼甫 焊捞绊 乐促. 弊矾搁 档噶埃促.
			//	2003.08.05 Serve Down			 
			//	------------------------------------------------------------------------
			if( m_pTarget						&&

				IsAttackRange( m_pTarget))
			{
				FleeFrom( m_pTarget );
			}
			else	
			{
				ClearTarget();
			}
		}
		break;
		
	//	--------------------------------------------------------------------------------
	//	焊龋 葛靛
	//	--------------------------------------------------------------------------------

/*
	case STATUS_PROTECT:

			//俊呈瘤啊 0 捞窍捞芭唱 按眉啊 家芭登芭唱 橇肺咆飘 平捞 老沥 矫埃阑 逞芭唱
			//惑措啊 档噶 葛靛俊辑 秦瘤登搁 焊龋葛靛甫 秦力茄促.


			if(	m_pGuardTarget		== NULL		|| 
				!m_pGuardTarget->IsAlive()		|| 
				m_nProtectTick> m_nIntegrity	|| 
				m_pGuardTarget->m_nStatus != STATUS_FLEE)
			{
				m_pGuardTarget		= NULL;
				m_nStatus			= STATUS_STAY;
				m_nStatusLevel		= STATLVL_CALM;

				return;
			}



⌨️ 快捷键说明

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