mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-26 17:52:34 +00:00
[Bug Fix] SendSpellBarEnable sends correct slotid to fix spellbar on RoF2 (#1848)
* SendSpellBarEnable sends correct slotid to fix spellbar on RoF2 * Send correct data when using StopCasting() to re-enable spellbar
This commit is contained in:
parent
298ae3e3ba
commit
8566662d56
@ -793,6 +793,7 @@ public:
|
|||||||
void UnmemSpellBySpellID(int32 spell_id);
|
void UnmemSpellBySpellID(int32 spell_id);
|
||||||
void UnmemSpellAll(bool update_client = true);
|
void UnmemSpellAll(bool update_client = true);
|
||||||
uint16 FindMemmedSpellBySlot(int slot);
|
uint16 FindMemmedSpellBySlot(int slot);
|
||||||
|
int FindMemmedSpellByID(uint16 spell_id);
|
||||||
int MemmedCount();
|
int MemmedCount();
|
||||||
std::vector<int> GetLearnableDisciplines(uint8 min_level = 1, uint8 max_level = 0);
|
std::vector<int> GetLearnableDisciplines(uint8 min_level = 1, uint8 max_level = 0);
|
||||||
std::vector<int> GetLearnedDisciplines();
|
std::vector<int> GetLearnedDisciplines();
|
||||||
|
|||||||
@ -995,13 +995,18 @@ void Mob::StopCasting()
|
|||||||
c->ResetAlternateAdvancementTimer(casting_spell_aa_id);
|
c->ResetAlternateAdvancementTimer(casting_spell_aa_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int casting_slot = -1;
|
||||||
|
if (casting_spell_slot < CastingSlot::MaxGems) {
|
||||||
|
casting_slot = static_cast<int>(casting_spell_slot);
|
||||||
|
}
|
||||||
|
|
||||||
auto outapp = new EQApplicationPacket(OP_ManaChange, sizeof(ManaChange_Struct));
|
auto outapp = new EQApplicationPacket(OP_ManaChange, sizeof(ManaChange_Struct));
|
||||||
auto mc = (ManaChange_Struct *)outapp->pBuffer;
|
auto mc = (ManaChange_Struct *)outapp->pBuffer;
|
||||||
mc->new_mana = GetMana();
|
mc->new_mana = GetMana();
|
||||||
mc->stamina = GetEndurance();
|
mc->stamina = GetEndurance();
|
||||||
mc->spell_id = casting_spell_id;
|
mc->spell_id = casting_spell_id;
|
||||||
mc->keepcasting = 0;
|
mc->keepcasting = 0;
|
||||||
mc->slot = -1;
|
mc->slot = casting_slot;
|
||||||
c->FastQueuePacket(&outapp);
|
c->FastQueuePacket(&outapp);
|
||||||
}
|
}
|
||||||
ZeroCastingVars();
|
ZeroCastingVars();
|
||||||
@ -5219,7 +5224,7 @@ void Mob::SendSpellBarEnable(uint16 spell_id)
|
|||||||
manachange->spell_id = spell_id;
|
manachange->spell_id = spell_id;
|
||||||
manachange->stamina = CastToClient()->GetEndurance();
|
manachange->stamina = CastToClient()->GetEndurance();
|
||||||
manachange->keepcasting = 0;
|
manachange->keepcasting = 0;
|
||||||
manachange->slot = -1;
|
manachange->slot = CastToClient()->FindMemmedSpellByID(spell_id);
|
||||||
outapp->priority = 6;
|
outapp->priority = 6;
|
||||||
CastToClient()->QueuePacket(outapp);
|
CastToClient()->QueuePacket(outapp);
|
||||||
safe_delete(outapp);
|
safe_delete(outapp);
|
||||||
@ -5428,6 +5433,15 @@ int Client::MemmedCount() {
|
|||||||
return memmed_count;
|
return memmed_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Client::FindMemmedSpellByID(uint16 spell_id) {
|
||||||
|
for (int i = 0; i < EQ::spells::SPELL_GEM_COUNT; i++) {
|
||||||
|
if (m_pp.mem_spells[i] == spell_id) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Client::ScribeSpell(uint16 spell_id, int slot, bool update_client, bool defer_save)
|
void Client::ScribeSpell(uint16 spell_id, int slot, bool update_client, bool defer_save)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user