diff --git a/ChaosBot/Discord/Services/ExperienceHandler.cs b/ChaosBot/Discord/Services/ExperienceHandler.cs index 9efa6a1..15a8552 100644 --- a/ChaosBot/Discord/Services/ExperienceHandler.cs +++ b/ChaosBot/Discord/Services/ExperienceHandler.cs @@ -39,11 +39,17 @@ namespace ChaosBot.Discord.Services usrNewXp.DiscordGuildId = context.Guild.Id; usrNewXp.DiscordUserId = context.User.Id; usrNewXp.LastUpdated = DateTime.Now; - usrNewXp.Level = await checkLevel(usrNewXp, context); + usrNewXp.Level = usrNewXp.Level; + + ulong newLevel = await checkLevel(usrNewXp, context); + + if(newLevel > usrNewXp.Level) + usrNewXp.Level = newLevel; await dbContext.ExperiencePoints.Upsert(usrNewXp) .On(x => new {x.DiscordGuildId, x.DiscordUserId}).RunAsync(); - } } + } + } else { usrNewXp = new Experience(); @@ -52,6 +58,7 @@ namespace ChaosBot.Discord.Services usrNewXp.DiscordGuildId = context.Guild.Id; usrNewXp.DiscordUserId = context.User.Id; usrNewXp.LastUpdated = DateTime.Now; + usrNewXp.Level = 0; await dbContext.ExperiencePoints.Upsert(usrNewXp) .On(x => new { x.DiscordGuildId, x.DiscordUserId}).RunAsync(); @@ -71,9 +78,9 @@ namespace ChaosBot.Discord.Services try { - ulong nextLevelXP = 6 * (usrExperience.Level / 2) + 48 * usrExperience.Level + 123; + ulong nextLevelXP = 5 * (usrExperience.Level ^ 2) + 50 * usrExperience.Level + 100; - if (usrExperience.Amount >= nextLevelXP) + if (usrExperience.Amount > nextLevelXP) { curLevel = usrExperience.Level + 1; string ConfigSet = ConfigurationRepository.GetValue("LevelUp:Channel", usrExperience.DiscordGuildId, "false");