CombatManeuverReturns PlayerbotWarriorAI::DoNextCombatManeuverPVP(Unit* pTarget) { if (m_ai->CastSpell(HEROIC_STRIKE)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotPaladinAI::DoNextCombatManeuverPVP(Unit* pTarget) { if (m_ai->CastSpell(HAMMER_OF_JUSTICE)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotPriestAI::DoNextCombatManeuverPVP(Unit* pTarget) { switch (m_ai->GetScenarioType()) { case PlayerbotAI::SCENARIO_PVP_DUEL: // TODO: spec tweaking if (m_ai->HasAura(SCREAM, *pTarget) && m_ai->GetHealthPercent() < 60 && HEAL && m_ai->In_Reach(pTarget,HEAL) && CastSpell(HEAL) & RETURN_ANY_OK) return RETURN_CONTINUE; if (SHADOW_WORD_PAIN && m_ai->In_Reach(pTarget,SHADOW_WORD_PAIN) && CastSpell(SHADOW_WORD_PAIN) & RETURN_ANY_OK) // TODO: Check whether enemy has it active yet return RETURN_CONTINUE; if (m_ai->GetHealthPercent() < 80 && RENEW && m_ai->In_Reach(pTarget,RENEW) && CastSpell(RENEW) & RETURN_ANY_OK) // TODO: Check whether you have renew active on you return RETURN_CONTINUE; if (SCREAM && m_ai->In_Reach(pTarget,SCREAM) && CastSpell(SCREAM) & RETURN_ANY_OK) // TODO: Check for cooldown return RETURN_CONTINUE; if (MIND_BLAST && m_ai->In_Reach(pTarget,MIND_BLAST) && CastSpell(MIND_BLAST) & RETURN_ANY_OK) // TODO: Check for cooldown return RETURN_CONTINUE; if (m_ai->GetHealthPercent() < 50 && GREATER_HEAL && m_ai->In_Reach(pTarget,GREATER_HEAL) && CastSpell(GREATER_HEAL) & RETURN_ANY_OK) return RETURN_CONTINUE; if (SMITE && m_ai->In_Reach(pTarget,SMITE) && CastSpell(SMITE) & RETURN_ANY_OK) return RETURN_CONTINUE; m_ai->TellMaster("Couldn't find a spell to cast while dueling"); default: break; } return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotMageAI::DoNextCombatManeuverPVP(Unit* pTarget) { if (FIREBALL && m_ai->In_Reach(pTarget,FIREBALL) && m_ai->CastSpell(FIREBALL)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotRogueAI::DoNextCombatManeuverPVP(Unit* pTarget) { //if (m_ai->CastSpell(SINISTER_STRIKE)) // return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotDruidAI::DoNextCombatManeuverPVP(Unit* pTarget) { if (m_ai->CastSpell(MOONFIRE)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotWarlockAI::DoNextCombatManeuverPVP(Unit* pTarget) { if (FEAR && m_ai->In_Reach(pTarget,FEAR) && m_ai->CastSpell(FEAR, *pTarget)) return RETURN_CONTINUE; if (SHADOW_BOLT && m_ai->In_Reach(pTarget,SHADOW_BOLT) && m_ai->CastSpell(SHADOW_BOLT)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotShamanAI::DoNextCombatManeuverPVP(Unit* pTarget) { DropTotems(); CheckShields(); UseCooldowns(); Player* healTarget = (m_ai->GetScenarioType() == PlayerbotAI::SCENARIO_PVP_DUEL) ? GetHealTarget() : m_bot; if (HealPlayer(healTarget) & (RETURN_NO_ACTION_OK | RETURN_CONTINUE)) return RETURN_CONTINUE; if (m_ai->CastSpell(LIGHTNING_BOLT)) return RETURN_CONTINUE; return DoNextCombatManeuverPVE(pTarget); // TODO: bad idea perhaps, but better than the alternative }
CombatManeuverReturns PlayerbotPriestAI::DoNextCombatManeuver(Unit *pTarget) { switch (m_ai->GetScenarioType()) { case PlayerbotAI::SCENARIO_PVP_DUEL: case PlayerbotAI::SCENARIO_PVP_BG: case PlayerbotAI::SCENARIO_PVP_ARENA: case PlayerbotAI::SCENARIO_PVP_OPENWORLD: return DoNextCombatManeuverPVP(pTarget); case PlayerbotAI::SCENARIO_PVE: case PlayerbotAI::SCENARIO_PVE_ELITE: case PlayerbotAI::SCENARIO_PVE_RAID: default: return DoNextCombatManeuverPVE(pTarget); break; } return RETURN_NO_ACTION_ERROR; }
CombatManeuverReturns PlayerbotWarriorAI::DoNextCombatManeuver(Unit* pTarget) { // Face enemy, make sure bot is attacking m_ai->FaceTarget(pTarget); switch (m_ai->GetScenarioType()) { case PlayerbotAI::SCENARIO_PVP_DUEL: case PlayerbotAI::SCENARIO_PVP_BG: case PlayerbotAI::SCENARIO_PVP_ARENA: case PlayerbotAI::SCENARIO_PVP_OPENWORLD: return DoNextCombatManeuverPVP(pTarget); case PlayerbotAI::SCENARIO_PVE: case PlayerbotAI::SCENARIO_PVE_ELITE: case PlayerbotAI::SCENARIO_PVE_RAID: default: return DoNextCombatManeuverPVE(pTarget); break; } return RETURN_NO_ACTION_ERROR; }
CombatManeuverReturns PlayerbotShamanAI::DoNextCombatManeuver(Unit *pTarget) { // Face enemy, make sure bot is attacking if (!m_bot->HasInArc(M_PI_F, pTarget)) m_bot->SetFacingTo(m_bot->GetAngle(pTarget)); switch (m_ai->GetScenarioType()) { case PlayerbotAI::SCENARIO_PVP_DUEL: case PlayerbotAI::SCENARIO_PVP_BG: case PlayerbotAI::SCENARIO_PVP_ARENA: case PlayerbotAI::SCENARIO_PVP_OPENWORLD: return DoNextCombatManeuverPVP(pTarget); case PlayerbotAI::SCENARIO_PVE: case PlayerbotAI::SCENARIO_PVE_ELITE: case PlayerbotAI::SCENARIO_PVE_RAID: default: return DoNextCombatManeuverPVE(pTarget); break; } return RETURN_NO_ACTION_ERROR; }