public void AddToPlan(object tp, int value, int cost) { PlanningEntry entry = Entries.FirstOrDefault(e => e.TrainPoint == tp); if (entry != null) { Entries.Remove(entry); } Entries.Add(new PlanningEntry(tp, value, cost)); if (tp is MagicalAbility ability && ability <= MagicalAbility.WrestlingMastery) { TrainingPoint trainingPoint = PetTrainingHelper.GetTrainingPoint(ability); foreach (PlanningEntry en in Entries) { if (trainingPoint.Requirements != null && trainingPoint.Requirements.Length > 0) { foreach (TrainingPointRequirement req in trainingPoint.Requirements) { if (req != null) { if (req.Requirement is WeaponAbility && en.TrainPoint is WeaponAbility || req.Requirement is SpecialAbility && en.TrainPoint is SpecialAbility || req.Requirement is AreaEffect && en.TrainPoint is AreaEffect) { en.Value = 0; en.Cost = 0; } } } } } } }
public void AddToPlan(object tp, int value, int cost) { PlanningEntry entry = null; for (var index = 0; index < Entries.Count; index++) { var e = Entries[index]; if (e.TrainPoint == tp) { entry = e; break; } } if (entry != null) { Entries.Remove(entry); } Entries.Add(new PlanningEntry(tp, value, cost)); if (tp is MagicalAbility ability && ability <= MagicalAbility.WrestlingMastery) { TrainingPoint trainingPoint = PetTrainingHelper.GetTrainingPoint(ability); for (var index = 0; index < Entries.Count; index++) { PlanningEntry en = Entries[index]; if (trainingPoint.Requirements != null && trainingPoint.Requirements.Length > 0) { for (var i = 0; i < trainingPoint.Requirements.Length; i++) { TrainingPointRequirement req = trainingPoint.Requirements[i]; if (req != null && (req.Requirement is WeaponAbility && en.TrainPoint is WeaponAbility || req.Requirement is SpecialAbility && en.TrainPoint is SpecialAbility || req.Requirement is AreaEffect && en.TrainPoint is AreaEffect)) { en.Value = 0; en.Cost = 0; } } } } } }
public virtual void Serialize(GenericWriter writer) { writer.Write(0); writer.Write(Entries.Count); for (int i = 0; i < Entries.Count; i++) { PlanningEntry entry = Entries[i]; object o = entry.TrainPoint; if (o is MagicalAbility ability) { writer.Write(1); writer.Write((int)ability); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is SpecialAbility specialAbility) { writer.Write(2); writer.Write(Array.IndexOf(SpecialAbility.Abilities, specialAbility)); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is AreaEffect effect) { writer.Write(3); writer.Write(Array.IndexOf(AreaEffect.Effects, effect)); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is WeaponAbility weaponAbility) { writer.Write(4); writer.Write(Array.IndexOf(WeaponAbility.Abilities, weaponAbility)); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is PetStat stat) { writer.Write(5); writer.Write((int)stat); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is ResistanceType resistType) { writer.Write(6); writer.Write((int)resistType); writer.Write(entry.Value); writer.Write(entry.Cost); } else if (o is SkillName skillName) { writer.Write(7); writer.Write((int)skillName); writer.Write(entry.Value); writer.Write(entry.Cost); } else { writer.Write(0); } } }