diff --git a/README.md b/README.md index 7e273453a..0870ab9f6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ EQEmu - Custom Game Implementation for EverQuest +TODO: A less useless readme file. + +Dependencies can be obtained at http://eqemu.github.com/ diff --git a/changelog.txt b/changelog.txt index 46e242443..c7e920a9f 100644 --- a/changelog.txt +++ b/changelog.txt @@ -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). diff --git a/zone/merc.cpp b/zone/merc.cpp index dec3c1bcc..3dd9f8e3e 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -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;