Fixed some issues with incorrectly reading varbit values

Fixed Dwarf Cannon quest
Improved varp/varbit interface and handling
This commit is contained in:
Ceikry
2023-06-06 09:31:16 +00:00
committed by Ryan
parent f613fb13cd
commit bd12800cca
163 changed files with 1006 additions and 1358 deletions
@@ -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));
}
/**