package content.global.ame import org.rs09.consts.Items import content.global.ame.events.MysteriousOldManNPC import content.global.ame.events.certer.CerterNPC import content.global.ame.events.drilldemon.SergeantDamienNPC import content.global.ame.events.drunkendwarf.DrunkenDwarfNPC import content.global.ame.events.evilbob.EvilBobNPC import content.global.ame.events.evilchicken.EvilChickenNPC import content.global.ame.events.freakyforester.FreakyForesterNPC import content.global.ame.events.maze.MazeNPC import content.global.ame.events.genie.GenieNPC import content.global.ame.events.pillory.PilloryNPC import content.global.ame.events.rickturpentine.RickTurpentineNPC import content.global.ame.events.rivertroll.RiverTrollRENPC import content.global.ame.events.rockgolem.RockGolemRENPC import content.global.ame.events.quizmaster.QuizMasterNPC import content.global.ame.events.sandwichlady.SandwichLadyRENPC import content.global.ame.events.shade.ShadeRENPC import content.global.ame.events.strangeplant.StrangePlantNPC import content.global.ame.events.swarm.SwarmNPC import content.global.ame.events.treespirit.TreeSpiritRENPC import content.global.ame.events.zombie.ZombieRENPC import core.api.utils.WeightBasedTable import core.api.utils.WeightedItem import core.game.node.entity.skill.Skills enum class RandomEvents(val npc: RandomEventNPC, val loot: WeightBasedTable? = null, val skillIds: IntArray = intArrayOf(), val type: String = "") { SANDWICH_LADY(npc = SandwichLadyRENPC()), GENIE(npc = GenieNPC()), CERTER(npc = CerterNPC(), loot = WeightBasedTable.create( WeightedItem(Items.UNCUT_SAPPHIRE_1623,1,1,3.4), WeightedItem(Items.KEBAB_1971,1,1,1.7), WeightedItem(Items.UNCUT_EMERALD_1621,1,1,1.7), WeightedItem(Items.SPINACH_ROLL_1969,1,1,1.5), WeightedItem(Items.COINS_995,80,80,1.1), WeightedItem(Items.COINS_995,160,160,1.1), WeightedItem(Items.COINS_995,320,320,1.1), WeightedItem(Items.COINS_995,480,480,1.1), WeightedItem(Items.COINS_995,640,640,1.1), WeightedItem(Items.UNCUT_RUBY_1619,1,1,0.86), WeightedItem(Items.COINS_995,240,240,0.65), WeightedItem(Items.COSMIC_TALISMAN_1454,1,1,0.43), WeightedItem(Items.UNCUT_DIAMOND_1617,1,1,0.22), WeightedItem(Items.TOOTH_HALF_OF_A_KEY_985,1,1,0.1), WeightedItem(Items.LOOP_HALF_OF_A_KEY_987,1,1,0.1) )), MAZE(npc = MazeNPC()), DRILL_DEMON(npc = SergeantDamienNPC()), EVIL_CHICKEN(npc = EvilChickenNPC()), STRANGE_PLANT(npc = StrangePlantNPC()), SWARM(npc = SwarmNPC()), EVIL_BOB(npc = EvilBobNPC(), skillIds = intArrayOf(Skills.FISHING, Skills.MAGIC)), DRUNKEN_DWARF(npc = DrunkenDwarfNPC()), RICK_TURPENTINE(npc = RickTurpentineNPC(), loot = CERTER.loot), SURPRISE_EXAM(npc = MysteriousOldManNPC(), type = "sexam"), FREAKY_FORESTER(npc = FreakyForesterNPC(), skillIds = intArrayOf(Skills.WOODCUTTING)), PILLORY(npc = PilloryNPC(), skillIds = intArrayOf(Skills.THIEVING)), TREE_SPIRIT(npc = TreeSpiritRENPC(), skillIds = intArrayOf(Skills.WOODCUTTING)), QUIZ_MASTER(npc = QuizMasterNPC()), RIVER_TROLL(RiverTrollRENPC(), skillIds = intArrayOf(Skills.FISHING)), ROCK_GOLEM(RockGolemRENPC(), skillIds = intArrayOf(Skills.MINING)), SHADE(ShadeRENPC(), skillIds = intArrayOf(Skills.PRAYER)), ZOMBIE(ZombieRENPC(), skillIds = intArrayOf(Skills.PRAYER)); companion object { @JvmField val randomIDs = values().map { it.npc.id }.toList() val skillMap = HashMap>() val nonSkillList = ArrayList() init { populateMappings() } fun getSkillBasedRandomEvent (skill: Int) : RandomEvents? { return skillMap[skill]?.random() } fun getNonSkillRandom() : RandomEvents { return nonSkillList.random() } private fun populateMappings() { for (event in values()) { for (id in event.skillIds) { val list = skillMap[id] ?: ArrayList().also { skillMap[id] = it } list.add (event) } if (event.skillIds.isEmpty()) nonSkillList.add (event) } } } }