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
@@ -37,9 +37,9 @@ object DrillDemonUtils {
}
fun changeSignsAndAssignTask(player: Player){
player.varpManager.get(DD_SIGN_VARP).clearBitRange(0,31)
setVarp(player, DD_SIGN_VARP, 0)
val tempList = arrayListOf(DD_SIGN_JOG, DD_SIGN_JUMP, DD_SIGN_PUSHUP, DD_SIGN_SITUP).shuffled().toMutableList()
val tempOffsetList = arrayListOf(0,2,4,6).shuffled().toMutableList()
val tempOffsetList = arrayListOf(1335, 1336, 1337, 1338).shuffled().toMutableList()
val task = tempList.random()
val taskOffset = tempOffsetList.random()
@@ -48,9 +48,9 @@ object DrillDemonUtils {
tempList.remove(task)
tempOffsetList.remove(taskOffset)
player.varpManager.get(DD_SIGN_VARP).setVarbit(taskOffset,task).send(player)
setVarbit(player, taskOffset, task)
for(i in 0 until tempList.size){
player.varpManager.get(DD_SIGN_VARP).setVarbit(tempOffsetList[i],tempList[i]).send(player)
setVarbit(player, tempOffsetList[i], tempList[i])
}
player.dialogueInterpreter.sendDialogues(NPCs.SERGEANT_DAMIEN_2790, core.game.dialogue.FacialExpression.OLD_NORMAL,when(task){
@@ -63,18 +63,18 @@ object DrillDemonUtils {
player.unlock()
}
fun getOffsetForID(id: Int): Int{
fun getVarbitForId(id: Int): Int{
return when(id){
10076 -> 0
10077 -> 2
10078 -> 4
10079 -> 6
10076 -> 1335
10077 -> 1336
10078 -> 1337
10079 -> 1338
else -> 0
}
}
fun getMatTask(id: Int, player: Player): Int{
return player.varpManager.get(DD_SIGN_VARP).getVarbitValue(getOffsetForID(id)) ?: 0
return getVarbit(player, getVarbitForId(id))
}
fun cleanup(player: Player){
@@ -117,4 +117,4 @@ object DrillDemonUtils {
GroundItemManager.create(reward,player)
}
}
}
}
@@ -41,8 +41,7 @@ class FairyRingInterface : InterfaceListener {
player.removeAttribute("fr:ring1")
player.removeAttribute("fr:ring2")
player.removeAttribute("fr:ring3")
clearVarp(player, 816)
setVarbit(player, 816, 0, 0)
setVarp(player, 816, 0)
closeTabInterface(player)
return@onClose true
}
@@ -76,7 +75,7 @@ class FairyRingInterface : InterfaceListener {
toSet = !toSet
player.setAttribute("fr:sortorder",toSet)
if(toSet) {
setVarbit(player, 816, 0, ring1index)
setVarp(player, 816, ring1index)
player.setAttribute("fr:ring2",0)
player.setAttribute("fr:ring3",0)
}
@@ -1,5 +1,7 @@
package content.global.handlers.iface;
import static core.api.ContentAPIKt.*;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
@@ -78,7 +80,7 @@ public class SettingTabInterface extends ComponentPlugin {
break;
case 8:// house
p.getInterfaceManager().close();
p.getConfigManager().set(261, p.getConfigManager().get(261) & 0x1);
setVarp(p, 261, getVarp(p, 261) & 0x1);
p.getInterfaceManager().openSingleTab(new Component(398));
break;
}
@@ -7,6 +7,8 @@ import core.game.node.entity.player.Player;
import core.plugin.Initializable;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Represents the plugin used for the skilling interface.
* @author 'Vexia
@@ -23,9 +25,8 @@ public final class SkillInterface extends ComponentPlugin {
@Override
public boolean handle(Player player, Component component, int opcode, int button, int slot, int itemId) {
player.varpManager.get(965)
.setVarbit(0,player.getAttribute("skillMenu",-1))
.setVarbit(10, button - 10).send(player);
setVarbit(player, 3288, player.getAttribute("skillMenu", -1));
setVarbit(player, 3289, button - 10);
return true;
}
}
@@ -10,6 +10,8 @@ import core.game.world.GameWorld;
import core.plugin.Initializable;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Represents the plugin used to handle the skilling tab.
* @author Vexia
@@ -35,12 +37,12 @@ public final class SkillTabInterface extends ComponentPlugin {
if (p.getAttribute("levelup:" + config.getSkillId(), false)) {
p.removeAttribute("levelup:" + config.getSkillId());
LevelUp.sendFlashingIcons(p, -1);
p.getConfigManager().set(1230, ADVANCE_CONFIGS[config.getSkillId()]);
setVarp(p, 1230, ADVANCE_CONFIGS[config.getSkillId()]);
p.getInterfaceManager().open(new Component(741));
} else {
p.getPulseManager().clear();
p.getInterfaceManager().open(new Component(499));
p.getConfigManager().set(965, config.getConfig());
setVarp(p, 965, config.getConfig());
p.getAttributes().put("skillMenu", config.getConfig());
}
} else {
@@ -30,7 +30,7 @@ class StockMarket : InterfaceListener {
player.packetDispatch.sendInterfaceConfig(105, 193, true)
player.packetDispatch.sendIfaceSettings(6, 211, 105, -1, -1)
player.packetDispatch.sendIfaceSettings(6, 209, 105, -1, -1)
player.varpManager.get(1112).setVarbit(0, -1).send(player)
setVarp(player, 1112, -1)
return@onOpen true
}
@@ -187,13 +187,13 @@ class StockMarket : InterfaceListener {
fun updateOfferValue(player: Player, offer: GrandExchangeOffer, newAmt: Int)
{
offer.offeredValue = newAmt
player.varpManager.get(1111).setVarbit(0, newAmt).send(player)
setVarp(player, 1111, newAmt)
}
fun updateOfferAmount(player: Player, offer: GrandExchangeOffer, newAmt: Int)
{
offer.amount = newAmt
player.varpManager.get(1110).setVarbit(0, newAmt).send(player)
setVarp(player, 1110, newAmt)
}
fun abortOffer(player: Player, offer: GrandExchangeOffer?)
@@ -320,14 +320,14 @@ class StockMarket : InterfaceListener {
lowPrice = (recommendedPrice * 0.95).toInt()
highPrice = (recommendedPrice * 1.05).toInt()
}
player.varpManager.get(1109).setVarbit(0, offer?.itemID ?: -1).send(player)
player.varpManager.get(1110).setVarbit(0, offer?.amount ?: 0).send(player)
player.varpManager.get(1111).setVarbit(0, offer?.offeredValue ?: 0).send(player)
player.varpManager.get(1112).setVarbit(0, index).send(player)
player.varpManager.get(1113).setVarbit(0, if (isSale) 1 else 0).send(player)
player.varpManager.get(1114).setVarbit(0, recommendedPrice).send(player)
player.varpManager.get(1115).setVarbit(0, lowPrice).send(player)
player.varpManager.get(1116).setVarbit(0, highPrice).send(player)
setVarp(player, 1109, offer?.itemID ?: -1)
setVarp(player, 1110, offer?.amount ?: 0)
setVarp(player, 1111, offer?.offeredValue ?: 0)
setVarp(player, 1112, index)
setVarp(player, 1113, if (isSale) 1 else 0)
setVarp(player, 1114, recommendedPrice)
setVarp(player, 1115, lowPrice)
setVarp(player, 1116, highPrice)
if (offer != null) {
PacketRepository.send(
ContainerPacket::class.java,
@@ -392,4 +392,4 @@ class StockMarket : InterfaceListener {
}
}
}
}
@@ -23,6 +23,8 @@ import core.plugin.ClassScanner;
import java.util.concurrent.TimeUnit;
import static core.api.ContentAPIKt.*;
/**
* Handles the dragonfire shield options.
* @author Emperor
@@ -49,7 +51,7 @@ public final class DragonfireShieldPlugin extends OptionHandler {
boolean usingAttack = !player.getAttribute("dfs_spec", false);
if (!usingAttack) {
if (!player.getSettings().isSpecialToggled()) {
player.getConfigManager().set(301, 0);
setVarp(player, 301, 0);
}
player.removeAttribute("dfs_spec");
player.getProperties().getCombatPulse().setTemporaryHandler(null);
@@ -70,7 +72,7 @@ public final class DragonfireShieldPlugin extends OptionHandler {
player.getPacketDispatch().sendMessage("Your dragonfire shield is recharging.");
return true;
}
player.getConfigManager().set(301, 1);
setVarp(player, 301, 1);
player.setAttribute("dfs_spec", true);
SwitchAttack attack = new SwitchAttack(null, Animation.create(6696), Graphics.create(1165), new Graphics(1167, 96), Projectile.create(player, null, 1166, 36, 36, 80, 70, 0, 11));
DragonfireSwingHandler handler = new DragonfireSwingHandler(false, 26, attack, true) {
@@ -79,7 +81,7 @@ public final class DragonfireShieldPlugin extends OptionHandler {
if (entity instanceof Player) {
Player player = (Player) entity;
if (!player.getSettings().isSpecialToggled()) {
player.getConfigManager().set(301, 0);
setVarp(player, 301, 0);
}
player.removeAttribute("dfs_spec");
Item shield = player.getEquipment().get(EquipmentContainer.SLOT_SHIELD);
@@ -43,7 +43,7 @@ class EnchantedGemDialogue() : DialogueFile() {
} else {
npcl(core.game.dialogue.FacialExpression.FRIENDLY, "You're currently assigned to kill ${getSlayerTaskName(player!!)}s; only ${getSlayerTaskKillsRemaining(player!!)} more to go.")
}
setVarbit(player!!, 2502, 0, getSlayerTaskFlags(player!!) shr 4)
setVarp(player!!, 2502, getSlayerTaskFlags(player!!) shr 4)
stage = 1
}
}
@@ -63,4 +63,4 @@ class EnchantedGemDialogue() : DialogueFile() {
401 -> player(core.game.dialogue.FacialExpression.HAPPY, "Great, thanks!").also { stage = 1 }
}
}
}
}
@@ -8,6 +8,8 @@ import core.game.node.scenery.Scenery;
import core.plugin.Initializable;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Handles the creating of an imp jar.
* @author Vexia
@@ -62,12 +64,12 @@ public final class ImpJarCreatePlugin extends UseWithHandler {
* @param player the player.
*/
private void fillOilStill(Player player, Item used) {
int configValue = player.getConfigManager().get(425);
int configValue = getVarp(player, 425);
if (used.getId() == 11262 || used.getId() == 10012) {
if (configValue == 0 && used.getId() == 11262) {
player.getInventory().replace(new Item(229), used.getSlot());
player.sendMessage("You refine some imp repellent.");
player.getConfigManager().set(425, 64, true);
setVarp(player, 425, 64, true);
return;
} else if (configValue == 32) {
player.sendMessage("There is already lamp oil in the still.");
@@ -77,7 +79,7 @@ public final class ImpJarCreatePlugin extends UseWithHandler {
player.sendMessage("There is already imp repellent in the still.");
} else {
player.getInventory().replace(new Item(11260), used.getSlot());
player.getConfigManager().set(425, 0, true);
setVarp(player, 425, 0, true);
player.sendMessage("You turn the butterfly jar into an impling jar.");
}
return;
@@ -95,7 +97,7 @@ public final class ImpJarCreatePlugin extends UseWithHandler {
}
if (used.getId() == 1939) {
if (player.getInventory().remove(new Item(1939))) {
player.getConfigManager().set(425, 32, true);
setVarp(player, 425, 32, true);
player.sendMessage("You refine some swamp tar into lamp oil.");
}
} else {
@@ -105,7 +107,7 @@ public final class ImpJarCreatePlugin extends UseWithHandler {
if (player.getInventory().contains(4525, 1) || player.getInventory().contains(4535, 1) || player.getInventory().contains(4546, 1) || player.getInventory().contains(4700, 1)) {
Item replace = new Item(used.getId() == 4525 ? 4522 : used.getId() == 4535 ? 4537 : used.getId() == 4546 ? 4548 : 4701);
player.getInventory().replace(replace, used.getSlot());
player.getConfigManager().set(425, 0, true);
setVarp(player, 425, 0, true);
player.sendMessage("You fill the item with oil.");
}
}
@@ -20,7 +20,7 @@ class GWDEntranceRopeListener : InteractionListener {
return@onUseWith false
}
setVarbit(player,1048,0,1,true)
setVarbit(player, 3932, 1, true)
return@onUseWith true
}
@@ -15,6 +15,8 @@ import core.tools.StringUtils;
import content.global.skill.summoning.pet.IncubatorState;
import core.plugin.ClassScanner;
import static core.api.ContentAPIKt.*;
/**
* Handles the incubator.
* @author Vexia
@@ -46,7 +48,7 @@ public class IncubatorPlugin extends OptionHandler {
}
{
String name = egg.getProduct().getName().toLowerCase();
player.varpManager.get(1160).setVarbit(4,0).send(player);
setVarbit(player, 4277, 0);
player.sendMessage("You take your " + name + " out of the incubator.");
if(!player.getInventory().add(egg.getProduct())){
GroundItemManager.create(egg.getProduct(),player);
@@ -58,7 +60,7 @@ public class IncubatorPlugin extends OptionHandler {
if (player.states.get("incubator") != null || inc != -1) {
IncubatorState p = (IncubatorState) player.states.get("incubator");
if(p != null && p.getPulse() == null){
player.varpManager.get(1160).setVarbit(4,0).send(player);
setVarbit(player, 4277, 0);
return true;
}
String name = p == null ? IncubatorEgg.values()[inc].getProduct().getName().toLowerCase() : p.getEgg().getProduct().getName().toLowerCase();
@@ -10,6 +10,8 @@ import core.plugin.PluginManifest;
import core.plugin.PluginType;
import core.game.world.GameWorld;
import static core.api.ContentAPIKt.setVarp;
import java.util.concurrent.TimeUnit;
/**
@@ -60,7 +62,7 @@ public final class LoginValidationPlugin implements Plugin<Player> {
ActivityManager.start(player, "falconry", true);
}
if (player.getSavedData().getQuestData().getDragonSlayerAttribute("repaired")) {
player.getConfigManager().set(177, 1967876);
setVarp(player, 177, 1967876); //lol?
}
if (player.getSavedData().getGlobalData().getLootShareDelay() < System.currentTimeMillis() && player.getSavedData().getGlobalData().getLootShareDelay() != 0L) {
player.getGlobalData().setLootSharePoints((int) (player.getGlobalData().getLootSharePoints() - player.getGlobalData().getLootSharePoints() * 0.10));
@@ -65,7 +65,7 @@ class MillingListener : InteractionListener {
}
}
playAudio(player, SOUND)
setVarbit(player, VARP, 0, 1, true)
setVarp(player, VARP, 1, true)
}
private fun fillHopper(player: Player, used: Item) {
@@ -94,8 +94,8 @@ class MillingListener : InteractionListener {
sendMessage(player, if (player.getAttribute("milling:grain", 0) > 0) "You fill a pot with flour from the bin." else "You fill a pot with the last of the flour in the bin.")
}
if (getAttribute(player, "milling:sweetcorn", 0) + getAttribute(player, "milling:grain", 0) <= 0) {
setVarbit(player, VARP, 0, 0, true)
setVarp(player, VARP, 0, true)
}
}
}
}
}
@@ -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));
}
/**
@@ -2,6 +2,7 @@ package content.global.travel
import content.global.skill.magic.TeleportMethod
import core.game.event.TeleportEvent
import core.api.*
import core.api.lock
import core.api.teleport
import core.api.unlock
@@ -142,7 +143,7 @@ object EssenceTeleport {
* @return the stage.
*/
fun getStage(player: Player): Int {
return player.varpManager.get(492).getValue()
return getVarp(player, 492)
}
/**
@@ -49,7 +49,7 @@ class CanoeInterfaceListeners : InterfaceListener {
player.pulseManager.run(object : Pulse(3) {
override fun pulse(): Boolean {
if (RandomFunction.random(if (canoe == Canoe.WAKA) 8 else 6) == 1) {
player.varpManager.setVarbit(varbit, CanoeUtils.getCraftValue(canoe, false))
setVarbit(player,varbit, CanoeUtils.getCraftValue(canoe, false))
player.skills.addExperience(Skills.WOODCUTTING, canoe.experience)
player.unlock()
return true
@@ -128,7 +128,7 @@ class CanoeInterfaceListeners : InterfaceListener {
if(destIndex == 4){
player.sendMessage("There are no trees nearby to make a new canoe. Guess you're walking.")
}
player.varpManager.setVarbit(varbit,0)
setVarbit(player,varbit,0)
return true
}
}
@@ -138,4 +138,4 @@ class CanoeInterfaceListeners : InterfaceListener {
return@on true
}
}
}
}
@@ -9,6 +9,8 @@ import org.rs09.consts.Components
import core.game.interaction.InteractionListener
import core.game.interaction.IntType
import core.api.*
class CanoeStationListener : InteractionListener {
private val STATION_IDs = intArrayOf(12140, 12141, 12142, 12143, 12144, 12145, 12146, 12147, 12148, 12151, 12152, 12153, 12154, 12155, 12156, 12157, 12158, 12149, 12150)
@@ -33,7 +35,7 @@ class CanoeStationListener : InteractionListener {
val axe: SkillingTool? = SkillingTool.getHatchet(player)
val varbit = node.asScenery().definition.configFile
if(varbit.getValue(player) != 0){
player.varpManager.setVarbit(varbit,0)
setVarbit(player,varbit,0)
}
if (axe == null) {
@@ -45,14 +47,14 @@ class CanoeStationListener : InteractionListener {
return@on true
}
player.lock()
player.varpManager.get(varbit.varpId).clearBitRange(0,31)
setVarp(player, varbit.varpId, 0)
player.faceLocation(CanoeUtils.getFaceLocation(player.location))
player.animate(axe.animation)
player.varpManager.setVarbit(varbit,STAGE_TREE_NONINTERACTABLE)
setVarbit(player,varbit,STAGE_TREE_NONINTERACTABLE)
player.pulseManager.run(object : Pulse(4){
override fun pulse(): Boolean {
player.animator.stop()
player.varpManager.setVarbit(varbit,STAGE_LOG_CHOPPED)
setVarbit(player,varbit,STAGE_LOG_CHOPPED)
player.packetDispatch.sendSceneryAnimation(node.asScenery().getChild(player), FALL, false)
player.unlock()
return true
@@ -64,7 +66,7 @@ class CanoeStationListener : InteractionListener {
on(STATION_IDs, IntType.SCENERY, "shape-canoe"){ player, node ->
val varbit = node.asScenery().definition.configFile
if(varbit.getValue(player) != STAGE_LOG_CHOPPED){
player.varpManager.setVarbit(varbit,0)
setVarbit(player,varbit,0)
return@on true
}
player.faceLocation(CanoeUtils.getFaceLocation(player.location))
@@ -81,7 +83,7 @@ class CanoeStationListener : InteractionListener {
player.faceLocation(CanoeUtils.getFaceLocation(player.location))
player.pulseManager.run(object : Pulse(){
override fun pulse(): Boolean {
player.varpManager.setVarbit(varbit, CanoeUtils.getCraftValue(canoe, true))
setVarbit(player,varbit, CanoeUtils.getCraftValue(canoe, true))
player.packetDispatch.sendSceneryAnimation(node.asScenery(), FLOAT, false)
player.unlock()
return true
@@ -95,4 +97,4 @@ class CanoeStationListener : InteractionListener {
return@on true
}
}
}
}
@@ -11,6 +11,9 @@ import core.net.packet.context.MinimapStateContext;
import core.net.packet.out.CameraViewPacket;
import core.net.packet.out.MinimapState;
import static core.api.ContentAPIKt.*;
/**
* Represents the pulse used for a glider.
*
@@ -49,7 +52,7 @@ public final class GliderPulse extends Pulse {
public boolean pulse() {
final boolean crash = glider == Gliders.LEMANTO_ADRA;
if (count == 1) {
player.varpManager.get(153).setVarbit(0,glider.getConfig()).send(player);
setVarp(player, 153, glider.getConfig());
PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 2));
} else if (count == 2 && crash) {
PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.SHAKE, 4, 4, 1200, 4, 4));
@@ -68,7 +71,7 @@ public final class GliderPulse extends Pulse {
player.getInterfaceManager().closeOverlay();
player.getInterfaceManager().close();
PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 0));
player.varpManager.get(153).setVarbit(0,0).send(player);
setVarp(player, 153, 0);
// Use the gnome glider to travel to Karamja
if (!crash && glider == Gliders.GANDIUS) {
player.getAchievementDiaryManager().finishTask(player, DiaryType.KARAMJA, 1, 11);
@@ -4,6 +4,8 @@ import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player;
import core.game.world.map.Location;
import static core.api.ContentAPIKt.setVarp;
/**
* Represents an enum of glider locations.
* @author 'Vexia
@@ -60,7 +62,7 @@ public enum Gliders {
if (g == null) {
return;
}
player.getConfigManager().set(153, g.getConfig());
setVarp(player, 153, g.getConfig());
}
/**
@@ -8,6 +8,8 @@ import core.net.packet.PacketRepository;
import core.net.packet.context.MinimapStateContext;
import core.net.packet.out.MinimapState;
import static core.api.ContentAPIKt.setVarp;
/**
* Represents a pulse used to travel a player to a location.
* @author Vexia
@@ -65,7 +67,7 @@ public final class ShipTravelPulse extends Pulse {
*/
private void arrive() {
player.unlock();
player.getConfigManager().set(75, -1);
setVarp(player, 75, 0);
player.getInterfaceManager().close();
PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 0));
if (!ship.getName().equals("Crandor")) {
@@ -96,6 +98,6 @@ public final class ShipTravelPulse extends Pulse {
player.lock(ship.getDelay() + 1);
player.getInterfaceManager().open(new Component(299));
PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 2));
player.getConfigManager().set(75, ship.getConfig());
setVarp(player, 75, ship.getConfig());
}
}