public static bool growSapling(Patch patch) { Player owner = Server.getPlayerForName(patch.getOwnerName()); if (owner != null) { if (owner.getInventory().replaceSingleItem((int)SAPLING_DATA[patch.getPatchIndex()][1], (int)SAPLING_DATA[patch.getPatchIndex()][2])) { return(true); } else if (owner.getBank().findItem((int)SAPLING_DATA[patch.getPatchIndex()][1]) != -1) { Item item = owner.getBank().getSlot(owner.getBank().findItem((int)SAPLING_DATA[patch.getPatchIndex()][1])); if (item.getItemId() == (int)SAPLING_DATA[patch.getPatchIndex()][1]) { item.setItemId((int)SAPLING_DATA[patch.getPatchIndex()][2]); owner.getBank().refreshBank(); return(true); } } } return(true); }
private static void plantCrop(Player p, Patch patch, int seedId) { if (p.getTemporaryAttribute("unmovable") != null) { return; } for (int i = 0; i < SEEDS.Length; i++) { if (seedId == (int)SEEDS[i][1]) { PatchType type = patch.getPatchType(); bool sapling = type.Equals(PatchType.TREE) || type.Equals(PatchType.FRUIT_TREE); string s = sapling ? "sapling" : "seeds."; string s1 = s.Equals("sapling") ? patch.getSeedIndex() == 33 || patch.getSeedIndex() == 38 || patch.getSeedIndex() == 40 ? "an " : "a " : ""; if (!patch.getPatchType().Equals(PatchType.VEGATABLE) && !patch.getPatchType().Equals(PatchType.VEGATABLE_1)) { if (!patch.getPatchType().Equals((PatchType)SEEDS[i][0])) { string s2 = !((PatchType)SEEDS[i][0]).Equals(PatchType.FRUIT_TREE) && !((PatchType)SEEDS[i][0]).Equals(PatchType.TREE)? "seed" : "tree"; p.getPackets().sendMessage("This type of " + s2 + " cannot be planted here."); return; } } else if (patch.getPatchType().Equals(PatchType.VEGATABLE) || patch.getPatchType().Equals(PatchType.VEGATABLE_1)) { if (!SEEDS[i][0].Equals(PatchType.VEGATABLE) && !SEEDS[i][0].Equals(PatchType.VEGATABLE_1)) { p.getPackets().sendMessage("This type of seed cannot be planted here."); return; } } int[] data = getDataForPatch(patch, i); if (data == null) { return; } patch.setSeedIndex(i); if (p.getSkills().getGreaterLevel(Skills.SKILL.FARMING) < (int)SEEDS[patch.getSeedIndex()][6]) { p.getPackets().sendMessage("You need a Farming level of " + (int)SEEDS[patch.getSeedIndex()][6] + " to plant " + s1 + "" + (string)SEEDS[patch.getSeedIndex()][7] + " seeds."); return; } int seedAmount = (int)PATCHES[patch.getPatchIndex()][8]; if (!p.getInventory().hasItemAmount((int)SEEDS[i][1], seedAmount)) { p.getPackets().sendMessage("This patch requires " + seedAmount + " seeds."); return; } if (!sapling) { if (!p.getInventory().hasItem(TOOLS[1])) { p.getPackets().sendMessage("You need a seed dibber to plant seeds."); return; } } else { if (!p.getInventory().hasItem(TOOLS[2])) { p.getPackets().sendMessage("You need a trowel to transfer the sapling from the pot to a farming patch."); return; } if (!p.getInventory().hasItem(TOOLS[3])) { p.getPackets().sendMessage("You need a spade to plant the salping."); return; } } int j = i; p.setLastAnimation(new Animation(2291)); p.setTemporaryAttribute("unmovable", true); Event plantCropEvent = new Event(1000); plantCropEvent.setAction(() => { plantCropEvent.stop(); if (p.getInventory().deleteItem((int)SEEDS[j][1], seedAmount)) { if (sapling) { p.getInventory().addItemOrGround(TOOLS[4]); } patch.setStatus(0); patch.setConfigArray(data); patch.setTimeToGrow((long)SEEDS[j][3]); setConfig(p, patch); p.removeTemporaryAttribute("unmovable"); string prefix = seedAmount > 1 ? "" + seedAmount : "a"; string suffix = seedAmount > 1 ? "seeds." : "seed."; if ((patch.getPatchType().Equals(PatchType.HERB) && (patch.getSeedIndex() == 20 || patch.getSeedIndex() == 21))) { prefix = "an"; } string message = sapling ? "You plant the " + (string)SEEDS[patch.getSeedIndex()][7] + " sapling." : "You plant " + prefix + " " + (string)SEEDS[patch.getSeedIndex()][7] + " " + suffix; p.getPackets().sendMessage(message); p.getSkills().addXp(Skills.SKILL.FARMING, (double)SEEDS[patch.getSeedIndex()][4]); } }); Server.registerEvent(plantCropEvent); break; } } }
private static void harvestCrop(Player p, Patch patch) { if (patch.getPatchType().Equals(PatchType.VEGATABLE) || patch.getPatchType().Equals(PatchType.VEGATABLE_1)) { if (!p.getInventory().hasItem(TOOLS[3])) { p.getPackets().sendMessage("You need a spade to harvest your crops."); return; } } PatchType patchType = patch.getPatchType(); int emote = (patchType.Equals(PatchType.HERB) || patchType.Equals(PatchType.FLOWER)) ? 2282 : 830; int delay = patchType.Equals(PatchType.HERB) ? 2250 : 1500; int amount = patchType.Equals(PatchType.FLOWER) ? 1 : (int)PATCHES[patch.getPatchIndex()][8] + misc.random(10); string s = patchType.Equals(PatchType.FLOWER) ? "flower patch" : patchType.Equals(PatchType.HERB) ? "herb patch" : "allotment"; string s1 = patchType.Equals(PatchType.FLOWER) || patchType.Equals(PatchType.HERB) ? "pick" : "harvest"; p.setLastAnimation(new Animation(emote)); p.setTemporaryAttribute("harvesting", true); Event startHarvestCropEvent = new Event(delay); startHarvestCropEvent.setAction(() => { int i = 1; if (p.getTemporaryAttribute("harvesting") == null) { startHarvestCropEvent.stop(); return; } p.setLastAnimation(new Animation(emote)); Event doHarvestCropEvent = new Event(800); doHarvestCropEvent.setAction(() => { doHarvestCropEvent.stop(); p.getSkills().addXp(Skills.SKILL.FARMING, (double)SEEDS[patch.getSeedIndex()][5]); p.getInventory().addItemOrGround((int)SEEDS[patch.getSeedIndex()][2], 1); p.getPackets().sendMessage("You " + s1 + " " + (string)SEEDS[patch.getSeedIndex()][8] + " " + (string)SEEDS[patch.getSeedIndex()][7] + " from the " + s + " ."); if (i++ >= amount) { p.getPackets().sendMessage("The patch has been cleared."); patch.setStatus(2); patch.setConfigArray(WEEDS_CONFIG); setConfig(p, patch); } }); Server.registerEvent(doHarvestCropEvent); if (i >= amount) { startHarvestCropEvent.stop(); return; } }); Server.registerEvent(startHarvestCropEvent); }