Runecrafting skillcape now only consume a charge if the teleport took place

Improved navigation of the runecrafting skillcape teleport menu
Runecrafting skillcape message improvement
This commit is contained in:
Player Name
2025-02-11 13:17:20 +00:00
committed by Ryan
parent 0f14639e9b
commit 8a4ea5d1f3
@@ -15,6 +15,7 @@ import core.ServerStore.Companion.getBoolean
import core.ServerStore.Companion.getInt import core.ServerStore.Companion.getInt
import core.api.* import core.api.*
import core.cache.def.impl.ItemDefinition import core.cache.def.impl.ItemDefinition
import core.tools.END_DIALOGUE
import org.rs09.consts.Items import org.rs09.consts.Items
import content.data.Quests import content.data.Quests
@@ -48,7 +49,6 @@ enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)?
player.dialogueInterpreter.sendDialogue("Your cape is still on cooldown.") player.dialogueInterpreter.sendDialogue("Your cape is still on cooldown.")
} else { } else {
player.dialogueInterpreter.open(509871233) player.dialogueInterpreter.open(509871233)
store[player.name] = used + 1
} }
}), }),
SEED_ATTRACTION("cape_perks:seed_attract",{player -> SEED_ATTRACTION("cape_perks:seed_attract",{player ->
@@ -223,7 +223,7 @@ enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)?
} }
override fun open(vararg args: Any?): Boolean { override fun open(vararg args: Any?): Boolean {
options("Air","Mind","Water","Earth","More...") altarList(0)
stage = 0 stage = 0
return true return true
} }
@@ -235,42 +235,57 @@ enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)?
2 -> sendAltar(player, Altar.MIND) 2 -> sendAltar(player, Altar.MIND)
3 -> sendAltar(player, Altar.WATER) 3 -> sendAltar(player, Altar.WATER)
4 -> sendAltar(player, Altar.EARTH) 4 -> sendAltar(player, Altar.EARTH)
5 -> options("Fire","Body","Cosmic","Chaos","More...").also { stage++ } 5 -> altarList(++stage)
} }
1 -> when(buttonId) { 1 -> when(buttonId) {
1 -> sendAltar(player, Altar.FIRE) 1 -> altarList(--stage)
2 -> sendAltar(player, Altar.BODY) 2 -> sendAltar(player, Altar.FIRE)
3 -> sendAltar(player, Altar.COSMIC) 3 -> sendAltar(player, Altar.BODY)
4 -> sendAltar(player, Altar.CHAOS) 4 -> sendAltar(player, Altar.COSMIC)
5 -> options("Astral","Nature","Law","Death","More...").also { stage++ } 5 -> altarList(++stage)
} }
2 -> when(buttonId) { 2 -> when(buttonId) {
1 -> sendAltar(player, Altar.ASTRAL) 1 -> altarList(--stage)
2 -> sendAltar(player, Altar.NATURE) 2 -> sendAltar(player, Altar.CHAOS)
3 -> sendAltar(player, Altar.LAW) 3 -> sendAltar(player, Altar.ASTRAL)
4 -> sendAltar(player, Altar.DEATH) 4 -> sendAltar(player, Altar.NATURE)
5 -> options("Blood","Nevermind").also { stage++ } 5 -> altarList(++stage)
} }
3 -> when(buttonId) { 3 -> when(buttonId) {
1 -> sendAltar(player, Altar.BLOOD) 1 -> altarList(--stage)
2 -> end() 2 -> sendAltar(player, Altar.LAW)
3 -> sendAltar(player, Altar.DEATH)
4 -> sendAltar(player, Altar.BLOOD)
5 -> altarList(0).also { stage = 0 }
} }
} }
return true return true
} }
fun altarList(stage: Int) {
when (stage) {
0 -> options("Air", "Mind", "Water", "Earth", "More...")
1 -> options("Back...", "Fire", "Body", "Cosmic", "More...")
2 -> options("Back...", "Chaos", "Astral", "Nature", "More...")
3 -> options("Back...", "Law", "Death", "Blood", "More...")
}
}
fun sendAltar(player: Player,altar: Altar) { fun sendAltar(player: Player,altar: Altar) {
end() end()
if (altar == Altar.DEATH && !hasRequirement(player, Quests.MOURNINGS_END_PART_II)) return if (altar == Altar.DEATH && !hasRequirement(player, Quests.MOURNINGS_END_PART_II)) return
if (altar == Altar.ASTRAL && !hasRequirement(player, Quests.LUNAR_DIPLOMACY)) return if (altar == Altar.ASTRAL && !hasRequirement(player, Quests.LUNAR_DIPLOMACY)) return
if (altar == Altar.BLOOD && !hasRequirement(player, Quests.LEGACY_OF_SEERGAZE)) return if (altar == Altar.BLOOD && !hasRequirement(player, Quests.LEGACY_OF_SEERGAZE)) return
if (altar == Altar.LAW && !ItemDefinition.canEnterEntrana(player)) { if (altar == Altar.LAW && !ItemDefinition.canEnterEntrana(player)) {
sendItemDialogue(player, Items.SARADOMIN_SYMBOL_8055, "No weapons or armour are permitted on holy Entrana.") sendMessage(player, "The power of Saradomin prevents you from taking armour or weaponry to Entrana.");
return return
} }
var endLoc = if (altar == Altar.ASTRAL) Location.create(2151, 3864, 0) else altar.ruin.end var endLoc = if (altar == Altar.ASTRAL) Location.create(2151, 3864, 0) else altar.ruin.end
val store = ServerStore.getArchive("daily-abyss-warp")
val used = store.getInt(player.name,0)
store[player.name] = used + 1
player.teleporter.send(endLoc, TeleportManager.TeleportType.TELE_OTHER) player.teleporter.send(endLoc, TeleportManager.TeleportType.TELE_OTHER)
player.incrementAttribute("/save:cape_perks:abyssal_warp",-1) player.incrementAttribute("/save:cape_perks:abyssal_warp",-1)
} }