QuickWaveStart door warns about wave reset.

This commit is contained in:
Tooze 2026-05-23 11:51:11 -04:00
parent ed44e5bde9
commit 2263604c7b
2 changed files with 45 additions and 49 deletions

View file

@ -17,20 +17,20 @@ class BADevHelper : CommandSet(Privilege.ADMIN) {
var babotcount = 0
override fun defineCommands() {
define ("maxbarbpoints") { player,_ ->
define ("maxbapoints") { player,_ ->
addBAPoints(player,BarbAssaultPoints(500, 500, 500,500))
return@define
}
define ("setbarbwave") { player,args ->
define ("setbawave") { player,args ->
setBAWave(player,args[1].toInt())
return@define
}
define ("resetbarbpoints") { player,_ ->
define ("resetbapoints") { player,_ ->
setBAPoints(player,BarbAssaultPoints(0, 0, 0,0))
return@define
}
define ("resetbarblevels") { player,_ ->
define ("resetbalevels") { player,_ ->
setBALevels(player,BarbAssaultLevels(0, 0, 0,0))
return@define
}

View file

@ -42,38 +42,34 @@ class BALobby : InteractionListener, MapArea {
if (enteredZone == QUICK_START) { return }
if (enteredZone == REGION_10322) { return }
updatePlayerWave(entity)
//updatePlayerWave(entity)
openOverlay(entity as Player, 256)
}
override fun areaLeave(entity: Entity, logout: Boolean) {
if (entity is Player) {
entity.interfaceManager.closeOverlay()
//this is redundant.
val barbassItems = intArrayOf(Items.POISONED_WORMS_10540)
entity.equipment.removeAll(barbassItems)
entity.inventory.removeAll(barbassItems)
}
}
//was used in early development.
fun updatePlayerWave(entity: Entity) {
val player = entity as? Player ?: return
val location = player.location
if (QUICK_START.insideBorder(location)) {
entity.setAttribute("/save:barbass:wave", 1)
setBAWave(entity,1)
return
}
for ((index, lobby) in waveLobbies.withIndex()) {
if (lobby.insideBorder(location)) {
if (lobby != MAIN_LOBBY) { // MAIN_LOBBY should not assign a wave number
entity.setAttribute("/save:barbass:wave", index )
setBAWave(entity,index)
}
return
}
}
}
private fun capeCheck(player: Player): Boolean {
val wornCape = getItemFromEquipment(player, EquipmentSlot.CAPE)?.id ?: -1
if (wornCape != -1) {
@ -94,7 +90,7 @@ class BALobby : InteractionListener, MapArea {
val team = session?.team
if (team == null) {
leader.sendMessage("No active session found.")
leader.debug("[DEBUG] No active session found.")
return@onUseWithPlayer false
}
@ -113,27 +109,18 @@ class BALobby : InteractionListener, MapArea {
on(Items.SCROLL_10512, IntType.ITEM, "Read") { player, _ ->
//https://youtu.be/GYh6JPKNOSA?t=233 -- I know 2017, but only example for read scroll iv found.
// ima cry, that YT account got deleted.
// waveAdvance(player)
waveAdvance(player)
return@on true
}
on(Items.SCROLL_10512, IntType.ITEM, "Write-Role") { player, _ ->
//player.interfaceManager.open(Component(493))
//setInterfaceModel(player, 20561, 493, 8,1)
sendDialogueOptions(player, "Which role would you like to perform?","Attacker", "Defender","Collector","Healer","Cancel")
addDialogueAction(player) { _ , buttonId -> writeRole(player,buttonId) }
return@on true
}
on(Items.SCROLL_10512, IntType.ITEM, "Clear") { player, _ ->
val session = getBASession(player)
val team = session?.team
if (team != null) {
disbandTeam(session)
createTeam(player)
} else {
createTeam(player)
}
if (getBASession(player)?.team != null) return@on true
createTeam(player)
return@on true
}
on(Items.SCROLL_10512, IntType.ITEM, "Destroy") { player, item ->
@ -143,7 +130,6 @@ class BALobby : InteractionListener, MapArea {
if (removeItem(player, item)) {
playAudio(player, Sounds.DESTROY_OBJECT_2381)
abandonTeam(player)
//updateCurrentTeam(player)
}
}
}
@ -151,33 +137,42 @@ class BALobby : InteractionListener, MapArea {
}
on(Scenery.LADDER_20193, IntType.SCENERY, "Climb-down") { player, _ ->
val session = getBASession(player) ?: run {
player.sendMessage("You are not in a session!")
return@on true
}
if (session.state != BarbassaultState.PARTY_CREATION) {
player.sendMessage("Your team is already starting or in the arena!")
return@on true
}
val session = getBASession(player)
if (session == null) { player.debug("[DEBUG] You are not in a session!"); return@on true }
if (session.team.isLeader(player)) return@on true
if (session.state != BarbassaultState.PARTY_CREATION) { player.debug("[DEBUG] Your team is already starting or in the arena!"); return@on true }
closeOverlay(player) // close party
openOverlay(player, 494) // open countdown
closeOverlay(player) // close party,
openOverlay(player, 494)// open countdown,
session.beginStartingPhase()
return@on true
}
on(Scenery.DOOR_20209, IntType.SCENERY, "Pass") { player, node ->
if (!capeCheck(player)) { return@on false }
//todo Not allowed to enter QuickStart with Scroll
if (!QUICK_START.insideBorder(player.location)){
//todo warning message you are about to reset your wave
setBAWave(player,1)
handlePlayerOptionDoor(player) { role ->
//player.sendMessage("You are a ${role.name.lowercase().replaceFirstChar { it.uppercase() }}.")
handleWaveDoor(player, node, 489)
addToQueue(player, role)
if (!capeCheck(player)) return@on false
// todo Not allowed to enter QuickStart with Scroll
if (!QUICK_START.insideBorder(player.location)) {
if (getBAWave(player) != 1) {
sendDialogueOptions(player,"Are you sure you wish to reset your wave progress??","Yes","No")
addDialogueAction(player) { _, buttonId ->
if (buttonId == 2) {
setBAWave(player, 1)
handlePlayerOptionDoor(player) { role ->
handleWaveDoor(player, node, 489)
addToQueue(player, role)
}
}
}
} else {
handlePlayerOptionDoor(player) { role ->
handleWaveDoor(player, node, 489)
addToQueue(player, role)
}
}
}else {
} else {
handleWaveDoor(player, node, 489)
}
return@on true
@ -335,12 +330,13 @@ class BALobby : InteractionListener, MapArea {
}
}
}
fun waveAdvance(player: Player) {
val wave = player.getAttribute("barbass:wave", 1)
val wave = getBAWave(player)
if (wave in 1..waveLobbies.size) {
if (wave == 10) {player.setAttribute("/save:barbass:wave", 1)}
} else {
println("Invalid wave number: $wave")
sendMessage(player,"Invalid wave number: $wave. PLEASE REPORT THIS!")
}
}