private void CalculateTempBonds(ref Disciple[] disciples) { for (int i=0;i < disciples.Length;i++) { int hpAdd = 0; int attackAdd = 0; int defAdd = 0; int spiritAdd = 0; foreach (DiscipleBond bond in disciples[i].Bonds) { bool requirementsMet = true; foreach (Disciple requiredDisciple in bond.Required) { if (!disciples.Contains(requiredDisciple)) { requirementsMet = false; break; } } if (requirementsMet) { hpAdd += bond.HpAdd; attackAdd += bond.AttackAdd; defAdd += bond.DefenseAdd; spiritAdd += bond.SpiritAdd; } } Disciple tempDisciple = Disciple.FindById(disciples[i].Id); disciples[i].Hp = (int)(tempDisciple.Hp * (1 + hpAdd * 0.01f)); disciples[i].Attack = (int)(tempDisciple.Attack * (1 + attackAdd * 0.01f)); disciples[i].Defense = (int)(tempDisciple.Defense * (1 + defAdd * 0.01f)); disciples[i].Spirit = (int)(tempDisciple.Spirit * (1 + spiritAdd * 0.01f)); if (disciples[i].Defense > 20000) { int a = 2; } } }
private Disciple[] GetFilter(Disciple[] t) { List<Disciple> filter = new List<Disciple>(); foreach (Disciple d in t.Where(d => d != null)) { foreach (DiscipleBond db in d.Bonds) { foreach (Disciple d2 in db.Required) { if (!t.Contains(d2) && !filter.Contains(d2)) filter.Add(d2); } } foreach (Disciple d2 in Disciple.All.Where(d2 => d2 != null)) { foreach (DiscipleBond db in d2.Bonds) { foreach (Disciple d3 in db.Required) { if (d3.Equals(d) && !t.Contains(d2) && !filter.Contains(d2)) filter.Add(d2); } } } } return filter.Distinct().ToArray(); }