示例#1
0
        private void DetermineFlags()
        {
            m_auraFlags = m_spell.DefaultAuraFlags;
            if (m_auras.Owner.EntityId == m_CasterReference.EntityId)
            {
                m_auraFlags |= AuraFlags.TargetIsCaster;
            }
            if (m_beneficial)
            {
                m_auraFlags |= AuraFlags.Positive;
            }
            else
            {
                m_auraFlags |= AuraFlags.Negative;
            }
            if (m_spell.Durations.Min > 0)
            {
                m_auraFlags |= AuraFlags.HasDuration;
            }
            for (int index = Math.Min(m_handlers.Count - 1, 2); index >= 0; --index)
            {
                int effectIndex = (int)m_handlers[index].SpellEffect.EffectIndex;
                if (effectIndex >= 0)
                {
                    m_auraFlags |= (AuraFlags)(1 << effectIndex);
                }
            }

            if (m_auraFlags != AuraFlags.None)
            {
                return;
            }
            m_auraFlags = AuraFlags.Effect1AppliesAura;
        }
示例#2
0
        public AuraApplicationStateUpdate(AuraFlags flags, byte casterLevel, byte counterAmount, int maximumAuraDuration, int currentAuraDuration)
            : this(casterLevel, counterAmount, PackedGuid.Empty, maximumAuraDuration, currentAuraDuration)
        {
            Flags = flags;

            if (!HasDuration)
            {
                throw new InvalidOperationException($"Cannot create: {nameof(AuraApplicationStateUpdate)} with Duration without Flags: {AuraFlags.DURATION}.");
            }
        }
示例#3
0
        public AuraApplicationStateUpdate(AuraFlags flags, byte casterLevel, byte counterAmount, PackedGuid casterGuid)
            : this(casterLevel, counterAmount, casterGuid, 0, 0)
        {
            Flags = flags;

            if (!HasCasterGuid)
            {
                throw new InvalidOperationException($"Cannot create: {nameof(AuraApplicationStateUpdate)} with Caster Guid without Flags: {AuraFlags.CASTER}.");
            }
        }
示例#4
0
        private void DetermineFlags()
        {
            m_auraFlags = m_spell.DefaultAuraFlags;

            if (m_auras.Owner.EntityId == m_CasterReference.EntityId)
            {
                m_auraFlags |= AuraFlags.TargetIsCaster;
            }

            if (m_beneficial)
            {
                m_auraFlags |= AuraFlags.Positive;
            }
            else
            {
                m_auraFlags |= AuraFlags.Negative;
            }

            if (m_spell.Durations.Min > 0)
            {
                m_auraFlags |= AuraFlags.HasDuration;
            }

            for (var i = Math.Min(m_handlers.Count - 1, 2); i >= 0; i--)
            {
                var handler = m_handlers[i];
                var index   = (int)handler.SpellEffect.EffectIndex;
                if (index >= 0)
                {
                    m_auraFlags |= (AuraFlags)(1 << index);
                }
            }

            if (m_auraFlags == 0)
            {
                m_auraFlags = AuraFlags.Effect1AppliesAura;
            }
        }