[7809] Replace repeating "remove cooldown and send update to client" code by function call. Author: VladimirMangos

--HG--
branch : trunk
This commit is contained in:
megamage
2009-05-10 14:51:51 -05:00
parent b8e82a23a6
commit ff3332f066
5 changed files with 21 additions and 47 deletions
+1 -5
View File
@@ -1612,11 +1612,7 @@ bool ChatHandler::HandleCooldownCommand(const char* args)
return false; return false;
} }
WorldPacket data( SMSG_CLEAR_COOLDOWN, (4+8) ); target->RemoveSpellCooldown(spell_id,true);
data << uint32(spell_id);
data << uint64(target->GetGUID());
target->GetSession()->SendPacket(&data);
target->RemoveSpellCooldown(spell_id);
PSendSysMessage(LANG_REMOVE_COOLDOWN, spell_id, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str()); PSendSysMessage(LANG_REMOVE_COOLDOWN, spell_id, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str());
} }
return true; return true;
+14
View File
@@ -3289,6 +3289,20 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool update_action_bar_
} }
} }
void Player::RemoveSpellCooldown( uint32 spell_id, bool update /* = false */ )
{
m_spellCooldowns.erase(spell_id);
if(update)
{
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(spell_id);
data << uint64(GetGUID());
SendDirectMessage(&data);
}
}
void Player::RemoveArenaSpellCooldowns() void Player::RemoveArenaSpellCooldowns()
{ {
// remove cooldowns on spells that has < 15 min CD // remove cooldowns on spells that has < 15 min CD
+1 -1
View File
@@ -1384,7 +1384,7 @@ class TRINITY_DLL_SPEC Player : public Unit
void AddSpellCooldown(uint32 spell_id, uint32 itemid, time_t end_time); void AddSpellCooldown(uint32 spell_id, uint32 itemid, time_t end_time);
void SendCooldownEvent(SpellEntry const *spellInfo, uint32 itemId = 0, Spell* spell = NULL); void SendCooldownEvent(SpellEntry const *spellInfo, uint32 itemId = 0, Spell* spell = NULL);
void ProhibitSpellScholl(SpellSchoolMask idSchoolMask, uint32 unTimeMs ); void ProhibitSpellScholl(SpellSchoolMask idSchoolMask, uint32 unTimeMs );
void RemoveSpellCooldown(uint32 spell_id) { m_spellCooldowns.erase(spell_id); } void RemoveSpellCooldown(uint32 spell_id, bool update = false);
void RemoveArenaSpellCooldowns(); void RemoveArenaSpellCooldowns();
void RemoveAllSpellCooldown(); void RemoveAllSpellCooldown();
void _LoadSpellCooldowns(QueryResult *result); void _LoadSpellCooldowns(QueryResult *result);
+1 -9
View File
@@ -585,15 +585,7 @@ void Spell::FillTargetMap()
{ {
// clear cooldown at fail // clear cooldown at fail
if(m_caster->GetTypeId()==TYPEID_PLAYER) if(m_caster->GetTypeId()==TYPEID_PLAYER)
{ ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id,true);
((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id);
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(m_spellInfo->Id);
data << uint64(m_caster->GetGUID());
((Player*)m_caster)->GetSession()->SendPacket(&data);
}
SendCastResult(SPELL_FAILED_NO_EDIBLE_CORPSES); SendCastResult(SPELL_FAILED_NO_EDIBLE_CORPSES);
finish(false); finish(false);
} }
+4 -32
View File
@@ -1323,12 +1323,7 @@ void Spell::EffectDummy(uint32 i)
(GetSpellSchoolMask(spellInfo) & SPELL_SCHOOL_MASK_FROST) && (GetSpellSchoolMask(spellInfo) & SPELL_SCHOOL_MASK_FROST) &&
spellInfo->Id != 11958 && GetSpellRecoveryTime(spellInfo) > 0 ) spellInfo->Id != 11958 && GetSpellRecoveryTime(spellInfo) > 0 )
{ {
((Player*)m_caster)->RemoveSpellCooldown(classspell); ((Player*)m_caster)->RemoveSpellCooldown(classspell,true);
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(classspell);
data << uint64(m_caster->GetGUID());
((Player*)m_caster)->GetSession()->SendPacket(&data);
} }
} }
return; return;
@@ -1579,14 +1574,7 @@ void Spell::EffectDummy(uint32 i)
SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell); SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell);
if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE && (spellInfo->SpellFamilyFlags[1] & 0x00000240 || spellInfo->SpellFamilyFlags[0] & 0x00000860)) if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE && (spellInfo->SpellFamilyFlags[1] & 0x00000240 || spellInfo->SpellFamilyFlags[0] & 0x00000860))
{ ((Player*)m_caster)->RemoveSpellCooldown(classspell,true);
((Player*)m_caster)->RemoveSpellCooldown(classspell);
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(classspell);
data << uint64(m_caster->GetGUID());
((Player*)m_caster)->GetSession()->SendPacket(&data);
}
} }
return; return;
} }
@@ -1613,14 +1601,7 @@ void Spell::EffectDummy(uint32 i)
SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell); SpellEntry const *spellInfo = sSpellStore.LookupEntry(classspell);
if (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && spellInfo->Id != 23989 && GetSpellRecoveryTime(spellInfo) > 0 ) if (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && spellInfo->Id != 23989 && GetSpellRecoveryTime(spellInfo) > 0 )
{ ((Player*)m_caster)->RemoveSpellCooldown(classspell,true);
((Player*)m_caster)->RemoveSpellCooldown(classspell);
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(classspell);
data << uint64(m_caster->GetGUID());
((Player*)m_caster)->GetSession()->SendPacket(&data);
}
} }
return; return;
} }
@@ -1715,17 +1696,8 @@ void Spell::EffectDummy(uint32 i)
// non-standard cast requirement check // non-standard cast requirement check
if (!unitTarget || unitTarget->getAttackers().empty()) if (!unitTarget || unitTarget->getAttackers().empty())
{ {
// clear cooldown at fail
if(m_caster->GetTypeId()==TYPEID_PLAYER) if(m_caster->GetTypeId()==TYPEID_PLAYER)
{ ((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id,true);
((Player*)m_caster)->RemoveSpellCooldown(m_spellInfo->Id);
WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8));
data << uint32(m_spellInfo->Id);
data << uint64(m_caster->GetGUID());
((Player*)m_caster)->GetSession()->SendPacket(&data);
}
SendCastResult(SPELL_FAILED_TARGET_AFFECTING_COMBAT); SendCastResult(SPELL_FAILED_TARGET_AFFECTING_COMBAT);
return; return;
} }