package net.scapeemulator.game.model.player.skills.slayer; import net.scapeemulator.game.model.mob.combat.MobKillListeners; import net.scapeemulator.game.model.player.Player; import net.scapeemulator.game.model.player.PlayerVariables.Variable; public class Slayer { public static void initialize() { MobKillListeners.addListener(new SlayerKillListener()); } private static int getTaskInfo(Player player) { return player.getVariables().getVar(Variable.SLAYER_TASK); } private static int getSlayerInfo(Player player) { return player.getVariables().getVar(Variable.SLAYER_INFO); } public static SlayerTask getTask(Player player) { int taskInfo = getTaskInfo(player); return SlayerTask.forTaskId((taskInfo >> 4) & 0xFF); } public static void resetTask(Player player) { player.getVariables().setVar(Variable.SLAYER_TASK, 0); } public static void setTask(Player player, SlayerMaster master, SlayerTask task, int amount) { int taskInfo = master.getMasterId() & 0xF; taskInfo |= (task.getTaskId() & 0xFF) << 4; taskInfo |= (amount & 0xFF) << 12; player.getVariables().setVar(Variable.SLAYER_TASK, taskInfo); } public static SlayerMaster getTaskMaster(Player player) { int taskInfo = getTaskInfo(player); return SlayerMaster.forMasterId(taskInfo & 0xF); } public static int getTaskAmount(Player player) { int taskInfo = getTaskInfo(player); return (taskInfo >> 12) & 0xFF; } public static void decrementTaskAmount(Player player) { int taskInfo = getTaskInfo(player); taskInfo -= 1 << 12; player.getVariables().setVar(Variable.SLAYER_TASK, taskInfo); } // TODO lower public static int getCompletedTasks(Player player) { int taskInfo = getTaskInfo(player); return taskInfo >> 16; } public static void incrementCompletedTasks(Player player) { int taskInfo = getSlayerInfo(player); taskInfo += 1 << 16; player.getVariables().setVar(Variable.SLAYER_INFO, taskInfo); } }