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); }
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()); }
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()); }
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); }
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); }
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]); }
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; } }
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); }
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()); }
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()); }
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); } } }); }
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(); } }
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); }
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); }
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()); }
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()); }
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()); }
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(); }
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); }
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)); }
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); }
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); }