aboutsummaryrefslogtreecommitdiff
path: root/src/game/CombatAI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/CombatAI.cpp')
-rw-r--r--src/game/CombatAI.cpp40
1 files changed, 0 insertions, 40 deletions
diff --git a/src/game/CombatAI.cpp b/src/game/CombatAI.cpp
index b18e6dd7532..00d06b9ec33 100644
--- a/src/game/CombatAI.cpp
+++ b/src/game/CombatAI.cpp
@@ -17,64 +17,51 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-
#include "CombatAI.h"
#include "SpellMgr.h"
-
int AggressorAI::Permissible(const Creature *creature)
{
// have some hostile factions, it will be selected by IsHostileTo check at MoveInLineOfSight
if( !creature->isCivilian() && !creature->IsNeutralToAll() )
return PERMIT_BASE_PROACTIVE;
-
return PERMIT_BASE_NO;
}
-
void AggressorAI::UpdateAI(const uint32 /*diff*/)
{
if(!UpdateVictim())
return;
-
DoMeleeAttackIfReady();
}
-
// some day we will delete these useless things
int CombatAI::Permissible(const Creature *creature)
{
return PERMIT_BASE_NO;
}
-
int ArchorAI::Permissible(const Creature *creature)
{
return PERMIT_BASE_NO;
}
-
int TurretAI::Permissible(const Creature *creature)
{
return PERMIT_BASE_NO;
}
-
void CombatAI::InitializeAI()
{
for(uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i)
if(me->m_spells[i] && GetSpellStore()->LookupEntry(me->m_spells[i]))
spells.push_back(me->m_spells[i]);
-
CreatureAI::InitializeAI();
}
-
void CombatAI::Reset()
{
events.Reset();
}
-
void CombatAI::JustDied(Unit *killer)
{
for(SpellVct::iterator i = spells.begin(); i != spells.end(); ++i)
if(AISpellInfo[*i].condition == AICOND_DIE)
me->CastSpell(killer, *i, true);
}
-
void CombatAI::EnterCombat(Unit *who)
{
for(SpellVct::iterator i = spells.begin(); i != spells.end(); ++i)
@@ -85,17 +72,13 @@ void CombatAI::EnterCombat(Unit *who)
events.ScheduleEvent(*i, AISpellInfo[*i].cooldown + rand()%AISpellInfo[*i].cooldown);
}
}
-
void CombatAI::UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
return;
-
events.Update(diff);
-
if(me->hasUnitState(UNIT_STAT_CASTING))
return;
-
if(uint32 spellId = events.ExecuteEvent())
{
DoCast(spellId);
@@ -105,15 +88,12 @@ void CombatAI::UpdateAI(const uint32 diff)
DoMeleeAttackIfReady();
}
-
/////////////////
//CasterAI
/////////////////
-
void CasterAI::InitializeAI()
{
CombatAI::InitializeAI();
-
float m_attackDist = 30.0f;
for(SpellVct::iterator itr = spells.begin(); itr != spells.end(); ++itr)
if (AISpellInfo[*itr].condition == AICOND_COMBAT && m_attackDist > GetAISpellInfo(*itr)->maxRange)
@@ -121,12 +101,10 @@ void CasterAI::InitializeAI()
if (m_attackDist == 30.0f)
m_attackDist = MELEE_RANGE;
}
-
void CasterAI::EnterCombat(Unit *who)
{
if (spells.empty())
return;
-
uint32 spell = rand()%spells.size();
uint32 count = 0;
for(SpellVct::iterator itr = spells.begin(); itr != spells.end(); ++itr, ++count)
@@ -145,17 +123,13 @@ void CasterAI::EnterCombat(Unit *who)
}
}
}
-
void CasterAI::UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
return;
-
events.Update(diff);
-
if(me->hasUnitState(UNIT_STAT_CASTING))
return;
-
if(uint32 spellId = events.ExecuteEvent())
{
DoCast(spellId);
@@ -164,11 +138,9 @@ void CasterAI::UpdateAI(const uint32 diff)
}
}
-
//////////////
//ArchorAI
//////////////
-
ArchorAI::ArchorAI(Creature *c) : CreatureAI(c)
{
ASSERT(me->m_spells[0]);
@@ -178,12 +150,10 @@ ArchorAI::ArchorAI(Creature *c) : CreatureAI(c)
me->m_CombatDistance = GetSpellMaxRange(me->m_spells[0], false);
me->m_SightDistance = me->m_CombatDistance;
}
-
void ArchorAI::AttackStart(Unit *who)
{
if(!who)
return;
-
if(me->IsWithinCombatRange(who, m_minRange))
{
if(me->Attack(who, true) && !who->IsFlying())
@@ -194,27 +164,22 @@ void ArchorAI::AttackStart(Unit *who)
if(me->Attack(who, false) && !who->IsFlying())
me->GetMotionMaster()->MoveChase(who, me->m_CombatDistance);
}
-
if(who->IsFlying())
me->GetMotionMaster()->MoveIdle();
}
-
void ArchorAI::UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
return;
-
if(!me->IsWithinCombatRange(me->getVictim(), m_minRange))
DoSpellAttackIfReady(me->m_spells[0]);
else
DoMeleeAttackIfReady();
}
-
//////////////
//TurretAI
//////////////
-
TurretAI::TurretAI(Creature *c) : CreatureAI(c)
{
ASSERT(me->m_spells[0]);
@@ -222,7 +187,6 @@ TurretAI::TurretAI(Creature *c) : CreatureAI(c)
me->m_CombatDistance = GetSpellMaxRange(me->m_spells[0], false);
me->m_SightDistance = me->m_CombatDistance;
}
-
bool TurretAI::CanAIAttack(const Unit *who) const
{
// TODO: use one function to replace it
@@ -231,20 +195,16 @@ bool TurretAI::CanAIAttack(const Unit *who) const
return false;
return true;
}
-
void TurretAI::AttackStart(Unit *who)
{
if(who)
me->Attack(who, false);
}
-
void TurretAI::UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
return;
-
DoSpellAttackIfReady(me->m_spells[0]);
-
//if(!DoSpellAttackIfReady(me->m_spells[0]))
//if(HostilReference *ref = me->getThreatManager().getCurrentVictim())
//ref->removeReference();