protected override IEnumerable <IFightResult> GenerateResults() { System.Collections.Generic.List <IFightResult> list = new System.Collections.Generic.List <IFightResult>(); list.AddRange( from entry in base.GetAllFightersWithLeavers() where !(entry is IOwnable) select entry.GetFightResult()); FightTeam[] teams = new FightTeam[] { BlueTeam, RedTeam }; for (int i = 0; i < teams.Length; i++) { int xpBonusPercent = 0; int dropBonusPercent = 0; if (teams[i] == GetTeamChallenged()) { xpBonusPercent += GetChallengesExpPercentBonus(); dropBonusPercent += GetChallengesDropPercentBonus(); } FightTeam team = teams[i]; System.Collections.Generic.IEnumerable <Fighter> enumerable = ((team == base.RedTeam) ? base.BlueTeam : base.RedTeam).GetDeads(); IOrderedEnumerable <IFightResult> orderedEnumerable = list.FindAll(x => x.CanLoot(team)).OrderBy(x => x.Prospecting); int teamPP = team.GetFighters(false).Sum((Fighter entry) => entry.Stats.Prospecting.TotalInContext()); teamPP += teamPP.GetPercentageOf(dropBonusPercent); long baseKamas = enumerable.Sum((Fighter entry) => (long)((ulong)entry.GetDroppedKamas())); using (System.Collections.Generic.IEnumerator <IFightResult> enumerator = orderedEnumerable.GetEnumerator()) { while (enumerator.MoveNext()) { IFightResult looter = enumerator.Current; looter.Loot.Kamas = FormulasProvider.Instance.AdjustDroppedKamas(looter, teamPP, baseKamas, dropBonusPercent); System.Collections.Generic.IEnumerable <Fighter> arg_1F0_0 = enumerable; Func <Fighter, System.Collections.Generic.IEnumerable <DroppedItem> > selector = (Fighter dropper) => dropper.RollLoot(looter, dropBonusPercent); foreach (DroppedItem current in arg_1F0_0.SelectMany(selector)) { looter.Loot.AddItem(current); } if (looter is FightPlayerResult && looter.Outcome == FightOutcomeEnum.RESULT_VICTORY) { (looter as FightPlayerResult).AddEarnedExperience(xpBonusPercent); } } } } return(list); }