public ArenaResponse Fight(CombatUnit leader, CombatUnit attacker) { ArenaResponse resp = new ArenaResponse(); Player1 = leader; Player2 = attacker; hp1 = Player1.Hp; hp2 = Player2.Hp; def1 = (int)(Player1.Def * 0.33); def2 = (int)(Player2.Def * 0.33); int round = 1; int allDmg1 = 0; int allDmg2 = 0; resp.CombatLog.Title = Player1.Name + " vs. " + Player2.Name; resp.CombatLog.Rounds.Add(new CombatLogUnit(0, 0, 0, hp1, hp2)); while (hp1 >= 0 && hp2 >= 0) { var player1hit = Hit(Player1, def2); var player2hit = Hit(Player2, def1); player1hit = IsDodge(Player2) ? 0 : player1hit; player2hit = IsDodge(Player1) ? 0 : player2hit; player1hit = IsCrit(Player1) ? player1hit * 2 : player1hit; player2hit = IsCrit(Player2) ? player2hit * 2 : player2hit; hp1 -= player2hit; hp2 -= player1hit; allDmg1 += player1hit; allDmg2 += player2hit; resp.CombatLog.Rounds.Add(new CombatLogUnit(round, player1hit, player2hit, hp1, hp2)); round++; } resp.CombatLog.DpsText = "Dps: " + Math.Round((allDmg1 / (double)round - 1), 2) + " - " + Math.Round((allDmg2 / (double)round - 1), 2); if (hp1 >= 0) { resp.IsWin = false; resp.CombatLog.ResultText = Player1.Name + " a győztes."; } else if (hp2 >= 0) { resp.IsWin = true; resp.CombatLog.ResultText = Player2.Name + " a győztes."; } resp.Money = SetMoney(leader.Hp, hp1); return(resp); }
public void CreateArenaLog(ArenaResponse enemyTeam) { var logs = _dataRepository.GetLogs(); var logText = enemyTeam.GetResoult(); var newLog = new Log(LogTypeEnum.Arena, logText); logs.Insert(0, newLog); _dataRepository.SaveToFile(logs); }
private static void AssertSingleAliceSuccessfullyRegistered(Round round, DateTimeOffset minAliceDeadline, ArenaResponse <Guid> resp) { var alice = Assert.Single(round.Alices); Assert.NotNull(resp); Assert.NotNull(resp.IssuedAmountCredentials); Assert.NotNull(resp.IssuedVsizeCredentials); Assert.True(minAliceDeadline <= alice.Deadline); }