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