mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
[Quest API] Add ResetCastbarCooldownBySlot / ResetCastbarCooldownBySpellID / ResetAllCastbarCooldowns (#1873)
* New function to reset spellbar in perl/lua ResetCastbarCooldownsBySlot -1 for all slots and anything else to do it by slot number * Add ResetCastbarCooldownsBySlot / ResetCastbarCooldownsBySpellID / ResetAllCastbarCooldowns
This commit is contained in:
@@ -6449,3 +6449,67 @@ int Client::GetNextAvailableDisciplineSlot(int starting_slot) {
|
||||
|
||||
return -1; // Return -1 if No Slots open
|
||||
}
|
||||
|
||||
void Client::ResetCastbarCooldownBySlot(int slot) {
|
||||
if (slot < 0) {
|
||||
for (unsigned int i = 0; i < EQ::spells::SPELL_GEM_COUNT; ++i) {
|
||||
if(IsValidSpell(m_pp.mem_spells[i])) {
|
||||
m_pp.spellSlotRefresh[i] = 1;
|
||||
GetPTimers().Clear(&database, (pTimerSpellStart + m_pp.mem_spells[i]));
|
||||
if (!IsLinkedSpellReuseTimerReady(spells[m_pp.mem_spells[i]].timer_id)) {
|
||||
GetPTimers().Clear(&database, (pTimerLinkedSpellReuseStart + spells[m_pp.mem_spells[i]].timer_id));
|
||||
}
|
||||
if (spells[m_pp.mem_spells[i]].timer_id > 0 && spells[m_pp.mem_spells[i]].timer_id < MAX_DISCIPLINE_TIMERS) {
|
||||
SetLinkedSpellReuseTimer(spells[m_pp.mem_spells[i]].timer_id, 0);
|
||||
}
|
||||
SendSpellBarEnable(m_pp.mem_spells[i]);
|
||||
}
|
||||
}
|
||||
} else if (slot < EQ::spells::SPELL_GEM_COUNT) {
|
||||
if(IsValidSpell(m_pp.mem_spells[slot])) {
|
||||
m_pp.spellSlotRefresh[slot] = 1;
|
||||
GetPTimers().Clear(&database, (pTimerSpellStart + m_pp.mem_spells[slot]));
|
||||
if (!IsLinkedSpellReuseTimerReady(spells[m_pp.mem_spells[slot]].timer_id)) {
|
||||
GetPTimers().Clear(&database, (pTimerLinkedSpellReuseStart + spells[m_pp.mem_spells[slot]].timer_id));
|
||||
|
||||
}
|
||||
if (spells[m_pp.mem_spells[slot]].timer_id > 0 && spells[m_pp.mem_spells[slot]].timer_id < MAX_DISCIPLINE_TIMERS) {
|
||||
SetLinkedSpellReuseTimer(spells[m_pp.mem_spells[slot]].timer_id, 0);
|
||||
}
|
||||
SendSpellBarEnable(m_pp.mem_spells[slot]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Client::ResetAllCastbarCooldowns() {
|
||||
for (unsigned int i = 0; i < EQ::spells::SPELL_GEM_COUNT; ++i) {
|
||||
if(IsValidSpell(m_pp.mem_spells[i])) {
|
||||
m_pp.spellSlotRefresh[i] = 1;
|
||||
GetPTimers().Clear(&database, (pTimerSpellStart + m_pp.mem_spells[i]));
|
||||
if (!IsLinkedSpellReuseTimerReady(spells[m_pp.mem_spells[i]].timer_id)) {
|
||||
GetPTimers().Clear(&database, (pTimerLinkedSpellReuseStart + spells[m_pp.mem_spells[i]].timer_id));
|
||||
}
|
||||
if (spells[m_pp.mem_spells[i]].timer_id > 0 && spells[m_pp.mem_spells[i]].timer_id < MAX_DISCIPLINE_TIMERS) {
|
||||
SetLinkedSpellReuseTimer(spells[m_pp.mem_spells[i]].timer_id, 0);
|
||||
}
|
||||
SendSpellBarEnable(m_pp.mem_spells[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Client::ResetCastbarCooldownBySpellID(uint32 spell_id) {
|
||||
for (unsigned int i = 0; i < EQ::spells::SPELL_GEM_COUNT; ++i) {
|
||||
if(IsValidSpell(m_pp.mem_spells[i]) && m_pp.mem_spells[i] == spell_id) {
|
||||
m_pp.spellSlotRefresh[i] = 1;
|
||||
GetPTimers().Clear(&database, (pTimerSpellStart + m_pp.mem_spells[i]));
|
||||
if (!IsLinkedSpellReuseTimerReady(spells[m_pp.mem_spells[i]].timer_id)) {
|
||||
GetPTimers().Clear(&database, (pTimerLinkedSpellReuseStart + spells[m_pp.mem_spells[i]].timer_id));
|
||||
}
|
||||
if (spells[m_pp.mem_spells[i]].timer_id > 0 && spells[m_pp.mem_spells[i]].timer_id < MAX_DISCIPLINE_TIMERS) {
|
||||
SetLinkedSpellReuseTimer(spells[m_pp.mem_spells[i]].timer_id, 0);
|
||||
}
|
||||
SendSpellBarEnable(m_pp.mem_spells[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user