public async Task NotifyServerLevelProcessingCompleteHandler(NotifyServerLevelProcessingCompleteMessage message, Player player) { var character = player.GetComponent <CharacterComponent>(); if (character.UniverseScore > character.RequiredUniverseScore) { await character.LevelUpAsync(); GameObject.Serialize(player); // Show the levelup animation player.Zone.BroadcastMessage(new PlayFXEffectMessage { Associate = player, EffectId = 7074, EffectType = "create", Name = "levelup_body_glow", Priority = 1, Scale = 1, Serialize = true, }); player.Zone.BroadcastChatMessage($"{character.Name} has reached Level {character.Level}!"); } }
public async Task NotifyServerLevelProcessingCompleteHandler(NotifyServerLevelProcessingCompleteMessage message, Player player) { await using var ctx = new UchuContext(); await using var cdClient = new CdClientContext(); var character = await ctx.Characters.FirstAsync(c => c.Id == player.Id); var lookup_val = 0; foreach (var levelProgressionLookup in cdClient.LevelProgressionLookupTable) { if (levelProgressionLookup.RequiredUScore > character.UniverseScore) { break; } lookup_val = levelProgressionLookup.Id.Value; } Logger.Debug($"Attempting to assign level {lookup_val} to {character.Name} (They are currently level {character.Level})"); if (lookup_val > character.Level) { character.Level = lookup_val; GameObject.Serialize(player); await ctx.SaveChangesAsync(); player.Zone.BroadcastMessage(new PlayFXEffectMessage { Associate = player, EffectId = 7074, EffectType = "create", Name = "levelup_body_glow" }); player.Zone.BroadcastChatMessage($"{character.Name} has reached Level {character.Level}!"); Logger.Debug($"Assigned level {lookup_val} to {character.Name} (They are now currently level {character.Level})"); } }