Fixed Merc depop bug, added merc rest regen, fixed merc group spell casting bug where mercs would continue to try to cast group buffs on pets of caster who didn't have Pet Affinity AA.

This commit is contained in:
badcaptain 2013-03-02 01:07:18 -05:00
parent da4cddf1ef
commit 7c34a89ec5
2 changed files with 32 additions and 10 deletions

View File

@ -1,5 +1,11 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50)
-------------------------------------------------------
== 03/2/2013 ==
Bad_Captain: Fixed Merc depop bug.
Bad_Captain: Added merc rest regen.
Bad_Captain: Fixed merc group spell casting bug where mercs would continue to try to cast group buffs on pets of caster who didn't have Pet Affinity AA.
== 03/1/2013 ==
Bad_Captain: Fixed Merc duplicate save bug.
Bad_Captain: Focus items, spell_scale and heal_scale now work implemented and new merc equipment (with focus items).

View File

@ -1441,7 +1441,6 @@ bool Merc::Process()
{
SetMercCharacterID(0);
SetOwnerID(0);
SetID(0);
return false;
}
@ -1479,13 +1478,13 @@ bool Merc::Process()
CalcRestState();
if(GetHP() < GetMaxHP())
SetHP(GetHP() + CalcHPRegen());
SetHP(GetHP() + CalcHPRegen() + RestRegenHP);
if(GetMana() < GetMaxMana())
SetMana(GetMana() + CalcManaRegen());
SetMana(GetMana() + CalcManaRegen() + RestRegenMana);
if(GetEndurance() < GetMaxEndurance())
SetEndurance(GetEndurance() + CalcEnduranceRegen());
SetEndurance(GetEndurance() + CalcEnduranceRegen() + RestRegenEndurance);
}
if(confidence_timer.Check()) {
@ -2350,21 +2349,36 @@ bool Merc::AICastSpell(int8 iChance, int32 iSpellTypes) {
continue;
}
int32 TempDontBuffMeBeforeTime = tar->DontBuffMeBefore();
uint32 TempDontBuffMeBeforeTime = tar->DontBuffMeBefore();
if(AIDoSpellCast(selectedMercSpell.spellid, tar, -1, &TempDontBuffMeBeforeTime)) {
if(TempDontBuffMeBeforeTime != tar->DontBuffMeBefore())
tar->SetDontBuffMeBefore(TempDontBuffMeBeforeTime);
if(AIDoSpellCast(selectedMercSpell.spellid, tar, -1))
castedSpell = true;
}
}
if(!castedSpell && tar->GetPet()) {
//don't cast group spells on pets
if(IsGroupSpell(selectedMercSpell.spellid)
|| spells[selectedMercSpell.spellid].targettype == ST_Group
|| spells[selectedMercSpell.spellid].targettype == ST_GroupTeleport ) {
continue;
}
if(!tar->GetPet()->IsImmuneToSpell(selectedMercSpell.spellid, this)
&& (tar->GetPet()->CanBuffStack(selectedMercSpell.spellid, mercLevel, true) >= 0)) {
int32 TempDontBuffMeBeforeTime = tar->DontBuffMeBefore();
uint32 TempDontBuffMeBeforeTime = tar->DontBuffMeBefore();
if(AIDoSpellCast(selectedMercSpell.spellid, tar->GetPet(), -1, &TempDontBuffMeBeforeTime)) {
if(TempDontBuffMeBeforeTime != tar->DontBuffMeBefore())
tar->SetDontBuffMeBefore(TempDontBuffMeBeforeTime);
if(AIDoSpellCast(selectedMercSpell.spellid, tar->GetPet(), -1))
castedSpell = true;
}
}
}
}
@ -4644,10 +4658,12 @@ Merc* Merc::LoadMerc(Client *c, MercTemplate* merc_template, uint32 merchant_id,
merc->drakkin_heritage = c->GetMercInfo().drakkinHeritage;
merc->drakkin_tattoo = c->GetMercInfo().drakkinTattoo;
merc->drakkin_details = c->GetMercInfo().drakkinDetails;
database.LoadMercBuffs(merc);
}
if(merc->GetMercID()) {
database.LoadMercBuffs(merc);
}
merc->LoadMercSpells();
return merc;