本文整理汇总了C++中PlayerbotAI::PickPocket方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerbotAI::PickPocket方法的具体用法?C++ PlayerbotAI::PickPocket怎么用?C++ PlayerbotAI::PickPocket使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerbotAI
的用法示例。
在下文中一共展示了PlayerbotAI::PickPocket方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoNextCombatManeuver
void PlayerbotRogueAI::DoNextCombatManeuver(Unit *pTarget)
{
if (!pTarget)
return;
PlayerbotAI* ai = GetAI();
if (!ai)
return;
switch (ai->GetScenarioType())
{
case PlayerbotAI::SCENARIO_DUEL:
if (SINISTER_STRIKE > 0)
ai->CastSpell(SINISTER_STRIKE);
return;
}
ai->SetInFront(pTarget);
Player *m_bot = GetPlayerBot();
Unit* pVictim = pTarget->getVictim();
float fTargetDist = m_bot->GetDistance(pTarget);
// TODO: make this work better...
/*if (pVictim)
{
if( pVictim!=m_bot && !m_bot->hasUnitState(UNIT_STAT_FOLLOW) && !pTarget->isInBackInMap(m_bot,10) ) {
GetAI()->TellMaster( "getting behind target" );
m_bot->GetMotionMaster()->Clear( true );
m_bot->GetMotionMaster()->MoveFollow( pTarget, 1, 2*M_PI );
}
else if( pVictim==m_bot && m_bot->hasUnitState(UNIT_STAT_FOLLOW) )
{
GetAI()->TellMaster( "chasing attacking target" );
m_bot->GetMotionMaster()->Clear( true );
m_bot->GetMotionMaster()->MoveChase( pTarget );
}
}*/
//Rouge like behaviour. ^^
/* if (VANISH > 0 && GetMaster()->isDead()) { //Causes the server to crash :( removed for now.
m_bot->AttackStop();
m_bot->RemoveAllAttackers();
ai->CastSpell(VANISH);
// m_bot->RemoveAllSpellCooldown();
GetAI()->TellMaster("AttackStop, CombatStop, Vanish");
}*/
// decide what to do:
if (pVictim == m_bot && CLOAK_OF_SHADOWS > 0 && pVictim->HasAura(SPELL_AURA_PERIODIC_DAMAGE) && !m_bot->HasAura(CLOAK_OF_SHADOWS, EFFECT_INDEX_0) && ai->CastSpell(CLOAK_OF_SHADOWS))
{
if (ai->GetManager()->m_confDebugWhisper)
ai->TellMaster("CoS!");
return;
}
else if (m_bot->HasAura(STEALTH, EFFECT_INDEX_0))
SpellSequence = RogueStealth;
else if (pTarget->IsNonMeleeSpellCasted(true))
SpellSequence = RogueSpellPreventing;
else if (pVictim == m_bot && ai->GetHealthPercent() < 40)
SpellSequence = RogueThreat;
else
SpellSequence = RogueCombat;
// we fight in melee, target is not in range, skip the next part!
if (fTargetDist > ATTACK_DISTANCE)
return;
std::ostringstream out;
switch (SpellSequence)
{
case RogueStealth:
out << "Case Stealth";
if (PICK_POCKET > 0 && ai->CastSpell(PICK_POCKET, *pTarget) && ai->PickPocket(pTarget))
out << "First > Pick Pocket"; // Should never display, as PickPocket will always return false
else if (PREMEDITATION > 0 && ai->CastSpell(PREMEDITATION, *pTarget))
out << " > Premeditation";
else if (AMBUSH > 0 && ai->GetEnergyAmount() >= 60 && ai->CastSpell(AMBUSH, *pTarget))
out << " > Ambush";
else if (CHEAP_SHOT > 0 && !pTarget->HasAura(CHEAP_SHOT, EFFECT_INDEX_0) && ai->GetEnergyAmount() >= 60 && ai->CastSpell(CHEAP_SHOT, *pTarget))
out << " > Cheap Shot";
else if (GARROTE > 0 && ai->GetEnergyAmount() >= 50 && ai->CastSpell(GARROTE, *pTarget))
out << " > Garrote";
else
m_bot->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
break;
case RogueThreat:
out << "Case Threat";
if (GOUGE > 0 && ai->GetEnergyAmount() >= 45 && !pTarget->HasAura(GOUGE, EFFECT_INDEX_0) && ai->CastSpell(GOUGE, *pTarget))
out << " > Gouge";
else if (EVASION > 0 && ai->GetHealthPercent() <= 35 && !m_bot->HasAura(EVASION, EFFECT_INDEX_0) && ai->CastSpell(EVASION))
out << " > Evasion";
else if (BLIND > 0 && ai->GetHealthPercent() <= 30 && !pTarget->HasAura(BLIND, EFFECT_INDEX_0) && ai->GetEnergyAmount() >= 30 && ai->CastSpell(BLIND, *pTarget))
out << " > Blind";
else if (FEINT > 0 && ai->GetHealthPercent() <= 25 && ai->GetEnergyAmount() >= 20 && ai->CastSpell(FEINT))
out << " > Feint";
else if (VANISH > 0 && ai->GetHealthPercent() <= 20 && !m_bot->HasAura(FEINT, EFFECT_INDEX_0) && ai->CastSpell(VANISH))
out << " > Vanish";
else if (PREPARATION > 0 && ai->CastSpell(PREPARATION))
out << " > Preparation";
else if (m_bot->getRace() == RACE_NIGHTELF && ai->GetHealthPercent() <= 15 && !m_bot->HasAura(SHADOWMELD, EFFECT_INDEX_0) && ai->CastSpell(SHADOWMELD, *m_bot))
//.........这里部分代码省略.........