Fixed some issues with incorrectly reading varbit values
Fixed Dwarf Cannon quest Improved varp/varbit interface and handling
This commit is contained in:
@@ -27,6 +27,8 @@ import core.tools.RandomFunction;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Handles the Brimhaven agility arena zone.
|
||||
*
|
||||
@@ -77,7 +79,7 @@ public final class BrimhavenArena extends MapZone implements Plugin<Object> {
|
||||
player.setAttribute("brim-tagcount", 0);
|
||||
}
|
||||
player.setAttribute("brim-tagged", false);
|
||||
player.getConfigManager().set(309, 0);
|
||||
setVarp(player, 309, 0);
|
||||
int index = RandomFunction.randomize(DISPENSERS.length);
|
||||
if (index == player.getAttribute("brim-tag", -1)) {
|
||||
index = (index + 1) % DISPENSERS.length;
|
||||
@@ -137,7 +139,7 @@ public final class BrimhavenArena extends MapZone implements Plugin<Object> {
|
||||
player.setAttribute("brim-tagged", true);
|
||||
int tags = player.getAttribute("brim-tagcount", 0) + 1;
|
||||
player.setAttribute("brim-tagcount", tags);
|
||||
player.getConfigManager().set(309, 4);
|
||||
setVarp(player, 309, 4);
|
||||
if (tags > 1) {
|
||||
int amount = 1;
|
||||
if (!player.getInventory().add(new Item(TICKET.getId(), amount))) {
|
||||
|
||||
@@ -19,6 +19,8 @@ import core.game.world.map.Location;
|
||||
import core.game.world.update.flag.context.Animation;
|
||||
import core.plugin.ClassScanner;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Handles the agility pryamid course.
|
||||
* @author Vexia
|
||||
@@ -147,7 +149,7 @@ public final class AgilityPyramidCourse extends AgilityCourse {
|
||||
case 10855:
|
||||
case 10856:
|
||||
addConfig(player, 10869, 0, true);
|
||||
if (player.getConfigManager().get(640) == 505 || player.getConfigManager().get(640) == 515) {
|
||||
if (getVarp(player, 640) == 505 || getVarp(player, 640) == 515) {
|
||||
player.getSkills().addExperience(Skills.AGILITY, 300, true);
|
||||
}
|
||||
player.getDialogueInterpreter().sendDialogue("You climb down the steep passage. It leads to the base of the", "pyramid.");
|
||||
@@ -387,7 +389,7 @@ public final class AgilityPyramidCourse extends AgilityCourse {
|
||||
@Override
|
||||
public boolean pulse() {
|
||||
player.getSkills().addExperience(Skills.AGILITY, 1000);
|
||||
if (player.getConfigManager().get(640) == 505 || player.getConfigManager().get(640) == 515) {
|
||||
if (getVarp(player, 640) == 505 || getVarp(player, 640) == 515) {
|
||||
player.getPacketDispatch().sendMessage("You find nothing on top of the pyramid.");
|
||||
return true;
|
||||
}
|
||||
@@ -510,7 +512,7 @@ public final class AgilityPyramidCourse extends AgilityCourse {
|
||||
final VarbitDefinition definition = VarbitDefinition.forObjectID(SceneryDefinition.forId(objectId).getVarbitID());
|
||||
final int oldVal = (definition.getValue(player) << definition.getStartBit());
|
||||
final int newVal = (value << definition.getStartBit());
|
||||
player.getConfigManager().set(CONFIG_ID, (player.getConfigManager().get(CONFIG_ID) - oldVal) + newVal, save);
|
||||
setVarp(player, CONFIG_ID, (getVarp(player, CONFIG_ID) - oldVal) + newVal, save);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,7 +23,7 @@ import core.tools.SystemLogger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static core.api.ContentAPIKt.log;
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Utility class for building.
|
||||
@@ -134,12 +134,12 @@ public final class BuildingUtils {
|
||||
if (hasRequirements) {
|
||||
c261Value += (1 << (menuIndex + 1));
|
||||
}
|
||||
player.getConfigManager().set(1485 + menuIndex, hasRequirements || player.isStaff() ? 1 : 0);
|
||||
setVarp(player, 1485 + menuIndex, hasRequirements || player.isStaff() ? 1 : 0);
|
||||
player.getPacketDispatch().sendString("Level " + decoration.getLevel(), 396, 140 + menuIndex);
|
||||
//player.getPacketDispatch().sendItemZoomOnInterface(items[i].protocol(), 50000, 396, 49 + i);
|
||||
}
|
||||
|
||||
player.getConfigManager().set(261, c261Value);
|
||||
setVarp(player, 261, c261Value);
|
||||
PacketRepository.send(ContainerPacket.class, new ContainerContext(player, 396, 132, 8, items, false));
|
||||
}
|
||||
|
||||
@@ -699,4 +699,4 @@ public final class BuildingUtils {
|
||||
}
|
||||
return exits;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,8 +236,8 @@ public final class HouseManager {
|
||||
}
|
||||
|
||||
private void updateVarbits(Player player, boolean build) {
|
||||
player.varpManager.get(261).setVarbit(0, build ? 1 : 0);
|
||||
player.varpManager.get(262).setVarbit(0, getRoomAmount());
|
||||
setVarp(player, 261, build ? 1 : 0);
|
||||
setVarp(player, 262, getRoomAmount());
|
||||
}
|
||||
|
||||
private void unlockMusicTrack(Player player) {
|
||||
|
||||
@@ -162,8 +162,8 @@ class LecternPlugin : OptionHandler() {
|
||||
val id = player.getAttribute("ttb:objectid", 0)
|
||||
val deco = Decoration.forObjectId(id)
|
||||
val values = decorationVarps[deco] ?: Pair(0, 0)
|
||||
player.varpManager.get(261).setVarbit(0, values.first).send(player)
|
||||
player.varpManager.get(262).setVarbit(0, values.second).send(player)
|
||||
setVarp(player, 261, values.first)
|
||||
setVarp(player, 262, values.second)
|
||||
return@onOpen true
|
||||
}
|
||||
on(400) { player, _, _, buttonID, _, _ ->
|
||||
|
||||
@@ -118,19 +118,20 @@ class CompostBin(val player: Player, val bin: CompostBins) {
|
||||
}
|
||||
|
||||
fun updateBit(){
|
||||
player.varpManager.get(bin.varpIndex).clearBitRange(bin.varpOffest,bin.varpOffest + 7)
|
||||
if(items.isNotEmpty()) {
|
||||
if (isFinished) {
|
||||
player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest + 1, if(items.size == 15) 15 else 14)
|
||||
if (isTomatoes) player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest + 7, 1)
|
||||
else if (isSuperCompost) player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest + 5, 1)
|
||||
if (isClosed) {
|
||||
setVarbit(player, bin.varbit, 0x40)
|
||||
} else if (isFinished) {
|
||||
var finalValue = if (items.size == 15) 15 else 14
|
||||
if (isTomatoes) finalValue += 0x80
|
||||
else if (isSuperCompost) finalValue += 0x20
|
||||
setVarbit(player, bin.varbit, finalValue)
|
||||
} else {
|
||||
player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest, items.size)
|
||||
if (isTomatoes) player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest + 7, 1)
|
||||
var finalValue = items.size
|
||||
if (isTomatoes) finalValue += 0x80
|
||||
setVarbit(player, bin.varbit, finalValue)
|
||||
}
|
||||
if (isClosed) player.varpManager.get(bin.varpIndex).setVarbit(bin.varpOffest + 6, 1)
|
||||
}
|
||||
player.varpManager.get(bin.varpIndex).send(player)
|
||||
} else setVarbit(player, bin.varbit, 0)
|
||||
}
|
||||
|
||||
fun save(root: JSONObject){
|
||||
@@ -176,4 +177,4 @@ class CompostBin(val player: Player, val bin: CompostBins) {
|
||||
updateBit()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@ import core.cache.def.impl.VarbitDefinition
|
||||
import core.game.node.scenery.Scenery
|
||||
import core.game.node.entity.player.Player
|
||||
|
||||
enum class CompostBins(val varpIndex: Int, val varpOffest: Int) {
|
||||
FALADOR_COMPOST(511,0),
|
||||
CATHERBY_COMPOST(511,8),
|
||||
PORT_PHAS_COMPOST(511,16),
|
||||
ARDOUGNE_COMPOST(511,24);
|
||||
enum class CompostBins(val varbit: Int) {
|
||||
FALADOR_COMPOST(740),
|
||||
CATHERBY_COMPOST(741),
|
||||
PORT_PHAS_COMPOST(742),
|
||||
ARDOUGNE_COMPOST(743);
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val bins = values().map { (it.varpIndex shl it.varpOffest) to it }.toMap()
|
||||
val bins = values().map { it.varbit to it }.toMap()
|
||||
|
||||
@JvmStatic
|
||||
fun forObject(obj: Scenery): CompostBins?{
|
||||
@@ -23,8 +23,7 @@ enum class CompostBins(val varpIndex: Int, val varpOffest: Int) {
|
||||
@JvmStatic
|
||||
fun forObjectID(id: Int): CompostBins?{
|
||||
val objDef = SceneryDefinition.forId(id)
|
||||
val def = VarbitDefinition.forObjectID(objDef.varbitID)
|
||||
return bins[def.varpId shl def.startBit]
|
||||
return bins[objDef.varbitID]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,4 +35,4 @@ enum class CompostBins(val varpIndex: Int, val varpOffest: Int) {
|
||||
} else
|
||||
state.getBin(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,73 +5,73 @@ import core.cache.def.impl.VarbitDefinition
|
||||
import core.game.node.scenery.Scenery
|
||||
import core.game.node.entity.player.Player
|
||||
|
||||
enum class FarmingPatch(val varpIndex: Int, val varpOffset: Int, val type: PatchType) {
|
||||
enum class FarmingPatch(val varbit: Int, val type: PatchType) {
|
||||
//Allotments
|
||||
S_FALADOR_ALLOTMENT_NW(504,0,PatchType.ALLOTMENT),
|
||||
S_FALADOR_ALLOTMENT_SE(504,8,PatchType.ALLOTMENT),
|
||||
CATHERBY_ALLOTMENT_N(504,16,PatchType.ALLOTMENT),
|
||||
CATHERBY_ALLOTMENT_S(504,24,PatchType.ALLOTMENT),
|
||||
ARDOUGNE_ALLOTMENT_S(505,8,PatchType.ALLOTMENT),
|
||||
ARDOUGNE_ALLOTMENT_N(505,0,PatchType.ALLOTMENT),
|
||||
PORT_PHAS_ALLOTMENT_NW(505,16,PatchType.ALLOTMENT),
|
||||
PORT_PHAS_ALLOTMENT_SE(505,24,PatchType.ALLOTMENT),
|
||||
HARMONY_ISLAND_ALLOTMENT(982,8,PatchType.ALLOTMENT),
|
||||
S_FALADOR_ALLOTMENT_NW(708,PatchType.ALLOTMENT),
|
||||
S_FALADOR_ALLOTMENT_SE(709,PatchType.ALLOTMENT),
|
||||
CATHERBY_ALLOTMENT_N(710,PatchType.ALLOTMENT),
|
||||
CATHERBY_ALLOTMENT_S(711,PatchType.ALLOTMENT),
|
||||
ARDOUGNE_ALLOTMENT_S(713,PatchType.ALLOTMENT),
|
||||
ARDOUGNE_ALLOTMENT_N(712,PatchType.ALLOTMENT),
|
||||
PORT_PHAS_ALLOTMENT_NW(714,PatchType.ALLOTMENT),
|
||||
PORT_PHAS_ALLOTMENT_SE(715,PatchType.ALLOTMENT),
|
||||
HARMONY_ISLAND_ALLOTMENT(3402,PatchType.ALLOTMENT),
|
||||
|
||||
//Herb
|
||||
CATHERBY_HERB_CE(515,8,PatchType.HERB),
|
||||
S_FALADOR_HERB_NE(515,0,PatchType.HERB),
|
||||
ARDOUGNE_HERB_CE(515,16,PatchType.HERB),
|
||||
PORT_PHAS_HERB_NE(515,24,PatchType.HERB),
|
||||
TROLL_STRONGHOLD_HERB(830,0,PatchType.HERB),
|
||||
CATHERBY_HERB_CE(781,PatchType.HERB),
|
||||
S_FALADOR_HERB_NE(780,PatchType.HERB),
|
||||
ARDOUGNE_HERB_CE(782,PatchType.HERB),
|
||||
PORT_PHAS_HERB_NE(783,PatchType.HERB),
|
||||
TROLL_STRONGHOLD_HERB(2788,PatchType.HERB),
|
||||
|
||||
//Flower
|
||||
S_FALADOR_FLOWER_C(508,0,PatchType.FLOWER),
|
||||
CATHERBY_FLOWER_C(508,8,PatchType.FLOWER),
|
||||
ARDOUGNE_FLOWER_C(508,16,PatchType.FLOWER),
|
||||
PORT_PHAS_FLOWER_C(508,24,PatchType.FLOWER),
|
||||
WILDERNESS_FLOWER(1183,12,PatchType.FLOWER),
|
||||
S_FALADOR_FLOWER_C(728,PatchType.FLOWER),
|
||||
CATHERBY_FLOWER_C(729,PatchType.FLOWER),
|
||||
ARDOUGNE_FLOWER_C(730,PatchType.FLOWER),
|
||||
PORT_PHAS_FLOWER_C(731,PatchType.FLOWER),
|
||||
WILDERNESS_FLOWER(5067,PatchType.FLOWER),
|
||||
|
||||
//Tree
|
||||
N_FALADOR_TREE(502,8,PatchType.TREE),
|
||||
TAVERLY_TREE(502,0,PatchType.TREE),
|
||||
GNOME_STRONGHOLD_TREE(830,11,PatchType.TREE),
|
||||
LUMBRIDGE_TREE(502,24,PatchType.TREE),
|
||||
VARROCK_TREE(502,16,PatchType.TREE),
|
||||
N_FALADOR_TREE(701,PatchType.TREE),
|
||||
TAVERLY_TREE(700,PatchType.TREE),
|
||||
GNOME_STRONGHOLD_TREE(2953,PatchType.TREE),
|
||||
LUMBRIDGE_TREE(703,PatchType.TREE),
|
||||
VARROCK_TREE(702,PatchType.TREE),
|
||||
|
||||
//Fruit Tree
|
||||
GNOME_STRONGHOLD_FRUIT_TREE(503,0,PatchType.FRUIT_TREE),
|
||||
CATHERBY_FRUIT_TREE(503,24,PatchType.FRUIT_TREE),
|
||||
TREE_GNOME_VILLAGE_FRUIT_TREE(503,8,PatchType.FRUIT_TREE),
|
||||
BRIMHAVEN_FRUIT_TREE(503,16,PatchType.FRUIT_TREE),
|
||||
LLETYA_FRUIT_TREE(830,23,PatchType.FRUIT_TREE),
|
||||
GNOME_STRONGHOLD_FRUIT_TREE(704,PatchType.FRUIT_TREE),
|
||||
CATHERBY_FRUIT_TREE(707,PatchType.FRUIT_TREE),
|
||||
TREE_GNOME_VILLAGE_FRUIT_TREE(705,PatchType.FRUIT_TREE),
|
||||
BRIMHAVEN_FRUIT_TREE(706,PatchType.FRUIT_TREE),
|
||||
LLETYA_FRUIT_TREE(4317,PatchType.FRUIT_TREE),
|
||||
|
||||
//Hops
|
||||
ENTRANA_HOPS(506,8,PatchType.HOPS),
|
||||
LUMBRIDGE_HOPS(506,16,PatchType.HOPS),
|
||||
MCGRUBOR_HOPS(506,24,PatchType.HOPS),
|
||||
YANILLE_HOPS(506,0,PatchType.HOPS),
|
||||
ENTRANA_HOPS(717,PatchType.HOPS),
|
||||
LUMBRIDGE_HOPS(718,PatchType.HOPS),
|
||||
MCGRUBOR_HOPS(719,PatchType.HOPS),
|
||||
YANILLE_HOPS(716,PatchType.HOPS),
|
||||
|
||||
//Bushes
|
||||
CHAMPIONS_GUILD_BUSH(509,0,PatchType.BUSH),
|
||||
RIMMINGTON_BUSH(509,8,PatchType.BUSH),
|
||||
ARDOUGNE_BUSH(509,24,PatchType.BUSH),
|
||||
ETCETERIA_BUSH(509,16,PatchType.BUSH),
|
||||
CHAMPIONS_GUILD_BUSH(732,PatchType.BUSH),
|
||||
RIMMINGTON_BUSH(733,PatchType.BUSH),
|
||||
ARDOUGNE_BUSH(735,PatchType.BUSH),
|
||||
ETCETERIA_BUSH(734,PatchType.BUSH),
|
||||
|
||||
//Spirit Tree
|
||||
ETCETERIA_SPIRIT_TREE(507,8,PatchType.SPIRIT_TREE),
|
||||
PORT_SARIM_SPIRIT_TREE(507,0,PatchType.SPIRIT_TREE),
|
||||
KARAMJA_SPIRIT_TREE(507,16,PatchType.SPIRIT_TREE),
|
||||
ETCETERIA_SPIRIT_TREE(722,PatchType.SPIRIT_TREE),
|
||||
PORT_SARIM_SPIRIT_TREE(720,PatchType.SPIRIT_TREE),
|
||||
KARAMJA_SPIRIT_TREE(724,PatchType.SPIRIT_TREE),
|
||||
|
||||
//Other
|
||||
DRAYNOR_BELLADONNA(512, 16, PatchType.BELLADONNA),
|
||||
CANIFIS_MUSHROOM(512, 8, PatchType.MUSHROOM),
|
||||
ALKHARID_CACTUS(512, 0, PatchType.CACTUS),
|
||||
EVIL_TURNIP(1171, 7, PatchType.EVIL_TURNIP);
|
||||
DRAYNOR_BELLADONNA(748, PatchType.BELLADONNA),
|
||||
CANIFIS_MUSHROOM(746, PatchType.MUSHROOM),
|
||||
ALKHARID_CACTUS(744, PatchType.CACTUS),
|
||||
EVIL_TURNIP(4291, PatchType.EVIL_TURNIP);
|
||||
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val patches = FarmingPatch.values().map { (it.varpIndex shl it.varpOffset) to it }.toMap()
|
||||
val patches = FarmingPatch.values().map { it.varbit to it }.toMap()
|
||||
|
||||
@JvmStatic
|
||||
fun forObject(obj: Scenery): FarmingPatch?{
|
||||
@@ -81,8 +81,7 @@ enum class FarmingPatch(val varpIndex: Int, val varpOffset: Int, val type: Patch
|
||||
@JvmStatic
|
||||
fun forObjectID(id: Int): FarmingPatch?{
|
||||
val objDef = SceneryDefinition.forId(id)
|
||||
val def = VarbitDefinition.forObjectID(objDef.varbitID)
|
||||
return patches[def.varpId shl def.startBit]
|
||||
return patches[objDef.varbitID]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,9 +38,8 @@ class InspectionHandler : OptionHandler() {
|
||||
val status3 = if(p.compost == CompostType.NONE) "This patch has not been treated." else "This patch has been treated with ${p.compost.name.toLowerCase()} compost."
|
||||
player.sendMessage("$status1 $status2")
|
||||
player.sendMessage(status3)
|
||||
val varpValue = player.varpManager.get(patch.varpIndex).getBitRangeValue(patch.varpOffset,patch.varpOffset + 7)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package content.global.skill.farming
|
||||
|
||||
import core.api.log
|
||||
import core.api.*
|
||||
import core.game.node.entity.player.Player
|
||||
import core.tools.Log
|
||||
import core.tools.RandomFunction
|
||||
@@ -90,11 +90,11 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
|
||||
}
|
||||
|
||||
fun getCurrentState(): Int{
|
||||
return player.varpManager.get(patch.varpIndex).getVarbitValue(patch.varpOffset) ?: 0
|
||||
return getVarbit(player, patch.varbit)
|
||||
}
|
||||
|
||||
fun setCurrentState(state: Int){
|
||||
player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,state)
|
||||
setVarbit(player, patch.varbit, state)
|
||||
updateBit()
|
||||
}
|
||||
|
||||
@@ -109,58 +109,60 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
|
||||
private fun updateBit(){
|
||||
if(isCheckHealth){
|
||||
when(patch.type){
|
||||
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.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, 31)
|
||||
PatchType.FRUIT_TREE -> setVarbit(player, patch.varbit, plantable!!.value + plantable!!.stages + 20)
|
||||
PatchType.BUSH -> setVarbit(player, patch.varbit, 250 + (plantable!!.ordinal - Plantable.REDBERRY_SEED.ordinal))
|
||||
PatchType.CACTUS -> setVarbit(player, patch.varbit, 31)
|
||||
else -> log(this::class.java, Log.WARN, "Invalid setting of isCheckHealth for patch type: " + patch.type.name)
|
||||
}
|
||||
} else {
|
||||
when(patch.type){
|
||||
PatchType.ALLOTMENT,PatchType.FLOWER,PatchType.HOPS -> {
|
||||
player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset + 6, if (isWatered || isDead) 1 else 0)
|
||||
player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset + 7, if (isDiseased) 1 else 0)
|
||||
var state = getUnmodifiedValue()
|
||||
if (isWatered || isDead) state = state or 0x40
|
||||
if (isDiseased) state = state or 0x80
|
||||
|
||||
if (state != getVarbit(player, patch.varbit))
|
||||
setVarbit(player, patch.varbit, state)
|
||||
}
|
||||
PatchType.BUSH -> {
|
||||
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,getBushDeathValue())
|
||||
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,getBushDiseaseValue())
|
||||
//else player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage)
|
||||
if(isDead) setVarbit(player, patch.varbit, getBushDeathValue())
|
||||
else if(isDiseased && !isDead) setVarbit(player, patch.varbit, getBushDiseaseValue())
|
||||
}
|
||||
PatchType.TREE -> {
|
||||
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset + 7,1)
|
||||
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset + 6, 1)
|
||||
var state = getVarbit(player, patch.varbit)
|
||||
|
||||
if (isDead) state = state or 0x80
|
||||
else if (isDiseased) state = state or 0x40
|
||||
|
||||
if (state != getVarbit(player, patch.varbit))
|
||||
setVarbit(player, patch.varbit, state)
|
||||
}
|
||||
PatchType.FRUIT_TREE -> {
|
||||
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset,getFruitTreeDeathValue())
|
||||
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getFruitTreeDiseaseValue())
|
||||
if(isDead) setVarbit(player, patch.varbit, getFruitTreeDeathValue())
|
||||
else if(isDiseased && !isDead) setVarbit(player, patch.varbit, getFruitTreeDiseaseValue())
|
||||
}
|
||||
PatchType.BELLADONNA -> {
|
||||
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getBelladonnaDeathValue())
|
||||
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)
|
||||
if(isDead) setVarbit(player, patch.varbit, getBelladonnaDeathValue())
|
||||
else if(isDiseased && !isDead) setVarbit(player, patch.varbit, getBelladonnaDiseaseValue())
|
||||
else setVarbit(player, patch.varbit, (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())
|
||||
if(isDead) setVarbit(player, patch.varbit, getCactusDeathValue())
|
||||
else if(isDiseased && !isDead) setVarbit(player, patch.varbit, getCactusDiseaseValue())
|
||||
}
|
||||
PatchType.HERB -> {
|
||||
if(isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getHerbDeathValue())
|
||||
else if(isDiseased && !isDead) player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, getHerbDiseaseValue())
|
||||
else player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage)
|
||||
if(isDead) setVarbit(player, patch.varbit, getHerbDeathValue())
|
||||
else if(isDiseased && !isDead) setVarbit(player, patch.varbit, getHerbDiseaseValue())
|
||||
else setVarbit(player, patch.varbit, (plantable?.value ?: 0) + currentGrowthStage)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
player.varpManager.get(patch.varpIndex).send(player)
|
||||
}
|
||||
|
||||
fun cureDisease() {
|
||||
setVarbit(player, patch.varbit, (plantable?.value ?: 0) + currentGrowthStage)
|
||||
isDiseased = false
|
||||
when(patch.type){
|
||||
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.CACTUS -> player.varpManager.get(patch.varpIndex).setVarbit(patch.varpOffset, (plantable?.value ?: 0) + currentGrowthStage)
|
||||
else -> {}
|
||||
}
|
||||
updateBit()
|
||||
}
|
||||
|
||||
@@ -169,6 +171,10 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
|
||||
updateBit()
|
||||
}
|
||||
|
||||
private fun getUnmodifiedValue(): Int {
|
||||
return (plantable?.value ?: 0) + currentGrowthStage
|
||||
}
|
||||
|
||||
private fun getBushDiseaseValue(): Int{
|
||||
if(plantable == Plantable.POISON_IVY_SEED){
|
||||
return (plantable?.value ?: 0) + currentGrowthStage + 12
|
||||
@@ -306,7 +312,7 @@ class Patch(val player: Player, val patch: FarmingPatch, var plantable: Plantabl
|
||||
isDiseased = false
|
||||
isDead = false
|
||||
plantable = null
|
||||
player.varpManager.get(patch.varpIndex).clearBitRange(patch.varpOffset,patch.varpOffset + 7)
|
||||
setVarbit(player, patch.varbit, 0)
|
||||
nextGrowth = 0L
|
||||
currentGrowthStage = 3
|
||||
setCurrentState(3)
|
||||
|
||||
@@ -8,16 +8,13 @@ import org.rs09.consts.Components
|
||||
import org.rs09.consts.Items
|
||||
import core.game.interaction.InterfaceListener
|
||||
|
||||
private const val varp = 615
|
||||
class ToolLeprechaunInterface : InterfaceListener {
|
||||
|
||||
private val FARMING_TOOLS = Components.FARMING_TOOLS_125
|
||||
private val TOOLS_SIDE = Components.FARMING_TOOLS_SIDE_126
|
||||
|
||||
override fun defineInterfaceListeners() {
|
||||
|
||||
onOpen(FARMING_TOOLS){player, component ->
|
||||
player.varpManager?.flagSave(varp)
|
||||
player.interfaceManager.openSingleTab(Component(TOOLS_SIDE))
|
||||
return@onOpen true
|
||||
}
|
||||
@@ -48,7 +45,6 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
40 -> doStackedWithdrawal(player,Items.COMPOST_6032,getAmount(opcode),::updateCompost,::getNumCompost)
|
||||
41 -> doStackedWithdrawal(player,Items.SUPERCOMPOST_6034,getAmount(opcode),::updateSuperCompost,::getNumSuperCompost)
|
||||
}
|
||||
player.varpManager.get(varp).send(player)
|
||||
return@on true
|
||||
}
|
||||
|
||||
@@ -90,7 +86,6 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
25 -> doStackedDeposit(player,Items.COMPOST_6032,getAmount(opcode),::updateCompost,::getNumCompost)
|
||||
26 -> doStackedDeposit(player,Items.SUPERCOMPOST_6034,getAmount(opcode),::updateSuperCompost,::getNumSuperCompost)
|
||||
}
|
||||
player.varpManager.get(varp).send(player)
|
||||
return@on true
|
||||
}
|
||||
|
||||
@@ -149,7 +144,6 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
}
|
||||
player.inventory.remove(Item(item,amt))
|
||||
updateQuantityMethod.invoke(player,amt)
|
||||
player.varpManager.get(varp).send(player)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -200,7 +194,6 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
} else {
|
||||
player.inventory.add(Item(item, amt))
|
||||
updateQuantityMethod.invoke(player, -amt)
|
||||
player.varpManager.get(varp).send(player)
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -231,43 +224,43 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
}
|
||||
|
||||
private fun hasRake(player: Player?): Boolean{
|
||||
return checkBit(player,0)
|
||||
return getVarbit(player!!, 1435) == 1
|
||||
}
|
||||
|
||||
private fun setHasRake(player: Player?,hasRake: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(0,if(hasRake) 1 else 0)
|
||||
setVarbit(player!!, 1435, if (hasRake) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun hasDibber(player: Player?): Boolean{
|
||||
return checkBit(player,1)
|
||||
return getVarbit(player!!, 1436) == 1
|
||||
}
|
||||
|
||||
private fun setHasDibber(player: Player?,hasDibber: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(1,if(hasDibber) 1 else 0)
|
||||
setVarbit(player!!, 1436, if (hasDibber) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun hasSpade(player: Player?): Boolean{
|
||||
return checkBit(player,2)
|
||||
return getVarbit(player!!, 1437) == 1
|
||||
}
|
||||
|
||||
private fun setHasSpade(player: Player?,hasSpade: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(2,if(hasSpade) 1 else 0)
|
||||
setVarbit(player!!, 1437, if (hasSpade) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun hasSecateurs(player: Player?): Boolean{
|
||||
return checkBit(player,3)
|
||||
return getVarbit(player!!, 1438) == 1
|
||||
}
|
||||
|
||||
private fun setHasSecateurs(player: Player?,hasSecateurs: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(3,if(hasSecateurs) 1 else 0)
|
||||
setVarbit(player!!, 1438, if (hasSecateurs) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun hasWateringCan(player: Player?): Boolean{
|
||||
return checkBitRange(player,4,7) > 0
|
||||
return getVarbit(player!!, 1439) > 0
|
||||
}
|
||||
|
||||
private fun getWateringCan(player: Player?): Int{
|
||||
var can = checkBitRange(player,4,7) //Watering cans are stored in the Varp as a number between 1 and 9. Watering Can(0) is 1 and Watering Can(8) is 9
|
||||
var can = getVarbit(player!!, 1439) //Watering cans are stored in the Varp as a number between 1 and 9. Watering Can(0) is 1 and Watering Can(8) is 9
|
||||
if(can == 1) can = 0
|
||||
return Items.WATERING_CAN_5331 + can
|
||||
}
|
||||
@@ -285,61 +278,53 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
Items.WATERING_CAN8_5340 -> 9
|
||||
else -> 0
|
||||
}
|
||||
player?.varpManager?.get(varp)?.setVarbit(4,can)
|
||||
setVarbit(player!!, 1439, can, true)
|
||||
}
|
||||
|
||||
private fun setNoWateringCan(player: Player?){
|
||||
player?.varpManager?.get(varp)?.setVarbit(4,0)
|
||||
setVarbit(player!!, 1439, 0, true)
|
||||
}
|
||||
|
||||
private fun hasGardeningTrowel(player: Player?): Boolean {
|
||||
return checkBit(player,8)
|
||||
return getVarbit(player!!, 1440) == 1
|
||||
}
|
||||
|
||||
private fun setHasGardeningTrowel(player: Player?,hasTrowel: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(8,if(hasTrowel) 1 else 0)
|
||||
setVarbit(player!!, 1440, if (hasTrowel) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun getNumBuckets(player: Player?): Int {
|
||||
return checkBitRange(player,9,13)
|
||||
return getVarbit(player!!, 1441)
|
||||
}
|
||||
|
||||
private fun updateBuckets(player: Player?,amount: Int){
|
||||
player?.varpManager?.get(varp)?.setVarbit(9,getNumBuckets(player) + amount)
|
||||
setVarbit(player!!, 1441, getNumBuckets(player) + amount, true)
|
||||
}
|
||||
|
||||
private fun getNumCompost(player: Player?): Int {
|
||||
return checkBitRange(player,14,21)
|
||||
return getVarbit(player!!, 1442)
|
||||
}
|
||||
|
||||
private fun updateCompost(player: Player?,amount: Int){
|
||||
player?.varpManager?.get(varp)?.setVarbit(14,getNumCompost(player) + amount)
|
||||
setVarbit(player!!, 1442, getNumCompost(player) + amount, true)
|
||||
}
|
||||
|
||||
private fun getNumSuperCompost(player: Player?): Int {
|
||||
return checkBitRange(player,22,29)
|
||||
return getVarbit(player!!, 1443)
|
||||
}
|
||||
|
||||
private fun updateSuperCompost(player: Player?,amount: Int){
|
||||
player?.varpManager?.get(varp)?.setVarbit(22,getNumSuperCompost(player) + amount)
|
||||
setVarbit(player!!, 1443, getNumSuperCompost(player) + amount, true)
|
||||
}
|
||||
|
||||
private fun hasMagicSecateurs(player: Player?): Boolean {
|
||||
return checkBit(player,30)
|
||||
return getVarbit(player!!, 1848) == 1
|
||||
}
|
||||
|
||||
private fun setHasMagicSecateurs(player: Player?,hasMagic: Boolean){
|
||||
player?.varpManager?.get(varp)?.setVarbit(30,if(hasMagic) 1 else 0)
|
||||
setVarbit(player!!, 1848, if (hasMagic) 1 else 0, true)
|
||||
}
|
||||
|
||||
private fun checkBitRange(player: Player?,start: Int, end: Int): Int{
|
||||
return (player?.varpManager?.get(varp)?.getBitRangeValue(start,end) ?: 0) ushr start
|
||||
}
|
||||
|
||||
private fun checkBit(player: Player?,offset: Int): Boolean{
|
||||
return player?.varpManager?.get(varp)?.getVarbitValue(offset) == 1
|
||||
}
|
||||
|
||||
private fun getHighestCan(player: Player?): Item?{
|
||||
player ?: return null
|
||||
var highestCan = Item(0)
|
||||
@@ -352,4 +337,4 @@ class ToolLeprechaunInterface : InterfaceListener {
|
||||
return if(highestCan.id == 0) null else highestCan
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,28 +60,28 @@ val HUNTER_REQS = hashMapOf(
|
||||
"Sabre-toothed kyatt" to 55,
|
||||
)
|
||||
//val pitVarpOffsets = hashMapOf( 19264 to 3, 19265 to 6, 19266 to 9, 19267 to 12, 19268 to 15,)
|
||||
data class Pit(val varpId: Int, val varpOffset: Int, val horizontal: Boolean)
|
||||
data class Pit(val varbitId: Int, val horizontal: Boolean)
|
||||
val pitVarps = hashMapOf(
|
||||
// Larupia pits (the duplicate 24 is likely authentic)
|
||||
Location.create(2565,2888) to Pit(917, 27, true),
|
||||
Location.create(2573,2885) to Pit(918, 0, false),
|
||||
Location.create(2556,2893) to Pit(917, 18, false),
|
||||
Location.create(2552,2904) to Pit(917, 24, true),
|
||||
Location.create(2543,2908) to Pit(917, 21, false),
|
||||
Location.create(2538,2899) to Pit(917, 24, true),
|
||||
Location.create(2565,2888) to Pit(2967, true),
|
||||
Location.create(2573,2885) to Pit(2968, false),
|
||||
Location.create(2556,2893) to Pit(2964, false),
|
||||
Location.create(2552,2904) to Pit(2966, true),
|
||||
Location.create(2543,2908) to Pit(2965, false),
|
||||
Location.create(2538,2899) to Pit(2966, true),
|
||||
// Kyatt pits
|
||||
Location.create(2700,3795) to Pit(917, 0, true),
|
||||
Location.create(2700,3785) to Pit(917, 3, false),
|
||||
Location.create(2706,3789) to Pit(917, 6, false),
|
||||
Location.create(2730,3791) to Pit(917, 9, true),
|
||||
Location.create(2737,3784) to Pit(917, 12, true),
|
||||
Location.create(2730,3780) to Pit(917, 15, false),
|
||||
Location.create(2700,3795) to Pit(2958, true),
|
||||
Location.create(2700,3785) to Pit(2959, false),
|
||||
Location.create(2706,3789) to Pit(2960, false),
|
||||
Location.create(2730,3791) to Pit(2961, true),
|
||||
Location.create(2737,3784) to Pit(2962, true),
|
||||
Location.create(2730,3780) to Pit(2963, false),
|
||||
// Graahk pits
|
||||
Location.create(2766,3010) to Pit(918, 3, false),
|
||||
Location.create(2762,3005) to Pit(918, 6, false),
|
||||
Location.create(2771,3004) to Pit(918, 9, true),
|
||||
Location.create(2777,3001) to Pit(918, 12, false),
|
||||
Location.create(2784,3001) to Pit(918, 15, true),
|
||||
Location.create(2766,3010) to Pit(2969, false),
|
||||
Location.create(2762,3005) to Pit(2970, false),
|
||||
Location.create(2771,3004) to Pit(2971, true),
|
||||
Location.create(2777,3001) to Pit(2972, false),
|
||||
Location.create(2784,3001) to Pit(2973, true),
|
||||
)
|
||||
/*val pitJumpSpots = hashMapOf(
|
||||
Location.create(2766,3010) to hashMapOf(
|
||||
@@ -298,7 +298,7 @@ class PitfallListeners : InteractionListener {
|
||||
|
||||
fun setPitState(player: Player, loc: Location, state: Int) {
|
||||
val pit = pitVarps[loc]!!
|
||||
player.varpManager.get(pit.varpId).setVarbit(pit.varpOffset, state).send(player)
|
||||
setVarbit(player, pit.varbitId, state)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,22 +14,22 @@ class CommonKebbitEast : HunterTracking() {
|
||||
init {
|
||||
initialMap = hashMapOf(
|
||||
19439 to arrayListOf(
|
||||
TrailDefinition(0,TrailType.LINKING, false,Location.create(2354, 3595, 0),Location.create(2360, 3602, 0)),
|
||||
TrailDefinition(3,TrailType.LINKING,false,Location.create(2354, 3595, 0),Location.create(2355, 3601, 0)),
|
||||
TrailDefinition(6,TrailType.LINKING,false,Location.create(2354, 3594, 0),Location.create(2349, 3604, 0))
|
||||
TrailDefinition(2974,TrailType.LINKING, false,Location.create(2354, 3595, 0),Location.create(2360, 3602, 0)),
|
||||
TrailDefinition(2975,TrailType.LINKING,false,Location.create(2354, 3595, 0),Location.create(2355, 3601, 0)),
|
||||
TrailDefinition(2976,TrailType.LINKING,false,Location.create(2354, 3594, 0),Location.create(2349, 3604, 0))
|
||||
),
|
||||
19440 to arrayListOf(
|
||||
TrailDefinition(18,TrailType.LINKING,true,Location.create(2361, 3611, 0),Location.create(2360, 3602, 0)),
|
||||
TrailDefinition(21,TrailType.LINKING,true,Location.create(2360, 3612, 0),Location.create(2357, 3607, 0))
|
||||
TrailDefinition(2980,TrailType.LINKING,true,Location.create(2361, 3611, 0),Location.create(2360, 3602, 0)),
|
||||
TrailDefinition(2981,TrailType.LINKING,true,Location.create(2360, 3612, 0),Location.create(2357, 3607, 0))
|
||||
)
|
||||
)
|
||||
|
||||
linkingTrails = arrayListOf(
|
||||
TrailDefinition(24,TrailType.LINKING,false,Location.create(2357, 3607, 0),Location.create(2354, 3609, 0),Location.create(2355, 3608, 0)),
|
||||
TrailDefinition(27,TrailType.LINKING,false,Location.create(2354, 3609, 0),Location.create(2349, 3604, 0),Location.create(2351, 3608, 0)),
|
||||
TrailDefinition(9,TrailType.LINKING,false ,Location.create(2360, 3602, 0),Location.create(2355, 3601, 0),Location.create(2358, 3599, 0)),
|
||||
TrailDefinition(12,TrailType.LINKING,false,Location.create(2355, 3601, 0),Location.create(2349, 3604, 0),Location.create(2352, 3603, 0)),
|
||||
TrailDefinition(15,TrailType.LINKING,false,Location.create(2360, 3602, 0),Location.create(2357, 3607, 0),Location.create(2358, 3603, 0))
|
||||
TrailDefinition(2982,TrailType.LINKING,false,Location.create(2357, 3607, 0),Location.create(2354, 3609, 0),Location.create(2355, 3608, 0)),
|
||||
TrailDefinition(2983,TrailType.LINKING,false,Location.create(2354, 3609, 0),Location.create(2349, 3604, 0),Location.create(2351, 3608, 0)),
|
||||
TrailDefinition(2977,TrailType.LINKING,false ,Location.create(2360, 3602, 0),Location.create(2355, 3601, 0),Location.create(2358, 3599, 0)),
|
||||
TrailDefinition(2978,TrailType.LINKING,false,Location.create(2355, 3601, 0),Location.create(2349, 3604, 0),Location.create(2352, 3603, 0)),
|
||||
TrailDefinition(2979,TrailType.LINKING,false,Location.create(2360, 3602, 0),Location.create(2357, 3607, 0),Location.create(2358, 3603, 0))
|
||||
)
|
||||
experience = 36.0
|
||||
varp = 919
|
||||
@@ -71,4 +71,4 @@ class CommonKebbitEast : HunterTracking() {
|
||||
|
||||
return this
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package content.global.skill.hunter.tracking
|
||||
|
||||
import core.api.log
|
||||
import core.api.*
|
||||
import core.game.interaction.OptionHandler
|
||||
import core.game.node.Node
|
||||
import core.game.node.scenery.Scenery
|
||||
@@ -70,7 +70,7 @@ abstract class HunterTracking : OptionHandler(){
|
||||
nextTrail ?: continue
|
||||
var offsetUsed = false
|
||||
for(i in trail){
|
||||
if(i.offset == nextTrail.offset){ offsetUsed = true; break }
|
||||
if(i.varbit == nextTrail.varbit){ offsetUsed = true; break }
|
||||
}
|
||||
if(offsetUsed) continue
|
||||
if(nextTrail.type == TrailType.TUNNEL){
|
||||
@@ -94,7 +94,7 @@ abstract class HunterTracking : OptionHandler(){
|
||||
val possibleTrails = ArrayList<TrailDefinition>()
|
||||
for(trail in linkingTrails){
|
||||
val invTrail = getTrailInverse(trail,false)
|
||||
if(invTrail.type == TrailType.TUNNEL && previousTrail.endLocation.withinDistance(invTrail.startLocation,5) && !previousTrail.endLocation.equals(invTrail.startLocation) && previousTrail.offset != trail.offset){
|
||||
if(invTrail.type == TrailType.TUNNEL && previousTrail.endLocation.withinDistance(invTrail.startLocation,5) && !previousTrail.endLocation.equals(invTrail.startLocation) && previousTrail.varbit != trail.varbit){
|
||||
possibleTrails.add(trail)
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,7 @@ abstract class HunterTracking : OptionHandler(){
|
||||
}
|
||||
val possibleTrails = ArrayList<TrailDefinition>()
|
||||
for(trail in linkingTrails){
|
||||
if(trail.startLocation.equals(previousTrail.endLocation) && previousTrail.offset != trail.offset){
|
||||
if(trail.startLocation.equals(previousTrail.endLocation) && previousTrail.varbit != trail.varbit){
|
||||
possibleTrails.add(trail)
|
||||
}
|
||||
}
|
||||
@@ -116,8 +116,8 @@ abstract class HunterTracking : OptionHandler(){
|
||||
*/
|
||||
fun getTrailInverse(trail: TrailDefinition, swapLocations: Boolean): TrailDefinition{
|
||||
if(swapLocations)
|
||||
return TrailDefinition(trail.offset,if(tunnelEntrances.contains(trail.startLocation)) TrailType.TUNNEL else TrailType.LINKING,!trail.inverted,trail.endLocation,trail.startLocation, trail.triggerObjectLocation)
|
||||
return TrailDefinition(trail.offset, if(tunnelEntrances.contains(trail.startLocation)) TrailType.TUNNEL else TrailType.LINKING, !trail.inverted, trail.startLocation, trail.endLocation)
|
||||
return TrailDefinition(trail.varbit,if(tunnelEntrances.contains(trail.startLocation)) TrailType.TUNNEL else TrailType.LINKING,!trail.inverted,trail.endLocation,trail.startLocation, trail.triggerObjectLocation)
|
||||
return TrailDefinition(trail.varbit, if(tunnelEntrances.contains(trail.startLocation)) TrailType.TUNNEL else TrailType.LINKING, !trail.inverted, trail.startLocation, trail.endLocation)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,8 +145,7 @@ abstract class HunterTracking : OptionHandler(){
|
||||
fun clearTrail(player: Player){
|
||||
player.removeAttribute(attribute)
|
||||
player.removeAttribute(indexAttribute)
|
||||
player.varpManager.get(varp).clear()
|
||||
player.varpManager.get(varp).send(player)
|
||||
setVarp(player, varp, 0)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -191,10 +190,9 @@ abstract class HunterTracking : OptionHandler(){
|
||||
val trailIndex = player.getAttribute(indexAttribute,0)
|
||||
for(index in 0..trailIndex){
|
||||
val trl = trail[index]
|
||||
player.varpManager.get(varp).setVarbit(trl.offset + 2,1)
|
||||
player.varpManager.get(varp).setVarbit(trl.offset,if(trl.inverted) 1 else 0)
|
||||
var current = getVarp(player, varp)
|
||||
setVarbit(player, trl.varbit, (if (trl.inverted) 1 else 0) or (1 shl 2))
|
||||
}
|
||||
player.varpManager.get(varp).send(player)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -217,7 +215,7 @@ abstract class HunterTracking : OptionHandler(){
|
||||
trail.get(currentIndex)
|
||||
}
|
||||
} else {
|
||||
TrailDefinition(0,TrailType.LINKING,false,Location(0,0,0),Location(0,0,0),Location(0,0,0))
|
||||
return false
|
||||
}
|
||||
when(option){
|
||||
|
||||
@@ -264,4 +262,4 @@ abstract class HunterTracking : OptionHandler(){
|
||||
fun hasNooseWand(player: Player) : Boolean{
|
||||
return player.equipment.contains(Items.NOOSE_WAND_10150,1) || player.inventory.contains(Items.NOOSE_WAND_10150,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,20 +27,20 @@ class PolarKebbitHunting : HunterTracking() {
|
||||
)
|
||||
initialMap = hashMapOf(
|
||||
19640 to arrayListOf(
|
||||
TrailDefinition(24,TrailType.TUNNEL,false,Location.create(2712, 3831, 1),Location.create(2718, 3832, 1)),
|
||||
TrailDefinition(21,TrailType.LINKING,true,Location.create(2712, 3831, 1),Location.create(2716, 3827, 1),Location.create(2713,3827,1)),
|
||||
TrailDefinition(12,TrailType.LINKING,false,Location.create(2712, 3831, 1),Location.create(2708, 3819, 1),Location.create(2708,3825,1))
|
||||
TrailDefinition(3061,TrailType.TUNNEL,false,Location.create(2712, 3831, 1),Location.create(2718, 3832, 1)),
|
||||
TrailDefinition(3060,TrailType.LINKING,true,Location.create(2712, 3831, 1),Location.create(2716, 3827, 1),Location.create(2713,3827,1)),
|
||||
TrailDefinition(3057,TrailType.LINKING,false,Location.create(2712, 3831, 1),Location.create(2708, 3819, 1),Location.create(2708,3825,1))
|
||||
),
|
||||
19641 to arrayListOf(
|
||||
TrailDefinition(0,TrailType.LINKING,true,Location.create(2718, 3820, 1),Location.create(2708, 3819, 1),Location.create(2712,3815,1)),
|
||||
TrailDefinition(6,TrailType.TUNNEL,false, Location.create(2718, 3820, 1),Location.create(2715, 3820, 1)),
|
||||
TrailDefinition(9,TrailType.TUNNEL,false,Location.create(2718, 3820, 1),Location.create(2721, 3827, 1))
|
||||
TrailDefinition(3053,TrailType.LINKING,true,Location.create(2718, 3820, 1),Location.create(2708, 3819, 1),Location.create(2712,3815,1)),
|
||||
TrailDefinition(3055,TrailType.TUNNEL,false, Location.create(2718, 3820, 1),Location.create(2715, 3820, 1)),
|
||||
TrailDefinition(3056,TrailType.TUNNEL,false,Location.create(2718, 3820, 1),Location.create(2721, 3827, 1))
|
||||
)
|
||||
)
|
||||
linkingTrails = arrayListOf(
|
||||
TrailDefinition(15,TrailType.LINKING,true,Location.create(2714,3821,1),Location.create(2716, 3827, 1)),
|
||||
TrailDefinition(18,TrailType.TUNNEL,true,Location.create(2716, 3827, 1),Location.create(2718,3829,1)),
|
||||
TrailDefinition(3,TrailType.TUNNEL,false,Location.create(2708, 3819, 1),Location.create(2711, 3819, 1))
|
||||
TrailDefinition(3058,TrailType.LINKING,true,Location.create(2714,3821,1),Location.create(2716, 3827, 1)),
|
||||
TrailDefinition(3059,TrailType.TUNNEL,true,Location.create(2716, 3827, 1),Location.create(2718,3829,1)),
|
||||
TrailDefinition(3054,TrailType.TUNNEL,false,Location.create(2708, 3819, 1),Location.create(2711, 3819, 1))
|
||||
)
|
||||
experience = 30.0
|
||||
varp = 926
|
||||
@@ -65,4 +65,4 @@ class PolarKebbitHunting : HunterTracking() {
|
||||
SceneryDefinition.forId(19435).handlers["option:attack"] = this
|
||||
return this
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@ package content.global.skill.hunter.tracking
|
||||
|
||||
import core.game.world.map.Location
|
||||
|
||||
class TrailDefinition(val offset: Int, val type: TrailType, var inverted: Boolean, val startLocation: Location, val endLocation: Location, val triggerObjectLocation: Location = endLocation){
|
||||
class TrailDefinition(val varbit: Int, val type: TrailType, var inverted: Boolean, val startLocation: Location, val endLocation: Location, val triggerObjectLocation: Location = endLocation){
|
||||
override fun toString(): String {
|
||||
return "$startLocation $endLocation [offset: $offset] [${type.name}] [inverted: $inverted]"
|
||||
return "$startLocation $endLocation [varbit: $varbit] [${type.name}] [inverted: $inverted]"
|
||||
}
|
||||
}
|
||||
enum class TrailType{
|
||||
LINKING,
|
||||
INITIAL,
|
||||
TUNNEL
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package content.global.skill.runecrafting;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
import core.cache.def.impl.VarbitDefinition;
|
||||
import core.cache.def.impl.ItemDefinition;
|
||||
import core.cache.def.impl.SceneryDefinition;
|
||||
@@ -38,27 +40,27 @@ public final class TiaraPlugin implements Plugin<Object> {
|
||||
switch (identifier) {
|
||||
case "equip":
|
||||
if (item.getName().contains("cape")) {
|
||||
player.getConfigManager().set(CONFIG, 6143);
|
||||
setVarp(player, CONFIG, 6143);
|
||||
break;
|
||||
}
|
||||
MysteriousRuin ruin = MysteriousRuin.forTalisman(Tiara.forItem(item).getTalisman());
|
||||
player.getConfigManager().set(CONFIG, 1 << VarbitDefinition.forObjectID(SceneryDefinition.forId(ruin.getObject()[0]).getVarbitID()).getStartBit(), true);
|
||||
setVarbit(player, SceneryDefinition.forId(ruin.getObject()[0]).getVarbitID(), 1, true);
|
||||
break;
|
||||
case "unequip":
|
||||
final Item other = args.length == 2 ? null : (Item) args[2];
|
||||
if (other != null) {
|
||||
if (other.getName().toLowerCase().contains("cape")) {
|
||||
player.getConfigManager().set(CONFIG, 6143);
|
||||
setVarp(player, CONFIG, 6143);
|
||||
break;
|
||||
}
|
||||
Tiara tiara = Tiara.forItem(other);
|
||||
if (tiara != null) {
|
||||
MysteriousRuin r = MysteriousRuin.forTalisman(tiara.getTalisman());
|
||||
player.getConfigManager().set(CONFIG, 1 << VarbitDefinition.forObjectID(SceneryDefinition.forId(r.getObject()[0]).getVarbitID()).getStartBit(), true);
|
||||
setVarbit(player, SceneryDefinition.forId(r.getObject()[0]).getVarbitID(), 1, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
player.getConfigManager().set(CONFIG, 0);
|
||||
setVarp(player, CONFIG, 0);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -244,7 +244,7 @@ class AbyssPlugin : InteractionListener {
|
||||
* Used to make sure the player lands by the blocked obstacle.
|
||||
*/
|
||||
fun rotateObstacles(player: Player, abyssLoc: AbyssLoc) {
|
||||
setVarbit(player,VARP_SCENERY_ABYSS,ABYSS_OBSTACLES,abyssLoc.getSegment(),true)
|
||||
setVarbit(player, 625, abyssLoc.getSegment(), true)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -266,7 +266,7 @@ class AbyssPlugin : InteractionListener {
|
||||
3 -> return if (RandomFunction.random(100) < getStatLevel(player,skill)
|
||||
) {
|
||||
sendMessage(player, colorize("%G${messages[1]}"))
|
||||
if(varbitVal != null) { setVarbit(player,VARP_SCENERY_ABYSS,ABYSS_OBSTACLES,varbitVal) }
|
||||
if(varbitVal != null) { setVarbit(player, 625, varbitVal) }
|
||||
false
|
||||
} else {
|
||||
sendMessage(player, colorize("%R${messages[2]}"))
|
||||
@@ -274,7 +274,7 @@ class AbyssPlugin : InteractionListener {
|
||||
true
|
||||
}
|
||||
5 -> {
|
||||
if(varbitVal != null) { setVarbit(player,VARP_SCENERY_ABYSS,ABYSS_OBSTACLES,varbitVal or 1) }
|
||||
if(varbitVal != null) { setVarbit(player, 625, varbitVal or 1) }
|
||||
}
|
||||
7 -> {
|
||||
player.unlock()
|
||||
|
||||
@@ -6,6 +6,8 @@ import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.item.Item;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
|
||||
/**
|
||||
* Handles the zamorak mages dialogue.
|
||||
@@ -460,7 +462,7 @@ public final class ZamorakMageDialogue extends DialoguePlugin {
|
||||
* @param stage the stage.
|
||||
*/
|
||||
public void setStage(int stage) {
|
||||
player.getConfigManager().set(492, stage, true);
|
||||
setVarp(player, 492, stage, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -468,6 +470,6 @@ public final class ZamorakMageDialogue extends DialoguePlugin {
|
||||
* @return the stage.
|
||||
*/
|
||||
public int getStage() {
|
||||
return player.getConfigManager().get(492);
|
||||
return getVarp(player, 492);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,7 +209,7 @@ class SlayerManager(val player: Player? = null) : LoginListener, PersistPlayer,
|
||||
|
||||
fun decrementAmount(amount: Int) {
|
||||
flags.decrementTaskAmount(amount)
|
||||
player!!.varpManager.get(2502).setVarbit(0, flags.taskFlags shr 4).send(player)
|
||||
setVarp(player!!, 2502, flags.taskFlags shr 4)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,6 +10,7 @@ import content.global.skill.slayer.Tasks
|
||||
import core.tools.RandomFunction
|
||||
import org.rs09.consts.Items
|
||||
import java.util.ArrayList
|
||||
import core.api.*
|
||||
|
||||
object SlayerUtils {
|
||||
fun generate(player: Player, master: Master): Tasks?
|
||||
@@ -44,7 +45,7 @@ object SlayerUtils {
|
||||
} else if (master == Master.VANNAKA) {
|
||||
player.achievementDiaryManager.finishTask(player, DiaryType.VARROCK, 1, 14)
|
||||
}
|
||||
player.varpManager.get(2502).setVarbit(0, SlayerManager.getInstance(player).flags.taskFlags shr 4).send(player)
|
||||
setVarp(player, 2502, SlayerManager.getInstance(player).flags.taskFlags shr 4)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@@ -33,6 +33,8 @@ import core.net.packet.out.MinimapState;
|
||||
import core.plugin.Plugin;
|
||||
import core.plugin.ClassScanner;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Handles the summoning training room.
|
||||
* @author Emperor
|
||||
@@ -83,7 +85,7 @@ public final class SummoningTrainingRoom extends OptionHandler {
|
||||
int questVal = quest.getStage(player) == 0 ? 0 : quest.getStage(player) > 0 && quest.getStage(player) < 100 ? 5 : 28893;
|
||||
switch (option) {
|
||||
case "close":
|
||||
player.getConfigManager().set(1178, questVal == 28893 ? 32989 : (1 << 11) + questVal);
|
||||
setVarp(player, 1178, questVal == 28893 ? 32989 : (1 << 11) + questVal);
|
||||
return true;
|
||||
case "open":
|
||||
if (quest.getStage(player) < 40) {
|
||||
@@ -92,13 +94,13 @@ public final class SummoningTrainingRoom extends OptionHandler {
|
||||
} else if (quest.getStage(player) == 40) {
|
||||
if (player.getAttribute("has-key", false) || player.getInventory().remove(TRAPDOOR_KEY)) {
|
||||
player.setAttribute("has-key", true);
|
||||
player.getConfigManager().set(1178, (2 << 11) + questVal, true);
|
||||
setVarp(player, 1178, (2 << 11) + questVal, true);
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("The trapdoor is locked.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
player.getConfigManager().set(1178, questVal == 28893 ? 28893 : (2 << 11) + questVal);
|
||||
setVarp(player, 1178, questVal == 28893 ? 28893 : (2 << 11) + questVal);
|
||||
return true;
|
||||
case "climb-down":
|
||||
if (object.getId() == 28653) {
|
||||
|
||||
@@ -34,7 +34,7 @@ import content.global.skill.summoning.SummoningPouch;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static core.api.ContentAPIKt.log;
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Represents a familiar.
|
||||
@@ -339,10 +339,8 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
||||
private void sendTimeRemaining() {
|
||||
int minutes = ticks / 100;
|
||||
int centiminutes = ticks % 100;
|
||||
owner.varpManager.get(1176)
|
||||
.setVarbit(7, minutes)
|
||||
.setVarbit(6, centiminutes > 49 ? 1 : 0)
|
||||
.send(owner);
|
||||
setVarbit(owner, 4534, minutes);
|
||||
setVarbit(owner, 4290, centiminutes > 49 ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -542,9 +540,9 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
||||
* Sends the familiar packets.
|
||||
*/
|
||||
public void sendConfiguration() {
|
||||
owner.getConfigManager().set(448, getPouchId());
|
||||
owner.getConfigManager().set(1174, getOriginalId());
|
||||
owner.getConfigManager().set(1175, specialCost << 23);
|
||||
setVarp(owner, 448, getPouchId());
|
||||
setVarp(owner, 1174, getOriginalId());
|
||||
setVarp(owner, 1175, specialCost << 23);
|
||||
sendTimeRemaining();
|
||||
updateSpecialPoints(0);
|
||||
}
|
||||
@@ -605,10 +603,10 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
||||
getPulseManager().clear();
|
||||
owner.getInterfaceManager().removeTabs(7);
|
||||
owner.getFamiliarManager().setFamiliar(null);
|
||||
owner.getConfigManager().set(448, -1);
|
||||
owner.getConfigManager().set(1176, 0);
|
||||
owner.getConfigManager().set(1175, 182986);
|
||||
owner.getConfigManager().set(1174, -1);
|
||||
setVarp(owner, 448, -1);
|
||||
setVarp(owner, 1176, 0);
|
||||
setVarp(owner, 1175, 182986);
|
||||
setVarp(owner, 1174, -1);
|
||||
if (owner.getSkullManager().isWilderness()) {
|
||||
owner.getAppearance().sync();
|
||||
}
|
||||
@@ -624,7 +622,7 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
||||
if (specialPoints > 60) {
|
||||
specialPoints = 60;
|
||||
}
|
||||
owner.getConfigManager().set(1177, specialPoints);
|
||||
setVarp(owner, 1177, specialPoints);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Handles a player's familiar.
|
||||
* @author Emperor
|
||||
@@ -412,9 +414,9 @@ public final class FamiliarManager {
|
||||
* @param value the value.
|
||||
*/
|
||||
public void setConfig(int value) {
|
||||
int current = player.getConfigManager().get(1160);
|
||||
int current = getVarp(player, 1160);
|
||||
int newVal = current + value;
|
||||
player.getConfigManager().set(1160, newVal);
|
||||
setVarp(player, 1160, newVal);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,6 +5,7 @@ import core.game.node.entity.state.PlayerState
|
||||
import core.game.node.entity.state.State
|
||||
import core.game.system.task.Pulse
|
||||
import org.json.simple.JSONObject
|
||||
import core.api.*
|
||||
|
||||
@PlayerState("incubator")
|
||||
class IncubatorState(player: Player? = null) : State(player) {
|
||||
@@ -35,7 +36,7 @@ class IncubatorState(player: Player? = null) : State(player) {
|
||||
override fun createPulse() {
|
||||
player ?: return
|
||||
egg ?: return
|
||||
player.varpManager.get(1160).setVarbit(4,1).send(player)
|
||||
setVarbit(player, 4277, 1)
|
||||
pulse = object : Pulse(){
|
||||
override fun pulse(): Boolean {
|
||||
if(ticksLeft-- <= 0){
|
||||
@@ -49,4 +50,4 @@ class IncubatorState(player: Player? = null) : State(player) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import content.global.skill.summoning.familiar.Familiar;
|
||||
import content.global.skill.summoning.familiar.FamiliarSpecial;
|
||||
import core.game.node.entity.player.Player;
|
||||
|
||||
import static core.api.ContentAPIKt.*;
|
||||
|
||||
/**
|
||||
* Represents a pet.
|
||||
* @author Emperor
|
||||
@@ -48,9 +50,9 @@ public final class Pet extends Familiar {
|
||||
|
||||
@Override
|
||||
public void sendConfiguration() {
|
||||
owner.getConfigManager().set(1175, ((int) details.getGrowth() << 1) | ((int) details.getHunger() << 9));
|
||||
owner.getConfigManager().set(1174, getId());
|
||||
owner.getConfigManager().set(448, itemId);
|
||||
setVarp(owner, 1175, ((int) details.getGrowth() << 1) | ((int) details.getHunger() << 9));
|
||||
setVarp(owner, 1174, getId());
|
||||
setVarp(owner, 448, itemId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,7 +71,7 @@ public final class Pet extends Familiar {
|
||||
if (hunger >= 100.0 && growthRate != 0 && pet.getFood().length != 0) {
|
||||
owner.getFamiliarManager().dismiss(false);
|
||||
owner.getFamiliarManager().setFamiliar(null);
|
||||
owner.getConfigManager().set(1175, 0);
|
||||
setVarp(owner, 1175, 0);
|
||||
owner.sendMessage("<col=ff0000>Your pet has run away.</col>");
|
||||
return;
|
||||
}
|
||||
@@ -87,7 +89,7 @@ public final class Pet extends Familiar {
|
||||
} else if (!getPulseManager().hasPulseRunning()) {
|
||||
startFollowing();
|
||||
}
|
||||
owner.getConfigManager().set(1175, ((int) details.getGrowth() << 1) | ((int) details.getHunger() << 9));
|
||||
setVarp(owner, 1175, ((int) details.getGrowth() << 1) | ((int) details.getHunger() << 9));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user