示例#1
0
        private int[] getBuff(byte Level, List <Buff> buffs, List <BCard> bcards, CardType type, byte subtype, BuffType btype, ref int count)
        {
            int value1 = 0;
            int value2 = 0;
            int value3 = 0;

            IEnumerable <BCard> cards = null;

            if (bcards != null && btype.Equals(BuffType.Good))
            {
                if (subtype % 10 == 1)
                {
                    cards = bcards.Where(s => s.Type.Equals((byte)type) && s.SubType.Equals((byte)(subtype / 10)) && s.FirstData >= 0);
                }
                else
                {
                    cards = bcards.Where(s => s.Type.Equals((byte)type) && s.SubType.Equals((byte)(subtype / 10)) && s.FirstData <= 0);
                }

                foreach (BCard entry in cards)
                {
                    if (entry.IsLevelScaled)
                    {
                        if (entry.IsLevelDivided)
                        {
                            value1 += Level / entry.FirstData;
                        }
                        else
                        {
                            value1 += entry.FirstData * Level;
                        }
                    }
                    else
                    {
                        value1 += entry.FirstData;
                    }
                    value2 += entry.SecondData;
                    value3 += entry.ThirdData;
                    count++;
                }
            }

            if (buffs != null)
            {
                foreach (Buff buff in buffs.Where(b => b.Card.BuffType.Equals(btype)))
                {
                    if (subtype % 10 == 1)
                    {
                        cards = buff.Card.BCards.Where(s => s.Type.Equals((byte)type) && s.SubType.Equals((byte)(subtype / 10)) && (s.CastType != 1 || (s.CastType == 1 && buff.Start.AddMilliseconds(buff.Card.Delay * 100) < DateTime.Now)) && s.FirstData >= 0);
                    }
                    else
                    {
                        cards = buff.Card.BCards.Where(s => s.Type.Equals((byte)type) && s.SubType.Equals((byte)(subtype / 10)) && (s.CastType != 1 || (s.CastType == 1 && buff.Start.AddMilliseconds(buff.Card.Delay * 100) < DateTime.Now)) && s.FirstData <= 0);
                    }

                    foreach (BCard entry in cards)
                    {
                        if (entry.IsLevelScaled)
                        {
                            if (entry.IsLevelDivided)
                            {
                                value1 += buff.Level / entry.FirstData;
                            }
                            else
                            {
                                value1 += entry.FirstData * buff.Level;
                            }
                        }
                        else
                        {
                            value1 += entry.FirstData;
                        }
                        value2 += entry.SecondData;
                        value3 += entry.ThirdData;
                        count++;
                    }
                }
            }

            return(new[] { value1, value2, value3 });
        }
示例#2
0
文件: Buff.cs 项目: hjc00/MyRoguelike
    public void StartBuff(RoleData roleData, ActorBuff actorBuff)
    {
        this.roleData  = roleData;
        this.actorBuff = actorBuff;

        if (buffType.Equals(BuffType.AddHp))
        {
            roleData.hp += amount;
            EffectPerform.Instance.ShowDamageUI(amount, this.actorBuff.transform);
        }
        else if (buffType.Equals(BuffType.AddSpeed))
        {
            roleData.speed += amount;
        }
        else if (buffType.Equals(BuffType.AddAtkPower))
        {
            roleData.atkPower += amount;
        }
        else if (buffType.Equals(BuffType.AddDefPower))
        {
            roleData.defPower += amount;
        }

        if (buffType.Equals(BuffType.SubHp))
        {
            roleData.hp -= amount;
            EffectPerform.Instance.ShowDamageUI(amount, this.actorBuff.transform);

            if (roleData.hp <= 0)
            {
                roleData.ctrl.Die();
            }
        }
        else if (buffType.Equals(BuffType.SubSpeed))
        {
            roleData.speed -= amount;
            if (roleData.speed <= 0)
            {
                roleData.speed = 0;
            }
        }
        else if (buffType.Equals(BuffType.SubAtkPower))
        {
            roleData.atkPower -= amount;
        }
        else if (buffType.Equals(BuffType.SubDefPower))
        {
            roleData.defPower -= amount;
        }

        if (this.buffSettleType.Equals(BuffSettleType.Permernant))
        {
            actorBuff.RemoveBuff(this);
        }
    }