diff options
| author | davidovski <david@davidovski.xyz> | 2025-11-04 17:35:30 +0000 |
|---|---|---|
| committer | davidovski <david@davidovski.xyz> | 2025-11-04 17:35:30 +0000 |
| commit | 2e47a68b69fac942e4efd7b90f248e15f02f6a82 (patch) | |
| tree | 1753ffc8604689a97f02409efc17f297596bbc4f /src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java | |
| parent | 5a008748459e230de0e875afff59e3b92c7aca0c (diff) | |
update v0.6 pre
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java')
| -rw-r--r-- | src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java | 72 |
1 files changed, 53 insertions, 19 deletions
diff --git a/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java b/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java index be3ad3c..98baf7f 100644 --- a/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java +++ b/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java @@ -16,8 +16,10 @@ import net.uomc.mineshaft.farm.Farm; class Blacksmith extends Farm { - public static long UPDATES_PER_LEVEL = 10; - public static long MS_PER_UPDATE = 1000l * 60l * 10l; + public static long UPDATES_PER_LEVEL = 240; + // TODO fix this + public static long MS_PER_UPDATE = 1000l * 60l; + //public static long MS_PER_UPDATE = 1000l * 10l; private SavedStat questionsStat; public Blacksmith(Mineshaft bot) { @@ -25,10 +27,36 @@ class Blacksmith extends Farm { questionsStat = getBot().getPlayerStats().getStat("blacksmith_questions"); } - public boolean upgradeArmour(Member member) { + public int collect(Member member) { + if (!isReady(member)) + return 0; + + if (isSword(member)) return collectSword(member); + return collectArmour(member); + } + + public int collectSword(Member member) { + int levelRaw = (int) getPlanted(member); + getBot().getSword(member).setLevel(getWorkingLevel(member)); + + setPlanted(member, 0); + setQuantity(member, 0); + return levelRaw; + } + + public int collectArmour(Member member) { + int levelRaw = (int) getPlanted(member); + getBot().getArmour(member).setLevel(getWorkingLevel(member)); + + setPlanted(member, 0); + setQuantity(member, 0); + return levelRaw; + } + + public int upgradeArmour(Member member) { int armourLevel = getBot().getArmour(member).getLevel(); if (armourLevel >= Armour.MAX_ARMOUR_LEVEL) { - return false; + return 0; } armourLevel += 1; @@ -37,22 +65,24 @@ class Blacksmith extends Farm { getBot().getArmour(member).setLevel(0); setQuantity(member, armourLevel * UPDATES_PER_LEVEL); - return true; + setNextUpdate(member, System.currentTimeMillis() + MS_PER_UPDATE); + return armourLevel; } - public boolean upgradeSword(Member member) { + public int upgradeSword(Member member) { int swordLevel = getBot().getSword(member).getLevel(); if (swordLevel >= Sword.MAX_SWORD_LEVEL) { - return false; + return 0; } swordLevel += 1; - setPlanted(member, -swordLevel); + setPlanted(member, swordLevel); getBot().getSword(member).setLevel(0); setQuantity(member, swordLevel * UPDATES_PER_LEVEL); - return true; + setNextUpdate(member, System.currentTimeMillis() + MS_PER_UPDATE); + return swordLevel; } @@ -117,7 +147,9 @@ class Blacksmith extends Farm { } BinomialDistribution bd = new BinomialDistribution((int) updates, getProgressChance(member)); - setQuantity(member, getQuantity(member) - bd.sample()); + int change = bd.sample(); + setQuantity(member, getQuantity(member) - change); + System.out.println("Doing update on " + member.getEffectiveName() + ", updates = " + updates + ", changed by -" + change); setNextUpdate(member, getNextUpdate(member) + MS_PER_UPDATE*updates); } @@ -144,11 +176,11 @@ class Blacksmith extends Farm { long max = getWorkingLevel(member) * UPDATES_PER_LEVEL; long current = getQuantity(member); - return (max - Math.min(current, 0)) / max; + return (double) (max - Math.max(current, 0)) / (double) max; } public long getTimeEstimate(Member member, long updates) { - return (long) (MS_PER_UPDATE * (1 - getProgressChance(member)) * updates); + return (long) (MS_PER_UPDATE * (1 / getProgressChance(member)) * updates); } public long getTimeEstimateRemaining(Member member) { @@ -207,7 +239,7 @@ class Blacksmith extends Farm { if (!isWorking(member)) return false; - return getQuantity(member) < 0; + return getQuantity(member) <= 0; } public void incrementQuestions(Member member) { @@ -228,12 +260,12 @@ class Blacksmith extends Farm { long forges = getValidForgeCount(member); if (forges > 1) - b.append("We are busy working on your "); + b.append("We are busy working on your **"); else - b.append("I am busy working on your "); + b.append("I am busy working on your **"); b.append(getWorkingName(member)); - b.append(".\n"); + b.append("**.\n"); if (questions < 1) return b.toString(); @@ -255,7 +287,7 @@ class Blacksmith extends Farm { if (questions >= 5) { double progress = getProgress(member); - b.append("I am about " + + Math.round(100*progress) + "** of the way to finishing.\n"); + b.append("I am about **" + + Math.round(100*progress) + "%** of the way to finishing.\n"); } if (questions == 6) @@ -309,12 +341,14 @@ class Blacksmith extends Farm { if (questions == 100) b.append("This is the 100th time you've asked... I'm sure you are proud of yourself"); - if (questions >= 500) + if (questions >= 500 && questions <= 510) return "You have asked me too many times. No more updates sorry."; + if (questions == 511) + return "Ok fine. Come back later and I will tell you"; + return b.toString(); } - } |
