|
@@ -32,16 +32,6 @@ namespace MafiaTelegramBot.Game
|
|
public OpenedRolesEntity OpenedRoles = new();
|
|
public OpenedRolesEntity OpenedRoles = new();
|
|
public AchievementsEntity Achievements = new();
|
|
public AchievementsEntity Achievements = new();
|
|
|
|
|
|
- public async Task<bool> LoadStatistics()
|
|
|
|
- {
|
|
|
|
- List<StatisticsEntity> userStats = await UserDao.DataBase.Statistics.Where(s => s.UserId == Id).AsNoTracking().ToListAsync();
|
|
|
|
- foreach (var role in userStats)
|
|
|
|
- {
|
|
|
|
- Statistics.Add(Enum.Parse<Roles>(role.Role),role);
|
|
|
|
- }
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public void SetActive()
|
|
public void SetActive()
|
|
{
|
|
{
|
|
_lastActivity = DateTime.Now;
|
|
_lastActivity = DateTime.Now;
|
|
@@ -51,7 +41,7 @@ namespace MafiaTelegramBot.Game
|
|
{
|
|
{
|
|
return DateTime.Now.Subtract(_lastActivity);
|
|
return DateTime.Now.Subtract(_lastActivity);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public static Player FromUserEntity(UserEntity b)
|
|
public static Player FromUserEntity(UserEntity b)
|
|
{
|
|
{
|
|
var serialized = JsonConvert.SerializeObject(b);
|
|
var serialized = JsonConvert.SerializeObject(b);
|
|
@@ -70,7 +60,7 @@ namespace MafiaTelegramBot.Game
|
|
_roomName = roomName;
|
|
_roomName = roomName;
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public async Task<bool> RemoveGame()
|
|
public async Task<bool> RemoveGame()
|
|
{
|
|
{
|
|
if (_roomName == "") return false;
|
|
if (_roomName == "") return false;
|
|
@@ -114,7 +104,7 @@ namespace MafiaTelegramBot.Game
|
|
{
|
|
{
|
|
if (!OpenedRoles.Bodyguard)
|
|
if (!OpenedRoles.Bodyguard)
|
|
{
|
|
{
|
|
- Task.Run(async() =>
|
|
|
|
|
|
+ Task.Run(async () =>
|
|
{
|
|
{
|
|
Achievements.DoctorHeals++;
|
|
Achievements.DoctorHeals++;
|
|
if (Achievements.DoctorHeals == 10)
|
|
if (Achievements.DoctorHeals == 10)
|
|
@@ -178,7 +168,7 @@ namespace MafiaTelegramBot.Game
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public void DetectiveAchievementEvent()
|
|
|
|
|
|
+ public void DetectiveAchievementEvent()
|
|
{
|
|
{
|
|
if (!OpenedRoles.Detective)
|
|
if (!OpenedRoles.Detective)
|
|
{
|
|
{
|
|
@@ -203,44 +193,43 @@ namespace MafiaTelegramBot.Game
|
|
if (!OpenedRoles.Dame)
|
|
if (!OpenedRoles.Dame)
|
|
{
|
|
{
|
|
Achievements.HaveSexWithDon++;
|
|
Achievements.HaveSexWithDon++;
|
|
- if(Achievements.HaveSexWithDon == 5)
|
|
|
|
|
|
+ if (Achievements.HaveSexWithDon == 5)
|
|
{
|
|
{
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
$"{strings.congrats} {roles.Dame}! {strings.you_can_use}");
|
|
$"{strings.congrats} {roles.Dame}! {strings.you_can_use}");
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Dame.ToString()]);
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Dame.ToString()]);
|
|
OpenedRoles.OpenDame();
|
|
OpenedRoles.OpenDame();
|
|
}
|
|
}
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
});
|
|
});
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public void ElderRoleAchievementEvent()
|
|
public void ElderRoleAchievementEvent()
|
|
{
|
|
{
|
|
- Task.Run(async() =>
|
|
|
|
|
|
+ Task.Run(async () =>
|
|
{
|
|
{
|
|
if (!OpenedRoles.Elder)
|
|
if (!OpenedRoles.Elder)
|
|
{
|
|
{
|
|
Achievements.NotDispatchedOnSecondStage++;
|
|
Achievements.NotDispatchedOnSecondStage++;
|
|
- if(Achievements.NotDispatchedOnSecondStage == 2)
|
|
|
|
|
|
+ if (Achievements.NotDispatchedOnSecondStage == 2)
|
|
{
|
|
{
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
$"{strings.congrats} {roles.Elder}! {strings.you_can_use}");
|
|
$"{strings.congrats} {roles.Elder}! {strings.you_can_use}");
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Elder.ToString()]);
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Elder.ToString()]);
|
|
OpenedRoles.OpenElder();
|
|
OpenedRoles.OpenElder();
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
+
|
|
public void LawyerRoleAchievementEvent()
|
|
public void LawyerRoleAchievementEvent()
|
|
{
|
|
{
|
|
if (!OpenedRoles.Lawyer)
|
|
if (!OpenedRoles.Lawyer)
|
|
{
|
|
{
|
|
- Task.Run(async() =>
|
|
|
|
|
|
+ Task.Run(async () =>
|
|
{
|
|
{
|
|
Achievements.MafiaSoloWins++;
|
|
Achievements.MafiaSoloWins++;
|
|
- if(Achievements.MafiaSoloWins == 3)
|
|
|
|
|
|
+ if (Achievements.MafiaSoloWins == 3)
|
|
{
|
|
{
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
$"{strings.congrats} {roles.Lawyer}! {strings.you_can_use}");
|
|
$"{strings.congrats} {roles.Lawyer}! {strings.you_can_use}");
|
|
@@ -248,7 +237,7 @@ namespace MafiaTelegramBot.Game
|
|
OpenedRoles.OpenLawyer();
|
|
OpenedRoles.OpenLawyer();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
public void WerewolfRoleAchievementEvent(int color, bool reset = false)
|
|
public void WerewolfRoleAchievementEvent(int color, bool reset = false)
|
|
@@ -257,7 +246,6 @@ namespace MafiaTelegramBot.Game
|
|
{
|
|
{
|
|
Task.Run(async () =>
|
|
Task.Run(async () =>
|
|
{
|
|
{
|
|
-
|
|
|
|
if (reset)
|
|
if (reset)
|
|
{
|
|
{
|
|
Achievements.PreviousGameWinColor = 0;
|
|
Achievements.PreviousGameWinColor = 0;
|
|
@@ -274,7 +262,6 @@ namespace MafiaTelegramBot.Game
|
|
{
|
|
{
|
|
Achievements.PreviousGameWinColor = color;
|
|
Achievements.PreviousGameWinColor = color;
|
|
}
|
|
}
|
|
-
|
|
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -285,7 +272,6 @@ namespace MafiaTelegramBot.Game
|
|
{
|
|
{
|
|
Task.Run(async () =>
|
|
Task.Run(async () =>
|
|
{
|
|
{
|
|
-
|
|
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
await Bot.SendWithMarkdown2(ChatId,
|
|
$"{strings.congrats} {roles.Hooker}! {strings.you_can_use}");
|
|
$"{strings.congrats} {roles.Hooker}! {strings.you_can_use}");
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Hooker.ToString()]);
|
|
await Bot.SendStickerAsync(ChatId, Stickers.Sticker[Roles.Hooker.ToString()]);
|
|
@@ -293,13 +279,12 @@ namespace MafiaTelegramBot.Game
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public async Task ParasiteRoleAchievementEvent(List<long> team)
|
|
public async Task ParasiteRoleAchievementEvent(List<long> team)
|
|
{
|
|
{
|
|
-
|
|
|
|
if (!OpenedRoles.Parasite)
|
|
if (!OpenedRoles.Parasite)
|
|
{
|
|
{
|
|
- await Task.Run(async() =>
|
|
|
|
|
|
+ await Task.Run(async () =>
|
|
{
|
|
{
|
|
team.Remove(Id);
|
|
team.Remove(Id);
|
|
if (Achievements.PlayerWinTeam == "")
|
|
if (Achievements.PlayerWinTeam == "")
|
|
@@ -355,5 +340,70 @@ namespace MafiaTelegramBot.Game
|
|
Achievements.PlayerWinTeam = "";
|
|
Achievements.PlayerWinTeam = "";
|
|
Achievements.PlayerWinTeamTwo = "";
|
|
Achievements.PlayerWinTeamTwo = "";
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public char GetRank()
|
|
|
|
+ {
|
|
|
|
+ return RankNumber switch
|
|
|
|
+ {
|
|
|
|
+ <100 => 'a',
|
|
|
|
+ >=100 and <300 => 'b',
|
|
|
|
+ >=300 and <500 => 'c',
|
|
|
|
+ >500 => 'd',
|
|
|
|
+ _ => '0'
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void AddRankPoints()
|
|
|
|
+ {
|
|
|
|
+ switch (GetRank())
|
|
|
|
+ {
|
|
|
|
+ case 'a':
|
|
|
|
+ {
|
|
|
|
+ RankNumber += CurrentRole.RankingCost;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'b':
|
|
|
|
+ {
|
|
|
|
+ RankNumber += CurrentRole.RankingCost;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'c':
|
|
|
|
+ {
|
|
|
|
+ RankNumber += (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'd':
|
|
|
|
+ {
|
|
|
|
+ RankNumber += (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void SubtractRankPoints()
|
|
|
|
+ {
|
|
|
|
+ switch (GetRank())
|
|
|
|
+ {
|
|
|
|
+ case 'a':
|
|
|
|
+ {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'b':
|
|
|
|
+ {
|
|
|
|
+ RankNumber -= CurrentRole.RankingCost;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'c':
|
|
|
|
+ {
|
|
|
|
+ RankNumber -= (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'd':
|
|
|
|
+ {
|
|
|
|
+ RankNumber -= CurrentRole.RankingCost;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|