mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-19 13:28:25 +00:00
safe_delete resoves problem. No to track down leak
This commit is contained in:
+57
-47
@@ -7745,11 +7745,13 @@ bool Bot::DoFinishedSpellGroupTarget(uint16 spell_id, Mob* spellTarget, EQ::spel
|
||||
}
|
||||
else if (raid)
|
||||
{
|
||||
for (RaidMember iter : raid->GetRaidGroupMembers(raid->GetGroup(this->GetName()))) {
|
||||
if (iter.member) {
|
||||
SpellOnTarget(spell_id, iter.member);
|
||||
if (iter.member && iter.member->GetPetID())
|
||||
SpellOnTarget(spell_id, iter.member ->GetPet());
|
||||
//for (auto& iter : raid->GetRaidGroupMembers(raid->GetGroup(this->GetName()))) {
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(raid->GetGroup(this->GetName()));
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
if (iter->member) {
|
||||
SpellOnTarget(spell_id, iter->member);
|
||||
if (iter->member && iter->member->GetPetID())
|
||||
SpellOnTarget(spell_id, iter->member ->GetPet());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9264,34 +9266,36 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
{
|
||||
//added raid check
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 g = raid->GetGroup(caster->GetName());
|
||||
if (g < 12) {
|
||||
for (RaidMember& iter : raid->GetRaidGroupMembers(g)) {
|
||||
if (iter.member && !iter.member->qglobal) {
|
||||
if (iter.member->IsClient() && iter.member->GetHPRatio() < 90) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
uint32 gid = raid->GetGroup(caster->GetName());
|
||||
if (gid < 12) {
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(gid);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
//for (auto& iter : raid->GetRaidGroupMembers(g)) {
|
||||
if (iter->member && !iter->member->qglobal) {
|
||||
if (iter->member->IsClient() && iter->member->GetHPRatio() < 90) {
|
||||
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) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if ((iter->member->GetClass() == WARRIOR || iter->member->GetClass() == PALADIN || iter->member->GetClass() == 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) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if (iter->member->GetClass() == ENCHANTER && iter->member->GetHPRatio() < 80) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
else if (iter.member->GetHPRatio() < 70) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if (iter->member->GetHPRatio() < 70) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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 && !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)
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(iter.member->GetPet(), 100, SpellType_Heal))
|
||||
if (caster->AICastSpell(iter->member->GetPet(), 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9353,31 +9357,33 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
}
|
||||
else if (gid < 12)
|
||||
{
|
||||
for (RaidMember& iter : raid->GetRaidGroupMembers(gid)) {
|
||||
if (iter.member && !iter.member->qglobal) {
|
||||
if (iter.member->IsClient() && iter.member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(gid);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
//for (auto& iter : raid->GetRaidGroupMembers(gid)) {
|
||||
if (iter->member && !iter->member->qglobal) {
|
||||
if (iter->member->IsClient() && iter->member->GetHPRatio() < hpRatioToHeal) {
|
||||
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() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if ((iter->member->GetClass() == WARRIOR || iter->member->GetClass() == PALADIN || iter->member->GetClass() == SHADOWKNIGHT) && iter->member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
else if (iter.member->GetClass() == ENCHANTER && iter.member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if (iter->member->GetClass() == ENCHANTER && iter->member->GetHPRatio() < hpRatioToHeal) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
else if (iter.member->GetHPRatio() < hpRatioToHeal / 2) {
|
||||
if (caster->AICastSpell(iter.member, 100, SpellType_Heal))
|
||||
else if (iter->member->GetHPRatio() < hpRatioToHeal / 2) {
|
||||
if (caster->AICastSpell(iter->member, 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
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)
|
||||
continue;
|
||||
|
||||
if (caster->AICastSpell(iter.member->GetPet(), 100, SpellType_Heal))
|
||||
if (caster->AICastSpell(iter->member->GetPet(), 100, SpellType_Heal))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9400,9 +9406,10 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 g = raid->GetGroup(caster->GetName());
|
||||
if (g < 12) {
|
||||
for (RaidMember &iter : raid->GetRaidGroupMembers(g)) {
|
||||
if (iter.member) {
|
||||
if (caster->AICastSpell(iter.member, chanceToCast, SpellType_Buff) || caster->AICastSpell(iter.member->GetPet(), chanceToCast, SpellType_Buff))
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(g);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
if (iter->member) {
|
||||
if (caster->AICastSpell(iter->member, chanceToCast, SpellType_Buff) || caster->AICastSpell(iter->member->GetPet(), chanceToCast, SpellType_Buff))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9446,16 +9453,17 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 gid = raid->GetGroup(caster->GetName());
|
||||
if (gid < 12) {
|
||||
for (RaidMember& iter : raid->GetRaidGroupMembers(gid)) {
|
||||
if (iter.member && caster->GetNeedsCured(iter.member)) {
|
||||
if (caster->AICastSpell(iter.member, caster->GetChanceToCastBySpellType(SpellType_Cure), SpellType_Cure))
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(gid);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
if (iter->member && caster->GetNeedsCured(iter->member)) {
|
||||
if (caster->AICastSpell(iter->member, caster->GetChanceToCastBySpellType(SpellType_Cure), SpellType_Cure))
|
||||
return true;
|
||||
else if (botCasterClass == BARD)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (iter.member && iter.member->GetPet() && caster->GetNeedsCured(iter.member->GetPet())) {
|
||||
if (caster->AICastSpell(iter.member->GetPet(), (int)caster->GetChanceToCastBySpellType(SpellType_Cure) / 4, SpellType_Cure))
|
||||
if (iter->member && iter->member->GetPet() && caster->GetNeedsCured(iter->member->GetPet())) {
|
||||
if (caster->AICastSpell(iter->member->GetPet(), (int)caster->GetChanceToCastBySpellType(SpellType_Cure) / 4, SpellType_Cure))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9483,9 +9491,10 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 gid = raid->GetGroup(caster->GetName());
|
||||
if (gid < 12) {
|
||||
for (RaidMember& iter : raid->GetRaidGroupMembers(gid)) {
|
||||
if (iter.member && caster->GetNeedsHateRedux(iter.member)) {
|
||||
if (caster->AICastSpell(iter.member, caster->GetChanceToCastBySpellType(SpellType_HateRedux), SpellType_HateRedux))
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(gid);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
if (iter->member && caster->GetNeedsHateRedux(iter->member)) {
|
||||
if (caster->AICastSpell(iter->member, caster->GetChanceToCastBySpellType(SpellType_HateRedux), SpellType_HateRedux))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9503,9 +9512,10 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl
|
||||
Raid* raid = entity_list.GetRaidByBotName(caster->GetName());
|
||||
uint32 g = raid->GetGroup(caster->GetName());
|
||||
if (g < 12) {
|
||||
for (RaidMember& iter : raid->GetRaidGroupMembers(g)) {
|
||||
if (iter.member) {
|
||||
if (caster->AICastSpell(iter.member, iChance, SpellType_PreCombatBuff) || caster->AICastSpell(iter.member->GetPet(), iChance, SpellType_PreCombatBuff))
|
||||
std::vector<RaidMember> raid_group_members = raid->GetRaidGroupMembers(g);
|
||||
for (std::vector<RaidMember>::iterator iter = raid_group_members.begin(); iter != raid_group_members.end(); ++iter) {
|
||||
if (iter->member) {
|
||||
if (caster->AICastSpell(iter->member, iChance, SpellType_PreCombatBuff) || caster->AICastSpell(iter->member->GetPet(), iChance, SpellType_PreCombatBuff))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user