package net.scapeemulator.game.model.player.skills.slayer; import java.util.Random; /** * @author David Insley */ public enum SlayerMaster { /* @formatter:off */ TURAEL(1, 8273, 3, 1, new int[]{0, 0, 0}), MAZCHNA(2, 8274, 20, 1, new int[]{2, 10, 30}), VANNAKA(3, 1597, 40, 1, new int[]{4, 20, 60}), CHAELDAR(4, 1598, 70, 1, new int[]{10, 50, 150}), SUMONA(5, 7780, 3, 35, new int[]{12, 60, 180}), DURADEL(6, 8275, 100, 50, new int[]{15, 75, 225}); /* @formatter:on */ private static final Random RANDOM = new Random(); private final int masterId; private final int npcId; private final int cbReq; private final int slayerReq; private final int[] points; private final SlayerTask[] tasks; private SlayerMaster(int masterId, int npcId, int cbReq, int slayerReq, int[] points, SlayerTask... tasks) { if (points.length != 3) { throw new IllegalArgumentException("Points are for every 1, 10, and 50 tasks."); } this.masterId = masterId; this.npcId = npcId; this.cbReq = cbReq; this.slayerReq = slayerReq; this.points = points; this.tasks = tasks; } public static SlayerMaster forMasterId(int masterId) { for (SlayerMaster master : values()) { if (master.masterId == masterId) { return master; } } return null; } public static SlayerMaster forNPCId(int npcId) { for (SlayerMaster master : values()) { if (master.npcId == npcId) { return master; } } return null; } public int getMasterId() { return masterId; } public int getCombatRequirement() { return cbReq; } public int getSlayerRequirement() { return slayerReq; } public SlayerTask randomTask() { return tasks[RANDOM.nextInt(tasks.length)]; } public int getRewardPoints(int completedTasks) { if (completedTasks % 50 == 0) { return points[2]; } if (completedTasks % 10 == 0) { return points[1]; } return points[0]; } }