Loop through xp rewards.

This allows them to still be applied in case a high amount of xp is gained.
This commit is contained in:
Alan Beatty
2021-09-03 11:59:55 -05:00
committed by Kwoth
parent a89e3989a3
commit b17c3d934e

View File

@@ -226,29 +226,33 @@ namespace NadekoBot.Modules.Xp.Services
curRewards.Add(usr.GuildId, crews);
}
var rrew = rrews.FirstOrDefault(x => x.Level == newGuildLevelData.Level);
if (rrew != null)
//loop through levels since last level up, so if a high amount of xp is gained, reward are still applied.
for (var i = oldGuildLevelData.Level + 1; i <= newGuildLevelData.Level; i++)
{
var role = first.User.Guild.GetRole(rrew.RoleId);
if (role is not null)
var rrew = rrews.FirstOrDefault(x => x.Level == i);
if (rrew != null)
{
if (rrew.Remove)
var role = first.User.Guild.GetRole(rrew.RoleId);
if (role is not null)
{
_ = first.User.RemoveRoleAsync(role);
}
else
{
_ = first.User.AddRoleAsync(role);
if (rrew.Remove)
{
_ = first.User.RemoveRoleAsync(role);
}
else
{
_ = first.User.AddRoleAsync(role);
}
}
}
}
//get currency reward for this level
var crew = crews.FirstOrDefault(x => x.Level == newGuildLevelData.Level);
if (crew != null)
{
//give the user the reward if it exists
await _cs.AddAsync(item.Key.User.Id, "Level-up Reward", crew.Amount);
//get currency reward for this level
var crew = crews.FirstOrDefault(x => x.Level == i);
if (crew != null)
{
//give the user the reward if it exists
await _cs.AddAsync(item.Key.User.Id, "Level-up Reward", crew.Amount);
}
}
}
}