📄 battlemanager.cpp
字号:
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 + -