mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-22 12:18:27 +00:00
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:
+26
-10
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user