fishing changes and stuff
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Design;
|
using Microsoft.EntityFrameworkCore.Design;
|
||||||
|
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
|
||||||
|
using Pomelo.EntityFrameworkCore.MySql.Storage;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using dotenv.net;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Kehyeedra3
|
namespace Kehyeedra3
|
||||||
{
|
{
|
||||||
@@ -10,9 +14,12 @@ namespace Kehyeedra3
|
|||||||
{
|
{
|
||||||
public ApplicationDbContext CreateDbContext(string[] args = null)
|
public ApplicationDbContext CreateDbContext(string[] args = null)
|
||||||
{
|
{
|
||||||
|
DotEnv.Config(filePath: Path.Combine(AppContext.BaseDirectory, ".env"));
|
||||||
|
|
||||||
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
|
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
|
||||||
|
|
||||||
optionsBuilder.UseMySql(Environment.GetEnvironmentVariable("KEHYEEDRA_CONNSTR"));
|
optionsBuilder.UseMySql(Environment.GetEnvironmentVariable("KEHYEEDRA_CONNSTR"),
|
||||||
|
x => { x.EnableRetryOnFailure(); x.CharSet(CharSet.Utf8Mb4); });
|
||||||
|
|
||||||
return new ApplicationDbContext(optionsBuilder.Options);
|
return new ApplicationDbContext(optionsBuilder.Options);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using System.Net.Http;
|
|||||||
using Kehyeedra3.Services;
|
using Kehyeedra3.Services;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Discord.Addons.Interactive;
|
using Discord.Addons.Interactive;
|
||||||
|
using dotenv.net;
|
||||||
|
|
||||||
namespace Kehyeedra3
|
namespace Kehyeedra3
|
||||||
{
|
{
|
||||||
@@ -54,6 +55,7 @@ namespace Kehyeedra3
|
|||||||
|
|
||||||
public async Task CreateBot()
|
public async Task CreateBot()
|
||||||
{
|
{
|
||||||
|
DotEnv.Config(filePath: Path.Combine(AppContext.BaseDirectory, ".env"));
|
||||||
var Config = Configuration.Load();
|
var Config = Configuration.Load();
|
||||||
|
|
||||||
Clockboy = new System.Timers.Timer();
|
Clockboy = new System.Timers.Timer();
|
||||||
@@ -81,7 +83,7 @@ namespace Kehyeedra3
|
|||||||
.AddSingleton(_bot)
|
.AddSingleton(_bot)
|
||||||
.AddSingleton(_cmds)
|
.AddSingleton(_cmds)
|
||||||
.AddSingleton(AudioService)
|
.AddSingleton(AudioService)
|
||||||
.AddSingleton(new InteractiveService(_bot, TimeSpan.FromSeconds(30)))
|
.AddSingleton(new InteractiveService(_bot))
|
||||||
.BuildServiceProvider();
|
.BuildServiceProvider();
|
||||||
|
|
||||||
await CommandHandler.InstallCommands();
|
await CommandHandler.InstallCommands();
|
||||||
|
|||||||
@@ -81,7 +81,9 @@ namespace Kehyeedra3
|
|||||||
{
|
{
|
||||||
if (!arg.Author.IsBot)
|
if (!arg.Author.IsBot)
|
||||||
{
|
{
|
||||||
var message = arg as SocketUserMessage;
|
if(arg is SocketUserMessage message)
|
||||||
|
{
|
||||||
|
if (message == null) return;
|
||||||
var Context = new SocketCommandContext(_bot, message);
|
var Context = new SocketCommandContext(_bot, message);
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
@@ -104,7 +106,6 @@ namespace Kehyeedra3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message == null) return;
|
|
||||||
int argPos = 0;
|
int argPos = 0;
|
||||||
|
|
||||||
if (message.HasMentionPrefix(_bot.CurrentUser, ref argPos))
|
if (message.HasMentionPrefix(_bot.CurrentUser, ref argPos))
|
||||||
@@ -165,6 +166,7 @@ namespace Kehyeedra3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static async Task InstallModules()
|
public static async Task InstallModules()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ using System.Net;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using Kehyeedra3.Services;
|
using Kehyeedra3.Services;
|
||||||
using MySql.Data;
|
|
||||||
using MySql.Data.MySqlClient;
|
|
||||||
using Kehyeedra3.Services.Models;
|
using Kehyeedra3.Services.Models;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Microsoft.EntityFrameworkCore.Internal;
|
using Microsoft.EntityFrameworkCore.Internal;
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Addons.Interactive;
|
using Discord.Addons.Interactive;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
|
using ImageMagick;
|
||||||
using Kehyeedra3.Preconditions;
|
using Kehyeedra3.Preconditions;
|
||||||
using Kehyeedra3.Services.Models;
|
using Kehyeedra3.Services.Models;
|
||||||
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Kehyeedra3.Commands
|
namespace Kehyeedra3.Commands
|
||||||
@@ -78,7 +76,7 @@ namespace Kehyeedra3.Commands
|
|||||||
{
|
{
|
||||||
using var Database = new ApplicationDbContextFactory().CreateDbContext();
|
using var Database = new ApplicationDbContextFactory().CreateDbContext();
|
||||||
|
|
||||||
List<User> users = Database.Users.OrderByDescending(user => user.Money).ToList();
|
List<User> users = Database.Users.AsQueryable().OrderByDescending(user => user.Money).ToList();
|
||||||
User bank = Database.Users.FirstOrDefault(x => x.Id == 0);
|
User bank = Database.Users.FirstOrDefault(x => x.Id == 0);
|
||||||
|
|
||||||
int existing = 0;
|
int existing = 0;
|
||||||
@@ -313,6 +311,226 @@ namespace Kehyeedra3.Commands
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
[RequireRolePrecondition(AccessLevel.BotOwner)]
|
||||||
|
[Command("getimag")]
|
||||||
|
public async Task TestCommand(string name)
|
||||||
|
{
|
||||||
|
name += ".png";
|
||||||
|
string path = Path.Combine(Environment.CurrentDirectory, "btextures");
|
||||||
|
DirectoryInfo idir = new DirectoryInfo(path);
|
||||||
|
var file = idir.GetFiles().FirstOrDefault(i => i.Name == name);
|
||||||
|
if (file != null)
|
||||||
|
{
|
||||||
|
await Context.Channel.SendFileAsync(file.FullName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("File does not exist, check brain for damaged goods?");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
|
||||||
|
[Command("makeimag")]
|
||||||
|
public async Task MakeImage()
|
||||||
|
{
|
||||||
|
string path = Path.Combine(Environment.CurrentDirectory, "btextures");
|
||||||
|
|
||||||
|
using (MagickImage layer1 = new MagickImage(Path.Combine(path, "tbackground.png"), new MagickReadSettings
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.Transparent,
|
||||||
|
FillColor = MagickColors.White
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
layer1.Compose = CompositeOperator.Over;
|
||||||
|
|
||||||
|
using (MagickImage layer2 = new MagickImage(Path.Combine(path, "tforeground.png"), new MagickReadSettings
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.Transparent,
|
||||||
|
FillColor = MagickColors.Black
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
layer1.Composite(layer2, 245, 158, CompositeOperator.Over); //x, y
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MagickImage layer3 = new MagickImage($"label:Haha The Machine Go BRrrrrr", new MagickReadSettings //text
|
||||||
|
{
|
||||||
|
Width = 250,
|
||||||
|
Height = 25,
|
||||||
|
TextGravity = Gravity.Center,
|
||||||
|
FillColor = MagickColors.Black,
|
||||||
|
BackgroundColor = MagickColors.None
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
layer1.Composite(layer3, 245, 449, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
|
||||||
|
MemoryStream outputStream = new MemoryStream();
|
||||||
|
|
||||||
|
layer1.Write(outputStream);
|
||||||
|
|
||||||
|
outputStream.Position = 0;
|
||||||
|
|
||||||
|
await Context.Channel.SendFileAsync(outputStream, "imaeg.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
|
||||||
|
[Command("lc")]
|
||||||
|
public async Task MakeLevelCard()
|
||||||
|
{
|
||||||
|
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<FishSpecies, int[]> inv = new Dictionary<FishSpecies, int[]>();
|
||||||
|
|
||||||
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
|
{
|
||||||
|
user = Database.Users.FirstOrDefault(i => i.Id == Context.User.Id);
|
||||||
|
fuser = Database.Fishing.FirstOrDefault(i => i.Id == Context.User.Id);
|
||||||
|
}
|
||||||
|
if (fuser == null || user == null)
|
||||||
|
{
|
||||||
|
rod = "rod1.png";
|
||||||
|
tier = "tier1.png";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lvl = fuser.Lvl;
|
||||||
|
xp = fuser.TXp;
|
||||||
|
var finv = fuser.GetInventory();
|
||||||
|
switch (fuser.RodUsed)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
foreach (var fish in finv)
|
||||||
|
{
|
||||||
|
total += (fish.Value[0] + fish.Value[1] + fish.Value[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
avatar = user.Avatar;
|
||||||
|
|
||||||
|
if (avatar == "https://cdn.discordapp.com/embed/avatars/0.png")
|
||||||
|
{
|
||||||
|
avatar = Path.Combine(path, "noavatar.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
using (MagickImage card = new MagickImage(Path.Combine(path, "background.png"), new MagickReadSettings //background
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.Transparent,
|
||||||
|
FillColor = MagickColors.Black,
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Compose = CompositeOperator.Over;
|
||||||
|
|
||||||
|
using (MagickImage iavatar = new MagickImage(Path.Combine(avatar), new MagickReadSettings //avatar
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.None
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Composite(iavatar, 5, 5, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MagickImage frame = new MagickImage(Path.Combine(path, "cover.png"), new MagickReadSettings //cover
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.None
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Composite(frame, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MagickImage frame = new MagickImage(Path.Combine(path, tier), new MagickReadSettings //tier glow
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.None
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
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
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Composite(frame, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MagickImage xpbar = new MagickImage(Path.Combine(path, "xpbar.png"), new MagickReadSettings //xp bar
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.None
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Composite(xpbar, 405, 5, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
|
||||||
|
//using (MagickImage name = new MagickImage($"label:\n{Context.User.Username}", new MagickReadSettings
|
||||||
|
//{BackgroundColor = MagickColors.None, FillColor = MagickColors.White, FontPointsize = 20 }))
|
||||||
|
// {
|
||||||
|
// card.Composite(name, 6, 6, CompositeOperator.Over);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
using (MagickImage stats = new MagickImage($"label:" +
|
||||||
|
$"\nFishing Lv : {lvl}" +
|
||||||
|
$"\nXP : {xp}" +
|
||||||
|
$"\nMax catch : {maxc}" +
|
||||||
|
$"\nMin catch : {minc}" +
|
||||||
|
$"\nTotal Fish : {total}", new MagickReadSettings
|
||||||
|
{
|
||||||
|
BackgroundColor = MagickColors.None,
|
||||||
|
FillColor = MagickColors.White,
|
||||||
|
FontPointsize = 12
|
||||||
|
}))
|
||||||
|
{
|
||||||
|
card.Composite(stats,146,5, CompositeOperator.Over);
|
||||||
|
}
|
||||||
|
MemoryStream outputStream = new MemoryStream();
|
||||||
|
card.Write(outputStream);
|
||||||
|
outputStream.Position = 0;
|
||||||
|
await Context.Channel.SendFileAsync(outputStream, "profile.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,10 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using ImageMagick;
|
||||||
using System.Threading.Channels;
|
using System.Threading.Channels;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Kehyeedra3.Preconditions;
|
||||||
|
|
||||||
namespace Kehyeedra3.Commands
|
namespace Kehyeedra3.Commands
|
||||||
{
|
{
|
||||||
@@ -21,7 +23,6 @@ namespace Kehyeedra3.Commands
|
|||||||
"**Platinum**,",
|
"**Platinum**,",
|
||||||
"**Plastids**,",
|
"**Plastids**,",
|
||||||
"a ticking **Time Bomb**,",
|
"a ticking **Time Bomb**,",
|
||||||
"**Neural Sensors**,",
|
|
||||||
"an **Amethyst**,",
|
"an **Amethyst**,",
|
||||||
"**Germanium**,",
|
"**Germanium**,",
|
||||||
"a **Hotdog**,",
|
"a **Hotdog**,",
|
||||||
@@ -192,19 +193,24 @@ namespace Kehyeedra3.Commands
|
|||||||
public async Task FishCommand()
|
public async Task FishCommand()
|
||||||
{
|
{
|
||||||
ulong time = ulong.Parse(DateTime.Now.ToString("yyyyMMddHHmm"));
|
ulong time = ulong.Parse(DateTime.Now.ToString("yyyyMMddHHmm"));
|
||||||
ulong lastfish;
|
|
||||||
ulong totalXp;
|
ulong totalXp;
|
||||||
ulong xp;
|
ulong xp;
|
||||||
ulong level;
|
ulong level;
|
||||||
ulong lvlXp;
|
ulong lvlXp;
|
||||||
int prestige;
|
int prestige;
|
||||||
int rod;
|
int rod;
|
||||||
|
int BigBait = 0;
|
||||||
|
int RareBait = 0;
|
||||||
|
int SpecialBait = 0;
|
||||||
|
int Lettuce = 0;
|
||||||
Dictionary<FishSpecies, int[]> inv = new Dictionary<FishSpecies, int[]>();
|
Dictionary<FishSpecies, int[]> inv = new Dictionary<FishSpecies, int[]>();
|
||||||
|
Dictionary<Items, int[]> items = new Dictionary<Items, int[]>();
|
||||||
List<Fish> fishes = Fishing.GetFishList();
|
List<Fish> fishes = Fishing.GetFishList();
|
||||||
|
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
var user = Database.Fishing.FirstOrDefault(x => x.Id == Context.User.Id);
|
var user = Database.Fishing.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
|
var guser = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@@ -219,8 +225,58 @@ namespace Kehyeedra3.Commands
|
|||||||
{
|
{
|
||||||
inv = user.GetInventory();
|
inv = user.GetInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (user.LastFish >= time)
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\narrrrr-right, ye scurby bastard, I know yer eager t' scour the seven seas but ye needs t' wait till the next minute t' pillage the booty'o'the depths, savvy?");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
items = guser.GetGenInve(); //
|
||||||
|
int[] subtract = { 0 };
|
||||||
|
subtract[0] = -1;
|
||||||
|
if (items.TryGetValue(Items.SpecialBait, out int[] SpecB))
|
||||||
|
{
|
||||||
|
SpecialBait = SpecB[0];
|
||||||
|
BigBait = SpecB[0];
|
||||||
|
RareBait = SpecB[0];
|
||||||
|
if (SpecialBait > 0)
|
||||||
|
{
|
||||||
|
SpecB[0] -= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (items.TryGetValue(Items.BigBait, out int[] BigB))
|
||||||
|
{
|
||||||
|
BigBait = BigB[0];
|
||||||
|
if (BigBait > 0)
|
||||||
|
{
|
||||||
|
BigB[0] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (items.TryGetValue(Items.RareBait, out int[] RareB))
|
||||||
|
{
|
||||||
|
RareBait = RareB[0];
|
||||||
|
if (RareBait > 0)
|
||||||
|
{
|
||||||
|
RareB[0] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (items.TryGetValue(Items.Lettuce, out int[] Lettu))
|
||||||
|
{
|
||||||
|
Lettuce = Lettu[0];
|
||||||
|
if (Lettuce > 0)
|
||||||
|
{
|
||||||
|
Lettu[0] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
guser.SetGenInve(items);
|
||||||
|
|
||||||
|
|
||||||
level = user.Lvl;
|
level = user.Lvl;
|
||||||
lastfish = user.LastFish;
|
|
||||||
totalXp = user.TXp;
|
totalXp = user.TXp;
|
||||||
lvlXp = user.Xp;
|
lvlXp = user.Xp;
|
||||||
rod = user.RodUsed;
|
rod = user.RodUsed;
|
||||||
@@ -229,23 +285,24 @@ namespace Kehyeedra3.Commands
|
|||||||
await Database.SaveChangesAsync();
|
await Database.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rari = SRandom.Next(0, 2001);
|
||||||
|
|
||||||
if (lastfish < time)
|
|
||||||
{
|
|
||||||
int rari = (SRandom.Next(0, 2001));
|
|
||||||
int weigh = SRandom.Next(10, 1501+prestige*500);
|
int weigh = SRandom.Next(10, 1501+prestige*500);
|
||||||
int tierRoll = SRandom.Next(0, 81+prestige*40);
|
int tierRoll = SRandom.Next(0, 20*rod+10*prestige+1);
|
||||||
int dCatchRoll = SRandom.Next(0, 1000+prestige*20);
|
int dCatchRoll = SRandom.Next(0, 1000+prestige*20);
|
||||||
|
|
||||||
int dcatch = 1;
|
int dcatch = 1;
|
||||||
ulong rarity;
|
int rarity;
|
||||||
int weight;
|
int weight;
|
||||||
|
bool bBig = false;
|
||||||
|
bool bRar = false;
|
||||||
|
bool bSpe = false;
|
||||||
|
bool bLet = false;
|
||||||
|
|
||||||
if (dCatchRoll > 1000)
|
if (dCatchRoll > 1000)
|
||||||
{
|
{
|
||||||
int many = 1020;
|
int many = 1020;
|
||||||
dcatch += 1;
|
dcatch += 1;
|
||||||
while (many+20 < dCatchRoll)
|
while (many < dCatchRoll)
|
||||||
{
|
{
|
||||||
dcatch += 1;
|
dcatch += 1;
|
||||||
many += 10+(dcatch*5);
|
many += 10+(dcatch*5);
|
||||||
@@ -254,25 +311,55 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
if (level < 100 && prestige == 0)
|
if (level < 100 && prestige == 0)
|
||||||
{
|
{
|
||||||
rarity = level * 10 + (ulong)rari;
|
rarity = (int)level * 10 + rari;
|
||||||
weight = (int)level * 5 + weigh;
|
weight = (int)level * 5 + weigh;
|
||||||
}
|
}
|
||||||
else if (level < 100 && prestige == 1)
|
else if (level < 100 && prestige == 1)
|
||||||
{
|
{
|
||||||
rarity = 1000 + (ulong)rari;
|
rarity = 1000 + rari;
|
||||||
weight = (int)level * 2 + 500 + weigh;
|
weight = (int)level * 3 + 500 + weigh;
|
||||||
|
}
|
||||||
|
else if (level >= 100 && prestige > 1)
|
||||||
|
{
|
||||||
|
rarity = 1000 + rari;
|
||||||
|
weight = 800 + weigh;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rarity = 1000 + (ulong)rari;
|
rarity = 1000 + rari;
|
||||||
weight = 700 + weigh;
|
weight = 500 + weigh;
|
||||||
|
}
|
||||||
|
if (BigBait > 0)
|
||||||
|
{
|
||||||
|
weight += 1000;
|
||||||
|
bBig = true;
|
||||||
|
}
|
||||||
|
if (RareBait > 0)
|
||||||
|
{
|
||||||
|
rarity += 500;
|
||||||
|
bRar = true;
|
||||||
|
}
|
||||||
|
if (SpecialBait > 0)
|
||||||
|
{
|
||||||
|
bSpe = true;
|
||||||
|
}
|
||||||
|
if (Lettuce > 0)
|
||||||
|
{
|
||||||
|
bLet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fish fish;
|
Fish fish;
|
||||||
|
|
||||||
if (rarity == 777 || (rarity > 2060 && rarity <= 2070) || rarity == 2777)
|
if (rarity == 777 || (rarity > 2060 && rarity <= 2070) || rarity == 2777 || rarity > 2500 && rarity < 2510 && bRar ||rarity > 2510 && rarity < 2520 && bSpe)
|
||||||
{
|
{
|
||||||
if (rod >= 3 && tierRoll > 60)
|
int wRoll = SRandom.Next(0, 101);
|
||||||
|
if (wRoll == 77 && bSpe)
|
||||||
|
{
|
||||||
|
List<Fish> possibleFishes = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Unreasonable).ToList();
|
||||||
|
fish = possibleFishes[SRandom.Next(possibleFishes.Count)];
|
||||||
|
xp = 7777;
|
||||||
|
}
|
||||||
|
else if (rod >= 3 && tierRoll > 60)
|
||||||
{
|
{
|
||||||
List<Fish> possibleFishes = fishes.Where(f => (int)f.Rarity == (int)FishRarity.T4Legendary).ToList();
|
List<Fish> possibleFishes = fishes.Where(f => (int)f.Rarity == (int)FishRarity.T4Legendary).ToList();
|
||||||
fish = possibleFishes[SRandom.Next(possibleFishes.Count)];
|
fish = possibleFishes[SRandom.Next(possibleFishes.Count)];
|
||||||
@@ -298,12 +385,16 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
if (rarity == 777 || rarity == 2777)
|
if (rarity == 777 || rarity == 2777)
|
||||||
{
|
{
|
||||||
xp = 77+(77*Convert.ToUInt64(rod/2));
|
xp = 77+ Convert.ToUInt64(77*rod/2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rarity > 1700)
|
else if (rarity > 1700)
|
||||||
{
|
{
|
||||||
rarity = Convert.ToUInt64(SRandom.Next(1700, 2801));
|
rarity = SRandom.Next(1700, 2801);
|
||||||
|
if (bRar || bSpe)
|
||||||
|
{
|
||||||
|
rarity += 200;
|
||||||
|
}
|
||||||
if (rod >= 3 && tierRoll > 60)
|
if (rod >= 3 && tierRoll > 60)
|
||||||
{
|
{
|
||||||
List<Fish> possibleFishes = fishes.Where(f => (int)f.Rarity == (int)FishRarity.T4Uncommon).ToList();
|
List<Fish> possibleFishes = fishes.Where(f => (int)f.Rarity == (int)FishRarity.T4Uncommon).ToList();
|
||||||
@@ -387,19 +478,24 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
FishSize size;
|
FishSize size;
|
||||||
|
|
||||||
if (fish.Rarity == FishRarity.Legendary || fish.Rarity == FishRarity.T2Legendary || fish.Rarity == FishRarity.T3Legendary || fish.Rarity == FishRarity.T4Legendary )
|
if (weight >= (1000 - Convert.ToInt32(level * 2))) //second weight roll
|
||||||
{
|
|
||||||
weight = 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (weight >= (1000 - Convert.ToInt32(level * 2)))
|
|
||||||
{
|
{
|
||||||
weight = SRandom.Next(100, 2001) + Convert.ToInt32(level * 5 + (Convert.ToUInt64(prestige * 500)));
|
weight = SRandom.Next(100, 2001) + Convert.ToInt32(level * 5 + (Convert.ToUInt64(prestige * 500)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fish.Rarity == FishRarity.Legendary || fish.Rarity == FishRarity.T2Legendary || fish.Rarity == FishRarity.T3Legendary || fish.Rarity == FishRarity.T4Legendary)
|
if (fish.Rarity == FishRarity.Legendary || fish.Rarity == FishRarity.T2Legendary || fish.Rarity == FishRarity.T3Legendary || fish.Rarity == FishRarity.T4Legendary)
|
||||||
{
|
{
|
||||||
weight = SRandom.Next(2000 + Convert.ToInt32(level * 20), 40001 + prestige * 10000);
|
weight = SRandom.Next(2000 + Convert.ToInt32(level * 20), 40001 + prestige * 10000);
|
||||||
}
|
}
|
||||||
|
if (fish.Rarity == FishRarity.Unreasonable)
|
||||||
|
{
|
||||||
|
weight = SRandom.Next(4000, 6000);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bBig)
|
||||||
|
{
|
||||||
|
weight += 1000;
|
||||||
|
}
|
||||||
|
|
||||||
if (weight >= 1000)
|
if (weight >= 1000)
|
||||||
{
|
{
|
||||||
@@ -429,6 +525,11 @@ namespace Kehyeedra3.Commands
|
|||||||
size = FishSize.Small;
|
size = FishSize.Small;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bLet)
|
||||||
|
{
|
||||||
|
xp = Convert.ToUInt64(Math.Round(xp * 1.1, 0, MidpointRounding.ToEven)) * (ulong)dcatch;
|
||||||
|
}
|
||||||
|
|
||||||
string lvlUp = "";
|
string lvlUp = "";
|
||||||
|
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
@@ -515,15 +616,36 @@ namespace Kehyeedra3.Commands
|
|||||||
lvlUp = $"You need **{toNextLvl}**xp more to reach Level **{level + 1}**";
|
lvlUp = $"You need **{toNextLvl}**xp more to reach Level **{level + 1}**";
|
||||||
}
|
}
|
||||||
|
|
||||||
await Database.SaveChangesAsync().ConfigureAwait(false); // :]
|
await Database.SaveChangesAsync().ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
string baited = "";
|
||||||
|
string baiRa = "";
|
||||||
|
string baiBi = "";
|
||||||
|
string baiLe = "";
|
||||||
|
if (bRar || bBig)
|
||||||
|
{
|
||||||
|
baited += "\nYou used bait. ";
|
||||||
|
if (bRar)
|
||||||
|
{
|
||||||
|
baiRa = "(+)";
|
||||||
|
}
|
||||||
|
if (bBig)
|
||||||
|
{
|
||||||
|
baiBi = "(+)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bLet)
|
||||||
|
{
|
||||||
|
baited += "\nYou ate lettuce. ";
|
||||||
|
baiLe = "(+10%)";
|
||||||
}
|
}
|
||||||
if (dcatch == 1)
|
if (dcatch == 1)
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n {fish.Emote} You have caught a {weight / 100d}kg **{fish.Name}**, rarity: {fish.Rarity}\nYou gain **{xp}**xp.\n{lvlUp}");
|
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
|
else
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n {fish.Emote} You have caught **{dcatch}** {weight / 100d}kg **{fish.Name}**, rarity: {fish.Rarity}\nYou gain **{xp}**xp.\n{lvlUp}");
|
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}");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -531,11 +653,6 @@ namespace Kehyeedra3.Commands
|
|||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYour line snaps. Your disappointment is immeasurable, and your day is ruined.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYour line snaps. Your disappointment is immeasurable, and your day is ruined.");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\narrrrr-right, ye scurby bastard, I know yer eager t' scour the seven seas but ye needs t' wait till the next minute t' pillage the booty'o'the depths, savvy?");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
[Command("checkrod"),Summary("Displays what fishing rods you can use, as well as your currently equipped fishing rod.")]
|
[Command("checkrod"),Summary("Displays what fishing rods you can use, as well as your currently equipped fishing rod.")]
|
||||||
@@ -549,12 +666,38 @@ namespace Kehyeedra3.Commands
|
|||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own any fishing rods. Try **fishing**.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own any fishing rods. Try **fishing**.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have unlocked fishing rods up to **T{user.RodOwned+1}**\nYou have currently equipped a **T{user.RodUsed+1}** rod");
|
string rodtype;
|
||||||
|
if (user.RodUsed == 0)
|
||||||
|
{
|
||||||
|
rodtype = "Basic";
|
||||||
|
}
|
||||||
|
else if (user.RodUsed == 1)
|
||||||
|
{
|
||||||
|
rodtype = "Reinforced";
|
||||||
|
}
|
||||||
|
else if (user.RodUsed == 2)
|
||||||
|
{
|
||||||
|
rodtype = "Spectral";
|
||||||
|
}
|
||||||
|
else if (user.RodUsed == 3)
|
||||||
|
{
|
||||||
|
rodtype = "Cosmic";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rodtype = "Currently unobtainable";
|
||||||
|
}
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have unlocked fishing rods up to **Tier {user.RodOwned+1}**\nYou have currently equipped a **{rodtype} Fishing Rod** (T{user.RodUsed+1}).");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[Command("setrod"),Summary("Set your fishing rod to the desired tier (for example: 'setrod 1' to set to default rod.)")]
|
[Command("setrod"),Summary("Set your fishing rod to the desired tier (for example: 'setrod 1' to set to default rod.)")]
|
||||||
public async Task SetRod(byte tier)
|
public async Task SetRod(byte tier)
|
||||||
{
|
{
|
||||||
|
if (tier < 1)
|
||||||
|
{
|
||||||
|
tier = 1;
|
||||||
|
}
|
||||||
|
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
var user = Database.Fishing.FirstOrDefault(x => x.Id == Context.User.Id);
|
var user = Database.Fishing.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
@@ -563,7 +706,7 @@ namespace Kehyeedra3.Commands
|
|||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own any fishing rods. Try **fishing**.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own any fishing rods. Try **fishing**.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (tier - 1 <= user.RodOwned)
|
if ((tier - 1) <= user.RodOwned)
|
||||||
{
|
{
|
||||||
user.RodUsed = Convert.ToByte(tier - 1);
|
user.RodUsed = Convert.ToByte(tier - 1);
|
||||||
string rodtype = "";
|
string rodtype = "";
|
||||||
@@ -587,16 +730,131 @@ namespace Kehyeedra3.Commands
|
|||||||
{
|
{
|
||||||
rodtype = "Currently unobtainable";
|
rodtype = "Currently unobtainable";
|
||||||
}
|
}
|
||||||
await Context.Channel.SendMessageAsync($"You are now using a **{rodtype} (T{tier})** rod");
|
await Context.Channel.SendMessageAsync($"You are now using a **{rodtype} Fishing Rod** (T{tier}).");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"You don't have that rod. You own rods up to **T{user.RodOwned+1}**");
|
await Context.Channel.SendMessageAsync($"You don't have that rod. You own rods up to **Tier {user.RodOwned+1}**.");
|
||||||
}
|
}
|
||||||
await Database.SaveChangesAsync().ConfigureAwait(false);
|
await Database.SaveChangesAsync().ConfigureAwait(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[Command("craft", RunMode = RunMode.Async), Alias("c"), Summary("Specify 'r' to refine ingredients.")]
|
||||||
|
public async Task Crafting(string option = null)
|
||||||
|
{
|
||||||
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
|
{
|
||||||
|
var fuser = Database.Fishing.FirstOrDefault(i => i.Id == Context.User.Id);
|
||||||
|
var user = Database.Users.FirstOrDefault(i => i.Id == Context.User.Id);
|
||||||
|
|
||||||
|
if (fuser == null || fuser.Lvl < 30)
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou can't craft anything yet.\nCome back when you reach **Lvl 30**.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var finv = fuser.GetInventory();
|
||||||
|
var items = user.GetGenInve();
|
||||||
|
|
||||||
|
if (!items.TryGetValue(Items.UpgradeT2, out int[] T2Up))
|
||||||
|
{
|
||||||
|
T2Up = new int[] { 0 };
|
||||||
|
items.Add(Items.UpgradeT2, T2Up);
|
||||||
|
}
|
||||||
|
if (!items.TryGetValue(Items.RodFrame, out int[] Rod))
|
||||||
|
{
|
||||||
|
Rod = new int[] { 0 };
|
||||||
|
items.Add(Items.RodFrame, Rod);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (option != null && option.ToLowerInvariant().Contains("r")) //finish this area up retard
|
||||||
|
{
|
||||||
|
|
||||||
|
var fish = finv.FirstOrDefault(f => f.Key == FishSpecies.LuckyCatfish).Value[(int)FishSize.Large];
|
||||||
|
if (fish < 1 || user.Money < 1000)
|
||||||
|
{
|
||||||
|
string missing = "";
|
||||||
|
if (fish < 1)
|
||||||
|
{
|
||||||
|
missing += "a **Lucky Catfish**";
|
||||||
|
}
|
||||||
|
if (fish < 1 && user.Money < 1000)
|
||||||
|
{
|
||||||
|
missing += " & ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
missing += " ";
|
||||||
|
}
|
||||||
|
if (user.Money < 1000)
|
||||||
|
{
|
||||||
|
missing += $"**{(1000 - user.Money).ToYeedraDisplay()}%**";
|
||||||
|
}
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou are missing {missing}.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nProcess 1 **Lucky Catfish** for **0.1000%**? \n(Owned: {fish})\n");
|
||||||
|
var inp = await NextMessageAsync();
|
||||||
|
if (inp.Content.ToLowerInvariant().Contains("yes"))
|
||||||
|
{
|
||||||
|
if (finv.TryGetValue(FishSpecies.LuckyCatfish, out int[] Fesh))
|
||||||
|
{
|
||||||
|
Fesh[2] -= 1;
|
||||||
|
T2Up[0] += 1;
|
||||||
|
}
|
||||||
|
user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), -1000);
|
||||||
|
user.SetGenInve(items);
|
||||||
|
fuser.SetInventory(finv);
|
||||||
|
await Database.SaveChangesAsync();
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have obtained **Lucky Paste**");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fuser.RodOwned > 0)
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou already have everything currently craftable.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (T2Up[0] != 0 && Rod[0] != 0)
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nDo you want to craft the **Reinforced Fishing Rod**?\nThis will use 1 **Lucky Paste** and 1 **Incomplete Rod**.");
|
||||||
|
var inp = await NextMessageAsync();
|
||||||
|
if (inp.Content != null && inp.Content.ToLowerInvariant().Contains("yes"))
|
||||||
|
{
|
||||||
|
T2Up[0] -= 1;
|
||||||
|
Rod[0] -= 1;
|
||||||
|
fuser.RodOwned += 1;
|
||||||
|
user.SetGenInve(items);
|
||||||
|
await Database.SaveChangesAsync();
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou have successfully crafted a **Reinforced Fishing Rod**, **;setrod 2** to use it.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nok retard.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string msg = "You are missing parts.\n";
|
||||||
|
if (T2Up[0] < 1)
|
||||||
|
{
|
||||||
|
msg += "**Lucky Paste**\n";
|
||||||
|
}
|
||||||
|
if (Rod[0] < 1)
|
||||||
|
{
|
||||||
|
msg += "**Incomplete Rod**";
|
||||||
|
}
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{msg}");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
[Command("fishinventory"), Alias("finv", "fishinv"), Summary("Shows the fish you have currently. Variables: fish tier")]
|
[Command("fishinventory"), Alias("finv", "fishinv"), Summary("Shows the fish you have currently. Variables: fish tier")]
|
||||||
public async Task FishInventory(int? tier = null, IGuildUser user = null)
|
public async Task FishInventory(int? tier = null, IGuildUser user = null)
|
||||||
{
|
{
|
||||||
@@ -639,6 +897,7 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
List<Fish> fishes = Fishing.GetFishList();
|
List<Fish> fishes = Fishing.GetFishList();
|
||||||
|
|
||||||
|
List<Fish> unrfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Unreasonable).ToList();
|
||||||
List<Fish> legfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Legendary).ToList();
|
List<Fish> legfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Legendary).ToList();
|
||||||
List<Fish> rarfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Rare).ToList();
|
List<Fish> rarfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Rare).ToList();
|
||||||
List<Fish> uncfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Uncommon).ToList();
|
List<Fish> uncfish = fishes.Where(f => (int)f.Rarity == (int)FishRarity.Uncommon).ToList();
|
||||||
@@ -680,6 +939,7 @@ namespace Kehyeedra3.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string unreasonable = "";
|
||||||
string legendary = "";
|
string legendary = "";
|
||||||
string rare = "";
|
string rare = "";
|
||||||
string uncommon = "";
|
string uncommon = "";
|
||||||
@@ -714,6 +974,10 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
fishtext += $" ]\n";
|
fishtext += $" ]\n";
|
||||||
|
|
||||||
|
if (unrfish.Any(f => f.Id == entry.Key))
|
||||||
|
{
|
||||||
|
unreasonable += $"{fishtext}";
|
||||||
|
}
|
||||||
if (legfish.Any(f => f.Id == entry.Key))
|
if (legfish.Any(f => f.Id == entry.Key))
|
||||||
{
|
{
|
||||||
legendary += $"{fishtext}";
|
legendary += $"{fishtext}";
|
||||||
@@ -732,6 +996,10 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
string locker = $"";
|
string locker = $"";
|
||||||
|
if (unreasonable != "")
|
||||||
|
{
|
||||||
|
locker += $"{unreasonable}\n";
|
||||||
|
}
|
||||||
if (legendary != "")
|
if (legendary != "")
|
||||||
{
|
{
|
||||||
locker += $"{legendary}\n";
|
locker += $"{legendary}\n";
|
||||||
@@ -777,13 +1045,17 @@ namespace Kehyeedra3.Commands
|
|||||||
user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
inv = user.GetGenInve();
|
inv = user.GetGenInve();
|
||||||
foreach (var entry in inv)
|
foreach (var entry in inv)
|
||||||
|
{
|
||||||
|
if (entry.Value[0] > 0)
|
||||||
{
|
{
|
||||||
item = items.FirstOrDefault(x => x.Id == entry.Key);
|
item = items.FirstOrDefault(x => x.Id == entry.Key);
|
||||||
message += $"**{item.Name}**: **{entry.Value[0]}**\n";
|
message += $"**{item.Name}**: **{entry.Value[0]}**\n";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{message}");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\n{message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
|
||||||
[Command("tradebuy", RunMode = RunMode.Async), Summary("Unfinished command")]
|
[Command("tradebuy", RunMode = RunMode.Async), Summary("Unfinished command")]
|
||||||
public async Task TradingBuy(int amount, string itemtype, int price, [Remainder] string item)
|
public async Task TradingBuy(int amount, string itemtype, int price, [Remainder] string item)
|
||||||
{
|
{
|
||||||
@@ -826,7 +1098,7 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
if (Database.StoreFronts.Any(x => x.StoreItemType == StoreItemType.Fish))
|
if (Database.StoreFronts.Any(x => x.StoreItemType == StoreItemType.Fish))
|
||||||
{
|
{
|
||||||
var stores = Database.StoreFronts.Where(x => x.StoreItemType == StoreItemType.Fish).ToList();
|
var stores = Database.StoreFronts.AsQueryable().Where(x => x.StoreItemType == StoreItemType.Fish).ToList();
|
||||||
|
|
||||||
stores.Shuffle();
|
stores.Shuffle();
|
||||||
|
|
||||||
@@ -864,6 +1136,7 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
|
||||||
[Command("tradesell"), Summary("Unfinished command")]
|
[Command("tradesell"), Summary("Unfinished command")]
|
||||||
public async Task TradingSell(int amount, string itemtype, int price, [Remainder] string item)
|
public async Task TradingSell(int amount, string itemtype, int price, [Remainder] string item)
|
||||||
{
|
{
|
||||||
@@ -910,6 +1183,7 @@ namespace Kehyeedra3.Commands
|
|||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nInvalid trade type. Come back when the error command is fixed lmaoy").ConfigureAwait(false);
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nInvalid trade type. Come back when the error command is fixed lmaoy").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[RequireRolePrecondition(AccessLevel.ServerAdmin)]
|
||||||
[Command("tradeoffers"), Summary("Unfinished command")]
|
[Command("tradeoffers"), Summary("Unfinished command")]
|
||||||
public async Task ShowOffers(bool localOffers = true)
|
public async Task ShowOffers(bool localOffers = true)
|
||||||
{
|
{
|
||||||
@@ -918,7 +1192,7 @@ namespace Kehyeedra3.Commands
|
|||||||
StringBuilder message = new StringBuilder();
|
StringBuilder message = new StringBuilder();
|
||||||
if (localOffers)
|
if (localOffers)
|
||||||
{
|
{
|
||||||
var stores = database.StoreFronts.Where(x => x.UserId == Context.User.Id);
|
var stores = database.StoreFronts.AsQueryable().Where(x => x.UserId == Context.User.Id);
|
||||||
|
|
||||||
foreach(var store in stores)
|
foreach(var store in stores)
|
||||||
{
|
{
|
||||||
@@ -1016,7 +1290,7 @@ namespace Kehyeedra3.Commands
|
|||||||
User skuld;
|
User skuld;
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
users = Database.Users.OrderByDescending(user => user.Money).ToList();
|
users = Database.Users.AsQueryable().OrderByDescending(user => user.Money).ToList();
|
||||||
bank = Database.Users.FirstOrDefault(x => x.Id == 0);
|
bank = Database.Users.FirstOrDefault(x => x.Id == 0);
|
||||||
skuld = Database.Users.FirstOrDefault(x => x.Id == 1);
|
skuld = Database.Users.FirstOrDefault(x => x.Id == 1);
|
||||||
}
|
}
|
||||||
@@ -1039,7 +1313,7 @@ namespace Kehyeedra3.Commands
|
|||||||
List<Fishing> users;
|
List<Fishing> users;
|
||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
users = Database.Fishing.OrderByDescending(user => user.TXp).ToList();
|
users = Database.Fishing.AsQueryable().OrderByDescending(user => user.TXp).ToList();
|
||||||
string leaderboardMessage = "**Top Ten Smelliest Fishermen**:";
|
string leaderboardMessage = "**Top Ten Smelliest Fishermen**:";
|
||||||
int placing = 0;
|
int placing = 0;
|
||||||
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
@@ -1151,7 +1425,7 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou were added to database.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou were added to the database.");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1191,10 +1465,15 @@ namespace Kehyeedra3.Commands
|
|||||||
var muser = database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
var muser = database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
string pres = "";
|
string pres = "";
|
||||||
double cawe = 0;
|
double cawe = 0;
|
||||||
if (user.Prestige > 0)
|
if (user.Prestige == 1)
|
||||||
{
|
{
|
||||||
pres = $" +{user.Prestige}P";
|
pres = $" +{user.Prestige}P";
|
||||||
cawe = 500;
|
cawe = 500 + user.Lvl * 3d;
|
||||||
|
}
|
||||||
|
else if (user.Prestige > 1)
|
||||||
|
{
|
||||||
|
pres = $" +{user.Prestige}P";
|
||||||
|
cawe = 800;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -131,5 +131,16 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[Command("serverinv"), Summary("Invite to bot server (mainly used for assets)")]
|
||||||
|
public async Task BotServerInvite()
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync("discord.gg/DAW53N9");
|
||||||
|
}
|
||||||
|
[Command("botinv"), Summary("Post the bot invite link")]
|
||||||
|
public async Task BotInvite()
|
||||||
|
{
|
||||||
|
await Context.Channel.SendMessageAsync("Main bot: https://discordapp.com/api/oauth2/authorize?client_id=303457448168128519&scope=bot&permissions=0 \n" +
|
||||||
|
"Test bot: https://discordapp.com/api/oauth2/authorize?client_id=319942676319436810&scope=bot&permissions=0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ using System.Collections.ObjectModel;
|
|||||||
using System.IO.Enumeration;
|
using System.IO.Enumeration;
|
||||||
using System.IO.IsolatedStorage;
|
using System.IO.IsolatedStorage;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection.Metadata;
|
||||||
|
using System.Security.Cryptography;
|
||||||
using System.Security.Cryptography.X509Certificates;
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Channels;
|
using System.Threading.Channels;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ImageMagick;
|
||||||
|
|
||||||
namespace Kehyeedra3.Commands
|
namespace Kehyeedra3.Commands
|
||||||
{
|
{
|
||||||
@@ -32,7 +35,7 @@ namespace Kehyeedra3.Commands
|
|||||||
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
using (var Database = new ApplicationDbContextFactory().CreateDbContext())
|
||||||
{
|
{
|
||||||
var user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
var user = Database.Users.FirstOrDefault(x => x.Id == Context.User.Id);
|
||||||
var userfish = Database.Battlefish.Where(x => x.UserId == Context.User.Id);
|
var userfish = Database.Battlefish.AsQueryable().Where(x => x.UserId == Context.User.Id);
|
||||||
|
|
||||||
int attb = 0;
|
int attb = 0;
|
||||||
int defb = 0;
|
int defb = 0;
|
||||||
@@ -47,12 +50,12 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var fish = userfish.FirstOrDefault(x => x.FishType == user.CurrentBattlefish);
|
var ufish = userfish.FirstOrDefault(x => x.FishType == user.CurrentBattlefish);
|
||||||
if (fish == null)
|
if (ufish == null)
|
||||||
{
|
{
|
||||||
fish = userfish.FirstOrDefault();
|
ufish = userfish.FirstOrDefault();
|
||||||
}
|
}
|
||||||
switch (fish.FishType)
|
switch (ufish.FishType)
|
||||||
{
|
{
|
||||||
case Services.Models.BattleFish.Herring:
|
case Services.Models.BattleFish.Herring:
|
||||||
{
|
{
|
||||||
@@ -104,76 +107,6 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
string bfishlist = "";
|
string bfishlist = "";
|
||||||
|
|
||||||
if (opt == "change" || opt == "c")
|
|
||||||
{
|
|
||||||
string bfishlistname = "";
|
|
||||||
foreach (var fesh in userfish)
|
|
||||||
{
|
|
||||||
string prefix = "Hatchling";
|
|
||||||
string suffix = "";
|
|
||||||
|
|
||||||
if (fesh.Lvl >= 15)
|
|
||||||
{
|
|
||||||
prefix = "Young";
|
|
||||||
}
|
|
||||||
if (fesh.Lvl >= 30)
|
|
||||||
{
|
|
||||||
prefix = "Adolescent";
|
|
||||||
}
|
|
||||||
if (fesh.Lvl >= 50)
|
|
||||||
{
|
|
||||||
prefix = "Adult";
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ((int)fesh.FishType)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
if (fesh.Lvl >= 100)
|
|
||||||
{
|
|
||||||
bfishlistname += $"ton";
|
|
||||||
suffix = $"Authentic Masculine";
|
|
||||||
}
|
|
||||||
bfishlistname = $"{prefix} Herring{suffix}";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
if (fesh.Lvl >= 100)
|
|
||||||
{
|
|
||||||
prefix = $"Great Sage";
|
|
||||||
}
|
|
||||||
bfishlistname = $"{prefix} Birgus";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
if (fesh.Lvl >= 100)
|
|
||||||
{
|
|
||||||
prefix = $"President";
|
|
||||||
}
|
|
||||||
bfishlistname = $"{prefix} Abama";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
if (fesh.Lvl >= 100)
|
|
||||||
{
|
|
||||||
suffix += $" XTREME";
|
|
||||||
prefix = $"Hardboiled";
|
|
||||||
}
|
|
||||||
bfishlistname = $"{prefix} Pistashrimp{suffix}";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
bfishlist += $"{(byte)fesh.FishType} : LVL {fesh.Lvl} {bfishlistname}\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (option == null)
|
|
||||||
{
|
|
||||||
var fish = userfish.FirstOrDefault(x => x.FishType == user.CurrentBattlefish);
|
var fish = userfish.FirstOrDefault(x => x.FishType == user.CurrentBattlefish);
|
||||||
if (fish == null)
|
if (fish == null)
|
||||||
{
|
{
|
||||||
@@ -187,7 +120,6 @@ namespace Kehyeedra3.Commands
|
|||||||
|
|
||||||
double lvm = 20;
|
double lvm = 20;
|
||||||
double lvmhp = 100;
|
double lvmhp = 100;
|
||||||
int lvdf = 5;
|
|
||||||
|
|
||||||
for (int i = 0; i < fish.Lvl; i++)
|
for (int i = 0; i < fish.Lvl; i++)
|
||||||
{
|
{
|
||||||
@@ -198,12 +130,13 @@ namespace Kehyeedra3.Commands
|
|||||||
int lvlmhp = Convert.ToInt32(lvmhp) / 10;
|
int lvlmhp = Convert.ToInt32(lvmhp) / 10;
|
||||||
|
|
||||||
int att = lvlm * attb;
|
int att = lvlm * attb;
|
||||||
int def = lvdf * defb;
|
int def = 5 * defb;
|
||||||
int hp = lvlmhp * hpb;
|
int hp = lvlmhp * hpb;
|
||||||
int ap = lvlmhp * apb;
|
int ap = lvlmhp * apb;
|
||||||
int dg = lvlm * dgb;
|
int dg = dgb;
|
||||||
|
|
||||||
string prefix = "Hatchling";
|
string prefix = "Hatchling";
|
||||||
|
string stats = "";
|
||||||
|
|
||||||
if (fish.Lvl >= 15)
|
if (fish.Lvl >= 15)
|
||||||
{
|
{
|
||||||
@@ -341,13 +274,86 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
message.AppendLine($"LVL {fish.Lvl} **{prefix} {species}**\nName: **{fish.Name}**\nStats: **ATK : {att} DEF : {def}% HP : {hp} AP : {ap}**\nActions:\n{attacks}\n\n");
|
stats = $"LVL {fish.Lvl} **{prefix} {species}**\nName: **{fish.Name}**\nStats: **ATK : {att} DEF : {def}% HP : {hp} AP : {ap}**\nActions:\n{attacks}\n\n";
|
||||||
|
|
||||||
await Context.Channel.SendMessageAsync(message.ToString());
|
if (opt == "")
|
||||||
}
|
|
||||||
else if (option == "name" && sec != null || option == "n" && sec != null)
|
|
||||||
{
|
{
|
||||||
var fish = userfish.FirstOrDefault(x => x.FishType == user.CurrentBattlefish);
|
message.AppendLine(stats);
|
||||||
|
await Context.Channel.SendMessageAsync(message.ToString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opt == "change" || opt == "c")
|
||||||
|
{
|
||||||
|
string bfishlistname = "";
|
||||||
|
foreach (var fesh in userfish)
|
||||||
|
{
|
||||||
|
prefix = "Hatchling";
|
||||||
|
string suffix = "";
|
||||||
|
|
||||||
|
if (fesh.Lvl >= 15)
|
||||||
|
{
|
||||||
|
prefix = "Young";
|
||||||
|
}
|
||||||
|
if (fesh.Lvl >= 30)
|
||||||
|
{
|
||||||
|
prefix = "Adolescent";
|
||||||
|
}
|
||||||
|
if (fesh.Lvl >= 50)
|
||||||
|
{
|
||||||
|
prefix = "Adult";
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ((int)fesh.FishType)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
if (fesh.Lvl >= 100)
|
||||||
|
{
|
||||||
|
bfishlistname += $"ton";
|
||||||
|
suffix = $"Authentic Masculine";
|
||||||
|
}
|
||||||
|
bfishlistname = $"{prefix} Herring{suffix}";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
if (fesh.Lvl >= 100)
|
||||||
|
{
|
||||||
|
prefix = $"Great Sage";
|
||||||
|
}
|
||||||
|
bfishlistname = $"{prefix} Birgus";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
if (fesh.Lvl >= 100)
|
||||||
|
{
|
||||||
|
prefix = $"President";
|
||||||
|
}
|
||||||
|
bfishlistname = $"{prefix} Abama";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
if (fesh.Lvl >= 100)
|
||||||
|
{
|
||||||
|
suffix += $" XTREME";
|
||||||
|
prefix = $"Hardboiled";
|
||||||
|
}
|
||||||
|
bfishlistname = $"{prefix} Pistashrimp{suffix}";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bfishlist += $"{(byte)fesh.FishType} : LVL {fesh.Lvl} {bfishlistname}\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (option == "name" && sec != null || option == "n" && sec != null)
|
||||||
|
{
|
||||||
|
|
||||||
if (fish == null)
|
if (fish == null)
|
||||||
{
|
{
|
||||||
fish = userfish.FirstOrDefault();
|
fish = userfish.FirstOrDefault();
|
||||||
@@ -400,7 +406,7 @@ namespace Kehyeedra3.Commands
|
|||||||
await Context.Channel.SendMessageAsync($"Sorry **{Context.User.Mention}**, I can't give credit.\nCome back when you're a little, ***mmmmm***, richer.\n*You're missing {(500 - user.Money)/10000d}%.*");
|
await Context.Channel.SendMessageAsync($"Sorry **{Context.User.Mention}**, I can't give credit.\nCome back when you're a little, ***mmmmm***, richer.\n*You're missing {(500 - user.Money)/10000d}%.*");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string species = "";
|
|
||||||
switch ((int)rep)
|
switch ((int)rep)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
@@ -502,6 +508,36 @@ namespace Kehyeedra3.Commands
|
|||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own that.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nYou don't own that.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (option == "combat" || option == "cb")
|
||||||
|
{
|
||||||
|
int eatt = 10;
|
||||||
|
int edf = 0;
|
||||||
|
int edg = 5;
|
||||||
|
int a1 = 0;
|
||||||
|
int d1 = 0;
|
||||||
|
int d2 = 0;
|
||||||
|
bool eturn = false;
|
||||||
|
if (sec == "enemy")
|
||||||
|
{
|
||||||
|
eturn = true;
|
||||||
|
}
|
||||||
|
if (eturn)
|
||||||
|
{
|
||||||
|
a1 = eatt;
|
||||||
|
d1 = def;
|
||||||
|
d2 = dg;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a1 = att;
|
||||||
|
d1 = edf;
|
||||||
|
d2 = edg;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dmg = CalculateDamage(a1, d1, d2);
|
||||||
|
await Context.Channel.SendMessageAsync($"Damage is **{dmg}**");
|
||||||
|
//await Context.Channel.SendMessageAsync($"*Combat test yeah baby*\nYour stats:\n**ATK : {att} DEF : {def}% HP : {hp} AP : {ap}**\nActions:\n{attacks}\n");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nAre you confused? Try **bf help** if you are having trouble with your bf.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nAre you confused? Try **bf help** if you are having trouble with your bf.");
|
||||||
@@ -510,6 +546,26 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int CalculateDamage(int a1, int d1, int d2)
|
||||||
|
{
|
||||||
|
|
||||||
|
int roll = SRandom.Next(5, 11);
|
||||||
|
int rolldg = SRandom.Next(0, 11);
|
||||||
|
if (roll == 10)
|
||||||
|
{
|
||||||
|
a1 *= 2;
|
||||||
|
}
|
||||||
|
if (rolldg * d2 >= 50)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ((a1 * roll) / 10 - (a1 * d1 / 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
[Command("gstore", RunMode = RunMode.Async),Alias("gs")]
|
[Command("gstore", RunMode = RunMode.Async),Alias("gs")]
|
||||||
public async Task GeneralStore(string input = null)
|
public async Task GeneralStore(string input = null)
|
||||||
{
|
{
|
||||||
@@ -550,9 +606,12 @@ namespace Kehyeedra3.Commands
|
|||||||
string itemtxt = "";
|
string itemtxt = "";
|
||||||
|
|
||||||
foreach (User.Item i in itemlist)
|
foreach (User.Item i in itemlist)
|
||||||
|
{
|
||||||
|
if ((int)i.Id < 200)
|
||||||
{
|
{
|
||||||
itemtxt += $"{(int)i.Id} : {i.Name} for {((long)i.Price).ToYeedraDisplay()}%\n";
|
itemtxt += $"{(int)i.Id} : {i.Name} for {((long)i.Price).ToYeedraDisplay()}%\n";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (input != null)
|
if (input != null)
|
||||||
{
|
{
|
||||||
@@ -565,11 +624,11 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
else if (input == "b" || input == "buy")
|
else if (input == "b" || input == "buy")
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the item.\n{itemtxt}");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nWhich item?\n{itemtxt}");
|
||||||
var inp = await NextMessageAsync();
|
var inp = await NextMessageAsync();
|
||||||
|
|
||||||
item = itemlist.FirstOrDefault(i => (int)i.Id == int.Parse(inp.Content));
|
item = itemlist.FirstOrDefault(i => (int)i.Id == int.Parse(inp.Content));
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the amount.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nHow many?");
|
||||||
inp = await NextMessageAsync();
|
inp = await NextMessageAsync();
|
||||||
|
|
||||||
items = user.GetGenInve();
|
items = user.GetGenInve();
|
||||||
@@ -585,19 +644,22 @@ namespace Kehyeedra3.Commands
|
|||||||
if (int.Parse(inp.Content) * item.Price <= user.Money)
|
if (int.Parse(inp.Content) * item.Price <= user.Money)
|
||||||
{
|
{
|
||||||
amount[0] += int.Parse(inp.Content);
|
amount[0] += int.Parse(inp.Content);
|
||||||
|
int count = int.Parse(inp.Content);
|
||||||
|
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nThis will cost you {count * item.Price}.\nType 'ok' to confirm.");
|
||||||
|
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nThis will cost you {ulong.Parse(inp.Content) * (ulong)item.Price}.\nType 'ok' to confirm.");
|
|
||||||
inp = await NextMessageAsync();
|
inp = await NextMessageAsync();
|
||||||
if (inp.Content.ToLowerInvariant() == "ok")
|
if (inp.Content.ToLowerInvariant() == "ok")
|
||||||
{
|
{
|
||||||
if (!user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), -(amount[0] * item.Price)))
|
if (!user.GrantMoney(Database.Users.FirstOrDefault(x => x.Id == 0), -(count * item.Price)))
|
||||||
{
|
{
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBank has no money, convince someone to gamble.");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBank has no money, convince someone to gamble.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
user.SetGenInve(items);
|
user.SetGenInve(items);
|
||||||
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBought {count} of {item.Name}.");
|
||||||
await Database.SaveChangesAsync();
|
await Database.SaveChangesAsync();
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nBought {int.Parse(inp.Content)} of {item.Name}.");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -724,15 +786,34 @@ namespace Kehyeedra3.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the item.\n\n{locker}");
|
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the item, size, and amount. (ID size amount)\n\n{locker}");
|
||||||
inp = await NextMessageAsync();
|
inp = await NextMessageAsync(timeout: TimeSpan.FromMinutes(2));
|
||||||
fish = fishes.FirstOrDefault(i => (int)i.Id == int.Parse(inp.Content));
|
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the size. 0 = small, 1 = medium, 2 = large\n");
|
var inpsep = inp.Content.Split(" ");
|
||||||
inp = await NextMessageAsync();
|
int siz = 0;
|
||||||
size = (FishSize)int.Parse(inp.Content);
|
switch (inpsep[1].ToString().ToLowerInvariant())
|
||||||
await Context.Channel.SendMessageAsync($"{Context.User.Mention}\nSpecify the amount.\n");
|
{
|
||||||
inp = await NextMessageAsync();
|
case "s":
|
||||||
int amount = int.Parse(inp.Content);
|
{
|
||||||
|
siz = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "m":
|
||||||
|
{
|
||||||
|
siz = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "l":
|
||||||
|
{
|
||||||
|
siz = 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fish = fishes.FirstOrDefault(i => (int)i.Id == int.Parse(inpsep[0]));
|
||||||
|
size = (FishSize)siz;
|
||||||
|
int amount = int.Parse(inpsep[2]);
|
||||||
|
|
||||||
int amountcheck = fishinv.FirstOrDefault(f => f.Key == fish.Id).Value[(int)size];
|
int amountcheck = fishinv.FirstOrDefault(f => f.Key == fish.Id).Value[(int)size];
|
||||||
if (amountcheck < amount)
|
if (amountcheck < amount)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ImageMagick;
|
||||||
|
|
||||||
namespace Kehyeedra3.Commands
|
namespace Kehyeedra3.Commands
|
||||||
{
|
{
|
||||||
@@ -322,5 +323,6 @@ namespace Kehyeedra3.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Kehyeedra3
|
namespace Kehyeedra3
|
||||||
{
|
{
|
||||||
@@ -21,6 +24,7 @@ namespace Kehyeedra3
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//https://stackoverflow.com/a/1262619
|
//https://stackoverflow.com/a/1262619
|
||||||
public static void Shuffle<T>(this IList<T> list)
|
public static void Shuffle<T>(this IList<T> list)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,14 +8,15 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Discord.Addons.Interactive" Version="1.0.1" />
|
<PackageReference Include="Discord.Addons.Interactive" Version="2.0.0" />
|
||||||
<PackageReference Include="Discord.Net" Version="2.1.1" />
|
<PackageReference Include="Discord.Net" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.2" />
|
<PackageReference Include="dotenv.net" Version="2.1.3" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.2">
|
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.22.2.2" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.11">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
|
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.2.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
85
Kehyeedra3/Services/Models/BattleFishCharacters.cs
Normal file
85
Kehyeedra3/Services/Models/BattleFishCharacters.cs
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Kehyeedra3.Services.Models
|
||||||
|
{
|
||||||
|
public class BattleFishCharacters
|
||||||
|
{
|
||||||
|
public enum Character
|
||||||
|
{
|
||||||
|
Null = 0,
|
||||||
|
HoboShrimp = 1,
|
||||||
|
PocketSalmon = 2,
|
||||||
|
Holder2 = 3,
|
||||||
|
Holder3 = 4
|
||||||
|
}
|
||||||
|
|
||||||
|
public class BFCharacter
|
||||||
|
{
|
||||||
|
public Character Id;
|
||||||
|
public string Name;
|
||||||
|
public string Emote;
|
||||||
|
public string Intro;
|
||||||
|
|
||||||
|
public int Attack;
|
||||||
|
public int Defense;
|
||||||
|
|
||||||
|
public int BaseHealth;
|
||||||
|
public int BaseActionPoints;
|
||||||
|
|
||||||
|
public int DodgeRate;
|
||||||
|
}
|
||||||
|
public static List<BFCharacter> GetBFCharList()
|
||||||
|
{
|
||||||
|
return new List<BFCharacter>
|
||||||
|
{
|
||||||
|
new BFCharacter()
|
||||||
|
{
|
||||||
|
Id = Character.Null,
|
||||||
|
Name = "Secret Squirrel",
|
||||||
|
Emote = "<:skirel:762643322254393364>",
|
||||||
|
Intro = "He looks defeated.",
|
||||||
|
|
||||||
|
Attack = 5,
|
||||||
|
Defense = 0,
|
||||||
|
|
||||||
|
BaseHealth = 25,
|
||||||
|
BaseActionPoints = 0,
|
||||||
|
|
||||||
|
DodgeRate = 0
|
||||||
|
},
|
||||||
|
new BFCharacter()
|
||||||
|
{
|
||||||
|
Id = Character.HoboShrimp,
|
||||||
|
Name = "Hobo Shrimp",
|
||||||
|
Emote = "<:missingLeg:682586847830081551>",
|
||||||
|
Intro = "He's been a little down on his luck lately.",
|
||||||
|
|
||||||
|
Attack = 5,
|
||||||
|
Defense = 5,
|
||||||
|
|
||||||
|
BaseHealth = 5,
|
||||||
|
BaseActionPoints = 5,
|
||||||
|
|
||||||
|
DodgeRate = 5
|
||||||
|
},
|
||||||
|
new BFCharacter()
|
||||||
|
{
|
||||||
|
Id = Character.PocketSalmon,
|
||||||
|
Name = "Pocket Salmon",
|
||||||
|
Emote = "<:missingLeg:682586847830081551>",
|
||||||
|
Intro = "I pray your pockets don't have holes.",
|
||||||
|
|
||||||
|
Attack = 5,
|
||||||
|
Defense = 5,
|
||||||
|
|
||||||
|
BaseHealth = 5,
|
||||||
|
BaseActionPoints = 5,
|
||||||
|
|
||||||
|
DodgeRate = 5
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,7 +15,7 @@ namespace Kehyeedra3.Services.Models
|
|||||||
Common, Uncommon, Rare, Legendary,
|
Common, Uncommon, Rare, Legendary,
|
||||||
T2Rare, T2Legendary, T2Uncommon, T2Common,
|
T2Rare, T2Legendary, T2Uncommon, T2Common,
|
||||||
T3Rare, T3Legendary, T3Uncommon, T3Common,
|
T3Rare, T3Legendary, T3Uncommon, T3Common,
|
||||||
T4Rare, T4Legendary, T4Uncommon, T4Common
|
T4Rare, T4Legendary, T4Uncommon, T4Common, Unreasonable
|
||||||
}
|
}
|
||||||
public class Fish
|
public class Fish
|
||||||
{
|
{
|
||||||
@@ -58,6 +58,13 @@ namespace Kehyeedra3.Services.Models
|
|||||||
{
|
{
|
||||||
return new List<Fish>
|
return new List<Fish>
|
||||||
{
|
{
|
||||||
|
new Fish()
|
||||||
|
{
|
||||||
|
Id = FishSpecies.Wakasagihime,
|
||||||
|
Name = "Touhoufish",
|
||||||
|
Emote = "<:wakasagihime:793084118949691433><:emptyslot:709350723199959101>",
|
||||||
|
Rarity = FishRarity.Unreasonable
|
||||||
|
},
|
||||||
new Fish()
|
new Fish()
|
||||||
{
|
{
|
||||||
Id = FishSpecies.LuckyCatfish,
|
Id = FishSpecies.LuckyCatfish,
|
||||||
@@ -194,9 +201,9 @@ namespace Kehyeedra3.Services.Models
|
|||||||
|
|
||||||
new Fish() //// Tier 2
|
new Fish() //// Tier 2
|
||||||
{
|
{
|
||||||
Id = FishSpecies.T2Circusfish,
|
Id = FishSpecies.T2Leg,
|
||||||
Name = "Circusfish",
|
Name = "Hypnofish",
|
||||||
Emote = "<:missingLeg:682586847830081551>",
|
Emote = "<:paska:786244602440450109><:hypnoosi:786244623478947841>",
|
||||||
Rarity = FishRarity.T2Legendary
|
Rarity = FishRarity.T2Legendary
|
||||||
},
|
},
|
||||||
new Fish()
|
new Fish()
|
||||||
@@ -210,7 +217,7 @@ namespace Kehyeedra3.Services.Models
|
|||||||
{
|
{
|
||||||
Id = FishSpecies.T2Gunfish,
|
Id = FishSpecies.T2Gunfish,
|
||||||
Name = "Gunfish",
|
Name = "Gunfish",
|
||||||
Emote = "<:missingLeg:682586847830081551>",
|
Emote = "<:gunfishleft:793492588799590460><:gunfishright:793492625277714442>",
|
||||||
Rarity = FishRarity.T2Uncommon
|
Rarity = FishRarity.T2Uncommon
|
||||||
},
|
},
|
||||||
new Fish()
|
new Fish()
|
||||||
@@ -285,6 +292,8 @@ namespace Kehyeedra3.Services.Models
|
|||||||
|
|
||||||
public enum FishSpecies
|
public enum FishSpecies
|
||||||
{
|
{
|
||||||
|
//unreasonable
|
||||||
|
Wakasagihime = 0,
|
||||||
//legendary
|
//legendary
|
||||||
LuckyCatfish = 1,
|
LuckyCatfish = 1,
|
||||||
//rare
|
//rare
|
||||||
@@ -309,7 +318,7 @@ namespace Kehyeedra3.Services.Models
|
|||||||
Carp = 18,
|
Carp = 18,
|
||||||
Megacrab = 19,
|
Megacrab = 19,
|
||||||
//T2 Legendary
|
//T2 Legendary
|
||||||
T2Circusfish = 20,
|
T2Leg = 20,
|
||||||
//T2 Rare
|
//T2 Rare
|
||||||
T2Swolefish = 21,
|
T2Swolefish = 21,
|
||||||
//T2 Uncommon
|
//T2 Uncommon
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace Kehyeedra3.Services.Models
|
|||||||
|
|
||||||
public bool GrantMoney(User bank, long amount)
|
public bool GrantMoney(User bank, long amount)
|
||||||
{
|
{
|
||||||
if(bank.Money > amount)
|
if(bank.Money >= amount)
|
||||||
{
|
{
|
||||||
Money += amount;
|
Money += amount;
|
||||||
bank.Money -= amount;
|
bank.Money -= amount;
|
||||||
@@ -55,15 +55,60 @@ namespace Kehyeedra3.Services.Models
|
|||||||
new Item()
|
new Item()
|
||||||
{
|
{
|
||||||
Id = Items.DirtyBoot,
|
Id = Items.DirtyBoot,
|
||||||
Name = "Lan's Love",
|
Name = "Love",
|
||||||
Price = 100
|
Price = 100
|
||||||
},
|
},
|
||||||
new Item()
|
new Item()
|
||||||
{
|
{
|
||||||
Id = Items.Lettuce,
|
Id = Items.Lettuce,
|
||||||
Name = "Lettuce",
|
Name = "Learning Lettuce",
|
||||||
Price = 50
|
Price = 50
|
||||||
}
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.RareBait,
|
||||||
|
Name = "Rare Bait",
|
||||||
|
Price = 50
|
||||||
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.BigBait,
|
||||||
|
Name = "Big Bait",
|
||||||
|
Price = 20
|
||||||
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.SpecialBait,
|
||||||
|
Name = "Master Bait",
|
||||||
|
Price = 100
|
||||||
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.RodFrame,
|
||||||
|
Name = "Incomplete Rod",
|
||||||
|
Price = 500
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.UpgradeT2,
|
||||||
|
Name = "Lucky Paste",
|
||||||
|
Price = 1000
|
||||||
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.UpgradeT3,
|
||||||
|
Name = "T2 Scraps",
|
||||||
|
Price = 2000
|
||||||
|
},
|
||||||
|
new Item()
|
||||||
|
{
|
||||||
|
Id = Items.UpgradeT4,
|
||||||
|
Name = "T3 Cream",
|
||||||
|
Price = 4000
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public class Item
|
public class Item
|
||||||
@@ -98,7 +143,16 @@ namespace Kehyeedra3.Services.Models
|
|||||||
public enum Items
|
public enum Items
|
||||||
{
|
{
|
||||||
DirtyBoot = 0,
|
DirtyBoot = 0,
|
||||||
Lettuce = 1
|
Lettuce = 1,
|
||||||
|
RareBait = 2,
|
||||||
|
BigBait = 3,
|
||||||
|
SpecialBait = 4,
|
||||||
|
RodFrame = 5,
|
||||||
|
|
||||||
|
|
||||||
|
UpgradeT2 = 200,
|
||||||
|
UpgradeT3 = 201,
|
||||||
|
UpgradeT4 = 202,
|
||||||
}
|
}
|
||||||
public class ItemSlot
|
public class ItemSlot
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace Kehyeedra3.Services
|
|||||||
}
|
}
|
||||||
catch { await (await Bot._bot.GetUser(242040333309837327).GetOrCreateDMChannelAsync()).SendMessageAsync($"Time of error ^\n" +
|
catch { await (await Bot._bot.GetUser(242040333309837327).GetOrCreateDMChannelAsync()).SendMessageAsync($"Time of error ^\n" +
|
||||||
$"A fucky wucky has occurred, uwu\nFix wemindew sewwis dimwiwt" +
|
$"A fucky wucky has occurred, uwu\nFix wemindew sewwis dimwiwt" +
|
||||||
$"\nThis was the reminder: {reminder.Id} {reminder.UserId} {reminder.Send.FromYeedraStamp()}"); }
|
$"\nThis was the reminder: {reminder.Id} \nto: {reminder.UserId} \ntime: {reminder.Send.FromYeedraStamp()}"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Tick()
|
public async Task Tick()
|
||||||
|
|||||||
Reference in New Issue
Block a user