From 75095f36a5f0a11046398c99f9db1b58698457cb Mon Sep 17 00:00:00 2001 From: Lan <50151341+Lannnnnnnnn@users.noreply.github.com> Date: Tue, 15 Jun 2021 22:51:10 +0300 Subject: [PATCH] don't even remember what I changed but there's a lot of stuff, like fishing images instead of just text, and mining levels --- Kehyeedra3/ApplicationDbContext.cs | 1 + Kehyeedra3/Bot.cs | 108 +++--- Kehyeedra3/Commands.cs | 126 ------- Kehyeedra3/Commands/Admin.cs | 53 +-- Kehyeedra3/Commands/Economy.cs | 270 +++++++++----- Kehyeedra3/Commands/Help.cs | 71 ---- Kehyeedra3/Commands/Interactive.cs | 331 ++++++++++-------- Kehyeedra3/Commands/Stuff.cs | 104 +++++- Kehyeedra3/Extensions.cs | 102 ++++++ Kehyeedra3/Helpers.cs | 156 +++++++++ Kehyeedra3/Kehyeedra3.csproj | 4 +- .../20210410172129_MiningUpdate.Designer.cs | 253 +++++++++++++ .../Migrations/20210410172129_MiningUpdate.cs | 64 ++++ ...0210410173200_MiningUpdateYeah.Designer.cs | 253 +++++++++++++ .../20210410173200_MiningUpdateYeah.cs | 34 ++ ...210411195647_FishingUpdateYeah.Designer.cs | 256 ++++++++++++++ .../20210411195647_FishingUpdateYeah.cs | 44 +++ .../ApplicationDbContextModelSnapshot.cs | 39 ++- Kehyeedra3/{ => Services}/AudioService.cs | 0 Kehyeedra3/Services/Models/Fishing.cs | 132 +++++-- Kehyeedra3/Services/Models/Mining.cs | 19 + Kehyeedra3/Services/Models/User.cs | 9 +- 22 files changed, 1850 insertions(+), 579 deletions(-) delete mode 100644 Kehyeedra3/Commands.cs create mode 100644 Kehyeedra3/Helpers.cs create mode 100644 Kehyeedra3/Migrations/20210410172129_MiningUpdate.Designer.cs create mode 100644 Kehyeedra3/Migrations/20210410172129_MiningUpdate.cs create mode 100644 Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.Designer.cs create mode 100644 Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.cs create mode 100644 Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.Designer.cs create mode 100644 Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.cs rename Kehyeedra3/{ => Services}/AudioService.cs (100%) create mode 100644 Kehyeedra3/Services/Models/Mining.cs diff --git a/Kehyeedra3/ApplicationDbContext.cs b/Kehyeedra3/ApplicationDbContext.cs index 6bd17e6..f215f9d 100644 --- a/Kehyeedra3/ApplicationDbContext.cs +++ b/Kehyeedra3/ApplicationDbContext.cs @@ -13,5 +13,6 @@ namespace Kehyeedra3 public DbSet Fishing { get; set; } public DbSet StoreFronts { get; set; } public DbSet Battlefish { get; set; } + public DbSet Mining { get; set; } } } diff --git a/Kehyeedra3/Bot.cs b/Kehyeedra3/Bot.cs index 11e4c01..c05c22f 100644 --- a/Kehyeedra3/Bot.cs +++ b/Kehyeedra3/Bot.cs @@ -32,26 +32,26 @@ namespace Kehyeedra3 public static string PathToUserData; public static WebClient WeebClient; public static ReminderService RmService; - string[] rcsounds = new string[] - { - Environment.CurrentDirectory + @"Audio\goblin_death.wav", - Environment.CurrentDirectory + @"Audio\cough1.wav", - Environment.CurrentDirectory + @"Audio\cough2.wav", - Environment.CurrentDirectory + @"Audio\wilhelmcough.wav", - Environment.CurrentDirectory + @"Audio\trapcough1.wav", - Environment.CurrentDirectory + @"Audio\trapcough2.wav", - Environment.CurrentDirectory + @"Audio\h3h3cough1.wav", - Environment.CurrentDirectory + @"Audio\h3h3cough2.wav", - Environment.CurrentDirectory + @"Audio\h3h3cough3.wav", - Environment.CurrentDirectory + @"Audio\h3h3cough4.wav", - Environment.CurrentDirectory + @"Audio\h3h3cough5.wav", - Environment.CurrentDirectory + @"Audio\sodocough.mp3", - Environment.CurrentDirectory + @"Audio\dbzscream.wav", - Environment.CurrentDirectory + @"Audio\healthycough1.wav", - Environment.CurrentDirectory + @"Audio\poohcough1.wav", - Environment.CurrentDirectory + @"Audio\jontronooh.wav", - Environment.CurrentDirectory + @"Audio\deep.wav" - }; + //string[] rcsounds = new string[] + //{ + // Environment.CurrentDirectory + @"Audio\goblin_death.wav", + // Environment.CurrentDirectory + @"Audio\cough1.wav", + // Environment.CurrentDirectory + @"Audio\cough2.wav", + // Environment.CurrentDirectory + @"Audio\wilhelmcough.wav", + // Environment.CurrentDirectory + @"Audio\trapcough1.wav", + // Environment.CurrentDirectory + @"Audio\trapcough2.wav", + // Environment.CurrentDirectory + @"Audio\h3h3cough1.wav", + // Environment.CurrentDirectory + @"Audio\h3h3cough2.wav", + // Environment.CurrentDirectory + @"Audio\h3h3cough3.wav", + // Environment.CurrentDirectory + @"Audio\h3h3cough4.wav", + // Environment.CurrentDirectory + @"Audio\h3h3cough5.wav", + // Environment.CurrentDirectory + @"Audio\sodocough.mp3", + // Environment.CurrentDirectory + @"Audio\dbzscream.wav", + // Environment.CurrentDirectory + @"Audio\healthycough1.wav", + // Environment.CurrentDirectory + @"Audio\poohcough1.wav", + // Environment.CurrentDirectory + @"Audio\jontronooh.wav", + // Environment.CurrentDirectory + @"Audio\deep.wav" + //}; public async Task CreateBot() { @@ -91,8 +91,8 @@ namespace Kehyeedra3 EventHandlers.InstallEventHandlers(); InstallChatService(); - Clockboy.Elapsed += Clockboy_Elapsed; - Clockboy.Interval = SRandom.Next(3600000, 14400000); + //Clockboy.Elapsed += Clockboy_Elapsed; + //Clockboy.Interval = SRandom.Next(3600000, 14400000); //1200000 = 20 minutes RmService = new ReminderService(); @@ -106,38 +106,38 @@ namespace Kehyeedra3 ).Start(); } - private async void Clockboy_Elapsed(object sender, ElapsedEventArgs e) - { - foreach(var Guild in _bot.Guilds) - { - foreach(var VoiceChannel in Guild.VoiceChannels) - { - if (VoiceChannel.Users.Count > 1) - { - try - { - await AudioService.JoinAudio(Guild, VoiceChannel); - var file = rcsounds[_rnd.Next(rcsounds.Length - 1)]; - - Console.WriteLine("File exists? " + File.Exists(file)); - - Console.WriteLine("Playing file: " + file); - - await AudioService.SendAudioAsync(Guild, null, file); - } - catch (Exception ex) - { - Console.WriteLine(ex); - } - finally - { - await AudioService.LeaveAudio(Guild); - } - } - } - } - Clockboy.Start(); - } + //private async void Clockboy_Elapsed(object sender, ElapsedEventArgs e) + //{ + // foreach(var Guild in _bot.Guilds) + // { + // foreach(var VoiceChannel in Guild.VoiceChannels) + // { + // if (VoiceChannel.Users.Count > 1) + // { + // try + // { + // await AudioService.JoinAudio(Guild, VoiceChannel); + // var file = rcsounds[_rnd.Next(rcsounds.Length - 1)]; + + // Console.WriteLine("File exists? " + File.Exists(file)); + + // Console.WriteLine("Playing file: " + file); + + // await AudioService.SendAudioAsync(Guild, null, file); + // } + // catch (Exception ex) + // { + // Console.WriteLine(ex); + // } + // finally + // { + // await AudioService.LeaveAudio(Guild); + // } + // } + // } + // } + // Clockboy.Start(); + //} public async Task StartBot() { diff --git a/Kehyeedra3/Commands.cs b/Kehyeedra3/Commands.cs deleted file mode 100644 index 0b9be15..0000000 --- a/Kehyeedra3/Commands.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Threading.Tasks; -using Discord.Commands; -using Discord; -using System.IO; -using Kehyeedra3.Preconditions; -using System.Net; -using System.Linq; -using System.Data; -using Kehyeedra3.Services; -using Kehyeedra3.Services.Models; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Internal; -using Discord.Addons.Interactive; -using System.Threading.Channels; - -namespace Kehyeedra3 -{ - //public class Audio_module : ModuleBase //////////////////////// - //{ - // [Command("join", RunMode = RunMode.Async)] - // public async Task JoinCmd() - // { - // await Bot.AudioService.JoinAudio(Context.Guild, (Context.User as IVoiceState).VoiceChannel); - // } - // [Command("leave", RunMode = RunMode.Async)] - // public async Task LeaveCmd() - // { - // await Bot.AudioService.LeaveAudio(Context.Guild); - // } - // [Command("play", RunMode = RunMode.Async)] - // public async Task PlayCmd([Remainder] string song) - // { - // await Bot.AudioService.SendAudioAsync(Context.Guild, Context.Channel, song); - // } - //} - - //public class Event : ModuleBase ///////////////////////// - //{ - // [Command("coof"), Ratelimit(1, 1, Measure.Minutes)] - // public async Task Coof([Remainder] IGuildUser name) - // { - // var user = await Context.Guild.GetUserAsync(Context.User.Id).ConfigureAwait(false); ; - // if (user.RoleIds.Any(id => id == 672517021732438026)) - // { - // var role = Context.Guild.GetRole(672517021732438026); - // var hearole = Context.Guild.GetRole(672759930666876991); - // if (name.RoleIds.Any(id => id == 672755435454988294)) - // { - // await ReplyAsync($"{name.Username}'s hazmat suit is protecting them from the corona"); - // } - // else - // { - // await name.AddRoleAsync(role).ConfigureAwait(false); - // await name.RemoveRoleAsync(hearole).ConfigureAwait(false); - - // Console.WriteLine($"{Context.User.Username} has infected {name.Username}"); - - // await ReplyAsync($"{Context.User.Username} has infected {name.Username}"); - // await ReplyAsync($"Corona has been cured for now haha yeah"); - // } - // } - // } - // [Command("cure"), Ratelimit(3, 30, Measure.Minutes)] - // public async Task Cure([Remainder] IGuildUser name) - // { - // var user = await Context.Guild.GetUserAsync(Context.User.Id).ConfigureAwait(false); ; - // if ((user.RoleIds.Any(id => id == 672755435454988294)) || (user.RoleIds.Any(id => id == 672759930666876991))) - // { - // var role = Context.Guild.GetRole(672759930666876991); - // var infrole = Context.Guild.GetRole(672517021732438026); - // if (name.RoleIds.Any(id => id == 672785044699611139)) - // { - // await ReplyAsync($"{name.Username} absolutely refuses to be vaccinated"); - // } - // else - // { - // if (name.RoleIds.Any(id => id == 672517021732438026)) - // { - // await name.AddRoleAsync(role).ConfigureAwait(false); - // await name.RemoveRoleAsync(infrole).ConfigureAwait(false); - - // Console.WriteLine($"{Context.User.Username} has cured {name.Username}"); - - // await ReplyAsync($"{Context.User.Username} has vaccinated {name.Username}"); - // } - // else - // { - // await ReplyAsync($"{name.Username} is not infected??? are you super retarded???"); - // } - // } - // } - // } - //} - - //public class _ : ModuleBase - //{ - // [RequireRolePrecondition(AccessLevel.BotOwner)] - // [Command("embedtest")] - // public async Task Embedthing(bool inline, [Remainder]string text) - // { - // var BotUser = await Bot._bot.GetApplicationInfoAsync(); - // EmbedBuilder embed = new EmbedBuilder(); - // EmbedAuthorBuilder author = new EmbedAuthorBuilder(); - // EmbedFooterBuilder footer = new EmbedFooterBuilder(); - // //author stuff - // author.Name = BotUser.Name; - // author.IconUrl = BotUser.IconUrl; - // embed.Author = author; - // //footer stuff - // footer.Text = "Given at"; - // embed.Footer = footer; - // //embed stuff - // embed.Timestamp = DateTime.Now; - // embed.AddInlineField("test 1", "test 1"); - // embed.AddInlineField("test 2", "test 2"); - // embed.AddField(x => - // { - // x.IsInline = inline; - // x.Name = "Test Embed"; - // x.Value = text; - // }); - // await ReplyAsync("This is an embed test, I think I did it...", false, embed); - // } - //} -} diff --git a/Kehyeedra3/Commands/Admin.cs b/Kehyeedra3/Commands/Admin.cs index 5821723..ea6a930 100644 --- a/Kehyeedra3/Commands/Admin.cs +++ b/Kehyeedra3/Commands/Admin.cs @@ -6,6 +6,7 @@ using Kehyeedra3.Preconditions; using Kehyeedra3.Services.Models; using System; using System.Collections.Generic; +using System.Drawing; using System.IO; using System.Linq; using System.Net; @@ -379,13 +380,10 @@ namespace Kehyeedra3.Commands { string path = Path.Combine(Environment.CurrentDirectory, "btextures"); string avatar = ""; - string rod = ""; string tier = ""; ulong lvl = 0; ulong xp = 0; int total = 0; - int minc = 0; - int maxc = 0; Fishing fuser; User user; Dictionary inv = new Dictionary(); @@ -397,7 +395,6 @@ namespace Kehyeedra3.Commands } if (fuser == null || user == null) { - rod = "rod1.png"; tier = "tier1.png"; } else @@ -409,25 +406,21 @@ namespace Kehyeedra3.Commands { case 0: { - rod = "rod1.png"; tier = "tier1.png"; } break; case 1: { - rod = "rod2.png"; tier = "tier2.png"; } break; case 2: { - rod = "rod3.png"; tier = "tier3.png"; } break; case 3: { - rod = "rod4.png"; tier = "tier4.png"; } break; @@ -478,14 +471,6 @@ namespace Kehyeedra3.Commands card.Composite(frame, 5, 5, CompositeOperator.Over); } - //using (MagickImage frame = new MagickImage(Path.Combine(path, rod), new MagickReadSettings //rod - //{ - // BackgroundColor = MagickColors.None - //})) - //{ - // card.Composite(frame, 79, 79, CompositeOperator.Over); - //} - using (MagickImage frame = new MagickImage(Path.Combine(path, "frame.png"), new MagickReadSettings //frame { BackgroundColor = MagickColors.None @@ -511,10 +496,7 @@ namespace Kehyeedra3.Commands using (MagickImage stats = new MagickImage($"label:" + $"\nFishing Lv : {lvl}" + - $"\nXP : {xp}" + - $"\nMax catch : {maxc}" + - $"\nMin catch : {minc}" + - $"\nTotal Fish : {total}", new MagickReadSettings + $"\nXP : {xp}", new MagickReadSettings { BackgroundColor = MagickColors.None, FillColor = MagickColors.White, @@ -528,9 +510,38 @@ namespace Kehyeedra3.Commands outputStream.Position = 0; await Context.Channel.SendFileAsync(outputStream, "profile.png"); } + } - + [RequireRolePrecondition(AccessLevel.ServerAdmin)] + [Command("fc")] + public async Task MakeFishCard(string fishName = null) + { + List fishes = Fishing.GetFishList(); + + Fish fish; + if (string.IsNullOrEmpty(fishName)) + { + fish = fishes[SRandom.Next(fishes.Count)]; + } + else + { + fish = fishes.FirstOrDefault(f => f.Name.ToLowerInvariant() == fishName.ToLowerInvariant()); + + if (fish == null) + { + await Context.Channel.SendMessageAsync("No fish with that name retarb, chenk input and try again, or cry to mommy"); + return; + } + } + + var (cardCollection, outFormatEnum, outFormat) = await Helpers.MakeFishCardAsync(fish, 0, 0, 0, "", 0, 0, 0); + + MemoryStream outputStream = new MemoryStream(); + + cardCollection.Write(outputStream, outFormatEnum); + outputStream.Position = 0; + await Context.Channel.SendFileAsync(outputStream, $"card.{outFormat}"); } } } diff --git a/Kehyeedra3/Commands/Economy.cs b/Kehyeedra3/Commands/Economy.cs index 93c97bd..9ff40e3 100644 --- a/Kehyeedra3/Commands/Economy.cs +++ b/Kehyeedra3/Commands/Economy.cs @@ -12,6 +12,7 @@ using ImageMagick; using System.Threading.Channels; using System.Threading.Tasks; using Kehyeedra3.Preconditions; +using System.IO; namespace Kehyeedra3.Commands { @@ -98,7 +99,7 @@ namespace Kehyeedra3.Commands readonly string n = "<:no:677091514249248778>"; readonly string ye = "<:ya:677179974154715146>"; - [Command("mine"), Ratelimit(6, 2, Measure.Minutes), Summary("Mines %coins.")] + [Command("mine"), Ratelimit(10, 2, Measure.Minutes), Summary("Mines %coins.")] public async Task Mine() { ulong time = ulong.Parse(DateTime.Now.ToString("yyyyMMddHHmm")); @@ -106,73 +107,92 @@ namespace Kehyeedra3.Commands using (var Database = new ApplicationDbContextFactory().CreateDbContext()) { var user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id); - lastmine = user.LastMine; - user.LastMine = time; + var muser = Database.Mining.FirstOrDefault(x => x.Id == Context.User.Id); + if (muser == null) + { + muser = new Mining + { + Id = Context.User.Id + }; + Database.Mining.Add(muser); + } + lastmine = muser.LastMine; + muser.LastMine = time; user.Username = Context.User.Username; - await Database.SaveChangesAsync(); - } - if (lastmine < time) - { - int res1 = SRandom.Next(0, 101); - int res2 = SRandom.Next(0, 101); - int res3 = SRandom.Next(0, 101); - long end = 0; - string marks = $"{n}{n}{n}"; - int num = SRandom.Next(ores.Length); - int numd = SRandom.Next(discards.Length); - string ore = ores[num]; - string discard = discards[numd]; - if (res1 > 20) - { - end = 1; - marks = $"{o}{n}{n}"; - if (res2 > 50) + + if (lastmine < time) + { + int res = SRandom.Next((int)muser.Lvl, 101); + long end = 0; + string marks = $"{n}{n}{n}"; + int num = SRandom.Next(ores.Length); + int numd = SRandom.Next(discards.Length); + string bns = ""; + string lucky = ""; + string ore = ores[num]; + string discard = discards[numd]; + if (res >= 20) { + res += SRandom.Next(0, 101); end = 2; - marks = $"{o}{o}{n}"; - if (res3 > 80) + marks = $"{o}{n}{n}"; + if (res >= 100) { - marks = $"{o}{o}{o}"; - string bonus = ""; - int res4 = SRandom.Next(0, 6) * 2; - int res5 = res4 / 2; - end = (long)res4 + 3; - for (int i = 0; i < 5; i++) + res += SRandom.Next(0, 101); + end += 2; + marks = $"{o}{o}{n}"; + if (res >= 200) { - if (i < res5) + res = SRandom.Next(0, 6) * 4; + marks = $"{o}{o}{o}"; + string bonus = ""; + end += (long)res + 3; + for (int i = 0; i < 5; i++) { - bonus += $"{ye}"; + if (i < res / 2) + { + bonus += $"{ye}"; + } + else + { + bonus += $"{n}"; + } + } + bns = $" **+** {bonus}"; + if (res == 0) + { + lucky = $" **Lucky strike!** Bonus: {ore}"; } else { - bonus += $"{n}"; + lucky = $" **Lucky strike!** Bonus: {res},"; } } - if (res4 == 0) - { - await Context.Channel.SendMessageAsync($"{marks} **+** {bonus}\n{Context.User.Mention} **Lucky strike!** Bonus: {ore} You earned {end.ToYeedraDisplay()}%"); - } - else - { - await Context.Channel.SendMessageAsync($"{marks} **+** {bonus}\n{Context.User.Mention} **Lucky strike!** Bonus: {res4}, You earned {end.ToYeedraDisplay()}%"); - } } } - } - if (end <= 0) - { - await Context.Channel.SendMessageAsync($"{marks}\n{Context.User.Mention} You have found {ore} {discard}."); - return; - } - else if(end < 3) - { - await Context.Channel.SendMessageAsync($"{marks}\n{Context.User.Mention} You found {end.ToYeedraDisplay()}% while mining"); - } - using (var Database = new ApplicationDbContextFactory().CreateDbContext()) - { - var user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id); + string levelup = $"\nYou gain **{end+1}**xp.\n"; + + muser.TXp += (ulong)end+1; + if (muser.TXp >= muser.Xp) + { + muser.Lvl += 1; + ulong leXp = 50; + for (ulong i = 0; i < muser.Lvl; i++) + { + if (i <= muser.Lvl) + { + leXp += Convert.ToUInt64(Math.Round((leXp * 0.05d + 50d), 0, MidpointRounding.ToEven)); + } + } + muser.Xp = leXp; + levelup += $"You leveled up. You are now **Lvl {muser.Lvl}**"; + } + else + { + levelup += $"You need **{muser.Xp - muser.TXp}**xp more to reach Lvl **{muser.Lvl+1}**"; + } if (!user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), end)) { @@ -181,16 +201,25 @@ namespace Kehyeedra3.Commands } await Database.SaveChangesAsync(); + + if (end <= 0) + { + await Context.Channel.SendMessageAsync($"{marks}\n{Context.User.Mention} You have found {ore} {discard}.{levelup}"); + } + else + { + await Context.Channel.SendMessageAsync($"{marks}{bns}\n{Context.User.Mention}{lucky}\nYou earned **{end.ToYeedraDisplay()}**%{levelup}"); + } + + } + else + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention} wait 1 minute ok next minute yeah? yeah buddy?"); } - - } - else - { - await Context.Channel.SendMessageAsync($"{Context.User.Mention} wait 1 minute ok next minute yeah? yeah buddy?"); } } [Command("fish"), Ratelimit(6, 2, Measure.Minutes), Summary("Cast your line into the abyss, see if something bites?")] - public async Task FishCommand() + public async Task FishCommand(string nocard = "") { ulong time = ulong.Parse(DateTime.Now.ToString("yyyyMMddHHmm")); ulong totalXp = 0; @@ -513,7 +542,14 @@ namespace Kehyeedra3.Commands if (weight >= (1000 - Convert.ToInt32(level * 2))) //second weight roll { - weight = SRandom.Next(100, 2001) + Convert.ToInt32(level * 5 + (Convert.ToUInt64(prestige * 500))); + if (level < 100) + { + weight = SRandom.Next(300, 2001 + prestige * 500) + Convert.ToInt32(level * 5); + } + else + { + weight = SRandom.Next(300, 2001 + prestige * 500) + 500; + } } if (fish.Rarity == FishRarity.Legendary) @@ -547,9 +583,9 @@ namespace Kehyeedra3.Commands if (fish.Rarity == FishRarity.Legendary) { - if (xp < 100) + if (xp < 50+50*(ulong)fish.Tier) { - xp = 100; + xp = 50+50*(ulong)fish.Tier; } } } @@ -597,7 +633,23 @@ namespace Kehyeedra3.Commands toNextLvl = user.Xp - user.TXp; int times = 0; - + if (user.TXp > 50 && user.FXp == 0) + { + lvlXp = 50; + for (ulong i = 0; i < user.Lvl; i++) + { + + if (i <= user.Lvl) + { + lvlXp += Convert.ToUInt64(Math.Round((lvlXp * 0.05d + 50d), 0, MidpointRounding.ToEven)); + } + if (i == user.Lvl - 2) + { + user.FXp = lvlXp; + } + + } + } if (user.TXp >= user.Xp) { ulong leXp = 50; @@ -620,12 +672,19 @@ namespace Kehyeedra3.Commands user.Lvl += 1; times += 1; lvlXp = 50; + for (ulong i = 0; i < user.Lvl; i++) { + if (i <= user.Lvl) { lvlXp += Convert.ToUInt64(Math.Round((lvlXp * 0.05d + 50d), 0, MidpointRounding.ToEven)); } + if (i == user.Lvl - 2) + { + user.FXp = lvlXp; + } + } user.Xp = lvlXp; } @@ -633,54 +692,73 @@ namespace Kehyeedra3.Commands level = user.Lvl; if (leTrig) { - lvlUp = $"**Your level was recalculated to match your xp.** You are now **Level {level}**"; + lvlUp = $"**Your level was recalculated\n to match your xp.** \nYou are now **Level {level}**"; } else if (times > 1) { - lvlUp = $"**You leveled up {times} times!** You are now **Level {level}.**"; + lvlUp = $"**You leveled up {times} times!** \nYou are now **Level {level}.**"; } else { - lvlUp = $"**You leveled up!** You are now **Level {level}**"; + lvlUp = $"**You leveled up!** \nYou are now **Level {level}**"; } } else { - lvlUp = $"You need **{toNextLvl}**xp more to reach Level **{level + 1}**"; + lvlUp = $"You need **{toNextLvl}**xp to reach Level **{level + 1}**"; } await Database.SaveChangesAsync().ConfigureAwait(false); - } - string baited = ""; - string baiRa = ""; - string baiBi = ""; - string baiLe = ""; - if (bRar || bBig) - { - baited += "\nYou used bait. "; - if (bRar) + + string baited = ""; + string baiRa = ""; + string baiBi = ""; + string baiLe = ""; + if (bRar || bBig) + { + baited += "\nYou used bait. "; + if (bRar) + { + baiRa = "(+)"; + } + if (bBig) + { + baiBi = "(+)"; + } + } + if (bLet) { - baiRa = "(+)"; + baited += "\nYou ate lettuce. "; + baiLe = "(+10%)"; } - if (bBig) + + if (nocard.ToLowerInvariant() != "nocard") { - baiBi = "(+)"; + var (cardCollection, outFormatEnum, outFormat) = await Helpers.MakeFishCardAsync(fish, user.TXp, user.FXp, user.Xp, lvlUp, weight, xp, dcatch); + + MemoryStream outputStream = new MemoryStream(); + + cardCollection.Write(outputStream, outFormatEnum); + + outputStream.Position = 0; + + await Context.Channel.SendFileAsync(outputStream, $"fish.{outFormat}"); + + } + else + { + if (dcatch == 1) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}{baited}\n{fish.Emote} You have caught a {weight / 100d}kg{baiBi} **{fish.Name}**, rarity: {fish.Rarity}{baiRa}\nYou gain **{xp}**xp{baiLe}.\n{lvlUp}"); + } + else + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}{baited}\n{fish.Emote} You have caught **{dcatch}** {weight / 100d}kg{baiBi} **{fish.Name}**, rarity: {fish.Rarity}{baiRa}\nYou gain **{xp}**xp{baiLe}.\n{lvlUp}"); + } } - } - if (bLet) - { - baited += "\nYou ate lettuce. "; - baiLe = "(+10%)"; - } - if (dcatch == 1) - { - await Context.Channel.SendMessageAsync($"{Context.User.Mention}{baited}\n{fish.Emote} You have caught a {weight / 100d}kg{baiBi} **{fish.Name}**, rarity: {fish.Rarity}{baiRa}\nYou gain **{xp}**xp{baiLe}.\n{lvlUp}"); - } - else - { - await Context.Channel.SendMessageAsync($"{Context.User.Mention}{baited}\n{fish.Emote} You have caught **{dcatch}** {weight / 100d}kg{baiBi} **{fish.Name}**, rarity: {fish.Rarity}{baiRa}\nYou gain **{xp}**xp{baiLe}.\n{lvlUp}"); - } + } + } else { @@ -1498,6 +1576,7 @@ namespace Kehyeedra3.Commands { var user = database.Fishing.FirstOrDefault(x => x.Id == Context.User.Id); var muser = database.Users.FirstOrDefault(x => x.Id == Context.User.Id); + var minuser = database.Mining.FirstOrDefault(x => x.Id == Context.User.Id); string pres = ""; double cawe = 0; if (user.Prestige == 1) @@ -1515,12 +1594,13 @@ namespace Kehyeedra3.Commands cawe = user.Lvl * 5d + 10d; } await Context.Channel.SendMessageAsync($"{Context.User.Mention}'s stats\nFishing level: **{user.Lvl}{pres}**\nMax catch weight: **{(user.Lvl * 5 + 2000d + user.Prestige*500d) / 100}kg**\nMin catch weight: **{cawe /100}kg**\n" + - $"Fishing xp: **{user.TXp}**\nTotal fish: **{scount + mcount + lcount}** *(Large: {lcount} Medium: {mcount} Small: {scount})*\nBalance: **{muser.Money.ToYeedraDisplay()}%**"); + $"Fishing xp: **{user.TXp}**\nTotal fish: **{scount + mcount + lcount}** *(Large: {lcount} Medium: {mcount} Small: {scount})*\nMining level: **{minuser.Lvl}**\nMining xp: **{minuser.TXp}**\nBalance: **{muser.Money.ToYeedraDisplay()}%**"); } else { var user = database.Fishing.FirstOrDefault(x => x.Id == otherUser.Id); var muser = database.Users.FirstOrDefault(x => x.Id == otherUser.Id); + var minuser = database.Mining.FirstOrDefault(x => x.Id == otherUser.Id); string pres = ""; double cawe = 0; if (user.Prestige > 0) @@ -1533,7 +1613,7 @@ namespace Kehyeedra3.Commands cawe = user.Lvl * 5d + 10d; } await Context.Channel.SendMessageAsync($"{otherUser.Mention}'s stats\nFishing level: **{user.Lvl}{pres}**\nMax catch weight: **{(user.Lvl * 5 + 2000d + user.Prestige*500d) / 100}kg**\nMin catch weight: **{cawe / 100}kg**\n" + - $"Fishing xp: **{user.TXp}**\nTotal fish: **{scount + mcount + lcount}** *(Large: {lcount} Medium: {mcount} Small: {scount}*)\nBalance: **{muser.Money.ToYeedraDisplay()}%**"); + $"Fishing xp: **{user.TXp}**\nTotal fish: **{scount + mcount + lcount}** *(Large: {lcount} Medium: {mcount} Small: {scount}*)\nMining level: **{minuser.Lvl}**\nMining xp: **{minuser.TXp}**\nBalance: **{muser.Money.ToYeedraDisplay()}%**"); } } } diff --git a/Kehyeedra3/Commands/Help.cs b/Kehyeedra3/Commands/Help.cs index 6479627..eeceb3a 100644 --- a/Kehyeedra3/Commands/Help.cs +++ b/Kehyeedra3/Commands/Help.cs @@ -17,76 +17,6 @@ namespace Kehyeedra3.Commands { _service = service; } - /*[Command("commands"), Alias("coomands")] - public async Task HelpAsync() - { - string debug = null; - string prefix = Configuration.Load().Prefix; - var builder = new EmbedBuilder() - { - Color = new Color(114, 137, 218), - Description = "These are the commands you can use" - }; - - foreach (var module in _service.Modules) - { - string description = null; - debug += $"{module.Name}\n"; - foreach (var cmd in module.Commands) - { - var result = await cmd.CheckPreconditionsAsync(Context); - if (result.IsSuccess) - description += $"{prefix}{cmd.Aliases.First()}\n"; - debug += $"{prefix}{cmd.Aliases.First()}\n"; - } - - if (!string.IsNullOrWhiteSpace(description)) - { - builder.AddField(x => - { - x.Name = module.Name; - x.Value = description; - x.IsInline = false; - }); - } - } - - await ReplyAsync(debug); - } - - [Command("command"), Alias("coomand")] - public async Task HelpAsync(string command) - { - var result = _service.Search(Context, command); - - if (!result.IsSuccess) - { - await ReplyAsync($"Sorry, I couldn't find a command with the name **{command}**."); - return; - } - - string prefix = Configuration.Load().Prefix; - var builder = new EmbedBuilder() - { - Color = new Color(0, 255, 0), - Description = $"Here are some commands like **{command}**" - }; - - foreach (var match in result.Commands) - { - var cmd = match.Command; - - builder.AddField(x => - { - x.Name = string.Join(", ", cmd.Aliases); - x.Value = $"Parameters: {string.Join(", ", cmd.Parameters.Select(p => p.Name))}\n" + - $"Remarks: {cmd.Remarks}"; - x.IsInline = false; - }); - } - - await ReplyAsync("", false, builder.Build()); - }*/ [Command("help"), Summary("Shows this thing")] public async Task HelpCommand([Remainder] string command = null) @@ -94,7 +24,6 @@ namespace Kehyeedra3.Commands if(command == null) { EmbedBuilder embed = new EmbedBuilder(); - embed.AddField("AIMLbot", "Mention me to talk with me (don't expect intelligence)"); foreach (var module in Bot._cmds.Modules) { StringBuilder coommands = new StringBuilder(""); diff --git a/Kehyeedra3/Commands/Interactive.cs b/Kehyeedra3/Commands/Interactive.cs index 43104c3..c172764 100644 --- a/Kehyeedra3/Commands/Interactive.cs +++ b/Kehyeedra3/Commands/Interactive.cs @@ -850,7 +850,7 @@ namespace Kehyeedra3.Commands value *= amount; await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou're about to sell **{amount} {fish.Name}** for **{((long)value).ToYeedraDisplay()}**.\nType 'ok' to confirm."); - inp = await NextMessageAsync(); + inp = await NextMessageAsync(timeout: TimeSpan.FromMinutes(2)); if (inp.Content.ToLowerInvariant() == "ok") { @@ -882,162 +882,187 @@ namespace Kehyeedra3.Commands } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //else if (input == "bulksell") - //{ - // int value = 0; - // int count = 0; - - // FishSize size; - // if (fuser.Inventory.Length < 3) - // { - // await Context.Channel.SendMessageAsync($"Your inventory is empty. Try fishing more."); - // return; - // } - - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the tier.\n"); - // var inp = await NextMessageAsync(); - // int tier = int.Parse(inp.Content); - - // if (tier > 0 && tier < 5) - // { - // switch (tier) - // { - // case 1: - // { - // fishTiers = fishes.Where(f => (int)f.Tier == (int)FishTier.T1).ToList(); - // } - // break; - // case 2: - // { - // fishTiers = fishes.Where(f => (int)f.Tier == (int)FishTier.T2).ToList(); - // } - // break; - // case 3: - // { - // fishTiers = fishes.Where(f => (int)f.Tier == (int)FishTier.T3).ToList(); - // } - // break; - // case 4: - // { - // fishTiers = fishes.Where(f => (int)f.Tier == (int)FishTier.T4).ToList(); - // } - // break; - // } - // rarfish = fishTiers.Where(f => (int)f.Rarity == (int)FishRarity.Rare).ToList(); - // uncfish = fishTiers.Where(f => (int)f.Rarity == (int)FishRarity.Uncommon).ToList(); - // comfish = fishTiers.Where(f => (int)f.Rarity == (int)FishRarity.Common).ToList(); - // } - // else if (tier < 1 || tier > 4) - // { - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nTier not available."); - // return; - // } - // foreach (var f in fishinv) - // { - // int[] amounts; - // if (!fishinv.TryGetValue(f.Key, out amounts)) - // { - // amounts = new int[] { 0, 0, 0 }; - // fishinv.Add(f.Key, amounts); - // } - - - // fish = fishes.FirstOrDefault(i => i.Id == f.Key); - // if (fish.Rarity != FishRarity.Legendary) - // { - // count += f.Value[0] + f.Value[1] + f.Value[2]; - - // switch (fish.Rarity) //small - // { - // case FishRarity.Common: - // { - // value += (int)fish.Tier * 1 * 1; - // } - // break; - // case FishRarity.Uncommon: - // { - // value += (int)fish.Tier * 1 * 3; - // } - // break; - // case FishRarity.Rare: - // { - // value += (int)fish.Tier * 1 * 6; - // } - // break; - // } - // //// - // switch (fish.Rarity) //med - // { - // case FishRarity.Common: - // { - // value += (int)fish.Tier * 2 * 1; - // } - // break; - // case FishRarity.Uncommon: - // { - // value += (int)fish.Tier * 2 * 3; - // } - // break; - // case FishRarity.Rare: - // { - // value += (int)fish.Tier * 2 * 6; - // } - // break; - // } - // //// - // switch (fish.Rarity) //large - // { - // case FishRarity.Common: - // { - // value += (int)fish.Tier * 3 * 1; - // } - // break; - // case FishRarity.Uncommon: - // { - // value += (int)fish.Tier * 3 * 3; - // } - // break; - // case FishRarity.Rare: - // { - // value += (int)fish.Tier * 3 * 6; - // } - // break; - // } - - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou're about to sell **{count} Fish** for **{((long)value).ToYeedraDisplay()}**.\nType 'ok' to confirm."); - // inp = await NextMessageAsync(); - // if (inp.Content.ToLowerInvariant() == "ok") - // { - - // fuser.SetInventory(fishinv); - - // if (!user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), value)) - // { - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBank has no money, buy more bait."); - // return; - // } - // await Database.SaveChangesAsync(); - - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nThanks, seaman, enjoy your moolah."); - - // } - // else - // { - // await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nI guess I'm starving tonight. :["); - // } - // } - - - // } - - - //} + else if (input == "bulksell") + { + int value = 0; + int count = 0; + + FishTier ftier = FishTier.T1; + if (fuser.Inventory.Length < 3) + { + await Context.Channel.SendMessageAsync($"Your inventory is empty. Try fishing more."); + return; + } + + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the tier.\n"); + var inp = await NextMessageAsync(timeout: TimeSpan.FromMinutes(2)); + int tier = int.Parse(inp.Content); + + if (tier > 0 && tier < 5) + { + switch (tier) + { + case 1: + { + ftier = FishTier.T1; + } + break; + case 2: + { + ftier = FishTier.T2; + } + break; + case 3: + { + ftier = FishTier.T3; + } + break; + case 4: + { + ftier = FishTier.T4; + } + break; + } + } + else if (tier < 1 || tier > 4) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nTier not available."); + return; + } + foreach (var f in fishinv) + { + int[] amounts; + if (!fishinv.TryGetValue(f.Key, out amounts)) + { + amounts = new int[] { 0, 0, 0 }; + fishinv.Add(f.Key, amounts); + } + + if (f.Value[0] < 0) + { + f.Value[0] = 0; + } + + if (f.Value[1] < 0) + { + f.Value[1] = 0; + } + + if (f.Value[2] < 0) + { + f.Value[2] = 0; + } + + fish = fishes.FirstOrDefault(i => i.Id == f.Key); + + if (fish.Tier == ftier && fish.Rarity != FishRarity.Unreasonable && fish.Rarity != FishRarity.Legendary) + { + + if (f.Value[0] > 0) + { + switch (fish.Rarity) + { + case FishRarity.Common: + { + value += (int)fish.Tier * 1 * 1 * f.Value[0]; + } + break; + case FishRarity.Uncommon: + { + value += (int)fish.Tier * 1 * 3 * f.Value[0]; + } + break; + case FishRarity.Rare: + { + value += (int)fish.Tier * 1 * 6 * f.Value[0]; + } + break; + } + count += f.Value[0]; + f.Value[0] = 0; + } + if (f.Value[1] > 0) + { + switch (fish.Rarity) + { + case FishRarity.Common: + { + value += (int)fish.Tier * 2 * 1 * f.Value[1]; + } + break; + case FishRarity.Uncommon: + { + value += (int)fish.Tier * 2 * 3 * f.Value[1]; + } + break; + case FishRarity.Rare: + { + value += (int)fish.Tier * 2 * 6 * f.Value[1]; + } + break; + } + count += f.Value[1]; + f.Value[1] = 0; + } + if (f.Value[2] > 0) + { + switch (fish.Rarity) + { + case FishRarity.Common: + { + value += (int)fish.Tier * 3 * 1 * f.Value[2]; + } + break; + case FishRarity.Uncommon: + { + value += (int)fish.Tier * 3 * 3 * f.Value[2]; + } + break; + case FishRarity.Rare: + { + value += (int)fish.Tier * 3 * 6 * f.Value[2]; + } + break; + } + count += f.Value[2]; + f.Value[2] = 0; + } + } + } + if (count < 1) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have nothing to sell in this tier. Try ;finv."); + return; + } + + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou're about to sell **{count} Fish** for **{((long)value).ToYeedraDisplay()}%**.\nType 'ok' to confirm."); + inp = await NextMessageAsync(timeout: TimeSpan.FromMinutes(2)); + if (inp.Content.ToLowerInvariant() == "ok") + { + + fuser.SetInventory(fishinv); + + if (!user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), value)) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBank has no money, buy more bait."); + return; + } + await Database.SaveChangesAsync(); + + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nThanks, seaman, enjoy your moolah."); + + } + else + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nI guess I'm starving tonight. :["); + } + + + } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } } - - } } diff --git a/Kehyeedra3/Commands/Stuff.cs b/Kehyeedra3/Commands/Stuff.cs index c92c069..4833ac5 100644 --- a/Kehyeedra3/Commands/Stuff.cs +++ b/Kehyeedra3/Commands/Stuff.cs @@ -38,34 +38,89 @@ namespace Kehyeedra3.Commands [Command("ratenuts"), Summary("Rates your or another person's sack.")] public async Task RateTrap( string name = null) { + int nutRating = SRandom.Next(0, 301); + string nuts = "nuts"; + if (name == null) { - Random rando = new Random(); - Random rando1 = new Random(); - int trapRating0 = rando.Next(0, 201); - if (trapRating0 > 100 || trapRating0 < 120) + if (Context.User.Id == 534859726090010672) + { + nutRating -= 60; + } + if (Context.User.Id == 318478574325596163) + { + nutRating = SRandom.Next(1000000, 10000000); + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWarning: King, your african scale boss nuts have reached critical mass at {nutRating}g."); + return; + } + if (Context.User.Id == 242040333309837327 || Context.User.Id == 194538583649026049) + { + nutRating += 10000; + } + + if (nutRating > 160 && nutRating < 200) + { + nutRating += SRandom.Next(nutRating, 10001); + nuts = "boss nuts"; + if (nutRating > 10000) + { + nutRating = SRandom.Next(nutRating, nutRating + 100101); + nuts = "king size boss nuts"; + } + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats king, your {nuts} weigh {nutRating}g."); + return; + } + + if (nutRating < 10) { - int trapRating1 = rando1.Next(0, 10001); - await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats king, your boss nuts weigh {trapRating1}g."); + nutRating = SRandom.Next(100, 2001); + nuts = "tiny lady nuts"; + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nHope you get better soon, your {nuts} weigh 0.{nutRating}g."); } else { - await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYour nuts weigh {trapRating0}g."); + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYour {nuts} weigh {nutRating}g."); } } else { - Random rando = new Random(); - Random rando1 = new Random(); - int trapRating0 = rando.Next(0, 101); - if (trapRating0 == 100) + if (name.Contains("534859726090010672")) + { + nutRating -= 60; + } + if (name.Contains("318478574325596163")) { - int trapRating1 = rando1.Next(100, 10001); - await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats {name}, your boss nuts weigh {trapRating1}g."); + nutRating = SRandom.Next(1000000, 10000000); + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWarning: {name}'s african scale boss nuts have reached critical mass at {nutRating}g."); + return; + } + if (name.Contains("242040333309837327") || name.Contains("194538583649026049")) + { + nutRating += 10000; + } + if (nutRating > 180 && nutRating < 200) + { + nuts = "boss nuts"; + nutRating += SRandom.Next(nutRating, 10001); + if (nutRating > 10000) + { + nutRating = SRandom.Next(nutRating, nutRating + 100101); + nuts = "king size boss nuts"; + } + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nCongrats {name}, your {nuts} weigh {nutRating}g."); + return; + } + + + if (nutRating < 10) + { + nutRating = SRandom.Next(100, 2001); + nuts = "tiny lady nuts"; + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSorry to hear about {name}, those {nuts} weigh 0.{nutRating}g."); } else { - await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{name}'s nuts weigh {trapRating0}g."); + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{name}'s {nuts} weigh {nutRating}g."); } } @@ -322,6 +377,27 @@ namespace Kehyeedra3.Commands } } } + [Command("changenick")] + public async Task ChangeNickname(IGuildUser usr = null, [Remainder]string name = null) + { + if (Context.Guild.Id != 691361760300761139) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWrong server retard"); + return; + } + if (usr == null || usr == Context.User || name == null) + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYeah you gotta ping someone and write a name, retard"); + return; + } + else + { + await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nLet's fucking goooo"); + await usr.ModifyAsync(x => x.Nickname = $"{name}"); + } + } + } + } diff --git a/Kehyeedra3/Extensions.cs b/Kehyeedra3/Extensions.cs index 7dafcdd..e8ed187 100644 --- a/Kehyeedra3/Extensions.cs +++ b/Kehyeedra3/Extensions.cs @@ -4,6 +4,9 @@ using System.Runtime.CompilerServices; using System.Security.Cryptography; using System.IO; using System.Linq; +using ImageMagick; +using System.Threading.Tasks; +using System.Drawing; namespace Kehyeedra3 { @@ -23,7 +26,14 @@ namespace Kehyeedra3 return numb.ToString("N4"); } + public static double Remap(this int value, double min1, double max1, double min2, double max2) + => ((double)value).Remap(min1, max1, min2, max2); + public static double Remap(this ulong value, double min1, double max1, double min2, double max2) + => ((double)value).Remap(min1, max1, min2, max2); + + public static double Remap(this double value, double min1, double max1, double min2, double max2) + => min2 + (max2 - min2) * ((value - min1) / (max1 - min1)); //https://stackoverflow.com/a/1262619 public static void Shuffle(this IList list) @@ -44,5 +54,97 @@ namespace Kehyeedra3 } } } + + public static async Task GifPngMergeAsync(MagickImage pngFile, string gifFile, Rectangle rect, PixelInterpolateMethod interpolateMethod = PixelInterpolateMethod.Bilinear, bool trimEmpty = false) + => await GifPngMergeAsync(pngFile, new FileStream(gifFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), rect, interpolateMethod, trimEmpty); + + public static async Task GifPngMergeAsync(Stream pngFile, string gifFile, Rectangle rect, PixelInterpolateMethod interpolateMethod = PixelInterpolateMethod.Bilinear, bool trimEmpty = false) + => await GifPngMergeAsync(new MagickImage(pngFile), new FileStream(gifFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), rect, interpolateMethod, trimEmpty); + + public static async Task GifPngMergeAsync(string pngFile, Stream gifFile, Rectangle rect, PixelInterpolateMethod interpolateMethod = PixelInterpolateMethod.Bilinear, bool trimEmpty = false) + => await GifPngMergeAsync(new MagickImage(pngFile), gifFile, rect, interpolateMethod, trimEmpty); + + public static async Task GifPngMergeAsync(string pngFile, string gifFile, Rectangle rect, PixelInterpolateMethod interpolateMethod = PixelInterpolateMethod.Bilinear, bool trimEmpty = false) + => await GifPngMergeAsync(new MagickImage(pngFile), new FileStream(gifFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), rect, interpolateMethod, trimEmpty); + + public static async Task GifPngMergeAsync(MagickImage pngFile, Stream gifFile, Rectangle rect, PixelInterpolateMethod interpolateMethod = PixelInterpolateMethod.Bilinear, bool trimEmpty = false) + { + try + { + MagickImageCollection pngCollection = new MagickImageCollection(); + + using MagickImageCollection gifCollection = new MagickImageCollection(gifFile); + + int[] delay = new int[gifCollection.Count]; + + int indx = 0; + foreach (var frame in gifCollection) + { + MagickImage pngTemplate = new MagickImage(pngFile); + using MagickImage gifFrame = new MagickImage(frame); + + gifFrame.Alpha(AlphaOption.Set); + + if (trimEmpty) + { + gifFrame.BackgroundColor = MagickColors.None; + gifFrame.ColorFuzz = new Percentage(1); + gifFrame.Trim(); + gifFrame.RePage(); + } + + var size = GetSize(gifFrame, rect); + gifFrame.InterpolativeResize(size.Width, size.Height, interpolateMethod); + + size.X = (rect.Width + rect.X) / 2 - (gifFrame.Width / 2); + size.Y = (rect.Height + rect.Y) / 2 - (gifFrame.Height / 2); + + pngTemplate.Composite(gifFrame, size.X, size.Y, CompositeOperator.Over); + + pngCollection.Add(pngTemplate); + delay[indx] = gifFrame.AnimationDelay; + + indx++; + } + + pngCollection[0].AnimationDelay = 0; + for (int index = 1; index < pngCollection.Count - 1; index++) + { + pngCollection[index].AnimationDelay = delay[index]; + } + + if (pngCollection.Count > 1) + { + QuantizeSettings settings = new QuantizeSettings() + { + Colors = 2048 + }; + pngCollection.Quantize(settings); + } + + return pngCollection; + } + catch (Exception ex) + { + Console.WriteLine($"Error processing; Exception = {ex}"); + } + + return null; + } + + static Rectangle GetSize(MagickImage img, Rectangle rect) + { + Rectangle output = new Rectangle(rect.X, rect.Y, 0, 0); + + double aspectRatio = (double)img.Width / img.Height; + + double otherAspect = (double)img.Height / img.Width; + + output.Width = (int)Math.Min(Math.Round(rect.Width - rect.X * aspectRatio), rect.Width - rect.X); + + output.Height = (int)(output.Width * otherAspect); + + return output; + } } } \ No newline at end of file diff --git a/Kehyeedra3/Helpers.cs b/Kehyeedra3/Helpers.cs new file mode 100644 index 0000000..31955a1 --- /dev/null +++ b/Kehyeedra3/Helpers.cs @@ -0,0 +1,156 @@ +using ImageMagick; +using Kehyeedra3.Services.Models; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Kehyeedra3 +{ + public static class Helpers + { + public static async Task<(MagickImageCollection cardCollection, MagickFormat outFormatEnum, string outFormat)> MakeFishCardAsync(Fish fish, ulong currentXp, ulong floorXp, ulong nextLevelXp, string levelUp, int weight, ulong xp, int dcatch) + { + string path = Path.Combine(Environment.CurrentDirectory, "btextures"); + string fpath = Path.Combine(path, "fish"); + string[] vowels = new string[] { "a", "e", "i", "o", "u" }; + string label = $"You caught a{(vowels.Contains((fish.Name[0].ToString()).ToLower()) ? "n" : "")} {fish.Name}.\n{weight / 100d}kg {fish.Rarity} fish.\n\nYou gain {xp}xp.\n{levelUp.Replace("*", "")}."; + if (dcatch != 1) + { + label = $"You caught {dcatch} {fish.Name}.\n{weight / 100d}kg {fish.Rarity} fish.\n\nYou gain {xp}xp.\n{levelUp.Replace("*", "")}."; + } + if (levelUp.Contains("reach")) + { + label = label.Replace("\nYou gain", "\n\nYou gain"); + } + + string tier = ""; + switch (fish.Tier) + { + case FishTier.T1: + { + tier = "tier1"; + } + break; + case FishTier.T2: + { + tier = "tier2"; + } + break; + case FishTier.T3: + { + tier = "tier3"; + } + break; + case FishTier.T4: + { + tier = "tier4"; + } + break; + } + if (fish.Rarity == FishRarity.Unreasonable) + { + tier = "tieru"; + } + + try + { + MagickImage tempCard = new MagickImage(Path.Combine(path, "background.png")); + + DrawableFont font = new DrawableFont(Path.Combine(path, "COMIC.TTF")); + + using (MagickImage frame = new MagickImage(Path.Combine(path, "scover.png"), new MagickReadSettings //cover + { + BackgroundColor = MagickColors.None + })) + { + tempCard.Composite(frame, CompositeOperator.Over); + } + + //draw to tempcard + { + using (MagickImage frame = new MagickImage(Path.Combine(path, "frame.png"), new MagickReadSettings //frame + { + BackgroundColor = MagickColors.None + })) + { + tempCard.Composite(frame, CompositeOperator.Over); + } + + using (MagickImage stats = new MagickImage($"label:" + label, new MagickReadSettings + { + BackgroundColor = MagickColors.None, + FillColor = MagickColors.White, + FontPointsize = 14, + Font = font.Family, + TextAntiAlias = false, + StrokeAntiAlias = false + })) + { + tempCard.Composite(stats, 139, 5, CompositeOperator.Over); + } + + //draw progressbar + if (currentXp != 0) + { + using (MagickImage xpBar = new MagickImage(Path.Combine(path, "xpbar.png"), new MagickReadSettings //xpbar + { + BackgroundColor = MagickColors.None + })) + { + using (var mask = new MagickImage("xc:none", xpBar.Width, xpBar.Height)) + { + var h = (int)currentXp.Remap(floorXp, nextLevelXp, 5, 128); + + mask.Draw(new DrawableFillColor(MagickColors.White), new DrawableRectangle(0, 128, xpBar.Width, 128 - h)); + + xpBar.Composite(mask, CompositeOperator.CopyAlpha); + } + + tempCard.Composite(xpBar, 405, 5, CompositeOperator.Over); + } + } + } + + MagickImageCollection cardCollection = await Extensions.GifPngMergeAsync( + tempCard, + Path.Combine(fpath, fish.Texture), + new Rectangle(10, 10, 128, 128), + PixelInterpolateMethod.Nearest, + true + ); + + tempCard.Dispose(); + + foreach(var card in cardCollection) + { + using (MagickImage frame = new MagickImage(Path.Combine(path, $"{tier}.png"), new MagickReadSettings //tier glow + { + BackgroundColor = MagickColors.None + })) + { + card.Composite(frame, 5, 5, CompositeOperator.Over); + } + } + + MagickFormat outFormat = MagickFormat.Png; + + if (cardCollection.Count > 1) + { + outFormat = MagickFormat.Gif; + } + + return (cardCollection, outFormat, outFormat.ToString().ToLowerInvariant()); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + + return (null, MagickFormat.Png, MagickFormat.Png.ToString().ToLowerInvariant()); + } + } +} diff --git a/Kehyeedra3/Kehyeedra3.csproj b/Kehyeedra3/Kehyeedra3.csproj index b9899bb..9a68c46 100644 --- a/Kehyeedra3/Kehyeedra3.csproj +++ b/Kehyeedra3/Kehyeedra3.csproj @@ -9,9 +9,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Kehyeedra3/Migrations/20210410172129_MiningUpdate.Designer.cs b/Kehyeedra3/Migrations/20210410172129_MiningUpdate.Designer.cs new file mode 100644 index 0000000..aa36b03 --- /dev/null +++ b/Kehyeedra3/Migrations/20210410172129_MiningUpdate.Designer.cs @@ -0,0 +1,253 @@ +// +using System; +using Kehyeedra3; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Kehyeedra3.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20210410172129_MiningUpdate")] + partial class MiningUpdate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.11") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Fishing", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Inventory") + .HasColumnType("LONGTEXT"); + + b.Property("LastFish") + .HasColumnType("bigint unsigned"); + + b.Property("Lvl") + .HasColumnType("bigint unsigned"); + + b.Property("Prestige") + .HasColumnType("int"); + + b.Property("RodOwned") + .HasColumnType("tinyint unsigned"); + + b.Property("RodUsed") + .HasColumnType("tinyint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Fishing"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.Property("OfferId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("BuyerId") + .HasColumnType("bigint unsigned"); + + b.Property("IsPurchaseFromStore") + .HasColumnType("tinyint(1)"); + + b.Property("IsSellOffer") + .HasColumnType("tinyint(1)"); + + b.Property("ItemId") + .HasColumnType("bigint unsigned"); + + b.Property("OfferAmount") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.Property("StoreId") + .HasColumnType("bigint unsigned"); + + b.HasKey("OfferId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("ItemOffer"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Mining", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Level") + .HasColumnType("bigint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Mining"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Created") + .HasColumnType("bigint unsigned"); + + b.Property("Message") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Send") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreFront", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("StoreItemType") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("StoreFronts"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.Property("InvId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("Item") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Price") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.HasKey("InvId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("StoreInventory"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Avatar") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("CurrentBattlefish") + .HasColumnType("TINYINT"); + + b.Property("GeneralInventory") + .HasColumnType("LONGTEXT"); + + b.Property("LastMine") + .HasColumnType("bigint unsigned"); + + b.Property("Money") + .HasColumnType("bigint"); + + b.Property("Username") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User+BattleFishObject", b => + { + b.Property("FishId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("FishType") + .HasColumnType("TINYINT"); + + b.Property("Lvl") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("NextXp") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("FishId"); + + b.ToTable("Battlefish"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Offers") + .HasForeignKey("StoreFrontId"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Items") + .HasForeignKey("StoreFrontId"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Kehyeedra3/Migrations/20210410172129_MiningUpdate.cs b/Kehyeedra3/Migrations/20210410172129_MiningUpdate.cs new file mode 100644 index 0000000..1c4642d --- /dev/null +++ b/Kehyeedra3/Migrations/20210410172129_MiningUpdate.cs @@ -0,0 +1,64 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Kehyeedra3.Migrations +{ + public partial class MiningUpdate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "CurrentBattlefish", + table: "Users", + type: "TINYINT", + nullable: false, + oldClrType: typeof(int), + oldType: "int"); + + migrationBuilder.AlterColumn( + name: "FishType", + table: "Battlefish", + type: "TINYINT", + nullable: false, + oldClrType: typeof(int), + oldType: "int"); + + migrationBuilder.CreateTable( + name: "Mining", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Xp = table.Column(nullable: false), + TXp = table.Column(nullable: false), + Lvl = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Mining", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Mining"); + + migrationBuilder.AlterColumn( + name: "CurrentBattlefish", + table: "Users", + type: "int", + nullable: false, + oldClrType: typeof(sbyte), + oldType: "TINYINT"); + + migrationBuilder.AlterColumn( + name: "FishType", + table: "Battlefish", + type: "int", + nullable: false, + oldClrType: typeof(sbyte), + oldType: "TINYINT"); + } + } +} diff --git a/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.Designer.cs b/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.Designer.cs new file mode 100644 index 0000000..0e4f4e1 --- /dev/null +++ b/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.Designer.cs @@ -0,0 +1,253 @@ +// +using System; +using Kehyeedra3; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Kehyeedra3.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20210410173200_MiningUpdateYeah")] + partial class MiningUpdateYeah + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.11") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Fishing", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Inventory") + .HasColumnType("LONGTEXT"); + + b.Property("LastFish") + .HasColumnType("bigint unsigned"); + + b.Property("Lvl") + .HasColumnType("bigint unsigned"); + + b.Property("Prestige") + .HasColumnType("int"); + + b.Property("RodOwned") + .HasColumnType("tinyint unsigned"); + + b.Property("RodUsed") + .HasColumnType("tinyint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Fishing"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.Property("OfferId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("BuyerId") + .HasColumnType("bigint unsigned"); + + b.Property("IsPurchaseFromStore") + .HasColumnType("tinyint(1)"); + + b.Property("IsSellOffer") + .HasColumnType("tinyint(1)"); + + b.Property("ItemId") + .HasColumnType("bigint unsigned"); + + b.Property("OfferAmount") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.Property("StoreId") + .HasColumnType("bigint unsigned"); + + b.HasKey("OfferId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("ItemOffer"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Mining", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("LastMine") + .HasColumnType("bigint unsigned"); + + b.Property("Level") + .HasColumnType("bigint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Mining"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Created") + .HasColumnType("bigint unsigned"); + + b.Property("Message") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Send") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreFront", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("StoreItemType") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("StoreFronts"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.Property("InvId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("Item") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Price") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.HasKey("InvId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("StoreInventory"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Avatar") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("CurrentBattlefish") + .HasColumnType("TINYINT"); + + b.Property("GeneralInventory") + .HasColumnType("LONGTEXT"); + + b.Property("Money") + .HasColumnType("bigint"); + + b.Property("Username") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User+BattleFishObject", b => + { + b.Property("FishId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("FishType") + .HasColumnType("TINYINT"); + + b.Property("Lvl") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("NextXp") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("FishId"); + + b.ToTable("Battlefish"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Offers") + .HasForeignKey("StoreFrontId"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Items") + .HasForeignKey("StoreFrontId"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.cs b/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.cs new file mode 100644 index 0000000..154a3dd --- /dev/null +++ b/Kehyeedra3/Migrations/20210410173200_MiningUpdateYeah.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Kehyeedra3.Migrations +{ + public partial class MiningUpdateYeah : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LastMine", + table: "Users"); + + migrationBuilder.AddColumn( + name: "LastMine", + table: "Mining", + nullable: false, + defaultValue: 0ul); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LastMine", + table: "Mining"); + + migrationBuilder.AddColumn( + name: "LastMine", + table: "Users", + type: "bigint unsigned", + nullable: false, + defaultValue: 0ul); + } + } +} diff --git a/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.Designer.cs b/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.Designer.cs new file mode 100644 index 0000000..1c1f89f --- /dev/null +++ b/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.Designer.cs @@ -0,0 +1,256 @@ +// +using System; +using Kehyeedra3; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Kehyeedra3.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20210411195647_FishingUpdateYeah")] + partial class FishingUpdateYeah + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.11") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Fishing", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("FXp") + .HasColumnType("bigint unsigned"); + + b.Property("Inventory") + .HasColumnType("LONGTEXT"); + + b.Property("LastFish") + .HasColumnType("bigint unsigned"); + + b.Property("Lvl") + .HasColumnType("bigint unsigned"); + + b.Property("Prestige") + .HasColumnType("int"); + + b.Property("RodOwned") + .HasColumnType("tinyint unsigned"); + + b.Property("RodUsed") + .HasColumnType("tinyint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Fishing"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.Property("OfferId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("BuyerId") + .HasColumnType("bigint unsigned"); + + b.Property("IsPurchaseFromStore") + .HasColumnType("tinyint(1)"); + + b.Property("IsSellOffer") + .HasColumnType("tinyint(1)"); + + b.Property("ItemId") + .HasColumnType("bigint unsigned"); + + b.Property("OfferAmount") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.Property("StoreId") + .HasColumnType("bigint unsigned"); + + b.HasKey("OfferId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("ItemOffer"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Mining", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("LastMine") + .HasColumnType("bigint unsigned"); + + b.Property("Lvl") + .HasColumnType("bigint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Mining"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Created") + .HasColumnType("bigint unsigned"); + + b.Property("Message") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Send") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreFront", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("StoreItemType") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("StoreFronts"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.Property("InvId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Amount") + .HasColumnType("int"); + + b.Property("Item") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Price") + .HasColumnType("int"); + + b.Property("StoreFrontId") + .HasColumnType("bigint unsigned"); + + b.HasKey("InvId"); + + b.HasIndex("StoreFrontId"); + + b.ToTable("StoreInventory"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("Avatar") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("CurrentBattlefish") + .HasColumnType("TINYINT"); + + b.Property("GeneralInventory") + .HasColumnType("LONGTEXT"); + + b.Property("Money") + .HasColumnType("bigint"); + + b.Property("Username") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.User+BattleFishObject", b => + { + b.Property("FishId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("FishType") + .HasColumnType("TINYINT"); + + b.Property("Lvl") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("NextXp") + .HasColumnType("bigint unsigned"); + + b.Property("UserId") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("FishId"); + + b.ToTable("Battlefish"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.ItemOffer", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Offers") + .HasForeignKey("StoreFrontId"); + }); + + modelBuilder.Entity("Kehyeedra3.Services.Models.StoreInventory", b => + { + b.HasOne("Kehyeedra3.Services.Models.StoreFront", null) + .WithMany("Items") + .HasForeignKey("StoreFrontId"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.cs b/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.cs new file mode 100644 index 0000000..323b5d3 --- /dev/null +++ b/Kehyeedra3/Migrations/20210411195647_FishingUpdateYeah.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Kehyeedra3.Migrations +{ + public partial class FishingUpdateYeah : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Level", + table: "Mining"); + + migrationBuilder.AddColumn( + name: "Lvl", + table: "Mining", + nullable: false, + defaultValue: 0ul); + + migrationBuilder.AddColumn( + name: "FXp", + table: "Fishing", + nullable: false, + defaultValue: 0ul); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Lvl", + table: "Mining"); + + migrationBuilder.DropColumn( + name: "FXp", + table: "Fishing"); + + migrationBuilder.AddColumn( + name: "Level", + table: "Mining", + type: "bigint unsigned", + nullable: false, + defaultValue: 0ul); + } + } +} diff --git a/Kehyeedra3/Migrations/ApplicationDbContextModelSnapshot.cs b/Kehyeedra3/Migrations/ApplicationDbContextModelSnapshot.cs index 34d209c..c529103 100644 --- a/Kehyeedra3/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Kehyeedra3/Migrations/ApplicationDbContextModelSnapshot.cs @@ -14,7 +14,7 @@ namespace Kehyeedra3.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.2") + .HasAnnotation("ProductVersion", "3.1.11") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Kehyeedra3.Services.Models.Fishing", b => @@ -23,6 +23,9 @@ namespace Kehyeedra3.Migrations .ValueGeneratedOnAdd() .HasColumnType("bigint unsigned"); + b.Property("FXp") + .HasColumnType("bigint unsigned"); + b.Property("Inventory") .HasColumnType("LONGTEXT"); @@ -89,6 +92,29 @@ namespace Kehyeedra3.Migrations b.ToTable("ItemOffer"); }); + modelBuilder.Entity("Kehyeedra3.Services.Models.Mining", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint unsigned"); + + b.Property("LastMine") + .HasColumnType("bigint unsigned"); + + b.Property("Lvl") + .HasColumnType("bigint unsigned"); + + b.Property("TXp") + .HasColumnType("bigint unsigned"); + + b.Property("Xp") + .HasColumnType("bigint unsigned"); + + b.HasKey("Id"); + + b.ToTable("Mining"); + }); + modelBuilder.Entity("Kehyeedra3.Services.Models.Reminder", b => { b.Property("Id") @@ -163,15 +189,12 @@ namespace Kehyeedra3.Migrations b.Property("Avatar") .HasColumnType("longtext CHARACTER SET utf8mb4"); - b.Property("CurrentBattlefish") - .HasColumnType("int"); + b.Property("CurrentBattlefish") + .HasColumnType("TINYINT"); b.Property("GeneralInventory") .HasColumnType("LONGTEXT"); - b.Property("LastMine") - .HasColumnType("bigint unsigned"); - b.Property("Money") .HasColumnType("bigint"); @@ -189,8 +212,8 @@ namespace Kehyeedra3.Migrations .ValueGeneratedOnAdd() .HasColumnType("bigint unsigned"); - b.Property("FishType") - .HasColumnType("int"); + b.Property("FishType") + .HasColumnType("TINYINT"); b.Property("Lvl") .HasColumnType("int"); diff --git a/Kehyeedra3/AudioService.cs b/Kehyeedra3/Services/AudioService.cs similarity index 100% rename from Kehyeedra3/AudioService.cs rename to Kehyeedra3/Services/AudioService.cs diff --git a/Kehyeedra3/Services/Models/Fishing.cs b/Kehyeedra3/Services/Models/Fishing.cs index b5456fa..641c4d4 100644 --- a/Kehyeedra3/Services/Models/Fishing.cs +++ b/Kehyeedra3/Services/Models/Fishing.cs @@ -30,8 +30,9 @@ namespace Kehyeedra3.Services.Models public FishSpecies Id; //public byte Ego; //public byte Superego; - public string Name; - public string Emote; + public string Name = "Missing Name"; + public string Emote = "<:missingLeg:682586847830081551>"; + public string Texture = "missingtexture.png"; public FishRarity Rarity; public FishTier Tier; } @@ -40,6 +41,7 @@ namespace Kehyeedra3.Services.Models public ulong Id { get; set; } = 0; // this is userid incase you get alzheimers you stupid baby waa waa public ulong LastFish { get; set; } = 0; public ulong Xp { get; set; } = 50; + public ulong FXp { get; set; } = 0; public ulong TXp { get; set; } = 0; public ulong Lvl { get; set; } = 0; public byte RodOwned { get; set; } = 0; @@ -70,8 +72,9 @@ namespace Kehyeedra3.Services.Models new Fish() { Id = FishSpecies.Wakasagihime, - Name = "Touhoufish", + Name = "Freshwater Lady", Emote = "<:wakasagihime:793084118949691433>", + Texture = "touhoufish.png", Rarity = FishRarity.Unreasonable, Tier = FishTier.T1 }, @@ -80,6 +83,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.LuckyCatfish, Name = "Lucky Catfish", Emote = "", + Texture = "catfish.gif", Rarity = FishRarity.Legendary, Tier = FishTier.T1 }, @@ -88,6 +92,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Doomfish, Name = "Doomfish", Emote = "", + Texture = "doomfish.gif", Rarity = FishRarity.Rare, Tier = FishTier.T1 }, @@ -96,6 +101,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Clownfish, Name = "Clownfish", Emote = "", + Texture = "clownfish.gif", Rarity = FishRarity.Rare, Tier = FishTier.T1 }, @@ -104,6 +110,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Teracrab, Name = "Teracrab", Emote = "", + Texture = "teracrab.gif", Rarity = FishRarity.Rare, Tier = FishTier.T1 }, @@ -112,6 +119,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Blobfish, Name = "Blobfish", Emote = "", + Texture = "blobfish.gif", Rarity = FishRarity.Rare, Tier = FishTier.T1 }, @@ -120,6 +128,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Psychedelica, Name = "Psychedelica", Emote = "", + Texture = "psychedelica.gif", Rarity = FishRarity.Rare, Tier = FishTier.T1 }, @@ -128,6 +137,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Gigacrab, Name = "Gigacrab", Emote = "<:gigacrableft:715626112327221348><:gigacrabright:715626112537067580>", + Texture = "gigacrab.png", Rarity = FishRarity.Uncommon, Tier = FishTier.T1 }, @@ -136,6 +146,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Dopefish, Name = "Dopefish", Emote = "<:dopefishleft:700422139672658009><:dopefishright:700422139643428895>", + Texture = "dopefish.png", Rarity = FishRarity.Uncommon, Tier = FishTier.T1 }, @@ -144,6 +155,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Stargazer, Name = "Stargazer", Emote = "<:stargazerleft:700414644774240286><:stargazerright:700413063442202684>", + Texture = "stargazer.png", Rarity = FishRarity.Uncommon, Tier = FishTier.T1 }, @@ -152,6 +164,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Isopod, Name = "Isopod", Emote = "<:isopodleft:700397032271249428><:isopodright:700397031922991206>", + Texture = "isopod.png", Rarity = FishRarity.Uncommon, Tier = FishTier.T1 }, @@ -160,6 +173,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Sheephead, Name = "Sheephead", Emote = "<:sheepheadleft:710894977944649728><:sheepheadright:710894979467444284>", + Texture = "sheephead.png", Rarity = FishRarity.Uncommon, Tier = FishTier.T1 }, @@ -168,6 +182,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Cod, Name = "Cod", Emote = "<:codleft:695304941715062887><:codright:695304941949943808>", + Texture = "cod.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -176,6 +191,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Salmon, Name = "Salmon", Emote = "<:salmonleft:698167269359878236><:salmonright:698167269167202324>", + Texture = "salmon.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -184,6 +200,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Shrimp, Name = "Shrimp", Emote = "<:shrimpleft:715074288788570112><:shrimpright:715074288863936552>", + Texture = "shrimp.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -192,6 +209,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Crayfish, Name = "Crayfish", Emote = "<:crayfishleft:715638929885495377><:crayfishright:715638929843421284>", + Texture = "crayfish.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -200,6 +218,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Betta, Name = "Betta", Emote = "<:bettaleft:698179217107714088><:bettaright:698179216868638851>", + Texture = "betta.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -208,6 +227,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Pufferfish, Name = "Pufferfish", Emote = "<:pufferfishleft:715075414179184691><:pufferfishright:715075414116007937>", + Texture = "pufferfish.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -216,6 +236,7 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Carp, Name = "Carp", Emote = "<:koicarpleft:698204388556275752><:koicarpright:698204386421374986>", + Texture = "carp.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, @@ -224,15 +245,17 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Megacrab, Name = "Hermit Crab", Emote = "<:hermitcrableft:715071501996392519><:hermitcrabright:715071501971488808>", + Texture = "hermitcrab.png", Rarity = FishRarity.Common, Tier = FishTier.T1 }, new Fish() //// Tier 2 { - Id = FishSpecies.Hypnofish, + Id = FishSpecies.Hypnofish, // replace with shrimp waifu fish when art done Name = "Hypnofish", Emote = "<:paska:786244602440450109><:hypnoosi:786244623478947841>", + Texture = "hypnofish.png", Rarity = FishRarity.Legendary, Tier = FishTier.T2 }, @@ -240,7 +263,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.Swolefish, Name = "Pumped Up Swolefish", - Emote = "<:missingLeg:682586847830081551>", + //Texture = "", Rarity = FishRarity.Rare, Tier = FishTier.T2 }, @@ -248,7 +271,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.Dogfish, Name = "Dogfish", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Rare, Tier = FishTier.T2 }, @@ -257,6 +280,23 @@ namespace Kehyeedra3.Services.Models Id = FishSpecies.Gunfish, Name = "Gunfish", Emote = "<:gunfishleft:793492588799590460><:gunfishright:793492625277714442>", + Texture = "gunfish.png", + Rarity = FishRarity.Uncommon, + Tier = FishTier.T2 + }, + new Fish() + { + Id = FishSpecies.Dingus, + Name = "Dingus", + + Rarity = FishRarity.Uncommon, + Tier = FishTier.T2 + }, + new Fish() + { + Id = FishSpecies.Finnfish, + Name = "Fi'ish", + Rarity = FishRarity.Uncommon, Tier = FishTier.T2 }, @@ -264,7 +304,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.Rockfish, Name = "Rockfish", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Common, Tier = FishTier.T2 }, @@ -272,16 +312,32 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.Fishlet, Name = "Fishlet", - Emote = "<:missingLeg:682586847830081551>", + + Rarity = FishRarity.Common, + Tier = FishTier.T2 + }, + new Fish() + { + Id = FishSpecies.Cavefish, + Name = "Cavefish", + + Rarity = FishRarity.Common, + Tier = FishTier.T2 + }, + new Fish() + { + Id = FishSpecies.Neck, + Name = "Neck", + Rarity = FishRarity.Common, Tier = FishTier.T2 }, new Fish() //// Tier 3 { - Id = FishSpecies.SpecDoomfish, - Name = "Spectral Doomfish", - Emote = "<:missingLeg:682586847830081551>", + Id = FishSpecies.Circlefish, + Name = "Circle Fish", + Rarity = FishRarity.Legendary, Tier = FishTier.T3 }, @@ -289,7 +345,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.RevCrab, Name = "Revenant Crab", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Rare, Tier = FishTier.T3 }, @@ -297,7 +353,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.SpecFlameworm, Name = "Spectral Flameworm", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Uncommon, Tier = FishTier.T3 }, @@ -305,7 +361,15 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.SpecShrimp, Name = "Spectral Shrimp", - Emote = "<:missingLeg:682586847830081551>", + + Rarity = FishRarity.Common, + Tier = FishTier.T3 + }, + new Fish() + { + Id = FishSpecies.Ghostie, + Name = "Ghostie", + Rarity = FishRarity.Common, Tier = FishTier.T3 }, @@ -315,7 +379,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.T4PH1, Name = "Placeholder", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Legendary, Tier = FishTier.T4 }, @@ -323,7 +387,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.T4PH2, Name = "Placeholder", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Rare, Tier = FishTier.T4 }, @@ -331,7 +395,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.T4PH3, Name = "Placeholder", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Uncommon, Tier = FishTier.T4 }, @@ -339,7 +403,7 @@ namespace Kehyeedra3.Services.Models { Id = FishSpecies.T4PH4, Name = "Placeholder", - Emote = "<:missingLeg:682586847830081551>", + Rarity = FishRarity.Common, Tier = FishTier.T4 }, @@ -379,26 +443,34 @@ namespace Kehyeedra3.Services.Models Hypnofish = 20, //T2 Rare Swolefish = 21, - Dogfish = 102, + Dogfish = 22, //T2 Uncommon - Gunfish = 22, + Gunfish = 30, + Dingus = 31, + Finnfish = 32, //T2 Common - Rockfish = 23, - Fishlet = 24, + Rockfish = 40, + Fishlet = 41, + Cavefish = 42, + Neck = 43, //T3 Legendary - SpecDoomfish = 25, + Circlefish = 50, //T3 Rare - RevCrab = 26, + RevCrab = 51, //T3 Uncommon - SpecFlameworm = 27, + SpecFlameworm = 60, //T3 Common - SpecShrimp = 28, + SpecShrimp = 70, + Ghostie = 71, //T4 - T4PH1 = 29, - T4PH2 = 30, - T4PH3 = 31, - T4PH4 = 32, + T4PH1 = 80, + //r + T4PH2 = 90, + //uc + T4PH3 = 100, + //c + T4PH4 = 110, } public class FishingInventorySlot { diff --git a/Kehyeedra3/Services/Models/Mining.cs b/Kehyeedra3/Services/Models/Mining.cs new file mode 100644 index 0000000..24919df --- /dev/null +++ b/Kehyeedra3/Services/Models/Mining.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Kehyeedra3.Services.Models +{ + public class Mining + { + [Key] + public ulong Id { get; set; } = 0; + public ulong Xp { get; set; } = 50; + public ulong TXp { get; set; } = 0; + public ulong Lvl { get; set; } = 0; + public ulong LastMine { get; set; } = 0; + } +} diff --git a/Kehyeedra3/Services/Models/User.cs b/Kehyeedra3/Services/Models/User.cs index 6888315..b86a386 100644 --- a/Kehyeedra3/Services/Models/User.cs +++ b/Kehyeedra3/Services/Models/User.cs @@ -12,7 +12,6 @@ namespace Kehyeedra3.Services.Models public string Avatar { get; set; } = null; public string Username { get; set; } = null; public long Money { get; set; } = 0; - public ulong LastMine { get; set; } = 0; [Column(TypeName = "LONGTEXT")] public string GeneralInventory { get; set; } = "{}"; [Column(TypeName = "TINYINT")] @@ -62,25 +61,25 @@ namespace Kehyeedra3.Services.Models { Id = Items.Lettuce, Name = "Learning Lettuce", - Price = 50 + Price = 25 }, new Item() { Id = Items.RareBait, Name = "Rare Bait", - Price = 50 + Price = 25 }, new Item() { Id = Items.BigBait, Name = "Big Bait", - Price = 20 + Price = 10 }, new Item() { Id = Items.SpecialBait, Name = "Master Bait", - Price = 100 + Price = 50 }, new Item() {