mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-10 10:20:41 -07:00
Beer item ID Council Workman interaction changed from normal beer to the beer from Fremennik longhall
Koschei boss fight sessions are now World Pulses instead of player pulses Refactor TFTInteractionListener to use ContentAPI Allow Neitiznot items to be equiped after Frem trials
This commit is contained in:
parent
d91396d0ea
commit
a5a0e9c9b4
5 changed files with 244 additions and 218 deletions
|
|
@ -13,7 +13,7 @@ class CouncilWorkerDialogue(player: Player? = null) : DialoguePlugin(player){
|
|||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
if(questStage(player, "Fremennik Trials") in 1..99){
|
||||
loadFile(CouncilWorkerFTDialogue(1))
|
||||
player.dialogueInterpreter.open((CouncilWorkerFTDialogue(1)))
|
||||
} else {
|
||||
npc(FacialExpression.FRIENDLY,"'Ello there.").also { stage = 0 }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import rs09.tools.START_DIALOGUE
|
|||
|
||||
const val COUNCIL_WORKER = 1287
|
||||
|
||||
class CouncilWorkerFTDialogue(val questStage: Int,var isBeerInteraction: Boolean = false) : DialogueFile(){
|
||||
class CouncilWorkerFTDialogue(val questStage: Int, var isBeerInteraction: Boolean = false, val beerId: Int? = null) : DialogueFile(){
|
||||
|
||||
override fun handle(componentID: Int, buttonID: Int) {
|
||||
|
||||
|
|
@ -17,8 +17,13 @@ class CouncilWorkerFTDialogue(val questStage: Int,var isBeerInteraction: Boolean
|
|||
START_DIALOGUE -> {npc(COUNCIL_WORKER,"Oh, thank you much ${if(player!!.isMale) "sir" else "miss"}");stage++}
|
||||
1 -> {
|
||||
npc(COUNCIL_WORKER,"Ta very much like. That'll hit the spot nicely.. Here,","You can have this. I picked it up as a souvenir on me","last holz.")
|
||||
addItem(player!!, Items.STRANGE_OBJECT_3713)
|
||||
removeItem(player!!, Items.BEER_1917, Container.INVENTORY)
|
||||
if(beerId != null){
|
||||
if(removeItem(player!!, beerId)){
|
||||
addItem(player!!, Items.STRANGE_OBJECT_3713)
|
||||
}
|
||||
} else if(removeItem(player!!, Items.BEER_3803) || removeItem(player!!, Items.BEER_1917)) {
|
||||
addItem(player!!, Items.STRANGE_OBJECT_3713)
|
||||
}
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
|
|
@ -34,13 +39,13 @@ class CouncilWorkerFTDialogue(val questStage: Int,var isBeerInteraction: Boolean
|
|||
}
|
||||
1 -> {npc(COUNCIL_WORKER,"'fraid not, ${if(player!!.isMale) "sir" else "miss"}."); stage++}
|
||||
2 -> {npc(COUNCIL_WORKER,"Say, would you do me a favor? I'm quite parched.","If you bring me a beer, I'll make it worthwhile.");stage++}
|
||||
3 -> if(inInventory(player!!,Items.BEER_1917)) {
|
||||
3 -> if(inInventory(player!!,Items.BEER_3803) || inInventory(player!!,Items.BEER_1917)) {
|
||||
player("Oh, I have one here! Take it.")
|
||||
stage = 0
|
||||
isBeerInteraction = true
|
||||
} else {
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
} else {
|
||||
end()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,13 @@ class KoscheiNPC constructor(id: Int = 0, location: Location? = null, session: K
|
|||
|
||||
override fun init() {
|
||||
super.init()
|
||||
Pulser.submit(KoscheiSpawnPulse(session?.player, this))
|
||||
|
||||
/**
|
||||
* Ensure the player is in the arena then spawn.
|
||||
*/
|
||||
if (session?.player?.location?.regionId == 10653)
|
||||
Pulser.submit(KoscheiSpawnPulse(session.player, this))
|
||||
else session?.close()
|
||||
}
|
||||
|
||||
override fun handleTickActions() {
|
||||
|
|
|
|||
|
|
@ -9,225 +9,218 @@ import core.game.node.entity.impl.Animator
|
|||
import core.game.node.entity.npc.NPC
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.player.link.diary.DiaryType
|
||||
import core.game.node.entity.player.link.music.MusicEntry
|
||||
import core.game.node.entity.skill.Skills
|
||||
import core.game.node.entity.skill.gather.SkillingTool
|
||||
import core.game.node.item.Item
|
||||
import core.game.node.scenery.Scenery
|
||||
import core.game.system.task.Pulse
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.RegionManager
|
||||
import core.game.world.update.flag.context.Animation
|
||||
import core.game.world.update.flag.context.Graphics
|
||||
import core.net.packet.PacketRepository
|
||||
import core.net.packet.context.MusicContext
|
||||
import core.net.packet.out.MusicPacket
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.NPCs
|
||||
import org.rs09.primextends.getNext
|
||||
import org.rs09.primextends.isLast
|
||||
import rs09.game.interaction.InteractionListener
|
||||
import rs09.game.system.config.ItemConfigParser
|
||||
import rs09.game.world.GameWorld
|
||||
import rs09.game.world.GameWorld.Pulser
|
||||
|
||||
class TFTInteractionListeners : InteractionListener{
|
||||
|
||||
val BEER = Items.BEER_1917
|
||||
val WORKER = NPCs.COUNCIL_WORKMAN_1287
|
||||
val FISH_ALTAR = 4141
|
||||
val LYRE = Items.LYRE_3689
|
||||
val FISH = intArrayOf(Items.RAW_SHARK_383,Items.RAW_SEA_TURTLE_395,Items.RAW_MANTA_RAY_389)
|
||||
val LOW_ALC_KEG = Items.LOW_ALCOHOL_KEG_3712
|
||||
val KEG = Items.KEG_OF_BEER_3711
|
||||
val TINDERBOX = Items.TINDERBOX_590
|
||||
val CHERRY_BOMB = Items.STRANGE_OBJECT_3713
|
||||
val LIT_BOMB = Items.LIT_STRANGE_OBJECT_3714
|
||||
val PIPE = 4162
|
||||
val PORTALIDs = intArrayOf(2273,2274,2506,2507,2505,2503,2504,5138)
|
||||
val SWENSEN_LADDER = 4158
|
||||
val SWAYING_TREE = 4142
|
||||
val KNIFE = Items.KNIFE_946
|
||||
val TREE_BRANCH = Items.BRANCH_3692
|
||||
val LYRE_IDs = intArrayOf(14591,14590,6127,6126,6125,3691,3690)
|
||||
val THORVALD_LADDER = 34286
|
||||
val THORVALD_LADDER_LOWER = 4188
|
||||
val LALLIS_STEW = 4149
|
||||
val UNSTRUNG_LYRE = Items.UNSTRUNG_LYRE_3688
|
||||
val GOLDEN_FLEECE = Items.GOLDEN_FLEECE_3693
|
||||
val GOLDEN_WOOL = Items.GOLDEN_WOOL_3694
|
||||
val LONGHALL_BACKDOOR = 4148
|
||||
val SHOPNPCS = intArrayOf(NPCs.YRSA_1301,NPCs.SKULGRIMEN_1303,NPCs.THORA_THE_BARKEEP_1300,NPCs.SIGMUND_THE_MERCHANT_1282,NPCs.FISH_MONGER_1315)
|
||||
val SPINNING_WHEEL_IDS = intArrayOf(2644,4309,8748,20365,21304,25824,26143,34497,36970,37476)
|
||||
val STEW_INGREDIENT_IDS = intArrayOf(Items.POTATO_1942,Items.ONION_1957,Items.CABBAGE_1965,Items.PET_ROCK_3695)
|
||||
var FREMENNIK_HELMS = intArrayOf(Items.ARCHER_HELM_3749, Items.BERSERKER_HELM_3751, Items.WARRIOR_HELM_3753, Items.FARSEER_HELM_3755/*, Items.HELM_OF_NEITIZNOT_10828 Should this be included?*/)
|
||||
|
||||
private val BEER = intArrayOf(Items.BEER_3803,Items.BEER_1917)
|
||||
private val WORKER = NPCs.COUNCIL_WORKMAN_1287
|
||||
private val FISH_ALTAR = 4141
|
||||
private val FISH = intArrayOf(Items.RAW_SHARK_383,Items.RAW_SEA_TURTLE_395,Items.RAW_MANTA_RAY_389)
|
||||
private val LOW_ALC_KEG = Items.LOW_ALCOHOL_KEG_3712
|
||||
private val KEG = Items.KEG_OF_BEER_3711
|
||||
private val TINDERBOX = Items.TINDERBOX_590
|
||||
private val CHERRY_BOMB = Items.STRANGE_OBJECT_3713
|
||||
private val LIT_BOMB = Items.LIT_STRANGE_OBJECT_3714
|
||||
private val PIPE = 4162
|
||||
private val PORTALIDs = intArrayOf(2273,2274,2506,2507,2505,2503,2504,5138)
|
||||
private val SWENSEN_LADDER = 4158
|
||||
private val SWAYING_TREE = 4142
|
||||
private val KNIFE = Items.KNIFE_946
|
||||
private val TREE_BRANCH = Items.BRANCH_3692
|
||||
private val LYRE_IDs = intArrayOf(14591,14590,6127,6126,6125,3691,3690)
|
||||
private val THORVALD_LADDER = 34286
|
||||
private val THORVALD_LADDER_LOWER = 4188
|
||||
private val LALLIS_STEW = 4149
|
||||
private val UNSTRUNG_LYRE = Items.UNSTRUNG_LYRE_3688
|
||||
private val GOLDEN_FLEECE = Items.GOLDEN_FLEECE_3693
|
||||
private val GOLDEN_WOOL = Items.GOLDEN_WOOL_3694
|
||||
private val LONGHALL_BACKDOOR = 4148
|
||||
private val SHOPNPCS = intArrayOf(NPCs.YRSA_1301,NPCs.SKULGRIMEN_1303,NPCs.THORA_THE_BARKEEP_1300,NPCs.SIGMUND_THE_MERCHANT_1282,NPCs.FISH_MONGER_1315)
|
||||
private val SPINNING_WHEEL_IDS = intArrayOf(2644,4309,8748,20365,21304,25824,26143,34497,36970,37476)
|
||||
private val STEW_INGREDIENT_IDS = intArrayOf(Items.POTATO_1942,Items.ONION_1957,Items.CABBAGE_1965,Items.PET_ROCK_3695)
|
||||
//private val FREMENNIK_HELMS = intArrayOf(Items.ARCHER_HELM_3749, Items.BERSERKER_HELM_3751, Items.WARRIOR_HELM_3753, Items.FARSEER_HELM_3755/*, Items.HELM_OF_NEITIZNOT_10828 Should this be included?*/)
|
||||
|
||||
override fun defineListeners() {
|
||||
onUseWith(NPC,BEER,WORKER){ player, _, _ ->
|
||||
player.dialogueInterpreter.open(CouncilWorkerFTDialogue(0,true), NPC(WORKER))
|
||||
onUseWith(NPC,BEER,WORKER){ player, beer, _ ->
|
||||
player.dialogueInterpreter.open(CouncilWorkerFTDialogue(0,true,beer.id), NPC(WORKER))
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(SCENERY,FISH_ALTAR,*FISH){ player, _, fish ->
|
||||
if(player.inventory.contains(LYRE,1)) {
|
||||
Pulser.submit(spiritPulse(player, fish.id))
|
||||
if(inInventory(player,Items.LYRE_3689)) {
|
||||
Pulser.submit(SpiritPulse(player, fish.id))
|
||||
} else {
|
||||
player.sendMessage("I should probably have my lyre with me.")
|
||||
sendMessage(player,"I should probably have my lyre with me.")
|
||||
}
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(ITEM,LOW_ALC_KEG,KEG){player,lowKeg,_ ->
|
||||
if(!player.getAttribute("fremtrials:keg-mixed",false)!!){
|
||||
if(player.getAttribute("fremtrials:cherrybomb",false)) {
|
||||
player.inventory?.remove(lowKeg.asItem())
|
||||
player.setAttribute("/save:fremtrials:keg-mixed", true)
|
||||
player.sendMessage("The cherry bomb in the pipe goes off.")
|
||||
onUseWith(ITEM,LOW_ALC_KEG,KEG){player,_,_ ->
|
||||
if(!getAttribute(player,"fremtrials:keg-mixed",false)){
|
||||
if(getAttribute(player,"fremtrials:cherrybomb",false)) {
|
||||
removeItem(player,LOW_ALC_KEG)
|
||||
setAttribute(player,"/save:fremtrials:keg-mixed", true)
|
||||
sendMessage(player,"The cherry bomb in the pipe goes off.")
|
||||
RegionManager.getLocalEntitys(player).stream().forEach { e -> e.sendChat("What was THAT??") }
|
||||
player.sendMessage("You mix the kegs together.")
|
||||
return@onUseWith true
|
||||
sendMessage(player,"You mix the kegs together.")
|
||||
} else {
|
||||
player.dialogueInterpreter?.sendDialogue("I can't do this right now. I should create","a distraction.")
|
||||
return@onUseWith true
|
||||
}
|
||||
} else return@onUseWith false
|
||||
}
|
||||
|
||||
onUseWith(ITEM,TINDERBOX,CHERRY_BOMB){player,_,bomb ->
|
||||
player.inventory.remove(bomb.asItem())
|
||||
player.inventory.add(Item(LIT_BOMB))
|
||||
player.sendMessage("You light the strange object.")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(ITEM,KNIFE,TREE_BRANCH){player,knife,_ ->
|
||||
if (player.inventory.containsItem(knife.asItem())) {
|
||||
GameWorld.submit(BranchFletchingPulse(player))
|
||||
} else {
|
||||
player.sendMessage("You need a knife to do this.")
|
||||
onUseWith(ITEM,TINDERBOX,CHERRY_BOMB){player,_,_ ->
|
||||
if(removeItem(player,CHERRY_BOMB)){
|
||||
addItem(player,LIT_BOMB)
|
||||
sendMessage(player,"You light the strange object.")
|
||||
}
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(ITEM,KNIFE,TREE_BRANCH){player,_,_ ->
|
||||
if (inInventory(player,KNIFE))
|
||||
Pulser.submit(BranchFletchingPulse(player))
|
||||
else
|
||||
sendMessage(player,"You need a knife to do this.")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(SCENERY,LALLIS_STEW,*STEW_INGREDIENT_IDS){player,_,stewIngredient ->
|
||||
when(stewIngredient.id){
|
||||
Items.ONION_1957 -> {
|
||||
sendDialogue(player,"You added an onion to the stew")
|
||||
player.setAttribute("/save:lalliStewOnionAdded",true)
|
||||
removeItem(player,Items.ONION_1957)
|
||||
setAttribute(player,"/save:lalliStewOnionAdded",true)
|
||||
removeItem(player,stewIngredient)
|
||||
}
|
||||
Items.POTATO_1942 -> {
|
||||
sendDialogue(player,"You added a potato to the stew")
|
||||
player.setAttribute("/save:lalliStewPotatoAdded",true)
|
||||
removeItem(player,Items.POTATO_1942)
|
||||
setAttribute(player,"/save:lalliStewPotatoAdded",true)
|
||||
removeItem(player,stewIngredient)
|
||||
}
|
||||
Items.CABBAGE_1965 -> {
|
||||
sendDialogue(player,"You added a cabbage to the stew")
|
||||
player.setAttribute("/save:lalliStewCabbageAdded",true)
|
||||
removeItem(player,Items.CABBAGE_1965)
|
||||
setAttribute(player,"/save:lalliStewCabbageAdded",true)
|
||||
removeItem(player,stewIngredient)
|
||||
}
|
||||
Items.PET_ROCK_3695 -> {
|
||||
sendDialogue(player,"You added your dear pet rock to the stew")
|
||||
player.setAttribute("/save:lalliStewRockAdded",true)
|
||||
removeItem(player,Items.PET_ROCK_3695)
|
||||
setAttribute(player,"/save:lalliStewRockAdded",true)
|
||||
removeItem(player,stewIngredient)
|
||||
}
|
||||
}
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(SCENERY,SPINNING_WHEEL_IDS,GOLDEN_FLEECE){player,_,item ->
|
||||
animate(player,896)
|
||||
sendDialogue(player,"You spin the Golden Fleece into a ball of Golden Wool")
|
||||
removeItem(player,GOLDEN_FLEECE)
|
||||
addItem(player,Items.GOLDEN_WOOL_3694)
|
||||
onUseWith(SCENERY,SPINNING_WHEEL_IDS,GOLDEN_FLEECE){ player, _, _ ->
|
||||
if(removeItem(player,GOLDEN_FLEECE)){
|
||||
addItem(player,GOLDEN_WOOL)
|
||||
animate(player,896)
|
||||
sendDialogue(player,"You spin the Golden Fleece into a ball of Golden Wool")
|
||||
}
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(ITEM,UNSTRUNG_LYRE,GOLDEN_WOOL){player,lyre,wool ->
|
||||
onUseWith(ITEM,UNSTRUNG_LYRE,GOLDEN_WOOL){ player, _, _ ->
|
||||
if(player.getSkills().getLevel(Skills.FLETCHING) >= 25){
|
||||
animate(player,1248)
|
||||
removeItem(player,Items.GOLDEN_WOOL_3694)
|
||||
removeItem(player,Items.UNSTRUNG_LYRE_3688)
|
||||
addItem(player,Items.LYRE_3689)
|
||||
sendDialogue(player,"You string the Lyre with the Golden Wool.")
|
||||
}
|
||||
else{
|
||||
sendDialogue(player,"You need 25 fletching to do this!")
|
||||
}
|
||||
if(removeItem(player,GOLDEN_WOOL) &&
|
||||
removeItem(player,Items.UNSTRUNG_LYRE_3688)){
|
||||
animate(player,1248)
|
||||
addItem(player,Items.LYRE_3689)
|
||||
sendDialogue(player,"You string the Lyre with the Golden Wool.")
|
||||
}
|
||||
} else sendDialogue(player,"You need 25 fletching to do this!")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
on(LONGHALL_BACKDOOR, SCENERY,"open"){player,door ->
|
||||
if(player.getAttribute("LyreEnchanted",false)){
|
||||
sendNPCDialogue(player,1278,"Yeah you're good to go through. Olaf tells me you're some kind of outerlander bard here on tour. I doubt you're worse than Olaf is.")
|
||||
DoorActionHandler.handleAutowalkDoor(player,door.asScenery())
|
||||
}
|
||||
else if(player.getAttribute("lyreConcertPlayed")){
|
||||
DoorActionHandler.handleAutowalkDoor(player,door.asScenery())
|
||||
when {
|
||||
getAttribute(player,"LyreEnchanted",false) -> {
|
||||
sendNPCDialogue(player,1278,"Yeah you're good to go through. Olaf tells me you're some kind of outerlander bard here on tour. I doubt you're worse than Olaf is.")
|
||||
DoorActionHandler.handleAutowalkDoor(player,door.asScenery())
|
||||
}
|
||||
getAttribute(player,"lyreConcertPlayed",false) -> {
|
||||
DoorActionHandler.handleAutowalkDoor(player,door.asScenery())
|
||||
}
|
||||
else -> {
|
||||
sendNPCDialogue(player,1278,"I didn't give you permission to go backstage!")
|
||||
}
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(LYRE_IDs,ITEM,"play"){player,lyre ->
|
||||
if(player.getAttribute("onStage",false) && player.getAttribute("lyreConcertPlayed",false) == false){
|
||||
if(getAttribute(player,"onStage",false) && !getAttribute(player,"lyreConcertPlayed",false)){
|
||||
Pulser.submit(LyreConcertPulse(player,lyre.id))
|
||||
}
|
||||
else if(questStage(player, "Fremennik Trials")!! < 20 || !isQuestComplete(player, "Fremennik Trials")!!){
|
||||
player.sendMessage("You lack the knowledge to play this.")
|
||||
return@on true
|
||||
}
|
||||
else if(LYRE_IDs.isLast(lyre.id)){
|
||||
player.sendMessage("Your lyre is out of charges!")
|
||||
} else if(questStage(player, "Fremennik Trials") < 20 || !isQuestComplete(player, "Fremennik Trials")){
|
||||
sendMessage(player,"You lack the knowledge to play this.")
|
||||
} else if(LYRE_IDs.isLast(lyre.id)){
|
||||
sendMessage(player,"Your lyre is out of charges!")
|
||||
} else {
|
||||
player.inventory?.remove(lyre.asItem())
|
||||
player.inventory?.add(Item(LYRE_IDs.getNext(lyre.id)))
|
||||
player.lock()
|
||||
Pulser.submit(telePulse(player))
|
||||
if(removeItem(player,lyre.asItem())){
|
||||
addItem(player,LYRE_IDs.getNext(lyre.id))
|
||||
Pulser.submit(TelePulse(player))
|
||||
}
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(PIPE,SCENERY,"put-inside"){ player, _ ->
|
||||
val bombItem = Item(LIT_BOMB)
|
||||
if(player.inventory.containsItem(bombItem)){
|
||||
player.sendMessage("You stuff the lit object into the pipe.")
|
||||
player.setAttribute("/save:fremtrials:cherrybomb",true)
|
||||
player.inventory.remove(bombItem)
|
||||
if(inInventory(player,LIT_BOMB)){
|
||||
sendMessage(player,"You stuff the lit object into the pipe.")
|
||||
setAttribute(player,"/save:fremtrials:cherrybomb",true)
|
||||
removeItem(player,LIT_BOMB)
|
||||
} else {
|
||||
player.sendMessage("What am I supposed to put in there? A shoe?")
|
||||
sendMessage(player,"What am I supposed to put in there? A shoe?")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(PORTALIDs,SCENERY,"use"){ player, portal ->
|
||||
val toLocation =
|
||||
when(portal.id){
|
||||
2273 -> destRoom(2639, 10012, 2645, 10018).getCenter()
|
||||
2274 -> destRoom(2650, 10034, 2656, 10040).getCenter()
|
||||
2506 -> destRoom(2662, 10023, 2669, 10029).getCenter()
|
||||
2507 -> destRoom(2626, 10023, 2633, 10029).getCenter()
|
||||
2505 -> destRoom(2650, 10001, 2656, 10007).getCenter()
|
||||
2503 -> destRoom(2662, 10012, 2668, 10018).getCenter()
|
||||
2504 -> {player.setAttribute("/save:fremtrials:maze-complete",true); destRoom(2662, 10034, 2668, 10039).getCenter()}
|
||||
player.properties?.teleportLocation = when(portal.id){
|
||||
2273 -> DestRoom(2639, 10012, 2645, 10018).getCenter()
|
||||
2274 -> DestRoom(2650, 10034, 2656, 10040).getCenter()
|
||||
2506 -> DestRoom(2662, 10023, 2669, 10029).getCenter()
|
||||
2507 -> DestRoom(2626, 10023, 2633, 10029).getCenter()
|
||||
2505 -> DestRoom(2650, 10001, 2656, 10007).getCenter()
|
||||
2503 -> DestRoom(2662, 10012, 2668, 10018).getCenter()
|
||||
2504 -> {
|
||||
setAttribute(player,"/save:fremtrials:maze-complete",true)
|
||||
DestRoom(2662, 10034, 2668, 10039).getCenter()
|
||||
}
|
||||
else -> getRandomLocation(player)
|
||||
}
|
||||
player.properties?.teleportLocation = toLocation
|
||||
return@on true;
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(SWENSEN_LADDER,SCENERY,"climb"){ player, _ ->
|
||||
if(player.getAttribute("fremtrials:swensen-accepted",false) == false){
|
||||
player.dialogueInterpreter?.sendDialogues(1283,FacialExpression.ANGRY,"Where do you think you're going?")
|
||||
return@on true
|
||||
if(!getAttribute(player,"fremtrials:swensen-accepted",false)){
|
||||
sendNPCDialogue(player,1283,"Where do you think you're going?",FacialExpression.ANGRY)
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(THORVALD_LADDER, SCENERY, "climb-down") { player, _ ->
|
||||
if (isQuestComplete(player, "Fremennik Trials") || player.getAttribute("fremtrials:thorvald-vote",false)!!) {
|
||||
player.sendMessage("You have no reason to go back down there.")
|
||||
if (isQuestComplete(player, "Fremennik Trials") || getAttribute(player, "fremtrials:thorvald-vote", false)) {
|
||||
sendMessage(player,"You have no reason to go back down there.")
|
||||
return@on true
|
||||
} else if (!player.getAttribute("fremtrials:warrior-accepted",false)!!) {
|
||||
} else if (!getAttribute(player,"fremtrials:warrior-accepted",false)) {
|
||||
player.dialogueInterpreter?.sendDialogues(NPCs.THORVALD_THE_WARRIOR_1289, FacialExpression.ANGRY,
|
||||
"Outerlander... do not test my patience. I do not take",
|
||||
"kindly to people wandering in here and acting as though",
|
||||
|
|
@ -239,7 +232,7 @@ class TFTInteractionListeners : InteractionListener{
|
|||
"You may not enter the battleground with any armour",
|
||||
"or weaponry of any kind."
|
||||
)
|
||||
player.dialogueInterpreter.addAction { player, buttonId ->
|
||||
player.dialogueInterpreter.addAction { _, _ ->
|
||||
player.dialogueInterpreter?.sendDialogues(NPCs.THORVALD_THE_WARRIOR_1289, FacialExpression.ANGRY,
|
||||
"If you need to place your equipment into your bank",
|
||||
"account, I recommend that you speak to the seer. He",
|
||||
|
|
@ -249,42 +242,45 @@ class TFTInteractionListeners : InteractionListener{
|
|||
return@on true
|
||||
}
|
||||
|
||||
if (player.getExtension<Any?>(KoscheiSession::class.java) != null) {
|
||||
KoscheiSession.getSession(player).close()
|
||||
}
|
||||
ClimbActionHandler.climb(player, Animation(828), Location.create(2671, 10099, 2))
|
||||
player.pulseManager.run(KoscheiPulse(player))
|
||||
Pulser.submit(KoscheiPulse(player))
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(THORVALD_LADDER_LOWER, SCENERY, "climb-up") { player, _ ->
|
||||
if (player.getExtension<Any?>(KoscheiSession::class.java) != null) {
|
||||
KoscheiSession.getSession(player).close()
|
||||
}
|
||||
ClimbActionHandler.climb(player, Animation(828), Location.create(2666, 3694, 0))
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(SWAYING_TREE,SCENERY,"cut-branch"){ player, _ ->
|
||||
SkillingTool.getHatchet(player)?.let { Pulser.submit(ChoppingPulse(player)).also { return@on true } }
|
||||
player.sendMessage("You need an axe which you have the woodcutting level to use to do this.")
|
||||
sendMessage(player,"You need an axe which you have the woodcutting level to use to do this.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(SHOPNPCS,NPC,"Trade") { player, npc ->
|
||||
if(isQuestComplete(player, "Fremennik Trials")){
|
||||
npc.asNpc().openShop(player)
|
||||
}
|
||||
else {
|
||||
when(npc.id){
|
||||
NPCs.THORA_THE_BARKEEP_1300 -> sendDialogue(player,"Only Fremenniks may buy drinks here.")
|
||||
NPCs.SKULGRIMEN_1303 -> sendDialogue(player,"Only Fremenniks may purchase weapons and armour here.")
|
||||
NPCs.SIGMUND_THE_MERCHANT_1282 -> sendDialogue(player,"Only Fremenniks may trade with this merchant.")
|
||||
NPCs.YRSA_1301 -> sendDialogue(player,"Only Fremenniks may buy clothes here.")
|
||||
NPCs.FISH_MONGER_1315 -> sendDialogue(player,"Only Fremenniks may purchase fish here.")
|
||||
}
|
||||
} else when(npc.id){
|
||||
NPCs.THORA_THE_BARKEEP_1300 -> sendDialogue(player,"Only Fremenniks may buy drinks here.")
|
||||
NPCs.SKULGRIMEN_1303 -> sendDialogue(player,"Only Fremenniks may purchase weapons and armour here.")
|
||||
NPCs.SIGMUND_THE_MERCHANT_1282 -> sendDialogue(player,"Only Fremenniks may trade with this merchant.")
|
||||
NPCs.YRSA_1301 -> sendDialogue(player,"Only Fremenniks may buy clothes here.")
|
||||
NPCs.FISH_MONGER_1315 -> sendDialogue(player,"Only Fremenniks may purchase fish here.")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
||||
class destRoom(val swx: Int, val swy: Int, val nex: Int, val ney: Int)
|
||||
class DestRoom(val swx: Int, val swy: Int, val nex: Int, val ney: Int)
|
||||
|
||||
fun destRoom.getCenter(): Location {
|
||||
fun DestRoom.getCenter(): Location {
|
||||
return Location((swx + nex) / 2, (swy + ney) / 2).transform(1,0,0)
|
||||
}
|
||||
|
||||
|
|
@ -323,25 +319,29 @@ class TFTInteractionListeners : InteractionListener{
|
|||
return false
|
||||
}
|
||||
|
||||
class spiritPulse(val player: Player?, val fish: Int) : Pulse(){
|
||||
class SpiritPulse(val player: Player, val fish: Int) : Pulse(){
|
||||
var counter = 0
|
||||
val npc = NPC(1273,player?.location)
|
||||
val npc = NPC(1273, player.location)
|
||||
override fun pulse(): Boolean {
|
||||
when(counter++){
|
||||
0 -> npc.init().also { player?.lock() }.also { player?.inventory?.remove(Item(fish)) }
|
||||
1 -> npc.moveStep()
|
||||
2 -> npc.face(player).also { player?.face(npc) }
|
||||
3 -> player?.dialogueInterpreter?.sendDialogues(npc,
|
||||
FacialExpression.HAPPY,"I will kindly accept this offering, and","bestow upon you a gift in return.")
|
||||
4 -> player?.inventory?.remove(Item(3689))
|
||||
5 -> when(fish){
|
||||
383 -> player?.inventory?.add(Item(6125))
|
||||
389 -> player?.inventory?.add(Item(6126))
|
||||
395 -> player?.inventory?.add(Item(6127))
|
||||
0 -> {
|
||||
npc.init()
|
||||
player.lock()
|
||||
removeItem(player,fish)
|
||||
}
|
||||
6 -> player?.unlock()
|
||||
1 -> npc.moveStep()
|
||||
2 -> npc.face(player).also { player.face(npc) }
|
||||
3 -> player.dialogueInterpreter?.sendDialogues(npc,
|
||||
FacialExpression.HAPPY,"I will kindly accept this offering, and","bestow upon you a gift in return.")
|
||||
4 -> removeItem(player,Items.LYRE_3689)
|
||||
5 -> when(fish){
|
||||
383 -> addItem(player,Items.ENCHANTED_LYRE2_6125)
|
||||
389 -> addItem(player,Items.ENCHANTED_LYRE3_6126)
|
||||
395 -> addItem(player,Items.ENCHANTED_LYRE4_6127)
|
||||
}
|
||||
6 -> player.unlock()
|
||||
10 -> npc.clear().also {
|
||||
player?.setAttribute("/save:LyreEnchanted",true)
|
||||
setAttribute(player,"/save:LyreEnchanted",true)
|
||||
return true }
|
||||
}
|
||||
return false
|
||||
|
|
@ -353,15 +353,19 @@ class TFTInteractionListeners : InteractionListener{
|
|||
override fun pulse(): Boolean {
|
||||
when(counter++){
|
||||
0 -> player.animator.animate(SkillingTool.getHatchet(player).animation)
|
||||
4 -> player.animator.reset().also { player.inventory.add(Item(3692));return true}
|
||||
4 -> {
|
||||
player.animator.reset()
|
||||
addItem(player,Items.BRANCH_3692)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class LyreConcertPulse(val player: Player?, val Lyre: Int) : Pulse(){
|
||||
class LyreConcertPulse(val player: Player, val Lyre: Int) : Pulse(){
|
||||
val GENERIC_LYRICS = arrayOf(
|
||||
"${player?.name?.capitalize()} is my name,",
|
||||
"${player.name?.capitalize()} is my name,",
|
||||
"I haven't much to say",
|
||||
"But since I have to sing this song.",
|
||||
"I'll just go ahead and play."
|
||||
|
|
@ -386,90 +390,95 @@ class TFTInteractionListeners : InteractionListener{
|
|||
)
|
||||
val SKILLS = mutableListOf(Skills.SKILL_NAME)
|
||||
var counter = 0
|
||||
val questPoints = player?.questRepository?.points
|
||||
val champGuild = player?.getAchievementDiaryManager()?.hasCompletedTask(DiaryType.VARROCK, 1, 1)?: false
|
||||
val legGuild = questPoints!! >= 111
|
||||
val heroGuild = questPoints!! >= 5
|
||||
val masteredAmount = player?.getSkills()?.masteredSkills!! > 0
|
||||
var SKILLNAME = getMasteredSkillNames(player!!)
|
||||
val questPoints = getQP(player)
|
||||
val champGuild = player.achievementDiaryManager?.hasCompletedTask(DiaryType.VARROCK, 1, 1)?: false
|
||||
val legGuild = questPoints >= 111
|
||||
val heroGuild = questPoints >= 5
|
||||
val masteredAmount = player.getSkills()?.masteredSkills!! > 0
|
||||
var SKILLNAME = getMasteredSkillNames(player)
|
||||
|
||||
val SKILLER_LYRICS = if(masteredAmount){arrayOf(
|
||||
"When people speak of training,",
|
||||
"Some people think they're fine.",
|
||||
"But they just all seem jealous that",
|
||||
"My ${SKILLNAME.random()}'s ninety-nine!"
|
||||
)} else arrayOf("Pee pee poo poo pee","I really have to pee","If you sing this song","Let me know that this is what you see")
|
||||
|
||||
val LYRICS = if(masteredAmount){
|
||||
println(masteredAmount)
|
||||
SKILLER_LYRICS
|
||||
} else if(legGuild){
|
||||
LEGENDS_LYRICS
|
||||
}else if(heroGuild){
|
||||
HEROES_LYRICS
|
||||
}else if(champGuild){
|
||||
CHAMPS_LYRICS
|
||||
}else{GENERIC_LYRICS}
|
||||
val LYRICS = when {
|
||||
masteredAmount -> {
|
||||
arrayOf(
|
||||
"When people speak of training,",
|
||||
"Some people think they're fine.",
|
||||
"But they just all seem jealous that",
|
||||
"My ${SKILLNAME.random()}'s ninety-nine!"
|
||||
)
|
||||
}
|
||||
legGuild -> LEGENDS_LYRICS
|
||||
heroGuild -> HEROES_LYRICS
|
||||
champGuild -> CHAMPS_LYRICS
|
||||
else -> GENERIC_LYRICS
|
||||
}
|
||||
|
||||
override fun pulse(): Boolean {
|
||||
when(counter++){
|
||||
0 -> {
|
||||
player?.lock()
|
||||
animate(player!!,1318,true)
|
||||
player.lock()
|
||||
animate(player,1318,true)
|
||||
}
|
||||
2 -> {
|
||||
animate(player!!,1320,true)
|
||||
PacketRepository.send(MusicPacket::class.java, MusicContext(player, 165, true))
|
||||
animate(player,1320,true)
|
||||
player.musicPlayer.play(MusicEntry.forId(165))
|
||||
}
|
||||
4 -> {
|
||||
animate(player!!,1320,true)
|
||||
PacketRepository.send(MusicPacket::class.java, MusicContext(player, 164, true))
|
||||
animate(player,1320,true)
|
||||
player.musicPlayer.play(MusicEntry.forId(164))
|
||||
sendChat(player,LYRICS[0])
|
||||
}
|
||||
6 -> {
|
||||
animate(player!!,1320,true)
|
||||
PacketRepository.send(MusicPacket::class.java, MusicContext(player, 164, true))
|
||||
animate(player,1320,true)
|
||||
player.musicPlayer.play(MusicEntry.forId(164))
|
||||
sendChat(player,LYRICS[1])
|
||||
}
|
||||
8 -> {
|
||||
animate(player!!,1320,true)
|
||||
PacketRepository.send(MusicPacket::class.java, MusicContext(player, 164, true))
|
||||
animate(player,1320,true)
|
||||
player.musicPlayer.play(MusicEntry.forId(164))
|
||||
sendChat(player,LYRICS[2])
|
||||
}
|
||||
10 ->{
|
||||
animate(player!!,1320,true)
|
||||
PacketRepository.send(MusicPacket::class.java, MusicContext(player, 163, true))
|
||||
animate(player,1320,true)
|
||||
player.musicPlayer.play(MusicEntry.forId(164))
|
||||
sendChat(player,LYRICS[3])
|
||||
}
|
||||
12 ->{
|
||||
player?.setAttribute("/save:lyreConcertPlayed",true)
|
||||
player?.removeAttribute("LyreEnchanted")
|
||||
player?.inventory?.remove(Item(Lyre))
|
||||
addItem(player!!,3689)
|
||||
player?.unlock()
|
||||
setAttribute(player,"/save:lyreConcertPlayed",true)
|
||||
player.removeAttribute("LyreEnchanted")
|
||||
if(removeItem(player,Lyre))
|
||||
addItem(player,3689)
|
||||
player.unlock()
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class BranchFletchingPulse(val player: Player?) : Pulse(){
|
||||
class BranchFletchingPulse(val player: Player) : Pulse(){
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
when(counter++){
|
||||
0 -> player?.animator?.animate(Animation(1248)).also { player!!.lock() }
|
||||
3 -> player?.inventory?.remove(Item(Items.BRANCH_3692)).also { player?.inventory?.add(Item(Items.UNSTRUNG_LYRE_3688)); player!!.unlock(); return true}
|
||||
0 -> player.animator?.animate(Animation(1248)).also { player.lock() }
|
||||
3 -> {
|
||||
if(removeItem(player,Items.BRANCH_3692))
|
||||
addItem(player,Items.UNSTRUNG_LYRE_3688)
|
||||
player.unlock()
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class telePulse(val player: Player) : Pulse(){
|
||||
class TelePulse(val player: Player) : Pulse(){
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
when(counter++){
|
||||
0 -> player.animator.animate(Animation(9600, Animator.Priority.VERY_HIGH), Graphics(1682))
|
||||
6 -> player.properties.teleportLocation = Location.create(2661, 3646, 0)
|
||||
0 -> {
|
||||
player.lock()
|
||||
player.animator.animate(Animation(9600, Animator.Priority.VERY_HIGH), Graphics(1682))
|
||||
}
|
||||
6 -> player.properties.teleportLocation = Location(2661, 3646, 0)
|
||||
7 -> player.unlock().also { return true }
|
||||
}
|
||||
return false
|
||||
|
|
@ -480,8 +489,12 @@ class TFTInteractionListeners : InteractionListener{
|
|||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
when(counter++) {
|
||||
0 -> player.sendMessage("Explore this battleground and find your foe...")
|
||||
20 -> KoscheiSession.create(player).start().also { return true }
|
||||
0 -> sendMessage(player,"Explore this battleground and find your foe...")
|
||||
20 -> {
|
||||
if (player.getExtension<Any?>(KoscheiSession::class.java) != null)
|
||||
return true
|
||||
KoscheiSession.create(player).start().also { return true }
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import api.*
|
|||
import core.game.node.entity.player.link.quest.QuestRepository
|
||||
import org.rs09.consts.Items
|
||||
import rs09.game.interaction.InteractionListener
|
||||
import rs09.game.interaction.InteractionListeners.run
|
||||
|
||||
class ItemQuestRequirementListener : InteractionListener {
|
||||
|
||||
|
|
@ -40,6 +39,8 @@ class ItemQuestRequirementListener : InteractionListener {
|
|||
private val questCapes = intArrayOf(9813,9814)
|
||||
|
||||
override fun defineListeners() {
|
||||
|
||||
/*
|
||||
onEquip(fremennikIslesEquipment) { player, _ ->
|
||||
if (!isQuestComplete(player, "Fremennik Isles")) {
|
||||
sendMessage(player, "You must have completed The Fremennik Isles to equip this.")
|
||||
|
|
@ -48,17 +49,18 @@ class ItemQuestRequirementListener : InteractionListener {
|
|||
return@onEquip true
|
||||
}
|
||||
|
||||
onEquip(fremennikTrialsEquipment) { player, _ ->
|
||||
if (!isQuestComplete(player, "Fremennik Trials")) {
|
||||
sendMessage(player, "You must have completed The Fremennik Trials to equip this.")
|
||||
onEquip(fremennikIslesDuringQuestEquipment){ player, _ ->
|
||||
if (questStage(player, "Fremennik Isles") > 0) {
|
||||
sendMessage(player, "You must have started The Fremennik Isles to equip this.")
|
||||
return@onEquip false
|
||||
}
|
||||
return@onEquip true
|
||||
}
|
||||
*/
|
||||
|
||||
onEquip(fremennikIslesDuringQuestEquipment){ player, _ ->
|
||||
if (questStage(player, "Fremennik Isles") > 0) {
|
||||
sendMessage(player, "You must have started The Fremennik Isles to equip this.")
|
||||
onEquip(fremennikTrialsEquipment.plus(fremennikIslesEquipment)) { player, _ ->
|
||||
if (!isQuestComplete(player, "Fremennik Trials")) {
|
||||
sendMessage(player, "You must have completed The Fremennik Trials to equip this.")
|
||||
return@onEquip false
|
||||
}
|
||||
return@onEquip true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue