Merge 2009scape updates #19

Open
randy wants to merge 204 commits from 2009Scape:master into upstream
7 changed files with 151 additions and 188 deletions
Showing only changes of commit eebbebe772 - Show all commits

View file

@ -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

View file

@ -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

View file

@ -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)
}
}
}

View file

@ -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.")
}
}
}

View file

@ -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)

View file

@ -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;

View file

@ -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