summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/EnchantCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/EnchantCommand.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/EnchantCommand.java64
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);
}
-
}