From a225789f0c5f36156b3e347072659796b3acd90f Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sat, 12 Jan 2019 15:35:00 -0700 Subject: [PATCH 1/3] ThinProgressBar: Manually paint the old method caused it to expand randomly, which would make it show an abnormally high value. This also makes update not required, fixing the bug where it wouldn't render correctly when update was called after a layout was invalidated, but before it was recalculated. --- .../grandexchange/GrandExchangeOfferSlot.java | 1 - .../timetracking/farming/FarmingTabPanel.java | 1 - .../hunter/BirdHouseTabPanel.java | 2 - .../client/ui/components/ThinProgressBar.java | 80 ++++++++++--------- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java index eaf8efc792..14090170fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java @@ -226,7 +226,6 @@ public class GrandExchangeOfferSlot extends JPanel progressBar.setForeground(getProgressColor(newOffer)); progressBar.setMaximumValue(newOffer.getTotalQuantity()); progressBar.setValue(newOffer.getQuantitySold()); - progressBar.update(); /* Couldn't set the tooltip for the container panel as the children override it, so I'm setting * the tooltips on the children instead. */ diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java index 11c1e2dd0b..aacbb6636b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java @@ -250,7 +250,6 @@ public class FarmingTabPanel extends TabContentPanel panel.getProgress().setForeground(state.getCropState().getColor().darker()); panel.getProgress().setMaximumValue(stages - 1); panel.getProgress().setValue(stage); - panel.getProgress().update(); } else { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java index a43a9e6760..c8935b850a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java @@ -144,8 +144,6 @@ public class BirdHouseTabPanel extends TabContentPanel panel.getEstimate().setText("Unknown"); break; } - - panel.getProgress().update(); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/components/ThinProgressBar.java b/runelite-client/src/main/java/net/runelite/client/ui/components/ThinProgressBar.java index 424e4ebebb..f80ff5b740 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/components/ThinProgressBar.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/components/ThinProgressBar.java @@ -25,69 +25,71 @@ */ package net.runelite.client.ui.components; -import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; +import java.awt.Graphics; import javax.swing.JPanel; -import lombok.Setter; -import net.runelite.client.ui.ColorScheme; +import lombok.Getter; /** * A progress bar to be displayed underneath the GE offer item panels */ public class ThinProgressBar extends JPanel { - @Setter - private int maximumValue; + @Getter + private int maximumValue = 1; - @Setter + @Getter private int value; - private final JPanel topBar = new JPanel(); - public ThinProgressBar() { - setLayout(new BorderLayout()); - setBackground(Color.GREEN.darker()); - - topBar.setPreferredSize(new Dimension(100, 4)); - topBar.setBackground(ColorScheme.PROGRESS_COMPLETE_COLOR); - - add(topBar, BorderLayout.WEST); - } - - /** - * Updates the UI based on the percentage progress - */ - public void update() - { - double percentage = getPercentage(); - int topWidth = (int) (getSize().width * (percentage / 100)); - - topBar.setPreferredSize(new Dimension(topWidth, 4)); - topBar.repaint(); - - revalidate(); - repaint(); + setForeground(Color.GREEN); + setMaximumSize(new Dimension(Integer.MAX_VALUE, 4)); + setMinimumSize(new Dimension(0, 4)); + setPreferredSize(new Dimension(0, 4)); + setSize(new Dimension(0, 4)); + setOpaque(true); } public double getPercentage() { - if (value == 0) - { - return 0; - } - return (value * 100) / maximumValue; } @Override public void setForeground(Color color) { - if (topBar != null) - { - topBar.setBackground(color); - } + super.setForeground(color); setBackground(color.darker()); } + + public void setMaximumValue(int maximumValue) + { + if (maximumValue < 1) + { + maximumValue = 1; + } + this.maximumValue = maximumValue; + repaint(); + } + + public void setValue(int value) + { + this.value = value; + repaint(); + } + + @Override + public void paintComponent(Graphics g) + { + super.paintComponent(g); + int w = getWidth(); + int h = getHeight(); + int div = (value * w) / maximumValue; + g.setColor(getBackground()); + g.fillRect(div, 0, w, h); + g.setColor(getForeground()); + g.fillRect(0, 0, div, h); + } } \ No newline at end of file From c017bd4a365ae772f999371de5a4da7833f8c1c2 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 15 Jan 2019 22:14:43 -0700 Subject: [PATCH 2/3] PatchImplementationTest: Don't immediately fail upon finding an error --- runelite-client/pom.xml | 6 ++++++ .../farming/FarmingWorldTest.java | 3 ++- .../farming/PatchImplementationTest.java | 21 ++++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 04402f1295..632d00f943 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -220,6 +220,12 @@ 4.12 test + + org.hamcrest + hamcrest-library + 1.3 + test + org.mockito mockito-all diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/FarmingWorldTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/FarmingWorldTest.java index 05a45ffe52..78bf100c05 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/FarmingWorldTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/FarmingWorldTest.java @@ -21,7 +21,8 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */package net.runelite.client.plugins.timetracking.farming; + */ +package net.runelite.client.plugins.timetracking.farming; import org.junit.Test; diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/PatchImplementationTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/PatchImplementationTest.java index ef6f73b94f..6ed2f81f60 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/PatchImplementationTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/PatchImplementationTest.java @@ -26,11 +26,16 @@ package net.runelite.client.plugins.timetracking.farming; import java.util.HashMap; import java.util.Map; -import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ErrorCollector; +import static org.hamcrest.Matchers.*; public class PatchImplementationTest { + @Rule + public ErrorCollector collector = new ErrorCollector(); + @Test public void testRange() { @@ -43,20 +48,20 @@ public class PatchImplementationTest if (s != null) { String pfx = impl.name() + "[" + i + "]"; - Assert.assertNotNull(pfx + ": null cropState", s.getCropState()); - Assert.assertNotNull(pfx + ": null produce", s.getProduce()); - Assert.assertTrue(pfx + ": " + s.getStage() + " < 0", s.getStage() >= 0); + collector.checkThat(pfx + ": cropState", s.getCropState(), notNullValue()); + collector.checkThat(pfx + ": produce", s.getProduce(), notNullValue()); + collector.checkThat(pfx + ": negative stage", s.getStage(), greaterThanOrEqualTo(0)); int stages = s.getProduce().getStages(); if (s.getCropState() == CropState.HARVESTABLE) { stages = s.getProduce().getHarvestStages(); } - Assert.assertTrue(pfx + ": " + s.getStage() + " >= " + stages, s.getStage() < stages); + collector.checkThat(pfx + ": out of bounds stage", s.getStage(), lessThan(stages)); if (s.getCropState() == CropState.DEAD || s.getCropState() == CropState.DISEASED) { - Assert.assertTrue(pfx + ": dead seed", s.getStage() > 0); + collector.checkThat(pfx + ": dead seed", s.getStage(), greaterThan(0)); } - if (s.getCropState() == CropState.GROWING && s.getProduce() != Produce.WEEDS) + if (s.getCropState() == CropState.GROWING && s.getProduce() != Produce.WEEDS && s.getStage() < stages) { harvestStages.computeIfAbsent(s.getProduce(), k -> new boolean[s.getProduce().getStages()])[s.getStage()] = true; } @@ -69,7 +74,7 @@ public class PatchImplementationTest // Alot of time the final stage is not hit, because some plants do not have a "Check-health" stage for (int i = 0; i < states.length - 1; i++) { - Assert.assertTrue(produce.getKey().getName() + " stage " + i + " never found by varbit", states[i]); + collector.checkThat(produce.getKey().getName() + " stage " + i + " never found by varbit", states[i], is(true)); } } } From 72ca27edca65b579c5a4f30d45bf20d9d120418f Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 15 Jan 2019 22:19:33 -0700 Subject: [PATCH 3/3] farming: Support Kebos Lowlands update --- .../main/java/net/runelite/api/Varbits.java | 9 + .../timetracking/farming/FarmingWorld.java | 21 +- .../farming/PatchImplementation.java | 1386 ++++++++++------- .../plugins/timetracking/farming/Produce.java | 27 +- 4 files changed, 885 insertions(+), 558 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index 01be37b49a..f3ce1e6e12 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -390,6 +390,15 @@ public enum Varbits FARMING_4772(4772), FARMING_4773(4773), FARMING_4774(4774), + FARMING_4775(4775), + FARMING_7904(7904), + FARMING_7905(7905), + FARMING_7906(7906), + FARMING_7907(7907), + FARMING_7908(7908), + FARMING_7909(7909), + FARMING_7910(7910), + FARMING_7911(7911), /** * Transmog controllers for grapes diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingWorld.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingWorld.java index b6e7b7fdf0..865c0e5517 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingWorld.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingWorld.java @@ -57,7 +57,7 @@ class FarmingWorld // Some of these patches get updated in multiple regions. // It may be worth it to add a specialization for these patches add(new FarmingRegion("Al Kharid", 13106, - new FarmingPatch("Cactus", Varbits.FARMING_4771, PatchImplementation.CACTUS) + new FarmingPatch("", Varbits.FARMING_4771, PatchImplementation.CACTUS) )); add(new FarmingRegion("Ardougne", 10290, @@ -225,6 +225,25 @@ class FarmingWorld new FarmingPatch("", Varbits.FARMING_4771, PatchImplementation.HERB) )); + add(new FarmingRegion("Farming Guild", 5021, + new FarmingPatch("Hespori", Varbits.FARMING_7908, PatchImplementation.HESPORI) + )); + + add(new FarmingRegion("Farming Guild", 4922, + new FarmingPatch("", Varbits.FARMING_7905, PatchImplementation.TREE), + new FarmingPatch("", Varbits.FARMING_4775, PatchImplementation.HERB), + new FarmingPatch("", Varbits.FARMING_4772, PatchImplementation.BUSH), + new FarmingPatch("", Varbits.FARMING_7906, PatchImplementation.FLOWER), + new FarmingPatch("North", Varbits.FARMING_4773, PatchImplementation.ALLOTMENT), + new FarmingPatch("South", Varbits.FARMING_4774, PatchImplementation.ALLOTMENT), + new FarmingPatch("", Varbits.FARMING_7904, PatchImplementation.CACTUS), + new FarmingPatch("", Varbits.FARMING_4771, PatchImplementation.SPIRIT_TREE), + new FarmingPatch("", Varbits.FARMING_7909, PatchImplementation.FRUIT_TREE), + new FarmingPatch("Anima", Varbits.FARMING_7911, PatchImplementation.ANIMA), + new FarmingPatch("", Varbits.FARMING_7910, PatchImplementation.CELASTRUS), + new FarmingPatch("", Varbits.FARMING_7907, PatchImplementation.REDWOOD) + )); + // Finalize this.regions = Collections.unmodifiableMap(regions); Map> umtabs = new TreeMap<>(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PatchImplementation.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PatchImplementation.java index 0a4000ac8e..8bec7a88a6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PatchImplementation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PatchImplementation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Abex + * Copyright (c) 2019 Abex * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,55 +32,6 @@ import net.runelite.client.plugins.timetracking.Tab; @Getter public enum PatchImplementation { - CACTUS(Tab.SPECIAL, "") - { - @Override - PatchState forVarbitValue(int value) - { - if (value >= 0 && value <= 3) - { - // Cactus patch[Rake,Inspect,,Guide,] 7746,7745,7744,7743 - return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); - } - if (value >= 4 && value <= 7) - { - // Cactus patch[Rake,Inspect,,Guide,] 7746,7746,7746,7746 - return new PatchState(Produce.WEEDS, CropState.GROWING, 3); - } - if (value >= 8 && value <= 14) - { - // Cactus[,Inspect,,Guide,] 7747,7748,7749,7750,7751,7752,7753 - return new PatchState(Produce.CACTUS, CropState.GROWING, value - 8); - } - if (value >= 15 && value <= 18) - { - // Cactus[Clear,Inspect,,Guide,] 7754 - // Cactus[Pick-spine,Inspect,,Guide,] 7755,7756,7757 - return new PatchState(Produce.CACTUS, CropState.HARVESTABLE, value - 15); - } - if (value >= 19 && value <= 24) - { - // Diseased cactus[Cure,Inspect,,Guide,] 7759,7760,7761,7762,7763,7764 - return new PatchState(Produce.CACTUS, CropState.DISEASED, value - 18); - } - if (value >= 25 && value <= 30) - { - // Dead cactus[Clear,Inspect,,Guide,] 7765,7766,7767,7768,7769,7770 - return new PatchState(Produce.CACTUS, CropState.DEAD, value - 24); - } - if (value == 31) - { - // Cactus[Check-health,Inspect,,Guide,] 7758 - return new PatchState(Produce.CACTUS, CropState.GROWING, 7); - } - if (value >= 32 && value <= 255) - { - // Cactus patch[Rake,Inspect,,Guide,] 7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746 - return new PatchState(Produce.WEEDS, CropState.GROWING, 3); - } - return null; - } - }, BELLADONNA(Tab.SPECIAL, "") { @Override @@ -88,32 +39,32 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Belladonna patch[Rake,Inspect,,Guide,] 7560,7559,7558,7557 + // Belladonna patch[Rake,Inspect,Guide] 7560,7559,7558,7557 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Belladonna[,Inspect,,Guide,] 7561,7562,7563,7564 + // Belladonna[Inspect,Guide] 7561,7562,7563,7564 return new PatchState(Produce.BELLADONNA, CropState.GROWING, value - 4); } if (value == 8) { - // Belladonna[Pick,Inspect,,Guide,] 7565 + // Belladonna[Pick,Inspect,Guide] 7565 return new PatchState(Produce.BELLADONNA, CropState.HARVESTABLE, 0); } if (value >= 9 && value <= 11) { - // Diseased Belladonna[Cure,Inspect,,Guide,] 7566,7567,7568 + // Diseased Belladonna[Cure,Inspect,Guide] 7566,7567,7568 return new PatchState(Produce.BELLADONNA, CropState.DISEASED, value - 8); } if (value >= 12 && value <= 14) { - // Dead Belladonna[Clear,Inspect,,Guide,] 7569,7570,7571 + // Dead Belladonna[Clear,Inspect,Guide] 7569,7570,7571 return new PatchState(Produce.BELLADONNA, CropState.DEAD, value - 11); } if (value >= 15 && value <= 255) { - // Belladonna patch[Rake,Inspect,,Guide,] 7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560 + // Belladonna patch[Rake,Inspect,Guide] 7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560,7560 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -126,32 +77,60 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Mushroom patch[Rake,Inspect,,Guide,] 8314,8313,8312,8311 + // Mushroom patch[Rake,Inspect,Guide] 8314,8313,8312,8311 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 9) { - // Bittercap Mushrooms[,Inspect,,Guide,] 8315,8316,8317,8318,8319,8320 + // Bittercap Mushrooms[Inspect,Guide] 8315,8316,8317,8318,8319,8320 return new PatchState(Produce.MUSHROOM, CropState.GROWING, value - 4); } if (value >= 10 && value <= 15) { - // Bittercap Mushrooms[Pick,Inspect,,Guide,] 8321,8322,8323,8324,8325,8326 + // Bittercap Mushrooms[Pick,Inspect,Guide] 8321,8322,8323,8324,8325,8326 return new PatchState(Produce.MUSHROOM, CropState.HARVESTABLE, value - 10); } if (value >= 16 && value <= 20) { - // Diseased Bittercap Mushrooms[Cure,Inspect,,Guide,] 8327,8328,8329,8330,8331 + // Diseased Bittercap Mushrooms[Cure,Inspect,Guide] 8327,8328,8329,8330,8331 return new PatchState(Produce.MUSHROOM, CropState.DISEASED, value - 15); } if (value >= 21 && value <= 25) { - // Dead Bittercap Mushrooms[Clear,Inspect,,Guide,] 8332,8333,8334,8335,8336 + // Dead Bittercap Mushrooms[Clear,Inspect,Guide] 8332,8333,8334,8335,8336 return new PatchState(Produce.MUSHROOM, CropState.DEAD, value - 20); } if (value >= 26 && value <= 255) { - // Mushroom patch[Rake,Inspect,,Guide,] 8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314 + // Mushroom patch[Rake,Inspect,Guide] 8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314,8314 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + return null; + } + }, + HESPORI(Tab.SPECIAL, "") + { + @Override + PatchState forVarbitValue(int value) + { + if (value >= 0 && value <= 3) + { + // Hespori patch[Rake,Inspect,Guide] 33722,33723,33724,33725 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); + } + if (value >= 4 && value <= 6) + { + // Hespori[Inspect,Guide] 33726,33727,33728 + return new PatchState(Produce.HESPORI, CropState.GROWING, value - 4); + } + if (value >= 7 && value <= 8) + { + // Hespori[Harvest,Inspect,Guide,Clear] 33729,33730 + return new PatchState(Produce.HESPORI, CropState.HARVESTABLE, value - 7); + } + if (value == 9) + { + // Hespori patch[Rake,Inspect,Guide] 33722 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -164,307 +143,327 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Allotment[Rake,Inspect,,Guide,] 8576,8575,8574,8573 + // Allotment[Rake,Inspect,Guide] 8576,8575,8574,8573 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 5) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 6 && value <= 9) { - // Potato[,Inspect,,Guide,] 8558,8559,8560,8561 + // Potato seed,Potato plant[Inspect,Guide] 8558,8559,8560,8561 return new PatchState(Produce.POTATO, CropState.GROWING, value - 6); } if (value >= 10 && value <= 12) { - // Potato[Harvest,Inspect,,Guide,] 8562,8562,8562 + // Potato[Harvest,Inspect,Guide] 8562,8562,8562 return new PatchState(Produce.POTATO, CropState.HARVESTABLE, value - 10); } if (value >= 13 && value <= 16) { - // Onion[,Inspect,,Guide,] 8580,8581,8582,8583 + // Onion seeds,Onion plant[Inspect,Guide] 8580,8581,8582,8583 return new PatchState(Produce.ONION, CropState.GROWING, value - 13); } if (value >= 17 && value <= 19) { - // Onion[Harvest,Inspect,,Guide,] 8584,8584,8584 + // Onion[Harvest,Inspect,Guide] 8584,8584,8584 return new PatchState(Produce.ONION, CropState.HARVESTABLE, value - 17); } if (value >= 20 && value <= 23) { - // Cabbages[,Inspect,,Guide,] 8535,8536,8537,8538 + // Cabbages[Inspect,Guide] 8535,8536,8537,8538 return new PatchState(Produce.CABBAGE, CropState.GROWING, value - 20); } if (value >= 24 && value <= 26) { - // Cabbages[Harvest,Inspect,,Guide,] 8539,8539,8539 + // Cabbages[Harvest,Inspect,Guide] 8539,8539,8539 return new PatchState(Produce.CABBAGE, CropState.HARVESTABLE, value - 24); } if (value >= 27 && value <= 30) { - // Tomato[,Inspect,,Guide,] 8641,8642,8643,8644 + // Tomato plant[Inspect,Guide] 8641,8642,8643,8644 return new PatchState(Produce.TOMATO, CropState.GROWING, value - 27); } if (value >= 31 && value <= 33) { - // Tomato[Harvest,Inspect,,Guide,] 8645,8645,8645 + // Tomato[Harvest,Inspect,Guide] 8645,8645,8645 return new PatchState(Produce.TOMATO, CropState.HARVESTABLE, value - 31); } if (value >= 34 && value <= 39) { - // Sweetcorn[,Inspect,,Guide,] 8618,8619,8620,8621,8622,8623 + // Sweetcorn seed,Sweetcorn plant[Inspect,Guide] 8618,8619,8620,8621,8622,8623 return new PatchState(Produce.SWEETCORN, CropState.GROWING, value - 34); } if (value >= 40 && value <= 42) { - // Sweetcorn[Harvest,Inspect,,Guide,] 8624,8624,8624 + // Sweetcorn[Harvest,Inspect,Guide] 8624,8624,8624 return new PatchState(Produce.SWEETCORN, CropState.HARVESTABLE, value - 40); } if (value >= 43 && value <= 48) { - // Strawberry[,Inspect,,Guide,] 8595,8596,8597,8598,8599,8600 + // Strawberry seed,Strawberry plant[Inspect,Guide] 8595,8596,8597,8598,8599,8600 return new PatchState(Produce.STRAWBERRY, CropState.GROWING, value - 43); } if (value >= 49 && value <= 51) { - // Strawberry[Harvest,Inspect,,Guide,] 8601,8601,8601 + // Strawberry[Harvest,Inspect,Guide] 8601,8601,8601 return new PatchState(Produce.STRAWBERRY, CropState.HARVESTABLE, value - 49); } - if (value == 52) + if (value >= 52 && value <= 59) { - // Watermelon[,Inspect,,Guide,] 8656 - return new PatchState(Produce.WATERMELON, CropState.GROWING, 0); - } - if (value >= 53 && value <= 59) - { - // Watermelons[,Inspect,,Guide,] 8657,8658,8659,8660,8661,8662,8663 - return new PatchState(Produce.WATERMELON, CropState.GROWING, value - 53); + // Watermelon seed,Watermelons[Inspect,Guide] 8656,8657,8658,8659,8660,8661,8662,8663 + return new PatchState(Produce.WATERMELON, CropState.GROWING, value - 52); } if (value >= 60 && value <= 62) { - // Watermelon[Harvest,Inspect,,Guide,] 8664,8664,8664 + // Watermelon[Harvest,Inspect,Guide] 8664,8664,8664 return new PatchState(Produce.WATERMELON, CropState.HARVESTABLE, value - 60); } if (value >= 63 && value <= 69) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576,8576,8576,8576 - return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + // snape grass seedling,Snape grass plant[Inspect,Guide] 33674,33675,33676,33677,33678,33679,33680 + return new PatchState(Produce.SNAPE_GRASS, CropState.GROWING, value - 63); } if (value >= 70 && value <= 73) { - // Potato[,Inspect,,Guide,] 8563,8564,8565,8566 + // Potato seed,Potato plant[Inspect,Guide] 8563,8564,8565,8566 return new PatchState(Produce.POTATO, CropState.GROWING, value - 70); } if (value >= 74 && value <= 76) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 77 && value <= 80) { - // Onion[,Inspect,,Guide,] 8585,8586,8587,8588 + // Onion seeds,Onion plant[Inspect,Guide] 8585,8586,8587,8588 return new PatchState(Produce.ONION, CropState.GROWING, value - 77); } if (value >= 81 && value <= 83) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 84 && value <= 87) { - // Cabbages[,Inspect,,Guide,] 8540,8541,8542,8543 + // Cabbages[Inspect,Guide] 8540,8541,8542,8543 return new PatchState(Produce.CABBAGE, CropState.GROWING, value - 84); } if (value >= 88 && value <= 90) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 91 && value <= 94) { - // Tomato[,Inspect,,Guide,] 8646,8647,8648,8649 + // Tomato plant[Inspect,Guide] 8646,8647,8648,8649 return new PatchState(Produce.TOMATO, CropState.GROWING, value - 91); } if (value >= 95 && value <= 97) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 98 && value <= 103) { - // Sweetcorn[,Inspect,,Guide,] 8625,8626,8627,8628,8629,8630 + // Sweetcorn seed,Sweetcorn plant[Inspect,Guide] 8625,8626,8627,8628,8629,8630 return new PatchState(Produce.SWEETCORN, CropState.GROWING, value - 98); } if (value >= 104 && value <= 106) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 107 && value <= 112) { - // Strawberry[,Inspect,,Guide,] 8602,8603,8604,8605,8606,8607 + // Strawberry seed,Strawberry plant[Inspect,Guide] 8602,8603,8604,8605,8606,8607 return new PatchState(Produce.STRAWBERRY, CropState.GROWING, value - 107); } if (value >= 113 && value <= 115) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value == 116) + if (value >= 116 && value <= 123) { - // Watermelon[,Inspect,,Guide,] 8665 - return new PatchState(Produce.WATERMELON, CropState.GROWING, 0); + // Watermelon seed,Watermelons[Inspect,Guide] 8665,8666,8667,8668,8669,8670,8671,8672 + return new PatchState(Produce.WATERMELON, CropState.GROWING, value - 116); } - if (value >= 117 && value <= 123) + if (value >= 124 && value <= 127) { - // Watermelons[,Inspect,,Guide,] 8666,8667,8668,8669,8670,8671,8672 - return new PatchState(Produce.WATERMELON, CropState.GROWING, value - 117); - } - if (value >= 124 && value <= 134) - { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576,8576,8576,8576,8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } + if (value >= 128 && value <= 134) + { + // Snape grass seedling,Snape grass plant[Inspect,Guide] 33666,33667,33668,33669,33670,33671,33672 + return new PatchState(Produce.SNAPE_GRASS, CropState.GROWING, value - 128); + } if (value >= 135 && value <= 137) { - // Diseased potatoes[Cure,Inspect,,Guide,] 8567,8568,8569 + // Diseased potatoes[Cure,Inspect,Guide] 8567,8568,8569 return new PatchState(Produce.POTATO, CropState.DISEASED, value - 134); } - if (value >= 138 && value <= 141) + if (value >= 138 && value <= 140) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Snape grass plant[Harvest,Inspect,Guide] 33673,33673,33673 + return new PatchState(Produce.SNAPE_GRASS, CropState.HARVESTABLE, value - 138); + } + if (value == 141) + { + // Allotment[Rake,Inspect,Guide] 8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 142 && value <= 144) { - // Diseased onions[Cure,Inspect,,Guide,] 8589,8590,8591 + // Diseased onions[Cure,Inspect,Guide] 8589,8590,8591 return new PatchState(Produce.ONION, CropState.DISEASED, value - 141); } if (value >= 145 && value <= 148) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 149 && value <= 151) { - // Diseased cabbages[Cure,Inspect,,Guide,] 8544,8545,8546 + // Diseased cabbages[Cure,Inspect,Guide] 8544,8545,8546 return new PatchState(Produce.CABBAGE, CropState.DISEASED, value - 148); } if (value >= 152 && value <= 155) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 156 && value <= 158) { - // Diseased tomato[Cure,Inspect,,Guide,] 8650,8651,8652 + // Diseased tomato plant[Cure,Inspect,Guide] 8650,8651,8652 return new PatchState(Produce.TOMATO, CropState.DISEASED, value - 155); } if (value >= 159 && value <= 162) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 163 && value <= 167) { - // Diseased sweetcorn[Cure,Inspect,,Guide,] 8631,8632,8633,8634,8635 + // Diseased sweetcorn plant[Cure,Inspect,Guide] 8631,8632,8633,8634,8635 return new PatchState(Produce.SWEETCORN, CropState.DISEASED, value - 162); } if (value >= 168 && value <= 171) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 172 && value <= 176) { - // Diseased strawberry[Cure,Inspect,,Guide,] 8608,8609,8610,8611,8612 + // Diseased strawberry plant[Cure,Inspect,Guide] 8608,8609,8610,8611,8612 return new PatchState(Produce.STRAWBERRY, CropState.DISEASED, value - 171); } if (value >= 177 && value <= 180) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 182 && value <= 187) + if (value >= 181 && value <= 187) { - // Diseased watermelons[Cure,Inspect,,Guide,] 8673,8674,8675,8676,8677,8678,8679 - return new PatchState(Produce.WATERMELON, CropState.DISEASED, value - 181); + // Diseased watermelons[Cure,Inspect,Guide] 8673,8674,8675,8676,8677,8678,8679 + return new PatchState(Produce.WATERMELON, CropState.DISEASED, value - 180); } - if (value >= 188 && value <= 198) + if (value >= 188 && value <= 192) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576,8576,8576,8576,8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } + if (value >= 193 && value <= 195) + { + // Dead Snape grass[Clear,Inspect,Guide] 33687,33688,33689 + return new PatchState(Produce.SNAPE_GRASS, CropState.DEAD, value - 192); + } + if (value >= 196 && value <= 198) + { + // Diseased Snape grass[Cure,Inspect,Guide] 33681,33682,33683 + return new PatchState(Produce.SNAPE_GRASS, CropState.DISEASED, value - 195); + } if (value >= 199 && value <= 201) { - // Dead potatoes[Clear,Inspect,,Guide,] 8570,8571,8572 + // Dead potatoes[Clear,Inspect,Guide] 8570,8571,8572 return new PatchState(Produce.POTATO, CropState.DEAD, value - 198); } - if (value >= 202 && value <= 205) + if (value >= 202 && value <= 204) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Diseased Snape grass[Cure,Inspect,Guide] 33684,33685,33686 + return new PatchState(Produce.SNAPE_GRASS, CropState.DISEASED, 3 + value - 201); + } + if (value == 205) + { + // Allotment[Rake,Inspect,Guide] 8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 206 && value <= 208) { - // Dead onions[Clear,Inspect,,Guide,] 8592,8593,8594 + // Dead onions[Clear,Inspect,Guide] 8592,8593,8594 return new PatchState(Produce.ONION, CropState.DEAD, value - 205); } - if (value >= 209 && value <= 212) + if (value >= 209 && value <= 211) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Dead Snape grass[Clear,Inspect,Guide] 33690,33691,33692 + return new PatchState(Produce.SNAPE_GRASS, CropState.DEAD, 3 + value - 208); + } + if (value == 212) + { + // Allotment[Rake,Inspect,Guide] 8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 213 && value <= 215) { - // Dead cabbages[Clear,Inspect,,Guide,] 8547,8548,8549 + // Dead cabbages[Clear,Inspect,Guide] 8547,8548,8549 return new PatchState(Produce.CABBAGE, CropState.DEAD, value - 212); } if (value >= 216 && value <= 219) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 220 && value <= 222) { - // Dead tomato[Clear,Inspect,,Guide,] 8653,8654,8655 + // Dead tomato plant[Clear,Inspect,Guide] 8653,8654,8655 return new PatchState(Produce.TOMATO, CropState.DEAD, value - 219); } if (value >= 223 && value <= 226) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 227 && value <= 231) { - // Dead sweetcorn[Clear,Inspect,,Guide,] 8636,8637,8638,8639,8640 + // Dead sweetcorn plant[Clear,Inspect,Guide] 8636,8637,8638,8639,8640 return new PatchState(Produce.SWEETCORN, CropState.DEAD, value - 226); } if (value >= 232 && value <= 235) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 236 && value <= 240) { - // Dead strawberry[Clear,Inspect,,Guide,] 8613,8614,8615,8616,8617 + // Dead strawberry plant[Clear,Inspect,Guide] 8613,8614,8615,8616,8617 return new PatchState(Produce.STRAWBERRY, CropState.DEAD, value - 235); } if (value >= 241 && value <= 244) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 246 && value <= 251) + if (value >= 245 && value <= 251) { - // Dead watermelons[Clear,Inspect,,Guide,] 8680,8681,8682,8683,8684,8685,8686 - return new PatchState(Produce.WATERMELON, CropState.DEAD, value - 245); + // Dead watermelons[Clear,Inspect,Guide] 8680,8681,8682,8683,8684,8685,8686 + return new PatchState(Produce.WATERMELON, CropState.DEAD, value - 244); } if (value >= 252 && value <= 255) { - // Allotment[Rake,Inspect,,Guide,] 8576,8576,8576,8576 + // Allotment[Rake,Inspect,Guide] 8576,8576,8576,8576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -477,258 +476,262 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Herb patch[Rake,Inspect,,Guide,] 8135,8134,8133,8132 + // Herb patch[Rake,Inspect,Guide] 8135,8134,8133,8132 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.GUAM, CropState.GROWING, value - 4); } if (value >= 8 && value <= 10) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.GUAM, CropState.HARVESTABLE, 10 - value); } if (value >= 11 && value <= 14) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.MARRENTILL, CropState.GROWING, value - 11); } if (value >= 15 && value <= 17) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.MARRENTILL, CropState.HARVESTABLE, 17 - value); } if (value >= 18 && value <= 21) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.TARROMIN, CropState.GROWING, value - 18); } if (value >= 22 && value <= 24) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.TARROMIN, CropState.HARVESTABLE, 24 - value); } if (value >= 25 && value <= 28) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.HARRALANDER, CropState.GROWING, value - 25); } if (value >= 29 && value <= 31) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.HARRALANDER, CropState.HARVESTABLE, 31 - value); } if (value >= 32 && value <= 35) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.RANARR, CropState.GROWING, value - 32); } if (value >= 36 && value <= 38) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.RANARR, CropState.HARVESTABLE, 38 - value); } if (value >= 39 && value <= 42) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.TOADFLAX, CropState.GROWING, value - 39); } if (value >= 43 && value <= 45) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.TOADFLAX, CropState.HARVESTABLE, 45 - value); } if (value >= 46 && value <= 49) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.IRIT, CropState.GROWING, value - 46); } if (value >= 50 && value <= 52) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.IRIT, CropState.HARVESTABLE, 52 - value); } if (value >= 53 && value <= 56) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.AVANTOE, CropState.GROWING, value - 53); } if (value >= 57 && value <= 59) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.AVANTOE, CropState.HARVESTABLE, 59 - value); } if (value >= 60 && value <= 67) { - // Herb patch[Rake,Inspect,,Guide,] 8135,8135,8135,8135,8135,8135,8135,8135 + // Herb patch[Rake,Inspect,Guide] 8135,8135,8135,8135,8135,8135,8135,8135 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 68 && value <= 71) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.KWUARM, CropState.GROWING, value - 68); } if (value >= 72 && value <= 74) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.KWUARM, CropState.HARVESTABLE, 74 - value); } if (value >= 75 && value <= 78) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.SNAPDRAGON, CropState.GROWING, value - 75); } if (value >= 79 && value <= 81) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.SNAPDRAGON, CropState.HARVESTABLE, 81 - value); } if (value >= 82 && value <= 85) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.CADANTINE, CropState.GROWING, value - 82); } if (value >= 86 && value <= 88) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.CADANTINE, CropState.HARVESTABLE, 88 - value); } if (value >= 89 && value <= 92) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.LANTADYME, CropState.GROWING, value - 89); } if (value >= 93 && value <= 95) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.LANTADYME, CropState.HARVESTABLE, 95 - value); } if (value >= 96 && value <= 99) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.DWARF_WEED, CropState.GROWING, value - 96); } if (value >= 100 && value <= 102) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.DWARF_WEED, CropState.HARVESTABLE, 102 - value); } if (value >= 103 && value <= 106) { - // Herbs[,Inspect,,Guide,] 8139,8140,8141,8142 + // Herbs[Inspect,Guide] 8139,8140,8141,8142 return new PatchState(Produce.TORSTOL, CropState.GROWING, value - 103); } if (value >= 107 && value <= 109) { - // Herbs[Pick,Inspect,,Guide,] 8143,8143,8143 + // Herbs[Pick,Inspect,Guide] 8143,8143,8143 return new PatchState(Produce.TORSTOL, CropState.HARVESTABLE, 109 - value); } if (value >= 128 && value <= 130) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.GUAM, CropState.DISEASED, value - 127); } if (value >= 131 && value <= 133) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.MARRENTILL, CropState.DISEASED, value - 130); } if (value >= 134 && value <= 136) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.TARROMIN, CropState.DISEASED, value - 133); } if (value >= 137 && value <= 139) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.HARRALANDER, CropState.DISEASED, value - 136); } if (value >= 140 && value <= 142) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.RANARR, CropState.DISEASED, value - 139); } if (value >= 143 && value <= 145) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.TOADFLAX, CropState.DISEASED, value - 142); } if (value >= 146 && value <= 148) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.IRIT, CropState.DISEASED, value - 145); } if (value >= 149 && value <= 151) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.AVANTOE, CropState.DISEASED, value - 148); } if (value >= 152 && value <= 154) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.KWUARM, CropState.DISEASED, value - 151); } if (value >= 155 && value <= 157) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.SNAPDRAGON, CropState.DISEASED, value - 154); } if (value >= 158 && value <= 160) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.CADANTINE, CropState.DISEASED, value - 157); } if (value >= 161 && value <= 163) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.LANTADYME, CropState.DISEASED, value - 160); } if (value >= 164 && value <= 166) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.DWARF_WEED, CropState.DISEASED, value - 163); } if (value >= 167 && value <= 169) { - // Diseased herbs[Cure,Inspect,,Guide,] 8144,8145,8146 + // Diseased herbs[Cure,Inspect,Guide] 8144,8145,8146 return new PatchState(Produce.TORSTOL, CropState.DISEASED, value - 166); } if (value >= 170 && value <= 172) { - // Dead herbs[Clear,Inspect,,Guide,] 8147,8148,8149 + // Dead herbs[Clear,Inspect,Guide] 8147,8148,8149 return new PatchState(Produce.ANYHERB, CropState.DEAD, value - 169); } if (value >= 173 && value <= 191) { - // Herb patch[Rake,Inspect,,Guide,] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 + // Herb patch[Rake,Inspect,Guide] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 192 && value <= 195) { - // Goutweed[,Inspect,,Guide,] 9044,9045,9046,9047 + // Goutweed[Inspect,Guide] 9044,9045,9046,9047 return new PatchState(Produce.GOUTWEED, CropState.GROWING, value - 192); } if (value >= 196 && value <= 197) { - // Goutweed[Pick,Inspect,,Guide,] 9048,9048 + // Goutweed[Pick,Inspect,Guide] 9048,9048 return new PatchState(Produce.GOUTWEED, CropState.HARVESTABLE, 197 - value); } if (value >= 198 && value <= 200) { - // Diseased goutweed[Cure,Inspect,,Guide,] 9049,9050,9051 + // Diseased goutweed[Cure,Inspect,Guide] 9049,9050,9051 return new PatchState(Produce.GOUTWEED, CropState.DISEASED, value - 197); } if (value >= 201 && value <= 203) { - // Dead goutweed[Clear,Inspect,,Guide,] 9052,9053,9054 + // Dead goutweed[Clear,Inspect,Guide] 9052,9053,9054 return new PatchState(Produce.GOUTWEED, CropState.DEAD, value - 200); } - if (value >= 204 && value <= 255) + if (value >= 204 && value <= 219) { - // Herb patch[Rake,Inspect,,Guide,] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 - // Herb patch[Rake,Inspect,,Guide,] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 + // Herb patch[Rake,Inspect,Guide] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 221 && value <= 255) + { + // Herb patch[Rake,Inspect,Guide] 8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135,8135 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -741,227 +744,267 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7842,7841,7840 + // Flower Patch[Rake,Inspect,Guide] 7843,7842,7841,7840 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843,7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 8 && value <= 11) { - // Marigold[,Inspect,,Guide,] 7867,7868,7869,7870 + // Marigold[Inspect,Guide] 7867,7868,7869,7870 return new PatchState(Produce.MARIGOLD, CropState.GROWING, value - 8); } if (value == 12) { - // Marigold[Pick,Inspect,,Guide,] 7871 - return new PatchState(Produce.MARIGOLD, CropState.HARVESTABLE, 12 - value); + // Marigold[Pick,Inspect,Guide] 7871 + return new PatchState(Produce.MARIGOLD, CropState.HARVESTABLE, 0); } if (value >= 13 && value <= 16) { - // Rosemary[,Inspect,,Guide,] 7899,7900,7901,7902 + // Rosemary[Inspect,Guide] 7899,7900,7901,7902 return new PatchState(Produce.ROSEMARY, CropState.GROWING, value - 13); } if (value == 17) { - // Rosemary[Pick,Inspect,,Guide,] 7903 - return new PatchState(Produce.ROSEMARY, CropState.HARVESTABLE, 17 - value); + // Rosemary[Pick,Inspect,Guide] 7903 + return new PatchState(Produce.ROSEMARY, CropState.HARVESTABLE, 0); } if (value >= 18 && value <= 21) { - // Nasturtium[,Inspect,,Guide,] 7883,7884,7885,7886 + // Nasturtium[Inspect,Guide] 7883,7884,7885,7886 return new PatchState(Produce.NASTURTIUM, CropState.GROWING, value - 18); } if (value == 22) { - // Nasturtium[Pick,Inspect,,Guide,] 7887 - return new PatchState(Produce.NASTURTIUM, CropState.HARVESTABLE, 22 - value); + // Nasturtium[Pick,Inspect,Guide] 7887 + return new PatchState(Produce.NASTURTIUM, CropState.HARVESTABLE, 0); } if (value >= 23 && value <= 26) { - // Woad[,Inspect,,Guide,] 7919,7920,7921,7922 + // Woad plant[Inspect,Guide] 7919,7920,7921,7922 return new PatchState(Produce.WOAD, CropState.GROWING, value - 23); } if (value == 27) { - // Woad[Pick,Inspect,,Guide,] 7923 - return new PatchState(Produce.WOAD, CropState.HARVESTABLE, 27 - value); + // Woad plant[Pick,Inspect,Guide] 7923 + return new PatchState(Produce.WOAD, CropState.HARVESTABLE, 0); } if (value >= 28 && value <= 31) { - // Limpwurt[,Inspect,,Guide,] 7851,7852,7853,7854 + // Limpwurt plant[Inspect,Guide] 7851,7852,7853,7854 return new PatchState(Produce.LIMPWURT, CropState.GROWING, value - 28); } if (value == 32) { - // Limpwurt[Pick,Inspect,,Guide,] 7855 - return new PatchState(Produce.LIMPWURT, CropState.HARVESTABLE, 32 - value); + // Limpwurt plant[Pick,Inspect,Guide] 7855 + return new PatchState(Produce.LIMPWURT, CropState.HARVESTABLE, 0); } if (value >= 33 && value <= 35) { - // Scarecrow[Rake,Inspect,,Guide,Remove] 7918,7917,7916 + // Scarecrow[Rake,Inspect,Guide,Remove] 7918,7917,7916 return new PatchState(Produce.SCARECROW, CropState.GROWING, 35 - value); } if (value == 36) { - // Scarecrow[Remove,Inspect,,Guide,] 7915 + // Scarecrow[Remove,Inspect,Guide] 7915 return new PatchState(Produce.SCARECROW, CropState.GROWING, 0); } - if (value >= 37 && value <= 71) + if (value >= 37 && value <= 40) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 + // White lily[Inspect,Guide] 33650,33651,33652,33653 + return new PatchState(Produce.WHITE_LILY, CropState.GROWING, value - 37); + } + if (value == 41) + { + // White lily[Pick,Inspect,Guide] 33654 + return new PatchState(Produce.WHITE_LILY, CropState.HARVESTABLE, 0); + } + if (value >= 42 && value <= 71) + { + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 72 && value <= 75) { - // Marigold[,Inspect,,Guide,] 7872,7873,7874,7875 + // Marigold[Inspect,Guide] 7872,7873,7874,7875 return new PatchState(Produce.MARIGOLD, CropState.GROWING, value - 72); } if (value == 76) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 77 && value <= 80) { - // Rosemary[,Inspect,,Guide,] 7904,7905,7906,7907 + // Rosemary[Inspect,Guide] 7904,7905,7906,7907 return new PatchState(Produce.ROSEMARY, CropState.GROWING, value - 77); } if (value == 81) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 82 && value <= 85) { - // Nasturtium[,Inspect,,Guide,] 7888,7889,7890,7891 + // Nasturtium[Inspect,Guide] 7888,7889,7890,7891 return new PatchState(Produce.NASTURTIUM, CropState.GROWING, value - 82); } if (value == 86) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 87 && value <= 90) { - // Woad[,Inspect,,Guide,] 7924,7925,7926,7927 + // Woad plant[Inspect,Guide] 7924,7925,7926,7927 return new PatchState(Produce.WOAD, CropState.GROWING, value - 87); } if (value == 91) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 92 && value <= 95) { - // Limpwurt[,Inspect,,Guide,] 7856,7857,7858,7859 + // Limpwurt plant[Inspect,Guide] 7856,7857,7858,7859 return new PatchState(Produce.LIMPWURT, CropState.GROWING, value - 92); } - if (value >= 96 && value <= 136) + if (value >= 96 && value <= 100) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 101 && value <= 104) + { + // White lily[Inspect,Guide] 33655,33656,33657,33658 + return new PatchState(Produce.WHITE_LILY, CropState.GROWING, value - 101); + } + if (value >= 105 && value <= 136) + { + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 137 && value <= 139) { - // Diseased marigold[Cure,Inspect,,Guide,] 7876,7877,7878 + // Diseased marigold[Cure,Inspect,Guide] 7876,7877,7878 return new PatchState(Produce.MARIGOLD, CropState.DISEASED, value - 136); } if (value >= 140 && value <= 141) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 142 && value <= 144) { - // Diseased rosemary[Cure,Inspect,,Guide,] 7908,7909,7910 + // Diseased rosemary[Cure,Inspect,Guide] 7908,7909,7910 return new PatchState(Produce.ROSEMARY, CropState.DISEASED, value - 141); } if (value >= 145 && value <= 146) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 147 && value <= 149) { - // Diseased nasturtium[Cure,Inspect,,Guide,] 7892,7893,7894 + // Diseased nasturtium[Cure,Inspect,Guide] 7892,7893,7894 return new PatchState(Produce.NASTURTIUM, CropState.DISEASED, value - 146); } if (value >= 150 && value <= 151) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 152 && value <= 154) { - // Diseased woad[Cure,Inspect,,Guide,] 7928,7929,7930 + // Diseased woad plant[Cure,Inspect,Guide] 7928,7929,7930 return new PatchState(Produce.WOAD, CropState.DISEASED, value - 151); } if (value >= 155 && value <= 156) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 157 && value <= 159) { - // Diseased limpwurt[Cure,Inspect,,Guide,] 7860,7861,7862 + // Diseased limpwurt plant[Cure,Inspect,Guide] 7860,7861,7862 return new PatchState(Produce.LIMPWURT, CropState.DISEASED, value - 156); } - if (value >= 160 && value <= 200) + if (value >= 160 && value <= 165) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 201 && value <= 203) + if (value >= 166 && value <= 168) { - // Dead marigold[Clear,Inspect,,Guide,] 7879,7880,7881,7882 + // Diseased White lily[Cure,Inspect,Guide] 33659,33660,33661 + return new PatchState(Produce.WHITE_LILY, CropState.DISEASED, value - 165); + } + if (value >= 169 && value <= 200) + { + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 201 && value <= 204) + { + // Dead marigold[Clear,Inspect,Guide] 7879,7880,7881,7882 return new PatchState(Produce.MARIGOLD, CropState.DEAD, value - 200); } if (value == 205) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 206 && value <= 208) + if (value >= 206 && value <= 209) { - // Dead rosemary[Clear,Inspect,,Guide,] 7911,7912,7913,7914 + // Dead rosemary[Clear,Inspect,Guide] 7911,7912,7913,7914 return new PatchState(Produce.ROSEMARY, CropState.DEAD, value - 205); } if (value == 210) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 211 && value <= 213) + if (value >= 211 && value <= 214) { - // Dead nasturtium[Clear,Inspect,,Guide,] 7895,7896,7897,7898 + // Dead nasturtium[Clear,Inspect,Guide] 7895,7896,7897,7898 return new PatchState(Produce.NASTURTIUM, CropState.DEAD, value - 210); } if (value == 215) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } - if (value >= 216 && value <= 218) + if (value >= 216 && value <= 219) { - // Dead woad[Clear,Inspect,,Guide,] 7931,7932,7933,7934 + // Dead woad plant[Clear,Inspect,Guide] 7931,7932,7933,7934 return new PatchState(Produce.WOAD, CropState.DEAD, value - 215); } if (value == 220) { - // Flower Patch[Rake,Inspect,,Guide,] 7843 + // Flower Patch[Rake,Inspect,Guide] 7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 221 && value <= 224) { - // Dead limpwurt[Clear,Inspect,,Guide,] 7863,7864,7865,7866 + // Dead limpwurt plant[Clear,Inspect,Guide] 7863,7864,7865,7866 return new PatchState(Produce.LIMPWURT, CropState.DEAD, value - 220); } - if (value >= 225 && value <= 255) + if (value >= 225 && value <= 229) { - // Flower Patch[Rake,Inspect,,Guide,] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 230 && value <= 233) + { + // Dead White lily[Clear,Inspect,Guide] 33662,33663,33664,33665 + return new PatchState(Produce.WHITE_LILY, CropState.DEAD, value - 229); + } + if (value >= 234 && value <= 255) + { + // Flower Patch[Rake,Inspect,Guide] 7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843,7843 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -974,234 +1017,228 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7575,7574,7573 + // Bush Patch[Rake,Inspect,Guide] 7576,7575,7574,7573 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value == 4) { - // Bush Patch[Rake,Inspect,,Guide,] 7576 + // Bush Patch[Rake,Inspect,Guide] 7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 5 && value <= 9) { - // Redberry bush[,Inspect,,Guide,] 7692,7693,7694,7695,7696 + // Redberry bush[Inspect,Guide] 7692,7693,7694,7695,7696 return new PatchState(Produce.REDBERRIES, CropState.GROWING, value - 5); } if (value >= 10 && value <= 14) { - // Redberry bush[Clear,Inspect,,Guide,] 7697 - // Redberry bush[Pick-from,Inspect,,Guide,Clear] 7698,7699,7700,7701 + // Redberry bush[Clear,Inspect,Guide,Pick-from] 7697,7701,7701,7701,7701 return new PatchState(Produce.REDBERRIES, CropState.HARVESTABLE, value - 10); } if (value >= 15 && value <= 20) { - // Cadavaberry bush[,Inspect,,Guide,] 7581,7582,7583,7584,7585,7586 + // Cadavaberry bush[Inspect,Guide] 7581,7582,7583,7584,7585,7586 return new PatchState(Produce.CADAVABERRIES, CropState.GROWING, value - 15); } if (value >= 21 && value <= 25) { - // Cadavaberry bush[Clear,Inspect,,Guide,] 7587 - // Cadavaberry bush[Pick-from,Inspect,,Guide,Clear] 7588,7589,7590,7591 + // Cadavaberry bush[Clear,Inspect,Guide,Pick-from] 7587,7591,7591,7591,7591 return new PatchState(Produce.CADAVABERRIES, CropState.HARVESTABLE, value - 21); } if (value >= 26 && value <= 32) { - // Dwellberry bush[,Inspect,,Guide,] 7605,7606,7607,7608,7609,7610,7611 + // Dwellberry bush[Inspect,Guide] 7605,7606,7607,7608,7609,7610,7611 return new PatchState(Produce.DWELLBERRIES, CropState.GROWING, value - 26); } if (value >= 33 && value <= 37) { - // Dwellberry bush[Clear,Inspect,,Guide,] 7612 - // Dwellberry bush[Pick-from,Inspect,,Guide,Clear] 7613,7614,7615,7616 + // Dwellberry bush[Clear,Inspect,Guide,Pick-from] 7612,7616,7616,7616,7616 return new PatchState(Produce.DWELLBERRIES, CropState.HARVESTABLE, value - 33); } if (value >= 38 && value <= 45) { - // Jangerberry bush[,Inspect,,Guide,] 7632,7633,7634,7635,7636,7637,7638,7639 + // Jangerberry bush[Inspect,Guide] 7632,7633,7634,7635,7636,7637,7638,7639 return new PatchState(Produce.JANGERBERRIES, CropState.GROWING, value - 38); } if (value >= 46 && value <= 50) { - // Jangerberry bush[Clear,Inspect,,Guide,] 7640 - // Jangerberry bush[Pick-from,Inspect,,Guide,Clear] 7641,7642,7643,7644 + // Jangerberry bush[Clear,Inspect,Guide,Pick-from] 7640,7644,7644,7644,7644 return new PatchState(Produce.JANGERBERRIES, CropState.HARVESTABLE, value - 46); } if (value >= 51 && value <= 58) { - // Whiteberry bush[,Inspect,,Guide,] 7713,7714,7715,7716,7717,7718,7719,7720 + // Whiteberry bush[Inspect,Guide] 7713,7714,7715,7716,7717,7718,7719,7720 return new PatchState(Produce.WHITEBERRIES, CropState.GROWING, value - 51); } if (value >= 59 && value <= 63) { - // Whiteberry bush[Clear,Inspect,,Guide,] 7721 - // Whiteberry bush[Pick-from,Inspect,,Guide,Clear] 7722,7723,7724,7725 + // Whiteberry bush[Clear,Inspect,Guide,Pick-from] 7721,7725,7725,7725,7725 return new PatchState(Produce.WHITEBERRIES, CropState.HARVESTABLE, value - 59); } if (value >= 64 && value <= 69) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 70 && value <= 74) { - // Diseased redberry bush[Prune,Inspect,,Guide,] 7703,7704,7705,7706,7707 + // Diseased redberry bush[Prune,Inspect,Guide] 7703,7704,7705,7706,7707 return new PatchState(Produce.REDBERRIES, CropState.DISEASED, value - 69); } if (value >= 75 && value <= 79) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 80 && value <= 85) { - // Diseased cadavaberry bush[Prune,Inspect,,Guide,] 7593,7594,7595,7596,7597,7598 + // Diseased cadavaberry bush[Prune,Inspect,Guide] 7593,7594,7595,7596,7597,7598 return new PatchState(Produce.CADAVABERRIES, CropState.DISEASED, value - 79); } if (value >= 86 && value <= 90) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 91 && value <= 97) { - // Diseased dwellberry bush[Prune,Inspect,,Guide,] 7618,7619,7620,7621,7622,7623,7624 + // Diseased dwellberry bush[Prune,Inspect,Guide] 7618,7619,7620,7621,7622,7623,7624 return new PatchState(Produce.DWELLBERRIES, CropState.DISEASED, value - 90); } if (value >= 98 && value <= 102) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 103 && value <= 110) { - // Diseased jangerberry bush[Prune,Inspect,,Guide,] 7646,7647,7648,7649,7650,7651,7652,7653 + // Diseased jangerberry bush[Prune,Inspect,Guide] 7646,7647,7648,7649,7650,7651,7652,7653 return new PatchState(Produce.JANGERBERRIES, CropState.DISEASED, value - 102); } if (value >= 111 && value <= 115) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 116 && value <= 123) { - // Diseased whiteberry bush[Prune,Inspect,,Guide,] 7727,7728,7729,7730,7731,7732,7733,7734 + // Diseased whiteberry bush[Prune,Inspect,Guide] 7727,7728,7729,7730,7731,7732,7733,7734 return new PatchState(Produce.WHITEBERRIES, CropState.DISEASED, value - 115); } if (value >= 124 && value <= 133) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576,7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576,7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 134 && value <= 138) { - // Dead redberry bush[Clear,Inspect,,Guide,] 7708,7709,7710,7711,7712 + // Dead redberry bush[Clear,Inspect,Guide] 7708,7709,7710,7711,7712 return new PatchState(Produce.REDBERRIES, CropState.DEAD, value - 133); } if (value >= 139 && value <= 143) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 144 && value <= 149) { - // Dead cadavaberry bush[Clear,Inspect,,Guide,] 7599,7600,7601,7602,7603,7604 + // Dead cadavaberry bush[Clear,Inspect,Guide] 7599,7600,7601,7602,7603,7604 return new PatchState(Produce.CADAVABERRIES, CropState.DEAD, value - 143); } if (value >= 150 && value <= 154) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 155 && value <= 161) { - // Dead dwellberry bush[Clear,Inspect,,Guide,] 7625,7626,7627,7628,7629,7630,7631 + // Dead dwellberry bush[Clear,Inspect,Guide] 7625,7626,7627,7628,7629,7630,7631 return new PatchState(Produce.DWELLBERRIES, CropState.DEAD, value - 154); } if (value >= 162 && value <= 166) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 167 && value <= 174) { - // Dead jangerberry bush[Clear,Inspect,,Guide,] 7654,7655,7656,7657,7658,7659,7660,7661 + // Dead jangerberry bush[Clear,Inspect,Guide] 7654,7655,7656,7657,7658,7659,7660,7661 return new PatchState(Produce.JANGERBERRIES, CropState.DEAD, value - 166); } if (value >= 175 && value <= 179) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 180 && value <= 187) { - // Dead whiteberry bush[Clear,Inspect,,Guide,] 7735,7736,7737,7738,7739,7740,7741,7742 + // Dead whiteberry bush[Clear,Inspect,Guide] 7735,7736,7737,7738,7739,7740,7741,7742 return new PatchState(Produce.WHITEBERRIES, CropState.DEAD, value - 179); } if (value >= 188 && value <= 196) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 197 && value <= 204) { - // Poison Ivy bush[,Inspect,,Guide,] 7662,7663,7664,7665,7666,7667,7668,7669 + // Poison Ivy bush[Inspect,Guide] 7662,7663,7664,7665,7666,7667,7668,7669 return new PatchState(Produce.POISON_IVY, CropState.GROWING, value - 197); } if (value >= 205 && value <= 209) { - // Poison Ivy bush[Clear,Inspect,,Guide,] 7670 - // Poison Ivy bush[Pick-from,Inspect,,Guide,Clear] 7671,7672,7673,7674 + // Poison Ivy bush[Clear,Inspect,Guide,Pick-from] 7670,7674,7674,7674,7674 return new PatchState(Produce.POISON_IVY, CropState.HARVESTABLE, value - 205); } if (value >= 210 && value <= 216) { - // Diseased Poison Ivy bush[Prune,Inspect,,Guide,] 7676,7677,7678,7679,7680,7681,7682 + // Diseased Poison Ivy bush[Prune,Inspect,Guide] 7676,7677,7678,7679,7680,7681,7682 return new PatchState(Produce.POISON_IVY, CropState.DISEASED, value - 209); } if (value >= 217 && value <= 224) { - // Dead Poison Ivy bush[Clear,Inspect,,Guide,] 7684,7685,7686,7687,7688,7689,7690,7691 + // Dead Poison Ivy bush[Clear,Inspect,Guide] 7684,7685,7686,7687,7688,7689,7690,7691 return new PatchState(Produce.POISON_IVY, CropState.DEAD, value - 216); } if (value == 225) { - // Diseased Poison Ivy bush[Prune,Inspect,,Guide,] 7683 - return new PatchState(Produce.POISON_IVY, CropState.DISEASED, 7); + // Diseased Poison Ivy bush[Prune,Inspect,Guide] 7683 + return new PatchState(Produce.POISON_IVY, CropState.DISEASED, 8); } if (value >= 226 && value <= 249) { - // Bush Patch[Rake,Inspect,,Guide,] 7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576 + // Bush Patch[Rake,Inspect,Guide] 7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576,7576 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value == 250) { - // Redberry bush[Check-health,Inspect,,Guide,] 7702 - return new PatchState(Produce.REDBERRIES, CropState.GROWING, 5); + // Redberry bush[Check-health,Inspect,Guide] 7702 + return new PatchState(Produce.REDBERRIES, CropState.GROWING, Produce.REDBERRIES.getStages() - 1); } if (value == 251) { - // Cadavaberry bush[Check-health,Inspect,,Guide,] 7592 - return new PatchState(Produce.CADAVABERRIES, CropState.GROWING, 6); + // Cadavaberry bush[Check-health,Inspect,Guide] 7592 + return new PatchState(Produce.CADAVABERRIES, CropState.GROWING, Produce.CADAVABERRIES.getStages() - 1); } if (value == 252) { - // Dwellberry bush[Check-health,Inspect,,Guide,] 7617 - return new PatchState(Produce.DWELLBERRIES, CropState.GROWING, 7); + // Dwellberry bush[Check-health,Inspect,Guide] 7617 + return new PatchState(Produce.DWELLBERRIES, CropState.GROWING, Produce.DWELLBERRIES.getStages() - 1); } if (value == 253) { - // Jangerberry bush[Check-health,Inspect,,Guide,] 7645 - return new PatchState(Produce.JANGERBERRIES, CropState.GROWING, 8); + // Jangerberry bush[Check-health,Inspect,Guide] 7645 + return new PatchState(Produce.JANGERBERRIES, CropState.GROWING, Produce.JANGERBERRIES.getStages() - 1); } if (value == 254) { - // Whiteberry bush[Check-health,Inspect,,Guide,] 7726 - return new PatchState(Produce.WHITEBERRIES, CropState.GROWING, 8); + // Whiteberry bush[Check-health,Inspect,Guide] 7726 + return new PatchState(Produce.WHITEBERRIES, CropState.GROWING, Produce.WHITEBERRIES.getStages() - 1); } if (value == 255) { - // Poison Ivy bush[Check-health,Inspect,,Guide,] 7675 - return new PatchState(Produce.POISON_IVY, CropState.GROWING, 8); + // Poison Ivy bush[Check-health,Inspect,Guide] 7675 + return new PatchState(Produce.POISON_IVY, CropState.GROWING, Produce.POISON_IVY.getStages() - 1); } return null; } @@ -1213,243 +1250,277 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8049,8048,8047 + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8049,8048,8047 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8050,8050,8050 + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8050,8050,8050 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 8 && value <= 13) { - // Apple tree[,Inspect,,Guide,] 7935,7936,7937,7938,7939,7940 + // Apple tree[Inspect,Guide] 7935,7936,7937,7938,7939,7940 return new PatchState(Produce.APPLE, CropState.GROWING, value - 8); } if (value >= 14 && value <= 20) { - // Apple tree[Chop-down,Inspect,,Guide,] 7941,7942,7943,7944,7945,7946,7947 + // Apple tree[Chop-down,Inspect,Guide,Pick-apple] 7941,7942,7943,7944,7945,7946,7947 return new PatchState(Produce.APPLE, CropState.HARVESTABLE, value - 14); } if (value >= 21 && value <= 26) { - // Diseased apple tree[Prune,Inspect,,Guide,] 7949,7950,7951,7952,7953,7954 + // Diseased apple tree[Prune,Inspect,Guide] 7949,7950,7951,7952,7953,7954 return new PatchState(Produce.APPLE, CropState.DISEASED, value - 20); } if (value >= 27 && value <= 32) { - // Dead apple tree[Clear,Inspect,,Guide,] 7955,7956,7957,7958,7959,7960 + // Dead apple tree[Clear,Inspect,Guide] 7955,7956,7957,7958,7959,7960 return new PatchState(Produce.APPLE, CropState.DEAD, value - 26); } if (value == 33) { - // Apple tree stump[Clear,Inspect,,Guide,] 7961 + // Apple tree stump[Clear,Inspect,Guide] 7961 return new PatchState(Produce.APPLE, CropState.HARVESTABLE, 0); } if (value == 34) { - // Apple tree[Check-health,Inspect,,Guide,] 7948 - return new PatchState(Produce.APPLE, CropState.HARVESTABLE, 6); + // Apple tree[Check-health,Inspect,Guide] 7948 + return new PatchState(Produce.APPLE, CropState.GROWING, Produce.APPLE.getStages() - 1); } if (value >= 35 && value <= 40) { - // Banana tree[,Inspect,,Guide,] 7993,7994,7995,7996,7997,7998 + // Banana tree[Inspect,Guide] 7993,7994,7995,7996,7997,7998 return new PatchState(Produce.BANANA, CropState.GROWING, value - 35); } if (value >= 41 && value <= 47) { - // Banana tree[Chop-down,Inspect,,Guide,] 8000,8001,8002,8003,8004,8005,8006 + // Banana tree[Chop-down,Inspect,Guide,Pick-banana] 8000,8001,8002,8003,8004,8005,8006 return new PatchState(Produce.BANANA, CropState.HARVESTABLE, value - 41); } if (value >= 48 && value <= 53) { - // Diseased banana tree[Prune,Inspect,,Guide,] 8007,8008,8009,8010,8011,8012 + // Diseased banana tree[Prune,Inspect,Guide] 8007,8008,8009,8010,8011,8012 return new PatchState(Produce.BANANA, CropState.DISEASED, value - 47); } if (value >= 54 && value <= 59) { - // Dead banana tree[Clear,Inspect,,Guide,] 8013,8014,8015,8016,8017,8018 + // Dead banana tree[Clear,Inspect,Guide] 8013,8014,8015,8016,8017,8018 return new PatchState(Produce.BANANA, CropState.DEAD, value - 53); } if (value == 60) { - // Banana tree stump[Clear,Inspect,,Guide,] 8019 + // Banana tree stump[Clear,Inspect,Guide] 8019 return new PatchState(Produce.BANANA, CropState.HARVESTABLE, 0); } if (value == 61) { - // Banana tree[Check-health,Inspect,,Guide,] 7999 - return new PatchState(Produce.BANANA, CropState.HARVESTABLE, 6); + // Banana tree[Check-health,Inspect,Guide] 7999 + return new PatchState(Produce.BANANA, CropState.GROWING, Produce.BANANA.getStages() - 1); } if (value >= 62 && value <= 71) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 72 && value <= 77) { - // Orange tree[,Inspect,,Guide,] 8051,8052,8053,8054,8055,8056 + // Orange tree[Inspect,Guide] 8051,8052,8053,8054,8055,8056 return new PatchState(Produce.ORANGE, CropState.GROWING, value - 72); } if (value >= 78 && value <= 84) { - // Orange tree[Chop-down,Inspect,,Guide,] 8057,8058,8059,8060,8061,8062,8063 + // Orange tree[Chop-down,Inspect,Guide,Pick-orange] 8057,8058,8059,8060,8061,8062,8063 return new PatchState(Produce.ORANGE, CropState.HARVESTABLE, value - 78); } - if (value >= 85 && value <= 90) + if (value >= 85 && value <= 89) { - // Diseased orange tree[Prune,Inspect,,Guide,] 8065,8066,8067,8068,8069 - // Diseased orange tree[Chop-down,Inspect,,Guide,] 8070 + // Diseased orange tree[Prune,Inspect,Guide] 8065,8066,8067,8068,8069 return new PatchState(Produce.ORANGE, CropState.DISEASED, value - 84); } + if (value == 90) + { + // Diseased orange tree[Chop-down,Inspect,Guide] 8070 + return new PatchState(Produce.ORANGE, CropState.DISEASED, 6); + } if (value >= 91 && value <= 96) { - // Dead orange tree[Clear,Inspect,,Guide,] 8071,8072,8073,8074,8075,8076 + // Dead orange tree[Clear,Inspect,Guide] 8071,8072,8073,8074,8075,8076 return new PatchState(Produce.ORANGE, CropState.DEAD, value - 90); } if (value == 97) { - // Orange tree stump[Clear,Inspect,,Guide,] 8077 + // Orange tree stump[Clear,Inspect,Guide] 8077 return new PatchState(Produce.ORANGE, CropState.HARVESTABLE, 0); } if (value == 98) { - // Orange tree[Check-health,Inspect,,Guide,] 8064 - return new PatchState(Produce.ORANGE, CropState.HARVESTABLE, 6); + // Orange tree[Check-health,Inspect,Guide] 8064 + return new PatchState(Produce.ORANGE, CropState.GROWING, Produce.ORANGE.getStages() - 1); } if (value >= 99 && value <= 104) { - // Curry tree[,Inspect,,Guide,] 8020,8021,8022,8023,8024,8025 + // Curry tree[Inspect,Guide] 8020,8021,8022,8023,8024,8025 return new PatchState(Produce.CURRY, CropState.GROWING, value - 99); } if (value >= 105 && value <= 111) { - // Curry tree[Chop-down,Inspect,,Guide,] 8026,8027,8028,8029,8030,8031,8032 + // Curry tree[Chop-down,Inspect,Guide,Pick-leaf] 8026,8027,8028,8029,8030,8031,8032 return new PatchState(Produce.CURRY, CropState.HARVESTABLE, value - 105); } if (value >= 112 && value <= 117) { - // Diseased curry tree[Prune,Inspect,,Guide,] 8034,8035,8036,8037,8038,8039 + // Diseased curry tree[Prune,Inspect,Guide] 8034,8035,8036,8037,8038,8039 return new PatchState(Produce.CURRY, CropState.DISEASED, value - 111); } if (value >= 118 && value <= 123) { - // Dead curry tree[Clear,Inspect,,Guide,] 8040,8041,8042,8043,8044,8045 + // Dead curry tree[Clear,Inspect,Guide] 8040,8041,8042,8043,8044,8045 return new PatchState(Produce.CURRY, CropState.DEAD, value - 117); } if (value == 124) { - // Curry tree stump[Clear,Inspect,,Guide,] 8046 + // Curry tree stump[Clear,Inspect,Guide] 8046 return new PatchState(Produce.CURRY, CropState.HARVESTABLE, 0); } if (value == 125) { - // Curry tree[Check-health,Inspect,,Guide,] 8033 - return new PatchState(Produce.CURRY, CropState.HARVESTABLE, 6); + // Curry tree[Check-health,Inspect,Guide] 8033 + return new PatchState(Produce.CURRY, CropState.GROWING, Produce.CURRY.getStages() - 1); } if (value >= 126 && value <= 135) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 136 && value <= 141) { - // Pineapple[,Inspect,,Guide,] 7966,7967,7968,7969,7970,7971 + // Pineapple plant[Inspect,Guide] 7966,7967,7968,7969,7970,7971 return new PatchState(Produce.PINEAPPLE, CropState.GROWING, value - 136); } if (value >= 142 && value <= 148) { - // Pineapple[Chop down,Inspect,,Guide,] 7972,7973,7974,7975,7976,7977,7978 + // Pineapple plant[Chop down,Inspect,Guide,Pick-pineapple] 7972,7973,7974,7975,7976,7977,7978 return new PatchState(Produce.PINEAPPLE, CropState.HARVESTABLE, value - 142); } if (value >= 149 && value <= 154) { - // Diseased pineapple[Prune,Inspect,,Guide,] 7980,7981,7982,7983,7984,7985 + // Diseased pineapple plant[Prune,Inspect,Guide] 7980,7981,7982,7983,7984,7985 return new PatchState(Produce.PINEAPPLE, CropState.DISEASED, value - 148); } if (value >= 155 && value <= 160) { - // Dead pineapple[Clear,Inspect,,Guide,] 7986,7987,7988,7989,7990,7991 + // Dead pineapple plant[Clear,Inspect,Guide] 7986,7987,7988,7989,7990,7991 return new PatchState(Produce.PINEAPPLE, CropState.DEAD, value - 154); } if (value == 161) { - // Pineapple stump[Clear,Inspect,,Guide,] 7992 + // Pineapple plant stump[Clear,Inspect,Guide] 7992 return new PatchState(Produce.PINEAPPLE, CropState.HARVESTABLE, 0); } if (value == 162) { - // Pineapple[Check-health,Inspect,,Guide,] 7979 - return new PatchState(Produce.PINEAPPLE, CropState.HARVESTABLE, 6); + // Pineapple plant[Check-health,Inspect,Guide] 7979 + return new PatchState(Produce.PINEAPPLE, CropState.GROWING, Produce.PINEAPPLE.getStages() - 1); } if (value >= 163 && value <= 168) { - // Papaya tree[,Inspect,,Guide,] 8105,8106,8107,8108,8109,8110 + // Papaya tree[Inspect,Guide] 8105,8106,8107,8108,8109,8110 return new PatchState(Produce.PAPAYA, CropState.GROWING, value - 163); } if (value >= 169 && value <= 175) { - // Papaya tree[Chop-down,Inspect,,Guide,] 8111,8112,8113,8114,8115,8116,8117 + // Papaya tree[Chop-down,Inspect,Guide,Pick-fruit] 8111,8112,8113,8114,8115,8116,8117 return new PatchState(Produce.PAPAYA, CropState.HARVESTABLE, value - 169); } if (value >= 176 && value <= 181) { - // Diseased papaya tree[Prune,Inspect,,Guide,] 8119,8120,8121,8122,8123,8124 + // Diseased papaya tree[Prune,Inspect,Guide] 8119,8120,8121,8122,8123,8124 return new PatchState(Produce.PAPAYA, CropState.DISEASED, value - 175); } if (value >= 182 && value <= 187) { - // Dead papaya tree[Clear,Inspect,,Guide,] 8125,8126,8127,8128,8129,8130 + // Dead papaya tree[Clear,Inspect,Guide] 8125,8126,8127,8128,8129,8130 return new PatchState(Produce.PAPAYA, CropState.DEAD, value - 181); } if (value == 188) { - // Papaya tree stump[Clear,Inspect,,Guide,] 8131 + // Papaya tree stump[Clear,Inspect,Guide] 8131 return new PatchState(Produce.PAPAYA, CropState.HARVESTABLE, 0); } if (value == 189) { - // Papaya tree[Check-health,Inspect,,Guide,] 8118 - return new PatchState(Produce.PAPAYA, CropState.HARVESTABLE, 6); + // Papaya tree[Check-health,Inspect,Guide] 8118 + return new PatchState(Produce.PAPAYA, CropState.GROWING, Produce.PAPAYA.getStages() - 1); } if (value >= 190 && value <= 199) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 200 && value <= 205) { - // Palm tree[,Inspect,,Guide,] 8078,8079,8080,8081,8082,8083 + // Palm tree[Inspect,Guide] 8078,8079,8080,8081,8082,8083 return new PatchState(Produce.PALM, CropState.GROWING, value - 200); } if (value >= 206 && value <= 212) { - // Palm tree[Chop-down,Inspect,,Guide,] 8084,8085,8086,8087,8088,8089,8090 + // Palm tree[Chop-down,Inspect,Guide,Pick-coconut] 8084,8085,8086,8087,8088,8089,8090 return new PatchState(Produce.PALM, CropState.HARVESTABLE, value - 206); } if (value >= 213 && value <= 218) { - // Diseased palm tree[Prune,Inspect,,Guide,] 8092,8093,8094,8095,8096,8097 + // Diseased palm tree[Prune,Inspect,Guide] 8092,8093,8094,8095,8096,8097 return new PatchState(Produce.PALM, CropState.DISEASED, value - 212); } if (value >= 219 && value <= 224) { - // Dead palm tree[Clear,Inspect,,Guide,] 8098,8099,8100,8101,8102,8103 + // Dead palm tree[Clear,Inspect,Guide] 8098,8099,8100,8101,8102,8103 return new PatchState(Produce.PALM, CropState.DEAD, value - 218); } if (value == 225) { - // Palm tree stump[Clear,Inspect,,Guide,] 8104 + // Palm tree stump[Clear,Inspect,Guide] 8104 return new PatchState(Produce.PALM, CropState.HARVESTABLE, 0); } if (value == 226) { - // Palm tree[Check-health,Inspect,,Guide,] 8091 - return new PatchState(Produce.PALM, CropState.HARVESTABLE, 6); + // Palm tree[Check-health,Inspect,Guide] 8091 + return new PatchState(Produce.PALM, CropState.GROWING, Produce.PALM.getStages() - 1); } - if (value >= 227 && value <= 255) + if (value >= 227 && value <= 232) { - // Fruit Tree Patch[Rake,Inspect,,Guide,] 8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050,8050 + // Dragonfruit tree[Inspect,Guide] 34008,34009,34010,34011,34012,34013 + return new PatchState(Produce.DRAGONFRUIT, CropState.GROWING, value - 227); + } + if (value >= 233 && value <= 239) + { + // Dragonfruit tree[Chop down,Inspect,Guide,Pick-dragonfruit] 34014,34015,34016,34017,34018,34019,34020 + return new PatchState(Produce.DRAGONFRUIT, CropState.HARVESTABLE, value - 233); + } + if (value >= 240 && value <= 245) + { + // Diseased dragonfruit plant[Prune,Inspect,Guide] 34022,34023,34024,34025,34026,34027 + return new PatchState(Produce.DRAGONFRUIT, CropState.DISEASED, value - 239); + } + if (value >= 246 && value <= 251) + { + // Dead dragonfruit plant[Clear,Inspect,Guide] 34028,34029,34030,34031,34032,34033 + return new PatchState(Produce.DRAGONFRUIT, CropState.DEAD, value - 245); + } + if (value == 252) + { + // Dragonfruit tree stump[Clear,Inspect,Guide] 34034 + return new PatchState(Produce.DRAGONFRUIT, CropState.HARVESTABLE, 0); + } + if (value == 253) + { + // Dragonfruit tree[Check-health,Inspect,Guide] 34021 + return new PatchState(Produce.DRAGONFRUIT, CropState.GROWING, Produce.DRAGONFRUIT.getStages() - 1); + } + if (value >= 254 && value <= 255) + { + // Fruit Tree Patch[Rake,Inspect,Guide] 8050,8050 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -1462,297 +1533,297 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8209,8208,8207 + // Hops Patch[Rake,Inspect,Guide] 8210,8209,8208,8207 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Hammerstone Hops[,Inspect,,Guide,] 8177,8178,8179,8180 + // Hammerstone Hops[Inspect,Guide] 8177,8178,8179,8180 return new PatchState(Produce.HAMMERSTONE, CropState.GROWING, value - 4); } if (value >= 8 && value <= 10) { - // Hammerstone Hops[Harvest,Inspect,,Guide,] 8181,8181,8181 + // Hammerstone Hops[Harvest,Inspect,Guide] 8181,8181,8181 return new PatchState(Produce.HAMMERSTONE, CropState.HARVESTABLE, value - 8); } if (value >= 11 && value <= 15) { - // Asgarnian Hops[,Inspect,,Guide,] 8154,8155,8156,8157,8158 + // Asgarnian Hops[Inspect,Guide] 8154,8155,8156,8157,8158 return new PatchState(Produce.ASGARNIAN, CropState.GROWING, value - 11); } if (value >= 16 && value <= 18) { - // Asgarnian Hops[Harvest,Inspect,,Guide,] 8159,8159,8159 + // Asgarnian Hops[Harvest,Inspect,Guide] 8159,8159,8159 return new PatchState(Produce.ASGARNIAN, CropState.HARVESTABLE, value - 16); } if (value >= 19 && value <= 24) { - // Yanillian Hops[,Inspect,,Guide,] 8288,8289,8290,8291,8292,8293 + // Yanillian Hops[Inspect,Guide] 8288,8289,8290,8291,8292,8293 return new PatchState(Produce.YANILLIAN, CropState.GROWING, value - 19); } if (value >= 25 && value <= 27) { - // Yanillian Hops[Harvest,Inspect,,Guide,] 8294,8294,8294 + // Yanillian Hops[Harvest,Inspect,Guide] 8294,8294,8294 return new PatchState(Produce.YANILLIAN, CropState.HARVESTABLE, value - 25); } if (value >= 28 && value <= 34) { - // Krandorian Hops[,Inspect,,Guide,] 8211,8212,8213,8214,8215,8216,8217 + // Krandorian Hops[Inspect,Guide] 8211,8212,8213,8214,8215,8216,8217 return new PatchState(Produce.KRANDORIAN, CropState.GROWING, value - 28); } if (value >= 35 && value <= 37) { - // Krandorian Hops[Harvest,Inspect,,Guide,] 8218,8218,8218 + // Krandorian Hops[Harvest,Inspect,Guide] 8218,8218,8218 return new PatchState(Produce.KRANDORIAN, CropState.HARVESTABLE, value - 35); } if (value >= 38 && value <= 45) { - // Wildblood Hops[,Inspect,,Guide,] 8257,8258,8259,8260,8261,8262,8263,8264 + // Wildblood Hops[Inspect,Guide] 8257,8258,8259,8260,8261,8262,8263,8264 return new PatchState(Produce.WILDBLOOD, CropState.GROWING, value - 38); } if (value >= 46 && value <= 48) { - // Wildblood Hops[Harvest,Inspect,,Guide,] 8265,8265,8265 + // Wildblood Hops[Harvest,Inspect,Guide] 8265,8265,8265 return new PatchState(Produce.WILDBLOOD, CropState.HARVESTABLE, value - 46); } if (value >= 49 && value <= 52) { - // Barley[,Inspect,,Guide,] 8192,8193,8194,8195 + // Barley[Inspect,Guide] 8192,8193,8194,8195 return new PatchState(Produce.BARLEY, CropState.GROWING, value - 49); } if (value >= 53 && value <= 55) { - // Barley[Harvest,Inspect,,Guide,] 8196,8196,8196 + // Barley[Harvest,Inspect,Guide] 8196,8196,8196 return new PatchState(Produce.BARLEY, CropState.HARVESTABLE, value - 53); } if (value >= 56 && value <= 60) { - // Jute[,Inspect,,Guide,] 8238,8239,8240,8241,8242 + // Jute[Inspect,Guide] 8238,8239,8240,8241,8242 return new PatchState(Produce.JUTE, CropState.GROWING, value - 56); } if (value >= 61 && value <= 63) { - // Jute[Harvest,Inspect,,Guide,] 8243,8243,8243 + // Jute[Harvest,Inspect,Guide] 8243,8243,8243 return new PatchState(Produce.JUTE, CropState.HARVESTABLE, value - 61); } if (value >= 64 && value <= 67) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 68 && value <= 71) { - // Hammerstone Hops[,Inspect,,Guide,] 8182,8183,8184,8185 + // Hammerstone Hops[Inspect,Guide] 8182,8183,8184,8185 return new PatchState(Produce.HAMMERSTONE, CropState.GROWING, value - 68); } if (value >= 72 && value <= 74) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 75 && value <= 79) { - // Asgarnian Hops[,Inspect,,Guide,] 8160,8161,8162,8163,8164 + // Asgarnian Hops[Inspect,Guide] 8160,8161,8162,8163,8164 return new PatchState(Produce.ASGARNIAN, CropState.GROWING, value - 75); } if (value >= 80 && value <= 82) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 83 && value <= 88) { - // Yanillian Hops[,Inspect,,Guide,] 8295,8296,8297,8298,8299,8300 + // Yanillian Hops[Inspect,Guide] 8295,8296,8297,8298,8299,8300 return new PatchState(Produce.YANILLIAN, CropState.GROWING, value - 83); } if (value >= 89 && value <= 91) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 92 && value <= 98) { - // Krandorian Hops[,Inspect,,Guide,] 8219,8220,8221,8222,8223,8224,8225 + // Krandorian Hops[Inspect,Guide] 8219,8220,8221,8222,8223,8224,8225 return new PatchState(Produce.KRANDORIAN, CropState.GROWING, value - 92); } if (value >= 99 && value <= 101) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 102 && value <= 109) { - // Wildblood Hops[,Inspect,,Guide,] 8266,8267,8268,8269,8270,8271,8272,8273 + // Wildblood Hops[Inspect,Guide] 8266,8267,8268,8269,8270,8271,8272,8273 return new PatchState(Produce.WILDBLOOD, CropState.GROWING, value - 102); } if (value >= 110 && value <= 112) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 113 && value <= 116) { - // Barley[,Inspect,,Guide,] 8197,8198,8199,8200 + // Barley[Inspect,Guide] 8197,8198,8199,8200 return new PatchState(Produce.BARLEY, CropState.GROWING, value - 113); } if (value >= 117 && value <= 119) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 120 && value <= 124) { - // Jute[,Inspect,,Guide,] 8244,8245,8246,8247,8248 + // Jute[Inspect,Guide] 8244,8245,8246,8247,8248 return new PatchState(Produce.JUTE, CropState.GROWING, value - 120); } if (value >= 125 && value <= 132) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210,8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210,8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 133 && value <= 135) { - // Diseased Hammerstone Hops[Cure,Inspect,,Guide,] 8186,8187,8188 + // Diseased Hammerstone Hops[Cure,Inspect,Guide] 8186,8187,8188 return new PatchState(Produce.HAMMERSTONE, CropState.DISEASED, value - 132); } if (value >= 136 && value <= 139) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 140 && value <= 143) { - // Diseased Asgarnian Hops[Cure,Inspect,,Guide,] 8165,8166,8167,8168 + // Diseased Asgarnian Hops[Cure,Inspect,Guide] 8165,8166,8167,8168 return new PatchState(Produce.ASGARNIAN, CropState.DISEASED, value - 139); } if (value >= 144 && value <= 147) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 148 && value <= 152) { - // Diseased Yanillian Hops[Cure,Inspect,,Guide,] 8301,8302,8303,8304,8305 + // Diseased Yanillian Hops[Cure,Inspect,Guide] 8301,8302,8303,8304,8305 return new PatchState(Produce.YANILLIAN, CropState.DISEASED, value - 147); } if (value >= 153 && value <= 156) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 157 && value <= 162) { - // Diseased Krandorian Hops[Cure,Inspect,,Guide,] 8226,8227,8228,8229,8230,8231 + // Diseased Krandorian Hops[Cure,Inspect,Guide] 8226,8227,8228,8229,8230,8231 return new PatchState(Produce.KRANDORIAN, CropState.DISEASED, value - 156); } if (value >= 163 && value <= 166) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 167 && value <= 173) { - // Diseased Wildblood Hops[Cure,Inspect,,Guide,] 8274,8275,8276,8277,8278,8279,8280 + // Diseased Wildblood Hops[Cure,Inspect,Guide] 8274,8275,8276,8277,8278,8279,8280 return new PatchState(Produce.WILDBLOOD, CropState.DISEASED, value - 166); } if (value >= 174 && value <= 177) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 178 && value <= 180) { - // Diseased Barley[Cure,Inspect,,Guide,] 8201,8202,8203 + // Diseased Barley[Cure,Inspect,Guide] 8201,8202,8203 return new PatchState(Produce.BARLEY, CropState.DISEASED, value - 177); } if (value == 181) { - // Hops Patch[Rake,Inspect,,Guide,] 8210 + // Hops Patch[Rake,Inspect,Guide] 8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 183 && value <= 184) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 185 && value <= 188) { - // Diseased Jute[Cure,Inspect,,Guide,] 8249,8250,8251,8252 + // Diseased Jute[Cure,Inspect,Guide] 8249,8250,8251,8252 return new PatchState(Produce.JUTE, CropState.DISEASED, value - 184); } if (value >= 189 && value <= 196) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210,8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210,8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 197 && value <= 199) { - // Dead Hammerstone Hops[Clear,Inspect,,Guide,] 8189,8190,8191 + // Dead Hammerstone Hops[Clear,Inspect,Guide] 8189,8190,8191 return new PatchState(Produce.HAMMERSTONE, CropState.DEAD, value - 196); } if (value >= 200 && value <= 203) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 204 && value <= 207) { - // Dead Asgarnian Hops[Clear,Inspect,,Guide,] 8169,8170,8171,8172 + // Dead Asgarnian Hops[Clear,Inspect,Guide] 8169,8170,8171,8172 return new PatchState(Produce.ASGARNIAN, CropState.DEAD, value - 203); } if (value >= 208 && value <= 211) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 212 && value <= 216) { - // Dead Yanillian Hops[Clear,Inspect,,Guide,] 8306,8307,8308,8309,8310 + // Dead Yanillian Hops[Clear,Inspect,Guide] 8306,8307,8308,8309,8310 return new PatchState(Produce.YANILLIAN, CropState.DEAD, value - 211); } if (value >= 217 && value <= 220) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 221 && value <= 226) { - // Dead Krandorian Hops[Clear,Inspect,,Guide,] 8232,8233,8234,8235,8236,8237 + // Dead Krandorian Hops[Clear,Inspect,Guide] 8232,8233,8234,8235,8236,8237 return new PatchState(Produce.KRANDORIAN, CropState.DEAD, value - 220); } if (value >= 227 && value <= 230) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 231 && value <= 237) { - // Dead Wildblood Hops[Clear,Inspect,,Guide,] 8281,8282,8283,8284,8285,8286,8287 + // Dead Wildblood Hops[Clear,Inspect,Guide] 8281,8282,8283,8284,8285,8286,8287 return new PatchState(Produce.WILDBLOOD, CropState.DEAD, value - 230); } if (value >= 238 && value <= 241) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 242 && value <= 244) { - // Dead Barley[Clear,Inspect,,Guide,] 8204,8205,8206 + // Dead Barley[Clear,Inspect,Guide] 8204,8205,8206 return new PatchState(Produce.BARLEY, CropState.DEAD, value - 241); } if (value >= 245 && value <= 248) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 249 && value <= 252) { - // Dead Jute[Clear,Inspect,,Guide,] 8253,8254,8255,8256 + // Dead Jute[Clear,Inspect,Guide] 8253,8254,8255,8256 return new PatchState(Produce.JUTE, CropState.DEAD, value - 248); } if (value >= 253 && value <= 255) { - // Hops Patch[Rake,Inspect,,Guide,] 8210,8210,8210 + // Hops Patch[Rake,Inspect,Guide] 8210,8210,8210 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -1765,282 +1836,277 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8394,8393,8392 + // Tree patch[Rake,Inspect,Guide] 8395,8394,8393,8392 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395,8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395,8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 8 && value <= 11) { - // Oak[,Inspect,,Guide,] 8462,8463,8464,8465 + // Oak[Inspect,Guide] 8462,8463,8464,8465 return new PatchState(Produce.OAK, CropState.GROWING, value - 8); } if (value == 12) { - // Oak[Check-health,Inspect,,Guide,] 8466 - return new PatchState(Produce.OAK, CropState.GROWING, 4); + // Oak[Check-health,Inspect,Guide] 8466 + return new PatchState(Produce.OAK, CropState.GROWING, Produce.OAK.getStages() - 1); } if (value == 13) { - // Oak[Chop down,Inspect,,Guide,] 8467 + // Oak[Chop down,Inspect,Guide] 8467 return new PatchState(Produce.OAK, CropState.HARVESTABLE, 0); } if (value == 14) { - // Oak tree stump[Clear,Inspect,,Guide,] 8468 + // Oak tree stump[Clear,Inspect,Guide] 8468 return new PatchState(Produce.OAK, CropState.HARVESTABLE, 0); } if (value >= 15 && value <= 20) { - // Willow Tree[,Inspect,,Guide,] 8481,8482,8483,8484,8485,8486 + // Willow Tree[Inspect,Guide] 8481,8482,8483,8484,8485,8486 return new PatchState(Produce.WILLOW, CropState.GROWING, value - 15); } if (value == 21) { - // Willow Tree[Check-health,Inspect,,Guide,] 8487 - return new PatchState(Produce.WILLOW, CropState.GROWING, 6); + // Willow Tree[Check-health,Inspect,Guide] 8487 + return new PatchState(Produce.WILLOW, CropState.GROWING, Produce.WILLOW.getStages() - 1); } if (value == 22) { - // Willow Tree[Chop down,Inspect,,Guide,] 8488 + // Willow Tree[Chop down,Inspect,Guide] 8488 return new PatchState(Produce.WILLOW, CropState.HARVESTABLE, 0); } if (value == 23) { - // Willow tree stump[Clear,Inspect,,Guide,] 8489 + // Willow tree stump[Clear,Inspect,Guide] 8489 return new PatchState(Produce.WILLOW, CropState.HARVESTABLE, 0); } if (value >= 24 && value <= 31) { - // Maple Tree[,Inspect,,Guide,] 8435,8436,8437,8438,8439,8440,8441,8442 + // Maple Tree[Inspect,Guide] 8435,8436,8437,8438,8439,8440,8441,8442 return new PatchState(Produce.MAPLE, CropState.GROWING, value - 24); } if (value == 32) { - // Maple Tree[Check-health,Inspect,,Guide,] 8443 - return new PatchState(Produce.MAPLE, CropState.GROWING, 8); + // Maple Tree[Check-health,Inspect,Guide] 8443 + return new PatchState(Produce.MAPLE, CropState.GROWING, Produce.MAPLE.getStages() - 1); } if (value == 33) { - // Maple Tree[Chop down,Inspect,,Guide,] 8444 + // Maple Tree[Chop down,Inspect,Guide] 8444 return new PatchState(Produce.MAPLE, CropState.HARVESTABLE, 0); } if (value == 34) { - // Tree stump[Clear,Inspect,,Guide,] 8445 + // Tree stump[Clear,Inspect,Guide] 8445 return new PatchState(Produce.MAPLE, CropState.HARVESTABLE, 0); } - if (value == 35) + if (value >= 35 && value <= 44) { - // Yew sapling[,Inspect,,Guide,] 8502 - return new PatchState(Produce.YEW, CropState.GROWING, 0); - } - if (value >= 36 && value <= 44) - { - // Yew tree[,Inspect,,Guide,] 8503,8504,8505,8506,8507,8508,8509,8510,8511 + // Yew sapling,Yew tree[Inspect,Guide] 8502,8503,8504,8505,8506,8507,8508,8509,8510,8511 return new PatchState(Produce.YEW, CropState.GROWING, value - 35); } if (value == 45) { - // Yew tree[Check-health,Inspect,,Guide,] 8512 - return new PatchState(Produce.YEW, CropState.GROWING, 10); + // Yew tree[Check-health,Inspect,Guide] 8512 + return new PatchState(Produce.YEW, CropState.GROWING, Produce.YEW.getStages() - 1); } if (value == 46) { - // Yew tree[Chop down,Inspect,,Guide,] 8513 + // Yew tree[Chop down,Inspect,Guide] 8513 return new PatchState(Produce.YEW, CropState.HARVESTABLE, 0); } if (value == 47) { - // Yew tree stump[Clear,Inspect,,Guide,] 8514 + // Yew tree stump[Clear,Inspect,Guide] 8514 return new PatchState(Produce.YEW, CropState.HARVESTABLE, 0); } if (value >= 48 && value <= 59) { - // Magic Tree[,Inspect,,Guide,] 8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407 + // Magic Tree[Inspect,Guide] 8396,8397,8398,8399,8400,8401,8402,8403,8404,8405,8406,8407 return new PatchState(Produce.MAGIC, CropState.GROWING, value - 48); } if (value == 60) { - // Magic Tree[Check-health,Inspect,,Guide,] 8408 - return new PatchState(Produce.MAGIC, CropState.GROWING, 12); + // Magic Tree[Check-health,Inspect,Guide] 8408 + return new PatchState(Produce.MAGIC, CropState.GROWING, Produce.MAGIC.getStages() - 1); } if (value == 61) { - // Magic Tree[Chop down,Inspect,,Guide,] 8409 + // Magic Tree[Chop down,Inspect,Guide] 8409 return new PatchState(Produce.MAGIC, CropState.HARVESTABLE, 0); } if (value == 62) { - // Magic Tree Stump[Clear,Inspect,,Guide,] 8410 + // Magic Tree Stump[Clear,Inspect,Guide] 8410 return new PatchState(Produce.MAGIC, CropState.HARVESTABLE, 0); } if (value >= 63 && value <= 72) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 73 && value <= 75) { - // Diseased Oak[Prune,Inspect,,Guide,] 8473,8474,8475 + // Diseased Oak[Prune,Inspect,Guide] 8473,8474,8475 return new PatchState(Produce.OAK, CropState.DISEASED, value - 72); } if (value == 77) { - // Diseased Oak[Prune,Inspect,,Guide,] 8476 + // Diseased Oak[Prune,Inspect,Guide] 8476 return new PatchState(Produce.OAK, CropState.DISEASED, 4); } if (value >= 78 && value <= 79) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 80 && value <= 84) { - // Diseased Willow[Prune,Inspect,,Guide,] 8490,8491,8492,8493,8494 + // Diseased Willow[Prune,Inspect,Guide] 8490,8491,8492,8493,8494 return new PatchState(Produce.WILLOW, CropState.DISEASED, value - 79); } if (value == 86) { - // Diseased Willow[Prune,Inspect,,Guide,] 8495 + // Diseased Willow[Prune,Inspect,Guide] 8495 return new PatchState(Produce.WILLOW, CropState.DISEASED, 6); } if (value >= 87 && value <= 88) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 89 && value <= 95) { - // Diseased Maple[Prune,Inspect,,Guide,] 8446,8447,8448,8449,8450,8451,8452 + // Diseased Maple[Prune,Inspect,Guide] 8446,8447,8448,8449,8450,8451,8452 return new PatchState(Produce.MAPLE, CropState.DISEASED, value - 88); } if (value == 97) { - // Diseased Maple[Prune,Inspect,,Guide,] 8453 + // Diseased Maple[Prune,Inspect,Guide] 8453 return new PatchState(Produce.MAPLE, CropState.DISEASED, 8); } if (value >= 98 && value <= 99) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 100 && value <= 108) { - // Diseased Yew[Prune,Inspect,,Guide,] 8515,8516,8517,8518,8519,8520,8521,8522,8523 + // Diseased Yew[Prune,Inspect,Guide] 8515,8516,8517,8518,8519,8520,8521,8522,8523 return new PatchState(Produce.YEW, CropState.DISEASED, value - 99); } if (value == 110) { - // Diseased Yew[Prune,Inspect,,Guide,] 8524 + // Diseased Yew[Prune,Inspect,Guide] 8524 return new PatchState(Produce.YEW, CropState.DISEASED, 10); } if (value >= 111 && value <= 112) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 113 && value <= 123) { - // Diseased Magic Tree[Prune,Inspect,,Guide,] 8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421 + // Diseased Magic Tree[Prune,Inspect,Guide] 8411,8412,8413,8414,8415,8416,8417,8418,8419,8420,8421 return new PatchState(Produce.MAGIC, CropState.DISEASED, value - 112); } if (value == 125) { - // Diseased Magic Tree[Prune,Inspect,,Guide,] 8422 + // Diseased Magic Tree[Prune,Inspect,Guide] 8422 return new PatchState(Produce.MAGIC, CropState.DISEASED, 12); } if (value >= 126 && value <= 136) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 137 && value <= 139) { - // Dead Oak[Clear,Inspect,,Guide,] 8477,8478,8479 + // Dead Oak[Clear,Inspect,Guide] 8477,8478,8479 return new PatchState(Produce.OAK, CropState.DEAD, value - 136); } if (value == 141) { - // Dead Oak[Clear,Inspect,,Guide,] 8480 + // Dead Oak[Clear,Inspect,Guide] 8480 return new PatchState(Produce.OAK, CropState.DEAD, 4); } if (value >= 142 && value <= 143) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 144 && value <= 148) { - // Dead Willow[Clear,Inspect,,Guide,] 8496,8497,8498,8499,8500 + // Dead Willow[Clear,Inspect,Guide] 8496,8497,8498,8499,8500 return new PatchState(Produce.WILLOW, CropState.DEAD, value - 143); } if (value == 150) { - // Dead Willow[Clear,Inspect,,Guide,] 8501 + // Dead Willow[Clear,Inspect,Guide] 8501 return new PatchState(Produce.WILLOW, CropState.DEAD, 6); } if (value >= 151 && value <= 152) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 153 && value <= 159) { - // Dead Maple[Clear,Inspect,,Guide,] 8454,8455,8456,8457,8458,8459,8460 + // Dead Maple[Clear,Inspect,Guide] 8454,8455,8456,8457,8458,8459,8460 return new PatchState(Produce.MAPLE, CropState.DEAD, value - 152); } if (value == 161) { - // Dead Maple[Clear,Inspect,,Guide,] 8461 + // Dead Maple[Clear,Inspect,Guide] 8461 return new PatchState(Produce.MAPLE, CropState.DEAD, 8); } if (value >= 162 && value <= 163) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 164 && value <= 172) { - // Dead Yew[Clear,Inspect,,Guide,] 8525,8526,8527,8528,8529,8530,8531,8532,8533 + // Dead Yew[Clear,Inspect,Guide] 8525,8526,8527,8528,8529,8530,8531,8532,8533 return new PatchState(Produce.YEW, CropState.DEAD, value - 163); } if (value == 174) { - // Dead Yew[Clear,Inspect,,Guide,] 8534 + // Dead Yew[Clear,Inspect,Guide] 8534 return new PatchState(Produce.YEW, CropState.DEAD, 10); } if (value >= 175 && value <= 176) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 177 && value <= 187) { - // Dead Magic Tree[Clear,Inspect,,Guide,] 8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433 + // Dead Magic Tree[Clear,Inspect,Guide] 8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433 return new PatchState(Produce.MAGIC, CropState.DEAD, value - 176); } if (value == 189) { - // Dead Magic Tree[Clear,Inspect,,Guide,] 8434 + // Dead Magic Tree[Clear,Inspect,Guide] 8434 return new PatchState(Produce.MAGIC, CropState.DEAD, 12); } if (value >= 190 && value <= 191) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 192 && value <= 197) { - // Willow Tree[Chop down,Inspect,,Guide,] 8488,8488,8488,8488,8488,8488 + // Willow Tree[Chop down,Inspect,Guide] 8488,8488,8488,8488,8488,8488 return new PatchState(Produce.WILLOW, CropState.HARVESTABLE, 0); } if (value >= 198 && value <= 255) { - // Tree patch[Rake,Inspect,,Guide,] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 + // Tree patch[Rake,Inspect,Guide] 8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395,8395 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -2053,87 +2119,130 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Tree patch[Rake,Inspect,,Guide,] 30479,30478,30477,30476 + // Tree patch[Rake,Inspect,Guide] 30479,30478,30477,30476 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Tree patch[Rake,Inspect,,Guide,] 30479,30479,30479,30479 + // Tree patch[Rake,Inspect,Guide] 30479,30479,30479,30479 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 8 && value <= 14) { - // Teak Tree[,Inspect,,Guide,] 30437,30438,30439,30440,30441,30442,30443 + // Teak Tree[Inspect,Guide] 30437,30438,30439,30440,30441,30442,30443 return new PatchState(Produce.TEAK, CropState.GROWING, value - 8); } if (value == 15) { - // Teak Tree[Check-health,Inspect,,Guide,] 30444 - return new PatchState(Produce.TEAK, CropState.GROWING, 7); + // Teak Tree[Check-health,Inspect,Guide] 30444 + return new PatchState(Produce.TEAK, CropState.GROWING, Produce.TEAK.getStages() - 1); } if (value == 16) { - // Teak Tree[Chop down,Inspect,,Guide,] 30445 + // Teak Tree[Chop down,Inspect,Guide] 30445 return new PatchState(Produce.TEAK, CropState.HARVESTABLE, 0); } if (value == 17) { - // Tree stump[Clear,Inspect,,Guide,] 30446 + // Tree stump[Clear,Inspect,Guide] 30446 return new PatchState(Produce.TEAK, CropState.HARVESTABLE, 0); } if (value >= 18 && value <= 23) { - // Diseased Teak[Prune,Inspect,,Guide,] 30447,30448,30449,30450,30451,30452 + // Diseased Teak[Prune,Inspect,Guide] 30447,30448,30449,30450,30451,30452 return new PatchState(Produce.TEAK, CropState.DISEASED, value - 17); } if (value >= 24 && value <= 29) { - // Dead Teak[Clear,Inspect,,Guide,] 30453,30454,30455,30456,30457,30458 + // Dead Teak[Clear,Inspect,Guide] 30453,30454,30455,30456,30457,30458 return new PatchState(Produce.TEAK, CropState.DEAD, value - 23); } - if (value == 30) + if (value >= 30 && value <= 37) { - // Mahogany sapling[,Inspect,,Guide,] 30406 - return new PatchState(Produce.MAHOGANY, CropState.GROWING, 0); - } - if (value >= 31 && value <= 37) - { - // Mahogany tree[,Inspect,,Guide,] 30407,30408,30409,30410,30411,30412,30413 + // Mahogany sapling,Mahogany tree[Inspect,Guide] 30406,30407,30408,30409,30410,30411,30412,30413 return new PatchState(Produce.MAHOGANY, CropState.GROWING, value - 30); } if (value == 38) { - // Mahogany tree[Check-health,Inspect,,Guide,] 30416 - return new PatchState(Produce.MAHOGANY, CropState.GROWING, 8); + // Mahogany tree[Check-health,Inspect,Guide] 30416 + return new PatchState(Produce.MAHOGANY, CropState.GROWING, Produce.MAHOGANY.getStages() - 1); } if (value == 39) { - // Mahogany tree[Chop down,Inspect,,Guide,] 30417 + // Mahogany tree[Chop down,Inspect,Guide] 30417 return new PatchState(Produce.MAHOGANY, CropState.HARVESTABLE, 0); } if (value == 40) { - // Mahogany tree stump[Clear,Inspect,,Guide,] 30418 + // Mahogany tree stump[Clear,Inspect,Guide] 30418 return new PatchState(Produce.MAHOGANY, CropState.HARVESTABLE, 0); } if (value >= 41 && value <= 47) { - // Diseased Mahogany[Prune,Inspect,,Guide,] 30419,30420,30421,30422,30423,30424,30425 + // Diseased Mahogany[Prune,Inspect,Guide] 30419,30420,30421,30422,30423,30424,30425 return new PatchState(Produce.MAHOGANY, CropState.DISEASED, value - 40); } if (value >= 48 && value <= 54) { - // Dead Mahogany[Clear,Inspect,,Guide,] 30428,30429,30430,30431,30432,30433,30434 + // Dead Mahogany[Clear,Inspect,Guide] 30428,30429,30430,30431,30432,30433,30434 return new PatchState(Produce.MAHOGANY, CropState.DEAD, value - 47); } if (value >= 55 && value <= 255) { - // Tree patch[Rake,Inspect,,Guide,] 30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479 + // Tree patch[Rake,Inspect,Guide] 30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479,30479 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; } }, + REDWOOD(Tab.TREE, "Redwood Trees") + { + @Override + PatchState forVarbitValue(int value) + { + if (value >= 0 && value <= 3) + { + // Redwood tree patch[Rake,Inspect,Guide] 34050,34049,34048,34047 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); + } + if (value >= 4 && value <= 7) + { + // Redwood tree patch[Rake,Inspect,Guide] 34050,34050,34050,34050 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 8 && value <= 17) + { + // Redwood tree[Inspect,Guide] 34205,34206,34207,34208,34209,34210,34215,34224,34242,34260 + return new PatchState(Produce.REDWOOD, CropState.GROWING, value - 8); + } + if (value == 18) + { + // Redwood tree[Clear,Inspect,Guide] 34278 + return new PatchState(Produce.REDWOOD, CropState.HARVESTABLE, 0); + } + if (value >= 19 && value <= 27) + { + // Diseased Redwood tree[Prune,Inspect,Guide] 34130,34131,34132,34133,34134,34139,34148,34166,34184 + return new PatchState(Produce.REDWOOD, CropState.DISEASED, value - 18); + } + if (value >= 28 && value <= 36) + { + // Dead Redwood tree[Clear,Inspect,Guide] 34061,34062,34063,34064,34065,34070,34079,34097,34115 + return new PatchState(Produce.REDWOOD, CropState.DEAD, value - 27); + } + if (value == 37) + { + // Redwood tree[Check-health,Inspect,Guide] 34297 + return new PatchState(Produce.REDWOOD, CropState.GROWING, Produce.REDWOOD.getStages() - 1); + } + if (value >= 41 && value <= 55) + { + // Redwood tree[Clear,Inspect,Guide] 34278,34278,34278,34278,34278,34278,34278,34278,34278,34278,34278,34278,34278,34278,34278 + return new PatchState(Produce.REDWOOD, CropState.HARVESTABLE, 0); + } + return null; + } + }, SPIRIT_TREE(Tab.TREE, "Spirit Trees") { @Override @@ -2141,42 +2250,162 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Spirit Tree Patch[Rake,,Inspect,Guide,] 8342,8341,8340,8339 + // Spirit Tree Patch[Rake,Inspect,Guide] 8342,8341,8340,8339 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Spirit Tree Patch[Rake,,Inspect,Guide,] 8342,8342,8342,8342 + // Spirit Tree Patch[Rake,Inspect,Guide] 8342,8342,8342,8342 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } if (value >= 8 && value <= 19) { - // Spirit Tree[,,Inspect,Guide,] 8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354 + // Spirit Tree[Inspect,Guide] 8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354 return new PatchState(Produce.SPIRIT_TREE, CropState.GROWING, value - 8); } if (value == 20) { - // Spirit Tree[Talk-to,Travel,Inspect,Guide,Clear] 8355 - return new PatchState(Produce.SPIRIT_TREE, CropState.HARVESTABLE, 0); + // Spirit Tree[Travel,Talk-to,Inspect,Guide,Clear] 8355 + return new PatchState(Produce.SPIRIT_TREE, CropState.GROWING, 12); } if (value >= 21 && value <= 31) { - // Diseased Spirit Tree[Prune,,Inspect,Guide,] 8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368 + // Diseased Spirit Tree[Prune,Inspect,Guide] 8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368 return new PatchState(Produce.SPIRIT_TREE, CropState.DISEASED, value - 20); } if (value >= 32 && value <= 43) { - // Dead Spirit Tree[Clear,,Inspect,Guide,] 8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381 + // Dead Spirit Tree[Clear,Inspect,Guide] 8370,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381 return new PatchState(Produce.SPIRIT_TREE, CropState.DEAD, value - 31); } if (value == 44) { - // Spirit Tree[Check-health,,Inspect,Guide,] 8356 - return new PatchState(Produce.SPIRIT_TREE, CropState.HARVESTABLE, 0); + // Spirit Tree[Check-health,Inspect,Guide] 8356 + return new PatchState(Produce.SPIRIT_TREE, CropState.GROWING, Produce.SPIRIT_TREE.getStages() - 1); } - if (value >= 45 && value <= 255) + if (value >= 45 && value <= 63) { - // Spirit Tree Patch[Rake,,Inspect,Guide,] 8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342 + // Spirit Tree Patch[Rake,Inspect,Guide] 8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342,8342 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + return null; + } + }, + ANIMA(Tab.SPECIAL, "") + { + @Override + PatchState forVarbitValue(int value) + { + if (value >= 0 && value <= 3) + { + // Anima patch[Rake,Inspect,Guide] 33983,33982,33981,33980 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); + } + if (value >= 4 && value <= 7) + { + // Anima patch[Rake,Inspect,Guide] 33983,33983,33983,33983 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 8 && value <= 16) + { + // Attas plant[Inspect,Guide] 33991,33992,33993,33994,33995 + // Attas plant[Inspect,Guide] 33995,33995 + // Withering Attas plant[Inspect,Guide] 33996 + // Dead Attas plant[Clear,Inspect,Guide] 33997 + return new PatchState(Produce.ATTAS, CropState.GROWING, value - 8); + } + if (value >= 17 && value <= 25) + { + // Iasor plant[Inspect,Guide] 33984,33985,33986,33987,33988 + // Iasor plant[Inspect,Guide] 33988,33988 + // Withering Iasor plant[Inspect,Guide] 33989 + // Dead Iasor plant[Clear,Inspect,Guide] 33990 + return new PatchState(Produce.IASOR, CropState.GROWING, value - 17); + } + if (value >= 26 && value <= 34) + { + // Kronos plant[Inspect,Guide] 33999,34000,34001,34002,34003 + // Kronos plant[Inspect,Guide] 34003,34003 + // Withering Kronos plant[Inspect,Guide] 34004 + // Dead Kronos plant[Clear,Inspect,Guide] 34005 + return new PatchState(Produce.KRONOS, CropState.GROWING, value - 26); + } + if (value >= 35 && value <= 255) + { + // Anima patch[Rake,Inspect,Guide] 33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983,33983 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + return null; + } + }, + CACTUS(Tab.SPECIAL, "Cactus") + { + @Override + PatchState forVarbitValue(int value) + { + if (value >= 0 && value <= 3) + { + // Cactus patch[Rake,Inspect,Guide] 7746,7745,7744,7743 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); + } + if (value >= 4 && value <= 7) + { + // Cactus patch[Rake,Inspect,Guide] 7746,7746,7746,7746 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 8 && value <= 14) + { + // Cactus[Inspect,Guide] 7747,7748,7749,7750,7751,7752,7753 + return new PatchState(Produce.CACTUS, CropState.GROWING, value - 8); + } + if (value >= 15 && value <= 18) + { + // Cactus[Clear,Inspect,Guide,Pick-spine] 7754,7757,7757,7757 + return new PatchState(Produce.CACTUS, CropState.HARVESTABLE, value - 15); + } + if (value >= 19 && value <= 24) + { + // Diseased cactus[Cure,Inspect,Guide] 7759,7760,7761,7762,7763,7764 + return new PatchState(Produce.CACTUS, CropState.DISEASED, value - 18); + } + if (value >= 25 && value <= 30) + { + // Dead cactus[Clear,Inspect,Guide] 7765,7766,7767,7768,7769,7770 + return new PatchState(Produce.CACTUS, CropState.DEAD, value - 24); + } + if (value == 31) + { + // Cactus[Check-health,Inspect,Guide] 7758 + return new PatchState(Produce.CACTUS, CropState.GROWING, Produce.CACTUS.getStages() - 1); + } + if (value >= 32 && value <= 38) + { + // Potato cactus[Inspect,Guide] 33734,33735,33736,33737,33738,33739,33740 + return new PatchState(Produce.POTATO_CACTUS, CropState.GROWING, value - 32); + } + if (value >= 39 && value <= 45) + { + // Potato cactus[Clear,Inspect,Guide,Pick] 33741,33742,33743,33744,33745,33746,33747 + return new PatchState(Produce.POTATO_CACTUS, CropState.HARVESTABLE, value - 39); + } + if (value >= 46 && value <= 51) + { + // Diseased Poato cactus[Cure,Inspect,Guide] 33749,33750,33751,33752,33753,33754 + return new PatchState(Produce.POTATO_CACTUS, CropState.DISEASED, value - 45); + } + if (value >= 52 && value <= 57) + { + // Dead Potato cactus[Clear,Inspect,Guide] 33755,33756,33757,33758,33759,33760 + return new PatchState(Produce.POTATO_CACTUS, CropState.DEAD, value - 51); + } + if (value == 58) + { + // Potato cactus[Check-health,Inspect,Guide] 33748 + return new PatchState(Produce.POTATO_CACTUS, CropState.GROWING, Produce.POTATO_CACTUS.getStages() - 1); + } + if (value >= 59 && value <= 255) + { + // Cactus patch[Rake,Inspect,Guide] 7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746,7746 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -2189,32 +2418,32 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Seaweed patch[Rake,Inspect,,Guide,] 30486,30485,30484,30483 + // Seaweed patch[Rake,Inspect,Guide] 30486,30485,30484,30483 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 7) { - // Seaweed[,Inspect,,Guide,] 30487,30488,30489,30490 + // Seaweed[Inspect,Guide] 30487,30488,30489,30490 return new PatchState(Produce.SEAWEED, CropState.GROWING, value - 4); } if (value >= 8 && value <= 10) { - // Seaweed[Pick,Inspect,,Guide,] 30491,30492,30493 + // Seaweed[Pick,Inspect,Guide] 30491,30492,30493 return new PatchState(Produce.SEAWEED, CropState.HARVESTABLE, value - 8); } if (value >= 11 && value <= 13) { - // Diseased seaweed[Cure,Inspect,,Guide,] 30494,30495,30496 + // Diseased seaweed[Cure,Inspect,Guide] 30494,30495,30496 return new PatchState(Produce.SEAWEED, CropState.DISEASED, value - 10); } if (value >= 14 && value <= 16) { - // Dead seaweed[Clear,Inspect,,Guide,] 30497,30498,30499 + // Dead seaweed[Clear,Inspect,Guide] 30497,30498,30499 return new PatchState(Produce.SEAWEED, CropState.DEAD, value - 13); } if (value >= 17 && value <= 255) { - // Seaweed patch[Rake,Inspect,,Guide,] 30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486 + // Seaweed patch[Rake,Inspect,Guide] 30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486,30486 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; @@ -2227,42 +2456,95 @@ public enum PatchImplementation { if (value >= 0 && value <= 3) { - // Calquat patch[Rake,Inspect,,Guide,] 7775,7774,7773,7772 + // Calquat patch[Rake,Inspect,Guide] 7775,7774,7773,7772 return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); } if (value >= 4 && value <= 11) { - // Calquat Tree[,Inspect,,Guide,] 7776,7777,7778,7779,7780,7781,7782,7783 + // Calquat Tree[Inspect,Guide] 7776,7777,7778,7779,7780,7781,7782,7783 return new PatchState(Produce.CALQUAT, CropState.GROWING, value - 4); } - if (value == 12) + if (value >= 12 && value <= 18) { - // Calquat Tree[Clear,Inspect,,Guide,] 7784 - return new PatchState(Produce.CALQUAT, CropState.HARVESTABLE, 0); - } - if (value >= 13 && value <= 18) - { - // Calquat Tree[Pick-fruit,Inspect,,Guide,Clear] 7785,7786,7787,7788,7789,7790 - return new PatchState(Produce.CALQUAT, CropState.HARVESTABLE, value - 13); + // Calquat Tree[Clear,Inspect,Guide,Pick-fruit] 7784,7785,7786,7787,7788,7789,7790 + return new PatchState(Produce.CALQUAT, CropState.HARVESTABLE, value - 12); } if (value >= 19 && value <= 25) { - // Diseased Calquat[Prune,Inspect,,Guide,] 7792,7793,7794,7795,7796,7797,7798 + // Diseased Calquat[Prune,Inspect,Guide] 7792,7793,7794,7795,7796,7797,7798 return new PatchState(Produce.CALQUAT, CropState.DISEASED, value - 18); } if (value >= 26 && value <= 33) { - // Dead Calquat[Clear,Inspect,,Guide,] 7799,7800,7801,7802,7803,7804,7805,7806 + // Dead Calquat[Clear,Inspect,Guide] 7799,7800,7801,7802,7803,7804,7805,7806 return new PatchState(Produce.CALQUAT, CropState.DEAD, value - 25); } if (value == 34) { - // Calquat Tree[Check-health,Inspect,,Guide,] 7791 - return new PatchState(Produce.CALQUAT, CropState.GROWING, 8); + // Calquat Tree[Check-health,Inspect,Guide] 7791 + return new PatchState(Produce.CALQUAT, CropState.GROWING, Produce.CALQUAT.getStages() - 1); } if (value >= 35 && value <= 255) { - // Calquat patch[Rake,Inspect,,Guide,] 7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775 + // Calquat patch[Rake,Inspect,Guide] 7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775,7775 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + return null; + } + }, + CELASTRUS(Tab.FRUIT_TREE, "Celastrus") + { + @Override + PatchState forVarbitValue(int value) + { + if (value >= 0 && value <= 3) + { + // Celastrus patch[Rake,Inspect,Guide] 33698,33697,33696,33695 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3 - value); + } + if (value >= 4 && value <= 7) + { + // Celastrus patch[Rake,Inspect,Guide] 33698,33698,33698,33698 + return new PatchState(Produce.WEEDS, CropState.GROWING, 3); + } + if (value >= 8 && value <= 12) + { + // Celastrus tree[Inspect,Guide] 33699,33700,33701,33702,33703 + return new PatchState(Produce.CELASTRUS, CropState.GROWING, value - 8); + } + if (value == 13) + { + // Celastrus tree[Check-health,Inspect,Guide] 33704 + return new PatchState(Produce.CELASTRUS, CropState.GROWING, Produce.CELASTRUS.getStages() - 1); + } + if (value >= 14 && value <= 16) + { + // Celastrus tree[Harvest,Inspect,Guide] 33719,33718,33717 + return new PatchState(Produce.CELASTRUS, CropState.HARVESTABLE, value - 14); + } + if (value == 17) + { + // Harvested Celastrus tree[Chop,Inspect,Guide] 33720 + return new PatchState(Produce.CELASTRUS, CropState.HARVESTABLE, 0); + } + if (value >= 18 && value <= 22) + { + // Diseased celastrus tree[Prune,Inspect,Guide] 33705,33706,33707,33708,33709 + return new PatchState(Produce.CELASTRUS, CropState.DISEASED, value - 17); + } + if (value >= 23 && value <= 27) + { + // Dead celastrus tree[Clear,Inspect,Guide] 33711,33712,33713,33714,33715 + return new PatchState(Produce.CELASTRUS, CropState.DEAD, value - 22); + } + if (value == 28) + { + // Celastrus tree stump[Clear,Inspect,Guide] 33721 + return new PatchState(Produce.CELASTRUS, CropState.HARVESTABLE, 0); + } + if (value >= 29 && value <= 255) + { + // Celastrus patch[Rake,Inspect,Guide] 33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698,33698 return new PatchState(Produce.WEEDS, CropState.GROWING, 3); } return null; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/Produce.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/Produce.java index 96d4c6e189..a19a819e59 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/Produce.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/Produce.java @@ -28,6 +28,7 @@ package net.runelite.client.plugins.timetracking.farming; import lombok.Getter; import lombok.RequiredArgsConstructor; import net.runelite.api.ItemID; +import net.runelite.api.NullItemID; @RequiredArgsConstructor @Getter @@ -44,6 +45,7 @@ public enum Produce SWEETCORN("Sweetcorn", ItemID.SWEETCORN, 10, 6, 0, 3), STRAWBERRY("Strawberry", ItemID.STRAWBERRY, 10, 7, 0, 3), WATERMELON("Watermelon", ItemID.WATERMELON, 10, 8, 0, 3), + SNAPE_GRASS("Snape grass", ItemID.SNAPE_GRASS, 10, 8, 0, 3), // Flower crops MARIGOLD("Marigold", ItemID.MARIGOLDS, 5, 5), @@ -51,6 +53,7 @@ public enum Produce NASTURTIUM("Nasturtium", ItemID.NASTURTIUMS, 5, 5), WOAD("Woad", ItemID.WOAD_LEAF, 5, 5), LIMPWURT("Limpwurt", ItemID.LIMPWURT_ROOT, 5, 5), + WHITE_LILY("While lily", ItemID.WHITE_LILY, 5, 5), // Bush crops REDBERRIES("Redberry", ItemID.REDBERRIES, 20, 6, 20, 5), @@ -85,7 +88,7 @@ public enum Produce DWARF_WEED("Dwarf Weed", ItemID.DWARF_WEED, 20, 5, 0, 3), TORSTOL("Torstol", ItemID.TORSTOL, 20, 5, 0, 3), GOUTWEED("Goutweed", ItemID.GOUTWEED, 20, 5, 0, 2), - ANYHERB("Any Herb", ItemID.GUAM_LEAF, 20, 5, 0, 3), + ANYHERB("Any herb", ItemID.GUAM_LEAF, 20, 5, 0, 3), // Tree crops OAK("Oak", ItemID.OAK_LOGS, 40, 5), @@ -102,17 +105,31 @@ public enum Produce PINEAPPLE("Pineapple", ItemID.PINEAPPLE, 160, 7, 45, 7), PAPAYA("Papaya", ItemID.PAPAYA_FRUIT, 160, 7, 45, 7), PALM("Palm", ItemID.COCONUT, 160, 7, 45, 7), + DRAGONFRUIT("Dragonfruit", ItemID.DRAGONFRUIT, 160, 7, 45, 7), + + // Cactus + CACTUS("Cactus", ItemID.CACTUS_SPINE, 80, 8, 20, 4), + POTATO_CACTUS("Potato cactus", ItemID.POTATO_CACTUS, 10, 8, 5, 7), + + // Hardwood + TEAK("Teak", ItemID.TEAK_LOGS, 560, 8), + MAHOGANY("Mahogany", ItemID.MAHOGANY_LOGS, 640, 9), + + // Anima + ATTAS("Attas", NullItemID.NULL_22940, 640, 9), + IASOR("Iasro", NullItemID.NULL_22939, 640, 9), + KRONOS("Kronos", NullItemID.NULL_22938, 640, 9), // Special crops SEAWEED("Seaweed", ItemID.GIANT_SEAWEED, 10, 5, 0, 4), - TEAK("Teak", ItemID.TEAK_LOGS, 560, 8), GRAPE("Grape", ItemID.GRAPES, 5, 8, 0, 5), MUSHROOM("Mushroom", ItemID.MUSHROOM, 40, 7, 0, 7), - MAHOGANY("Mahogany", ItemID.MAHOGANY_LOGS, 640, 9), - CACTUS("Cactus", ItemID.POTATO_CACTUS, 80, 8, 20, 4), BELLADONNA("Belladonna", ItemID.CAVE_NIGHTSHADE, 80, 5), CALQUAT("Calquat", ItemID.CALQUAT_FRUIT, 160, 9, 0, 7), - SPIRIT_TREE("Spirit Tree", ItemID.SPIRIT_TREE, 320, 13); + SPIRIT_TREE("Spirit tree", ItemID.SPIRIT_TREE, 320, 13), + CELASTRUS("Celastrus", ItemID.BATTLESTAFF, 160, 6, 0, 4), + REDWOOD("Redwood", ItemID.REDWOOD_LOGS, 640, 11), + HESPORI("Hespori", NullItemID.NULL_23044, 640, 4, 0, 2); /** * User-visible name