diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java b/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java index 22c12a1c8..a1e12367e 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java @@ -183,7 +183,7 @@ public abstract class DialoguePlugin implements Plugin { if (npc == null) { return interpreter.sendDialogues(getIds()[0], getIds()[0] > 8591 ? FacialExpression.OLD_NORMAL : FacialExpression.FRIENDLY, messages); } - return interpreter.sendDialogues(npc, getIds()[0] > 8591 ? FacialExpression.OLD_NORMAL : FacialExpression.FRIENDLY, messages); + return interpreter.sendDialogues(npc, npc.getId() > 8591 ? FacialExpression.OLD_NORMAL : FacialExpression.FRIENDLY, messages); } /** diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/FarmerPayOptionHandler.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/FarmerPayOptionHandler.kt new file mode 100644 index 000000000..248dcf424 --- /dev/null +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/FarmerPayOptionHandler.kt @@ -0,0 +1,135 @@ +package core.game.node.entity.skill.farming + +import core.cache.def.impl.NPCDefinition +import core.game.content.dialogue.DialoguePlugin +import core.game.interaction.OptionHandler +import core.game.node.Node +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.game.node.item.Item +import core.plugin.Initializable +import core.plugin.Plugin + +@Initializable +class FarmerPayOptionHandler : OptionHandler() { + override fun newInstance(arg: Any?): Plugin { + NPCDefinition.setOptionHandler("pay",this) + NPCDefinition.setOptionHandler("pay (north)",this) + NPCDefinition.setOptionHandler("pay (south)",this) + NPCDefinition.setOptionHandler("pay (north-west)",this) + NPCDefinition.setOptionHandler("pay (south-east)",this) + return this + } + + override fun handle(player: Player?, node: Node?, option: String?): Boolean { + player ?: return false + node ?: return false + val farmer = Farmers.forId(node.id) + + if(farmer == null){ + player.sendMessage("This shouldn't be happening. Report this.") + return true + } + + val fPatch = when(option){ + "pay" -> farmer.patches[0] + "pay (north)","pay (north-west)" -> farmer.patches[0] + "pay (south)","pay (south-east)" -> farmer.patches[1] + else -> farmer.patches[0] + } + + val patch = fPatch.getPatchFor(player) + if(patch.plantable == null){ + player.dialogueInterpreter.sendDialogue("I have nothing to protect in that patch.") + return true + } + + if(patch.protectionPaid){ + player.dialogueInterpreter.sendDialogue("I have already paid to protect that patch.") + return true + } + + player.dialogueInterpreter.open(FarmerPayDialogue.KEY,node.asNpc(),patch) + return true + } + + @Initializable + class FarmerPayDialogue(player: Player? = null) : DialoguePlugin(player){ + var patch: Patch? = null + var item: Item? = null + + companion object { + @JvmField + val KEY = 1256743 + } + + override fun newInstance(player: Player?): DialoguePlugin { + return FarmerPayDialogue(player) + } + + override fun open(vararg args: Any?): Boolean { + npc = (args[0] as NPC).getShownNPC(player) + patch = (args[1] as Patch) + if(patch == null){ + npc("Hello.") + stage = 1000 + return true + } else { + item = patch?.plantable?.protectionItem + if(item == null) npc("Sorry, I won't protect that.").also { stage = 1000 } + else{ + val name = item?.name?.toLowerCase() + npc("I would like ${item?.amount} $name","to protect that patch.") + stage = 0 + } + } + return true + } + + override fun handle(interfaceId: Int, buttonId: Int): Boolean { + when(stage){ + 0 -> options("Sure!","No, thanks.").also { stage++ } + 1 -> when(buttonId){ + 1 -> player("Sure!").also { stage++ } + 2 -> player("No, thanks.").also { stage = 1000 } + } + 2 -> { + if(player.inventory.containsItem(item)){ + player("Here you go.").also { stage = 10 } + player.inventory.remove() + } else { + item = Item(item!!.noteChange,item!!.amount) + if(player.inventory.containsItem(item)){ + player("Here you go.").also { stage = 10 } + } else { + player("I don't have that to give.").also { stage = 20 } + } + } + } + + 10 -> { + if(player.inventory.remove(item)){ + npc("Thank you! I'll keep an eye on this patch.").also { stage = 1000 } + patch?.protectionPaid = true + } else { + npc("That stuff just... vanished....").also { stage = 1000 } + } + } + + 20 -> { + npc("Come back when you do.") + stage = 1000 + } + + 1000 -> end() + } + return true + } + + override fun getIds(): IntArray { + return intArrayOf(KEY) + } + + } + +} \ No newline at end of file diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/Farmers.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Farmers.kt new file mode 100644 index 000000000..cafb86168 --- /dev/null +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Farmers.kt @@ -0,0 +1,32 @@ +package core.game.node.entity.skill.farming + +enum class Farmers(val id: Int, val patches: Array) { + LYRA(2326, arrayOf(FarmingPatch.PORT_PHAS_ALLOTMENT_NW,FarmingPatch.PORT_PHAS_ALLOTMENT_SE)), + ELSTAN(2323, arrayOf(FarmingPatch.S_FALADOR_ALLOTMENT_NW,FarmingPatch.S_FALADOR_ALLOTMENT_SE)), + HESKEL(2340, arrayOf(FarmingPatch.N_FALADOR_TREE)), + ALAIN(2339, arrayOf(FarmingPatch.TAVERLY_TREE)), + DANTAERA(2324, arrayOf(FarmingPatch.CATHERBY_ALLOTMENT_N,FarmingPatch.CATHERBY_ALLOTMENT_S)), + ELLENA(2331, arrayOf(FarmingPatch.CATHERBY_FRUIT_TREE)), + SELENA(2332, arrayOf(FarmingPatch.YANILLE_HOPS)), + KRAGEN(2325, arrayOf(FarmingPatch.ARDOUGNE_ALLOTMENT_N,FarmingPatch.ARDOUGNE_ALLOTMENT_S)), + BOLONGO(2343, arrayOf(FarmingPatch.GNOME_STRONGHOLD_FRUIT_TREE)), + PRISSY_SCILLA(1037, arrayOf(FarmingPatch.GNOME_STRONGHOLD_TREE)), + FAYETH(2342, arrayOf(FarmingPatch.LUMBRIDGE_TREE)), + TREZNOR(2341, arrayOf(FarmingPatch.VARROCK_TREE)), + VASQUEN(2333, arrayOf(FarmingPatch.LUMBRIDGE_HOPS)), + RHONEN(2334, arrayOf(FarmingPatch.MCGRUBOR_HOPS)), + FRANCIS(2327, arrayOf(FarmingPatch.ENTRANA_HOPS)), + DREVEN(2335, arrayOf(FarmingPatch.CHAMPIONS_GUILD_BUSH)), + TARIA(2336, arrayOf(FarmingPatch.RIMMINGTON_BUSH)), + TORRELL(2338, arrayOf(FarmingPatch.ARDOUGNE_BUSH)); + + companion object{ + @JvmField + val farmers = values().map { it.id to it }.toMap() + + @JvmStatic + fun forId(id: Int): Farmers?{ + return farmers[id] + } + } +} \ No newline at end of file diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/InspectionHandler.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/InspectionHandler.kt index eb2474274..0c2f19255 100644 --- a/Server/src/main/java/Server/core/game/node/entity/skill/farming/InspectionHandler.kt +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/InspectionHandler.kt @@ -35,7 +35,6 @@ class InspectionHandler : OptionHandler() { player.sendMessage("$status1 $status2") player.sendMessage(status3) val varpValue = player.varpManager.get(patch.varpIndex).getBitRangeValue(patch.varpOffset,patch.varpOffset + 7) - player.sendMessage("E" + varpValue) } return true } diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/Patch.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Patch.kt index 9d4455113..afb3d6c2d 100644 --- a/Server/src/main/java/Server/core/game/node/entity/skill/farming/Patch.kt +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Patch.kt @@ -10,6 +10,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl var diseaseMod = 0 var compost = CompostType.NONE + var protectionPaid = false fun setNewHarvestAmount() { if(patch.type == PatchType.ALLOTMENT){ @@ -126,7 +127,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl CompostType.SUPER -> 13 } - if(RandomFunction.random(128) <= (17 - diseaseMod) && !isWatered && !isGrown()){ + if(RandomFunction.random(128) <= (17 - diseaseMod) && !isWatered && !isGrown() && !protectionPaid){ //bush, tree, fruit tree can not disease on stage 1(0) of growth. if(!((patch.type == PatchType.BUSH || patch.type == PatchType.TREE || patch.type == PatchType.FRUIT_TREE) && currentGrowthStage == 0)) { isDiseased = true diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/PatchRaker.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/PatchRaker.kt index 239a21969..c02cfbd38 100644 --- a/Server/src/main/java/Server/core/game/node/entity/skill/farming/PatchRaker.kt +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/PatchRaker.kt @@ -24,7 +24,6 @@ object PatchRaker { } else { patch.getPatchFor(player).currentGrowthStage++ patch.getPatchFor(player).setCurrentState(++patchStage) - SystemLogger.logErr("UHHHHH " + patch.getPatchFor(player).getCurrentState()) player.inventory.add(Item(Items.WEEDS_6055)) player.skills.addExperience(Skills.FARMING,4.0) } diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/Plantable.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Plantable.kt index 7c50c049d..a64037a3a 100644 --- a/Server/src/main/java/Server/core/game/node/entity/skill/farming/Plantable.kt +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/Plantable.kt @@ -3,48 +3,7 @@ package core.game.node.entity.skill.farming import core.game.node.item.Item import core.tools.Items -enum class Plantable(val itemID: Int, val value: Int, val stages: Int, val plantingXP: Double, val harvestXP: Double, val checkHealthXP: Double, val requiredLevel: Int, val applicablePatch: PatchType, val harvestItem: Int) { - //Allotments - POTATO_SEED(5318, 6, 4, 8.0, 9.0, 0.0, 1, PatchType.ALLOTMENT, Items.POTATO_1942), - ONION_SEED(5319, 13, 4, 9.5, 10.5,0.0, 5, PatchType.ALLOTMENT,Items.ONION_1957), - CABBAGE_SEED(5324, 20, 4, 10.0, 11.5, 0.0,7, PatchType.ALLOTMENT,Items.CABBAGE_1965), - TOMATO_SEED(5322,27,4,12.5,14.0,0.0,12,PatchType.ALLOTMENT,Items.TOMATO_1982), - SWEETCORN_SEED(5320,34,6,17.0,19.0,0.0,20,PatchType.ALLOTMENT,Items.SWEETCORN_5986), - STRAWBERRY_SEED(5323,43,6,26.0,29.0,0.0,31,PatchType.ALLOTMENT,Items.STRAWBERRY_5504), - WATERMELON_SEED(5321,52,8,48.5,54.5,0.0,47,PatchType.ALLOTMENT,Items.WATERMELON_5982), - - //Hops - BARLEY_SEED(5305,49,4,8.5,9.5,0.0,3,PatchType.HOPS,Items.BARLEY_6006), - HAMMERSTONE_SEED(5307,4,4,9.0,10.0,0.0,4,PatchType.HOPS,Items.HAMMERSTONE_HOPS_5994), - ASGARNIAN_SEED(5308,11,5,10.9,12.0,0.0,8,PatchType.HOPS,Items.ASGARNIAN_HOPS_5996), - JUTE_SEED(5306,56,5,13.0,14.5,0.0,13,PatchType.HOPS,Items.JUTE_FIBRE_5931), - YANILLIAN_SEED(5309,19,6,14.5,16.0,0.0,16,PatchType.HOPS,Items.YANILLIAN_HOPS_5998), - KRANDORIAN_SEED(5310,28,7,17.5,19.5,0.0,21,PatchType.HOPS,Items.KRANDORIAN_HOPS_6000), - WILDBLOOD_SEED(5311,38,8,23.0,26.0,0.0,28,PatchType.HOPS,Items.WILDBLOOD_HOPS_6002), - - //Trees - OAK_SAPLING(5370,8,4,14.0,0.0,467.3,15,PatchType.TREE,Items.OAK_ROOTS_6043), - WILLOW_SAPLING(5371,15,6,25.0,0.0,1456.5,30,PatchType.TREE,Items.WILLOW_ROOTS_6045), - MAPLE_SAPLING(5372,24,8,45.0,0.0,3403.4,45,PatchType.TREE,Items.MAPLE_ROOTS_6047), - YEW_SAPLING(5373,35,10,81.0,0.0,7069.9,60,PatchType.TREE,Items.YEW_ROOTS_6049), - MAGIC_SAPLING(5374,48,12,145.5,0.0,13768.3,75,PatchType.TREE,Items.MAGIC_ROOTS_6051), - - //Fruit Trees - APPLE_SAPLING(5496,8,6,22.0,8.5,1199.5,27,PatchType.FRUIT_TREE,Items.COOKING_APPLE_1955), - BANANA_SAPLING(5497,35,6,28.0,10.5,1750.5,33,PatchType.FRUIT_TREE,Items.BANANA_1963), - ORANGE_SAPLING(5498,72,6,35.5,13.5,2470.2,39,PatchType.FRUIT_TREE,Items.ORANGE_2108), - CURRY_SAPLING(5499,99,6,40.0,15.0,2906.9,42,PatchType.FRUIT_TREE,Items.CURRY_LEAF_5970), - PINEAPPLE_SAPLING(5500,136,6,57.0,21.5,4605.7,51,PatchType.FRUIT_TREE,Items.PINEAPPLE_2114), - PAPAYA_SAPLING(5501,163,6,72.0,27.0,6146.4,57,PatchType.FRUIT_TREE,Items.PAPAYA_FRUIT_5972), - PALM_SAPLING(5502,200,6,110.5,41.5,10150.1,68,PatchType.FRUIT_TREE,Items.COCONUT_5974), - - //Bushes - REDBERRY_SEED(5101,5,5,11.5,4.5,64.0,10,PatchType.BUSH,Items.REDBERRIES_1951), - CADAVABERRY_SEED(5102,15,6,18.0,7.0,102.5,22,PatchType.BUSH,Items.CADAVA_BERRIES_753), - DWELLBERRY_SEED(5103,26,27,31.5,12.0,177.5,36,PatchType.BUSH,Items.DWELLBERRIES_2126), - JANGERBERRY_SEED(5104,38,8,50.5,19.0,284.5,48,PatchType.BUSH,Items.JANGERBERRIES_247), - WHITEBERRY_SEED(5105,51,8,78.0,29.0,437.5,59,PatchType.BUSH,Items.WHITE_BERRIES_239), - POISON_IVY_SEED(5106,197,8,120.0,45.0,675.0,70,PatchType.BUSH,Items.POISON_IVY_BERRIES_6018), +enum class Plantable(val itemID: Int, val value: Int, val stages: Int, val plantingXP: Double, val harvestXP: Double, val checkHealthXP: Double, val requiredLevel: Int, val applicablePatch: PatchType, val harvestItem: Int, val protectionItem: Item? = null,val protectionFlower: Plantable? = null) { //Flowers MARIGOLD_SEED(5096,8,4,8.5,47.0,0.0,2,PatchType.FLOWER,Items.MARIGOLDS_6010), @@ -57,6 +16,48 @@ enum class Plantable(val itemID: Int, val value: Int, val stages: Int, val plant //Flower(Technically) SCARECROW(6059,33,3,0.0,0.0,0.0,23,PatchType.FLOWER,Items.SCARECROW_6059), + //Allotments + POTATO_SEED(5318, 6, 4, 8.0, 9.0, 0.0, 1, PatchType.ALLOTMENT, Items.POTATO_1942,Item(Items.COMPOST_6032,2),MARIGOLD_SEED), + ONION_SEED(5319, 13, 4, 9.5, 10.5,0.0, 5, PatchType.ALLOTMENT,Items.ONION_1957,Item(Items.POTATOES10_5438),MARIGOLD_SEED), + CABBAGE_SEED(5324, 20, 4, 10.0, 11.5, 0.0,7, PatchType.ALLOTMENT,Items.CABBAGE_1965,Item(Items.ONIONS10_5458),ROSEMARY_SEED), + TOMATO_SEED(5322,27,4,12.5,14.0,0.0,12,PatchType.ALLOTMENT,Items.TOMATO_1982,Item(Items.CABBAGES10_5478,2),MARIGOLD_SEED), + SWEETCORN_SEED(5320,34,6,17.0,19.0,0.0,20,PatchType.ALLOTMENT,Items.SWEETCORN_5986,Item(Items.JUTE_FIBRE_5931,10),SCARECROW), + STRAWBERRY_SEED(5323,43,6,26.0,29.0,0.0,31,PatchType.ALLOTMENT,Items.STRAWBERRY_5504,Item(Items.APPLES5_5386)), + WATERMELON_SEED(5321,52,8,48.5,54.5,0.0,47,PatchType.ALLOTMENT,Items.WATERMELON_5982,Item(Items.CURRY_LEAF_5970,10),NASTURTIUM_SEED), + + //Hops + BARLEY_SEED(5305,49,4,8.5,9.5,0.0,3,PatchType.HOPS,Items.BARLEY_6006,Item(Items.COMPOST_6032,3)), + HAMMERSTONE_SEED(5307,4,4,9.0,10.0,0.0,4,PatchType.HOPS,Items.HAMMERSTONE_HOPS_5994,Item(Items.MARIGOLDS_6010)), + ASGARNIAN_SEED(5308,11,5,10.9,12.0,0.0,8,PatchType.HOPS,Items.ASGARNIAN_HOPS_5996,Item(Items.ONIONS10_5458)), + JUTE_SEED(5306,56,5,13.0,14.5,0.0,13,PatchType.HOPS,Items.JUTE_FIBRE_5931,Item(Items.BARLEY_MALT_6008,6)), + YANILLIAN_SEED(5309,19,6,14.5,16.0,0.0,16,PatchType.HOPS,Items.YANILLIAN_HOPS_5998,Item(Items.TOMATOES5_5968)), + KRANDORIAN_SEED(5310,28,7,17.5,19.5,0.0,21,PatchType.HOPS,Items.KRANDORIAN_HOPS_6000,Item(Items.CABBAGES10_5478,3)), + WILDBLOOD_SEED(5311,38,8,23.0,26.0,0.0,28,PatchType.HOPS,Items.WILDBLOOD_HOPS_6002,Item(Items.NASTURTIUMS_6012)), + + //Trees + OAK_SAPLING(5370,8,4,14.0,0.0,467.3,15,PatchType.TREE,Items.OAK_ROOTS_6043,Item(Items.TOMATOES5_5968)), + WILLOW_SAPLING(5371,15,6,25.0,0.0,1456.5,30,PatchType.TREE,Items.WILLOW_ROOTS_6045,Item(Items.APPLES5_5386)), + MAPLE_SAPLING(5372,24,8,45.0,0.0,3403.4,45,PatchType.TREE,Items.MAPLE_ROOTS_6047,Item(Items.ORANGES5_5396)), + YEW_SAPLING(5373,35,10,81.0,0.0,7069.9,60,PatchType.TREE,Items.YEW_ROOTS_6049), + MAGIC_SAPLING(5374,48,12,145.5,0.0,13768.3,75,PatchType.TREE,Items.MAGIC_ROOTS_6051,Item(Items.COCONUT_5974,25)), + + //Fruit Trees + APPLE_SAPLING(5496,8,6,22.0,8.5,1199.5,27,PatchType.FRUIT_TREE,Items.COOKING_APPLE_1955,Item(Items.SWEETCORN_5986,9)), + BANANA_SAPLING(5497,35,6,28.0,10.5,1750.5,33,PatchType.FRUIT_TREE,Items.BANANA_1963,Item(Items.APPLES5_5386,4)), + ORANGE_SAPLING(5498,72,6,35.5,13.5,2470.2,39,PatchType.FRUIT_TREE,Items.ORANGE_2108,Item(Items.STRAWBERRIES5_5406,3)), + CURRY_SAPLING(5499,99,6,40.0,15.0,2906.9,42,PatchType.FRUIT_TREE,Items.CURRY_LEAF_5970,Item(Items.BANANAS5_5416,5)), + PINEAPPLE_SAPLING(5500,136,6,57.0,21.5,4605.7,51,PatchType.FRUIT_TREE,Items.PINEAPPLE_2114,Item(Items.WATERMELON_5982,10)), + PAPAYA_SAPLING(5501,163,6,72.0,27.0,6146.4,57,PatchType.FRUIT_TREE,Items.PAPAYA_FRUIT_5972,Item(Items.PINEAPPLE_2114,10)), + PALM_SAPLING(5502,200,6,110.5,41.5,10150.1,68,PatchType.FRUIT_TREE,Items.COCONUT_5974,Item(Items.PAPAYA_FRUIT_5972,15)), + + //Bushes + REDBERRY_SEED(5101,5,5,11.5,4.5,64.0,10,PatchType.BUSH,Items.REDBERRIES_1951,Item(Items.CABBAGES10_5478,4)), + CADAVABERRY_SEED(5102,15,6,18.0,7.0,102.5,22,PatchType.BUSH,Items.CADAVA_BERRIES_753,Item(Items.TOMATOES5_5968,3)), + DWELLBERRY_SEED(5103,26,27,31.5,12.0,177.5,36,PatchType.BUSH,Items.DWELLBERRIES_2126,Item(Items.STRAWBERRIES5_5406,3)), + JANGERBERRY_SEED(5104,38,8,50.5,19.0,284.5,48,PatchType.BUSH,Items.JANGERBERRIES_247,Item(Items.WATERMELON_5982,6)), + WHITEBERRY_SEED(5105,51,8,78.0,29.0,437.5,59,PatchType.BUSH,Items.WHITE_BERRIES_239,null), + POISON_IVY_SEED(5106,197,8,120.0,45.0,675.0,70,PatchType.BUSH,Items.POISON_IVY_BERRIES_6018,null), + //Herbs GUAM_SEED(5291,4,4,11.0,12.5,0.0,9,PatchType.HERB,Items.GRIMY_GUAM_199), MARRENTILL_SEED(5292,11,4,13.5,15.0,0.0,14,PatchType.HERB,Items.GRIMY_MARRENTILL_201), @@ -75,6 +76,8 @@ enum class Plantable(val itemID: Int, val value: Int, val stages: Int, val plant TORSTOL_SEED(5304,103,4,199.5,224.5,0.0,85,PatchType.HERB,Items.GRIMY_TORSTOL_219) ; + constructor(itemID: Int, value: Int, stages: Int, plantingXP: Double, harvestXP: Double, checkHealthXP: Double, requiredLevel: Int, applicablePatch: PatchType, harvestItem: Int, protectionFlower: Plantable) + : this(itemID,value,stages,plantingXP,harvestXP,checkHealthXP,requiredLevel,applicablePatch,harvestItem,null,protectionFlower) companion object { @JvmField val plantables = values().map { it.itemID to it }.toMap() diff --git a/Server/src/main/java/Server/core/game/node/entity/skill/farming/ToolLeprechaunInterface.kt b/Server/src/main/java/Server/core/game/node/entity/skill/farming/ToolLeprechaunInterface.kt index 9a67c31fe..d235db9ed 100644 --- a/Server/src/main/java/Server/core/game/node/entity/skill/farming/ToolLeprechaunInterface.kt +++ b/Server/src/main/java/Server/core/game/node/entity/skill/farming/ToolLeprechaunInterface.kt @@ -158,7 +158,12 @@ class ToolLeprechaunInterface : ComponentPlugin() { player ?: return val hasAmount = player.inventory.getAmount(item) var finalAmount = amount - val spaceLeft = 255 - quantityCheckMethod.invoke(player) + val spaceLeft = (if(item == Items.BUCKET_1925) 31 else 255) - quantityCheckMethod.invoke(player) + + if(hasAmount == 0){ + player.dialogueInterpreter.sendDialogue("You don't have any of those to store.") + return + } if(amount == -2){ player.setAttribute("runscript", object : RunScript() { @@ -170,6 +175,10 @@ class ToolLeprechaunInterface : ComponentPlugin() { if(amt > spaceLeft){ amt = spaceLeft } + if(amt == 0){ + player.dialogueInterpreter.sendDialogue("You don't have any of those to store.") + return true + } player.inventory.remove(Item(item,amt)) updateQuantityMethod.invoke(player,amt) player.varpManager.get(varp).send(player) @@ -186,6 +195,10 @@ class ToolLeprechaunInterface : ComponentPlugin() { } } + if(!player.inventory.contains(item,finalAmount)){ + player.dialogueInterpreter.sendDialogue("You don't have any of those to store.") + } + player.inventory.remove(Item(item,finalAmount)) updateQuantityMethod.invoke(player,finalAmount) } diff --git a/Server/src/main/java/Server/core/game/node/entity/state/newsys/states/FarmingState.kt b/Server/src/main/java/Server/core/game/node/entity/state/newsys/states/FarmingState.kt index a92207777..269bda4a9 100644 --- a/Server/src/main/java/Server/core/game/node/entity/state/newsys/states/FarmingState.kt +++ b/Server/src/main/java/Server/core/game/node/entity/state/newsys/states/FarmingState.kt @@ -50,6 +50,7 @@ class FarmingState(player: Player? = null) : State(player) { p.put("patch-harvestAmt",patch.harvestAmt) p.put("patch-checkHealth",patch.isCheckHealth) p.put("patch-compost",patch.compost.ordinal) + p.put("patch-paidprot",patch.protectionPaid) patches.add(p) } val bins = JSONArray() @@ -93,11 +94,13 @@ class FarmingState(player: Player? = null) : State(player) { val checkHealth = p["patch-checkHealth"] as Boolean val savedState = p["patch-state"].toString().toInt() val compostOrdinal = p["patch-compost"].toString().toInt() + val protectionPaid = p["patch-paidprot"] as Boolean val fPatch = FarmingPatch.values()[patchOrdinal] val plantable = if(patchPlantableOrdinal != -1) Plantable.values()[patchPlantableOrdinal] else null val patch = Patch(player,fPatch,plantable,patchStage,patchDiseased,patchDead,patchWatered,nextGrowth,harvestAmt,checkHealth) patch.compost = CompostType.values()[compostOrdinal] + patch.protectionPaid = protectionPaid if(patch.currentGrowthStage < patch.plantable?.stages ?: 0 && !patch.isWeedy()){ val startTime = (patch.nextGrowth - TimeUnit.MINUTES.toMillis(patch.patch.type.stageGrowthTime * (patch.currentGrowthStage + 1).toLong())) var expectedStage = Math.floor((System.currentTimeMillis() - startTime.toDouble()) / TimeUnit.MINUTES.toMillis(patch.patch.type.stageGrowthTime.toLong())).toInt()