Merge branch 'add-cactus-patch' into 'master'

Added Cactus Patch

See merge request 2009scape/2009scape!201
This commit is contained in:
Ceikry 2021-07-25 15:51:52 +00:00
commit e9491c6ee2
6 changed files with 28 additions and 9 deletions

View file

@ -64,7 +64,8 @@ enum class FarmingPatch(val varpIndex: Int, val varpOffset: Int, val type: Patch
KARAMJA_SPIRIT_TREE(507,16,PatchType.SPIRIT_TREE), KARAMJA_SPIRIT_TREE(507,16,PatchType.SPIRIT_TREE),
//Other //Other
DRAYNOR_BELLADONNA(512, 16, PatchType.BELLADONNA); DRAYNOR_BELLADONNA(512, 16, PatchType.BELLADONNA),
ALKHARID_CACTUS(512, 0, PatchType.CACTUS);
companion object { companion object {
@JvmField @JvmField

View file

@ -25,6 +25,7 @@ class FruitAndBerryPicker : OptionHandler() {
SceneryDefinition.setOptionHandler("pick-leaf",this) SceneryDefinition.setOptionHandler("pick-leaf",this)
SceneryDefinition.setOptionHandler("pick-from",this) SceneryDefinition.setOptionHandler("pick-from",this)
SceneryDefinition.setOptionHandler("pick-fruit",this) SceneryDefinition.setOptionHandler("pick-fruit",this)
SceneryDefinition.setOptionHandler("pick-spine",this)
return this return this
} }

View file

@ -25,7 +25,7 @@ class HealthChecker : OptionHandler(){
val patch = fPatch.getPatchFor(player) val patch = fPatch.getPatchFor(player)
val type = patch.patch.type val type = patch.patch.type
if(type != PatchType.BUSH && type != PatchType.FRUIT_TREE && type != PatchType.TREE){ if(type != PatchType.BUSH && type != PatchType.FRUIT_TREE && type != PatchType.TREE && type != PatchType.CACTUS){
player.sendMessage("This shouldn't be happening. Please report this.") player.sendMessage("This shouldn't be happening. Please report this.")
return true return true
} }
@ -38,6 +38,7 @@ class HealthChecker : OptionHandler(){
PatchType.TREE -> patch.setCurrentState(patch.getCurrentState() + 1) PatchType.TREE -> patch.setCurrentState(patch.getCurrentState() + 1)
PatchType.FRUIT_TREE -> patch.setCurrentState(patch.getCurrentState() - 14) PatchType.FRUIT_TREE -> patch.setCurrentState(patch.getCurrentState() - 14)
PatchType.BUSH -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 4) PatchType.BUSH -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 4)
PatchType.CACTUS -> patch.setCurrentState(patch.plantable!!.value + patch.plantable!!.stages + 3)
else -> SystemLogger.logErr("Unreachable patch type from when(type) switch in HealthChecker.kt line 36") else -> SystemLogger.logErr("Unreachable patch type from when(type) switch in HealthChecker.kt line 36")
} }

View file

@ -51,6 +51,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
when(patch.type){ when(patch.type){
PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,plantable!!.value + plantable!!.stages + 20) PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,plantable!!.value + plantable!!.stages + 20)
PatchType.BUSH -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,250 + (plantable!!.ordinal - Plantable.REDBERRY_SEED.ordinal)) PatchType.BUSH -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,250 + (plantable!!.ordinal - Plantable.REDBERRY_SEED.ordinal))
PatchType.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, 31)
else -> SystemLogger.logWarn("Invalid setting of isCheckHealth for patch type: " + patch.type.name) else -> SystemLogger.logWarn("Invalid setting of isCheckHealth for patch type: " + patch.type.name)
} }
} else { } else {
@ -77,6 +78,10 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getBelladonnaDiseaseValue()) else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getBelladonnaDiseaseValue())
else player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage) else player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage)
} }
PatchType.CACTUS -> {
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getCactusDeathValue())
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getCactusDiseaseValue())
}
else -> {} else -> {}
} }
} }
@ -88,6 +93,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
when(patch.type){ when(patch.type){
PatchType.BUSH,PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,(plantable?.value ?: 0) + currentGrowthStage) PatchType.BUSH,PatchType.FRUIT_TREE -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,(plantable?.value ?: 0) + currentGrowthStage)
PatchType.TREE -> player.varpManager.get(patch.varpIndex).clearBitRange(patch.varpOffset + 6, patch.varpOffset + 7) PatchType.TREE -> player.varpManager.get(patch.varpIndex).clearBitRange(patch.varpOffset + 6, patch.varpOffset + 7)
PatchType.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage)
else -> {} else -> {}
} }
updateBit() updateBit()
@ -130,6 +136,14 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
return (plantable?.value ?: 0) + currentGrowthStage + 7 return (plantable?.value ?: 0) + currentGrowthStage + 7
} }
private fun getCactusDiseaseValue(): Int {
return (plantable?.value ?: 0) + currentGrowthStage + 10
}
private fun getCactusDeathValue(): Int {
return (plantable?.value ?: 0) + currentGrowthStage + 16
}
private fun grow(){ private fun grow(){
if(isWeedy() && getCurrentState() > 0) { if(isWeedy() && getCurrentState() > 0) {
nextGrowth = System.currentTimeMillis() + 60000 nextGrowth = System.currentTimeMillis() + 60000
@ -150,19 +164,19 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
} }
if(RandomFunction.random(128) <= (17 - diseaseMod) && !isWatered && !isGrown() && !protectionPaid && !isFlowerProtected()){ if(RandomFunction.random(128) <= (17 - diseaseMod) && !isWatered && !isGrown() && !protectionPaid && !isFlowerProtected()){
//bush, tree, fruit tree can not disease on stage 1(0) of growth. //bush, tree, fruit tree and cactus 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)) { if(!((patch.type == PatchType.BUSH || patch.type == PatchType.TREE || patch.type == PatchType.FRUIT_TREE || patch.type == PatchType.CACTUS) && currentGrowthStage == 0)) {
isDiseased = true isDiseased = true
return return
} }
} }
if((patch.type == PatchType.FRUIT_TREE || patch.type == PatchType.TREE || patch.type == PatchType.BUSH) && plantable != null && plantable?.stages == currentGrowthStage + 1){ if((patch.type == PatchType.FRUIT_TREE || patch.type == PatchType.TREE || patch.type == PatchType.BUSH || patch.type == PatchType.CACTUS) && plantable != null && plantable?.stages == currentGrowthStage + 1){
isCheckHealth = true isCheckHealth = true
} }
if((patch.type == PatchType.FRUIT_TREE || patch.type == PatchType.BUSH) && plantable?.stages == currentGrowthStage){ if((patch.type == PatchType.FRUIT_TREE || patch.type == PatchType.BUSH || patch.type == PatchType.CACTUS) && plantable?.stages == currentGrowthStage){
if((patch.type == PatchType.BUSH && getFruitOrBerryCount() < 4) || (patch.type == PatchType.FRUIT_TREE && getFruitOrBerryCount() < 6)){ if((patch.type == PatchType.BUSH && getFruitOrBerryCount() < 4) || (patch.type == PatchType.FRUIT_TREE && getFruitOrBerryCount() < 6) || (patch.type == PatchType.CACTUS && getFruitOrBerryCount() < 3)){
setCurrentState(getCurrentState() + 1) setCurrentState(getCurrentState() + 1)
} }
} }

View file

@ -9,5 +9,6 @@ enum class PatchType(val stageGrowthTime: Int) {
FLOWER(5), FLOWER(5),
HERB(20), HERB(20),
SPIRIT_TREE(293), SPIRIT_TREE(293),
BELLADONNA(80) BELLADONNA(80),
CACTUS(60)
} }

View file

@ -76,7 +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), TORSTOL_SEED(5304,103,4,199.5,224.5,0.0,85,PatchType.HERB,Items.GRIMY_TORSTOL_219),
//Other //Other
BELLADONNA_SEED(5281, 4, 4, 91.0, 128.0, 0.0, 63, PatchType.BELLADONNA, Items.CAVE_NIGHTSHADE_2398) BELLADONNA_SEED(5281, 4, 4, 91.0, 128.0, 0.0, 63, PatchType.BELLADONNA, Items.CAVE_NIGHTSHADE_2398),
CACTUS_SEED(Items.CACTUS_SEED_5280, 8, 7, 66.5, 25.0, 374.0, 55, PatchType.CACTUS, Items.CACTUS_SPINE_6016)
; ;
constructor(itemID: Int, value: Int, stages: Int, plantingXP: Double, harvestXP: Double, checkHealthXP: Double, requiredLevel: Int, applicablePatch: PatchType, harvestItem: Int, protectionFlower: Plantable) constructor(itemID: Int, value: Int, stages: Int, plantingXP: Double, harvestXP: Double, checkHealthXP: Double, requiredLevel: Int, applicablePatch: PatchType, harvestItem: Int, protectionFlower: Plantable)