本文整理汇总了C++中Aura::GetTimeLeft方法的典型用法代码示例。如果您正苦于以下问题:C++ Aura::GetTimeLeft方法的具体用法?C++ Aura::GetTimeLeft怎么用?C++ Aura::GetTimeLeft使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Aura
的用法示例。
在下文中一共展示了Aura::GetTimeLeft方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BuildAuraUpdateAllPacket
bool AuraInterface::BuildAuraUpdateAllPacket(WorldPacket* data)
{
if(!m_auras.size())
return false;
bool res = false;
Aura* aur = NULL;
for (uint32 i=0; i<MAX_AURAS; i++)
{
if(m_auras.find(i) != m_auras.end())
{
res = true;
aur = m_auras.at(i);
aur->BuildAuraUpdate();
uint8 flags = aur->GetAuraFlags();
*data << uint8(aur->m_auraSlot);
int32 stack = aur->stackSize;
if(aur->procCharges > stack && stack != 0)
stack = aur->procCharges;
if(stack < 0)
{
*data << uint32(0);
continue;
}
*data << uint32(aur->GetSpellId());
*data << uint8(flags);
*data << uint8(aur->GetUnitCaster() ? aur->GetUnitCaster()->getLevel() : 0);
*data << uint8(stack);
if(!(flags & AFLAG_NOT_GUID))
FastGUIDPack(*data, aur->GetCasterGUID());
if(flags & AFLAG_HAS_DURATION)
{
*data << aur->GetDuration();
*data << aur->GetTimeLeft();
}
}
}
return res;
}
示例2: RemoveAllAurasByInterruptFlagButSkip
void AuraInterface::RemoveAllAurasByInterruptFlagButSkip(uint32 flag, uint32 skip)
{
Aura* a = NULL;
for(uint32 x = 0; x < MAX_AURAS; x++)
{
a = NULL;
if(m_auras.find(x) == m_auras.end())
continue;
a = m_auras.at(x);
if( a->GetDuration() > 0 && (int32)(a->GetTimeLeft()+500) > a->GetDuration() )
continue;//pretty new aura, don't remove
//some spells do not get removed all the time only at specific intervals
if((a->m_spellProto->AuraInterruptFlags & flag) && (a->m_spellProto->Id != skip) && a->m_spellProto->proc_interval==0)
{
//the black sheeps of sociaty
if(a->m_spellProto->AuraInterruptFlags & AURA_INTERRUPT_ON_CAST_SPELL)
{
switch(a->GetSpellProto()->Id)
{
// priest - holy conc
case 34754:
{
if( m_Unit->GetCurrentSpell() !=NULL &&
!(m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_FLASH_HEAL ||
m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_BINDING_HEAL ||
m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_GREATER_HEAL))
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_FLASH_HEAL && spi->NameHash != SPELL_HASH_BINDING_HEAL && spi->NameHash != SPELL_HASH_GREATER_HEAL)
continue;
}break;
//Arcane Potency
case 57529:
case 57531:
{
if( m_Unit->GetCurrentSpell() != NULL && !(m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_PRESENCE_OF_MIND
|| m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_CLEARCASTING ))
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL || !(spi->c_is_flags & SPELL_FLAG_IS_DAMAGING) )
continue;
}break;
//paladin - Art of war
case 53489:
case 59578:
{
if( m_Unit->GetCurrentSpell() != NULL && m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_FLASH_OF_LIGHT )
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_FLASH_OF_LIGHT )
continue;
}break;
//paladin - Infusion of light
case 53672:
case 54149:
{
if( m_Unit->GetCurrentSpell() != NULL && !(m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_FLASH_OF_LIGHT
|| m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_HOLY_LIGHT))
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_FLASH_OF_LIGHT && spi->NameHash != SPELL_HASH_HOLY_LIGHT)
continue;
}break;
//Mage - Firestarter
case 54741:
{
if( m_Unit->GetCurrentSpell() != NULL && m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_FLAMESTRIKE )
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_FLAMESTRIKE )
continue;
}break;
case 34936: // Backlash
{
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_SHADOW_BOLT && spi->NameHash != SPELL_HASH_INCINERATE )
continue;
}break;
case 17941: //Shadow Trance
{
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_SHADOW_BOLT )
continue;
}break;
// Glyph of Revenge Proc
case 58363:
{
if( m_Unit->GetCurrentSpell() != NULL && m_Unit->GetCurrentSpell()->GetSpellProto()->NameHash == SPELL_HASH_HEROIC_STRIKE )
continue;
SpellEntry *spi = dbcSpell.LookupEntry( skip );
if( spi != NULL && spi->NameHash != SPELL_HASH_HEROIC_STRIKE )
continue;
}break;
case 18708: //Fel Domination
{
//.........这里部分代码省略.........
示例3: SaveAuras
void AuraInterface::SaveAuras(stringstream& ss)
{
for(uint32 x = 0; x < MAX_AURAS; x++) // Crow: Changed to max auras in r1432, since we skip passive auras.
{
if(m_auras.find(x) != m_auras.end())
{
Aura* aur = m_auras.at(x);
// skipped spells due to bugs
switch(aur->m_spellProto->Id)
{
case 642:
case 1020: // Divine Shield
case 11129: // Combustion
case 12043: // Presence of mind
case 16188: // Natures Swiftness
case 17116: // Natures Swiftness
case 23333: // WSG
case 23335: // WSG
case 28682: // Combustion proc
case 31665: // Master of Subtlety (buff)
case 32724: // Gold Team
case 32725: // Green Team
case 32727: // Arena Preparation
case 32728: // Arena Preparation
case 32071: // Hellfire Superority
case 32049: // Hellfire Superority
case 34936: // Backlash
case 35076: // Blessing of A'dal
case 35774: // Gold Team
case 35775: // Green Team
case 44521: // Preparation?
case 44683: // Team A
case 44684: // Team B
case 45438: // Ice Block
case 48418: // Master Shapeshifter Damage (buff)
case 48420: // Master Shapeshifter Critical Strike (buff)
case 48421: // Master Shapeshifter Spell Damage (buff)
case 48422: // Master Shapeshifter Healing (buff)
continue;
break;
}
bool stop = false;
for(uint32 i = 0; i < 3; i++)
{
if(!stop)
{
if((aur->m_spellProto->Effect[i] == SPELL_EFFECT_APPLY_AREA_AURA && aur->GetCasterGUID() != m_Unit->GetGUID()) ||
aur->m_spellProto->Effect[i] == SPELL_EFFECT_APPLY_AURA_128 ||
aur->m_spellProto->Effect[i] == SPELL_EFFECT_ADD_FARSIGHT)
{
stop = true;
break;
}
}
}
if(stop)
continue;
// We are going to cast passive spells anyway on login so no need to save auras for them
if( aur->IsPassive() || aur->m_spellProto->c_is_flags & SPELL_FLAG_IS_EXPIREING_WITH_PET || aur->m_spellProto->AuraInterruptFlags & AURA_INTERRUPT_ON_STAND_UP )
continue; // To prevent food/drink bug
ss << aur->GetSpellId() << "," << aur->GetTimeLeft() << ",";
}
}
}