本文整理汇总了C++中Spell::SetAutoRepeat方法的典型用法代码示例。如果您正苦于以下问题:C++ Spell::SetAutoRepeat方法的具体用法?C++ Spell::SetAutoRepeat怎么用?C++ Spell::SetAutoRepeat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Spell
的用法示例。
在下文中一共展示了Spell::SetAutoRepeat方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: spellAtack
void TargetedMovementGenerator::spellAtack(Creature &owner,Unit &who,uint32 spellId)
{
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId );
if(!spellInfo)
{
sLog.outError("WORLD: unknown spell id %i\n", spellId);
return;
}
owner.StopMoving();
owner->Idle();
if(owner.m_currentSpell)
{
if(owner.m_currentSpell->m_spellInfo->Id == spellInfo->Id )
return;
else
{
owner.m_currentSpell->cancel();
}
}
Spell *spell = new Spell(&owner, spellInfo, false, 0);
spell->SetAutoRepeat(false);
//owner.addUnitState(UNIT_STAT_ATTACKING);
//owner.clearUnitState(UNIT_STAT_CHASE);
SpellCastTargets targets;
targets.setUnitTarget( &who );
spell->prepare(&targets);
owner.m_canMove = false;
DEBUG_LOG("Spell Attack.");
}
示例2: _spellAtack
void TargetedMovementGenerator::_spellAtack(Creature &owner, SpellEntry* spellInfo)
{
if(!spellInfo)
return;
owner.StopMoving();
owner->Idle();
if(owner.m_currentSpell)
{
if(owner.m_currentSpell->m_spellInfo->Id == spellInfo->Id )
return;
else
{
owner.m_currentSpell->cancel();
}
}
Spell *spell = new Spell(&owner, spellInfo, false, 0);
spell->SetAutoRepeat(true);
//owner.addUnitState(UNIT_STAT_ATTACKING);
owner.Attack(&owner); //??
owner.clearUnitState(UNIT_STAT_CHASE);
SpellCastTargets targets;
targets.setUnitTarget( &i_target );
spell->prepare(&targets);
owner.m_canMove = false;
DEBUG_LOG("Spell Attack.");
}
示例3: UpdateAI
void PetAI::UpdateAI(const uint32 diff)
{
// update i_victimGuid if i_pet.getVictim() !=0 and changed
if(i_pet.getVictim())
i_victimGuid = i_pet.getVictim()->GetGUID();
// i_pet.getVictim() can't be used for check in case stop fighting, i_pet.getVictim() clearóâ at Unit death etc.
if( i_victimGuid )
{
if( _needToStop() )
{
DEBUG_LOG("Pet AI stoped attacking [guid=%u]", i_pet.GetGUIDLow());
_stopAttack(); // i_victimGuid == 0 && i_pet.getVictim() == NULL now
return;
}
else if( i_pet.IsStopped() )
{
SpellEntry *spellInfo;
if ( i_pet.m_currentSpell )
{
if( i_pet.hasUnitState(UNIT_STAT_FOLLOW) )
i_pet.m_currentSpell->cancel();
else
return;
}
else if( !i_pet.hasUnitState(UNIT_STAT_FOLLOW) && ((Pet*)&i_pet)->HasActState(STATE_RA_AUTOSPELL) && (spellInfo = i_pet.reachWithSpellAttack(i_pet.getVictim())))
{
Spell *spell = new Spell(&i_pet, spellInfo, false, 0);
spell->SetAutoRepeat(true);
SpellCastTargets targets;
targets.setUnitTarget( i_pet.getVictim() );
spell->prepare(&targets);
i_pet.m_canMove = false;
DEBUG_LOG("Spell Attack.");
}
else if( i_pet.isAttackReady() && i_pet.canReachWithAttack(i_pet.getVictim()) )
{
i_pet.AttackerStateUpdate(i_pet.getVictim());
i_pet.resetAttackTimer();
if ( !i_pet.getVictim() )
return;
if( _needToStop() )
_stopAttack();
}
}
}
else
{
if(i_owner && i_owner->isInCombat())
{
AttackStart(i_owner->getAttackerForHelper());
}
else if(i_owner && ((Pet*)&i_pet)->HasActState(STATE_RA_FOLLOW))
{
if (!i_pet.hasUnitState(UNIT_STAT_FOLLOW))
{
i_pet.addUnitState(UNIT_STAT_FOLLOW);
i_pet->Clear();
i_pet->Mutate(new TargetedMovementGenerator(*i_owner));
}
}
}
}