Corrected Sumona's red dragon assignment

Removed inauthentic aviansie assignments
Fixed GWD beacon not being repairable
Surprise exam is no longer optional
Fixed level checks for All Fired Up beacon repair
This commit is contained in:
Player Name
2025-06-18 13:28:21 +00:00
committed by Ryan
parent 5a1c7cb141
commit eebbebe772
7 changed files with 151 additions and 188 deletions
@@ -1,6 +1,6 @@
package content.global.ame
import content.global.ame.events.MysteriousOldManNPC
import content.global.ame.events.surpriseexam.MysteriousOldManNPC
import core.api.playGlobalAudio
import core.api.poofClear
import core.api.sendMessage
@@ -1,7 +1,7 @@
package content.global.ame
import org.rs09.consts.Items
import content.global.ame.events.MysteriousOldManNPC
import content.global.ame.events.surpriseexam.MysteriousOldManNPC
import content.global.ame.events.certer.CerterNPC
import content.global.ame.events.drilldemon.SergeantDamienNPC
import content.global.ame.events.drunkendwarf.DrunkenDwarfNPC
@@ -1,41 +0,0 @@
package content.global.ame.events
import core.game.node.entity.player.Player
import content.global.ame.events.surpriseexam.SurpriseExamUtils
import core.game.dialogue.DialogueFile
import core.game.system.timer.impl.AntiMacro
class MysteriousOldManDialogue(val type: String) : DialogueFile() {
val CHOICE_STAGE = 50000
override fun handle(componentID: Int, buttonID: Int) {
if(type == "sexam" && stage < CHOICE_STAGE){
npc("Would you like to come do a surprise exam?")
stage = CHOICE_STAGE
}
else if(stage >= CHOICE_STAGE){
when(stage) {
CHOICE_STAGE -> options("Yeah, sure!", "No, thanks.").also { stage++ }
CHOICE_STAGE.substage(1) -> when(buttonID){
1 -> {
end()
teleport(player!!,type)
AntiMacro.terminateEventNpc(player!!)
}
2 -> {
end()
AntiMacro.terminateEventNpc(player!!)
}
}
}
}
}
fun teleport(player: Player,type: String){
when(type){
"sexam" -> SurpriseExamUtils.teleport(player)
}
}
}
@@ -1,31 +1,40 @@
package content.global.ame.events
package content.global.ame.events.surpriseexam
import content.global.ame.RandomEventNPC
import core.game.node.entity.npc.NPC
import core.tools.RandomFunction
import content.global.ame.kidnapPlayer
import core.api.*
import org.rs09.consts.NPCs
import core.api.utils.WeightBasedTable
import core.game.interaction.QueueStrength
import core.game.node.entity.npc.NPC
import core.game.node.entity.player.link.TeleportManager
import core.game.world.map.Location
import core.game.world.update.flag.context.Graphics
import org.rs09.consts.Sounds
class MysteriousOldManNPC(var type: String = "", override var loot: WeightBasedTable? = null) : RandomEventNPC(NPCs.MYSTERIOUS_OLD_MAN_410) {
override fun init() {
super.init()
sayLine()
}
override fun tick() {
super.tick()
if(RandomFunction.random(1,10) == 5) sayLine()
}
fun sayLine() {
when(type){
"sexam" -> sendChat("Surprise exam, ${player.username.capitalize()}!")
sendChat("Surprise exam, ${player.username}!")
queueScript(player, 4, QueueStrength.SOFT) { stage: Int ->
when (stage) {
0 -> {
lock(player, 6)
sendGraphics(Graphics(1576, 0, 0), player.location)
animate(player,8939)
playAudio(player, Sounds.TELEPORT_ALL_200)
return@queueScript delayScript(player, 3)
}
1 -> {
kidnapPlayer(player, Location(1886, 5025, 0), TeleportManager.TeleportType.INSTANT)
return@queueScript stopExecuting(player)
}
else -> return@queueScript stopExecuting(player)
}
}
}
override fun talkTo(npc: NPC) {
when(type){
"sexam" -> player.dialogueInterpreter.open(MysteriousOldManDialogue("sexam"),this.asNpc())
}
sendMessage(player, "He isn't interested in talking to you.")
}
}
}
@@ -26,10 +26,6 @@ object SurpriseExamUtils {
intArrayOf(Items.FLY_FISHING_ROD_309,Items.BARBARIAN_ROD_11323,Items.SMALL_FISHING_NET_303,Items.HARPOON_311)
)
fun teleport(player: Player) {
kidnapPlayer(player, Location.create(1886, 5025, 0), TeleportManager.TeleportType.INSTANT)
}
fun cleanup(player: Player){
returnPlayer(player)
removeAttributes(player, SE_KEY_INDEX, SE_KEY_CORRECT)
@@ -24,7 +24,7 @@ public enum Master {
new Task(Tasks.CAVE_BUG, 8),
new Task(Tasks.CAVE_CRAWLERS, 8),
new Task(Tasks.CAVE_SLIMES, 8),
new Task(Tasks.COWS, 8),
new Task(Tasks.COWS, 8),
new Task(Tasks.CRAWLING_HAND, 8),
new Task(Tasks.DESERT_LIZARDS, 8),
new Task(Tasks.DOG, 7),
@@ -37,144 +37,143 @@ public enum Master {
new Task(Tasks.MONKEYS, 6),
new Task(Tasks.SCORPIONS, 7),
new Task(Tasks.SKELETONS, 7),
new Task(Tasks.SPIDERS, 6),
new Task(Tasks.SPIDERS, 6),
new Task(Tasks.WOLVES, 7),
new Task(Tasks.ZOMBIES, 7)),
MAZCHNA(8274, 20, 0, new int[]{40, 70}, new int[]{2, 5, 15},
new Task(Tasks.BANSHEE, 8),
new Task(Tasks.BATS,7),
new Task(Tasks.BEARS,6),
new Task(Tasks.CATABLEPONS,8),
new Task(Tasks.CAVE_BUG,8),
new Task(Tasks.BATS, 7),
new Task(Tasks.BEARS, 6),
new Task(Tasks.CATABLEPONS, 8),
new Task(Tasks.CAVE_BUG, 8),
new Task(Tasks.CAVE_CRAWLERS, 8),
new Task(Tasks.CAVE_SLIMES, 8),
new Task(Tasks.COCKATRICES, 8),
new Task(Tasks.CRAWLING_HAND, 8),
new Task(Tasks.DESERT_LIZARDS, 8),
new Task(Tasks.DOG,7),
new Task(Tasks.EARTH_WARRIORS,6),
new Task(Tasks.FLESH_CRAWLERS,7),
new Task(Tasks.GHOSTS,7),
new Task(Tasks.DOG, 7),
new Task(Tasks.EARTH_WARRIORS, 6),
new Task(Tasks.FLESH_CRAWLERS, 7),
new Task(Tasks.GHOSTS, 7),
new Task(Tasks.GHOULS, 7),
new Task(Tasks.HILL_GIANTS,7),
new Task(Tasks.HILL_GIANTS, 7),
new Task(Tasks.HOBGOBLINS, 7),
new Task(Tasks.ICE_WARRIOR, 7),
new Task(Tasks.KALPHITES,6),
new Task(Tasks.KALPHITES, 6),
new Task(Tasks.MOGRES, 8),
new Task(Tasks.PYREFIENDS, 8),
new Task(Tasks.ROCK_SLUGS,8),
new Task(Tasks.SHADE,8),
new Task(Tasks.SKELETONS, 7),
new Task(Tasks.ROCK_SLUGS, 8),
new Task(Tasks.SHADE, 8),
new Task(Tasks.SKELETONS, 7),
new Task(Tasks.VAMPIRES, 6),
// new Task(Tasks.WALL_BEASTS,7),
// new Task(Tasks.WALL_BEASTS, 7),
new Task(Tasks.WOLVES, 7),
new Task(Tasks.ZOMBIES,7)),
new Task(Tasks.ZOMBIES, 7)),
VANNAKA(1597, 40, 0, new int[]{60, 120}, new int[]{4, 20, 60},
new Task(Tasks.ABERRANT_SPECTRES, 8),
new Task(Tasks.ANKOU,7),
new Task(Tasks.BANSHEE,6),
new Task(Tasks.BASILISKS,8),
new Task(Tasks.BLUE_DRAGONS,7),
new Task(Tasks.BLOODVELDS,8),
new Task(Tasks.BRINE_RATS,7),
new Task(Tasks.CAVE_BUG,7),
new Task(Tasks.CAVE_CRAWLERS,7),
new Task(Tasks.CAVE_SLIMES,7),
new Task(Tasks.COCKATRICES,8),
new Task(Tasks.CRAWLING_HAND,6),
new Task(Tasks.CROCODILES,6, new Integer[]{30, 60}),
new Task(Tasks.ANKOU, 7),
new Task(Tasks.BANSHEE, 6),
new Task(Tasks.BASILISKS, 8),
new Task(Tasks.BLUE_DRAGONS, 7),
new Task(Tasks.BLOODVELDS, 8),
new Task(Tasks.BRINE_RATS, 7),
new Task(Tasks.CAVE_BUG, 7),
new Task(Tasks.CAVE_CRAWLERS, 7),
new Task(Tasks.CAVE_SLIMES, 7),
new Task(Tasks.COCKATRICES, 8),
new Task(Tasks.CRAWLING_HAND, 6),
new Task(Tasks.CROCODILES, 6, new Integer[]{30, 60}),
new Task(Tasks.DAGANNOTHS, 7),
new Task(Tasks.DESERT_LIZARDS,7, new Integer[]{30, 60}),
new Task(Tasks.DUST_DEVILS,8),
new Task(Tasks.EARTH_WARRIORS,6, new Integer[]{30, 60}),
new Task(Tasks.DESERT_LIZARDS, 7, new Integer[]{30, 60}),
new Task(Tasks.DUST_DEVILS, 8),
new Task(Tasks.EARTH_WARRIORS, 6, new Integer[]{30, 60}),
new Task(Tasks.ELVES, 7, new Integer[]{30, 60}),
//new Task(Tasks.FEVER_SPIDERS,7),
new Task(Tasks.FIRE_GIANTS,7),
new Task(Tasks.GHOULS,7),
new Task(Tasks.GREEN_DRAGONS,6, new Integer[]{30, 60}),
new Task(Tasks.HARPIE_BUG_SWARMS,8),
new Task(Tasks.HELLHOUNDS,7),
new Task(Tasks.HILL_GIANTS,7),
new Task(Tasks.ICE_GIANTS,7, new Integer[]{30, 60}),
new Task(Tasks.ICE_WARRIOR,7),
new Task(Tasks.INFERNAL_MAGES,8),
new Task(Tasks.JELLIES,8),
//new Task(Tasks.FEVER_SPIDERS, 7),
new Task(Tasks.FIRE_GIANTS, 7),
new Task(Tasks.GHOULS, 7),
new Task(Tasks.GREEN_DRAGONS, 6, new Integer[]{30, 60}),
new Task(Tasks.HARPIE_BUG_SWARMS, 8),
new Task(Tasks.HELLHOUNDS, 7),
new Task(Tasks.HILL_GIANTS, 7),
new Task(Tasks.ICE_GIANTS, 7, new Integer[]{30, 60}),
new Task(Tasks.ICE_WARRIOR, 7),
new Task(Tasks.INFERNAL_MAGES, 8),
new Task(Tasks.JELLIES, 8),
new Task(Tasks.JUNGLE_HORRORS, 8),
new Task(Tasks.KALPHITES,7),
// new Task(Tasks.KILLERWATTS,6),
new Task(Tasks.KURASKS,7),
new Task(Tasks.LESSER_DEMONS,7),
new Task(Tasks.MOGRES,7),
// new Task(Tasks.MOLANISKS,7),
new Task(Tasks.MOSS_GIANTS,7),
new Task(Tasks.OGRES,7),
new Task(Tasks.OTHERWORDLY_BEING,8),
new Task(Tasks.PYREFIENDS,8),
new Task(Tasks.ROCK_SLUGS,7),
// new Task(Tasks.SEA_SNAKES,6),
new Task(Tasks.SHADE,8),
new Task(Tasks.KALPHITES, 7),
// new Task(Tasks.KILLERWATTS, 6),
new Task(Tasks.KURASKS, 7),
new Task(Tasks.LESSER_DEMONS, 7),
new Task(Tasks.MOGRES, 7),
// new Task(Tasks.MOLANISKS, 7),
new Task(Tasks.MOSS_GIANTS, 7),
new Task(Tasks.OGRES, 7),
new Task(Tasks.OTHERWORDLY_BEING, 8),
new Task(Tasks.PYREFIENDS, 8),
new Task(Tasks.ROCK_SLUGS, 7),
// new Task(Tasks.SEA_SNAKES, 6),
new Task(Tasks.SHADE, 8),
// new Task(Tasks.SHADOW_WARRIORS, 8),
new Task(Tasks.TROLLS,7),
new Task(Tasks.TROLLS, 7),
new Task(Tasks.TUROTHS, 8),
new Task(Tasks.VAMPIRES,7),
// new Task(Tasks.WALL_BEASTS,6),
new Task(Tasks.WEREWOLVES,7)),
new Task(Tasks.VAMPIRES, 7),
// new Task(Tasks.WALL_BEASTS, 6, , new Integer[]{10, 20}),
new Task(Tasks.WEREWOLVES, 7)),
CHAELDAR(1598, 70, 0, new int[]{110, 170}, new int[]{10, 50, 150},
new Task(Tasks.ABERRANT_SPECTRES,8),
new Task(Tasks.ABYSSAL_DEMONS,12),
new Task(Tasks.ABERRANT_SPECTRES, 8),
new Task(Tasks.ABYSSAL_DEMONS, 12),
new Task(Tasks.BANSHEE, 5),
new Task(Tasks.BASILISKS,7),
new Task(Tasks.BLUE_DRAGONS,8),
new Task(Tasks.BLOODVELDS,8),
new Task(Tasks.BRINE_RATS,7),
new Task(Tasks.BRONZE_DRAGONS,11, new Integer[]{30, 60}),
new Task(Tasks.BASILISKS, 7),
new Task(Tasks.BLUE_DRAGONS, 8),
new Task(Tasks.BLOODVELDS, 8),
new Task(Tasks.BRINE_RATS, 7),
new Task(Tasks.BRONZE_DRAGONS, 11, new Integer[]{30, 60}),
new Task(Tasks.CAVE_BUG, 5),
new Task(Tasks.CAVE_CRAWLERS, 5),
new Task(Tasks.CAVE_HORRORS,10),
new Task(Tasks.CAVE_SLIMES,6),
new Task(Tasks.COCKATRICES,6),
new Task(Tasks.CAVE_CRAWLERS, 5),
new Task(Tasks.CAVE_HORRORS, 10),
new Task(Tasks.CAVE_SLIMES, 6),
new Task(Tasks.COCKATRICES, 6),
new Task(Tasks.CRAWLING_HAND, 5),
new Task(Tasks.CROCODILES, 5, new Integer[]{30, 60}),
new Task(Tasks.DAGANNOTHS,11),
new Task(Tasks.DAGANNOTHS, 11),
new Task(Tasks.DESERT_LIZARDS, 5, new Integer[]{30, 60}),
new Task(Tasks.DUST_DEVILS,9),
new Task(Tasks.ELVES,8, new Integer[]{60, 90}),
//new Task(Tasks.FEVER_SPIDERS,7),
new Task(Tasks.DUST_DEVILS, 9),
new Task(Tasks.ELVES, 8, new Integer[]{60, 90}),
//new Task(Tasks.FEVER_SPIDERS, 7),
new Task(Tasks.FIRE_GIANTS, 12),
new Task(Tasks.GARGOYLES,11),
new Task(Tasks.GREATER_DEMONS,9),
new Task(Tasks.HARPIE_BUG_SWARMS,6),
new Task(Tasks.HELLHOUNDS,9),
new Task(Tasks.IRON_DRAGONS,12, new Integer[]{30, 60}),
new Task(Tasks.INFERNAL_MAGES,7),
new Task(Tasks.GARGOYLES, 11),
new Task(Tasks.GREATER_DEMONS, 9),
new Task(Tasks.HARPIE_BUG_SWARMS, 6),
new Task(Tasks.HELLHOUNDS, 9),
new Task(Tasks.IRON_DRAGONS, 12, new Integer[]{30, 60}),
new Task(Tasks.INFERNAL_MAGES, 7),
new Task(Tasks.JELLIES, 10),
new Task(Tasks.JUNGLE_HORRORS,10),
new Task(Tasks.KALPHITES,11),
new Task(Tasks.JUNGLE_HORRORS, 10),
new Task(Tasks.KALPHITES, 11),
new Task(Tasks.KURASKS, 12),
new Task(Tasks.LESSER_DEMONS,9),
new Task(Tasks.MOGRES,6),
// new Task(Tasks.MOLANISKS,6),
//new Task(Tasks.MUTATED_ZYGOMITES,7, new Integer[]{30, 60}),
new Task(Tasks.LESSER_DEMONS, 9),
new Task(Tasks.MOGRES, 6),
// new Task(Tasks.MOLANISKS, 6),
//new Task(Tasks.MUTATED_ZYGOMITES, 7, new Integer[]{30, 60}),
new Task(Tasks.NECHRYAELS, 12),
new Task(Tasks.PYREFIENDS,6),
new Task(Tasks.PYREFIENDS, 6),
new Task(Tasks.ROCK_SLUGS, 5),
// new Task(Tasks.SHADOW_WARRIORS,8),
new Task(Tasks.SPIRTUAL_WARRIORS,4),
new Task(Tasks.SPIRTUAL_RANGERS,4),
new Task(Tasks.SPIRTUAL_MAGES,4),
new Task(Tasks.TROLLS,11),
// new Task(Tasks.SHADOW_WARRIORS, 8),
new Task(Tasks.SPIRTUAL_WARRIORS, 4),
new Task(Tasks.SPIRTUAL_RANGERS, 4),
new Task(Tasks.SPIRTUAL_MAGES, 4),
new Task(Tasks.TROLLS, 11),
new Task(Tasks.TUROTHS, 10)),
// new Task(Tasks.WALL_BEASTS,6, new Integer[]{10, 20}),
// new Task(Tasks.WALL_BEASTS, 6, new Integer[]{10, 20}),
// new Task(Tasks.WARPED_TERROR_BIRD, 5),
// new Task(Tasks.WARPED_TORTOISE, 5)
SUMONA(7780, 85, 35, new int[]{120, 185}, new int[]{12, 60, 180},
new Task(Tasks.ABERRANT_SPECTRES, 15),
new Task(Tasks.ABYSSAL_DEMONS, 10),
new Task(Tasks.AVIANSIES, 10),
new Task(Tasks.BANSHEE, 15),
new Task(Tasks.BASILISKS, 15),
new Task(Tasks.BLACK_DEMONS, 10),
@@ -193,7 +192,7 @@ public enum Master {
new Task(Tasks.KALPHITES, 10),
new Task(Tasks.KURASKS, 15),
new Task(Tasks.NECHRYAELS, 10),
new Task(Tasks.RED_DRAGONS, 5),
new Task(Tasks.RED_DRAGONS, 5, new Integer[]{30, 60}),
// new Task(Tasks.SCABARITES, 9, new Integer[]{30, 60}),
new Task(Tasks.SPIRTUAL_MAGES, 10),
new Task(Tasks.SPIRTUAL_WARRIORS, 10),
@@ -203,41 +202,40 @@ public enum Master {
// new Task(Tasks.WARPED_TORTOISE, 15)),
DURADEL(8275, 100, 50, new int[]{130, 200}, new int[]{15, 75, 225},
new Task(Tasks.ABERRANT_SPECTRES,7),
new Task(Tasks.ABYSSAL_DEMONS,12),
new Task(Tasks.AVIANSIES, 10),
new Task(Tasks.BLACK_DEMONS,8),
new Task(Tasks.BLACK_DRAGONS,9, new Integer[]{40, 80}),
new Task(Tasks.BLOODVELDS,8),
new Task(Tasks.DAGANNOTHS,9),
new Task(Tasks.DARK_BEASTS,11),
new Task(Tasks.DUST_DEVILS,5),
new Task(Tasks.FIRE_GIANTS,7),
new Task(Tasks.GARGOYLES,8),
new Task(Tasks.GORAKS,9),
new Task(Tasks.GREATER_DEMONS,9),
new Task(Tasks.ABERRANT_SPECTRES, 7),
new Task(Tasks.ABYSSAL_DEMONS, 12),
new Task(Tasks.BLACK_DEMONS, 8),
new Task(Tasks.BLACK_DRAGONS, 9, new Integer[]{40, 80}),
new Task(Tasks.BLOODVELDS, 8),
new Task(Tasks.DAGANNOTHS, 9),
new Task(Tasks.DARK_BEASTS, 11),
new Task(Tasks.DUST_DEVILS, 5),
new Task(Tasks.FIRE_GIANTS, 7),
new Task(Tasks.GARGOYLES, 8),
new Task(Tasks.GORAKS, 9, new Integer[]{40, 80}),
new Task(Tasks.GREATER_DEMONS, 9),
new Task(Tasks.HELLHOUNDS, 10),
new Task(Tasks.IRON_DRAGONS,5, new Integer[]{40, 80}),
new Task(Tasks.KALPHITES,9),
new Task(Tasks.MITHRIL_DRAGONS,9, new Integer[]{4, 8}),
new Task(Tasks.NECHRYAELS,9),
new Task(Tasks.IRON_DRAGONS, 5, new Integer[]{40, 80}),
new Task(Tasks.KALPHITES, 9),
new Task(Tasks.MITHRIL_DRAGONS, 9, new Integer[]{4, 8}),
new Task(Tasks.NECHRYAELS, 9),
// new Task(Tasks.SCABARITES, 9, new Integer[]{40, 80}),
new Task(Tasks.SKELETAL_WYVERN,7, new Integer[]{40, 80}),
new Task(Tasks.SPIRTUAL_MAGES,2),
new Task(Tasks.STEEL_DRAGONS,7, new Integer[]{40, 80}),
new Task(Tasks.SUQAHS,8, new Integer[]{40, 80}),
// new Task(Tasks.WARPED_TERROR_BIRD,8),
new Task(Tasks.WATERFIENDS,2));
new Task(Tasks.SKELETAL_WYVERN, 7, new Integer[]{40, 80}),
new Task(Tasks.SPIRTUAL_MAGES, 2),
new Task(Tasks.STEEL_DRAGONS, 7, new Integer[]{40, 80}),
new Task(Tasks.SUQAHS, 8, new Integer[]{40, 80}),
// new Task(Tasks.WARPED_TERROR_BIRD, 8),
new Task(Tasks.WATERFIENDS, 2));
private static final HashMap<Integer,Master> idMap = new HashMap<>();
private static final HashMap<Integer, Master> idMap = new HashMap<>();
static{
Arrays.stream(Master.values()).forEach(m -> idMap.putIfAbsent(m.npc_id, m));
}
final int npc_id;
final int required_combat;
final int required_slayer;
final int required_combat;
final int required_slayer;
public final int[] default_assignment_range;
final int[] streakPoints;
public final List<Task> tasks;
@@ -49,7 +49,7 @@ class AFURepairClimbHandler : InteractionListener {
ent.destinationUp?.withinDistance(player.location,2) == true){
return ent
}
return null
return RepairClimbObject.GWD //the only one that does not have down/up destinations
}
private fun repair(player: Player,rco: RepairClimbObject){
@@ -95,6 +95,7 @@ class AFURepairClimbHandler : InteractionListener {
val level = rco.levelRequirement?.second ?: 0
if(player.skills.getLevel(skill) < level){
player.dialogueInterpreter.sendDialogue("You need level $level ${Skills.SKILL_NAME[skill]} for this.")
return
}
var requiresNeedle = false