Update tree run (#2492)

* WIP: Adds new trees, new patches, and calquats.

* Fixes erroneous import.

* Updates calquat patch tab to match FRUIT_TREE from PatchImplementation

* WIP: adds new farm regions

* Adds updated farmrun files from RuneLite.

* Bug fix, fix issues with some plots.

* Fixes bug with Anglers Retreat not updating.

* Updates sidebar steps

* Adds missing comma.

* Adds more commas.
This commit is contained in:
maskarauder
2025-12-19 14:33:40 -05:00
committed by GitHub
parent 5cf7b0c03f
commit fca3849213
4 changed files with 1161 additions and 652 deletions

View File

@@ -274,7 +274,10 @@ public class FarmingUtils
public enum HardwoodTreeSapling implements PlantableItem
{
TEAK(ItemID.PLANTPOT_TEAK_SAPLING, ItemID.LIMPWURT_ROOT, 15),
MAHOGANY(ItemID.PLANTPOT_MAHOGANY_SAPLING, ItemID.YANILLIAN_HOPS, 25);
MAHOGANY(ItemID.PLANTPOT_MAHOGANY_SAPLING, ItemID.YANILLIAN_HOPS, 25),
CAMPHOR(ItemID.PLANTPOT_CAMPHOR_SAPLING, ItemID.WHITE_BERRIES, 10),
IRONWOOD(ItemID.PLANTPOT_IRONWOOD_SAPLING, ItemID.CURRY, 10),
ROSEWOOD(ItemID.PLANTPOT_ROSEWOOD_SAPLING, ItemID.DRAGONFRUIT, 8);
final int hardwoodTreeSaplingId;
final int protectionItemId;
@@ -318,6 +321,52 @@ public class FarmingUtils
}
}
public enum CalquatTreeSapling implements PlantableItem
{
CALQUAT(ItemID.PLANTPOT_CALQUAT_SAPLING, ItemID.POISONIVY_BERRIES, 8);
final int calquatTreeSaplingId;
final int protectionItemId;
final int protectionItemQuantity;
CalquatTreeSapling(int calquatTreeSaplingId, int protectionItemId, int protectionItemQuantity)
{
this.calquatTreeSaplingId = calquatTreeSaplingId;
this.protectionItemId = protectionItemId;
this.protectionItemQuantity = protectionItemQuantity;
}
@Override
public String getConfigKey()
{
return "calquatTreeSaplings";
}
@Override
public int getPlantableItemId()
{
return calquatTreeSaplingId;
}
@Override
public int getProtectionItemId()
{
return protectionItemId;
}
@Override
public int getProtectionItemQuantity()
{
return protectionItemQuantity;
}
@Override
public ConfigEnum getDefault()
{
return CalquatTreeSapling.CALQUAT;
}
}
public enum GracefulOrFarming
{
NONE(),

View File

@@ -29,15 +29,21 @@ import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.inject.Singleton;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.stream.Collectors;
import lombok.Getter;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.gameval.NpcID;
import net.runelite.api.gameval.VarbitID;
import net.runelite.client.plugins.timetracking.Tab;
import java.util.*;
import java.util.stream.Collectors;
@Singleton
class FarmingWorld
{
@@ -45,12 +51,13 @@ class FarmingWorld
private Multimap<Integer, FarmingRegion> regions = HashMultimap.create();
@Getter
@SuppressWarnings("PMD.ImmutableField")
private Map<Tab, Set<FarmingPatch>> tabs = new HashMap<>();
private final Comparator<FarmingPatch> tabSorter = Comparator
.comparing(FarmingPatch::getImplementation)
.thenComparing((FarmingPatch p) -> p.getRegion().getName())
.thenComparing(FarmingPatch::getName);
.comparing(FarmingPatch::getImplementation)
.thenComparing((FarmingPatch p) -> p.getRegion().getName())
.thenComparing(FarmingPatch::getName);
@Getter
private final FarmingRegion farmingGuildRegion;
@@ -60,39 +67,48 @@ 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, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CACTUS, NpcID.FARMING_GARDENER_CACTUS)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CACTUS, NpcID.FARMING_GARDENER_CACTUS)
), 13362, 13105);
add(new FarmingRegion("Aldarin", 5421, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_5)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_5)
), 5165, 5166, 5422, 5677, 5678);
add(new FarmingRegion("Ardougne", 10290, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_4)
), 10546);
add(new FarmingRegion("Ardougne", 10548, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.KRAGEN, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.KRAGEN, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
add(new FarmingRegion("Anglers' Retreat", 9770, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HARDWOOD_TREE, NpcID.FARMING_GARDENER_HARDWOOD_TREE_5)
));
add(new FarmingRegion("Ardougne", 10290, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_4)
), 10546);
add(new FarmingRegion("Ardougne", 10548, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.KRAGEN, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.KRAGEN, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
));
add(new FarmingRegion("Auburnvale", 5427, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_7),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.BELLADONNA)
), 5428, 5684);
add(new FarmingRegion("Avium Savannah", 6702, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HARDWOOD_TREE, NpcID.FROG_QUEST_MARCELLUS)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HARDWOOD_TREE, NpcID.FROG_QUEST_MARCELLUS)
), 6446);
add(new FarmingRegion("Brimhaven", 11058, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.GARTH),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_3)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.GARTH),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_3)
), 11057);
add(new FarmingRegion("Catherby", 11062, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.DANTAERA, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.DANTAERA, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.DANTAERA, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.DANTAERA, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
)
{
@Override
@@ -107,7 +123,7 @@ class FarmingWorld
}
}, 11061, 11318, 11317);
add(new FarmingRegion("Catherby", 11317, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_4)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_4)
)
{
//The fruit tree patch is always sent when upstairs in 11317
@@ -119,39 +135,39 @@ class FarmingWorld
});
add(new FarmingRegion("Civitas illa Fortis", 6192, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.FORTIS_GARDENER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.FORTIS_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.FORTIS_GARDENER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.FORTIS_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
), 6447, 6448, 6449, 6191, 6193);
add(new FarmingRegion("Champions' Guild", 12596, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_1)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_1)
));
add(new FarmingRegion("Draynor Manor", 12340, false,
new FarmingPatch("Belladonna", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BELLADONNA)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BELLADONNA)
));
add(new FarmingRegion("Entrana", 11060, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FRANCIS)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FRANCIS)
), 11316);
add(new FarmingRegion("Etceteria", 10300, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_3),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_2)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_3),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_2)
));
add(new FarmingRegion("Falador", 11828, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_2)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_2)
), 12084);
add(new FarmingRegion("Falador", 12083, false,
new FarmingPatch("North West", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.ELSTAN, 0),
new FarmingPatch("South East", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.ELSTAN, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
new FarmingPatch("North West", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.ELSTAN, 0),
new FarmingPatch("South East", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.ELSTAN, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
)
{
@Override
@@ -163,9 +179,9 @@ class FarmingWorld
});
add(new FarmingRegion("Fossil Island", 14651, false,
new FarmingPatch("East", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER1),
new FarmingPatch("Middle", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER2),
new FarmingPatch("West", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER3)
new FarmingPatch("East", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER1),
new FarmingPatch("Middle", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER2),
new FarmingPatch("West", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.HARDWOOD_TREE, NpcID.FOSSIL_SQUIRREL_GARDENER3)
)
{
@Override
@@ -182,7 +198,7 @@ class FarmingWorld
//East and west ladders to rope bridge
if ((loc.getX() == 3729 || loc.getX() == 3728 || loc.getX() == 3747 || loc.getX() == 3746)
&& loc.getY() <= 3832 && loc.getY() >= 3830)
&& loc.getY() <= 3832 && loc.getY() >= 3830)
{
return false;
}
@@ -191,71 +207,79 @@ class FarmingWorld
}
}, 14907, 14908, 15164, 14652, 14906, 14650, 15162, 15163);
add(new FarmingRegion("Seaweed", 15008, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SEAWEED, NpcID.FOSSIL_GARDENER_UNDERWATER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SEAWEED, NpcID.FOSSIL_GARDENER_UNDERWATER, 1)
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SEAWEED, NpcID.FOSSIL_GARDENER_UNDERWATER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.SEAWEED, NpcID.FOSSIL_GARDENER_UNDERWATER, 1)
));
add(new FarmingRegion("Gnome Stronghold", 9781, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_GNOME),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_1)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_GNOME),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_1)
), 9782, 9526, 9525);
add(new FarmingRegion("Great Conch", 12581, true,
new FarmingPatch("East", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CORAL, NpcID.TORTUGAN_CORAL_FARMER, 0),
new FarmingPatch("West", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.CORAL, NpcID.TORTUGAN_CORAL_FARMER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.CALQUAT, NpcID.FARMING_GARDENER_CALQUAT_3)
), 12325, 12326, 12327, 12580, 12581, 12582, 12583, 12836, 12837, 12838, 12839, 13092, 13093, 13194);
add(new FarmingRegion("Harmony", 15148, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.HERB)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.HERB)
));
add(new FarmingRegion("Kastori", 5423, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CALQUAT, NpcID.FARMING_GARDENER_CALQUAT_2),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_7),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER)
), 5167, 5424);
add(new FarmingRegion("Kourend", 6967, false,
new FarmingPatch("North East", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.HOSIDIUS_ALLOTMENT_GARDENER, 0),
new FarmingPatch("South West", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.HOSIDIUS_ALLOTMENT_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_F, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_4)
new FarmingPatch("North East", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.HOSIDIUS_ALLOTMENT_GARDENER, 0),
new FarmingPatch("South West", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.HOSIDIUS_ALLOTMENT_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_F, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_4)
), 6711);
add(new FarmingRegion("Kourend", 7223, false,
new FarmingPatch("East 1", VarbitID.FARMING_TRANSMIT_A1, PatchImplementation.GRAPES),
new FarmingPatch("East 2", VarbitID.FARMING_TRANSMIT_A2, PatchImplementation.GRAPES),
new FarmingPatch("East 3", VarbitID.FARMING_TRANSMIT_B1, PatchImplementation.GRAPES),
new FarmingPatch("East 4", VarbitID.FARMING_TRANSMIT_B2, PatchImplementation.GRAPES),
new FarmingPatch("East 5", VarbitID.FARMING_TRANSMIT_C1, PatchImplementation.GRAPES),
new FarmingPatch("East 6", VarbitID.FARMING_TRANSMIT_C2, PatchImplementation.GRAPES),
new FarmingPatch("West 1", VarbitID.FARMING_TRANSMIT_D1, PatchImplementation.GRAPES),
new FarmingPatch("West 2", VarbitID.FARMING_TRANSMIT_D2, PatchImplementation.GRAPES),
new FarmingPatch("West 3", VarbitID.FARMING_TRANSMIT_E1, PatchImplementation.GRAPES),
new FarmingPatch("West 4", VarbitID.FARMING_TRANSMIT_E2, PatchImplementation.GRAPES),
new FarmingPatch("West 5", VarbitID.FARMING_TRANSMIT_F1, PatchImplementation.GRAPES),
new FarmingPatch("West 6", VarbitID.FARMING_TRANSMIT_F2, PatchImplementation.GRAPES)
new FarmingPatch("East 1", VarbitID.FARMING_TRANSMIT_A1, PatchImplementation.GRAPES),
new FarmingPatch("East 2", VarbitID.FARMING_TRANSMIT_A2, PatchImplementation.GRAPES),
new FarmingPatch("East 3", VarbitID.FARMING_TRANSMIT_B1, PatchImplementation.GRAPES),
new FarmingPatch("East 4", VarbitID.FARMING_TRANSMIT_B2, PatchImplementation.GRAPES),
new FarmingPatch("East 5", VarbitID.FARMING_TRANSMIT_C1, PatchImplementation.GRAPES),
new FarmingPatch("East 6", VarbitID.FARMING_TRANSMIT_C2, PatchImplementation.GRAPES),
new FarmingPatch("West 1", VarbitID.FARMING_TRANSMIT_D1, PatchImplementation.GRAPES),
new FarmingPatch("West 2", VarbitID.FARMING_TRANSMIT_D2, PatchImplementation.GRAPES),
new FarmingPatch("West 3", VarbitID.FARMING_TRANSMIT_E1, PatchImplementation.GRAPES),
new FarmingPatch("West 4", VarbitID.FARMING_TRANSMIT_E2, PatchImplementation.GRAPES),
new FarmingPatch("West 5", VarbitID.FARMING_TRANSMIT_F1, PatchImplementation.GRAPES),
new FarmingPatch("West 6", VarbitID.FARMING_TRANSMIT_F2, PatchImplementation.GRAPES)
));
add(new FarmingRegion("Lletya", 9265, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_TREE_5)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_TREE_5)
), 11103);
add(new FarmingRegion("Lumbridge", 12851, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_3)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_3)
));
add(new FarmingRegion("Lumbridge", 12594, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_4)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_4)
), 12850);
add(new FarmingRegion("Morytania", 13622, false,
new FarmingPatch("Mushroom", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.MUSHROOM)
new FarmingPatch("Mushroom", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.MUSHROOM)
), 13878);
add(new FarmingRegion("Morytania", 14391, false,
new FarmingPatch("North West", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.LYRA, 0),
new FarmingPatch("South East", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.LYRA, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
new FarmingPatch("North West", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.LYRA, 0),
new FarmingPatch("South East", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.LYRA, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.COMPOST)
), 14390);
add(new FarmingRegion("Nemus Retreat", 5427, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_7)
));
add(new FarmingRegion("Port Sarim", 12082, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_1)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_1)
)
{
@Override
@@ -266,71 +290,71 @@ class FarmingWorld
}, 12083);
add(new FarmingRegion("Rimmington", 11570, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_2)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_BUSH_2)
), 11826);
add(new FarmingRegion("Seers' Village", 10551, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_4)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_4)
), 10550);
add(new FarmingRegion("Tai Bwo Wannai", 11056, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CALQUAT, NpcID.FARMING_GARDENER_CALQUAT)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.CALQUAT, NpcID.FARMING_GARDENER_CALQUAT)
));
add(new FarmingRegion("Taverley", 11573, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_1)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_1)
), 11829);
add(new FarmingRegion("Tree Gnome Village", 9777, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_2)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FRUIT_2)
), 10033);
add(new FarmingRegion("Troll Stronghold", 11321, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HERB)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HERB)
));
add(new FarmingRegion("Varrock", 12854, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_3_02)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.TREE, NpcID.FARMING_GARDENER_TREE_3_02)
), 12853);
add(new FarmingRegion("Yanille", 10288, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_1)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HOPS, NpcID.FARMING_GARDENER_HOPS_1)
));
add(new FarmingRegion("Weiss", 11325, false,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HERB)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.HERB)
));
add(new FarmingRegion("Farming Guild", 5021, true,
new FarmingPatch("Hespori", VarbitID.FARMING_TRANSMIT_J, PatchImplementation.HESPORI)
new FarmingPatch("Hespori", VarbitID.FARMING_TRANSMIT_J, PatchImplementation.HESPORI)
));
//Full 3x3 region area centered on farming guild
add(farmingGuildRegion = new FarmingRegion("Farming Guild", 4922, true,
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_G, PatchImplementation.TREE, NpcID.FARMING_GARDENER_FARMGUILD_T2),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_FARMGUILD_T1, 3),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_H, PatchImplementation.FLOWER),
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.ALLOTMENT, NpcID.FARMING_GARDENER_FARMGUILD_T1, 1),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.ALLOTMENT, NpcID.FARMING_GARDENER_FARMGUILD_T1, 2),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_N, PatchImplementation.BIG_COMPOST),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_F, PatchImplementation.CACTUS, NpcID.FARMING_GARDENER_FARMGUILD_T1, 0),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_5),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_K, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FARMGUILD_T3),
new FarmingPatch("Anima", VarbitID.FARMING_TRANSMIT_M, PatchImplementation.ANIMA),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_L, PatchImplementation.CELASTRUS, NpcID.FARMING_GARDENER_FARMGUILD_CELASTRUS),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_I, PatchImplementation.REDWOOD, NpcID.FARMING_GARDENER_FARMGUILD_REDWOOD)
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_G, PatchImplementation.TREE, NpcID.FARMING_GARDENER_FARMGUILD_T2),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.HERB),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.BUSH, NpcID.FARMING_GARDENER_FARMGUILD_T1, 3),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_H, PatchImplementation.FLOWER),
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.ALLOTMENT, NpcID.FARMING_GARDENER_FARMGUILD_T1, 1),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.ALLOTMENT, NpcID.FARMING_GARDENER_FARMGUILD_T1, 2),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_N, PatchImplementation.BIG_COMPOST),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_F, PatchImplementation.CACTUS, NpcID.FARMING_GARDENER_FARMGUILD_T1, 0),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.SPIRIT_TREE, NpcID.FARMING_GARDENER_SPIRIT_TREE_5),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_K, PatchImplementation.FRUIT_TREE, NpcID.FARMING_GARDENER_FARMGUILD_T3),
new FarmingPatch("Anima", VarbitID.FARMING_TRANSMIT_M, PatchImplementation.ANIMA),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_L, PatchImplementation.CELASTRUS, NpcID.FARMING_GARDENER_FARMGUILD_CELASTRUS),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_I, PatchImplementation.REDWOOD, NpcID.FARMING_GARDENER_FARMGUILD_REDWOOD)
), 5177, 5178, 5179, 4921, 4923, 4665, 4666, 4667);
//All of Prifddinas, and all of Prifddinas Underground
add(new FarmingRegion("Prifddinas", 13151, false,
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.PRIF_GARDENER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.PRIF_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.CRYSTAL_TREE),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.COMPOST)
), 12895, 12894, 13150,
/* Underground */ 12994, 12993, 12737, 12738, 12126, 12127, 13250);
new FarmingPatch("North", VarbitID.FARMING_TRANSMIT_A, PatchImplementation.ALLOTMENT, NpcID.PRIF_GARDENER, 0),
new FarmingPatch("South", VarbitID.FARMING_TRANSMIT_B, PatchImplementation.ALLOTMENT, NpcID.PRIF_GARDENER, 1),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_C, PatchImplementation.FLOWER),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_E, PatchImplementation.CRYSTAL_TREE),
new FarmingPatch("", VarbitID.FARMING_TRANSMIT_D, PatchImplementation.COMPOST)
), 12895, 12894, 13150,
/* Underground */ 12994, 12993, 12737, 12738, 12126, 12127, 13250);
// Finalize
this.regions = Multimaps.unmodifiableMultimap(this.regions);
@@ -352,15 +376,15 @@ class FarmingWorld
for (FarmingPatch p : r.getPatches())
{
tabs
.computeIfAbsent(p.getImplementation().getTab(), k -> new TreeSet<>(tabSorter))
.add(p);
.computeIfAbsent(p.getImplementation().getTab(), k -> new TreeSet<>(tabSorter))
.add(p);
}
}
Collection<FarmingRegion> getRegionsForLocation(WorldPoint location)
{
return this.regions.get(location.getRegionID()).stream()
.filter(region -> region.isInBounds(location))
.collect(Collectors.toSet());
.filter(region -> region.isInBounds(location))
.collect(Collectors.toSet());
}
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -32,6 +32,7 @@ import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.FruitTreeSaplin
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.GracefulOrFarming;
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.HardwoodTreeSapling;
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.TreeSapling;
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.CalquatTreeSapling;
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.PayOrCut;
import com.questhelper.helpers.mischelpers.farmruns.FarmingUtils.PayOrCompost;
import com.questhelper.panel.PanelDetails;
@@ -90,71 +91,95 @@ public class TreeRun extends ComplexStateQuestHelper
DetailedQuestStep waitForTree;
// Trees
DetailedQuestStep farmingGuildTreePatchCheckHealth, lumbridgeTreePatchCheckHealth, faladorTreePatchCheckHealth, taverleyTreePatchCheckHealth, varrockTreePatchCheckHealth,
gnomeStrongholdTreePatchCheckHealth, nemusRetreatTreePatchCheckHealth;
DetailedQuestStep farmingGuildTreePatchPlant, lumbridgeTreePatchPlant, faladorTreePatchPlant, taverleyTreePatchPlant,
varrockTreePatchPlant, gnomeStrongholdTreePatchPlant, nemusRetreatTreePatchPlant;
DetailedQuestStep farmingGuildTreePatchCheckHealth, lumbridgeTreePatchCheckHealth, faladorTreePatchCheckHealth,
taverleyTreePatchCheckHealth, varrockTreePatchCheckHealth, gnomeStrongholdTreePatchCheckHealth,
auburnvaleTreePatchCheckHealth;
DetailedQuestStep farmingGuildTreePatchPlant, lumbridgeTreePatchPlant, faladorTreePatchPlant,
taverleyTreePatchPlant, varrockTreePatchPlant, gnomeStrongholdTreePatchPlant,
auburnvaleTreePatchPlant;
DetailedQuestStep lumbridgeTreePatchClear, faladorTreePatchClear, taverleyTreePatchClear, varrockTreePatchClear,
gnomeStrongholdTreePatchClear, farmingGuildTreePatchClear, nemusRetreatTreePatchClear;
gnomeStrongholdTreePatchClear, farmingGuildTreePatchClear, auburnvaleTreePatchClear;
DetailedQuestStep lumbridgeTreePatchDig, faladorTreePatchDig, taverleyTreePatchDig, varrockTreePatchDig,
gnomeStrongholdTreePatchDig, farmingGuildTreePatchDig, nemusRetreatTreePatchDig;
gnomeStrongholdTreePatchDig, farmingGuildTreePatchDig, auburnvaleTreePatchDig;
DetailedQuestStep farmingGuildTreePayForProtection, lumbridgeTreeProtect, faladorTreeProtect, taverleyTreeProtect,
varrockTreeProtect, strongholdTreeProtect, nemusRetreatTreeProtect;
DetailedQuestStep farmingGuildTreePayForProtection, lumbridgeTreeProtect,
faladorTreeProtect, taverleyTreeProtect, varrockTreeProtect, strongholdTreeProtect,
auburnvaleTreeProtect;
// Fruit Trees
DetailedQuestStep farmingGuildFruitTreePatchCheckHealth, gnomeStrongholdFruitTreePatchCheckHealth, gnomeVillageFruitTreePatchCheckHealth,
brimhavenFruitTreePatchCheckHealth, lletyaFruitTreePatchCheckHealth, catherbyFruitTreePatchCheckHealth;
DetailedQuestStep farmingGuildFruitTreePatchPlant, gnomeStrongholdFruitTreePatchPlant, gnomeVillageFruitTreePatchPlant,
brimhavenFruitTreePatchPlant, lletyaFruitTreePatchPlant, catherbyFruitTreePatchPlant;
DetailedQuestStep farmingGuildFruitTreePatchCheckHealth, gnomeStrongholdFruitTreePatchCheckHealth,
gnomeVillageFruitTreePatchCheckHealth, brimhavenFruitTreePatchCheckHealth, lletyaFruitTreePatchCheckHealth,
catherbyFruitTreePatchCheckHealth, taiBwoWannaiCalquatPatchCheckHealth, kastoriFruitTreePatchCheckHealth,
kastoriCalquatPatchCheckHealth, greatConchCalquatPatchCheckHealth;
DetailedQuestStep farmingGuildFruitTreePatchPlant, gnomeStrongholdFruitTreePatchPlant,
gnomeVillageFruitTreePatchPlant, brimhavenFruitTreePatchPlant, lletyaFruitTreePatchPlant,
catherbyFruitTreePatchPlant, taiBwoWannaiCalquatPatchPlant, kastoriFruitTreePatchPlant,
kastoriCalquatPatchPlant, greatConchCalquatPatchPlant;
DetailedQuestStep farmingGuildFruitTreePatchClear, gnomeStrongholdFruitTreePatchClear, gnomeVillageFruitTreePatchClear,
brimhavenFruitTreePatchClear, lletyaFruitTreePatchClear, catherbyFruitTreePatchClear;
DetailedQuestStep farmingGuildFruitTreePatchClear, gnomeStrongholdFruitTreePatchClear,
gnomeVillageFruitTreePatchClear, brimhavenFruitTreePatchClear, lletyaFruitTreePatchClear,
catherbyFruitTreePatchClear, taiBwoWannaiCalquatPatchClear, kastoriFruitTreePatchClear,
kastoriCalquatPatchClear, greatConchCalquatPatchClear;
DetailedQuestStep farmingGuildFruitTreePatchDig, gnomeStrongholdFruitTreePatchDig, gnomeVillageFruitTreePatchDig,
brimhavenFruitTreePatchDig, lletyaFruitTreePatchDig, catherbyFruitTreePatchDig;
brimhavenFruitTreePatchDig, lletyaFruitTreePatchDig, catherbyFruitTreePatchDig,
taiBwoWannaiCalquatPatchDig, kastoriFruitTreePatchDig, kastoriCalquatPatchDig, greatConchCalquatPatchDig;
DetailedQuestStep guildFruitProtect, strongholdFruitProtect, villageFruitProtect, brimhavenFruitProtect,
lletyaFruitProtect, catherbyFruitProtect;
lletyaFruitProtect, catherbyFruitProtect, taiBwoWannaiCalquatProtect, kastoriFruitProtect,
kastoriCalquatProtect, greatConchCalquatProtect;
// Hardwood Trees
DetailedQuestStep eastHardwoodTreePatchCheckHealth, westHardwoodTreePatchCheckHealth, middleHardwoodTreePatchCheckHealth, savannahCheckHealth;
DetailedQuestStep eastHardwoodTreePatchPlant, westHardwoodTreePatchPlant, middleHardwoodTreePatchPlant, savannahPlant;
DetailedQuestStep eastHardwoodTreePatchDig, westHardwoodTreePatchDig, middleHardwoodTreePatchDig, savannahDig;
DetailedQuestStep eastHardwoodTreePatchCheckHealth, westHardwoodTreePatchCheckHealth,
middleHardwoodTreePatchCheckHealth, savannahCheckHealth, anglersCheckHealth;
DetailedQuestStep eastHardwoodTreePatchPlant, westHardwoodTreePatchPlant, middleHardwoodTreePatchPlant,
savannahPlant, anglersPlant;
DetailedQuestStep eastHardwoodTreePatchDig, westHardwoodTreePatchDig, middleHardwoodTreePatchDig, savannahDig,
anglersDig;
DetailedQuestStep eastHardwoodTreePatchClear, westHardwoodTreePatchClear, middleHardwoodTreePatchClear, savannahClear;
DetailedQuestStep eastHardwoodTreePatchClear, westHardwoodTreePatchClear, middleHardwoodTreePatchClear,
savannahClear, anglersClear;
DetailedQuestStep eastHardwoodProtect, westHardwoodProtect, middleHardwoodProtect, savannahProtect;
DetailedQuestStep eastHardwoodProtect, westHardwoodProtect, middleHardwoodProtect, savannahProtect,
anglersProtect;
// Farming Items
ItemRequirement coins, spade, rake, allTreeSaplings, treeSapling, allFruitSaplings, fruitTreeSapling, allHardwoodSaplings, hardwoodSapling, compost, axe,
protectionItemTree, allProtectionItemTree, protectionItemFruitTree, allProtectionItemFruitTree, protectionItemHardwood, allProtectionItemHardwood;
ItemRequirement coins, spade, rake, allTreeSaplings, treeSapling, allFruitSaplings, fruitTreeSapling,
allHardwoodSaplings, hardwoodSapling, calquatSapling, allCalquatSaplings,
compost, axe, protectionItemTree, allProtectionItemTree, protectionItemCalquat, allProtectionItemCalquat,
protectionItemFruitTree, allProtectionItemFruitTree, protectionItemHardwood, allProtectionItemHardwood;
// Teleport Items
// TODO: Add these...
ItemRequirement farmingGuildTeleport, crystalTeleport, catherbyTeleport, varrockTeleport, lumbridgeTeleport, faladorTeleport, fossilIslandTeleport, nemusRetreatTeleport;
ItemRequirement farmingGuildTeleport, crystalTeleport, catherbyTeleport, varrockTeleport, lumbridgeTeleport,
faladorTeleport, fossilIslandTeleport, auburnvaleTeleport, kastoriTeleport;
// Graceful Set
ItemRequirement gracefulHood, gracefulTop, gracefulLegs, gracefulGloves, gracefulBoots, gracefulCape, gracefulOutfit;
ItemRequirement gracefulHood, gracefulTop, gracefulLegs, gracefulGloves, gracefulBoots, gracefulCape,
gracefulOutfit;
// Farming Set
ItemRequirement farmingHat, farmingTop, farmingLegs, farmingBoots, farmersOutfit;
// Access Requirements
Requirement accessToFarmingGuildTreePatch, accessToFarmingGuildFruitTreePatch, accessToLletya, accessToFossilIsland, accessToSavannah, accessToVarlamore;
Requirement accessToFarmingGuildTreePatch, accessToFarmingGuildFruitTreePatch, accessToLletya, accessToFossilIsland,
accessToSavannah, accessToVarlamore, accessToAnglersRetreat, accessToGreatConch;
Requirement payingForRemoval, payingForProtection, usingCompostorNothing;
PatchStates faladorStates, lumbridgeStates, farmingGuildTreeStates, taverleyStates, varrockStates, gnomeStrongholdTreeStates, nemusRetreatStates;
PatchStates faladorStates, lumbridgeStates, farmingGuildTreeStates, taverleyStates, varrockStates,
gnomeStrongholdTreeStates, auburnvaleStates;
PatchStates gnomeStrongholdFruitStates, gnomeVillageStates, brimhavenStates, catherbyStates, lletyaStates, farmingGuildFruitStates;
PatchStates gnomeStrongholdFruitStates, gnomeVillageStates, brimhavenStates, catherbyStates, lletyaStates,
farmingGuildFruitStates, taiBwoWannaiStates, kastoriStates, greatConchStates;
PatchStates eastHardwoodStates, middleHardwoodStates, westHardwoodStates, savannahStates;
PatchStates eastHardwoodStates, middleHardwoodStates, westHardwoodStates, savannahStates, anglersRetreatStates;
Requirement allGrowing;
ConditionalStep farmingGuildStep, lumbridgeStep, varrockStep, faladorStep, taverleyStep, strongholdStep, villageStep, lletyaStep,
catherbyStep, brimhavenStep, fossilIslandStep, savannahStep, nemusRetreatStep;
ConditionalStep farmingGuildStep, lumbridgeStep, varrockStep, faladorStep, taverleyStep, strongholdStep,
villageStep, lletyaStep, catherbyStep, brimhavenStep, fossilIslandStep, savannahStep, auburnvaleStep,
kastoriStep, anglersRetreatStep, greatConchStep;
private final String PAY_OR_CUT = "payOrCutTree";
private final String PAY_OR_COMPOST = "payOrCompostTree";
@@ -167,8 +192,8 @@ public class TreeRun extends ComplexStateQuestHelper
setupSteps();
farmingHandler = new FarmingHandler(client, configManager);
ReorderableConditionalStep steps = new ReorderableConditionalStep(this, waitForTree, spade, coins, rake, compost
, farmersOutfit, gracefulOutfit);
ReorderableConditionalStep steps = new ReorderableConditionalStep(this, waitForTree, spade, coins,
rake, compost, farmersOutfit, gracefulOutfit);
// Farming Guild Tree -> Farming Guild Fruit Tree -> Lumbridge -> Falador -> Taverley
// Varrock -> Gnome Stronghold Fruit -> Gnome Stronghold Tree -> Gnome Village -> catherby
@@ -266,8 +291,14 @@ public class TreeRun extends ComplexStateQuestHelper
brimhavenStep.addStep(brimhavenStates.getIsHarvestable(), brimhavenFruitTreePatchClear);
brimhavenStep.addStep(brimhavenStates.getIsStump(), brimhavenFruitTreePatchDig);
brimhavenStep.addStep(nor(usingCompostorNothing, brimhavenStates.getIsProtected()), brimhavenFruitProtect);
brimhavenStep.addStep(taiBwoWannaiStates.getIsUnchecked(), taiBwoWannaiCalquatPatchCheckHealth);
brimhavenStep.addStep(taiBwoWannaiStates.getIsEmpty(), taiBwoWannaiCalquatPatchPlant);
brimhavenStep.addStep(taiBwoWannaiStates.getIsHarvestable(), taiBwoWannaiCalquatPatchClear);
brimhavenStep.addStep(taiBwoWannaiStates.getIsStump(), taiBwoWannaiCalquatPatchDig);
brimhavenStep.addStep(nor(usingCompostorNothing, taiBwoWannaiStates.getIsProtected()),
taiBwoWannaiCalquatProtect);
steps.addStep(nor(brimhavenStates.getIsGrowing()), brimhavenStep.withId(8));
steps.addStep(nand(brimhavenStates.getIsGrowing(), taiBwoWannaiStates.getIsGrowing()), brimhavenStep.withId(8));
lletyaStep = new ConditionalStep(this, lletyaFruitTreePatchCheckHealth);
lletyaStep.addStep(lletyaStates.getIsUnchecked(), lletyaFruitTreePatchCheckHealth);
@@ -310,14 +341,52 @@ public class TreeRun extends ComplexStateQuestHelper
steps.addStep(and(accessToSavannah, nor(savannahStates.getIsGrowing())), savannahStep.withId(11));
nemusRetreatStep = new ConditionalStep(this, nemusRetreatTreePatchCheckHealth);
nemusRetreatStep.addStep(nemusRetreatStates.getIsUnchecked(), nemusRetreatTreePatchCheckHealth);
nemusRetreatStep.addStep(nemusRetreatStates.getIsEmpty(), nemusRetreatTreePatchPlant);
nemusRetreatStep.addStep(nemusRetreatStates.getIsHarvestable(), nemusRetreatTreePatchClear);
nemusRetreatStep.addStep(nemusRetreatStates.getIsStump(), nemusRetreatTreePatchDig);
nemusRetreatStep.addStep(nor(usingCompostorNothing, nemusRetreatStates.getIsProtected()), nemusRetreatTreeProtect);
auburnvaleStep = new ConditionalStep(this, auburnvaleTreePatchCheckHealth);
auburnvaleStep.addStep(auburnvaleStates.getIsUnchecked(), auburnvaleTreePatchCheckHealth);
auburnvaleStep.addStep(auburnvaleStates.getIsEmpty(), auburnvaleTreePatchPlant);
auburnvaleStep.addStep(auburnvaleStates.getIsHarvestable(), auburnvaleTreePatchClear);
auburnvaleStep.addStep(auburnvaleStates.getIsStump(), auburnvaleTreePatchDig);
auburnvaleStep.addStep(nor(usingCompostorNothing, auburnvaleStates.getIsProtected()), auburnvaleTreeProtect);
steps.addStep(and(accessToVarlamore, nor(nemusRetreatStates.getIsGrowing())), nemusRetreatStep.withId(12));
steps.addStep(and(accessToVarlamore, nor(auburnvaleStates.getIsGrowing())), auburnvaleStep.withId(12));
//kastoriStep, anglersRetreatStep, greatConchStep;
kastoriStep = new ConditionalStep(this, kastoriFruitTreePatchCheckHealth);
kastoriStep.addStep(kastoriStates.getIsUnchecked(), kastoriFruitTreePatchCheckHealth);
kastoriStep.addStep(kastoriStates.getIsEmpty(), kastoriFruitTreePatchPlant);
kastoriStep.addStep(kastoriStates.getIsHarvestable(), kastoriFruitTreePatchClear);
kastoriStep.addStep(kastoriStates.getIsStump(), kastoriFruitTreePatchDig);
kastoriStep.addStep(nor(usingCompostorNothing, kastoriStates.getIsProtected()), kastoriFruitProtect);
kastoriStep.addStep(kastoriStates.getIsUnchecked(), kastoriCalquatPatchCheckHealth);
kastoriStep.addStep(kastoriStates.getIsEmpty(), kastoriCalquatPatchPlant);
kastoriStep.addStep(kastoriStates.getIsHarvestable(), kastoriCalquatPatchClear);
kastoriStep.addStep(kastoriStates.getIsStump(), kastoriCalquatPatchDig);
kastoriStep.addStep(nor(usingCompostorNothing, kastoriStates.getIsProtected()), kastoriCalquatProtect);
steps.addStep(and(accessToVarlamore, nand(kastoriStates.getIsGrowing(), kastoriStates.getIsGrowing())), kastoriStep.withId(13));
anglersRetreatStep = new ConditionalStep(this, anglersCheckHealth);
anglersRetreatStep.addStep(anglersRetreatStates.getIsUnchecked(), anglersCheckHealth);
anglersRetreatStep.addStep(anglersRetreatStates.getIsEmpty(), anglersPlant);
anglersRetreatStep.addStep(anglersRetreatStates.getIsHarvestable(), anglersClear);
anglersRetreatStep.addStep(anglersRetreatStates.getIsStump(), anglersDig);
anglersRetreatStep.addStep(nor(usingCompostorNothing, anglersRetreatStates.getIsProtected()), anglersProtect);
steps.addStep(and(accessToAnglersRetreat, nor(anglersRetreatStates.getIsGrowing())),
anglersRetreatStep.withId(14));
greatConchStep = new ConditionalStep(this, greatConchCalquatPatchCheckHealth);
greatConchStep.addStep(greatConchStates.getIsUnchecked(), greatConchCalquatPatchCheckHealth);
greatConchStep.addStep(greatConchStates.getIsEmpty(), greatConchCalquatPatchPlant);
greatConchStep.addStep(greatConchStates.getIsHarvestable(), greatConchCalquatPatchClear);
greatConchStep.addStep(greatConchStates.getIsStump(), greatConchCalquatPatchDig);
greatConchStep.addStep(nor(usingCompostorNothing, greatConchStates.getIsProtected()), greatConchCalquatProtect);
steps.addStep(and(accessToGreatConch, nor(greatConchStates.getIsGrowing())),
greatConchStep.withId(15));
return steps;
}
@@ -339,6 +408,12 @@ public class TreeRun extends ComplexStateQuestHelper
accessToSavannah = new QuestRequirement(QuestHelperQuest.THE_RIBBITING_TALE_OF_A_LILY_PAD_LABOUR_DISPUTE, QuestState.FINISHED);
accessToVarlamore = new QuestRequirement(QuestHelperQuest.CHILDREN_OF_THE_SUN, QuestState.FINISHED);
accessToAnglersRetreat = new Conditions(
new SkillRequirement(Skill.SAILING, 51)
);
accessToGreatConch = new QuestRequirement(QuestHelperQuest.TROUBLED_TORTUGANS, QuestState.FINISHED);
// Trees
lumbridgeStates = new PatchStates("Lumbridge");
faladorStates = new PatchStates("Falador");
@@ -346,30 +421,38 @@ public class TreeRun extends ComplexStateQuestHelper
varrockStates = new PatchStates("Varrock");
gnomeStrongholdTreeStates = new PatchStates("Gnome Stronghold");
farmingGuildTreeStates = new PatchStates("Farming Guild", accessToFarmingGuildTreePatch);
nemusRetreatStates = new PatchStates("Nemus Retreat", accessToVarlamore);
auburnvaleStates = new PatchStates("Auburnvale", accessToVarlamore);
// Fruit trees
catherbyStates = new PatchStates("Catherby");
brimhavenStates = new PatchStates("Brimhaven");
taiBwoWannaiStates = new PatchStates("Tai Bwo Wannai");
gnomeVillageStates = new PatchStates("Tree Gnome Village");
gnomeStrongholdFruitStates = new PatchStates("Gnome Stronghold");
lletyaStates = new PatchStates("Lletya", accessToLletya);
farmingGuildFruitStates = new PatchStates("Farming Guild", accessToFarmingGuildFruitTreePatch);
kastoriStates = new PatchStates("Kastori", accessToVarlamore);
greatConchStates = new PatchStates("Great Conch", accessToGreatConch);
westHardwoodStates = new PatchStates("Fossil Island", "West");
middleHardwoodStates = new PatchStates("Fossil Island", "Middle");
eastHardwoodStates = new PatchStates("Fossil Island", "East");
savannahStates = new PatchStates("Avium Savannah", accessToSavannah);
anglersRetreatStates = new PatchStates("Anglers' Retreat", accessToAnglersRetreat);
allGrowing = and(lumbridgeStates.getIsGrowing(), faladorStates.getIsGrowing(), taverleyStates.getIsGrowing(), varrockStates.getIsGrowing(),
gnomeStrongholdTreeStates.getIsGrowing(), catherbyStates.getIsGrowing(), brimhavenStates.getIsGrowing(), gnomeVillageStates.getIsGrowing(),
allGrowing = and(lumbridgeStates.getIsGrowing(), faladorStates.getIsGrowing(), taverleyStates.getIsGrowing(),
varrockStates.getIsGrowing(), gnomeStrongholdTreeStates.getIsGrowing(), catherbyStates.getIsGrowing(),
brimhavenStates.getIsGrowing(), taiBwoWannaiStates.getIsGrowing(), gnomeVillageStates.getIsGrowing(),
gnomeStrongholdFruitStates.getIsGrowing(),
or(not(accessToLletya), lletyaStates.getIsGrowing()),
or(not(accessToVarlamore), nemusRetreatStates.getIsGrowing()),
or(not(accessToVarlamore), auburnvaleStates.getIsGrowing()),
or(not(accessToVarlamore), kastoriStates.getIsGrowing()),
or(not(accessToFarmingGuildTreePatch), farmingGuildTreeStates.getIsGrowing()),
or(not(accessToFarmingGuildFruitTreePatch), farmingGuildFruitStates.getIsGrowing()),
or(not(accessToFossilIsland), and(westHardwoodStates.getIsGrowing(), middleHardwoodStates.getIsGrowing(), eastHardwoodStates.getIsGrowing())),
or(not(accessToSavannah), savannahStates.getIsGrowing())
or(not(accessToSavannah), savannahStates.getIsGrowing()),
or(not(accessToAnglersRetreat), anglersRetreatStates.getIsGrowing()),
or(not(accessToGreatConch), greatConchStates.getIsGrowing())
);
payingForRemoval = new RuneliteRequirement(configManager, PAY_OR_CUT, PayOrCut.PAY.name());
@@ -417,6 +500,16 @@ public class TreeRun extends ComplexStateQuestHelper
protectionItemHardwood.addAlternates(protectionItemHardwood.getId() + 1);
allProtectionItemHardwood = protectionItemHardwood.copy();
CalquatTreeSapling calquatTreeSaplingEnum = (CalquatTreeSapling) FarmingUtils.getEnumFromConfig(configManager,
CalquatTreeSapling.CALQUAT);
calquatSapling = calquatTreeSaplingEnum.getPlantableItemRequirement(itemManager);
calquatSapling.setHighlightInInventory(true);
allCalquatSaplings = calquatSapling.copy();
protectionItemCalquat = calquatTreeSaplingEnum.getProtectionItemRequirement(itemManager).showConditioned(payingForProtection);
protectionItemCalquat.addAlternates(protectionItemCalquat.getId() + 1);
allProtectionItemCalquat = protectionItemCalquat.copy();
compost = new ItemRequirement("Compost", ItemCollections.COMPOST).showConditioned(usingCompostorNothing);
compost.setDisplayMatchedItemName(true);
@@ -430,8 +523,10 @@ public class TreeRun extends ComplexStateQuestHelper
faladorTeleport = new ItemRequirement("Falador teleport", ItemCollections.RING_OF_WEALTHS);
faladorTeleport.addAlternates(ItemID.POH_TABLET_FALADORTELEPORT);
fossilIslandTeleport = new ItemRequirement("Teleport to Fossil Island", ItemCollections.DIGSITE_PENDANTS);
nemusRetreatTeleport = new ItemRequirement("Nemus Retreat Teleport", ItemID.PENDANT_OF_ATES);
nemusRetreatTeleport.addAlternates(ItemCollections.FAIRY_STAFF);
auburnvaleTeleport = new ItemRequirement("Auburnvale Teleport", ItemID.PENDANT_OF_ATES);
auburnvaleTeleport.addAlternates(ItemCollections.FAIRY_STAFF);
kastoriTeleport = new ItemRequirement("Kastori Teleport", ItemID.PENDANT_OF_ATES);
kastoriTeleport.addAlternates(ItemCollections.FAIRY_STAFF);
// Graceful and Farming Outfit
gracefulHood = new ItemRequirement(
@@ -511,9 +606,9 @@ public class TreeRun extends ComplexStateQuestHelper
"Speak to Rosie to clear the patch.");
farmingGuildTreePatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
nemusRetreatTreePatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_TREE_7, new WorldPoint(1367, 3322, 0),
auburnvaleTreePatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_TREE_7, new WorldPoint(1367, 3322, 0),
"Speak to Aub to clear the patch.");
nemusRetreatTreePatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
auburnvaleTreePatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
lumbridgeTreeProtect = new NpcStep(this, NpcID.FARMING_GARDENER_TREE_4, new WorldPoint(3193, 3231, 0),
"Speak to Fayeth to protect the patch.");
@@ -539,9 +634,9 @@ public class TreeRun extends ComplexStateQuestHelper
"Speak to Rosie to protect the patch.");
farmingGuildTreePayForProtection.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
nemusRetreatTreeProtect = new NpcStep(this, NpcID.FARMING_GARDENER_TREE_7, new WorldPoint(1367, 3322, 0),
auburnvaleTreeProtect = new NpcStep(this, NpcID.FARMING_GARDENER_TREE_7, new WorldPoint(1367, 3322, 0),
"Speak to Aub to protect the patch.");
nemusRetreatTreeProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
auburnvaleTreeProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
// Tree Patch Steps
lumbridgeTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_4, new WorldPoint(3193, 3231, 0),
@@ -566,10 +661,10 @@ public class TreeRun extends ComplexStateQuestHelper
farmingGuildTreePatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToFarmingGuildTreePatch));
farmingGuildTreePatchCheckHealth.addTeleport(farmingGuildTeleport);
nemusRetreatTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Check the health of the tree planted at the Nemus Retreat");
nemusRetreatTreePatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
nemusRetreatTreePatchCheckHealth.addTeleport(nemusRetreatTeleport);
auburnvaleTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Check the health of the tree planted at Auburnvale");
auburnvaleTreePatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
auburnvaleTreePatchCheckHealth.addTeleport(auburnvaleTeleport);
// Tree Plant Steps
lumbridgeTreePatchPlant = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_4, new WorldPoint(3193, 3231, 0),
@@ -603,11 +698,11 @@ public class TreeRun extends ComplexStateQuestHelper
farmingGuildTreePatchPlant.addIcon(treeSapling.getId());
farmingGuildTreePatchCheckHealth.addSubSteps(farmingGuildTreePatchPlant);
nemusRetreatTreePatchPlant = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Plant your sapling in the Nemus Retreat tree patch.", treeSapling);
nemusRetreatTreePatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
nemusRetreatTreePatchPlant.addIcon(treeSapling.getId());
nemusRetreatTreePatchCheckHealth.addSubSteps(nemusRetreatTreePatchPlant);
auburnvaleTreePatchPlant = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Plant your sapling in the Auburnvale tree patch.", treeSapling);
auburnvaleTreePatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
auburnvaleTreePatchPlant.addIcon(treeSapling.getId());
auburnvaleTreePatchCheckHealth.addSubSteps(auburnvaleTreePatchPlant);
// Dig
lumbridgeTreePatchDig = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_4, new WorldPoint(3193, 3231, 0),
@@ -622,8 +717,8 @@ public class TreeRun extends ComplexStateQuestHelper
"Dig up the tree stump in the Tree Gnome Stronghold.");
farmingGuildTreePatchDig = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_6, new WorldPoint(1232, 3736, 0),
"Dig up the tree stump in the Farming Guild tree patch.");
nemusRetreatTreePatchDig = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Dig up the tree stump in the Nemus Retreat tree patch.");
auburnvaleTreePatchDig = new ObjectStep(this, ObjectID.FARMING_TREE_PATCH_7, new WorldPoint(1367, 3322, 0),
"Dig up the tree stump in the Auburnvale tree patch.");
faladorTreePatchClear.addSubSteps(faladorTreePatchDig, faladorTreeProtect);
taverleyTreePatchClear.addSubSteps(taverleyTreePatchDig, taverleyTreeProtect);
@@ -631,7 +726,7 @@ public class TreeRun extends ComplexStateQuestHelper
gnomeStrongholdTreePatchClear.addSubSteps(gnomeStrongholdTreePatchDig, strongholdTreeProtect);
lumbridgeTreePatchClear.addSubSteps(lumbridgeTreePatchDig, lumbridgeTreeProtect);
farmingGuildTreePatchClear.addSubSteps(farmingGuildTreePatchDig, farmingGuildTreePayForProtection);
nemusRetreatTreePatchClear.addSubSteps(nemusRetreatTreePatchDig, nemusRetreatTreeProtect);
auburnvaleTreePatchClear.addSubSteps(auburnvaleTreePatchDig, auburnvaleTreeProtect);
// Fruit Tree Steps
@@ -662,6 +757,25 @@ public class TreeRun extends ComplexStateQuestHelper
farmingGuildFruitTreePatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToFarmingGuildFruitTreePatch));
farmingGuildFruitTreePatchPlant.addIcon(fruitTreeSapling.getId());
kastoriFruitTreePatchPlant = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_7, new WorldPoint(1350, 3057, 0),
"Plant your sapling in the Kastori patch.", fruitTreeSapling);
kastoriFruitTreePatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
kastoriFruitTreePatchPlant.addIcon(fruitTreeSapling.getId());
taiBwoWannaiCalquatPatchPlant = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH, new WorldPoint(2795, 3102, 0),
"Plant your sapling in the Tai Bwo Wannai patch.", calquatSapling);
taiBwoWannaiCalquatPatchPlant.addIcon(calquatSapling.getId());
kastoriCalquatPatchPlant = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_2, new WorldPoint(1366, 3033, 0),
"Plant your sapling in the Kastori Calquat patch.", calquatSapling);
kastoriCalquatPatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
kastoriCalquatPatchPlant.addIcon(calquatSapling.getId());
greatConchCalquatPatchPlant = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_3, new WorldPoint(3129, 2406, 0),
"Plant your sapling in the Great Conch patch.", calquatSapling);
greatConchCalquatPatchPlant.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToGreatConch));
greatConchCalquatPatchPlant.addIcon(calquatSapling.getId());
// Fruit Tree Check Health Steps
gnomeStrongholdFruitTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_1, new WorldPoint(2476, 3446, 0),
"Check the health of the fruit tree planted in the Tree Gnome Stronghold.");
@@ -700,6 +814,31 @@ public class TreeRun extends ComplexStateQuestHelper
farmingGuildFruitTreePatchCheckHealth.addWidgetHighlightWithTextRequirement(187, 3, "Farming Guild", true);
farmingGuildFruitTreePatchCheckHealth.addSubSteps(farmingGuildFruitTreePatchPlant);
kastoriFruitTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_7, new WorldPoint(1350, 3057, 0),
"Check the health of the fruit tree planted in Kastori.");
kastoriFruitTreePatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
kastoriFruitTreePatchCheckHealth.addTeleport(kastoriTeleport);
kastoriFruitTreePatchCheckHealth.addWidgetHighlightWithTextRequirement(187, 3, "Kastori", true);
kastoriFruitTreePatchCheckHealth.addSubSteps(kastoriFruitTreePatchPlant);
taiBwoWannaiCalquatPatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH, new WorldPoint(2795, 3102, 0),
"Check the health of the calquat tree planted in Tai Bwo Wannai.", calquatSapling);
taiBwoWannaiCalquatPatchCheckHealth.addWidgetHighlightWithTextRequirement(187, 3, "Tai Bwo Wannai", true);
taiBwoWannaiCalquatPatchCheckHealth.addSubSteps(taiBwoWannaiCalquatPatchPlant);
kastoriCalquatPatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_2, new WorldPoint(1366, 3033, 0),
"Check the health of the calquat tree planted in Kastori.");
kastoriCalquatPatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToVarlamore));
kastoriCalquatPatchCheckHealth.addTeleport(kastoriTeleport);
kastoriCalquatPatchCheckHealth.addWidgetHighlightWithTextRequirement(187, 3, "Kastori", true);
kastoriCalquatPatchCheckHealth.addSubSteps(kastoriCalquatPatchPlant);
greatConchCalquatPatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_3, new WorldPoint(3129, 2406, 0),
"Check the health of the calquat tree planted in Great Conch.", calquatSapling);
greatConchCalquatPatchCheckHealth.conditionToHideInSidebar(new Conditions(LogicType.NOR, accessToGreatConch));
greatConchCalquatPatchCheckHealth.addWidgetHighlightWithTextRequirement(187, 3, "Great Conch", true);
greatConchCalquatPatchCheckHealth.addSubSteps(greatConchCalquatPatchPlant);
// Clear
gnomeStrongholdFruitTreePatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_FRUIT_1, new WorldPoint(2476, 3446, 0),
"Pay Bolongo 200 coins to clear the fruit tree, or pick all the fruit and cut it down.");
@@ -722,6 +861,18 @@ public class TreeRun extends ComplexStateQuestHelper
farmingGuildFruitTreePatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_FARMGUILD_T3, new WorldPoint(1243, 3760, 0),
"Pay Nikkie 200 coins to clear the fruit tree, or pick all the fruit and cut it down.");
farmingGuildFruitTreePatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
kastoriFruitTreePatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_FRUIT_7, new WorldPoint(1350, 3057, 0),
"Pay Ehecatl 200 coins to clear the fruit tree, or pick all the fruit and cut it down.");
kastoriFruitTreePatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
taiBwoWannaiCalquatPatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT, new WorldPoint(2795, 3102, 0),
"Pay Imiago 200 coins to clear the calquat tree, or pick all the fruit and cut it down.");
taiBwoWannaiCalquatPatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
kastoriCalquatPatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT_2, new WorldPoint(1366, 3033, 0),
"Pay Tziuhtla 200 coins to clear the calquat tree, or pick all the fruit and cut it down.");
kastoriCalquatPatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
greatConchCalquatPatchClear = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT_3, new WorldPoint(3129, 2406, 0),
"Pay Guppa 200 coins to clear the calquat tree, or pick all the fruit and cut it down.");
greatConchCalquatPatchClear.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
strongholdFruitProtect = new NpcStep(this, NpcID.FARMING_GARDENER_FRUIT_1, new WorldPoint(2476, 3446, 0),
"Pay Bolongo to protect the patch.");
@@ -743,6 +894,18 @@ public class TreeRun extends ComplexStateQuestHelper
"Pay Nikkie to protect the patch.");
guildFruitProtect.addDialogSteps("Would you chop my tree down for me?", "I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - " +
"chop my tree down please.", "Yes.");
kastoriFruitProtect = new NpcStep(this, NpcID.FARMING_GARDENER_FRUIT_7, new WorldPoint(1350, 3057, 0),
"Pay Ehecatl to protect the patch.");
kastoriFruitProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
taiBwoWannaiCalquatProtect = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT, new WorldPoint(2795, 3102, 0),
"Pay Imiago to protect the patch.");
taiBwoWannaiCalquatProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
kastoriCalquatProtect = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT_2, new WorldPoint(1366, 3033, 0),
"Pay Tziuhtla to protect the patch.");
kastoriCalquatProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
greatConchCalquatProtect = new NpcStep(this, NpcID.FARMING_GARDENER_CALQUAT_3, new WorldPoint(3129, 2406, 0),
"Pay Guppa to protect the patch.");
greatConchCalquatProtect.addDialogSteps("Would you chop my tree down for me?","I can't be bothered - I'd rather pay you to do it.", "Here's 200 Coins - chop my tree down please.", "Yes.");
// Dig Fruit Tree Steps
gnomeStrongholdFruitTreePatchDig = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_1, new WorldPoint(2476, 3446, 0),
@@ -757,6 +920,14 @@ public class TreeRun extends ComplexStateQuestHelper
"Dig up the fruit tree's stump in Lletya.");
farmingGuildFruitTreePatchDig = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_6, new WorldPoint(1242, 3758, 0),
"Dig up the fruit tree's stump in the Farming Guild.");
kastoriFruitTreePatchDig = new ObjectStep(this, ObjectID.FARMING_FRUIT_TREE_PATCH_7, new WorldPoint(1350, 3057, 0),
"Dig up the fruit tree's stump in Kastori.");
taiBwoWannaiCalquatPatchDig = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH, new WorldPoint(2795, 3102, 0),
"Dig up the calquat tree's stump in Tai Bwo Wannai.");
kastoriCalquatPatchDig = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_2, new WorldPoint(1366, 3033, 0),
"Dig up the calquat tree's stump in Kastori.");
greatConchCalquatPatchDig = new ObjectStep(this, ObjectID.FARMING_CALQUAT_TREE_PATCH_3, new WorldPoint(3129, 2406, 0),
"Dig up the calquat tree's stump in Great Conch.");
gnomeStrongholdFruitTreePatchClear.addSubSteps(gnomeStrongholdFruitTreePatchDig, strongholdFruitProtect);
gnomeVillageFruitTreePatchClear.addSubSteps(gnomeVillageFruitTreePatchDig, villageFruitProtect);
@@ -764,6 +935,10 @@ public class TreeRun extends ComplexStateQuestHelper
catherbyFruitTreePatchClear.addSubSteps(catherbyFruitTreePatchDig, catherbyFruitProtect);
lletyaFruitTreePatchClear.addSubSteps(lletyaFruitTreePatchDig, lletyaFruitProtect);
farmingGuildFruitTreePatchClear.addSubSteps(farmingGuildFruitTreePatchDig, guildFruitProtect);
kastoriFruitTreePatchClear.addSubSteps(kastoriFruitTreePatchDig, kastoriFruitProtect);
taiBwoWannaiCalquatPatchClear.addSubSteps(taiBwoWannaiCalquatPatchDig, taiBwoWannaiCalquatProtect);
kastoriCalquatPatchClear.addSubSteps(kastoriCalquatPatchDig, kastoriCalquatProtect);
greatConchCalquatPatchClear.addSubSteps(greatConchCalquatPatchDig, greatConchCalquatProtect);
// Hardwood Tree Steps
westHardwoodTreePatchCheckHealth = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_3, new WorldPoint(3702, 3837, 0),
@@ -774,6 +949,8 @@ public class TreeRun extends ComplexStateQuestHelper
"Check the health of the eastern hardwood tree on Fossil Island.");
savannahCheckHealth = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_4, new WorldPoint(1687, 2972, 0),
"Check the health of the hardwood tree in the Avium Savannah.");
anglersCheckHealth = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_5, new WorldPoint(2470, 2704, 0),
"Check the health of the hardwood tree in the Anglers' Retreat.");
// Hardwood Tree Plant Steps
westHardwoodTreePatchPlant = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_3, new WorldPoint(3702, 3837, 0),
@@ -792,7 +969,10 @@ public class TreeRun extends ComplexStateQuestHelper
eastHardwoodTreePatchCheckHealth.addSubSteps(eastHardwoodTreePatchPlant);
savannahPlant = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_4, new WorldPoint(1687, 2972, 0),
"Plant your sapling into the hardwood tree in the hardwood tree patch in the Avium Savannah.", hardwoodSapling);
"Plant your sapling on the hardwood tree patch in the Avium Savannah.", hardwoodSapling);
anglersPlant = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_5, new WorldPoint(2470, 2704, 0),
"Plant your sapling on the hardwood tree patch on Anglers' Retreat.", hardwoodSapling);
westHardwoodTreePatchClear = new NpcStep(this, NpcID.FOSSIL_SQUIRREL_GARDENER3, new WorldPoint(3702, 3837, 0),
"Pay the brown squirrel to remove the west tree.");
@@ -812,6 +992,11 @@ public class TreeRun extends ComplexStateQuestHelper
savannahClear.addDialogSteps("Would you chop my tree down for me?", "I can't be bothered - I'd rather pay you to do it.", "Here's 200 " +
"Coins - chop my tree down please.", "Yes.");
anglersClear = new NpcStep(this, NpcID.FARMING_GARDENER_HARDWOOD_TREE_5, new WorldPoint(2470, 2704, 0),
"Pay Argo to clear the tree.");
anglersClear.addDialogSteps("Would you chop my tree down for me?", "I can't be bothered - I'd rather pay you to do it.", "Here's 200 " +
"Coins - chop my tree down please.", "Yes.");
westHardwoodTreePatchDig = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_3, new WorldPoint(3702, 3837, 0),
"Dig up the western hardwood tree's stump on Fossil Island.");
middleHardwoodTreePatchDig = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_2, new WorldPoint(3708, 3833, 0),
@@ -820,6 +1005,8 @@ public class TreeRun extends ComplexStateQuestHelper
"Dig up the eastern hardwood tree's stump on Fossil Island.");
savannahDig = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_4, new WorldPoint(1687, 2972, 0),
"Dig up the Savannah hardwood tree's stump.");
anglersDig = new ObjectStep(this, ObjectID.FARMING_HARDWOOD_TREE_PATCH_5, new WorldPoint(2470,2704, 0),
"Dig up the Anglers' Retreat hardwood tree's stump.");
westHardwoodProtect = new NpcStep(this, NpcID.FOSSIL_SQUIRREL_GARDENER3, new WorldPoint(3702, 3837, 0),
"Pay the brown squirrel to protect the west tree.");
@@ -829,11 +1016,14 @@ public class TreeRun extends ComplexStateQuestHelper
"Pay the grey squirrel to protect the east tree.");
savannahProtect = new NpcStep(this, NpcID.FROG_QUEST_MARCELLUS_FARMER, new WorldPoint(1687, 2972, 0),
"Pay Marcellus to protect the hardwood tree.");
anglersProtect = new NpcStep(this, NpcID.FARMING_GARDENER_HARDWOOD_TREE_5, new WorldPoint(2470, 2704, 0),
"Pay Argo to protect the hardwood tree.");
westHardwoodTreePatchClear.addSubSteps(westHardwoodTreePatchDig, westHardwoodProtect);
middleHardwoodTreePatchClear.addSubSteps(middleHardwoodTreePatchDig, middleHardwoodProtect);
eastHardwoodTreePatchClear.addSubSteps(eastHardwoodTreePatchDig, eastHardwoodProtect);
savannahClear.addSubSteps(savannahDig, savannahProtect);
anglersClear.addSubSteps(anglersDig, anglersProtect);
}
@Subscribe
@@ -843,13 +1033,19 @@ public class TreeRun extends ComplexStateQuestHelper
allProtectionItemTree.setQuantity(protectionItemTree.getQuantity());
allProtectionItemFruitTree.setQuantity(protectionItemFruitTree.getQuantity());
allProtectionItemHardwood.setQuantity(protectionItemHardwood.getQuantity());
allProtectionItemCalquat.setQuantity(protectionItemCalquat.getQuantity());
handleTreePatches(PatchImplementation.TREE,
List.of(farmingGuildTreeStates, varrockStates, faladorStates, taverleyStates, lumbridgeStates, gnomeStrongholdTreeStates, nemusRetreatStates),
List.of(farmingGuildTreeStates, varrockStates, faladorStates, taverleyStates, lumbridgeStates, gnomeStrongholdTreeStates, auburnvaleStates),
farmingWorld.getTabs().get(Tab.TREE), allTreeSaplings, allProtectionItemTree);
handleTreePatches(PatchImplementation.FRUIT_TREE,
List.of(farmingGuildFruitStates, brimhavenStates, catherbyStates, gnomeStrongholdFruitStates, gnomeVillageStates, lletyaStates),
List.of(farmingGuildFruitStates, brimhavenStates, catherbyStates, gnomeStrongholdFruitStates, gnomeVillageStates, lletyaStates,
kastoriStates),
farmingWorld.getTabs().get(Tab.FRUIT_TREE), allFruitSaplings, allProtectionItemFruitTree);
handleTreePatches(PatchImplementation.HARDWOOD_TREE, List.of(westHardwoodStates, middleHardwoodStates, eastHardwoodStates, savannahStates),
handleTreePatches(PatchImplementation.CALQUAT,
List.of(taiBwoWannaiStates, kastoriStates, greatConchStates),
farmingWorld.getTabs().get(Tab.FRUIT_TREE), allCalquatSaplings, allProtectionItemCalquat);
handleTreePatches(PatchImplementation.HARDWOOD_TREE, List.of(westHardwoodStates, middleHardwoodStates,
eastHardwoodStates, savannahStates, anglersRetreatStates),
farmingWorld.getTabs().get(Tab.TREE), allHardwoodSaplings, allProtectionItemHardwood);
}
@@ -916,6 +1112,8 @@ public class TreeRun extends ComplexStateQuestHelper
this::updateFruitTreeSapling, FruitTreeSapling.APPLE, configManager, questHelperPlugin);
FarmingConfigChangeHandler.handleFarmingEnumConfigChange(event, HARDWOOD_TREE_SAPLING, HardwoodTreeSapling.class,
this::updateHardwoodTreeSapling, HardwoodTreeSapling.TEAK, configManager, questHelperPlugin);
FarmingConfigChangeHandler.handleFarmingEnumConfigChange(event, CALQUAT_TREE_SAPLING, CalquatTreeSapling.class,
this::updateCalquatTreeSapling, CalquatTreeSapling.CALQUAT, configManager, questHelperPlugin);
if (event.getKey().equals(GRACEFUL_OR_FARMING) || event.getKey().equals(PAY_OR_CUT) || event.getKey().equals(PAY_OR_COMPOST))
{
@@ -926,6 +1124,7 @@ public class TreeRun extends ComplexStateQuestHelper
private final String TREE_SAPLING = "treeSaplings";
private final String FRUIT_TREE_SAPLING = "fruitTreeSaplings";
private final String HARDWOOD_TREE_SAPLING = "hardwoodTreeSaplings";
private final String CALQUAT_TREE_SAPLING = "calquatTreeSaplings";
@Override
public List<HelperConfig> getConfigs()
@@ -933,16 +1132,17 @@ public class TreeRun extends ComplexStateQuestHelper
HelperConfig treesConfig = new HelperConfig("Trees", TREE_SAPLING, TreeSapling.values());
HelperConfig fruitTreesConfig = new HelperConfig("Fruit Trees", FRUIT_TREE_SAPLING, FruitTreeSapling.values());
HelperConfig hardwoodTreesConfig = new HelperConfig("Hardwood Trees", HARDWOOD_TREE_SAPLING, HardwoodTreeSapling.values());
HelperConfig calquatTreesConfig = new HelperConfig("Calquat Trees", CALQUAT_TREE_SAPLING, CalquatTreeSapling.values());
HelperConfig outfitConfig = new HelperConfig("Outfit", GRACEFUL_OR_FARMING, GracefulOrFarming.values());
HelperConfig payOrCutConfig = new HelperConfig("Pay or cut tree removal", PAY_OR_CUT, PayOrCut.values());
HelperConfig payOrCompostConfig = new HelperConfig("Pay farmer or compost", PAY_OR_COMPOST, PayOrCompost.values());
return Arrays.asList(treesConfig, fruitTreesConfig, hardwoodTreesConfig, outfitConfig, payOrCutConfig, payOrCompostConfig);
return Arrays.asList(treesConfig, fruitTreesConfig, hardwoodTreesConfig, calquatTreesConfig, outfitConfig, payOrCutConfig, payOrCompostConfig);
}
@Override
public List<ItemRequirement> getItemRequirements()
{
return Arrays.asList(spade, rake, compost, coins, allTreeSaplings, allFruitSaplings, allHardwoodSaplings, allProtectionItemTree, allProtectionItemFruitTree, allProtectionItemHardwood);
return Arrays.asList(spade, rake, compost, coins, allTreeSaplings, allFruitSaplings, allHardwoodSaplings, allCalquatSaplings, allProtectionItemTree, allProtectionItemFruitTree, allProtectionItemHardwood, allProtectionItemCalquat);
}
@Override
@@ -960,51 +1160,68 @@ public class TreeRun extends ComplexStateQuestHelper
allSteps.add(new PanelDetails("Wait for Herbs", waitForTree).withHideCondition(nor(allGrowing)));
PanelDetails farmingGuildPanel = new PanelDetails("Farming Guild", Arrays.asList(farmingGuildTreePatchCheckHealth, farmingGuildTreePatchClear,
farmingGuildFruitTreePatchCheckHealth, farmingGuildFruitTreePatchClear)).withId(0);
farmingGuildTreePatchPlant, farmingGuildFruitTreePatchCheckHealth, farmingGuildFruitTreePatchClear,
farmingGuildTreePatchPlant)).withId(0);
farmingGuildPanel.setLockingStep(farmingGuildStep);
PanelDetails lumbridgePanel = new PanelDetails("Lumbridge", Arrays.asList(lumbridgeTreePatchCheckHealth, lumbridgeTreePatchClear)).withId(1);
PanelDetails lumbridgePanel = new PanelDetails("Lumbridge", Arrays.asList(lumbridgeTreePatchCheckHealth, lumbridgeTreePatchClear, lumbridgeTreePatchPlant)).withId(1);
lumbridgePanel.setLockingStep(lumbridgeStep);
PanelDetails faladorPanel = new PanelDetails("Falador", Arrays.asList(faladorTreePatchCheckHealth, faladorTreePatchClear)).withId(2);
PanelDetails faladorPanel = new PanelDetails("Falador", Arrays.asList(faladorTreePatchCheckHealth, faladorTreePatchClear, faladorTreePatchPlant)).withId(2);
faladorPanel.setLockingStep(faladorStep);
PanelDetails taverleyPanel = new PanelDetails("Taverley", Arrays.asList(taverleyTreePatchCheckHealth, taverleyTreePatchClear)).withId(3);
PanelDetails taverleyPanel = new PanelDetails("Taverley", Arrays.asList(taverleyTreePatchCheckHealth, taverleyTreePatchClear, taverleyTreePatchPlant)).withId(3);
taverleyPanel.setLockingStep(taverleyStep);
PanelDetails varrockPanel = new PanelDetails("Varrock", Arrays.asList(varrockTreePatchCheckHealth, varrockTreePatchClear)).withId(4);
PanelDetails varrockPanel = new PanelDetails("Varrock", Arrays.asList(varrockTreePatchCheckHealth, varrockTreePatchClear, varrockTreePatchPlant)).withId(4);
varrockPanel.setLockingStep(varrockStep);
PanelDetails gnomeStrongholdPanel = new PanelDetails("Gnome Stronghold", Arrays.asList(gnomeStrongholdFruitTreePatchCheckHealth, gnomeVillageFruitTreePatchClear,
gnomeStrongholdTreePatchCheckHealth, gnomeStrongholdTreePatchClear)).withId(5);
PanelDetails gnomeStrongholdPanel = new PanelDetails("Gnome Stronghold", Arrays.asList(gnomeStrongholdFruitTreePatchCheckHealth, gnomeStrongholdFruitTreePatchClear, gnomeStrongholdFruitTreePatchPlant,
gnomeStrongholdTreePatchCheckHealth, gnomeStrongholdTreePatchClear, gnomeStrongholdFruitTreePatchPlant)).withId(5);
gnomeStrongholdPanel.setLockingStep(strongholdStep);
PanelDetails villagePanel = new PanelDetails("Tree Gnome Village", Arrays.asList(gnomeVillageFruitTreePatchCheckHealth,
gnomeVillageFruitTreePatchClear)).withId(6);
gnomeVillageFruitTreePatchClear, gnomeVillageFruitTreePatchPlant)).withId(6);
villagePanel.setLockingStep(villageStep);
PanelDetails catherbyPanel = new PanelDetails("Catherby", Arrays.asList(catherbyFruitTreePatchCheckHealth, catherbyFruitTreePatchClear)).withId(7);
PanelDetails catherbyPanel = new PanelDetails("Catherby", Arrays.asList(catherbyFruitTreePatchCheckHealth, catherbyFruitTreePatchClear, catherbyFruitTreePatchPlant)).withId(7);
catherbyPanel.setLockingStep(catherbyStep);
PanelDetails brimhavenPanel = new PanelDetails("Brimhaven", Arrays.asList(brimhavenFruitTreePatchCheckHealth, brimhavenFruitTreePatchClear)).withId(8);
PanelDetails brimhavenPanel = new PanelDetails("Brimhaven", Arrays.asList(brimhavenFruitTreePatchCheckHealth, brimhavenFruitTreePatchClear, brimhavenFruitTreePatchPlant,
taiBwoWannaiCalquatPatchCheckHealth, taiBwoWannaiCalquatPatchClear, taiBwoWannaiCalquatPatchPlant)).withId(8);
brimhavenPanel.setLockingStep(brimhavenStep);
PanelDetails lletyaPanel = new PanelDetails("Lletya", Arrays.asList(lletyaFruitTreePatchCheckHealth, lletyaFruitTreePatchClear)).withId(9);
PanelDetails lletyaPanel = new PanelDetails("Lletya", Arrays.asList(lletyaFruitTreePatchCheckHealth, lletyaFruitTreePatchClear, lletyaFruitTreePatchPlant)).withId(9);
lletyaPanel.setLockingStep(lletyaStep);
PanelDetails fossilIslandPanel = new PanelDetails("Fossil Island", Arrays.asList(eastHardwoodTreePatchCheckHealth, eastHardwoodTreePatchClear,
middleHardwoodTreePatchCheckHealth, middleHardwoodTreePatchClear,
westHardwoodTreePatchCheckHealth, westHardwoodTreePatchClear)).withId(10);
PanelDetails fossilIslandPanel = new PanelDetails("Fossil Island", Arrays.asList(eastHardwoodTreePatchCheckHealth, eastHardwoodTreePatchClear, eastHardwoodTreePatchPlant,
middleHardwoodTreePatchCheckHealth, middleHardwoodTreePatchClear, middleHardwoodTreePatchPlant,
westHardwoodTreePatchCheckHealth, westHardwoodTreePatchClear, westHardwoodTreePatchPlant)).withId(10);
fossilIslandPanel.setLockingStep(fossilIslandStep);
PanelDetails savannahPanel = new PanelDetails("Avium Savannah", Arrays.asList(savannahCheckHealth, savannahClear, savannahPlant)).withId(11);
savannahPanel.setLockingStep(savannahStep);
PanelDetails nemusRetreatPanel = new PanelDetails("Nemus Retreat", Arrays.asList(nemusRetreatTreePatchCheckHealth, nemusRetreatTreePatchClear, nemusRetreatTreePatchPlant)).withId(12);
nemusRetreatPanel.setLockingStep(nemusRetreatStep);
PanelDetails auburnvalePanel = new PanelDetails("Auburnvale", Arrays.asList(auburnvaleTreePatchCheckHealth, auburnvaleTreePatchClear, auburnvaleTreePatchPlant)).withId(12);
auburnvalePanel.setLockingStep(auburnvaleStep);
PanelDetails kastoriPanel = new PanelDetails("Kastori", Arrays.asList(kastoriFruitTreePatchCheckHealth,
kastoriFruitTreePatchClear, kastoriFruitTreePatchPlant, kastoriCalquatPatchCheckHealth,
kastoriCalquatPatchClear, kastoriCalquatPatchPlant)).withId(13);
kastoriPanel.setLockingStep(kastoriStep);
PanelDetails anglersPanel = new PanelDetails("Anglers' Retreat", Arrays.asList(anglersCheckHealth,
anglersClear, anglersPlant)).withId(14);
anglersPanel.setLockingStep(anglersRetreatStep);
PanelDetails greatConchPanel = new PanelDetails("Great Conch",
Arrays.asList(greatConchCalquatPatchCheckHealth, greatConchCalquatPatchClear,
greatConchCalquatPatchPlant)).withId(15);
greatConchPanel.setLockingStep(greatConchStep);
TopLevelPanelDetails farmRunSidebar = new TopLevelPanelDetails("Tree Run", farmingGuildPanel, lumbridgePanel, faladorPanel, taverleyPanel,
varrockPanel, gnomeStrongholdPanel, villagePanel, catherbyPanel, brimhavenPanel, lletyaPanel, fossilIslandPanel, savannahPanel, nemusRetreatPanel);
varrockPanel, gnomeStrongholdPanel, villagePanel, catherbyPanel, brimhavenPanel, lletyaPanel, fossilIslandPanel, savannahPanel, auburnvalePanel,
kastoriPanel, anglersPanel, greatConchPanel);
allSteps.add(farmRunSidebar);
return allSteps;
@@ -1040,6 +1257,16 @@ public class TreeRun extends ComplexStateQuestHelper
updateHardwoodTreePaymentItem(selectedHardwoodTreeSapling);
}
private void updateCalquatTreeSapling(CalquatTreeSapling selectedCalquatTreeSapling)
{
calquatSapling.setId(selectedCalquatTreeSapling.calquatTreeSaplingId);
calquatSapling.setName(itemManager.getItemComposition(selectedCalquatTreeSapling.getPlantableItemId()).getName());
allCalquatSaplings.setId(selectedCalquatTreeSapling.calquatTreeSaplingId);
allCalquatSaplings.setName(itemManager.getItemComposition(selectedCalquatTreeSapling.getPlantableItemId()).getName());
updateCalquatPaymentItem(selectedCalquatTreeSapling);
}
private void updateTreePaymentItem(TreeSapling treeSapling)
{
protectionItemTree.setId(treeSapling.protectionItemId);
@@ -1072,4 +1299,15 @@ public class TreeRun extends ComplexStateQuestHelper
allProtectionItemHardwood.setName(itemManager.getItemComposition(treeSapling.protectionItemId).getName());
allProtectionItemHardwood.setQuantity(treeSapling.protectionItemQuantity);
}
private void updateCalquatPaymentItem(CalquatTreeSapling treeSapling)
{
protectionItemCalquat.setId(treeSapling.protectionItemId);
protectionItemCalquat.setName(itemManager.getItemComposition(treeSapling.protectionItemId).getName());
protectionItemCalquat.setQuantity(treeSapling.protectionItemQuantity);
allProtectionItemCalquat.setId(treeSapling.protectionItemId);
allProtectionItemCalquat.setName(itemManager.getItemComposition(treeSapling.protectionItemId).getName());
allProtectionItemCalquat.setQuantity(treeSapling.protectionItemQuantity);
}
}