diff --git a/common/eq_packet_structs.h b/common/eq_packet_structs.h index 7b604fc47..8c9dc0a4e 100644 --- a/common/eq_packet_structs.h +++ b/common/eq_packet_structs.h @@ -4779,6 +4779,7 @@ struct BuffIcon_Struct uint32 entity_id; uint8 all_buffs; uint16 count; + uint8 type; // 0 = self buff window, 1 = self target window, 4 = group, 5 = PC, 7 = NPC BuffIconEntry_Struct entries[0]; }; diff --git a/common/patches/rof.cpp b/common/patches/rof.cpp index e76f33bbe..783156a48 100644 --- a/common/patches/rof.cpp +++ b/common/patches/rof.cpp @@ -417,7 +417,7 @@ namespace RoF outapp->WriteUInt32(0); // Duration outapp->WriteUInt32(0); // ? outapp->WriteUInt8(0); // Caster name - outapp->WriteUInt8(0); // Terminating byte + outapp->WriteUInt8(0); // Type } FINISH_ENCODE(); @@ -454,7 +454,7 @@ namespace RoF __packet->WriteUInt32(emu->entries[i].num_hits); // Unknown __packet->WriteString(""); } - __packet->WriteUInt8(!emu->all_buffs); // Unknown + __packet->WriteUInt8(emu->type); // Unknown FINISH_ENCODE(); } diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index ec5752f79..dbf233f44 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -483,7 +483,7 @@ namespace RoF2 outapp->WriteUInt32(0); // Duration outapp->WriteUInt32(0); // ? outapp->WriteUInt8(0); // Caster name - outapp->WriteUInt8(0); // Terminating byte + outapp->WriteUInt8(0); // Type } FINISH_ENCODE(); @@ -525,7 +525,7 @@ namespace RoF2 __packet->WriteUInt32(emu->entries[i].num_hits); // Unknown __packet->WriteString(""); } - __packet->WriteUInt8(!emu->all_buffs); // Unknown + __packet->WriteUInt8(emu->type); // Unknown FINISH_ENCODE(); } diff --git a/common/patches/uf.cpp b/common/patches/uf.cpp index ef224d574..1a786d94a 100644 --- a/common/patches/uf.cpp +++ b/common/patches/uf.cpp @@ -387,7 +387,7 @@ namespace UF __packet->WriteUInt32(emu->entries[i].num_hits); __packet->WriteString(""); } - __packet->WriteUInt8(!emu->all_buffs); + __packet->WriteUInt8(emu->type); FINISH_ENCODE(); /* diff --git a/common/spdat.cpp b/common/spdat.cpp index 7dd21479c..bb6097566 100644 --- a/common/spdat.cpp +++ b/common/spdat.cpp @@ -447,7 +447,7 @@ bool IsTGBCompatibleSpell(uint16 spell_id) bool IsBardSong(uint16 spell_id) { - if (IsValidSpell(spell_id) && spells[spell_id].classes[BARD - 1] < 127 && !spells[spell_id].IsDisciplineBuff) + if (IsValidSpell(spell_id) && spells[spell_id].classes[BARD - 1] < 255 && !spells[spell_id].IsDisciplineBuff) return true; return false; diff --git a/zone/spells.cpp b/zone/spells.cpp index c3e777b5c..30e3b02d9 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -5403,6 +5403,12 @@ EQApplicationPacket *Mob::MakeBuffsPacket(bool for_target) buff->entity_id = GetID(); buff->count = count; buff->all_buffs = 1; + // there are more types, the client doesn't seem to really care though. The others are also currently hard to fill in here ... + // (see comment in common/eq_packet_structs.h) + if (for_target) + buff->type = IsClient() ? 5 : 7; + else + buff->type = 0; uint32 index = 0; for(unsigned int i = 0; i < buff_count; ++i)