*Rename some script functions (no real change).

--HG--
branch : trunk
This commit is contained in:
megamage
2009-05-10 14:29:28 -05:00
parent c153f7f272
commit 40a8e6d3ab
31 changed files with 246 additions and 206 deletions
+3 -147
View File
@@ -259,147 +259,7 @@ Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 position)
return NULL;
}
struct TargetDistanceOrder : public std::binary_function<const Unit, const Unit, bool>
{
const Unit* me;
TargetDistanceOrder(const Unit* Target) : me(Target) {};
// functor for operator ">"
bool operator()(const Unit* _Left, const Unit* _Right) const
{
return (me->GetDistance(_Left) < me->GetDistance(_Right));
}
};
Unit* ScriptedAI::SelectUnit(SelectAggroTarget targetType, uint32 position, float dist, bool playerOnly)
{
if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
{
std::list<HostilReference*> &m_threatlist = m_creature->getThreatManager().getThreatList();
if(m_threatlist.empty()) return NULL;
std::list<Unit*> targetList;
std::list<HostilReference*>::iterator itr = m_threatlist.begin();
for(; itr!= m_threatlist.end(); ++itr)
{
Unit *target = (*itr)->getTarget();
if(!target
|| playerOnly && target->GetTypeId() != TYPEID_PLAYER
|| dist && !m_creature->IsWithinCombatRange(target, dist))
{
continue;
}
targetList.push_back(target);
}
if(position >= targetList.size())
return NULL;
targetList.sort(TargetDistanceOrder(m_creature));
if(targetType == SELECT_TARGET_NEAREST)
{
std::list<Unit*>::iterator i = targetList.begin();
advance(i, position);
return *i;
}
else
{
std::list<Unit*>::reverse_iterator i = targetList.rbegin();
advance(i, position);
return *i;
}
}
else
{
std::list<HostilReference*> m_threatlist = m_creature->getThreatManager().getThreatList();
std::list<HostilReference*>::iterator i;
Unit *target;
while(position < m_threatlist.size())
{
if(targetType == SELECT_TARGET_BOTTOMAGGRO)
{
i = m_threatlist.end();
advance(i, - (int32)position - 1);
}
else
{
i = m_threatlist.begin();
if(targetType == SELECT_TARGET_TOPAGGRO)
advance(i, position);
else // random
advance(i, position + rand()%(m_threatlist.size() - position));
}
target = (*i)->getTarget();
if(!target
|| playerOnly && target->GetTypeId() != TYPEID_PLAYER
|| dist && !m_creature->IsWithinCombatRange(target, dist))
{
m_threatlist.erase(i);
}
else
{
return target;
}
}
}
return NULL;
}
void ScriptedAI::SelectUnitList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget targetType, float dist, bool playerOnly)
{
if(targetType == SELECT_TARGET_NEAREST || targetType == SELECT_TARGET_FARTHEST)
{
std::list<HostilReference*> &m_threatlist = m_creature->getThreatManager().getThreatList();
if(m_threatlist.empty()) return;
std::list<HostilReference*>::iterator itr = m_threatlist.begin();
for(; itr!= m_threatlist.end(); ++itr)
{
Unit *target = (*itr)->getTarget();
if(!target
|| playerOnly && target->GetTypeId() != TYPEID_PLAYER
|| dist && !m_creature->IsWithinCombatRange(target, dist))
{
continue;
}
targetList.push_back(target);
}
targetList.sort(TargetDistanceOrder(m_creature));
targetList.resize(num);
if(targetType == SELECT_TARGET_FARTHEST)
targetList.reverse();
}
else
{
std::list<HostilReference*> m_threatlist = m_creature->getThreatManager().getThreatList();
std::list<HostilReference*>::iterator i;
Unit *target;
while(m_threatlist.size() && num)
{
if(targetType == SELECT_TARGET_BOTTOMAGGRO)
{
i = m_threatlist.end();
--i;
}
else
{
i = m_threatlist.begin();
if(targetType == SELECT_TARGET_RANDOM)
advance(i, rand()%m_threatlist.size());
}
target = (*i)->getTarget();
m_threatlist.erase(i);
if(!target
|| playerOnly && target->GetTypeId() != TYPEID_PLAYER
|| dist && !m_creature->IsWithinCombatRange(target, dist))
{
continue;
}
targetList.push_back(target);
--num;
}
}
}
SpellEntry const* ScriptedAI::SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTarget Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effects)
SpellEntry const* ScriptedAI::SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTargetType Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effects)
{
//No target so we can't cast
if (!Target)
@@ -531,7 +391,7 @@ void FillSpellSummary()
SpellEntry const* TempSpell;
for (int i=0; i < GetSpellStore()->GetNumRows(); i++ )
for(uint32 i = 0; i < GetSpellStore()->GetNumRows(); ++i)
{
SpellSummary[i].Effects = 0;
SpellSummary[i].Targets = 0;
@@ -541,7 +401,7 @@ void FillSpellSummary()
if (!TempSpell)
continue;
for (int j=0; j<3; j++)
for(uint32 j = 0; j < 3; ++j)
{
//Spell targets self
if ( TempSpell->EffectImplicitTargetA[j] == TARGET_UNIT_CASTER )
@@ -802,10 +662,6 @@ void LoadOverridenDBCData()
if(spellInfo = SPELL(41913))
spellInfo->EffectApplyAuraName[0] = 4; // proc debuff, and summon infinite fiends
// Naxxramas : Sapphiron : Frost Breath Visual Effect
//if(spellInfo = SPELL(30101))
// spellInfo->EffectImplicitTargetA[0] = TARGET_DEST_DEST; // orig 18
//temp, not needed in 310
if(spellInfo = SPELL(28531))
{
+1 -3
View File
@@ -227,13 +227,11 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
//Selects a unit from the creature's current aggro list
Unit* SelectUnit(SelectAggroTarget target, uint32 position);
Unit* SelectUnit(SelectAggroTarget target, uint32 position, float dist, bool playerOnly);
void SelectUnitList(std::list<Unit*> &targetList, uint32 num, SelectAggroTarget target, float dist, bool playerOnly);
bool HealthBelowPct(uint32 pct) const { return me->GetHealth() * 100 < m_creature->GetMaxHealth() * pct; }
//Returns spells that meet the specified criteria from the creatures spell list
SpellEntry const* SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTarget Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effect);
SpellEntry const* SelectSpell(Unit* Target, int32 School, int32 Mechanic, SelectTargetType Targets, uint32 PowerCostMin, uint32 PowerCostMax, float RangeMin, float RangeMax, SelectEffect Effect);
//Checks if you can cast the specified spell
bool CanCast(Unit* Target, SpellEntry const *Spell, bool Triggered = false);