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); }
//加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); }