mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-11 03:31:08 +00:00
[Cleanup] Cleanup classes.cpp/classes.h (#3752)
* [Cleanup] Cleanup classes.cpp/classes.h # Notes - Remove unused methods and cleanup logic. * Update classes.cpp * Final push.
This commit is contained in:
+150
-150
@@ -78,10 +78,10 @@ Bot::Bot(NPCType *npcTypeData, Client* botOwner) : NPC(npcTypeData, nullptr, glm
|
||||
SetBotCharmer(false);
|
||||
SetPetChooser(false);
|
||||
SetRangerAutoWeaponSelect(false);
|
||||
SetTaunting(GetClass() == WARRIOR || GetClass() == PALADIN || GetClass() == SHADOWKNIGHT);
|
||||
SetTaunting(GetClass() == Class::Warrior || GetClass() == Class::Paladin || GetClass() == Class::ShadowKnight);
|
||||
SetDefaultBotStance();
|
||||
|
||||
SetAltOutOfCombatBehavior(GetClass() == BARD); // will need to be updated if more classes make use of this flag
|
||||
SetAltOutOfCombatBehavior(GetClass() == Class::Bard); // will need to be updated if more classes make use of this flag
|
||||
SetShowHelm(true);
|
||||
SetPauseAI(false);
|
||||
|
||||
@@ -201,7 +201,7 @@ Bot::Bot(
|
||||
);
|
||||
}
|
||||
|
||||
SetTaunting((GetClass() == WARRIOR || GetClass() == PALADIN || GetClass() == SHADOWKNIGHT) && (GetBotStance() == EQ::constants::stanceAggressive));
|
||||
SetTaunting((GetClass() == Class::Warrior || GetClass() == Class::Paladin || GetClass() == Class::ShadowKnight) && (GetBotStance() == EQ::constants::stanceAggressive));
|
||||
SetPauseAI(false);
|
||||
|
||||
m_alt_combat_hate_timer.Start(250);
|
||||
@@ -241,7 +241,7 @@ Bot::Bot(
|
||||
for (int i = 0; i < MaxTimer; i++)
|
||||
timers[i] = 0;
|
||||
|
||||
if (GetClass() == ROGUE) {
|
||||
if (GetClass() == Class::Rogue) {
|
||||
m_evade_timer.Start();
|
||||
}
|
||||
|
||||
@@ -561,7 +561,7 @@ uint32 Bot::GetBotArcheryRange() {
|
||||
}
|
||||
|
||||
void Bot::ChangeBotArcherWeapons(bool isArcher) {
|
||||
if ((GetClass()==WARRIOR) || (GetClass()==PALADIN) || (GetClass()==RANGER) || (GetClass()==SHADOWKNIGHT) || (GetClass()==ROGUE)) {
|
||||
if ((GetClass()==Class::Warrior) || (GetClass()==Class::Paladin) || (GetClass()==Class::Ranger) || (GetClass()==Class::ShadowKnight) || (GetClass()==Class::Rogue)) {
|
||||
if (!isArcher) {
|
||||
BotAddEquipItem(EQ::invslot::slotPrimary, GetBotItemBySlot(EQ::invslot::slotPrimary));
|
||||
BotAddEquipItem(EQ::invslot::slotSecondary, GetBotItemBySlot(EQ::invslot::slotSecondary));
|
||||
@@ -769,7 +769,7 @@ void Bot::GenerateBaseStats()
|
||||
|
||||
// pulling fixed values from an auto-increment field is dangerous...
|
||||
switch (GetClass()) {
|
||||
case WARRIOR:
|
||||
case Class::Warrior:
|
||||
BotSpellID = 3001;
|
||||
Strength += 10;
|
||||
Stamina += 20;
|
||||
@@ -777,7 +777,7 @@ void Bot::GenerateBaseStats()
|
||||
Dexterity += 10;
|
||||
Attack += 12;
|
||||
break;
|
||||
case CLERIC:
|
||||
case Class::Cleric:
|
||||
BotSpellID = 3002;
|
||||
Strength += 5;
|
||||
Stamina += 5;
|
||||
@@ -785,7 +785,7 @@ void Bot::GenerateBaseStats()
|
||||
Wisdom += 30;
|
||||
Attack += 8;
|
||||
break;
|
||||
case PALADIN:
|
||||
case Class::Paladin:
|
||||
BotSpellID = 3003;
|
||||
Strength += 15;
|
||||
Stamina += 5;
|
||||
@@ -794,7 +794,7 @@ void Bot::GenerateBaseStats()
|
||||
Dexterity += 5;
|
||||
Attack += 17;
|
||||
break;
|
||||
case RANGER:
|
||||
case Class::Ranger:
|
||||
BotSpellID = 3004;
|
||||
Strength += 15;
|
||||
Stamina += 10;
|
||||
@@ -802,7 +802,7 @@ void Bot::GenerateBaseStats()
|
||||
Wisdom += 15;
|
||||
Attack += 17;
|
||||
break;
|
||||
case SHADOWKNIGHT:
|
||||
case Class::ShadowKnight:
|
||||
BotSpellID = 3005;
|
||||
Strength += 10;
|
||||
Stamina += 15;
|
||||
@@ -810,13 +810,13 @@ void Bot::GenerateBaseStats()
|
||||
Charisma += 5;
|
||||
Attack += 17;
|
||||
break;
|
||||
case DRUID:
|
||||
case Class::Druid:
|
||||
BotSpellID = 3006;
|
||||
Stamina += 15;
|
||||
Wisdom += 35;
|
||||
Attack += 5;
|
||||
break;
|
||||
case MONK:
|
||||
case Class::Monk:
|
||||
BotSpellID = 3007;
|
||||
Strength += 5;
|
||||
Stamina += 15;
|
||||
@@ -824,7 +824,7 @@ void Bot::GenerateBaseStats()
|
||||
Dexterity += 15;
|
||||
Attack += 17;
|
||||
break;
|
||||
case BARD:
|
||||
case Class::Bard:
|
||||
BotSpellID = 3008;
|
||||
Strength += 15;
|
||||
Dexterity += 10;
|
||||
@@ -832,7 +832,7 @@ void Bot::GenerateBaseStats()
|
||||
Intelligence += 10;
|
||||
Attack += 17;
|
||||
break;
|
||||
case ROGUE:
|
||||
case Class::Rogue:
|
||||
BotSpellID = 3009;
|
||||
Strength += 10;
|
||||
Stamina += 20;
|
||||
@@ -840,39 +840,39 @@ void Bot::GenerateBaseStats()
|
||||
Dexterity += 10;
|
||||
Attack += 12;
|
||||
break;
|
||||
case SHAMAN:
|
||||
case Class::Shaman:
|
||||
BotSpellID = 3010;
|
||||
Stamina += 10;
|
||||
Wisdom += 30;
|
||||
Charisma += 10;
|
||||
Attack += 28;
|
||||
break;
|
||||
case NECROMANCER:
|
||||
case Class::Necromancer:
|
||||
BotSpellID = 3011;
|
||||
Dexterity += 10;
|
||||
Agility += 10;
|
||||
Intelligence += 30;
|
||||
Attack += 5;
|
||||
break;
|
||||
case WIZARD:
|
||||
case Class::Wizard:
|
||||
BotSpellID = 3012;
|
||||
Stamina += 20;
|
||||
Intelligence += 30;
|
||||
Attack += 5;
|
||||
break;
|
||||
case MAGICIAN:
|
||||
case Class::Magician:
|
||||
BotSpellID = 3013;
|
||||
Stamina += 20;
|
||||
Intelligence += 30;
|
||||
Attack += 5;
|
||||
break;
|
||||
case ENCHANTER:
|
||||
case Class::Enchanter:
|
||||
BotSpellID = 3014;
|
||||
Intelligence += 25;
|
||||
Charisma += 25;
|
||||
Attack += 5;
|
||||
break;
|
||||
case BEASTLORD:
|
||||
case Class::Beastlord:
|
||||
BotSpellID = 3015;
|
||||
Stamina += 10;
|
||||
Agility += 10;
|
||||
@@ -881,7 +881,7 @@ void Bot::GenerateBaseStats()
|
||||
Charisma += 5;
|
||||
Attack += 31;
|
||||
break;
|
||||
case BERSERKER:
|
||||
case Class::Berserker:
|
||||
BotSpellID = 3016;
|
||||
Strength += 10;
|
||||
Stamina += 15;
|
||||
@@ -1497,7 +1497,7 @@ bool Bot::LoadPet()
|
||||
if (!bot_owner)
|
||||
return false;
|
||||
|
||||
if (GetClass() == WIZARD) {
|
||||
if (GetClass() == Class::Wizard) {
|
||||
auto buffs_max = GetMaxBuffSlots();
|
||||
auto my_buffs = GetBuffs();
|
||||
if (buffs_max && my_buffs) {
|
||||
@@ -1799,7 +1799,7 @@ void Bot::AI_Bot_Init()
|
||||
void Bot::SpellProcess() {
|
||||
if (spellend_timer.Check(false)) {
|
||||
NPC::SpellProcess();
|
||||
if (GetClass() == BARD && casting_spell_id != 0) casting_spell_id = 0;
|
||||
if (GetClass() == Class::Bard && casting_spell_id != 0) casting_spell_id = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1891,7 +1891,7 @@ bool Bot::CheckBotDoubleAttack(bool tripleAttack) {
|
||||
//Check for bonuses that give you a double attack chance regardless of skill (ie Bestial Frenzy/Harmonious Attack AA)
|
||||
uint32 bonusGiveDA = (aabonuses.GiveDoubleAttack + spellbonuses.GiveDoubleAttack + itembonuses.GiveDoubleAttack);
|
||||
// If you don't have the double attack skill, return
|
||||
if (!GetSkill(EQ::skills::SkillDoubleAttack) && !(GetClass() == BARD || GetClass() == BEASTLORD))
|
||||
if (!GetSkill(EQ::skills::SkillDoubleAttack) && !(GetClass() == Class::Bard || GetClass() == Class::Beastlord))
|
||||
return false;
|
||||
|
||||
// You start with no chance of double attacking
|
||||
@@ -1941,7 +1941,7 @@ void Bot::SetGuardMode() {
|
||||
m_GuardPoint = GetPosition();
|
||||
SetGuardFlag();
|
||||
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->StopMoving();
|
||||
}
|
||||
}
|
||||
@@ -1953,7 +1953,7 @@ void Bot::SetHoldMode() {
|
||||
|
||||
// AI Processing for the Bot object
|
||||
|
||||
constexpr float MAX_CASTER_DISTANCE[PLAYER_CLASS_COUNT] = {
|
||||
constexpr float MAX_CASTER_DISTANCE[Class::PLAYER_CLASS_COUNT] = {
|
||||
0,
|
||||
(34 * 34),
|
||||
(24 * 24),
|
||||
@@ -2111,7 +2111,7 @@ void Bot::AI_Process()
|
||||
}
|
||||
|
||||
// This causes conflicts with default pet handler (bounces between targets)
|
||||
if (NOT_PULLING_BOT && HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (NOT_PULLING_BOT && HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
|
||||
// We don't add to hate list here because it's assumed to already be on the list
|
||||
GetPet()->SetTarget(tar);
|
||||
@@ -2156,7 +2156,7 @@ void Bot::AI_Process()
|
||||
return;
|
||||
}
|
||||
|
||||
if (AI_movement_timer->Check() && (!spellend_timer.Enabled() || GetClass() == BARD)) {
|
||||
if (AI_movement_timer->Check() && (!spellend_timer.Enabled() || GetClass() == Class::Bard)) {
|
||||
|
||||
if (TryEvade(tar)) {
|
||||
return;
|
||||
@@ -2228,7 +2228,7 @@ void Bot::AI_Process()
|
||||
|
||||
SetTarget(nullptr);
|
||||
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
|
||||
GetPet()->WipeHateList();
|
||||
GetPet()->SetTarget(nullptr);
|
||||
@@ -2255,7 +2255,7 @@ void Bot::AI_Process()
|
||||
|
||||
bool Bot::TryBardMovementCasts() {// Basically, bard bots get a chance to cast idle spells while moving
|
||||
|
||||
if (GetClass() == BARD && IsMoving() && NOT_PASSIVE && !spellend_timer.Enabled() && AI_think_timer->Check()) {
|
||||
if (GetClass() == Class::Bard && IsMoving() && NOT_PASSIVE && !spellend_timer.Enabled() && AI_think_timer->Check()) {
|
||||
|
||||
AI_IdleCastCheck();
|
||||
return true;
|
||||
@@ -2265,7 +2265,7 @@ bool Bot::TryBardMovementCasts() {// Basically, bard bots get a chance to cast i
|
||||
|
||||
bool Bot::TryNonCombatMovementChecks(Client* bot_owner, const Mob* follow_mob, glm::vec3& Goal) {// Non-engaged movement checks
|
||||
|
||||
if (AI_movement_timer->Check() && (!IsCasting() || GetClass() == BARD)) {
|
||||
if (AI_movement_timer->Check() && (!IsCasting() || GetClass() == Class::Bard)) {
|
||||
if (GUARDING) {
|
||||
Goal = GetGuardPoint();
|
||||
}
|
||||
@@ -2311,12 +2311,12 @@ bool Bot::TryIdleChecks(float fm_distance) {
|
||||
|
||||
if (NOT_PASSIVE) {
|
||||
|
||||
if (!AI_IdleCastCheck() && !IsCasting() && GetClass() != BARD) {
|
||||
if (!AI_IdleCastCheck() && !IsCasting() && GetClass() != Class::Bard) {
|
||||
BotMeditate(true);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (GetClass() != BARD) {
|
||||
if (GetClass() != Class::Bard) {
|
||||
BotMeditate(true);
|
||||
}
|
||||
|
||||
@@ -2363,7 +2363,7 @@ bool Bot::TryAutoDefend(Client* bot_owner, float leash_distance) {
|
||||
SetTarget(hater);
|
||||
SetAttackingFlag();
|
||||
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->AddToHateList(hater, 1);
|
||||
GetPet()->SetTarget(hater);
|
||||
}
|
||||
@@ -2399,7 +2399,7 @@ bool Bot::TryMeditate() {
|
||||
// This code actually gets processed when we are too far away from target and have not engaged yet
|
||||
bool Bot::TryPursueTarget(float leash_distance, glm::vec3& Goal) {
|
||||
|
||||
if (AI_movement_timer->Check() && (!spellend_timer.Enabled() || GetClass() == BARD)) {
|
||||
if (AI_movement_timer->Check() && (!spellend_timer.Enabled() || GetClass() == Class::Bard)) {
|
||||
if (GetTarget() && !IsRooted()) {
|
||||
LogAIDetail("Pursuing [{}] while engaged", GetTarget()->GetCleanName());
|
||||
Goal = GetTarget()->GetPosition();
|
||||
@@ -2410,7 +2410,7 @@ bool Bot::TryPursueTarget(float leash_distance, glm::vec3& Goal) {
|
||||
WipeHateList();
|
||||
SetTarget(nullptr);
|
||||
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->WipeHateList();
|
||||
GetPet()->SetTarget(nullptr);
|
||||
}
|
||||
@@ -2446,7 +2446,7 @@ bool Bot::TrySecondaryWeaponAttacks(Mob* tar, const EQ::ItemInstance* s_item) {
|
||||
const EQ::ItemData* s_itemdata = nullptr;
|
||||
|
||||
// Can only dual wield without a weapon if you're a monk
|
||||
if (s_item || (GetClass() == MONK)) {
|
||||
if (s_item || (GetClass() == Class::Monk)) {
|
||||
|
||||
if (s_item) {
|
||||
s_itemdata = s_item->GetItem();
|
||||
@@ -2597,7 +2597,7 @@ bool Bot::TryEvade(Mob* tar) {
|
||||
HasTargetReflection() &&
|
||||
!tar->IsFeared() &&
|
||||
!tar->IsStunned() &&
|
||||
GetClass() == ROGUE &&
|
||||
GetClass() == Class::Rogue &&
|
||||
m_evade_timer.Check(false)
|
||||
) {
|
||||
int timer_duration = (HideReuseTime - GetSkillReuseTime(EQ::skills::SkillHide)) * 1000;
|
||||
@@ -2623,7 +2623,7 @@ void Bot::CheckCombatRange(Mob* tar, float tar_distance, bool& atCombatRange, co
|
||||
s_item= GetBotItem(EQ::invslot::slotSecondary);
|
||||
bool behind_mob = false;
|
||||
bool backstab_weapon = false;
|
||||
if (GetClass() == ROGUE) {
|
||||
if (GetClass() == Class::Rogue) {
|
||||
|
||||
behind_mob = BehindMob(tar, GetX(), GetY()); // Can be separated for other future use
|
||||
backstab_weapon = p_item && p_item->GetItemBackstabDamage();
|
||||
@@ -2721,9 +2721,9 @@ void Bot::CalcMeleeDistances(const Mob* tar, const EQ::ItemInstance* const& p_it
|
||||
melee_distance_max = size_mod;
|
||||
|
||||
switch (GetClass()) {
|
||||
case WARRIOR:
|
||||
case PALADIN:
|
||||
case SHADOWKNIGHT:
|
||||
case Class::Warrior:
|
||||
case Class::Paladin:
|
||||
case Class::ShadowKnight:
|
||||
if (p_item && p_item->GetItem()->IsType2HWeapon()) {
|
||||
melee_distance = melee_distance_max * 0.45f;
|
||||
}
|
||||
@@ -2734,10 +2734,10 @@ void Bot::CalcMeleeDistances(const Mob* tar, const EQ::ItemInstance* const& p_it
|
||||
melee_distance = melee_distance_max * 0.40f;
|
||||
}
|
||||
break;
|
||||
case NECROMANCER:
|
||||
case WIZARD:
|
||||
case MAGICIAN:
|
||||
case ENCHANTER:
|
||||
case Class::Necromancer:
|
||||
case Class::Wizard:
|
||||
case Class::Magician:
|
||||
case Class::Enchanter:
|
||||
if (p_item && p_item->GetItem()->IsType2HWeapon()) {
|
||||
melee_distance = melee_distance_max * 0.95f;
|
||||
}
|
||||
@@ -2745,7 +2745,7 @@ void Bot::CalcMeleeDistances(const Mob* tar, const EQ::ItemInstance* const& p_it
|
||||
melee_distance = melee_distance_max * 0.75f;
|
||||
}
|
||||
break;
|
||||
case ROGUE:
|
||||
case Class::Rogue:
|
||||
if (behind_mob && backstab_weapon) {
|
||||
if (p_item->GetItem()->IsType2HWeapon()) {
|
||||
melee_distance = melee_distance_max * 0.30f;
|
||||
@@ -2860,7 +2860,7 @@ void Bot::AcquireBotTarget(Group* bot_group, Raid* raid, Client* leash_owner, fl
|
||||
if (
|
||||
HasPet() &&
|
||||
(
|
||||
GetClass() != ENCHANTER ||
|
||||
GetClass() != Class::Enchanter ||
|
||||
GetPet()->GetPetType() != petAnimation ||
|
||||
GetAA(aaAnimationEmpathy) >= 2
|
||||
)
|
||||
@@ -2880,7 +2880,7 @@ void Bot::AcquireBotTarget(Group* bot_group, Raid* raid, Client* leash_owner, fl
|
||||
if (
|
||||
HasPet() &&
|
||||
(
|
||||
GetClass() != ENCHANTER ||
|
||||
GetClass() != Class::Enchanter ||
|
||||
GetPet()->GetPetType() != petAnimation ||
|
||||
GetAA(aaAnimationEmpathy) >= 1
|
||||
)
|
||||
@@ -2962,7 +2962,7 @@ bool Bot::PullingFlagChecks(Client* bot_owner) {
|
||||
SetReturningFlag();
|
||||
|
||||
if (HasPet() &&
|
||||
(GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
(GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
|
||||
GetPet()->WipeHateList();
|
||||
GetPet()->SetTarget(nullptr);
|
||||
@@ -3058,7 +3058,7 @@ bool Bot::CheckIfCasting(float fm_distance) {
|
||||
AdvanceHealRotation(false);
|
||||
return true;
|
||||
}
|
||||
else if (GetClass() != BARD) {
|
||||
else if (GetClass() != Class::Bard) {
|
||||
|
||||
if (IsEngaged()) {
|
||||
return true;
|
||||
@@ -3104,7 +3104,7 @@ bool Bot::CheckIfIncapacitated() {
|
||||
}
|
||||
|
||||
void Bot::SetBerserkState() {// Berserk updates should occur if primary AI criteria are met
|
||||
if (GetClass() == WARRIOR || GetClass() == BERSERKER) {
|
||||
if (GetClass() == Class::Warrior || GetClass() == Class::Berserker) {
|
||||
|
||||
if (!berserk && GetHP() > 0 && GetHPRatio() < 30.0f) {
|
||||
entity_list.MessageCloseString(this, false, 200, 0, BERSERK_START, GetName());
|
||||
@@ -3159,7 +3159,7 @@ void Bot::SetLeashOwnerTarget(Client* leash_owner, Client* bot_owner, float lo_d
|
||||
IsAttackAllowed(lo_target))
|
||||
{
|
||||
AddToHateList(lo_target, 1);
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->AddToHateList(lo_target, 1);
|
||||
GetPet()->SetTarget(lo_target);
|
||||
}
|
||||
@@ -3188,7 +3188,7 @@ void Bot::SetOwnerTarget(Client* bot_owner) {
|
||||
AddToHateList(attack_target, 1);
|
||||
SetTarget(attack_target);
|
||||
SetAttackingFlag();
|
||||
if (GetPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (GetPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->WipeHateList();
|
||||
GetPet()->AddToHateList(attack_target, 1);
|
||||
GetPet()->SetTarget(attack_target);
|
||||
@@ -3227,7 +3227,7 @@ void Bot::BotPullerProcess(Client* bot_owner, Raid* raid) {
|
||||
SetTarget(pull_target);
|
||||
SetPullingFlag();
|
||||
bot_owner->SetBotPulling();
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 1)) {
|
||||
|
||||
GetPet()->WipeHateList();
|
||||
GetPet()->SetTarget(nullptr);
|
||||
@@ -3247,7 +3247,7 @@ void Bot::SetBotGroupTarget(const Client* bot_owner, Client* leash_owner, float
|
||||
IsAttackAllowed(bgm_target))
|
||||
{
|
||||
AddToHateList(bgm_target, 1);
|
||||
if (HasPet() && (GetClass() != ENCHANTER || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
if (HasPet() && (GetClass() != Class::Enchanter || GetPet()->GetPetType() != petAnimation || GetAA(aaAnimationEmpathy) >= 2)) {
|
||||
GetPet()->AddToHateList(bgm_target, 1);
|
||||
GetPet()->SetTarget(bgm_target);
|
||||
}
|
||||
@@ -3544,7 +3544,7 @@ void Bot::LoadAndSpawnAllZonedBots(Client* bot_owner) {
|
||||
std::vector<int> bot_class_spawn_limits;
|
||||
std::vector<int> bot_class_spawned_count = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
for (uint8 class_id = WARRIOR; class_id <= BERSERKER; class_id++) {
|
||||
for (uint8 class_id = Class::Warrior; class_id <= Class::Berserker; class_id++) {
|
||||
auto bot_class_limit = bot_owner->GetBotSpawnLimit(class_id);
|
||||
bot_class_spawn_limits.push_back(bot_class_limit);
|
||||
}
|
||||
@@ -4731,13 +4731,13 @@ int Bot::GetHandToHandDamage(void) {
|
||||
7, 7, 7, 8, 8, 8, 8, 8, 8, 9, // 21-30
|
||||
9, 9, 9, 9, 9, 10, 10, 10, 10, 10, // 31-40
|
||||
10, 11, 11, 11, 11, 11, 11, 12, 12}; // 41-49
|
||||
if (GetClass() == MONK) {
|
||||
if (GetClass() == Class::Monk) {
|
||||
if (CastToNPC()->GetEquippedItemFromTextureSlot(EQ::textures::armorHands) == 10652 && GetLevel() > 50)
|
||||
return 9;
|
||||
if (level > 62)
|
||||
return 15;
|
||||
return mnk_dmg[level];
|
||||
} else if (GetClass() == BEASTLORD) {
|
||||
} else if (GetClass() == Class::Beastlord) {
|
||||
if (level > 49)
|
||||
return 13;
|
||||
return bst_dmg[level];
|
||||
@@ -4783,7 +4783,7 @@ void Bot::DoRiposte(Mob* defender) {
|
||||
|
||||
DoubleRipChance = defender->GetAABonuses().GiveDoubleRiposte[1];
|
||||
if (DoubleRipChance && (DoubleRipChance >= zone->random.Int(0, 100))) {
|
||||
if (defender->GetClass() == MONK)
|
||||
if (defender->GetClass() == Class::Monk)
|
||||
defender->MonkSpecialAttack(this, defender->GetAABonuses().GiveDoubleRiposte[2]);
|
||||
else if (defender->IsBot())
|
||||
defender->CastToClient()->DoClassAttacks(this,defender->GetAABonuses().GiveDoubleRiposte[2], true);
|
||||
@@ -5044,13 +5044,13 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|
||||
if (ka_time) {
|
||||
|
||||
switch (GetClass()) {
|
||||
case SHADOWKNIGHT: {
|
||||
case Class::ShadowKnight: {
|
||||
CastSpell(SPELL_NPC_HARM_TOUCH, target->GetID());
|
||||
knightattack_timer.Start(HarmTouchReuseTime * 1000);
|
||||
|
||||
break;
|
||||
}
|
||||
case PALADIN: {
|
||||
case Class::Paladin: {
|
||||
if (GetHPRatio() < 20) {
|
||||
CastSpell(SPELL_LAY_ON_HANDS, GetID());
|
||||
knightattack_timer.Start(LayOnHandsReuseTime * 1000);
|
||||
@@ -5083,7 +5083,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|
||||
|
||||
if (ma_time) {
|
||||
switch (GetClass()) {
|
||||
case MONK: {
|
||||
case Class::Monk: {
|
||||
int reuse = (MonkSpecialAttack(target, EQ::skills::SkillTigerClaw) - 1);
|
||||
|
||||
// Live AA - Technique of Master Wu
|
||||
@@ -5148,7 +5148,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|
||||
int reuse = (TauntReuseTime * 1000); // Same as Bash and Kick
|
||||
bool did_attack = false;
|
||||
switch (GetClass()) {
|
||||
case WARRIOR:
|
||||
case Class::Warrior:
|
||||
if (bot_level >= RuleI(Combat, NPCBashKickLevel)) {
|
||||
bool canBash = false;
|
||||
if ((GetRace() == OGRE || GetRace() == TROLL || GetRace() == BARBARIAN) || (m_inv.GetItem(EQ::invslot::slotSecondary) && m_inv.GetItem(EQ::invslot::slotSecondary)->GetItem()->ItemType == EQ::item::ItemTypeShield) || (m_inv.GetItem(EQ::invslot::slotPrimary) && m_inv.GetItem(EQ::invslot::slotPrimary)->GetItem()->IsType2HWeapon() && GetAA(aa2HandBash) >= 1))
|
||||
@@ -5159,22 +5159,22 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|
||||
else
|
||||
skill_to_use = EQ::skills::SkillBash;
|
||||
}
|
||||
case RANGER:
|
||||
case BEASTLORD:
|
||||
case Class::Ranger:
|
||||
case Class::Beastlord:
|
||||
skill_to_use = EQ::skills::SkillKick;
|
||||
break;
|
||||
case BERSERKER:
|
||||
case Class::Berserker:
|
||||
skill_to_use = EQ::skills::SkillFrenzy;
|
||||
break;
|
||||
case CLERIC:
|
||||
case SHADOWKNIGHT:
|
||||
case PALADIN:
|
||||
case Class::Cleric:
|
||||
case Class::ShadowKnight:
|
||||
case Class::Paladin:
|
||||
if (bot_level >= RuleI(Combat, NPCBashKickLevel)) {
|
||||
if ((GetRace() == OGRE || GetRace() == TROLL || GetRace() == BARBARIAN) || (m_inv.GetItem(EQ::invslot::slotSecondary) && m_inv.GetItem(EQ::invslot::slotSecondary)->GetItem()->ItemType == EQ::item::ItemTypeShield) || (m_inv.GetItem(EQ::invslot::slotPrimary) && m_inv.GetItem(EQ::invslot::slotPrimary)->GetItem()->IsType2HWeapon() && GetAA(aa2HandBash) >= 1))
|
||||
skill_to_use = EQ::skills::SkillBash;
|
||||
}
|
||||
break;
|
||||
case MONK:
|
||||
case Class::Monk:
|
||||
if (GetLevel() >= 30) {
|
||||
skill_to_use = EQ::skills::SkillFlyingKick;
|
||||
}
|
||||
@@ -5192,7 +5192,7 @@ void Bot::DoClassAttacks(Mob *target, bool IsRiposte) {
|
||||
}
|
||||
|
||||
break;
|
||||
case ROGUE:
|
||||
case Class::Rogue:
|
||||
skill_to_use = EQ::skills::SkillBackstab;
|
||||
break;
|
||||
}
|
||||
@@ -5600,7 +5600,7 @@ bool Bot::CastSpell(
|
||||
ZeroCastingVars();
|
||||
}
|
||||
|
||||
if (GetClass() != BARD) {
|
||||
if (GetClass() != Class::Bard) {
|
||||
if (
|
||||
!IsValidSpell(spell_id) ||
|
||||
casting_spell_id ||
|
||||
@@ -5753,7 +5753,7 @@ bool Bot::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
||||
|
||||
bool Bot::DoCastSpell(uint16 spell_id, uint16 target_id, EQ::spells::CastingSlot slot, int32 cast_time, int32 mana_cost, uint32* oSpellWillFinish, uint32 item_slot, uint32 aa_id) {
|
||||
bool Result = false;
|
||||
if (GetClass() == BARD)
|
||||
if (GetClass() == Class::Bard)
|
||||
cast_time = 0;
|
||||
|
||||
Result = Mob::DoCastSpell(spell_id, target_id, slot, cast_time, mana_cost, oSpellWillFinish, item_slot, aa_id);
|
||||
@@ -5851,7 +5851,7 @@ int32 Bot::GenerateBaseManaPoints() {
|
||||
}
|
||||
|
||||
void Bot::GenerateSpecialAttacks() {
|
||||
if (((GetClass() == MONK) || (GetClass() == WARRIOR) || (GetClass() == RANGER) || (GetClass() == BERSERKER)) && (GetLevel() >= 60))
|
||||
if (((GetClass() == Class::Monk) || (GetClass() == Class::Warrior) || (GetClass() == Class::Ranger) || (GetClass() == Class::Berserker)) && (GetLevel() >= 60))
|
||||
SetSpecialAbility(SPECATK_TRIPLE, 1);
|
||||
}
|
||||
|
||||
@@ -5874,7 +5874,7 @@ bool Bot::DoFinishedSpellSingleTarget(uint16 spell_id, Mob* spellTarget, EQ::spe
|
||||
bool spellequal = (j == thespell);
|
||||
bool spelltypeequal = ((spelltype == 2) || (spelltype == 16) || (spelltype == 32));
|
||||
bool spelltypetargetequal = ((spelltype == 8) && (spells[thespell].target_type == ST_Self));
|
||||
bool spelltypeclassequal = ((spelltype == 1024) && (GetClass() == SHAMAN));
|
||||
bool spelltypeclassequal = ((spelltype == 1024) && (GetClass() == Class::Shaman));
|
||||
bool slotequal = (slot == EQ::spells::CastingSlot::Item);
|
||||
if (spellequal || slotequal) {
|
||||
if ((spelltypeequal || spelltypetargetequal) || spelltypeclassequal || slotequal) {
|
||||
@@ -5896,7 +5896,7 @@ bool Bot::DoFinishedSpellSingleTarget(uint16 spell_id, Mob* spellTarget, EQ::spe
|
||||
if (g) {
|
||||
for (int i = 0; i < MAX_GROUP_MEMBERS; i++) {
|
||||
if (g->members[i]) {
|
||||
if ((g->members[i]->GetClass() == NECROMANCER) && (IsEffectInSpell(thespell, SE_AbsorbMagicAtt) || IsEffectInSpell(thespell, SE_Rune))) {
|
||||
if ((g->members[i]->GetClass() == Class::Necromancer) && (IsEffectInSpell(thespell, SE_AbsorbMagicAtt) || IsEffectInSpell(thespell, SE_Rune))) {
|
||||
}
|
||||
else
|
||||
SpellOnTarget(thespell, g->members[i]);
|
||||
@@ -5917,7 +5917,7 @@ bool Bot::DoFinishedSpellGroupTarget(uint16 spell_id, Mob* spellTarget, EQ::spel
|
||||
bool isMainGroupMGB = false;
|
||||
Raid* raid = entity_list.GetRaidByBotName(GetName());
|
||||
|
||||
if (isMainGroupMGB && (GetClass() != BARD)) {
|
||||
if (isMainGroupMGB && (GetClass() != Class::Bard)) {
|
||||
BotGroupSay(
|
||||
this,
|
||||
fmt::format(
|
||||
@@ -6201,7 +6201,7 @@ int32 Bot::CalcCHA() {
|
||||
|
||||
int32 Bot::CalcMR() {
|
||||
MR += (itembonuses.MR + spellbonuses.MR + aabonuses.MR);
|
||||
if (GetClass() == WARRIOR)
|
||||
if (GetClass() == Class::Warrior)
|
||||
MR += (GetLevel() / 2);
|
||||
|
||||
if (MR < 1)
|
||||
@@ -6215,7 +6215,7 @@ int32 Bot::CalcMR() {
|
||||
|
||||
int32 Bot::CalcFR() {
|
||||
int c = GetClass();
|
||||
if (c == RANGER) {
|
||||
if (c == Class::Ranger) {
|
||||
FR += 4;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
@@ -6235,12 +6235,12 @@ int32 Bot::CalcFR() {
|
||||
|
||||
int32 Bot::CalcDR() {
|
||||
int c = GetClass();
|
||||
if (c == PALADIN) {
|
||||
if (c == Class::Paladin) {
|
||||
DR += 8;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
DR += (l - 49);
|
||||
} else if (c == SHADOWKNIGHT) {
|
||||
} else if (c == Class::ShadowKnight) {
|
||||
DR += 4;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
@@ -6259,12 +6259,12 @@ int32 Bot::CalcDR() {
|
||||
|
||||
int32 Bot::CalcPR() {
|
||||
int c = GetClass();
|
||||
if (c == ROGUE) {
|
||||
if (c == Class::Rogue) {
|
||||
PR += 8;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
PR += (l - 49);
|
||||
} else if (c == SHADOWKNIGHT) {
|
||||
} else if (c == Class::ShadowKnight) {
|
||||
PR += 4;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
@@ -6284,7 +6284,7 @@ int32 Bot::CalcPR() {
|
||||
|
||||
int32 Bot::CalcCR() {
|
||||
int c = GetClass();
|
||||
if (c == RANGER) {
|
||||
if (c == Class::Ranger) {
|
||||
CR += 4;
|
||||
int l = GetLevel();
|
||||
if (l > 49)
|
||||
@@ -6401,7 +6401,7 @@ int64 Bot::CalcManaRegen() {
|
||||
int32 regen = 0;
|
||||
if (IsSitting()) {
|
||||
BuffFadeBySitModifier();
|
||||
if (botclass != WARRIOR && botclass != MONK && botclass != ROGUE && botclass != BERSERKER) {
|
||||
if (botclass != Class::Warrior && botclass != Class::Monk && botclass != Class::Rogue && botclass != Class::Berserker) {
|
||||
regen = ((((GetSkill(EQ::skills::SkillMeditate) / 10) + (level - (level / 4))) / 4) + 4);
|
||||
regen += (spellbonuses.ManaRegen + itembonuses.ManaRegen);
|
||||
} else
|
||||
@@ -6423,25 +6423,25 @@ int64 Bot::CalcManaRegen() {
|
||||
uint64 Bot::GetClassHPFactor() {
|
||||
uint32 factor;
|
||||
switch (GetClass()) {
|
||||
case BEASTLORD:
|
||||
case BERSERKER:
|
||||
case MONK:
|
||||
case ROGUE:
|
||||
case SHAMAN:
|
||||
case Class::Beastlord:
|
||||
case Class::Berserker:
|
||||
case Class::Monk:
|
||||
case Class::Rogue:
|
||||
case Class::Shaman:
|
||||
factor = 255;
|
||||
break;
|
||||
case BARD:
|
||||
case CLERIC:
|
||||
case Class::Bard:
|
||||
case Class::Cleric:
|
||||
factor = 264;
|
||||
break;
|
||||
case SHADOWKNIGHT:
|
||||
case PALADIN:
|
||||
case Class::ShadowKnight:
|
||||
case Class::Paladin:
|
||||
factor = 288;
|
||||
break;
|
||||
case RANGER:
|
||||
case Class::Ranger:
|
||||
factor = 276;
|
||||
break;
|
||||
case WARRIOR:
|
||||
case Class::Warrior:
|
||||
factor = 300;
|
||||
break;
|
||||
default:
|
||||
@@ -6682,46 +6682,46 @@ void Bot::UpdateGroupCastingRoles(const Group* group, bool disband)
|
||||
|
||||
// GroupHealer
|
||||
switch (iter->GetClass()) {
|
||||
case CLERIC:
|
||||
case Class::Cleric:
|
||||
if (!healer)
|
||||
healer = iter;
|
||||
else
|
||||
switch (healer->GetClass()) {
|
||||
case CLERIC:
|
||||
case Class::Cleric:
|
||||
break;
|
||||
default:
|
||||
healer = iter;
|
||||
}
|
||||
|
||||
break;
|
||||
case DRUID:
|
||||
case Class::Druid:
|
||||
if (!healer)
|
||||
healer = iter;
|
||||
else
|
||||
switch (healer->GetClass()) {
|
||||
case CLERIC:
|
||||
case DRUID:
|
||||
case Class::Cleric:
|
||||
case Class::Druid:
|
||||
break;
|
||||
default:
|
||||
healer = iter;
|
||||
}
|
||||
break;
|
||||
case SHAMAN:
|
||||
case Class::Shaman:
|
||||
if (!healer)
|
||||
healer = iter;
|
||||
else
|
||||
switch (healer->GetClass()) {
|
||||
case CLERIC:
|
||||
case DRUID:
|
||||
case SHAMAN:
|
||||
case Class::Cleric:
|
||||
case Class::Druid:
|
||||
case Class::Shaman:
|
||||
break;
|
||||
default:
|
||||
healer = iter;
|
||||
}
|
||||
break;
|
||||
case PALADIN:
|
||||
case RANGER:
|
||||
case BEASTLORD:
|
||||
case Class::Paladin:
|
||||
case Class::Ranger:
|
||||
case Class::Beastlord:
|
||||
if (!healer)
|
||||
healer = iter;
|
||||
break;
|
||||
@@ -6731,30 +6731,30 @@ void Bot::UpdateGroupCastingRoles(const Group* group, bool disband)
|
||||
|
||||
// GroupSlower
|
||||
switch (iter->GetClass()) {
|
||||
case SHAMAN:
|
||||
case Class::Shaman:
|
||||
if (!slower)
|
||||
slower = iter;
|
||||
else
|
||||
switch (slower->GetClass()) {
|
||||
case SHAMAN:
|
||||
case Class::Shaman:
|
||||
break;
|
||||
default:
|
||||
slower = iter;
|
||||
}
|
||||
break;
|
||||
case ENCHANTER:
|
||||
case Class::Enchanter:
|
||||
if (!slower)
|
||||
slower = iter;
|
||||
else
|
||||
switch (slower->GetClass()) {
|
||||
case SHAMAN:
|
||||
case ENCHANTER:
|
||||
case Class::Shaman:
|
||||
case Class::Enchanter:
|
||||
break;
|
||||
default:
|
||||
slower = iter;
|
||||
}
|
||||
break;
|
||||
case BEASTLORD:
|
||||
case Class::Beastlord:
|
||||
if (!slower)
|
||||
slower = iter;
|
||||
break;
|
||||
@@ -6985,7 +6985,7 @@ void Bot::CalcBotStats(bool showtext) {
|
||||
|
||||
taunt_timer.Start(1000);
|
||||
|
||||
if (GetClass() == MONK && GetLevel() >= 10) {
|
||||
if (GetClass() == Class::Monk && GetLevel() >= 10) {
|
||||
monkattack_timer.Start(1000);
|
||||
}
|
||||
|
||||
@@ -6997,7 +6997,7 @@ void Bot::CalcBotStats(bool showtext) {
|
||||
GetBotOwner()->Message(Chat::Yellow, "Level: %i HP: %i AC: %i Mana: %i STR: %i STA: %i DEX: %i AGI: %i INT: %i WIS: %i CHA: %i", GetLevel(), base_hp, AC, max_mana, STR, STA, DEX, AGI, INT, WIS, CHA);
|
||||
GetBotOwner()->Message(Chat::Yellow, "Resists-- Magic: %i, Poison: %i, Fire: %i, Cold: %i, Disease: %i, Corruption: %i.",MR,PR,FR,CR,DR,Corrup);
|
||||
// Test Code
|
||||
if (GetClass() == BARD)
|
||||
if (GetClass() == Class::Bard)
|
||||
GetBotOwner()->Message(Chat::Yellow, "Bard Skills-- Brass: %i, Percussion: %i, Singing: %i, Stringed: %i, Wind: %i",
|
||||
GetSkill(EQ::skills::SkillBrassInstruments), GetSkill(EQ::skills::SkillPercussionInstruments), GetSkill(EQ::skills::SkillSinging), GetSkill(EQ::skills::SkillStringedInstruments), GetSkill(EQ::skills::SkillWindInstruments));
|
||||
}
|
||||
@@ -7014,7 +7014,7 @@ void Bot::CalcBotStats(bool showtext) {
|
||||
GetBotOwner()->Message(Chat::Yellow, "Level: %i HP: %i AC: %i Mana: %i STR: %i STA: %i DEX: %i AGI: %i INT: %i WIS: %i CHA: %i", GetLevel(), max_hp, GetAC(), max_mana, GetSTR(), GetSTA(), GetDEX(), GetAGI(), GetINT(), GetWIS(), GetCHA());
|
||||
GetBotOwner()->Message(Chat::Yellow, "Resists-- Magic: %i, Poison: %i, Fire: %i, Cold: %i, Disease: %i, Corruption: %i.",GetMR(),GetPR(),GetFR(),GetCR(),GetDR(),GetCorrup());
|
||||
// Test Code
|
||||
if (GetClass() == BARD) {
|
||||
if (GetClass() == Class::Bard) {
|
||||
GetBotOwner()->Message(Chat::Yellow, "Bard Skills-- Brass: %i, Percussion: %i, Singing: %i, Stringed: %i, Wind: %i",
|
||||
GetSkill(EQ::skills::SkillBrassInstruments) + GetBrassMod(),
|
||||
GetSkill(EQ::skills::SkillPercussionInstruments) + GetPercMod(),
|
||||
@@ -7057,7 +7057,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
uint8 botCasterClass = caster->GetClass();
|
||||
|
||||
if (iSpellTypes == SpellType_Heal) {
|
||||
if (botCasterClass == CLERIC || botCasterClass == DRUID || botCasterClass == SHAMAN) {
|
||||
if (botCasterClass == Class::Cleric || botCasterClass == Class::Druid || botCasterClass == Class::Shaman) {
|
||||
if (caster->IsRaidGrouped()) {
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 gid = raid->GetGroup(caster->GetName());
|
||||
@@ -7069,11 +7069,11 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
else if ((iter->member->GetClass() == WARRIOR || iter->member->GetClass() == PALADIN || iter->member->GetClass() == SHADOWKNIGHT) && iter->member->GetHPRatio() < 95) {
|
||||
else if ((iter->member->GetClass() == Class::Warrior || iter->member->GetClass() == Class::Paladin || iter->member->GetClass() == Class::ShadowKnight) && iter->member->GetHPRatio() < 95) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
else if (iter->member->GetClass() == ENCHANTER && iter->member->GetHPRatio() < 80) {
|
||||
else if (iter->member->GetClass() == Class::Enchanter && iter->member->GetHPRatio() < 80) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
@@ -7085,7 +7085,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
|
||||
if (iter->member && !iter->member->qglobal && iter->member->HasPet() && iter->member->GetPet()->GetHPRatio() < 50) {
|
||||
if (iter->member->GetPet()->GetOwner() != caster && caster->IsEngaged() && iter->member->IsCasting() && iter->member->GetClass() != ENCHANTER)
|
||||
if (iter->member->GetPet()->GetOwner() != caster && caster->IsEngaged() && iter->member->IsCasting() && iter->member->GetClass() != Class::Enchanter)
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(iter->member->GetPet(), 100, SpellType_Heal))
|
||||
@@ -7103,10 +7103,10 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (g->members[i]->IsClient() && g->members[i]->GetHPRatio() < 90) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if ((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN || g->members[i]->GetClass() == SHADOWKNIGHT) && g->members[i]->GetHPRatio() < 95) {
|
||||
} else if ((g->members[i]->GetClass() == Class::Warrior || g->members[i]->GetClass() == Class::Paladin || g->members[i]->GetClass() == Class::ShadowKnight) && g->members[i]->GetHPRatio() < 95) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if (g->members[i]->GetClass() == ENCHANTER && g->members[i]->GetHPRatio() < 80) {
|
||||
} else if (g->members[i]->GetClass() == Class::Enchanter && g->members[i]->GetHPRatio() < 80) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if (g->members[i]->GetHPRatio() < 70) {
|
||||
@@ -7116,7 +7116,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
|
||||
if (g->members[i] && !g->members[i]->qglobal && g->members[i]->HasPet() && g->members[i]->GetPet()->GetHPRatio() < 50) {
|
||||
if (g->members[i]->GetPet()->GetOwner() != caster && caster->IsEngaged() && g->members[i]->IsCasting() && g->members[i]->GetClass() != ENCHANTER )
|
||||
if (g->members[i]->GetPet()->GetOwner() != caster && caster->IsEngaged() && g->members[i]->IsCasting() && g->members[i]->GetClass() != Class::Enchanter )
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(g->members[i]->GetPet(), 100, SpellType_Heal))
|
||||
@@ -7127,7 +7127,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
}
|
||||
|
||||
if ((botCasterClass == PALADIN || botCasterClass == BEASTLORD || botCasterClass == RANGER) && (caster->HasGroup() || caster->IsRaidGrouped())) {
|
||||
if ((botCasterClass == Class::Paladin || botCasterClass == Class::Beastlord || botCasterClass == Class::Ranger) && (caster->HasGroup() || caster->IsRaidGrouped())) {
|
||||
float hpRatioToHeal = 25.0f;
|
||||
switch(caster->GetBotStance()) {
|
||||
case EQ::constants::stanceReactive:
|
||||
@@ -7156,12 +7156,12 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if (
|
||||
(iter->member->GetClass() == WARRIOR || iter->member->GetClass() == PALADIN ||
|
||||
iter->member->GetClass() == SHADOWKNIGHT) &&
|
||||
(iter->member->GetClass() == Class::Warrior || iter->member->GetClass() == Class::Paladin ||
|
||||
iter->member->GetClass() == Class::ShadowKnight) &&
|
||||
iter->member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if (iter->member->GetClass() == ENCHANTER &&
|
||||
} else if (iter->member->GetClass() == Class::Enchanter &&
|
||||
iter->member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
@@ -7174,7 +7174,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (iter->member && !iter->member->qglobal && iter->member->HasPet() &&
|
||||
iter->member->GetPet()->GetHPRatio() < 25) {
|
||||
if (iter->member->GetPet()->GetOwner() != caster && caster->IsEngaged() &&
|
||||
iter->member->IsCasting() && iter->member->GetClass() != ENCHANTER)
|
||||
iter->member->IsCasting() && iter->member->GetClass() != Class::Enchanter)
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(iter->member->GetPet(), 100, SpellType_Heal))
|
||||
@@ -7191,12 +7191,12 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (g->members[i]->IsClient() && g->members[i]->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if ((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN ||
|
||||
g->members[i]->GetClass() == SHADOWKNIGHT) &&
|
||||
} else if ((g->members[i]->GetClass() == Class::Warrior || g->members[i]->GetClass() == Class::Paladin ||
|
||||
g->members[i]->GetClass() == Class::ShadowKnight) &&
|
||||
g->members[i]->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
} else if (g->members[i]->GetClass() == ENCHANTER &&
|
||||
} else if (g->members[i]->GetClass() == Class::Enchanter &&
|
||||
g->members[i]->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(g->members[i], 100, SpellType_Heal))
|
||||
return true;
|
||||
@@ -7209,7 +7209,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (g->members[i] && !g->members[i]->qglobal && g->members[i]->HasPet() &&
|
||||
g->members[i]->GetPet()->GetHPRatio() < 25) {
|
||||
if (g->members[i]->GetPet()->GetOwner() != caster && caster->IsEngaged() &&
|
||||
g->members[i]->IsCasting() && g->members[i]->GetClass() != ENCHANTER)
|
||||
g->members[i]->IsCasting() && g->members[i]->GetClass() != Class::Enchanter)
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(g->members[i]->GetPet(), 100, SpellType_Heal))
|
||||
@@ -7223,7 +7223,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
|
||||
if (iSpellTypes == SpellType_Buff) {
|
||||
uint8 chanceToCast = caster->IsEngaged() ? caster->GetChanceToCastBySpellType(SpellType_Buff) : 100;
|
||||
if (botCasterClass == BARD) {
|
||||
if (botCasterClass == Class::Bard) {
|
||||
if (caster->AICastSpell(caster, chanceToCast, SpellType_Buff)) {
|
||||
return true;
|
||||
} else
|
||||
@@ -7266,7 +7266,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (iter->member && caster->GetNeedsCured(iter->member)) {
|
||||
if (caster->AICastSpell(iter->member, caster->GetChanceToCastBySpellType(SpellType_Cure), SpellType_Cure))
|
||||
return true;
|
||||
else if (botCasterClass == BARD) {
|
||||
else if (botCasterClass == Class::Bard) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -7285,7 +7285,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
if (g->members[i] && caster->GetNeedsCured(g->members[i])) {
|
||||
if (caster->AICastSpell(g->members[i], caster->GetChanceToCastBySpellType(SpellType_Cure), SpellType_Cure))
|
||||
return true;
|
||||
else if (botCasterClass == BARD)
|
||||
else if (botCasterClass == Class::Bard)
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -7329,7 +7329,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
|
||||
if (iSpellTypes == SpellType_PreCombatBuff) {
|
||||
if (botCasterClass == BARD || caster->IsEngaged())
|
||||
if (botCasterClass == Class::Bard || caster->IsEngaged())
|
||||
return false;
|
||||
|
||||
//added raid check
|
||||
@@ -7361,7 +7361,7 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
|
||||
if (iSpellTypes == SpellType_InCombatBuff) {
|
||||
if (botCasterClass == BARD) {
|
||||
if (botCasterClass == Class::Bard) {
|
||||
if (caster->AICastSpell(caster, iChance, SpellType_InCombatBuff)) {
|
||||
return true;
|
||||
}
|
||||
@@ -7836,16 +7836,16 @@ bool Bot::GetNeedsHateRedux(Mob *tar) {
|
||||
|
||||
if (tar->IsBot()) {
|
||||
switch (tar->GetClass()) {
|
||||
case ROGUE:
|
||||
case Class::Rogue:
|
||||
if (tar->CanFacestab() || tar->CastToBot()->m_evade_timer.Check(false))
|
||||
return false;
|
||||
case CLERIC:
|
||||
case DRUID:
|
||||
case SHAMAN:
|
||||
case NECROMANCER:
|
||||
case WIZARD:
|
||||
case MAGICIAN:
|
||||
case ENCHANTER:
|
||||
case Class::Cleric:
|
||||
case Class::Druid:
|
||||
case Class::Shaman:
|
||||
case Class::Necromancer:
|
||||
case Class::Wizard:
|
||||
case Class::Magician:
|
||||
case Class::Enchanter:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -7874,7 +7874,7 @@ bool Bot::HasOrMayGetAggro() {
|
||||
|
||||
void Bot::SetDefaultBotStance() {
|
||||
EQ::constants::StanceType defaultStance = EQ::constants::stanceBalanced;
|
||||
if (GetClass() == WARRIOR)
|
||||
if (GetClass() == Class::Warrior)
|
||||
defaultStance = EQ::constants::stanceAggressive;
|
||||
|
||||
_botStance = defaultStance;
|
||||
@@ -8707,7 +8707,7 @@ float Bot::GetBotCasterMaxRange(float melee_distance_max) {// Calculate caster d
|
||||
float caster_distance = 0.0f;
|
||||
|
||||
caster_distance_max = GetBotCasterRange() * GetBotCasterRange();
|
||||
if (!GetBotCasterRange() && GetLevel() >= GetStopMeleeLevel() && GetClass() >= WARRIOR && GetClass() <= BERSERKER) {
|
||||
if (!GetBotCasterRange() && GetLevel() >= GetStopMeleeLevel() && GetClass() >= Class::Warrior && GetClass() <= Class::Berserker) {
|
||||
caster_distance_max = MAX_CASTER_DISTANCE[GetClass() - 1];
|
||||
}
|
||||
if (caster_distance_max) {
|
||||
@@ -8806,4 +8806,4 @@ void Bot::AddBotStartingItems(uint16 race_id, uint8 class_id)
|
||||
}
|
||||
}
|
||||
|
||||
uint8 Bot::spell_casting_chances[SPELL_TYPE_COUNT][PLAYER_CLASS_COUNT][EQ::constants::STANCE_TYPE_COUNT][cntHSND] = { 0 };
|
||||
uint8 Bot::spell_casting_chances[SPELL_TYPE_COUNT][Class::PLAYER_CLASS_COUNT][EQ::constants::STANCE_TYPE_COUNT][cntHSND] = { 0 };
|
||||
|
||||
Reference in New Issue
Block a user