Exemplo n.º 1
0
        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);
        }