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