Exemple #1
0
        private static Stats ModifyStats(SocketGuildUser user)
        {
            var avatar           = UserAccounts.GetAccount(user);
            var classSeries      = AdeptClassSeriesManager.GetClassSeries(avatar);
            var adept            = AdeptClassSeriesManager.GetClass(avatar);
            var classMultipliers = adept.StatMultipliers;
            var level            = avatar.LevelNumber;

            var Stats = new Stats(
                (int)(baseStats.MaxHP * (1 + 0.25 * level / 1.5)),
                (int)(baseStats.MaxPP * (1 + 0.115 * level / 1.5)),
                (int)(baseStats.Atk * (1 + 0.3 * level / 1.5)),
                (int)(baseStats.Def * (1 + 0.3 * level / 1.5)),
                (int)(baseStats.Spd * (1 + 0.5 * level / 1.5)));

            Stats *= classMultipliers;
            Stats *= 0.01;

            var gear = avatar.Inv.GetGear(classSeries.Archtype);

            gear.ForEach(g =>
            {
                Stats += g.AddStatsOnEquip;
            });

            gear.ForEach(g =>
            {
                Stats *= g.MultStatsOnEquip;
                Stats *= 0.01;
            });

            return(Stats);
        }
Exemple #2
0
        internal static async Task AwardClassSeries(string series, UserAccount avatar, ITextChannel channel)
        {
            if (avatar.BonusClasses.Contains(series))
            {
                return;
            }

            string curClass = AdeptClassSeriesManager.GetClassSeries(avatar).Name;
            var    list     = new List <string>(avatar.BonusClasses)
            {
                series
            };

            list.Sort();
            avatar.BonusClasses = list.ToArray();
            SetClass(avatar, curClass);
            UserAccounts.SaveAccounts();
            var embed = new EmbedBuilder();

            embed.WithColor(Colors.Get("Iodem"));
            embed.WithDescription($"Congratulations, <@{avatar.ID}>! You have unlocked the {series}!");
            if (channel == null)
            {
                return;
            }
            await channel.SendMessageAsync("", false, embed.Build());
        }
Exemple #3
0
        public async Task ClassToggle([Remainder] string name = "")
        {
            var account = UserAccounts.GetAccount(Context.User);

            AdeptClassSeriesManager.TryGetClassSeries(account.GsClass, out AdeptClassSeries curSeries);
            var gotClass = AdeptClassSeriesManager.TryGetClassSeries(name, out AdeptClassSeries series);
            var embed    = new EmbedBuilder().WithColor(Colors.Get(account.Element.ToString()));

            if (gotClass || name == "")
            {
                var success = SetClass(account, series?.Name ?? "");
                if (curSeries.Name.Equals(series?.Name) || success)
                {
                    await Context.Channel.SendMessageAsync(embed : embed
                                                           .WithDescription($"You are {Article(account.GsClass)} {account.GsClass} now, {((SocketGuildUser)Context.User).DisplayName()}.")
                                                           .Build());

                    return;
                }
                else
                {
                    await Context.Channel.SendMessageAsync(embed : embed
                                                           .WithDescription($":x: A {account.Element} Adept cannot get into the {series.Name}")
                                                           .Build());

                    return;
                }
            }

            await Context.Channel.SendMessageAsync(embed : embed
                                                   .WithDescription($":x: I could not find the {name} class in your available classes.")
                                                   .Build());
        }
Exemple #4
0
        protected override async Task AddPlayer(SocketReaction reaction)
        {
            if (PlayerMessages.Values.Any(s => (s.Id == reaction.UserId)))
            {
                return;
            }
            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = EntityConverter.ConvertUser(player);
            var             p            = Factory.CreatePlayerFighter(playerAvatar);

            if (Battle.SizeTeamA == 0 && Difficulty == BattleDifficulty.Easy && playerAvatar.LevelNumber < 10)
            {
                internalDiff = BattleDifficulty.Tutorial;
                SetNextEnemy();
            }
            else if (Difficulty == BattleDifficulty.Tutorial && playerAvatar.LevelNumber >= 10)
            {
                internalDiff = BattleDifficulty.Easy;
                SetNextEnemy();
            }

            if (playerAvatar.LevelNumber < limits[Difficulty])
            {
                return;
            }

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetNextEnemy();
            }

            await AddPlayer(p);
        }
Exemple #5
0
        protected override async Task AddPlayer(SocketReaction reaction)
        {
            if (PlayerMessages.Values.Any(s => (s.avatar.ID == reaction.UserId)))
            {
                return;
            }
            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = UserAccounts.GetAccount(player);
            var             factory      = new PlayerFighterFactory();
            var             p            = factory.CreatePlayerFighter(player);

            if (Difficulty == BattleDifficulty.Tutorial || Difficulty == BattleDifficulty.Easy)
            {
                if (playerAvatar.LevelNumber < 10 && Battle.SizeTeamA == 0)
                {
                    internalDiff = BattleDifficulty.Tutorial;
                    SetNextEnemy();
                }
                else if (Difficulty == BattleDifficulty.Tutorial)
                {
                    internalDiff = BattleDifficulty.Easy;
                    SetNextEnemy();
                }
            }

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetNextEnemy();
            }

            await AddPlayer(p);
        }
Exemple #6
0
        public async Task ChangeElement(UserAccount user, Element chosenElement, string classSeriesName = "")
        {
            foreach (string removed in user.Inv.UnequipExclusiveTo(user.Element))
            {
                var removedEmbed = new EmbedBuilder();
                removedEmbed.WithDescription($"<:Exclamatory:571309036473942026> Your {removed} was unequipped.");
                await Context.Channel.SendMessageAsync("", false, removedEmbed.Build());
            }

            user.Element     = chosenElement;
            user.ClassToggle = 0;
            if (!classSeriesName.IsNullOrEmpty())
            {
                SetClass(user, classSeriesName);
            }

            var series = AdeptClassSeriesManager.GetClassSeries(user);

            if (series != null && !user.DjinnPocket.DjinnSetup.All(d => series.Elements.Contains(d)))
            {
                user.DjinnPocket.DjinnSetup.Clear();
                user.DjinnPocket.DjinnSetup.Add(user.Element);
                user.DjinnPocket.DjinnSetup.Add(user.Element);
            }

            var tags = new[] { "VenusAdept", "MarsAdept", "JupiterAdept", "MercuryAdept" };

            user.Tags.RemoveAll(s => tags.Contains(s));
            user.Tags.Add(tags[(int)chosenElement]);
        }
Exemple #7
0
        public async Task ClassInfo([Remainder] string name = "")
        {
            if (name == "")
            {
                return;
            }

            if (AdeptClassSeriesManager.TryGetClassSeries(name, out AdeptClassSeries series))
            {
                AdeptClass adeptClass = series.Classes.Where(c => c.Name.ToUpper() == name.ToUpper()).FirstOrDefault();
                var        embed      = new EmbedBuilder();
                embed.WithAuthor($"{adeptClass.Name} - {series.Archtype}");
                embed.WithColor(Colors.Get(series.Elements.Select(s => s.ToString()).ToArray()));
                var relevantMoves = AdeptClassSeriesManager.GetMoveset(adeptClass).Where(m => m is Psynergy).ToList().ConvertAll(m => (Psynergy)m).ConvertAll(p => $"{p.Emote} {p.Name} `{p.PPCost}`");
                embed.AddField("Description", series.Description ?? "-");
                embed.AddField("Stats", adeptClass.StatMultipliers, true);
                embed.AddField("Elemental Stats", series.Elstats.ToString(), true);
                embed.AddField("Movepool", string.Join(" - ", relevantMoves));
                embed.AddField($"Other Classes in {series.Name}", string.Join(", ", series.Classes.Select(s => s.Name)), true);
                embed.AddField("Elements", string.Join(", ", series.Elements.Select(e => e.ToString())), true);
                await Context.Channel.SendMessageAsync("", false, embed.Build());

                if (Context.User is SocketGuildUser sgu)
                {
                    _ = ServerGames.UserLookedUpClass(sgu, (SocketTextChannel)Context.Channel);
                }
            }
            else
            {
                return;
            }
        }
Exemple #8
0
        public bool Applies(UserAccount playerAvatar)
        {
            if (Elements.Count() > 0 && !Elements.Contains(playerAvatar.Element))
            {
                return(false);
            }

            if (Classes.Count() > 0 && !Classes.Contains(playerAvatar.GsClass))
            {
                return(false);
            }

            if (ClassSeries.Count() > 0 && !ClassSeries.Contains(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Name))
            {
                return(false);
            }

            if (ArchTypes.Count() > 0 && !ArchTypes.Contains(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype))
            {
                return(false);
            }

            if (MinLevel > playerAvatar.LevelNumber || MaxLevel < playerAvatar.LevelNumber)
            {
                return(false);
            }
            return(true);
        }
Exemple #9
0
        public void ApplyLoadout(UserAccount account)
        {
            var inv = account.Inv;

            GoldenSun.SetClass(account, ClassSeries);
            Gear.ForEach(i => inv.Equip(i, AdeptClassSeriesManager.GetClassSeries(account).Archtype));
            DjinnCommands.TakeDjinn(account, Djinn.ToArray());
        }
Exemple #10
0
        public async Task ChooseElement(Element chosenElement, [Remainder] string classSeriesName = null)
        {
            var embed   = new EmbedBuilder();
            var account = UserAccounts.GetAccount(Context.User);

            var role = Context.Guild.Roles.FirstOrDefault(x => x.Name == chosenElement.ToString() + " Adepts");

            if (chosenElement == Element.none)
            {
                role = Context.Guild.Roles.FirstOrDefault(r => r.Name == "Exathi");
            }
            var venusRole   = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Venus Adepts");
            var marsRole    = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Mars Adepts");
            var jupiterRole = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Jupiter Adepts");
            var mercuryRole = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Mercury Adepts");
            var exathi      = Context.Guild.Roles.FirstOrDefault(x => x.Name == "Exathi") ?? venusRole;

            if (role == null || chosenElement == account.Element)
            {
                return;
            }

            await(Context.User as IGuildUser).RemoveRolesAsync(new IRole[] { venusRole, marsRole, jupiterRole, mercuryRole, exathi });
            await(Context.User as IGuildUser).AddRoleAsync(role);

            foreach (string removed in account.Inv.UnequipExclusiveTo(account.Element))
            {
                var removedEmbed = new EmbedBuilder();
                removedEmbed.WithDescription($"<:Exclamatory:571309036473942026> Your {removed} was unequipped.");
                await Context.Channel.SendMessageAsync("", false, removedEmbed.Build());
            }

            account.Element     = chosenElement;
            account.ClassToggle = 0;
            if (!classSeriesName.IsNullOrEmpty())
            {
                SetClass(account, classSeriesName);
            }

            var series = AdeptClassSeriesManager.GetClassSeries(account);

            if (series != null && !account.DjinnPocket.DjinnSetup.All(d => series.Elements.Contains(d)))
            {
                account.DjinnPocket.DjinnSetup.Clear();
                account.DjinnPocket.DjinnSetup.Add(account.Element);
                account.DjinnPocket.DjinnSetup.Add(account.Element);
            }
            var tags = new[] { "VenusAdept", "MarsAdept", "JupiterAdept", "MercuryAdept" };

            account.Tags.RemoveAll(s => tags.Contains(s));
            account.Tags.Add(tags[(int)chosenElement]);
            UserAccounts.SaveAccounts();
            embed.WithColor(Colors.Get(chosenElement.ToString()));
            embed.WithDescription($"Welcome to the {chosenElement} Clan, {account.GsClass} {((SocketGuildUser)Context.User).DisplayName()}!");
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
Exemple #11
0
        public PlayerFighter(SocketGuildUser user) : base(user.DisplayName(), user.GetAvatarUrl(),
                                                          ModifyStats(user),
                                                          AdeptClassSeriesManager.GetElStats(UserAccounts.GetAccount(user)),
                                                          AdeptClassSeriesManager.GetMoveset(UserAccounts.GetAccount(user)))
        {
            avatar    = UserAccounts.GetAccount(user);
            guildUser = user;

            var classSeries = AdeptClassSeriesManager.GetClassSeries(avatar);

            if (classSeries.Name == "Curse Mage Series" || classSeries.Name == "Medium Series")
            {
                IsImmuneToItemCurse = true;
            }
            var gear = avatar.Inv.GetGear(classSeries.Archtype);

            gear.OrderBy(i => i.ItemType).ToList().ForEach(g =>
            {
                HPrecovery  += g.HPRegen;
                PPrecovery  += g.PPRegen;
                unleashRate += g.IncreaseUnleashRate;
                if (g.IsCursed)
                {
                    AddCondition(Condition.ItemCurse);
                }

                if (g.CuresCurse)
                {
                    IsImmuneToItemCurse = true;
                }

                if (g.Category == ItemCategory.Weapon)
                {
                    Weapon = g;
                    if (Weapon.IsUnleashable)
                    {
                        Weapon.Unleash.AdditionalEffects.Clear();
                    }
                }
                else if (g.IsUnleashable)
                {
                    if (g.GrantsUnleash)
                    {
                        if ((Weapon != null) && Weapon.IsUnleashable)
                        {
                            Weapon.Unleash.AdditionalEffects.AddRange(g.Unleash.Effects);
                        }
                    }
                    else
                    {
                        EquipmentWithEffect.Add(g);
                    }
                }
            });
        }
Exemple #12
0
        private async Task AddPlayer(SocketReaction reaction)
        {
            if (Battle.isActive)
            {
                return;
            }

            if (Messages.Values.Where(v => v is PlayerFighter).Where(s => ((PlayerFighter)s).avatar.ID == reaction.UserId).Any())
            {
                return;
            }

            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = UserAccounts.GetAccount(player);

            var p = new PlayerFighter(player);

            Battle.AddPlayer(p, ColossoBattle.Team.A);

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetRandomEnemies(ColossoBattle.Team.B);
            }

            if (Name == "Bronze")
            {
                if (playerAvatar.LevelNumber < 10 && Messages.Count == 0)
                {
                    Diff = BattleDifficulty.Tutorial;
                    SetRandomEnemies(ColossoBattle.Team.B);
                }
                else
                {
                    if (Diff != BattleDifficulty.Easy)
                    {
                        Diff = BattleDifficulty.Easy;
                        SetRandomEnemies(ColossoBattle.Team.B);
                    }
                }
            }

            var playerMsg = await BattleChannel.SendMessageAsync($"{player.DisplayName()} wants to battle!");

            Messages.Add(playerMsg, p);
            resetIfNotActive.Start();

            if (Messages.Count == PlayersToStart)
            {
                await StartBattle();
            }
        }
Exemple #13
0
        public static Loadout GetLoadout(UserAccount account)
        {
            Loadout L = new Loadout
            {
                Djinn   = account.DjinnPocket.GetDjinns().Select(d => d.Name).ToList(),
                Element = account.Element
            };
            var classSeries = AdeptClassSeriesManager.GetClassSeries(account);

            L.ClassSeries = classSeries.Name;
            L.Gear        = account.Inv.GetGear(classSeries.Archtype).OrderBy(i => i.ItemType).Select(i => i.Name).ToList();
            return(L);
        }
Exemple #14
0
        protected override async Task AddPlayer(SocketReaction reaction)
        {
            if (PlayerMessages.Values.Any(s => (s.avatar.ID == reaction.UserId)))
            {
                return;
            }
            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = UserAccounts.GetAccount(player);
            var             factory      = new PlayerFighterFactory();
            var             p            = factory.CreatePlayerFighter(player);

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetNextEnemy();
            }

            await AddPlayer(p);
        }
Exemple #15
0
        public async Task ClassToggle([Remainder] string name = "")
        {
            var account = EntityConverter.ConvertUser(Context.User);

            AdeptClassSeriesManager.TryGetClassSeries(account.GsClass, out AdeptClassSeries curSeries);
            var gotClass = AdeptClassSeriesManager.TryGetClassSeries(name, out AdeptClassSeries series);
            var embed    = new EmbedBuilder().WithColor(Colors.Get(account.Element.ToString()));

            if (gotClass || name == "")
            {
                var success = SetClass(account, series?.Name ?? "");
                series = AdeptClassSeriesManager.GetClassSeries(account);
                if (curSeries.Name.Equals(series?.Name) || success)
                {
                    if (series != null && !account.DjinnPocket.DjinnSetup.All(d => series.Elements.Contains(d)))
                    {
                        account.DjinnPocket.DjinnSetup.Clear();
                        account.DjinnPocket.DjinnSetup.Add(account.Element);
                        account.DjinnPocket.DjinnSetup.Add(account.Element);
                    }
                    UserAccountProvider.StoreUser(account);
                    await Context.Channel.SendMessageAsync(embed : embed
                                                           .WithDescription($"You are {Article(account.GsClass)} {account.GsClass} now, {account.Name}.")
                                                           .Build());

                    return;
                }
                else
                {
                    await Context.Channel.SendMessageAsync(embed : embed
                                                           .WithDescription($":x: A {account.Element} Adept cannot get into the {series.Name}")
                                                           .Build());

                    return;
                }
            }

            await Context.Channel.SendMessageAsync(embed : embed
                                                   .WithDescription($":x: I could not find the {name} class in your available classes.")
                                                   .Build());
        }
Exemple #16
0
        public async Task Status([Remainder] SocketGuildUser user = null)
        {
            user = user ?? (SocketGuildUser)Context.User;
            var account = UserAccounts.GetAccount(user);
            var factory = new PlayerFighterFactory();
            var p       = factory.CreatePlayerFighter(user);

            var author = new EmbedAuthorBuilder();

            author.WithName($"{user.DisplayName()}");
            author.WithIconUrl(user.GetAvatarUrl());
            //embed.WithThumbnailUrl(user.GetAvatarUrl());
            //embed.WithDescription($"Status.");

            //embed.AddField("Element", account.element, true);

            var embed = new EmbedBuilder()
                        .WithColor(Colors.Get(account.Element.ToString()))
                        .WithAuthor(author)
                        .AddField("Level", account.LevelNumber, true)
                        .AddField("XP", $"{account.XP} - next in {Leveling.XPforNextLevel(account.XP)}", true)
                        .AddField("Rank", UserAccounts.GetRank(user) + 1, true)

                        .AddField("Class", account.GsClass, true)
                        .AddField("Colosso wins | streak", $"{account.ServerStats.ColossoWins} | {account.ServerStats.ColossoHighestStreak} ", true)
                        .AddField("Endless Streaks", $"Solo: {account.ServerStats.ColossoHighestRoundEndlessSolo} | Duo: {account.ServerStats.ColossoHighestRoundEndlessDuo} \nTrio: {account.ServerStats.ColossoHighestRoundEndlessTrio} | Quad: {account.ServerStats.ColossoHighestRoundEndlessQuad}", true)

                        .AddField("Current Equip", account.Inv.GearToString(AdeptClassSeriesManager.GetClassSeries(account).Archtype), true)
                        .AddField("Psynergy", p.GetMoves(false), false)

                        .AddField("Stats", p.Stats.ToString(), true)
                        .AddField("Elemental Stats", p.ElStats.ToString(), true)
                        .AddField("Unlocked Classes", account.BonusClasses.Length == 0 ? "none" : string.Join(", ", account.BonusClasses));

            var Footer = new EmbedFooterBuilder();

            Footer.WithText("Joined this Server on " + user.JoinedAt.Value.Date.ToString("dd-MM-yyyy"));
            Footer.WithIconUrl(Sprites.GetImageFromName("Iodem"));
            embed.WithFooter(Footer);
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
Exemple #17
0
        public async Task Status([Remainder] SocketUser user = null)
        {
            user ??= Context.User;
            var account = EntityConverter.ConvertUser(user);
            var factory = new PlayerFighterFactory();
            var p       = factory.CreatePlayerFighter(account);

            var author = new EmbedAuthorBuilder();

            author.WithName($"{(user is SocketGuildUser sguser ? sguser.DisplayName() : user.Username)}");
            author.WithIconUrl(user.GetAvatarUrl());


            var embed = new EmbedBuilder()
                        .WithColor(Colors.Get(account.Element.ToString()))
                        .WithAuthor(author)
                        .WithTitle($"Level {account.LevelNumber} {account.GsClass} {string.Join("", account.TrophyCase.Trophies.Select(t => t.Icon))} (Rank {UserAccounts.GetRank(account) + 1})")
                        .AddField("Current Equip", account.Inv.GearToString(AdeptClassSeriesManager.GetClassSeries(account).Archtype), true)
                        .AddField("Psynergy", p.GetMoves(false), true)
                        .AddField("Djinn", account.DjinnPocket.GetDjinns().GetDisplay(DjinnDetail.None), true)

                        .AddField("Stats", p.Stats.ToString(), true)
                        .AddField("Elemental Stats", p.ElStats.ToString(), true)

                        .AddField("Unlocked Classes", account.BonusClasses.Count == 0 ? "none" : string.Join(", ", account.BonusClasses))

                        .AddField("XP", $"{account.XP} - next in {account.XPneeded}{(account.NewGames > 1 ? $"\n({account.TotalXP} total | {account.NewGames} resets)" : "")}", true)
                        .AddField("Colosso wins | Dungeon Wins", $"{account.ServerStats.ColossoWins} | {account.ServerStats.DungeonsCompleted}", true)
                        .AddField("Endless Streaks", $"Solo: {account.ServerStats.EndlessStreak.Solo} | Duo: {account.ServerStats.EndlessStreak.Duo} \nTrio: {account.ServerStats.EndlessStreak.Trio} | Quad: {account.ServerStats.EndlessStreak.Quad}", true);

            if (user is SocketGuildUser socketGuildUser)
            {
                var Footer = new EmbedFooterBuilder();
                Footer.WithText("Joined this Server on " + socketGuildUser.JoinedAt.Value.Date.ToString("dd-MM-yyyy"));
                Footer.WithIconUrl(Sprites.GetImageFromName("Iodem"));
                embed.WithFooter(Footer);
            }
            await Context.Channel.SendMessageAsync("", false, embed.Build());
        }
Exemple #18
0
        private static void SetClass(UserAccount account, string name = "")
        {
            if (name == "")
            {
                account.ClassToggle++;
            }
            else
            {
                string curClass = AdeptClassSeriesManager.GetClassSeries(account).Name;
                account.ClassToggle++;
                while (AdeptClassSeriesManager.GetClassSeries(account).Name != curClass)
                {
                    if (AdeptClassSeriesManager.GetClassSeries(account).Name.ToLower().Contains(name.ToLower()))
                    {
                        break;
                    }

                    account.ClassToggle++;
                }
            }
            UserAccounts.SaveAccounts();
        }
Exemple #19
0
        private Stats GetStats(UserAccount avatar)
        {
            var  classSeries      = AdeptClassSeriesManager.GetClassSeries(avatar);
            var  adept            = AdeptClassSeriesManager.GetClass(avatar);
            var  classMultipliers = adept.StatMultipliers;
            uint level;

            switch (LevelOption)
            {
            default:
            case LevelOption.Default:
                level = avatar.LevelNumber;
                break;

            case LevelOption.SetLevel:
                level = SetLevel;
                break;

            case LevelOption.CappedLevel:
                level = Math.Min(avatar.LevelNumber, SetLevel);
                break;
            }
            ;
            Stats Stats;

            switch (BaseStatOption)
            {
            case BaseStatOption.Default:
                Stats = classSeries.Archtype == ArchType.Warrior ? WarriorStatHolder.GetStats(level) : MageStatHolder.GetStats(level);
                break;

            case BaseStatOption.Average:
            default:
                Stats = AverageStatHolder.GetStats(level);
                break;
            }
            return(Stats);
        }
Exemple #20
0
        internal static bool SetClass(UserAccount account, string name = "")
        {
            string curClass = AdeptClassSeriesManager.GetClassSeries(account).Name;

            if (name == "")
            {
                account.ClassToggle++;
            }
            else
            {
                account.ClassToggle++;
                while (AdeptClassSeriesManager.GetClassSeries(account).Name != curClass)
                {
                    if (AdeptClassSeriesManager.GetClassSeries(account).Name.ToLower().Contains(name.ToLower()))
                    {
                        break;
                    }

                    account.ClassToggle++;
                }
            }
            return(!curClass.Equals(AdeptClassSeriesManager.GetClassSeries(account).Name));
        }
Exemple #21
0
        protected override async Task AddPlayer(SocketReaction reaction)
        {
            if (PlayerMessages.Values.Any(s => (s.Id == reaction.UserId)))
            {
                return;
            }
            SocketGuildUser player       = (SocketGuildUser)reaction.User.Value;
            var             playerAvatar = EntityConverter.ConvertUser(player);

            if (playerAvatar.LevelNumber < 50 && !playerAvatar.Tags.Contains("ColossoCompleted"))
            {
                return;
            }

            var p = Factory.CreatePlayerFighter(playerAvatar);

            if (playerAvatar.Inv.GetGear(AdeptClassSeriesManager.GetClassSeries(playerAvatar).Archtype).Any(i => i.Name == "Lure Cap"))
            {
                LureCaps++;
                SetNextEnemy();
            }

            await AddPlayer(p);
        }
Exemple #22
0
        public PlayerFighter CreatePlayerFighter(SocketUser user)
        {
            var p      = new PlayerFighter();
            var avatar = UserAccounts.GetAccount(user);

            p.Name    = (user is SocketGuildUser) ? ((SocketGuildUser)user).DisplayName() : user.Username;
            p.avatar  = avatar;
            p.ImgUrl  = user.GetAvatarUrl();
            p.factory = this;
            if (user is SocketGuildUser)
            {
                p.guildUser = (SocketGuildUser)user;
            }
            p.Moves = AdeptClassSeriesManager.GetMoveset(avatar);

            var Class       = AdeptClassSeriesManager.GetClass(avatar);
            var classSeries = AdeptClassSeriesManager.GetClassSeries(avatar);

            p.Stats   = GetStats(avatar);
            p.ElStats = AdeptClassSeriesManager.GetElStats(avatar);
            if (classSeries.Name == "Curse Mage Series" || classSeries.Name == "Medium Series")
            {
                p.IsImmuneToItemCurse = true;
            }

            switch (InventoryOption)
            {
            case InventoryOption.Default:
                var gear = avatar.Inv.GetGear(classSeries.Archtype);
                gear.ForEach(g =>
                {
                    p.Stats += g.AddStatsOnEquip;
                });
                gear.ForEach(g =>
                {
                    p.ElStats += g.AddElStatsOnEquip;
                });
                gear.ForEach(g =>
                {
                    p.Stats *= g.MultStatsOnEquip;
                    p.Stats *= 0.01;
                });

                gear.OrderBy(i => i.ItemType).ToList().ForEach(g =>
                {
                    p.HPrecovery  += g.HPRegen;
                    p.PPrecovery  += g.PPRegen;
                    p.unleashRate += g.IncreaseUnleashRate;
                    if (g.IsCursed)
                    {
                        p.AddCondition(Condition.ItemCurse);
                    }

                    if (g.CuresCurse)
                    {
                        p.IsImmuneToItemCurse = true;
                    }

                    if (g.Category == ItemCategory.Weapon)
                    {
                        p.Weapon = g;
                        if (p.Weapon.IsUnleashable)
                        {
                            p.Weapon.Unleash.AdditionalEffects.Clear();
                        }
                    }
                    else if (g.IsUnleashable)
                    {
                        if (g.GrantsUnleash)
                        {
                            if ((p.Weapon != null) && p.Weapon.IsUnleashable)
                            {
                                p.Weapon.Unleash.AdditionalEffects.AddRange(g.Unleash.Effects);
                            }
                        }
                        else
                        {
                            p.EquipmentWithEffect.Add(g);
                        }
                    }
                });
                p.HPrecovery = (int)(p.HPrecovery * (1 + (double)avatar.LevelNumber / 33));

                break;

            case InventoryOption.NoInventory:
                break;
            }

            switch (DjinnOption)
            {
            case DjinnOption.Default:
                break;

            case DjinnOption.NoDjinn:
                break;
            }

            p.Stats *= Class.StatMultipliers;
            p.Stats *= 0.01;
            p.Stats *= StatMultiplier;
            p.Stats *= 0.01;

            return(p);
        }