public BuffInfo(Buff buff, BuffDurationType durationType, BuffSourceType sourceType, int duration = 1)
 {
     Buff         = buff;
     DurationType = durationType;
     SourceType   = sourceType;
     Duration     = duration;
 }
Esempio n. 2
0
    private List <BuffInfo> FindDisplayableBuffs(BuffSourceType sourceType, BuffDurationType durationType, bool isPositive)
    {
        var displayableBuffs = BuffInfo.FindAll(info => info.SourceType == sourceType &&
                                                info.ModifierValue != 0 && info.DurationType == durationType && info.Buff.IsPositive() == isPositive).
                               OrderBy(info => info.Buff.AttributeType).ThenBy(info => info.Buff.RuleType).ToList();

        displayableBuffs.RemoveAll(buff => buff.Buff.AttributeType == AttributeType.DamageLow);
        return(displayableBuffs);
    }
Esempio n. 3
0
 public void UpdateDurations(BuffDurationType durationType)
 {
     foreach (var buffEntry in BuffInfo.FindAll(roundBuff => roundBuff.DurationType == durationType))
     {
         if (--buffEntry.Duration <= 0)
         {
             RemoveBuff(buffEntry);
         }
     }
 }
 public void DetachBuff(BuffDurationType type)
 {
     for (int i = 0; i < BuffDic.Count; i++)
     {
         if (BuffDic[i].BuffDurType == type)
         {
             BuffDic[i].DetachBuff();
         }
     }
 }
    //해당 타입의 버프가 해당 해제타입인지 체크
    public bool CheckBuffType(uint BuffID, BuffDurationType type)
    {
        for (int i = 0; i < BuffDic.Count; i++)
        {
            if (BuffDic[i] != null)
            {
                if (BuffDic[i].buffInfo.Indx == BuffID && BuffDic[i].BuffDurType == type)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
Esempio n. 6
0
    public void OnAttach(BuffController _controller, Unit _Caster, Unit _Target, SkillTables.BuffInfo _buffInfo, float _affectValue, BuffDurationType _Type, float _BuffDuration)
    {
        controller = _controller;
        buffInfo   = _buffInfo;
        //ability = _ability;
        BuffDurType  = _Type;
        BuffDuration = _BuffDuration;
        Caster       = _Caster;
        Target       = _Target;

        byte overLapCount = _buffInfo.overLapCount;

        if (overLapCount == 0)
        {
            overLapCount = 1;
        }

        //< 중첩 카운트 체크
        if (overLapCount <= AccrueCount)
        {
            //BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "(Max)");
            return;
        }

        //< 능력치부터 적용
        AffectBuff(_affectValue, (type) =>
        {
            if (!type)
            {
                //< 적용부터 실패했다면 바로 버프를 삭제시켜줌
                controller.DetachBuff(this, true);
                BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "抵抗");
                return;
            }

            //< 머리위에 띄워주기위함
            BuffController.BuffInfoStringShow(_Caster, _Target, buffInfo, "");

            //< 값 누적
            affectedValue += _affectValue;

            //< 데이터 적용
            AccrueCount++;
            affectValue = _affectValue;

            //< 무적관련 버프일경우에는 이미 버프중에 무적이 걸려있을때에 이전 이펙트를 삭제시켜준다.
            switch ((BuffType)_buffInfo.buffType)
            {
            case BuffType.AllImmune:
            case BuffType.AttackImmune:
            case BuffType.SkillImmune:
                controller.SetImmuneEffect(false);
                break;
            }

            Live = true;

            //< 버프에따른 이펙트를 붙인다
            SetEffect(true);

            //< 버프 아이콘 이름 대입
            if (BuffIcon == "")
            {
                UnitStateBase _UnitStateBase = null;
                if (Caster != null && Caster.FSM.GetState(UnitState.Skill, out _UnitStateBase) && _UnitStateBase is SkillState && (_UnitStateBase as SkillState).actionData != null)
                {
                    BuffIcon = _LowDataMgr.instance.GetLowDataIcon((_UnitStateBase as SkillState).actionData.Icon);
                }
                else
                {
                    BuffIcon = buffInfo.icon;
                }
            }

            //< 버프 유지시간 대입
            LifeTime = _BuffDuration;

            //< 틱 시간 대입
            TickTime = buffInfo.tic;

            //if (SkillAbility.SkillDebugMode && _Caster.UnitType == UnitType.Unit && SimulationGameInfo.SimulationGameCheck)
            //    Debug.Log("버프 생성 : " + (BuffType)_buffInfo.buffType + " , LifeTime " + LifeTime + " , TickTime" + TickTime, Target.gameObject);
        });
    }
Esempio n. 7
0
 public BuffInfo(BuffDurationType durationType, BuffSourceType sourceType)
 {
     DurationType = durationType;
     SourceType   = sourceType;
 }