Fixed some issues with incorrectly reading varbit values
Fixed Dwarf Cannon quest Improved varp/varbit interface and handling
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user