本文整理汇总了C++中SpellAuraHolder::RefreshHolder方法的典型用法代码示例。如果您正苦于以下问题:C++ SpellAuraHolder::RefreshHolder方法的具体用法?C++ SpellAuraHolder::RefreshHolder怎么用?C++ SpellAuraHolder::RefreshHolder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SpellAuraHolder
的用法示例。
在下文中一共展示了SpellAuraHolder::RefreshHolder方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateAI
void UpdateAI(const uint32 diff) override
{
if (!zealot)
{
if (Unit* owner = m_creature->GetCreator())
zealot = owner;
}
if (channelTarget == NULL/* || lastTarget == NULL */|| zealot == NULL)
return;
if (zealot->HasAura(SPELL_TWILIGHT_EVOLUTION) || zealot->isDead())
return;
if (uiCheckPlayerIsBetween <= diff)
{
channelTarget = zealot;
Map::PlayerList const &PlayerList = m_creature->GetMap()->GetPlayers();
if (!PlayerList.isEmpty())
{
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
{
if(i->getSource()->IsInBetween(m_creature, zealot, 1.0f))
channelTarget = i->getSource();
}
}
SpellAuraHolder* holder = channelTarget->GetSpellAuraHolder(SPELL_EVOLUTION, zealot->GetObjectGuid());
if (!holder)
holder = channelTarget->_AddAura(SPELL_EVOLUTION, 15000, zealot);
if (holder)
{
holder->ModStackAmount(1);
holder->RefreshHolder();
if (holder->GetStackAmount() >= holder->GetSpellProto()->GetStackAmount())
{
if(channelTarget == zealot)
channelTarget->RemoveAllAuras();
zealot->CastSpell(channelTarget, SPELL_TWILIGHT_EVOLUTION, true);
}
}
uiCheckPlayerIsBetween = 500;
}
else
uiCheckPlayerIsBetween -= diff;
if (uiNetherEssenceVisual <= diff)
{
m_creature->CastSpell(m_creature, SPELL_NETHERESSENCE_VISUAL, true);
uiNetherEssenceVisual = urand(3500,4000);
}
else
uiNetherEssenceVisual -= diff;
}