[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:
Natedog2012
2021-12-08 21:39:35 -06:00
committed by GitHub
parent 294e51fca7
commit 42f439c4b7
5 changed files with 133 additions and 0 deletions
+64
View File
@@ -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;
}
}
}