示例#1
0
        public async Task JoinTeam(int id)
        {
            IGuildUser user = (Context.User as IGuildUser);
            Player     plr  = _storage.Players.Find(x => x.DiscordId == user.Id);

            if (plr is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false);

                return;
            }
            Team team = _storage.Teams.Find(x => x.Id == id);

            if (team is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false);

                return;
            }

            IRole guildRole = Context.Guild.GetRole(team.RoleId);

            await user.AddRoleAsync(guildRole).ConfigureAwait(false);

            plr.TeamId = id;

            await Context.Channel.SendMessageAsync("", false, Embeds.PlayerJoinedTeam(user, team, Context.Guild));
        }
示例#2
0
        public async Task RegisterTribe([Remainder] string tribeName)
        {
            IUser  user = Context.User;
            Player plr  = _storage.Players.Find(x => x.DiscordId == user.Id);

            if (plr is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false);

                return;
            }
            Team team = _storage.Teams.Find(x => x.Id == plr.TeamId);

            if (team is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false);

                return;
            }
            if (_storage.Teams.Any(team => team.TribeName == tribeName))
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.TribeNameAlreadyExists(tribeName)).ConfigureAwait(false);

                return;
            }
            team.TribeName = tribeName;

            await Context.Channel.SendMessageAsync("", false, Embeds.NewTribe(user, team));
        }
示例#3
0
        public async Task CloseWorld()
        {
            IUser  user = Context.User;
            Player plr  = _storage.Players.Find(x => x.DiscordId == user.Id);

            if (plr is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false);

                return;
            }

            Team team = _storage.Teams.Find(x => x.Id == plr.TeamId);

            if (team is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false);

                return;
            }

            if (string.IsNullOrEmpty(team.OpenMap))
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.NoMapOpen(team)).ConfigureAwait(false);

                return;
            }

            await Context.Channel.SendMessageAsync("", false, Embeds.TeamClosedWorld(team));

            StatusClass server = Globals.Servers.Find(x => x.MapName == team.OpenMap);

            server.RemoveTeamFromWhiteList(team);

            try
            {
                server.KickAllTeamPlayers(team).Wait();
            }
            catch (Exception ex)
            {
                _log.Info(ex);
            }

            team.OpenMap = "";
            await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams));
        }
示例#4
0
        public async Task OpenWorld(string serverName)
        {
            IUser  user = Context.User;
            Player plr  = _storage.Players.Find(x => x.DiscordId == user.Id);

            if (plr is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.DiscordUserNoPlayer(user)).ConfigureAwait(false);

                return;
            }
            Team team = _storage.Teams.Find(x => x.Id == plr.TeamId);

            if (team is null)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.UserNotOnTeam(plr)).ConfigureAwait(false);

                return;
            }
            if (team.MinutesRemaining <= 0)
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.TeamNoTimeLeft(team)).ConfigureAwait(false);

                return;
            }
            if (!string.IsNullOrEmpty(team.OpenMap))
            {
                await Context.Channel.SendMessageAsync("", false, Embeds.MapAlreadyOpen(team)).ConfigureAwait(false);

                return;
            }

            if (ValidateWorldExists(serverName))
            {
                StatusClass server = Globals.Servers.Find(x => x.Name == serverName);
                server.WhiteListTeam(team);
                team.OpenMap = server.MapName;
            }

            await Context.Channel.SendMessageAsync("", false, Embeds.TeamOpenedWorld(team)).ConfigureAwait(false);

            await _commands.UpdateHoursRemaining(Embeds.TeamCurrency(_storage.Teams));
        }