package net.scapeemulator.game.model.player.skills.farming.plant; import net.scapeemulator.game.model.player.requirement.ItemRequirement; import net.scapeemulator.game.model.player.requirement.Requirements; import net.scapeemulator.game.model.player.requirement.SkillRequirement; import net.scapeemulator.game.model.player.skills.Skill; import net.scapeemulator.game.model.player.skills.farming.CureType; import net.scapeemulator.game.model.player.skills.farming.Farming; import net.scapeemulator.game.model.player.skills.farming.FarmingCycle; import net.scapeemulator.game.model.player.skills.farming.PlantState; public enum AllotmentPlant implements IPlant { POTATO(1, 8.0, 5318, 4, 0x6), ONION(5, 9.5, 5319, 4, 0xD), CABBAGE(7, 10.0, 5324, 4, 0x14), TOMATO(12, 12.5, 5322, 4, 0x1B), SWEETCORN(20, 17.0, 5320, 5, 0x22), STRAWBERRY(31, 26.0, 5323, 6, 0x2B), WATERMELON(47, 48.5, 5321, 8, 0x34); private final int seedId; private final int baseBit; private final int stages; private final Requirements requirements; private AllotmentPlant(int level, double plantXp, int seedId, int stages, int baseBit) { this.seedId = seedId; this.stages = stages; this.baseBit = baseBit; requirements = new Requirements(); requirements.addRequirement(new SkillRequirement(Skill.FARMING, level, true, "plant that", plantXp)); requirements.addRequirement(Farming.DIBBER_REQ); requirements.addRequirement(new ItemRequirement(seedId, 3, true, "You do not have enough seeds to plant that.")); } @Override public int getSeedId() { return seedId; } @Override public int getStageCount() { return stages; } @Override public FarmingCycle getCycle() { return FarmingCycle.TEN; } @Override public int getVarbit(int stage, PlantState state) { if (stage > stages) { stage = stages; } int value = baseBit + stage; switch (state) { case GROWING: case GROWN: return value; case WATERED: return (0x01 << 6) | value; case DISEASED: return (0x02 << 6) | value; case DEAD: return (0x03 << 6) | value; default: throw new IllegalStateException("Bad allotment plant state"); } } @Override public Requirements getRequirements() { return requirements; } @Override public boolean canWater() { return true; } @Override public CureType getCureType() { return CureType.PLANT_CURE; } }