Example #1
0
 public bool CheckTrigger(ITargetable caster, ITargetable target, SpellModificationInformation spellInformation, Spell spell)
 {
     IsTriggered = false;
     if (BuffRef.NeedsRemoval)
     {
         caster.Character.Entity.Buffs.Remove(BuffRef);
         BuffRef     = null;
         NeedRemoval = true;
         return(false);
     }
     IsTriggered = Mechanics.Roll(0, 10000) < TriggerChance * 100;
     if (IsTriggered && BuffRef.HasStucks)
     {
         BuffRef.StuckRemoved();
         if (BuffRef.NeedsRemoval)
         {
             caster.Character.Entity.Buffs.Remove(BuffRef);
             NeedRemoval = true;
             BuffRef     = null;
         }
     }
     return(IsTriggered);
 }
Example #2
0
    //加buff
    public Buff AddBuff(uint buffId, int buffTypeId, ulong caster, ulong target, bool showFireEffect = true)
    {
        var table = Table.GetBuff(buffTypeId);

        if (null == table)
        {
            Logger.Fatal("Table.GetBuff({0})", buffTypeId);
            return(null);
        }

        var buff = new Buff
        {
            BuffId     = buffId,
            BuffTypeId = buffTypeId,
            CasterId   = caster,
            TargetId   = target,
            State      = BuffState.Added,
            Record     = table
        };

        mBuffList.Add(buff);

        var __array1       = table.Effect;
        var __arrayLength1 = __array1.Length;

        for (var __i1 = 0; __i1 < __arrayLength1; ++__i1)
        {
            var effect = __array1[__i1];
            {
                if (-1 != effect)
                {
                    if (!showFireEffect && !Mathf.Approximately(Table.GetEffect(effect).Duration, 0))
                    {
                        continue;
                    }

                    var buffref = new BuffRef();
                    buffref.BuffId       = buff.BuffId;
                    buffref.EffectTypeId = effect;
                    LoadQueue.Add(buffref);
                    buff.State = BuffState.LoadingEffect;
                }
            }
        }

        if (showFireEffect)
        {
            if (-1 != table.Sound)
            {
                var sound = Table.GetSound(table.Sound);
                if (sound.IsLoop != 0)
                {
                    buff.SoundId = SoundManager.NextTag;
                    SoundManager.Instance.PlaySoundEffect(table.Sound, 1.0f, buff.SoundId);
                }
                else
                {
                    SoundManager.Instance.PlaySoundEffect(table.Sound);
                }
            }
        }

        if (LoadQueue.Count > MAXBUFF_LOADING)
        {
            LoadQueue.RemoveRange(0, LoadQueue.Count - MAXBUFF_LOADING);
        }

        return(buff);
    }