diff --git a/common/emu_oplist.h b/common/emu_oplist.h index e8ce3b986..62978655a 100644 --- a/common/emu_oplist.h +++ b/common/emu_oplist.h @@ -74,7 +74,9 @@ N(OP_CharacterCreateRequest), N(OP_CharInventory), N(OP_Charm), N(OP_ChatMessage), +N(OP_ClearAA), N(OP_ClearBlockedBuffs), +N(OP_ClearLeadershipAbilities), N(OP_ClearNPCMarks), N(OP_ClearObject), N(OP_ClearSurname), diff --git a/zone/aa.cpp b/zone/aa.cpp index a8c6ff3d0..65062b7bc 100644 --- a/zone/aa.cpp +++ b/zone/aa.cpp @@ -1471,21 +1471,22 @@ bool ZoneDatabase::LoadAAEffects2() { return true; } + void Client::ResetAA(){ - RefundAA(); + RefundAA(); uint32 i; - for(i=0;iAA = 0; aa[i]->value = 0; m_pp.aa_array[MAX_PP_AA_ARRAY].AA = 0; - m_pp.aa_array[MAX_PP_AA_ARRAY].value = 0; + m_pp.aa_array[MAX_PP_AA_ARRAY].value = 0; } std::map::iterator itr; - for(itr=aa_points.begin();itr!=aa_points.end();++itr) + for(itr = aa_points.begin(); itr != aa_points.end(); ++itr) aa_points[itr->first] = 0; - for(int i = 0; i < _maxLeaderAA; ++i) + for(int i = 0; i < _maxLeaderAA; ++i) m_pp.leader_abilities.ranks[i] = 0; m_pp.group_leadership_points = 0; @@ -1494,10 +1495,23 @@ void Client::ResetAA(){ m_pp.raid_leadership_exp = 0; database.DeleteCharacterAAs(this->CharacterID()); - SaveAA(); + SaveAA(); + SendClearAA(); + SendAAList(); SendAATable(); + SendAAStats(); database.DeleteCharacterLeadershipAAs(this->CharacterID()); - Kick(); + // undefined for these clients + if (GetClientVersionBit & BIT_TitaniumAndEarlier) + Kick(); +} + +void Client::SendClearAA() +{ + EQApplicationPacket *outapp = new EQApplicationPacket(OP_ClearLeadershipAbilities, 0); + FastQueuePacket(&outapp); + outapp = new EQApplicationPacket(OP_ClearAA, 0); + FastQueuePacket(&outapp); } int Client::GroupLeadershipAAHealthEnhancement() diff --git a/zone/client.h b/zone/client.h index 4c69917fd..a63f37b2f 100644 --- a/zone/client.h +++ b/zone/client.h @@ -755,6 +755,7 @@ public: //AA Methods void SendAAList(); void ResetAA(); + void SendClearAA(); void SendAA(uint32 id, int seq=1); void SendPreviousAA(uint32 id, int seq=1); void BuyAA(AA_Action* action);