本文整理汇总了C++中RemoveAurasDueToSpell函数的典型用法代码示例。如果您正苦于以下问题:C++ RemoveAurasDueToSpell函数的具体用法?C++ RemoveAurasDueToSpell怎么用?C++ RemoveAurasDueToSpell使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RemoveAurasDueToSpell函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CombatStop
void Totem::UnSummon() {
CombatStop();
RemoveAurasDueToSpell(GetSpell());
// clear owner's totem slot
for (int i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i) {
if (m_owner->m_SummonSlot[i] == GetGUID()) {
m_owner->m_SummonSlot[i] = 0;
break;
}
}
m_owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
Group *pGroup = NULL;
if (m_owner->GetTypeId() == TYPEID_PLAYER) {
m_owner->ToPlayer()->SendAutoRepeatCancel(this);
// Not only the player can summon the totem (scripted AI)
pGroup = m_owner->ToPlayer()->GetGroup();
if (pGroup) {
for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL;
itr = itr->next()) {
Player* Target = itr->getSource();
if (Target && pGroup->SameSubGroup((Player*) m_owner, Target))
Target->RemoveAurasDueToSpell(GetSpell());
}
}
}
AddObjectToRemoveList();
}
示例2: CombatStop
void Totem::UnSummon()
{
CombatStop();
RemoveAurasDueToSpell(GetSpell());
if (Unit *owner = GetOwner())
{
owner->_RemoveTotem(this);
owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
if (owner->GetTypeId() == TYPEID_PLAYER)
{
((Player*)owner)->SendAutoRepeatCancel(this);
// Not only the player can summon the totem (scripted AI)
if (Group *pGroup = ((Player*)owner)->GetGroup())
{
for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->getSource();
if(Target && pGroup->SameSubGroup((Player*)owner, Target))
Target->RemoveAurasDueToSpell(GetSpell());
}
}
}
if (owner->GetTypeId() == TYPEID_UNIT && ((Creature*)owner)->AI())
((Creature*)owner)->AI()->SummonedCreatureDespawn((Creature*)this);
}
AddObjectToRemoveList();
}
示例3: CombatStop
void Totem::UnSummon()
{
CombatStop();
uint32 maxIdx = GetSpellMaxIndex();
for (int32 i = maxIdx; i >= 0; --i)
{
if (uint32 spellId = GetSpell(i))
RemoveAurasDueToSpell(spellId);
}
if (Unit* owner = GetOwner())
{
owner->_RemoveTotem(this);
for (int32 i = maxIdx; i >= 0; --i)
{
if (uint32 spellId = GetSpell(i))
owner->RemoveAurasDueToSpell(spellId);
}
// Remove Sentry Totem aura on totem unsummon
if (GetEntry() == SENTRY_TOTEM_ENTRY)
owner->RemoveAurasDueToSpell(6495);
//remove aura all party members too
if (owner->GetTypeId() == TYPEID_PLAYER)
{
((Player*)owner)->SendAutoRepeatCancel(this);
// Not only the player can summon the totem (scripted AI)
if (Group* pGroup = ((Player*)owner)->GetGroup())
{
for (GroupReference* itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->getSource();
if (Target && pGroup->SameSubGroup((Player*)owner, Target))
{
for (int32 i = maxIdx; i >= 0; --i)
{
if (uint32 spellId = GetSpell(i))
Target->RemoveAurasDueToSpell(spellId);
}
}
}
}
}
if (owner->GetTypeId() == TYPEID_UNIT && ((Creature*)owner)->AI())
((Creature*)owner)->AI()->SummonedCreatureDespawn((Creature*)this);
}
// any totem unsummon look like as totem kill, req. for proper animation
if (isAlive())
SetDeathState(DEAD);
AddObjectToRemoveList();
}
示例4: ForcedUnsummonDelayEvent
void Totem::UnSummon(uint32 msTime)
{
if (msTime)
{
m_Events.AddEvent(new ForcedUnsummonDelayEvent(*this), m_Events.CalculateTime(msTime));
return;
}
CombatStop();
RemoveAurasDueToSpell(GetSpell(), GetGUID());
// clear owner's totem slot
for (uint8 i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
{
if (GetOwner()->m_SummonSlot[i] == GetGUID())
{
GetOwner()->m_SummonSlot[i].Clear();
break;
}
}
GetOwner()->RemoveAurasDueToSpell(GetSpell(), GetGUID());
// Remove Sentry Totem Aura
if (GetEntry() == SENTRY_TOTEM_ENTRY)
GetOwner()->RemoveAurasDueToSpell(SENTRY_TOTEM_SPELLID);
//remove aura all party members too
if (Player* owner = GetOwner()->ToPlayer())
{
owner->SendAutoRepeatCancel(this);
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(GetUInt32Value(UNIT_CREATED_BY_SPELL)))
GetSpellHistory()->SendCooldownEvent(spell, 0, nullptr, false);
if (Group* group = owner->GetGroup())
{
for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* target = itr->GetSource();
if (target && group->SameSubGroup(owner, target))
target->RemoveAurasDueToSpell(GetSpell(), GetGUID());
}
}
}
//npcbot: send SummonedCreatureDespawn()
if (GetCreatorGUID().IsCreature())
if (Unit* bot = ObjectAccessor::FindConnectedPlayer(GetCreatorGUID()))
if (bot->ToCreature()->GetIAmABot())
bot->ToCreature()->OnBotDespawn(this);
//end npcbot
AddObjectToRemoveList();
}
示例5: ForcedUnsummonDelayEvent
void Totem::UnSummon(uint32 msTime)
{
if (msTime)
{
m_Events.AddEvent(new ForcedUnsummonDelayEvent(*this), m_Events.CalculateTime(msTime));
return;
}
CombatStop();
RemoveAurasDueToSpell(GetSpell(), GetGUID());
// clear owner's totem slot
for (uint8 i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
{
if (GetOwner()->m_SummonSlot[i] == GetGUID())
{
GetOwner()->m_SummonSlot[i].Clear();
break;
}
}
GetOwner()->RemoveAurasDueToSpell(GetSpell(), GetGUID());
// Remove Sentry Totem Aura
if (GetEntry() == SENTRY_TOTEM_ENTRY)
GetOwner()->RemoveAurasDueToSpell(SENTRY_TOTEM_SPELLID);
//remove aura all party members too
if (Player* owner = GetOwner()->ToPlayer())
{
owner->SendAutoRepeatCancel(this);
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(GetUInt32Value(UNIT_CREATED_BY_SPELL)))
GetSpellHistory()->SendCooldownEvent(spell, 0, nullptr, false);
if (Group* group = owner->GetGroup())
{
for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* target = itr->GetSource();
if (target && group->SameSubGroup(owner, target))
target->RemoveAurasDueToSpell(GetSpell(), GetGUID());
}
}
}
// any totem unsummon look like as totem kill, req. for proper animation
if (IsAlive())
setDeathState(DEAD);
AddObjectToRemoveList();
}
示例6: ForcedUnsummonDelayEvent
void Totem::UnSummon(uint32 msTime)
{
if (msTime)
{
m_Events.AddEvent(new ForcedUnsummonDelayEvent(*this), m_Events.CalculateTime(msTime));
return;
}
CombatStop();
RemoveAurasDueToSpell(GetSpell(), GetGUID());
Unit *m_owner = GetOwner();
// clear owner's totem slot
for (uint8 i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
{
if (m_owner->m_SummonSlot[i] == GetGUID())
{
m_owner->m_SummonSlot[i] = 0;
break;
}
}
m_owner->RemoveAurasDueToSpell(GetSpell(), GetGUID());
// Remove Sentry Totem Aura
if (GetEntry() == SENTRY_TOTEM_ENTRY)
m_owner->RemoveAurasDueToSpell(SENTRY_TOTEM_SPELLID);
//remove aura all party members too
if (Player* owner = m_owner->ToPlayer())
{
owner->SendAutoRepeatCancel(this);
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(GetUInt32Value(UNIT_CREATED_BY_SPELL)))
owner->SendCooldownEvent(spell, 0, NULL, false);
if (Group* group = owner->GetGroup())
{
for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* target = itr->GetSource();
if (target && target->IsInMap(owner) && group->SameSubGroup(owner, target))
target->RemoveAurasDueToSpell(GetSpell(), GetGUID());
}
}
}
AddObjectToRemoveList();
}
示例7: SendObjectDeSpawnAnim
void Totem::UnSummon()
{
if (m_type == TOTEM_LAST_BURST)
this->CastSpell(this, m_spell, true);
SendObjectDeSpawnAnim(GetGUID());
SendDestroyObject(GetGUID());
CombatStop();
RemoveAurasDueToSpell(m_spell);
Unit *owner = this->GetOwner();
if (owner)
owner->RemoveAurasDueToSpell(m_spell);
ObjectAccessor::Instance().AddObjectToRemoveList(this);
}
示例8: CombatStop
void Totem::UnSummon()
{
CombatStop();
for (int i=0; i<MAX_CREATURE_SPELL_DATA_SLOT; ++i)
if (m_spells[i])
RemoveAurasDueToSpell(m_spells[i]);
if (Unit *owner = GetOwner())
{
owner->_RemoveTotem(this);
for (int i=0; i<MAX_CREATURE_SPELL_DATA_SLOT; ++i)
if (m_spells[i])
owner->RemoveAurasDueToSpell(m_spells[i]);
//remove aura all party members too
if (owner->GetTypeId() == TYPEID_PLAYER)
{
((Player*)owner)->SendAutoRepeatCancel(this);
// Not only the player can summon the totem (scripted AI)
if (Group *pGroup = ((Player*)owner)->GetGroup())
{
for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->getSource();
if(Target && pGroup->SameSubGroup((Player*)owner, Target))
for (int i=0; i<MAX_CREATURE_SPELL_DATA_SLOT; ++i)
if (m_spells[i])
Target->RemoveAurasDueToSpell(m_spells[i]);
}
}
}
if (owner->GetTypeId() == TYPEID_UNIT && ((Creature*)owner)->AI())
((Creature*)owner)->AI()->SummonedCreatureDespawn((Creature*)this);
}
// any totem unsummon look like as totem kill, req. for proper animation
if (isAlive())
SetDeathState(DEAD);
AddObjectToRemoveList();
}
示例9: SendObjectDeSpawnAnim
void Totem::UnSummon()
{
SendObjectDeSpawnAnim(GetGUID());
CombatStop();
RemoveAurasDueToSpell(GetSpell());
Unit *owner = this->GetOwner();
if (owner)
{
// clear owenr's totem slot
for(int i = 0; i < MAX_TOTEM; ++i)
{
if(owner->m_TotemSlot[i]==GetGUID())
{
owner->m_TotemSlot[i] = 0;
break;
}
}
owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
Group *pGroup = NULL;
if (owner->GetTypeId() == TYPEID_PLAYER)
{
// Not only the player can summon the totem (scripted AI)
pGroup = ((Player*)owner)->GetGroup();
if (pGroup)
{
for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->getSource();
if(Target && pGroup->SameSubGroup((Player*)owner, Target))
Target->RemoveAurasDueToSpell(GetSpell());
}
}
}
}
CleanupsBeforeDelete();
AddObjectToRemoveList();
}
示例10: SendObjectDeSpawnAnim
void Totem::UnSummon()
{
SendObjectDeSpawnAnim(GetGUID());
CombatStop();
RemoveAurasDueToSpell(GetSpell());
// clear owner's totem slot
for (int i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
{
if (m_owner->m_SummonSlot[i] == GetGUID())
{
m_owner->m_SummonSlot[i] = 0;
break;
}
}
m_owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
Group* pGroup = NULL;
if (m_owner->GetTypeId() == TYPEID_PLAYER)
{
// Not only the player can summon the totem (scripted AI)
pGroup = m_owner->ToPlayer()->GetGroup();
if (pGroup)
{
for (GroupReference* itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->GetSource();
if (Target && pGroup->SameSubGroup(m_owner->ToPlayer(), Target))
Target->RemoveAurasDueToSpell(GetSpell());
}
}
}
// any totem unsummon look like as totem kill, req. for proper animation
if (IsAlive())
setDeathState(DEAD);
AddObjectToRemoveList();
}
示例11: CombatStop
void Totem::UnSummon()
{
CombatStop();
RemoveAurasDueToSpell(GetSpell());
// clear owner's totem slot
for (int i = SUMMON_SLOT_TOTEM; i < MAX_TOTEM_SLOT; ++i)
{
if (m_owner->m_SummonSlot[i] == GetGUID())
{
m_owner->m_SummonSlot[i] = 0;
break;
}
}
m_owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
if (Player* owner = m_owner->ToPlayer())
{
owner->SendAutoRepeatCancel(this);
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(GetUInt32Value(UNIT_CREATED_BY_SPELL)))
owner->SendCooldownEvent(spell, 0, NULL, false);
if (Group* group = owner->GetGroup())
{
for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* target = itr->getSource();
if (target && group->SameSubGroup(owner, target))
target->RemoveAurasDueToSpell(GetSpell());
}
}
}
AddObjectToRemoveList();
}
示例12: SendObjectDeSpawnAnim
void Totem::UnSummon()
{
SendObjectDeSpawnAnim(GetGUID());
CombatStop();
RemoveAurasDueToSpell(GetSpell());
if (Unit *owner = GetOwner())
{
owner->_RemoveTotem(this);
owner->RemoveAurasDueToSpell(GetSpell());
//remove aura all party members too
if (owner->GetTypeId() == TYPEID_PLAYER)
{
// Not only the player can summon the totem (scripted AI)
if (Group *pGroup = ((Player*)owner)->GetGroup())
{
for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{
Player* Target = itr->getSource();
if(Target && pGroup->SameSubGroup((Player*)owner, Target))
Target->RemoveAurasDueToSpell(GetSpell());
}
}
}
if (owner->GetTypeId() == TYPEID_UNIT && ((Creature*)owner)->AI())
((Creature*)owner)->AI()->SummonedCreatureDespawn((Creature*)this);
}
// any totem unsummon look like as totem kill, req. for proper animation
if (isAlive())
SetDeathState(DEAD);
AddObjectToRemoveList();
}
示例13: HandleDummy
void HandleDummy(SpellEffIndex /*effIndex*/)
{
auto target = GetHitUnit();
if (!target || target->GetTypeId() != TYPEID_PLAYER)
return;
auto player = GetCaster()->ToPlayer();
if (player->GetQuestStatus(29951) == QUEST_STATUS_INCOMPLETE)
{
if (!player->HasAura(106284))
{
player->MonsterTextEmote("Mudmug's vial will slowly spill water while you are moving. Plan your path carefully!", player->GetGUID() , true);
player->CastSpell(player, 106284, true);
}
else
player->CastSpell(player, 106294, true);
if (player->GetPower(POWER_ALTERNATE_POWER) == 100)
{
player->AddItem(76356, 1);
player->RemoveAurasDueToSpell(106284);
}
}
}
示例14: GetTotalStatValue
bool Player::UpdateAllStats()
{
for (int8 i = STAT_STRENGTH; i < MAX_STATS; ++i)
{
float value = GetTotalStatValue(Stats(i));
SetStat(Stats(i), int32(value));
}
UpdateArmor();
// calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR
UpdateAttackPowerAndDamage(true);
UpdateMaxHealth();
for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i)
UpdateMaxPower(Powers(i));
// Custom MoP script
// Jab Override Driver
if (GetTypeId() == TYPEID_PLAYER && getClass() == CLASS_MONK)
{
Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
if (mainItem && mainItem->GetTemplate()->Class == ITEM_CLASS_WEAPON && !HasAura(125660))
{
RemoveAura(108561); // 2H Staff Override
RemoveAura(115697); // 2H Polearm Override
RemoveAura(115689); // D/W Axes
RemoveAura(115694); // D/W Maces
RemoveAura(115696); // D/W Swords
switch (mainItem->GetTemplate()->SubClass)
{
case ITEM_SUBCLASS_WEAPON_STAFF:
CastSpell(this, 108561, true);
break;
case ITEM_SUBCLASS_WEAPON_POLEARM:
CastSpell(this, 115697, true);
break;
case ITEM_SUBCLASS_WEAPON_AXE:
CastSpell(this, 115689, true);
break;
case ITEM_SUBCLASS_WEAPON_MACE:
CastSpell(this, 115694, true);
break;
case ITEM_SUBCLASS_WEAPON_SWORD:
CastSpell(this, 115696, true);
break;
default:
break;
}
}
else if (HasAura(125660))
{
RemoveAura(108561); // 2H Staff Override
RemoveAura(115697); // 2H Polearm Override
RemoveAura(115689); // D/W Axes
RemoveAura(115694); // D/W Maces
RemoveAura(115696); // D/W Swords
}
}
// Way of the Monk - 120277
if (GetTypeId() == TYPEID_PLAYER)
{
if (getClass() == CLASS_MONK && HasAura(120277))
{
RemoveAurasDueToSpell(120275);
RemoveAurasDueToSpell(108977);
uint32 trigger = 0;
if (IsTwoHandUsed())
{
trigger = 120275;
}
else
{
Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
Item* offItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
if (mainItem && mainItem->GetTemplate()->Class == ITEM_CLASS_WEAPON && offItem && offItem->GetTemplate()->Class == ITEM_CLASS_WEAPON)
trigger = 108977;
}
if (trigger)
CastSpell(this, trigger, true);
}
}
// Assassin's Resolve - 84601
if (GetTypeId() == TYPEID_PLAYER)
{
if (getClass() == CLASS_ROGUE && ToPlayer()->GetSpecializationId(ToPlayer()->GetActiveSpec()) == SPEC_ROGUE_ASSASSINATION)
{
Item* mainItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
Item* offItem = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND);
if (((mainItem && mainItem->GetTemplate()->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER) || (offItem && offItem->GetTemplate()->SubClass == ITEM_SUBCLASS_WEAPON_DAGGER)))
{
if (HasAura(84601))
RemoveAura(84601);
CastSpell(this, 84601, true);
}
//.........这里部分代码省略.........