protected override List <IFightResult> GetResults() { var challengersRank = (int)ChallengersTeam.GetAllFightersWithLeavers().OfType <CharacterFighter>().Average(x => x.Character.ArenaRank); var defendersRank = (int)DefendersTeam.GetAllFightersWithLeavers().OfType <CharacterFighter>().Average(x => x.Character.ArenaRank); var results = (from fighter in GetFightersAndLeavers().OfType <CharacterFighter>() let outcome = fighter.GetFighterOutcome() select new ArenaFightResult(fighter, outcome, fighter.Loot, ArenaRankFormulas.AdjustRank(fighter.Character.ArenaRank, fighter.Team == ChallengersTeam ? defendersRank : challengersRank, outcome == FightOutcomeEnum.RESULT_VICTORY)) as IFightResult).ToList(); foreach (var playerResult in results.OfType <FightPlayerResult>()) { var document = new BsonDocument { { "FightId", UniqueId.ToString() }, { "FightType", Enum.GetName(typeof(FightTypeEnum), FightType) }, { "Duration", GetFightDuration().TotalMilliseconds }, { "Team", Enum.GetName(typeof(TeamEnum), playerResult.Fighter.Team.Id) }, { "Win", Winners.Id == playerResult.Fighter.Team.Id }, { "AcctId", playerResult.Character.Account.Id }, { "AcctName", playerResult.Character.Account.Login }, { "CharacterId", playerResult.Character.Id }, { "CharacterName", playerResult.Character.Name }, { "IPAddress", playerResult.Character.Client.IP }, { "ClientKey", playerResult.Character.Account.LastHardwareId }, { "Date", DateTime.Now.ToString(CultureInfo.InvariantCulture) } }; MongoLogger.Instance.Insert("fights_results", document); } return(results); }
protected static int CalculateRankLoose(CharacterFighter character) { var opposedTeamRank = (int)character.OpposedTeam.GetAllFightersWithLeavers().OfType <CharacterFighter>().Average(x => x.Character.ArenaRank); return(ArenaRankFormulas.AdjustRank(character.Character.ArenaRank, opposedTeamRank, false)); }