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
@@ -281,7 +281,7 @@ enum class EnchantedJewellery(
"assigned to kill ${getSlayerTaskName(player).lowercase(Locale.getDefault())}'s; " +
"only ${getSlayerTaskKillsRemaining(player)} more to go.", core.game.dialogue.FacialExpression.FRIENDLY)
// Slayer tracker UI
setVarbit(player, 2502, 0, slayerManager.flags.taskFlags shr 4)
setVarp(player, 2502, slayerManager.flags.taskFlags shr 4)
}
private fun canTeleport(player: Player, item: Item): Boolean {
@@ -335,4 +335,4 @@ enum class EnchantedJewellery(
}
}
}
}
}
@@ -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());
}
}
@@ -1,6 +1,6 @@
package content.minigame.allfiredup
import core.api.log
import core.api.*
import core.game.node.entity.player.Player
import core.tools.SystemLogger
import core.game.world.map.Location
@@ -10,21 +10,21 @@ import core.tools.Log
* Various data for beacons, such as varp and offset, required FM level, etc
* @author Ceikry
*/
enum class AFUBeacon(val title: String, val fmLevel: Int, val varpId: Int, val offset: Int, val location: Location, val experience: Double, val keeper: Int = 0) {
RIVER_SALVE("",43,1283,0,Location.create(3396, 3464, 0),216.2,8065),
RAG_AND_BONE("",43,1283,3,Location.create(3343, 3510, 0),235.8,8066),
JOLLY_BOAR("",48,1283,6,Location.create(3278, 3525, 0), 193.8,8067),
NORTH_VARROCK_CASTLE("",53,1283,9,Location.create(3236, 3527, 0),178.5,8068),
GRAND_EXCHANGE("",59,1283,12,Location.create(3170, 3536, 0),194.3,8069),
EDGEVILLE("",62,1283,15,Location.create(3087, 3516, 0),86.7,8070),
MONASTERY("",68,1283,18,Location.create(3034, 3518, 0),224.4,8071),
GOBLIN_VILLAGE("",72,1283,21,Location.create(2968, 3516, 0),194.8,8072),
BURTHORPE("",76,1283,24,Location.create(2940, 3565, 0),195.3,8073),
DEATH_PLATEAU("",79,1288,0,Location.create(2944, 3622, 0),249.9,8074),
TROLLHEIM("",83,1288,3,Location.create(2939, 3680, 0),201.0,8075),
GWD("",87,1288,6,Location.create(2937, 3773, 0),255.0,8076),
TEMPLE("",89,1288,9,Location.create(2946, 3836, 0),198.9),
PLATEAU("",92,1288,12,Location.create(2964, 3931, 0),147.9);
enum class AFUBeacon(val title: String, val fmLevel: Int, val varbit: Int, val location: Location, val experience: Double, val keeper: Int = 0) {
RIVER_SALVE("",43,5146,Location.create(3396, 3464, 0),216.2,8065),
RAG_AND_BONE("",43,5147,Location.create(3343, 3510, 0),235.8,8066),
JOLLY_BOAR("",48,5148,Location.create(3278, 3525, 0), 193.8,8067),
NORTH_VARROCK_CASTLE("",53,5149,Location.create(3236, 3527, 0),178.5,8068),
GRAND_EXCHANGE("",59,5150,Location.create(3170, 3536, 0),194.3,8069),
EDGEVILLE("",62,5151,Location.create(3087, 3516, 0),86.7,8070),
MONASTERY("",68,5152,Location.create(3034, 3518, 0),224.4,8071),
GOBLIN_VILLAGE("",72,5153,Location.create(2968, 3516, 0),194.8,8072),
BURTHORPE("",76,5154,Location.create(2940, 3565, 0),195.3,8073),
DEATH_PLATEAU("",79,5155,Location.create(2944, 3622, 0),249.9,8074),
TROLLHEIM("",83,5156,Location.create(2939, 3680, 0),201.0,8075),
GWD("",87,5157,Location.create(2937, 3773, 0),255.0,8076),
TEMPLE("",89,5158,Location.create(2946, 3836, 0),198.9),
PLATEAU("",92,5159,Location.create(2964, 3931, 0),147.9);
companion object {
fun forLocation(location: Location): content.minigame.allfiredup.AFUBeacon {
@@ -36,33 +36,33 @@ enum class AFUBeacon(val title: String, val fmLevel: Int, val varpId: Int, val o
fun resetAllBeacons(player: Player){
for(beacon in values()){
player.varpManager.get(beacon.varpId).setVarbit(beacon.offset,0).send(player)
setVarbit(player, beacon.varbit, 0)
}
}
}
fun light(player: Player){
player.varpManager.get(varpId).setVarbit(offset,2).send(player)
setVarbit(player, varbit, 2)
}
fun diminish(player: Player){
player.varpManager.get(varpId).setVarbit(offset,3).send(player)
setVarbit(player, varbit, 3)
}
fun extinguish(player: Player){
player.varpManager.get(varpId).setVarbit(offset,0).send(player)
setVarbit(player, varbit, 0)
}
fun lightGnomish(player: Player){
player.varpManager.get(varpId).setVarbit(offset,4).send(player)
setVarbit(player, varbit, 4)
}
fun fillWithLogs(player: Player){
player.varpManager.get(varpId).setVarbit(offset,1).send(player)
setVarbit(player, varbit, 1, true)
}
fun getState(player: Player): content.minigame.allfiredup.BeaconState {
return content.minigame.allfiredup.BeaconState.values()[player.varpManager.get(varpId).getVarbit(offset) ?: 0]
return BeaconState.values()[getVarbit(player, varbit)]
}
}
@@ -72,4 +72,4 @@ enum class BeaconState{
LIT,
DYING,
WARNING
}
}
@@ -106,7 +106,6 @@ class AFUBeaconListeners : InteractionListener {
if(questComplete){
session?.setLogs(beacon.ordinal,logs)
}
player.varpManager.flagSave(beacon.varpId);
}
2 -> player.unlock().also {player.animator.animate(Animation.RESET); return true }
}
@@ -215,4 +214,4 @@ class AFUBeaconListeners : InteractionListener {
return inventory.containsItem(Item(Items.INFERNO_ADZE_13661)) || bank.containsItem(Item(Items.INFERNO_ADZE_13661)) || equipment.containsItem(Item(Items.INFERNO_ADZE_13661))
}
}
}
@@ -11,6 +11,7 @@ import core.game.world.update.flag.context.Animation
import org.rs09.consts.Items
import core.game.interaction.InteractionListener
import core.game.interaction.IntType
import core.api.*
import java.util.*
/**
@@ -93,19 +94,18 @@ class AFURepairClimbHandler : InteractionListener {
}
}
player.varpManager.get(rco.varp).setVarbit(rco.offset,1).send(player)
player.varpManager.flagSave(rco.varp)
setVarbit(player, rco.varbit, 1, true)
}
private fun climb(player: Player, rco: RepairClimbObject, location: Location){
ForceMovement.run(player,location,rco.getOtherLocation(player),rco.getAnimation(player),rco.getAnimation(player),rco.getDirection(player),20).endAnimation = Animation(-1)
}
private enum class RepairClimbObject(val varp: Int, val offset: Int, val destinationUp: Location?, val destinationDown: Location?, val levelRequirement: Pair<Int,Int>?){
DEATH_PLATEAU(1282,15,Location.create(2949, 3623, 0),Location.create(2954, 3623, 0), Pair(Skills.CONSTRUCTION,42)),
BURTHORPE(1282,14,Location.create(2941, 3563, 0),Location.create(2934, 3563, 0),Pair(Skills.SMITHING,56)),
GWD(1283,27,null,null,Pair(Skills.CRAFTING,60)),
TEMPLE(1287,29,Location.create(2949, 3835, 0),Location.create(2956, 3835, 0),Pair(Skills.SMITHING,64));
private enum class RepairClimbObject(val varbit: Int, val destinationUp: Location?, val destinationDown: Location?, val levelRequirement: Pair<Int,Int>?){
DEATH_PLATEAU(5161,Location.create(2949, 3623, 0),Location.create(2954, 3623, 0), Pair(Skills.CONSTRUCTION,42)),
BURTHORPE(5160,Location.create(2941, 3563, 0),Location.create(2934, 3563, 0),Pair(Skills.SMITHING,56)),
GWD(5163,null,null,Pair(Skills.CRAFTING,60)),
TEMPLE(5164,Location.create(2949, 3835, 0),Location.create(2956, 3835, 0),Pair(Skills.SMITHING,64));
fun getOtherLocation(player: Player): Location?{
if(player.location == destinationDown) return destinationUp
@@ -124,7 +124,7 @@ class AFURepairClimbHandler : InteractionListener {
}
fun isRepaired(player: Player): Boolean{
return player.varpManager.get(varp).getVarbit(offset) == 1
return getVarbit(player, varbit) == 1
}
}
@@ -138,4 +138,4 @@ class AFURepairClimbHandler : InteractionListener {
}
}
}
}
@@ -33,7 +33,7 @@ import core.tools.RandomFunction;
import core.game.world.GameWorld;
import core.plugin.ClassScanner;
import static core.api.ContentAPIKt.getWorldTicks;
import static core.api.ContentAPIKt.*;
/**
* Handles the barrows activity plugin.
@@ -137,8 +137,8 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
}
}
Player player = (Player) e;
if ((player.getConfigManager().get(1270) == 1) != tunnel) {
player.getConfigManager().set(1270, tunnel ? 3 : 0, true);//@emp: proper value seems to be 3, val of 1 makes corridors black
if ((getVarp(player, 1270) == 1) != tunnel) {
setVarp(player, 1270, tunnel ? 3 : 0, true);
}
}
}
@@ -149,8 +149,8 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
Player player = (Player) e;
PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 2));
player.getInterfaceManager().openOverlay(OVERLAY);
player.getConfigManager().set(0, 1);
if (player.getConfigManager().get(452) == 0) {
setVarp(player, 0, 1);
if (getVarp(player, 452) == 0) {
shuffleCatacombs(player);
}
sendConfiguration(player);
@@ -212,7 +212,7 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
public static void shuffleCatacombs(Player player) {
int value = TUNNEL_CONFIGS[RandomFunction.random(TUNNEL_CONFIGS.length)];
value |= 1 << (6 + RandomFunction.random(4));
player.getConfigManager().set(452, value);
setVarp(player, 452, value);
}
@Override
@@ -330,7 +330,7 @@ public final class BarrowsActivityPlugin extends ActivityPlugin {
if (player.getAttribute("barrow:opened_chest", false)) {
config |= 1 << 16;
}
player.getConfigManager().set(453, config);
setVarp(player, 453, config);
}
@Override
@@ -7,6 +7,8 @@ import core.game.world.map.Location;
import core.plugin.PluginManifest;
import core.plugin.PluginType;
import static core.api.ContentAPIKt.*;
/**
* The tunnel entrance dialogue handling plugin.
* @author Emperor
@@ -57,7 +59,7 @@ public final class TunnelEntranceDialogue extends DialoguePlugin {
case 1:
int offsetX = 0;
int offsetY = 0;
int configValue = player.getConfigManager().get(452);
int configValue = getVarp(player, 452);
if ((configValue & (1 << 7)) != 0) {
offsetX = 34;
offsetY = 34;
@@ -145,7 +145,7 @@ object BlastFurnace {
var oreAmount = player.blastOre.itemCount()
var totalAmount = barsAmount + oreAmount
if (barsHot) {
player.varpManager.get(543).setVarbit(8, 2).send(player)
setVarbit(player, 936, 2)
}else if (makeBars && playerOre.isNotEmpty() && barsAmountFree > 0 && totalAmount < 56 && player.getAttribute("OreInPot",false) == true) {
playerOre.forEach { oreID ->
playerCoal = player.blastCoal.getAmount(Items.COAL_453)
@@ -178,7 +178,7 @@ object BlastFurnace {
}
}
if(removed) {
player.varpManager.get(543).setVarbit(8, 1).send(player)
setVarbit(player, 936, 1)
barsHot = true
player.blastBars.add(bar.product)
var experience = bar.experience
@@ -207,11 +207,11 @@ object BlastFurnace {
}
}
if (coalToAdd < 0){
player.varpManager.get(543).setVarbit(12, 0).send(player)
} else player.varpManager.get(543).setVarbit(12, coalToAdd).send(player)
setVarbit(player, 940, 0)
} else setVarbit(player, 940, coalToAdd)
}
else if(playerOre.isEmpty()) {
player.varpManager.get(543).setVarbit(12,0).send(player)
setVarbit(player, 940, 0)
}
if(playerOre.isEmpty() && player.getAttribute("OreInPot",false)){
player.removeAttribute("OreInPot")
@@ -306,56 +306,4 @@ object BlastFurnace {
replaceScenery(cogs2!!, 9104, -1)
}
}
/**Hi kids!
* Do you like Varbits?
* Wanna see me stick Nine Binary Bytes, through each one of my eyelids?
* Wanna look at how many bars you have left inside the furnace???
fun interfaceManager() {
var playerBars = listOf<Item>()
var bronzeBit = 1
var ironBit = 1
var steelBit = 1
var mithrilBit = 1
var adamantiteBit = 1
var runiteBit = 1
var silverBit = 1
var goldBit = 1
var barTotal = 0
blastFurnacePlayerList.forEach { player ->
playerBars = player.blastBars.toArray().filterNotNull()
var barAmount = player.blastBars.toArray().filterNotNull().count()
var updateInterface = true
if (playerBars.isNotEmpty() && updateInterface) {
playerBars.forEach { barItem ->
when (barItem.id) {
Items.BRONZE_BAR_2349 -> player.varpManager.get(545).setVarbit(0, bronzeBit++).send(player)
Items.IRON_BAR_2351 -> player.varpManager.get(545).setVarbit(8, ironBit++).send(player)
Items.STEEL_BAR_2353 -> player.varpManager.get(545).setVarbit(16, steelBit++).send(player)
Items.MITHRIL_BAR_2359 -> player.varpManager.get(545).setVarbit(24, mithrilBit++).send(player)
Items.ADAMANTITE_BAR_2361 -> player.varpManager.get(546).setVarbit(0, adamantiteBit++).send(player)
Items.RUNITE_BAR_2363 -> player.varpManager.get(546).setVarbit(8, runiteBit++).send(player)
Items.SILVER_BAR_2355 -> player.varpManager.get(546).setVarbit(24, silverBit++).send(player)
Items.GOLD_BAR_2357 -> player.varpManager.get(546).setVarbit(16, goldBit++).send(player)
}
}
}
if (barTotal > barAmount) {
playerBars.forEach { barItem ->
when (barItem.id) {
Items.BRONZE_BAR_2349 -> player.varpManager.get(545).setVarbit(0, bronzeBit--).send(player)
Items.IRON_BAR_2351 -> player.varpManager.get(545).setVarbit(8, ironBit--).send(player)
Items.STEEL_BAR_2353 -> player.varpManager.get(545).setVarbit(16, steelBit--).send(player)
Items.MITHRIL_BAR_2359 -> player.varpManager.get(545).setVarbit(24, mithrilBit--).send(player)
Items.ADAMANTITE_BAR_2361 -> player.varpManager.get(546).setVarbit(0, adamantiteBit--).send(player)
Items.RUNITE_BAR_2363 -> player.varpManager.get(546).setVarbit(8, runiteBit--).send(player)
Items.SILVER_BAR_2355 -> player.varpManager.get(546).setVarbit(24, silverBit--).send(player)
Items.GOLD_BAR_2357 -> player.varpManager.get(546).setVarbit(16, goldBit--).send(player)
}
}
}
}
}
*/
}
@@ -1,7 +1,6 @@
package content.minigame.blastfurnace
import core.api.addItem
import core.api.freeSlots
import core.api.*
import core.game.interaction.InterfaceListener
import core.game.node.item.Item
import org.rs09.consts.Components
@@ -28,19 +27,32 @@ class BlastFurnaceInterfaceListener : InterfaceListener {
var silverBit = 1
var goldBit = 1
var barTotal = 0
val barCounts = HashMap<Int, Int>()
if (playerBars.isEmpty()) {
return@onOpen true
} else {
playerBars.forEach { barItem ->
when (barItem.id) {
Items.BRONZE_BAR_2349 -> player.varpManager.get(545).setVarbit(0, bronzeBit++).send(player)
Items.IRON_BAR_2351 -> player.varpManager.get(545).setVarbit(8, ironBit++).send(player)
Items.STEEL_BAR_2353 -> player.varpManager.get(545).setVarbit(16, steelBit++).send(player)
Items.MITHRIL_BAR_2359 -> player.varpManager.get(545).setVarbit(24, mithrilBit++).send(player)
Items.ADAMANTITE_BAR_2361 -> player.varpManager.get(546).setVarbit(0, adamantiteBit++).send(player)
Items.RUNITE_BAR_2363 -> player.varpManager.get(546).setVarbit(8, runiteBit++).send(player)
Items.SILVER_BAR_2355 -> player.varpManager.get(546).setVarbit(24, silverBit++).send(player)
Items.GOLD_BAR_2357 -> player.varpManager.get(546).setVarbit(16, goldBit++).send(player)
Items.BRONZE_BAR_2349 -> barCounts[barItem.id] = bronzeBit++
Items.IRON_BAR_2351 -> barCounts[barItem.id] = ironBit++
Items.STEEL_BAR_2353 -> barCounts[barItem.id] = steelBit++
Items.MITHRIL_BAR_2359 -> barCounts[barItem.id] = mithrilBit++
Items.ADAMANTITE_BAR_2361 -> barCounts[barItem.id] = adamantiteBit++
Items.RUNITE_BAR_2363 -> barCounts[barItem.id] = runiteBit++
Items.SILVER_BAR_2355 -> barCounts[barItem.id] = silverBit++
Items.GOLD_BAR_2357 -> barCounts[barItem.id] = goldBit++
}
}
for ((id, amount) in barCounts) {
when (id) {
Items.BRONZE_BAR_2349 -> setVarbit(player, 941, amount)
Items.IRON_BAR_2351 -> setVarbit(player, 942, amount)
Items.STEEL_BAR_2353 -> setVarbit(player, 943, amount)
Items.MITHRIL_BAR_2359 -> setVarbit(player, 944, amount)
Items.ADAMANTITE_BAR_2361 -> setVarbit(player, 945, amount)
Items.RUNITE_BAR_2363 -> setVarbit(player, 946, amount)
Items.SILVER_BAR_2355 -> setVarbit(player, 948, amount)
Items.GOLD_BAR_2357 -> setVarbit(player, 947, amount)
}
}
return@onOpen true
@@ -50,7 +62,7 @@ class BlastFurnaceInterfaceListener : InterfaceListener {
on(Components.BLAST_FURNACE_BAR_STOCK_28){ player, _, _, buttonID, _, _ ->
val bar = BFBars.forId(buttonID) ?: return@on false
val isAll = buttonID == bar.allButtonId
val playerAmt = player.varpManager.get(bar.varpIndex).getVarbitValue(bar.offset) ?: 0
val playerAmt = getVarbit(player, bar.varbit)
if(playerAmt == 0) return@on true
var amtToWithdraw = if(isAll) playerAmt else 1
@@ -70,28 +82,28 @@ class BlastFurnaceInterfaceListener : InterfaceListener {
BFBars.GOLD -> Items.GOLD_BAR_2357
}
player.varpManager.get(bar.varpIndex).setVarbit(bar.offset, playerAmt - amtToWithdraw).send(player)
setVarbit(player, bar.varbit, playerAmt - amtToWithdraw)
while(amtToWithdraw > 0){
if(addItem(player, barItemId, 1) && player.blastBars.remove(Item(barItemId))) {
amtToWithdraw--
} else break
}
if(player.blastBars.isEmpty) player.varpManager.get(543).clear().send(player)
if(player.blastBars.isEmpty)
setVarp(player, 543, 0)
return@on true
}
}
internal enum class BFBars(val buttonId: Int, val varpIndex: Int, val offset: Int, val allButtonId: Int = buttonId + 2){
BRONZE(43, 545, 0, 44),
IRON(40, 545, 8, 41),
STEEL(36, 545, 16),
MITHRIL(33, 545, 24),
ADAMANT(30, 546, 0),
RUNITE(27, 546, 8),
SILVER(24, 546, 24),
GOLD(21, 546, 16);
internal enum class BFBars(val buttonId: Int, val varbit: Int, val allButtonId: Int = buttonId + 2){
BRONZE(43, 941, 44),
IRON(40, 942, 41),
STEEL(36, 943),
MITHRIL(33, 944),
ADAMANT(30, 945),
RUNITE(27, 946),
SILVER(24, 948),
GOLD(21, 947);
companion object {
private val idMap = values().associateBy { it.buttonId }
@@ -102,4 +114,4 @@ class BlastFurnaceInterfaceListener : InterfaceListener {
}
}
}
}
@@ -297,7 +297,7 @@ class BlastFurnaceListeners : InteractionListener {
/**This handles taking bars from the dispenser*/
on(dispenser,SCENERY,"search", "take"){ player, _ ->
if(player.varpManager.get(543).getVarbitValue(8) == 0 || player.varpManager.get(543).getVarbitValue(8) == 3) {
if (getVarbit(player, 936) == 0 || getVarbit(player, 936) == 3) {
player.interfaceManager.openComponent(28)
}
return@on true
@@ -306,20 +306,20 @@ class BlastFurnaceListeners : InteractionListener {
/**Handles using a bucket of water on the bar dispenser*/
onUseWith(SCENERY,Items.BUCKET_OF_WATER_1929,*dispenser){ player, _, _ ->
when {
player.varpManager.get(543).getVarbitValue(8) == 2 -> {
when (getVarbit(player, 936)) {
2 -> {
removeItem(player,Items.BUCKET_OF_WATER_1929,Container.INVENTORY)
addItem(player,Items.BUCKET_1925)
BlastFurnace.barsHot = false
player.varpManager.get(543).setVarbit(8,3).send(player)
setVarbit(player, 936, 3)
}
player.varpManager.get(543).getVarbitValue(8) == 0 -> {
0 -> {
sendDialogue(player,"There's nothing to cool off!")
}
player.varpManager.get(543).getVarbitValue(8) == 1 -> {
1 -> {
sendDialogue(player,"I should wait until the machine is finished")
}
player.varpManager.get(543).getVarbitValue(8) == 3 -> {
3 -> {
sendDialogue(player,"These bars have already cooled off!")
}
}
@@ -1,5 +1,6 @@
package content.minigame.bountyhunter;
import core.api.*;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
@@ -33,6 +34,8 @@ import core.tools.RandomFunction;
import java.util.*;
import static core.api.ContentAPIKt.*;
/**
* Handles the Bounty hunter activity.
* @author Emperor
@@ -317,7 +320,7 @@ public final class BountyHunterActivity extends ActivityPlugin {
} else if (interfaceId == 271 && buttonId == 25) {
if (player.getAttribute("exit_penalty", 0) > GameWorld.getTicks()) {
player.getPacketDispatch().sendMessage("You can't use the protect item prayer until your penalty has passed.");
player.getConfigManager().send(PrayerType.PROTECT_ITEMS.getConfig(), 0);
setVarp(player, PrayerType.PROTECT_ITEMS.getConfig(), 0);
return true;
}
}
@@ -1,4 +1,4 @@
import core.api.setVarbit
import core.api.*
import core.game.node.entity.player.Player
/**
@@ -8,7 +8,7 @@ import core.game.node.entity.player.Player
object CastleWarsOverlay {
@JvmStatic
fun sendLobbyUpdate(player: Player, bothTeamsHavePlayers: Boolean, gameStartMinutes: Int) {
player.varpManager.get(380).setVarbit(0, if (bothTeamsHavePlayers) gameStartMinutes else 0).send(player)
setVarp(player, 380, if (bothTeamsHavePlayers) gameStartMinutes else 0)
}
@JvmStatic
@@ -15,7 +15,6 @@ import core.game.node.entity.Entity;
import core.game.node.entity.combat.CombatStyle;
import core.game.node.entity.impl.PulseManager;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.ConfigurationManager.Configuration;
import core.game.node.scenery.Scenery;
import core.game.node.scenery.SceneryBuilder;
import core.game.system.communication.ClanEntry;
@@ -34,6 +33,8 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.*;
/**
* Handles the clan wars activity.
* @author Emperor
@@ -239,7 +240,7 @@ public final class ClanWarsActivityPlugin extends ActivityPlugin {
if (pulse.getTicksPassed() < 200) {
value |= (200 - pulse.getTicksPassed()) << 23;
}
p.getConfigManager().set(Configuration.CLAN_WAR_DATA, value);
setVarp(p, 1147, value);
p.getPacketDispatch().sendString(name, 265, 2);
}
@@ -4,6 +4,7 @@ import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Handles the challenge option for dueling.
@@ -32,7 +33,7 @@ public class ChallengeOptionPlugin extends OptionHandler {
player.getInterfaceManager().open(DuelArenaActivity.DUEL_TYPE_SELECT);
player.setAttribute("duel:staked", false);
player.setAttribute("duel:partner", other);
player.getConfigManager().set(283, 1 << 26);
setVarp(player, 283, 1 << 26);
return true;
}
@@ -19,6 +19,8 @@ import core.plugin.Initializable;
import core.plugin.ClassScanner;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.*;
/**
* Handles the Duel Arena activity.
* @author Emperor
@@ -76,7 +78,7 @@ public final class DuelArenaActivity extends ActivityPlugin {
Player player = (Player) e;
player.getInterfaceManager().openOverlay(OVERLAY);
player.getInteraction().set(CHALLENGE_OPTION);
player.getConfigManager().set(286, 0);
setVarp(player, 286, 0);
}
return super.enter(e);
}
@@ -7,6 +7,8 @@ import core.game.node.entity.player.Player;
import core.game.world.GameWorld;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Handles the duel arena components.
* @author Vexia
@@ -60,7 +62,7 @@ public class DuelComponentPlugin extends ComponentPlugin {
return false;
}
player.setAttribute("duel:staked", staked);
player.getConfigManager().set(283, (staked ? 2 : 1) << 26);
setVarp(player, 283, (staked ? 2 : 1) << 26);
break;
}
return true;
@@ -230,7 +230,7 @@ public final class DuelSession extends ComponentPlugin {
* @param player The player.
*/
private void openRules(Player player, Player opponent) {
player.getConfigManager().set(286, 0);
setVarp(player, 286, 0);
if (staked) {
StakeContainer container = new StakeContainer(player, this);
if (player == this.player) {
@@ -249,7 +249,7 @@ public final class DuelSession extends ComponentPlugin {
player.getPacketDispatch().sendString(Integer.toString(opponent.getProperties().getCurrentCombatLevel()), 637, 18);
player.getPacketDispatch().sendString("", 637, 45);
}
player.getConfigManager().set(286, 0);
setVarp(player, 286, 0);
}
/**
@@ -495,8 +495,8 @@ public final class DuelSession extends ComponentPlugin {
value |= 1 << rules[i].getConfigIndex();
}
}
player.getConfigManager().set(286, value);
other.getConfigManager().set(286, value);
setVarp(player, 286, value);
setVarp(other, 286, value);
}
/**
@@ -1024,4 +1024,4 @@ public final class DuelSession extends ComponentPlugin {
public void setFightState(int fightState) {
this.fightState = fightState;
}
}
}
@@ -1,6 +1,7 @@
package content.minigame.fishingtrawler
import core.game.node.entity.player.Player
import core.api.*
private const val configIndex = 391
private const val interfaceID = 366
@@ -17,10 +18,10 @@ private const val timeChild = 30
object FishingTrawlerOverlay {
@JvmStatic
fun sendUpdate(player: Player, waterPercent: Int, NetRipped: Boolean, fishCaught: Int, timeLeft: Int){
player.configManager.set(configIndex,waterPercent)
setVarp(player, configIndex, waterPercent)
player.packetDispatch.sendInterfaceConfig(interfaceID,if(NetRipped) netRippedChild else netOkayChild, false)
player.packetDispatch.sendInterfaceConfig(interfaceID,if(NetRipped) netOkayChild else netRippedChild, true)
player.packetDispatch.sendString("${if(fishCaught > 0) fishCaught else "Nothing"}", interfaceID, fishChild)
player.packetDispatch.sendString("$timeLeft Minutes", interfaceID, timeChild)
}
}
}
@@ -6,7 +6,6 @@ import core.game.component.Component;
import core.game.dialogue.FacialExpression;
import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.ConfigurationManager.Configuration;
import core.game.node.scenery.Scenery;
import core.game.world.map.Location;
import core.game.world.map.Point;
@@ -15,6 +14,7 @@ import core.game.world.map.build.DynamicRegion;
import core.tools.RandomFunction;
import static content.minigame.pestcontrol.PestControlActivityPlugin.MAX_TEAM_SIZE;
import static core.api.ContentAPIKt.*;
/**
* Represents a pest control session.
@@ -166,7 +166,7 @@ public final class PestControlSession {
public void sendConfig(int value) {
for (Player p : region.getPlanes()[0].getPlayers()) {
if (p.isActive()) {
p.getConfigManager().set(Configuration.PC_PORTALS, value);
setVarp(p, 719, value);
}
}
}
@@ -264,7 +264,7 @@ public final class PestControlSession {
Random r = RandomFunction.RANDOM;
Location l = region.getBaseLocation();
p.getProperties().setTeleportLocation(l.transform(32 + r.nextInt(4), 49 + r.nextInt(6), 0));
p.getConfigManager().set(Configuration.PC_PORTALS, 0);
setVarp(p, 1147, 0);
p.getDialogueInterpreter().sendDialogues(3781, FacialExpression.FURIOUS, "You must defend the Void Knight while the portals are", "unsummoned. The ritual takes twenty minutes though,", "so you can help out by destroying them yourselves!", "Now GO GO GO!");
}
@@ -386,4 +386,4 @@ public final class PestControlSession {
return barricades;
}
}
}
@@ -13,6 +13,8 @@ import core.plugin.ClassScanner;
import content.minigame.puropuro.ElnockInquisitorDialogue.ElnockExchangeInterfaceHandler.ElnockExchange;
import static core.api.ContentAPIKt.*;
/**
* Handles the elnock inquisitor dialogue.
* @author Vexia
@@ -225,7 +227,7 @@ public final class ElnockInquisitorDialogue extends DialoguePlugin {
public boolean handle(Player player, Component component, int opcode, int button, int slot, int itemId) {
ElnockExchange exchange = player.getAttribute("exchange", null);
if (button == 34) {
player.getConfigManager().set(1018, 0);
setVarp(player, 1018, 0);
if (exchange == null) {
player.sendMessage("Making a selection before confirming.");
return true;
@@ -254,7 +256,7 @@ public final class ElnockInquisitorDialogue extends DialoguePlugin {
exchange = ElnockExchange.forButton(button);
if (exchange != null) {
player.setAttribute("exchange", exchange);
player.getConfigManager().set(1018, exchange.getConfigValue());
setVarp(player, 1018, exchange.getConfigValue());
}
return true;
}
@@ -144,13 +144,9 @@ object PlunderUtils {
fun resetObjectVarbits(player: Player)
{
var varp = player.varpManager.get(821)
varp.clear()
varp.send(player)
varp = player.varpManager.get(820)
varp.clear()
varp.send(player)
PlunderData.doorVarbits.forEach { player.varpManager.setVarbit(it, 0) }
setVarp(player, 821, 0)
setVarp(player, 820, 0)
PlunderData.doorVarbits.forEach { setVarbit(player, it, 0) }
}
fun openOverlay(player: Player)
@@ -161,14 +157,14 @@ object PlunderUtils {
fun updateOverlay(player: Player)
{
player.varpManager.setVarbit(2375, 500 - (PlunderData.timeLeft[player] ?: 0))
player.varpManager.setVarbit(2376, 11 + (getRoom(player)!!.room * 10))
player.varpManager.setVarbit(2377, getRoom(player)!!.room)
setVarbit(player, 2375, 500 - (PlunderData.timeLeft[player] ?: 0))
setVarbit(player, 2376, 11 + (getRoom(player)!!.room * 10))
setVarbit(player, 2377, getRoom(player)!!.room)
}
fun resetOverlay(player: Player)
{
player.varpManager.setVarbit(2375, 0)
setVarbit(player, 2375, 0)
player.packetDispatch.resetInterface(Components.NTK_OVERLAY_428)
player.interfaceManager.closeOverlay()
}
@@ -304,4 +300,4 @@ object PlunderUtils {
val room = getRoom(player)!!.room
return RandomFunction.random(level) > (room * if(charmed) 2 else 4)
}
}
}
@@ -124,7 +124,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
sendMessage(player, "You successfully loot the urn.")
rewardXP(player, Skills.THIEVING, PlunderUtils.getUrnXp(player, false))
addItemOrDrop(player, PlunderUtils.rollArtifact(player, 1))
player.varpManager.setVarbit(node.asScenery().definition.varbitID, 1)
setVarbit(player, node.asScenery().definition.varbitID, 1)
}
}
return@on true
@@ -137,7 +137,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
lock(player, 1)
runTask(player, 1){
animate(player, URN_BIT)
player.varpManager.setVarbit(urn.definition.varbitID, 2)
setVarbit(player, urn.definition.varbitID, 2)
animateScenery(urn, SNAKE_URN_ANIM)
}
return@on true
@@ -153,7 +153,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
animate(player, CHARM_ANIM)
runTask(player, 1)
{
player.varpManager.setVarbit(node.asScenery().definition.varbitID, 3)
setVarbit(player, node.asScenery().definition.varbitID, 3)
sendMessage(player, "You charm the snake with your music.")
}
return@on true
@@ -176,7 +176,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
sendMessage(player, "You successfully loot the urn.")
addItemOrDrop(player, PlunderUtils.rollArtifact(player, 1))
rewardXP(player, Skills.THIEVING, PlunderUtils.getUrnXp(player, false) * 0.66)
player.varpManager.setVarbit(node.asScenery().definition.varbitID, 1)
setVarbit(player, node.asScenery().definition.varbitID, 1)
}
}
return@on true
@@ -199,7 +199,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
return false
animate(player, PUSH_LID_FINISH)
runTask(player, 3){
player.varpManager.setVarbit(node.asScenery().definition.varbitID, 1)
setVarbit(player, node.asScenery().definition.varbitID, 1)
rewardXP(player, Skills.STRENGTH, PlunderUtils.getSarcophagusXp(player))
if(RandomFunction.roll(25))
{
@@ -236,7 +236,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
if(!PlunderUtils.rollSceptre(player))
addItemOrDrop(player, PlunderUtils.rollArtifact(player, 3))
}
player.varpManager.setVarbit(node.asScenery().definition.varbitID, 1)
setVarbit(player, node.asScenery().definition.varbitID, 1)
}
return@on true
}
@@ -274,7 +274,7 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
PlunderUtils.resetObjectVarbits(player)
} else {
sendMessage(player, "The door leads to a dead end.")
player.varpManager.setVarbit(varbitId, 1)
setVarbit(player, varbitId, 1)
}
}
else
@@ -375,4 +375,4 @@ class PyramidPlunderMinigame : InteractionListener, TickListener, LogoutListener
PlunderUtils.openOverlay(player)
}
}
}
}
@@ -362,7 +362,7 @@ class Vinesweeper : InteractionListener, InterfaceListener, MapArea {
fun sendUpdatedPoints(player: Player) {
val points = player.getAttribute("vinesweeper:points", 0);
player.varpManager.get(1195).setVarbit(6, points).send(player)
setVarbit(player, 4449, points)
}
var SEED_LOCS: HashSet<Location> = HashSet()
@@ -26,6 +26,8 @@ import core.plugin.Plugin;
import core.plugin.ClassScanner;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.*;
/**
* Handles the Barrel room.
* @author Emperor
@@ -172,7 +174,7 @@ public final class BarrelRoom extends MapZone implements Plugin<Object> {
player.getEquipment().replace(null, EquipmentContainer.SLOT_HAT);
player.getAppearance().setAnimations();
player.getAppearance().sync();
player.getConfigManager().set(793, 0);
setVarp(player, 793, 0);
}
}
@@ -34,6 +34,8 @@ import core.plugin.ClassScanner;
import core.plugin.Initializable;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.setVarp;
/**
* The catapult room.
* @author Emperor
@@ -207,7 +209,7 @@ public final class CatapultRoom extends MapZone implements Plugin<Object> {
if (button >= 9 && button <= 12) {
CatapultAttack attack = CatapultAttack.values()[button - 9];
player.setAttribute("catapult_def", attack);
player.getConfigManager().set(788, (button - 8) % 4);
setVarp(player, 788, (button - 8) % 4);
return true;
}
return false;
@@ -21,6 +21,9 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.*;
/**
* Manages the droped party balloons.
* @author Vexia
@@ -83,7 +86,7 @@ public final class BalloonManager extends OptionHandler {
public boolean pulse() {
int realCount = --countdown - GameWorld.getTicks();
for (ChestViewer viewer : PartyRoomPlugin.getViewers().values()) {
viewer.getPlayer().getConfigManager().set(1135, realCount);
setVarp(viewer.getPlayer(), 1135, realCount);
}
if (--realCount - GameWorld.getTicks() <= 0) {
drop();
@@ -13,6 +13,9 @@ import core.net.packet.PacketRepository;
import core.net.packet.context.ContainerContext;
import core.net.packet.out.ContainerPacket;
import static core.api.ContentAPIKt.*;
/**
* A chest viewer.
* @author Vexia
@@ -69,7 +72,7 @@ public final class ChestViewer {
player.getPacketDispatch().sendRunScript(150, "IviiiIsssssssss", INV_OPTIONS);
player.getInterfaceManager().openSingleTab(new Component(648));
player.getInterfaceManager().open(new Component(647).setCloseEvent(new ChestCloseEvent()));
player.getConfigManager().set(1135, 0);
setVarp(player, 1135, 0);
update(0, null);
update(1, null);
return this;
@@ -27,6 +27,9 @@ import core.tools.RandomFunction;
import core.tools.StringUtils;
import core.game.dialogue.FacialExpression;
import static core.api.ContentAPIKt.*;
/**
* Represents the goblin diplomacy cutscene plugin.
* @author 'Vexia
@@ -364,7 +367,7 @@ public final class GDiplomacyCutscene extends CutscenePlugin {
player.setAttribute("/save:tlt-goblin-emotes",true);
player.getEmoteManager().unlock(Emotes.GOBLIN_BOW);
player.getEmoteManager().unlock(Emotes.GOBLIN_SALUTE);
player.varpManager.get(465).setVarbit(0,7).send(player);
setVarbit(player, 532, 7, true);
player.getQuestRepository().getQuest("Lost Tribe").setStage(player,44);
stage++;
break;
@@ -3,6 +3,8 @@ package content.region.asgarnia.goblinvillage.quest.goblindiplomacy;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import static core.api.ContentAPIKt.*;
/**
* Represents a grub foot.
* @author Vexia
@@ -43,7 +45,7 @@ public enum GrubFoot {
* @return the grub foot.
*/
public static GrubFoot forConfig(final Player player) {
int config = player.getConfigManager().get(62);
int config = getVarp(player, 62);
for (GrubFoot foot : values()) {
if (foot.getValue() == config) {
if (foot.ordinal() + 1 >= values().length) {
@@ -60,7 +62,7 @@ public enum GrubFoot {
* @param player the player.
*/
public void setConfig(Player player) {
player.getConfigManager().set(62, value);
setVarp(player, 62, value);
}
/**
@@ -75,7 +75,6 @@ public class WitchsPotion extends Quest {
@Override
public void finish(Player player) {
super.finish(player);
player.getConfigManager().set(101, player.getQuestRepository().getPoints());
player.getPacketDispatch().sendString("1 Quest Point", 277, 8 + 2);
player.getPacketDispatch().sendString("325 Magic XP", 277, 9 + 2);
player.getSkills().addExperience(Skills.MAGIC, 325);
@@ -9,6 +9,8 @@ import core.game.node.entity.player.link.quest.Quest;
import core.plugin.Initializable;
import core.game.node.item.Item;
import static core.api.ContentAPIKt.*;
/**
* Handles the PikkupstixDialogue dialogue.
* @author Vexia
@@ -125,7 +127,7 @@ public final class PikkupstixDialogue extends DialoguePlugin {
continue;
}
if (!player.getInventory().containsItem(i) && !player.getBank().containsItem(i) && player.getAttribute("taken-summoning-supplies") == null) {
if (i.getId() == 12528 && player.getConfigManager().get(1178) == (2 << 11)) {
if (i.getId() == 12528 && getVarp(player, 1178) == (2 << 11)) {
continue;
}
player.setAttribute("taken-summoning-supplies", true);
@@ -6,6 +6,9 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item;
import static core.api.ContentAPIKt.*;
/**
* Represents the demon slayer quest.
* @author 'Vexia
@@ -75,7 +78,7 @@ public class WolfWhistle extends Quest {
@Override
public int[] getConfig(Player player, int stage) {
int val = player.getConfigManager().get(1178);
int val = getVarp(player, 1178);
boolean open = val >= 4096;
boolean closed = val == 2048;
if (stage == 100) {
@@ -49,7 +49,6 @@ public class WitchsHouse extends Quest {
@Override
public void finish(Player player) {
super.finish(player);
player.getConfigManager().set(101, player.getQuestRepository().getPoints());
player.getPacketDispatch().sendString("4 Quest Points", 277, 8 + 2);
player.getPacketDispatch().sendString("6325 Hitpoints XP", 277, 9 + 2);
player.getSkills().addExperience(Skills.HITPOINTS, 6325);
@@ -11,6 +11,8 @@ import core.game.world.map.Location;
import core.plugin.Initializable;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Handles the dying knight dialogue.
* @author Emperor
@@ -64,7 +66,7 @@ public final class GWDKnightDialogue extends DialoguePlugin {
@Override
public boolean open(Object... args) {
npc = (NPC) args[0];
if ((player.getConfigManager().get(1048) & 16) != 0) {
if ((getVarp(player, 1048) & 16) != 0) {
player.getPacketDispatch().sendMessage("The knight has already died.");
return false;
}
@@ -91,7 +93,7 @@ public final class GWDKnightDialogue extends DialoguePlugin {
case 3:
if (player.getInventory().add(SCROLL)) {
interpreter.sendItemMessage(11734, "The knight hands you a scroll.");
player.varpManager.get(1048).setVarbit(4,1).send(player);
setVarbit(player, 3936, 1, true);
stage = 5;
} else {
stage = 4;
@@ -17,7 +17,7 @@ import core.game.world.map.RegionManager;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.hasRequirement;
import static core.api.ContentAPIKt.*;
/**
* Handles the entrance hole to the godwars dungeon.
@@ -44,15 +44,14 @@ public final class GodwarsEntranceHandler extends OptionHandler {
player.getPacketDispatch().sendMessage("You don't have a rope to tie around the pillar.");
return true;
}
player.varpManager.get(1048).setVarbit(0,1).send(player);
player.varpManager.flagSave(1048, false);
setVarbit(player, 3932, 1, true);
return true;
case 26341:
if (player.getSkills().getStaticLevel(Skills.AGILITY) < 15) {
player.getPacketDispatch().sendMessage("You need an Agility level of 15 to enter this.");
return true;
}
if (player.varpManager.get(1048).getVarbit(4) == 0) {
if (getVarbit(player, 3936) == 0) {
player.getDialogueInterpreter().sendDialogues(6201, FacialExpression.HALF_GUILTY, "Cough... Hey, over here.");
return true;
}
@@ -35,6 +35,7 @@ import core.plugin.Plugin;
import core.tools.StringUtils;
import core.game.node.entity.skill.Skills;
import static core.api.ContentAPIKt.*;
import static core.api.ContentAPIKt.log;
/**
@@ -89,7 +90,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin<Object> {
* @param setting The setting.
*/
public void setRopeSetting(Player player, int setting) {
player.varpManager.get(1048).setVarbit(setting,1).send(player);
setVarbit(player, setting == 1 ? 3933 : 3934, 1, true);
}
/**
@@ -290,7 +290,7 @@ public final class RugMerchantDialogue extends DialoguePlugin {
*/
public void travel(final RugDestination current, final Player player) {
player.lock();
player.getConfigManager().set(499, 0);
setVarp(player, 499, 0);
player.getImpactHandler().setDisabledTicks(GameWorld.getTicks() + 200);
player.getInterfaceManager().removeTabs(0,1,2,3,4,5,6,7,8,9,10,11,12,13);
player.getEquipment().replace(new Item(Items.MAGIC_CARPET_5614),EquipmentContainer.SLOT_WEAPON);
@@ -328,7 +328,7 @@ public final class RugMerchantDialogue extends DialoguePlugin {
player.faceLocation(getLocation());
break;
case 4:
player.getConfigManager().set(499, 1);
setVarp(player, 499, 1);
break;
case 200:
break;
@@ -339,7 +339,7 @@ public final class RugMerchantDialogue extends DialoguePlugin {
player.getImpactHandler().setDisabledTicks(0);
player.unlock();
player.animate(new Animation(-1));
player.getConfigManager().set(499, 0);
setVarp(player, 499, 0);
clearLogoutListener(player, "magic-carpet");
@@ -222,16 +222,14 @@ class TheGolemListeners : InteractionListener {
if(player.questRepository.getStage("The Golem") >= 100) {
clientStage = Math.max(clientStage, 10)
}
player.varpManager.get(437)
.setVarbit(0, clientStage)
.setVarbit(7, clayUsed)
.setVarbit(16, gemsTaken)
.setVarbit(17, statuetteTaken)
.setVarbit(10, rotation1)
.setVarbit(11, rotation2)
.setVarbit(12, rotation3)
.setVarbit(13, statuettePlaced * (rotation4 + 1))
.send(player)
setVarbit(player, 346, clientStage)
setVarbit(player, 348, clayUsed)
setVarbit(player, 354, gemsTaken)
setVarbit(player, 355, statuetteTaken)
setVarbit(player, 349, rotation1)
setVarbit(player, 350, rotation2)
setVarbit(player, 351, rotation3)
setVarbit(player, 352, statuettePlaced * (rotation4 + 1))
}
}
@@ -13,6 +13,8 @@ import core.game.world.map.zone.ZoneBorders;
import core.plugin.Initializable;
import core.plugin.ClassScanner;
import static core.api.ContentAPIKt.*;
/**
* The main type for the tourist trap quest.
* @author Aero
@@ -253,7 +255,7 @@ public final class TouristTrap extends Quest {
* @param player the player.
*/
public static void addConfig(final Player player, final int value) {
player.getConfigManager().set(CONFIG_ID, value, true);
setVarp(player, CONFIG_ID, value, true);
}
/**
@@ -38,6 +38,8 @@ import core.tools.RandomFunction;
import content.region.desert.quest.thetouristrap.TouristTrapPlugin.AnnaCartHandler.AnnaCartCutscene;
import content.region.desert.quest.thetouristrap.TouristTrapPlugin.BedabinAnvilHandler.AnnaWinchHandler;
import static core.api.ContentAPIKt.*;
/**
* Represents the plugin used to handle interactions for tourist trap.
*
@@ -429,7 +431,7 @@ public final class TouristTrapPlugin extends OptionHandler {
@Override
public boolean pulse() {
player.getPacketDispatch().sendMessage("You bend the bars back.");
player.getConfigManager().set(907, player.getConfigManager().get(907) + 1);
setVarp(player, 907, getVarp(player, 907) + 1);
return true;
}
});
@@ -10,6 +10,8 @@ import kotlin.Unit;
import core.game.world.GameWorld;
import core.game.world.map.Location;
import static core.api.ContentAPIKt.*;
/**
* Handles the jarvald dialogue.
* @author Vexia
@@ -131,7 +133,7 @@ public final class JarvaldDialogue extends DialoguePlugin {
stage++;
break;
case 31:
player.getConfigManager().set(520, 1 << 13, true);
setVarp(player, 520, 1 << 13, true);
end();
break;
case 32:
@@ -232,7 +234,7 @@ public final class JarvaldDialogue extends DialoguePlugin {
stage = 36;
return;
}
if (player.getConfigManager().get(520) == 0) {
if (getVarp(player, 520) == 0) {
npc("This should not concern you, outerlander.", "I am awaiting other Fremenniks to join me on an", "expedition to Waterbirth Island.");
stage = 21;
} else {
@@ -7,6 +7,7 @@ import core.game.world.map.zone.ZoneBorders
import core.game.world.map.zone.ZoneBuilder
import core.plugin.Initializable
import core.plugin.Plugin
import core.api.*
/**
* Handles the stone circle zone south of Ardougne.
@@ -33,15 +34,15 @@ class StoneCircleZone : MapZone("stone circle", true), Plugin<Any> {
override fun enter(e: Entity): Boolean {
if (e is Player) {
e.varpManager.get(1184).setVarbit(28, 1).send(e)
setVarbit(e, 4833, 1)
}
return super.enter(e)
}
override fun leave(e: Entity, logout: Boolean): Boolean {
if (!logout && e is Player) {
e.varpManager.get(1184).setVarbit(28, 0).send(e)
setVarbit(e, 4833, 0)
}
return super.leave(e, logout)
}
}
}
@@ -5,6 +5,8 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item;
import static core.api.ContentAPIKt.*;
/**
* Handles captains lawgof dialogue.
* @author Vexia
@@ -95,7 +97,7 @@ public class CaptainLawgofDialogue extends DialoguePlugin {
case 10:
switch (stage) {
case 0:
if (player.getConfigManager().get(1) == 2016) {
if (DwarfCannon.allRailsFixed(player)) {
npc("Well done, trooper! The goblins seems to have stopped", "getting in. I think you've done the job!");
stage = 105;
break;
@@ -182,7 +184,7 @@ public class CaptainLawgofDialogue extends DialoguePlugin {
stage++;
break;
case 112:
player.getConfigManager().set(0, 3, true);
setVarp(player, 0, 3, true);
quest.setStage(player, 20);
end();
break;
@@ -236,7 +238,7 @@ public class CaptainLawgofDialogue extends DialoguePlugin {
break;
case 10:
end();
player.getConfigManager().set(0, 5, true);
setVarp(player, 0, 5, true);
player.getInventory().remove(DwarfCannon.DWARF_REMAINS);
quest.setStage(player, 30);
break;
@@ -293,7 +295,7 @@ public class CaptainLawgofDialogue extends DialoguePlugin {
break;
case 8:
player.getInventory().add(DwarfCannon.TOOL_KIT, player);
player.getConfigManager().set(0, 7);
setVarp(player, 0, 7);
quest.setStage(player, 50);
end();
break;
@@ -393,7 +395,7 @@ public class CaptainLawgofDialogue extends DialoguePlugin {
case 13:
player.getInventory().remove(DwarfCannon.TOOL_KIT);
player.sendMessage("You give the toolkit back to Captain Lawgof.");
player.getConfigManager().set(0, 9, true);
setVarp(player, 0, 9, true);
quest.setStage(player, 70);
end();
break;
@@ -7,6 +7,8 @@ import core.plugin.Initializable;
import core.plugin.ClassScanner;
import core.game.node.entity.skill.Skills;
import static core.api.ContentAPIKt.*;
/**
* Represents the dwarf cannon quest.
* @author Vexia
@@ -38,6 +40,7 @@ public class DwarfCannon extends Quest {
* The mould item.
*/
public static final Item MOULD = new Item(4);
public static int[] railVarbits = new int[] { 2240, 2241, 2242, 2243, 2244, 2245 };
/**
* Constructs a new {@Code DwarfCannon} {@Code Object}
@@ -64,7 +67,7 @@ public class DwarfCannon extends Quest {
line(player, "<blue>I can start this quest by speaking to <red>Lawgof the Dwarven<n><red>Captain of the Black Watch <blue>, he is defending an area<n><red>North-west of the Fishing Guild <blue>against <red>goblin <blue>attack.", 11);
break;
case 10:
line(player, "<str>I have spoken to Captain Lawgof, he recruited me into the<n><str>Black Guard and asked me to help the dwarves.<n><n>" + (player.getConfigManager().get(1) == 2016 ? "<str>I have repaired all the broken railings,<n><blue>I should report back to <red>Captain Lawgof." : "<blue>My first task is to <red>fix the broken railings<n><blue>in the dwarves defensive perimeter."), 11);
line(player, "<str>I have spoken to Captain Lawgof, he recruited me into the<n><str>Black Guard and asked me to help the dwarves.<n><n>" + (allRailsFixed(player) ? "<str>I have repaired all the broken railings,<n><blue>I should report back to <red>Captain Lawgof." : "<blue>My first task is to <red>fix the broken railings<n><blue>in the dwarves defensive perimeter."), 11);
break;
case 20:
line(player, "<str>I have spoken to Captain Lawgof, he recruited me into the<n><str>Black Guard and asked me to help the dwarves.<n><n>" + (player.hasItem(DWARF_REMAINS) ? "<str>I went to the watchtower where I found the remains of<n><str>Gilob.<n><blue>I should take them back to <red>Captain Lawgof." : "<str>I have repaired all the broken railings,<n><blue>Captain Lawgof has asked me to check up on his guards at<n><red>the watchtower <blue>to the South of this camp."), 11);
@@ -96,7 +99,7 @@ public class DwarfCannon extends Quest {
@Override
public void start(Player player) {
super.start(player);
player.getConfigManager().set(0, 1);
setVarp(player, 0, 1);
}
@Override
@@ -117,9 +120,16 @@ public class DwarfCannon extends Quest {
if (stage >= 100) {
val = 11;
} else if (stage > 0 && stage < 100) {
val = player.getConfigManager().get(0);
val = getVarp(player, 0);
}
return new int[] { 0, val };
}
public static boolean allRailsFixed (Player player) {
for (int i = 0; i < 6; i++) {
if (getVarbit(player, railVarbits[i]) != 1)
return false;
}
return true;
}
}
@@ -24,8 +24,9 @@ import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import core.tools.RandomFunction;
import core.game.node.scenery.Scenery;
import static core.api.ContentAPIKt.log;
import static core.api.ContentAPIKt.*;
/**
* Handles the dwarf cannon quest interactions.
@@ -65,8 +66,8 @@ public class DwarfCannonPlugin extends OptionHandler {
player.getDialogueInterpreter().sendDialogues(player, null, "This should work nicely now that I've fixed it.");
return true;
}
player.getConfigManager().set(1, 2041, true);
player.getConfigManager().set(0, 8, true);
//setVarp(player, 1, 2041, true);
setVarp(player, 0, 8, true);
player.getQuestRepository().getQuest(DwarfCannon.NAME).setStage(player, 60);
player.sendMessage("Well done! You've fixed the cannon! Better go and tell Captain Lawgof.");
/*
@@ -123,6 +124,7 @@ public class DwarfCannonPlugin extends OptionHandler {
case 18:
case 19:
case 20:
int index = 15 - node.getId();
final int shift = 10 - (20 - node.getId());
player.faceLocation(node.getLocation());
player.getDialogueInterpreter().sendDialogue("The railing is broken and needs to be replaced.");
@@ -167,8 +169,8 @@ public class DwarfCannonPlugin extends OptionHandler {
}
player.getInventory().remove(new Item(14));
player.sendMessage("The railing is now fixed.");
player.getConfigManager().set(1, player.getConfigManager().get(1) + (1 << shift), true);
if (player.getConfigManager().get(1) == 2016) {
setVarbit(player, ((Scenery) node).getDefinition().getVarbitID(), 1, true);
if (DwarfCannon.allRailsFixed(player)) {
player.getDialogueInterpreter().sendDialogues(player, null, "I've fixed all these railings now.");
}
return true;
@@ -193,7 +195,7 @@ public class DwarfCannonPlugin extends OptionHandler {
if (!player.getInventory().hasSpaceFor(DwarfCannon.DWARF_REMAINS)) {
return;
}
player.getConfigManager().set(0, 4);
setVarp(player, 0, 4, true);
player.getInventory().add(DwarfCannon.DWARF_REMAINS);
}
@@ -205,13 +207,14 @@ public class DwarfCannonPlugin extends OptionHandler {
return true;
}
quest.setStage(player, 40);
player.getConfigManager().set(0, 6, true);
setVarp(player, 0, 6, true);
spawnLollk(player);
break;
}
return true;
}
/**
* Spawns the lollk npc.
* @param player the player.
@@ -303,8 +306,9 @@ public class DwarfCannonPlugin extends OptionHandler {
part.interact(player, this.tool, toggled[part.ordinal()]);
if (toggled[0] && toggled[1] && toggled[2]) {
player.lock(5);
player.getConfigManager().set(1, 2041, true);
player.getConfigManager().set(0, 8, true);
//setVarp(player, 1, 2041, true);
//setVarp(player, 0, 8, true);
player.getQuestRepository().getQuest(DwarfCannon.NAME).setStage(player, 60);
player.sendMessage("Well done! You've fixed the cannon! Better go and tell Captain Lawgof.");
GameWorld.getPulser().submit(new Pulse(5, player) {
@@ -315,7 +319,7 @@ public class DwarfCannonPlugin extends OptionHandler {
}
});
}
player.sendMessage("Interacting with a part. Toggled=" + toggled[part.ordinal()] + ", configVal=" + player.getConfigManager().get(1) + ".");
//player.sendMessage("Interacting with a part. Toggled=" + toggled[part.ordinal()] + ", configVal=" + player.getConfigManager().get(1) + ".");
return true;
}
@@ -358,7 +362,7 @@ public class DwarfCannonPlugin extends OptionHandler {
* @param player the player.
*/
public Tool select(Player player) {
player.getConfigManager().set(1, configValue);
//setVarp(player, 1, configValue);
return this;
}
@@ -436,7 +440,7 @@ public class DwarfCannonPlugin extends OptionHandler {
* @param toggled if toggled on.
*/
public void interact(Player player, Tool tool, boolean toggled) {
player.getConfigManager().set(1, toggled ? getConfigValue() : tool.getConfigValue());
//setVarp(player, 1, toggled ? getConfigValue() : tool.getConfigValue());
}
/**
@@ -6,6 +6,8 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.quest.Quest;
import core.game.node.item.Item;
import static core.api.ContentAPIKt.*;
/**
* Handles captains lawgof dialogue.
* @author Vexia
@@ -93,7 +95,7 @@ public class NulodionDialogue extends DialoguePlugin {
stage++;
break;
case 7:
player.getConfigManager().set(0, 10);
setVarp(player, 0, 10);
quest.setStage(player, 80);
player.sendMessage("The Cannon Engineer gives you some notes and a mould.");
player.getInventory().add(DwarfCannon.NULODION_NOTES, player);
@@ -62,7 +62,6 @@ public class WaterFall extends Quest {
public void finish(Player player) {
super.finish(player);
player.getQuestRepository().syncronizeTab(player);
player.getConfigManager().set(101, player.getQuestRepository().getPoints());
player.getPacketDispatch().sendString("1 Quest Point", 277, 8+ 2);
player.getPacketDispatch().sendString("13,750 Strength XP", 277, 9+ 2);
@@ -34,6 +34,8 @@ import core.game.world.map.RegionManager;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Represents the plugin used for the ranging guild.
*
@@ -1115,9 +1117,9 @@ public final class RangingGuildPlugin extends OptionHandler {
private void showInterface(int points, int arrowsLeft, int target, String msg) {
player.getInterfaceManager().openComponent(325);
player.getConfigManager().set(156, 11 - arrowsLeft);
player.getConfigManager().set(157, points);
player.getConfigManager().set(158, target);
setVarp(player, 156, 11 - arrowsLeft);
setVarp(player, 157, points);
setVarp(player, 158, target);
player.getPacketDispatch().sendString(msg, 325, 32);
}
@@ -334,7 +334,7 @@ class EWListeners : InteractionListener {
sendMessage(player, "You empty the lava into the furnace.")
}
2 -> {
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, FURNACE_STATE, ENABLED, true)
setVarbit(player, FURNACE_STATE, ENABLED, true)
sendMessage(player, "The furnace bursts to life.")
return true
}
@@ -469,7 +469,7 @@ class EWListeners : InteractionListener {
sendMessage(player, "You turn the handle.")
}
3 -> {
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, offset, enabled, true)
setVarbit(player, offset, enabled, true)
return true
}
}
@@ -491,8 +491,8 @@ class EWListeners : InteractionListener {
if (EWUtils.waterWheelEnabled(player)) {
playAudio(player, pullLeverDisabledSFX)
sendMessage(player, "You hear the sound of a water wheel coming to a standstill.")
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, WATER_WHEEL_STATE, DISABLED, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, BELLOWS_STATE, DISABLED, true)
setVarbit(player, WATER_WHEEL_STATE, DISABLED, true)
setVarbit(player, BELLOWS_STATE, DISABLED, true)
return@on true
}
@@ -500,15 +500,15 @@ class EWListeners : InteractionListener {
if (!EWUtils.leftWaterControlEnabled(player) || !EWUtils.rightWaterControlEnabled(player)) {
playAudio(player, pullLeverResetGatesSFX)
sendMessage(player, "You hear the sound of the flow gates resetting.")
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, LEFT_WATER_CONTROL_STATE, DISABLED, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, RIGHT_WATER_CONTROL_STATE, DISABLED, true)
setVarbit(player, LEFT_WATER_CONTROL_STATE, DISABLED, true)
setVarbit(player, RIGHT_WATER_CONTROL_STATE, DISABLED, true)
return@on true
}
// If both of the above are false, the water wheel can start running
playAudio(player, pullLeverEnabledSFX)
sendMessage(player, "You hear the sound of a water wheel starting up.")
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, WATER_WHEEL_STATE, ENABLED, true)
setVarbit(player, WATER_WHEEL_STATE, ENABLED, true)
return@on true
}
@@ -573,13 +573,13 @@ class EWListeners : InteractionListener {
// Bellows lever "OFF" state
if (EWUtils.bellowsEnabled(player)) {
sendMessage(player, "The bellows stop pumping air.")
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, BELLOWS_STATE, DISABLED, true)
setVarbit(player, BELLOWS_STATE, DISABLED, true)
return@on true
}
// Bellows lever "ON" state
sendMessage(player, "The bellows pump air down the pipe.")
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, BELLOWS_STATE, ENABLED, true)
setVarbit(player, BELLOWS_STATE, ENABLED, true)
return@on true
}
}
@@ -605,4 +605,4 @@ class EWListeners : InteractionListener {
}
}
}
}
}
@@ -3,9 +3,9 @@ package content.region.kandarin.seers.quest.elementalworkshop
import content.global.handlers.iface.BookLine
import content.global.handlers.iface.Page
import content.global.handlers.iface.PageSet
import core.api.getVarbitValue
import core.game.node.entity.player.Player
import org.rs09.consts.Vars
import core.api.*
/**
* Utils for the Elemental Workshop I quest
@@ -71,37 +71,37 @@ object EWUtils {
)
/* OFFSETS */
const val LEFT_WATER_CONTROL_STATE = 3
const val RIGHT_WATER_CONTROL_STATE = 4
const val WATER_WHEEL_STATE = 5
const val FURNACE_STATE = 7
const val BELLOWS_STATE = 9
const val LEFT_WATER_CONTROL_STATE = 2058
const val RIGHT_WATER_CONTROL_STATE = 2059
const val WATER_WHEEL_STATE = 2060
const val FURNACE_STATE = 2062
const val BELLOWS_STATE = 2063
fun leftWaterControlBit(player: Player): Int {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, LEFT_WATER_CONTROL_STATE)
return getVarbit(player, LEFT_WATER_CONTROL_STATE)
}
fun rightWaterControlBit(player: Player): Int {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, RIGHT_WATER_CONTROL_STATE)
return getVarbit(player, RIGHT_WATER_CONTROL_STATE)
}
fun leftWaterControlEnabled(player: Player): Boolean {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, LEFT_WATER_CONTROL_STATE) == 1
return getVarbit(player, LEFT_WATER_CONTROL_STATE) == 1
}
fun rightWaterControlEnabled(player: Player): Boolean {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, RIGHT_WATER_CONTROL_STATE) == 1
return getVarbit(player, RIGHT_WATER_CONTROL_STATE) == 1
}
fun waterWheelEnabled(player: Player): Boolean {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, WATER_WHEEL_STATE) == 1
return getVarbit(player, WATER_WHEEL_STATE) == 1
}
fun bellowsEnabled(player: Player): Boolean {
return getVarbitValue(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, BELLOWS_STATE) == 1
return getVarbit(player, BELLOWS_STATE) == 1
}
fun currentStage(player: Player): Int {
return player.questRepository.getStage("Elemental Workshop I")
}
}
}
@@ -1,9 +1,6 @@
package content.region.kandarin.seers.quest.elementalworkshop
import core.api.Commands
import core.api.addItem
import core.api.setAttribute
import core.api.setVarbit
import core.api.*
import core.game.node.entity.player.Player
import core.game.node.entity.player.link.quest.Quest
import core.game.node.entity.skill.Skills
@@ -120,8 +117,7 @@ class ElementalWorkshopQuest : Quest("Elemental Workshop I", 52, 51, 1), Command
setAttribute(player, "/save:ew1:got_leather", false)
setAttribute(player, "/save:ew1:bellows_fixed", false)
player.questRepository.setStageNonmonotonic(player.questRepository.forIndex(52), 0)
player.varpManager.get(Vars.VARP_QUEST_ELEMENTAL_WORKSHOP).clearBitRange(0, 31)
player.varpManager.get(Vars.VARP_QUEST_ELEMENTAL_WORKSHOP).send(player)
setVarp(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, 0)
player.teleport(Location.create(2715, 3481, 0))
player.inventory.clear()
addItem(player, Items.KNIFE_946)
@@ -138,11 +134,11 @@ class ElementalWorkshopQuest : Quest("Elemental Workshop I", 52, 51, 1), Command
setAttribute(player, "/save:ew1:got_leather", true)
setAttribute(player, "/save:ew1:bellows_fixed", true)
player.questRepository.setStageNonmonotonic(player.questRepository.forIndex(52), 95)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, EWUtils.BELLOWS_STATE, enabled, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, EWUtils.FURNACE_STATE, enabled, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, EWUtils.WATER_WHEEL_STATE, enabled, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, EWUtils.RIGHT_WATER_CONTROL_STATE, enabled, true)
setVarbit(player, Vars.VARP_QUEST_ELEMENTAL_WORKSHOP, EWUtils.LEFT_WATER_CONTROL_STATE, enabled, true)
setVarbit(player, EWUtils.BELLOWS_STATE, enabled, true)
setVarbit(player, EWUtils.FURNACE_STATE, enabled, true)
setVarbit(player, EWUtils.WATER_WHEEL_STATE, enabled, true)
setVarbit(player, EWUtils.RIGHT_WATER_CONTROL_STATE, enabled, true)
setVarbit(player, EWUtils.LEFT_WATER_CONTROL_STATE, enabled, true)
}
}
}
}
@@ -13,6 +13,8 @@ import core.plugin.ClassScanner;
import core.tools.RandomFunction;
import core.tools.StringUtils;
import static core.api.ContentAPIKt.*;
/**
* The main type or the jungle potion quest.
* @author Vexia
@@ -77,8 +79,11 @@ public final class JunglePotion extends Quest {
player.getPacketDispatch().sendItemZoomOnInterface(Herbs.VOLENCIA_MOSS.getProduct().getId(), 235, 277, 3 + 2);
player.getSkills().addExperience(Skills.HERBLORE, 775);
player.getQuestRepository().syncronizeTab(player);
player.varpManager.get(534).setVarbit(15,2).setVarbit(18,2).setVarbit(21,2).setVarbit(24,2).setVarbit(12,2).send(player);
player.varpManager.flagSave(534, false);
setVarbit(player, 897, 2);
setVarbit(player, 898, 2);
setVarbit(player, 899, 2);
setVarbit(player, 900, 2);
setVarbit(player, 896, 2, true);
}
@Override
@@ -31,6 +31,8 @@ import core.game.world.map.zone.ZoneBorders;
import core.game.world.map.zone.ZoneRestriction;
import core.tools.RandomFunction;
import static core.api.ContentAPIKt.*;
/**
* Handles the Tzhaar Fight pits.
* @author Emperor
@@ -353,7 +355,7 @@ public final class TzhaarFightPitsPlugin extends ActivityPlugin {
}
int size = (LOBBY_PLAYERS.size() + WAR_PLAYERS.size()) - 1;
if (!WAR_PLAYERS.isEmpty()) {
WAR_PLAYERS.get(0).getConfigManager().set(560, size);
setVarp(WAR_PLAYERS.get(0), 560, size);
}
for (Iterator<Player> it = LOBBY_PLAYERS.iterator(); it.hasNext();) {
Player p = it.next();
@@ -365,7 +367,7 @@ public final class TzhaarFightPitsPlugin extends ActivityPlugin {
}
p.getSkullManager().setSkullCheckDisabled(true);
p.getSkullManager().setWilderness(true);
p.getConfigManager().set(560, size);
setVarp(p, 560, size);
p.getProperties().setTeleportLocation(getZoneDestination());
p.getInteraction().set(Option._P_ATTACK);
tokkulAmount += p.getProperties().getCurrentCombatLevel();
@@ -447,7 +449,7 @@ public final class TzhaarFightPitsPlugin extends ActivityPlugin {
*/
public static void sendPlayersRemaining(int value) {
for (Player p : WAR_PLAYERS) {
p.getConfigManager().set(560, value);
setVarp(p, 560, value);
}
}
@@ -137,7 +137,7 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
40 -> {
setAttribute(player, "/save:tutorial:complete", true)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
teleport(player, Location.create(3233, 3230), TeleportManager.TeleportType.NORMAL)
closeOverlay(player)
@@ -202,4 +202,4 @@ class TutorialMagicTutorDialogue(player: Player? = null) : core.game.dialogue.Di
return intArrayOf(NPCs.MAGIC_INSTRUCTOR_946)
}
}
}
@@ -67,7 +67,7 @@ class TutorialQuestGuideDialogue(player: Player? = null) : core.game.dialogue.Di
""
)
)
setVarbit(player, 1021, 0, 3)
setVarbit(player, 3756, 3)
player.interfaceManager.openTab(Component(Components.QUESTJOURNAL_V2_274))
}
28 -> when(stage)
@@ -119,4 +119,4 @@ class TutorialQuestGuideDialogue(player: Player? = null) : core.game.dialogue.Di
return intArrayOf(NPCs.QUEST_GUIDE_949)
}
}
}
@@ -77,7 +77,7 @@ object TutorialStage {
1 -> {
hideTabs(player, login)
player.interfaceManager.openTab(Component(Components.OPTIONS_261))
setVarbit(player, 1021, 0, 12)
setVarbit(player, 3756, 12)
removeHintIcon(player)
Component.setUnclosable(
player,
@@ -92,7 +92,7 @@ object TutorialStage {
}
2 -> {
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
hideTabs(player, login)
registerHintIcon(player, Repository.findNPC(945)!!)
Component.setUnclosable(
@@ -144,7 +144,7 @@ object TutorialStage {
5 -> {
hideTabs(player, login)
player.interfaceManager.openTab(Component(Components.INVENTORY_149))
setVarbit(player, 1021, 0, 4)
setVarbit(player, 3756, 4)
removeHintIcon(player)
Component.setUnclosable(
player,
@@ -160,7 +160,7 @@ object TutorialStage {
6 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 4)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -219,7 +219,7 @@ object TutorialStage {
10 -> {
hideTabs(player, login)
player.interfaceManager.openTab(Component(Components.STATS_320))
setVarbit(player, 1021, 0, 2)
setVarbit(player, 3756, 2)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -234,7 +234,7 @@ object TutorialStage {
11 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 2)
registerHintIcon(player, Repository.findNPC(943)!!)
Component.setUnclosable(
player,
@@ -250,7 +250,7 @@ object TutorialStage {
12 -> {
hideTabs(player, login)
setVarbit(player, 406, 0, 2)
setVarp(player, 406, 2)
removeHintIcon(player)
registerHintIcon(player, Repository.findNPC(952)!!)
Component.setUnclosable(
@@ -402,7 +402,7 @@ object TutorialStage {
hideTabs(player, login)
removeHintIcon(player)
player.interfaceManager.openTab(Component(Components.MUSIC_V3_187))
setVarbit(player, 1021, 0, 14)
setVarbit(player, 3756, 14)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendScrollMessageWithBlueTitle(
@@ -418,7 +418,7 @@ object TutorialStage {
22 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
registerHintIcon(player, Location.create(3072, 3090, 0), 125)
Component.setUnclosable(
player,
@@ -435,7 +435,7 @@ object TutorialStage {
23 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 13)
setVarbit(player, 3756, 13)
removeHintIcon(player)
player.interfaceManager.openTab(Component(Components.EMOTES_464))
stopWalk(player)
@@ -454,7 +454,7 @@ object TutorialStage {
24 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
player.locks.lockMovement(100000)
Component.setUnclosable(
player,
@@ -517,7 +517,7 @@ object TutorialStage {
28 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -533,7 +533,7 @@ object TutorialStage {
29 -> {
hideTabs(player, login)
removeHintIcon(player)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
registerHintIcon(player, Location.create(3088, 3119, 0), 15)
Component.setUnclosable(
player,
@@ -550,7 +550,7 @@ object TutorialStage {
30 -> {
hideTabs(player, login)
removeHintIcon(player)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
registerHintIcon(player, Repository.findNPC(948)!!)
Component.setUnclosable(
player,
@@ -794,7 +794,7 @@ object TutorialStage {
hideTabs(player, login)
removeHintIcon(player)
player.interfaceManager.openTab(Component(Components.WORNITEMS_387))
setVarbit(player, 1021, 0, 5)
setVarbit(player, 3756, 5)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -810,7 +810,7 @@ object TutorialStage {
46 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -857,7 +857,7 @@ object TutorialStage {
49 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 1)
setVarbit(player, 3756, 1)
var wepInter = player.getExtension<WeaponInterface>(WeaponInterface::class.java)
if(wepInter == null)
{
@@ -879,7 +879,7 @@ object TutorialStage {
50 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
registerHintIcon(player, Location.create(3110,9518,0), 75)
Component.setUnclosable(
player,
@@ -1053,7 +1053,7 @@ object TutorialStage {
hideTabs(player, login)
removeHintIcon(player)
player.interfaceManager.openTab(Component(Components.PRAYER_271))
setVarbit(player, 1021, 0, 6)
setVarbit(player, 3756, 6)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -1085,7 +1085,7 @@ object TutorialStage {
hideTabs(player, login)
removeHintIcon(player)
player.interfaceManager.openTab(Component(Components.FRIENDS2_550))
setVarbit(player, 1021, 0, 9)
setVarbit(player, 3756, 9)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -1100,7 +1100,7 @@ object TutorialStage {
64 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 10)
setVarbit(player, 3756, 10)
player.interfaceManager.openTab(Component(Components.IGNORE2_551))
player.interfaceManager.openTab(Component(Components.CLANJOIN_589))
Component.setUnclosable(
@@ -1117,7 +1117,7 @@ object TutorialStage {
65 -> {
hideTabs(player, login)
setVarbit(player, 1021, 0, 0)
setVarbit(player, 3756, 0)
registerHintIcon(player, Repository.findNPC(945)!!)
Component.setUnclosable(
player,
@@ -1167,7 +1167,7 @@ object TutorialStage {
hideTabs(player, login)
removeHintIcon(player)
player.interfaceManager.openTab(Component(player.spellBookManager.spellBook))
setVarbit(player, 1021, 0, 7)
setVarbit(player, 3756, 7)
Component.setUnclosable(
player,
player.dialogueInterpreter.sendPlaneMessageWithBlueTitle(
@@ -1274,7 +1274,7 @@ object TutorialStage {
val stage = getAttribute(player, "tutorial:stage", 0)
val percent = if(stage == 0) 0 else ((stage.toDouble() / 71.0) * 100.0).toInt()
val barPercent = if(stage == 0) 0 else (((percent.toDouble() / 100.0) * 20.0).toInt() + 1)
setVarbit(player, 406, 0, barPercent)
setVarp(player, 406, barPercent)
setInterfaceText(player, "$percent% Done", 371, 1)
}
@@ -1296,4 +1296,4 @@ object TutorialStage {
{
setAttribute(player, "tutorial:hinticon", HintIconManager.registerHintIcon(player, location, 1, -1, player.hintIconManager.freeSlot(), height, 3))
}
}
}

Some files were not shown because too many files have changed in this diff Show More