public async Task <bool> AddCharacter(int index, string charName) { if (_Players.TryGetValue(index, out TrackedPlayer? player) == false) { player = new TrackedPlayer { Index = index, RunnerName = $"Runner {index + 1}" }; _Players.Add(index, player); _AdminMessages.Log($"Created team {player.Index}:{player.RunnerName}"); } foreach (Character c in player.Characters) { if (c.Name.ToLower() == charName.ToLower()) { _Logger.LogWarning($"Not adding duplicate players {charName}"); return(true); } } Character?ch = await _CharacterColleciton.GetByNameAsync(charName); if (ch == null) { _Logger.LogWarning($"Failed to add character {charName} to Runner {index}, does not exist"); return(false); } if (player.RunnerName == $"Runner {index + 1}") { _AdminMessages.Log($"Renamed team {index}:{player.RunnerName} to {ch.Name}"); player.RunnerName = ch.Name; } player.Characters.Add(ch); _Realtime.Subscribe(new Subscription() { Characters = { ch.ID }, Events = { "Death", "GainExperience" } }); _AdminMessages.Log($"Team {index}:{player.RunnerName} added character {charName}"); _MatchEvents.EmitPlayerUpdateEvent(index, player); return(true); }
public async Task Get(string name) { Character?c = await _Characters.GetByNameAsync(name); if (c != null) { _Logger.LogInformation($"{name} => {JToken.FromObject(c)}"); } else { _Logger.LogInformation($"{name} => null"); } }