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

📄 battlemanager.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	if (!IsApply(nType, pCaster, pTarget))
	{ 
		return false;
	}
	// 付过捞 角菩茄 版快扼搁
	if (IsMissMagic(nType, pCaster, pTarget))
	{ 
		return false;
	}
	
	return true;
}	//> CSD-TW-030606

bool CBattleManager::FilterCombat(BYTE nCombat, CHARLIST* pCaster, CHARLIST* pTarget)
{	//< CSD-TW-030606
	// 傍拜捞 阂啊茄 版快扼搁
	if (!::CanBattleArea(pCaster, pTarget))
	{
		pCaster->Message(MK_WARNING, 1, 4);
		return false;
	}
	// 傈捧胶懦 惑怕 八荤
	switch (Magic_Ref[nCombat].Spell_Type)
	{
    case ACTIVE_COMBAT: 
		{
			if (pCaster->GetActiveCombat() != nCombat)  
			{
				return false;
			}
			
			break;
		}
    case PASSIVE_COMBAT:
		{
			if (pCaster->GetPassiveCombat() != nCombat)  
			{
				return false;
			}
			
			break;
		}
	case RECOVERY_COMBAT: // 030415 kyo
		{
			if (pCaster->GetRecoveryCombat() != nCombat)  
			{
				return false;
			}
			break;
		}
    default:  
		{
			return false;
		}
	}
    
	const BYTE nType = Magic_Ref[nCombat].magic_Type;
	// 付过阑 利侩且 荐 绝绰 版快
	if (!IsApply(nType, pCaster, pTarget))
	{ 
		return false;
	}
	// 付过捞 角菩茄 版快扼搁
	if (IsMissMagic(nType, pCaster, pTarget))
	{ 
		return false;
	}
	// NPC牢 版快扼搁
	if (pTarget->IsNpc())
	{ 
		switch (pTarget->Race)
		{
		case HUMAN:      return false;
		case SEALSTONE:  return IsBreak(pCaster, pTarget);
		}
		// 困狼 版快甫 力寇窍绊绰 NPC绰 捞肺款 付过 利侩捞 阂啊瓷  
		if (!IsHarmfulMagic(nCombat))  return false;
	} 
	// 墨款伎矾牢 版快扼搁
	if (pTarget->IsCounselor())     return false;
	if (pTarget->accessory[0] == 114)       return false;
	// 滚弊阁俊 措茄 烙矫 规祈
	if (!IsBugMon(pCaster, pTarget))        return false;
	
	return (IsHarmfulMagic(nCombat) && IsColleague(pCaster, pTarget)) ? false:true;
}	//> CSD-TW-030606

bool CBattleManager::FilterResult(CHARLIST* pCaster, CHARLIST* pTarget)
{	//< CSD-TW-030627
	const BYTE nMagic = pCaster->GetMagic();         // 付过狼 锅龋
	if (!IsValid(nMagic, pCaster))          return false;
	const BYTE nType = Magic_Ref[nMagic].magic_Type; // 付过狼 鸥涝
	if (!IsApply(nType, pCaster, pTarget))  return false;
	// 付过捞 角菩茄 版快扼搁
	if (IsHarmfulMagic(nMagic) && IsMissMagic(nType, pCaster, pTarget))
	{ 
		return false;
	}
	// 捧疙惑怕俊辑 付过 利侩矫 捧疙 惑怕啊 秦力
	if (pTarget->dwTransparency > 0)  
	{
		::CheckTransparency(pTarget, true);
		pTarget->Message(MK_NORMAL, 1, 28);
	}
	// NPC牢 版快扼搁
	if (pTarget->IsNpc())
	{ 
		switch (pTarget->Race)
		{
		case HUMAN:      return false;
		case GUARDSTONE: return true; // 肯摹狼 扁利捞 啊瓷窍档废 窃
		}
		// 困狼 版快甫 力寇窍绊绰 NPC绰 捞肺款 付过 利侩捞 阂啊瓷  
		if (!IsHarmfulMagic(nMagic))  
		{
			return false;
		}
		
		switch (pTarget->Race)
		{
		case SEALSTONE:  return IsBreak(pCaster, pTarget);
		}
	} 
	// 墨款伎矾牢 版快扼搁
	if (pTarget->IsCounselor())  return false;
	if (pTarget->accessory[0] == 114)  return false;
	// 滚弊阁俊 措茄 烙矫 规祈
	if (!IsBugMon(pCaster, pTarget) && nMagic != RELIEF_AUTHORITY)  return false;
	
	return (IsHarmfulMagic(nMagic) && IsColleague(pCaster, pTarget)) ? false:true;
}	//> CSD-TW-030627

bool CBattleManager::FilterResult(BYTE nMagic, CHARLIST* pCaster, CHARLIST* pTarget)
{ //
	//if (IsValid(nMagic, pCaster) == false)           return false;
	if (pTarget->IsNpc() && IsHarmfulMagic(nMagic))  return false;
	// 滚弊阁俊 措茄 烙矫 规祈
	return (IsBugMon(pCaster, pTarget) || nMagic == RELIEF_AUTHORITY) ? true:false;
}

///////////////////////////////////////////////////////////////////////////////
// Private Method
///////////////////////////////////////////////////////////////////////////////

bool CBattleManager::IsBattle() const
{ // 泅犁 惑怕俊辑 傈捧啊 啊瓷茄瘤 咯何 八荤
	if (g_block_magic)   return false;
	if (g_block_attack)  return false;
	return true;
}

bool CBattleManager::IsBattle(CHARLIST* pCaster) const
{ // 泅犁 惑怕俊辑 傈捧啊 啊瓷茄瘤 咯何 八荤
	if (::CheckEventAttack())  
	{ // 归捍傈牢 版快
		pCaster->Message(MK_NORMAL, 0, 346);
		return false;
	}
	// 020428 YGI acer
	if( pCaster->Hungry <= 0 ) 
	{
		pCaster->Message(MK_NORMAL, 2, 5);
		return false;
	}
	// 籍拳惑怕捞搁 绢栋茄 傈捧胶懦档 荤侩窍瘤 给窃
	if (pCaster->IsStone())
	{	//< CSD-021011	
		pCaster->Message(MK_NORMAL, 1, 91);
		return false;
	} //> CSD-021011
	
	return true;
}

bool CBattleManager::IsBattle(CHARLIST* pCaster, CHARLIST* pTarget) const
{ // 辑肺 傈捧啊 啊瓷茄瘤 咯何 八荤
	if (pTarget->ChairNum)// LTS DRAGON MODIFY
	{
		if (pTarget->patterntype==NPC_PATTERN_BOSS_WAIT)
		{
			pTarget->patterntype=NPC_PATTERN_BOSS_ACCESS;
		}
	}
	
	if (pCaster->IsPlayer() && pTarget->IsPlayer())
	{ 
		if (pCaster != pTarget) 
		{  
			if (g_LocalWarBegin && g_isLocalWarServer)
			{ // 惫瘤傈篮 版快
				if (pCaster->JoinLocalWar && pTarget->JoinLocalWar)
				{ // 笛促 曼啊磊牢 版快
					return true;
				}
				
				if (!pCaster->JoinLocalWar && !pTarget->JoinLocalWar)
				{ // 笛促 厚曼啊磊牢 版快
					return true;
				}
				
				return false;
			}
		}
	}
	
	return true;
}

bool CBattleManager::IsValid(BYTE nMagic, int nX, int nY) const
{ //< 020522 : 瓤苞寒牢 版快 贸府
	if (nX < 0)  return false;
	if (nY < 0)  return false; 
	if (nX >= g_lpMapFile->wWidth)   return false;
	if (nY >= g_lpMapFile->wHeight)  return false; 
	
	switch (Magic_Ref[nMagic].magic_Type/10)
	{
    case 4: // 历林拌凯狼 付过牢 版快
    case 5: // 傍拜拌凯狼 付过牢 版快
		{
			if (TileMap[nX][nY].attr_light)
			{
				return false;
			}
			
			break;
		}
	}
	
	return true;
} //> 020522

bool CBattleManager::IsValid(BYTE nKind, CHARLIST* pCaster) const
{ //
	if (!IsEnableClass(nKind, pCaster))
	{
		return false;
	}
	// 付过牢 版快
	if (IsMagic(nKind))
	{
		switch (pCaster->Spell)
		{
		case WIZARD_SPELL: // 付过荤扼搁  
			{
				if (pCaster->Ws[nKind])  return true;
				break;
			}
		case PRIEST_SPELL: // 己流磊扼搁
			{
				if (pCaster->Ps[nKind - 150])  return true;
				break;
			}
		}
		
		return false;
	}
	// 傈捧胶懦牢 版快
	if (IsCombat(nKind))
	{
		const int nLevel = pCaster->GetLevel(); // CSD-030806
		
		switch (pCaster->GetCombatLevel(nKind))
		{
		case 1: return (nLevel >= Magic_Ref[nKind].basic_Level) ? true:false;
		case 2: return (nLevel >= Magic_Ref[nKind].before_Magic) ? true:false;
		case 3: return (nLevel >= Magic_Ref[nKind].basic_magery) ? true:false;
		}
		
		return false;
	}
	
	return false;
}

bool CBattleManager::IsValid(BYTE nKind, BYTE nStep, CHARLIST* pCaster) const
{ // 傈捧胶懦牢 版快
	if (IsCombat(nKind))
	{
		const int nLevel = pCaster->GetLevel(); // CSD-030806
		
		switch (nStep)
		{
		case 1: return (nLevel >= Magic_Ref[nKind].basic_Level) ? true:false;
		case 2: return (nLevel >= Magic_Ref[nKind].before_Magic) ? true:false;
		case 3: return (nLevel >= Magic_Ref[nKind].basic_magery) ? true:false;
		}
		return false;
	}
	
	return false;
}

bool CBattleManager::IsAbility(BYTE nMagic, CHARLIST* pCaster) const
{
	if (pCaster->GetAbility(INT_) < Magic_Ref[nMagic].require_IT)	
	{
		pCaster->Message(MK_SHORTAGE, 1, 6);
		return false;
	}
	
	if (pCaster->GetAbility(WIS) < Magic_Ref[nMagic].require_WP)
	{
		pCaster->Message(MK_SHORTAGE, 1, 6);
		return false;
	}
	
	if (pCaster->GetAbility(WSPS) < Magic_Ref[nMagic].point_WS)
	{
		pCaster->Message(MK_SHORTAGE, 1, 6);
		return false;
	}
	
	switch (pCaster->Spell)
	{
    case WIZARD_SPELL: // 付过荤扼搁
		{
			if (pCaster->Skill[TACTICS_Magery] + 1 < Magic_Ref[nMagic].basic_magery)
			{
				pCaster->Message(MK_SHORTAGE, 1, 7);
				return false;
			}
			
			if (pCaster->Mana < Magic_Ref[nMagic].exhaust_MP)	
			{
				pCaster->Message(MK_SHORTAGE, 1, 9);
				return false;
			}
			
			break;
		}
    case PRIEST_SPELL: // 己流磊扼搁
		{
			if (pCaster->Skill[TACTICS_Orison] + 1 < Magic_Ref[nMagic].basic_magery)
			{
				pCaster->Message(MK_SHORTAGE, 1, 8);
				return false;
			}
			
			if (pCaster->Mana < Magic_Ref[nMagic].exhaust_MP)	
			{
				pCaster->Message(MK_SHORTAGE, 1, 10);
				return false;
			}
			
			break;
		}
	}
	
	return true;
}

bool CBattleManager::IsEnable(BYTE nMagic, CHARLIST* pCaster) const
{	//< CSD-TW-030606 : 矫傈磊 付过 荤侩 啊瓷 咯何 魄窜
	const BYTE nType = Magic_Ref[nMagic].magic_Type;
	// 焊龋拌凯 付过 吝 肯傈茄 搬拌牢 版快
	if (pCaster->IsPerfect() || pCaster->IsDivineUp())
	{
		switch (nType/10)
		{
		case 4: 
			{ // 历林拌凯狼 付过
				pCaster->Message(MK_WARNING, 1, 11);
				return false; 
			}
		case 5: 
			{ // 傍拜拌凯狼 付过
				pCaster->Message(MK_WARNING, 1, 12);
				return false; 
			}		
		}
	}
	/*
	if (nType == 64)
	{	// 扁档老锭 救凳
		pCaster->Message(MK_WARNING, 1, 42);
		return false; 
	}
	*/
	// 历林 1拌凯 付过 惑怕唱 某胶泼 阂啊茄 版快
	if (pCaster->dwCurse1 > 0 || !pCaster->IsCasting())
	{
		pCaster->Message(MK_WARNING, 1, 13);
		return false;
	}

	// 掂倔 酒捞袍饭骇俊 嘎瘤 臼绰 付过 荤侩阂啊 // 031110 kyo
	if( Magic_Ref[nMagic].nDualStep > g_CSymbolMgr.GetSymbolGrade(pCaster) )	
	{
		pCaster->Message(MK_WARNING, 1, 45);
		return false;
	}
	
	return true;
}	//> CSD-TW-030606

bool CBattleManager::IsHarmfulMagic(BYTE nMagic) const
{
	switch (Magic_Ref[nMagic].magic_Type/10)
	{
    case 4:              // 历林拌凯狼 付过牢 版快
    case 5: return true; // 傍拜拌凯狼 付过牢 版快
	}
	
	return false;
}

bool CBattleManager::IsPlaceMagic(BYTE nMagic, int nX, int nY) const
{	// 捞肺款 付过阑 荤侩且 荐 乐绰 瘤开牢瘤 八荤
	if (IsHarmfulMagic(nMagic) && TileMap[nX][nY].attr_no_battle)
	{
		return false;
	}
	
	return true;
}

bool CBattleManager::IsApply(BYTE nType, CHARLIST* pCaster, CHARLIST* pTarget) const
{	// 措惑磊 付过 利侩 啊瓷 咯何 魄窜
	// 漂喊茄 NPC绰 历林 拌凯 付过 利侩 阂啊
	if (pTarget->IsNpc() && nType/10 == 4)
	{
		switch (pTarget->Race)
		{
		case DUMMY:
		case HUMAN:
		case GUARD:
		case ORC_DUMMY:
		case SEALSTONE:
		case GUARDSTONE: return false;
			//case CASTLEGATEWAY: 固搬沥
			//case WARARMS: 固搬沥5
		}
	}
	
	switch (nType)
	{ 
		// 焊龋拌凯 付过牢 版快
    case 21: 
		{ // 老馆焊龋拌凯 付过
			if (pTarget->dwNormalProtect > 0)
			{
				pCaster->Message(MK_WARNING, 1, 21);
				return false;
			}
			
			break;  
		}
    case 22: 
		{ // 漂荐焊龋拌凯 付过
			if (pTarget->dwSpecialProtect > 0)
			{
				pCaster->Message(MK_WARNING, 1, 21);
				return false;
			}
			
			break;
		}
    case 23: 
		{	// 抗寇焊龋拌凯 付过
			if (pTarget->dwSpecialProtect > 0 ||
				pTarget->dwExceptProtect > 0) // 郴啊 扁

⌨️ 快捷键说明

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