diff options
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/EnchantCommand.java')
| -rw-r--r-- | src/main/java/net/uomc/mineshaft/EnchantCommand.java | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/src/main/java/net/uomc/mineshaft/EnchantCommand.java b/src/main/java/net/uomc/mineshaft/EnchantCommand.java index f85c92b..f147636 100644 --- a/src/main/java/net/uomc/mineshaft/EnchantCommand.java +++ b/src/main/java/net/uomc/mineshaft/EnchantCommand.java @@ -15,7 +15,7 @@ public class EnchantCommand extends DetailedCommand { private static final String COMMAND_IMAGE = "https://minecraft.wiki/images/Enchanting_Table.gif"; private static final double MIN_DISCOUNT = 0.4; - private static final double MAX_BOOKSHELVES = 24; + private static final long MAX_BOOKSHELVES = 24; private static final String COMMAND_TITLE = "Enchanting Table"; Mineshaft bot; @@ -42,20 +42,20 @@ public class EnchantCommand extends DetailedCommand { } int fortune = bot.getPickaxes().getPickaxeFortune(e.getMember()); + int efficiency = bot.getPickaxes().getPickaxeEfficiency(e.getMember()); long bookshelves = bot.getItem(e.getMember(), MineshaftItem.BOOKSHELF); String bookshelfDiscountPercent = "-" + (int) Math.ceil((1 -bookshelfDiscount(bookshelves))*100) + "%"; - long xpLevel = getXpLevel(fortune, bookshelves); - long lapisLevel = getLapisLevel(fortune, bookshelves); - long xpLevelNormal = getXpLevel(fortune, 0); - long lapisLevelNormal = getLapisLevel(fortune, 0); + long xpLevel = getXpLevel(fortune+efficiency, bookshelves); + long lapisLevel = getLapisLevel(fortune+efficiency, bookshelves); - String curr = ""; - if (fortune > 0) { - curr = "Your pickaxe has **Fortune " + Pickaxes.getRomanNumber(fortune) + "**\n\n"; - } + long xpLevelNormal = getXpLevel(fortune+efficiency, 0); + long lapisLevelNormal = getLapisLevel(fortune+efficiency, 0); + + String curr = "Your pickaxe " + getPickaxeEnchantmentsString(fortune, efficiency); + curr += "\n\n"; - String description = curr + "Enchant your pickaxe with `" + b.getPrefixManager().getPrefix(e.getGuild()) + "enchant fortune`\n\n"; + String description = curr + "Enchant your pickaxe with `" + b.getPrefixManager().getPrefix(e.getGuild()) + "enchant pickaxe`\n\n"; description += "**Cost:**\n"; @@ -89,24 +89,44 @@ public class EnchantCommand extends DetailedCommand { e.getMessage().replyEmbeds(em.build()).queue(); } + public String getPickaxeEnchantmentsString(int fortune, int efficiency) { + String curr = ""; + if (fortune > 0 || efficiency > 0) { + curr = "is enchanted with "; + if (fortune > 0) + curr += "**Fortune " + Pickaxes.getRomanNumber(fortune) + "** "; + if (efficiency > 0) + curr += "**Efficiency " + Pickaxes.getRomanNumber(efficiency) + "** "; + } else { + curr = "has no enchantments"; + } + return curr; + } + private long getLapisLevel(int fortune, long bookshelves) { return (long) (Math.pow(2, fortune + 4) * bookshelfDiscount(bookshelves)); } + private long getXpLevel(int fortune, long bookshelves) { + return (long) (15000l * Math.pow(fortune + 1, 2) * bookshelfDiscount(bookshelves)); + } + private double bookshelfDiscount(long bookshelves) { double b = Math.min(bookshelves, MAX_BOOKSHELVES); - return MIN_DISCOUNT + Math.log10( 1.0 + (9.0 * ((MAX_BOOKSHELVES - b) / MAX_BOOKSHELVES))) * MIN_DISCOUNT; + return MIN_DISCOUNT + Math.log( + 1.0 + ( (Math.E - 1) * ( + (double) (MAX_BOOKSHELVES - b) / (double) MAX_BOOKSHELVES)) + ) * (double) (1-MIN_DISCOUNT); } - private long getXpLevel(int fortune, long bookshelves) { - return (long) (15000l * Math.pow(fortune + 1, 2) * bookshelfDiscount(bookshelves)); - } private void enchant(MessageReceivedEvent e, String[] args) { int fortune = bot.getPickaxes().getPickaxeFortune(e.getMember()); + int efficiency = bot.getPickaxes().getPickaxeEfficiency(e.getMember()); + long bookshelves = bot.getItem(e.getMember(), MineshaftItem.BOOKSHELF); - long xpLevel = getXpLevel(fortune, bookshelves); - long lapisLevel = getLapisLevel(fortune, bookshelves); + long xpLevel = getXpLevel(fortune + efficiency, bookshelves); + long lapisLevel = getLapisLevel(fortune + efficiency, bookshelves); long memberLapis = bot.getItem(e.getMember(), MineshaftItem.LAPIS); long memberXp = bot.getItem(e.getMember(), MineshaftItem.XP); @@ -123,10 +143,16 @@ public class EnchantCommand extends DetailedCommand { bot.removeItem(e.getMember(), MineshaftItem.LAPIS, lapisLevel); bot.removeItem(e.getMember(), MineshaftItem.XP, xpLevel); - int level = bot.getPickaxes().incrementFortune(e.getMember()); - bot.sendSuccessMessage(e, ":white_check_mark: You enchanted your pickaxe. Now it has **Fortune " + Pickaxes.getRomanNumber(level) + "**"); + String newEnch = ""; + if (Math.random() > 0.5) { + int level = bot.getPickaxes().incrementFortune(e.getMember()); + newEnch = "**Fortune " + Pickaxes.getRomanNumber(level) + "**"; + } else { + int level = bot.getPickaxes().incrementEfficiency(e.getMember()); + newEnch = "**Efficiency " + Pickaxes.getRomanNumber(level) + "**"; + } + bot.sendSuccessMessage(e, ":white_check_mark: You enchanted your pickaxe. You now have " + newEnch); } - } |
