diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/combat/CombatMovement.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/combat/CombatMovement.kt index 3483ac7565..f6637baa8d 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/combat/CombatMovement.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/character/mode/combat/CombatMovement.kt @@ -1,6 +1,5 @@ package world.gregs.voidps.engine.entity.character.mode.combat -import world.gregs.voidps.engine.client.ui.dialogue import world.gregs.voidps.engine.client.variable.hasClock import world.gregs.voidps.engine.data.config.CombatDefinition import world.gregs.voidps.engine.data.definition.CombatDefinitions @@ -43,9 +42,6 @@ class CombatMovement( } override fun tick() { - if (character is Player && character.dialogue != null) { - return - } if (target.tile.level != character.tile.level) { character.mode = EmptyMode return diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/queue/ActionQueue.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/queue/ActionQueue.kt index 9f8583766c..e553e8f595 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/queue/ActionQueue.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/queue/ActionQueue.kt @@ -1,6 +1,7 @@ package world.gregs.voidps.engine.queue import kotlinx.coroutines.* +import world.gregs.voidps.engine.client.ui.closeDialogue import world.gregs.voidps.engine.client.ui.closeMenu import world.gregs.voidps.engine.client.ui.dialogue import world.gregs.voidps.engine.client.ui.hasMenuOpen @@ -34,6 +35,7 @@ class ActionQueue( fun tick() { if (queue.contains(ActionPriority.Strong)) { (character as? Player)?.closeMenu() + (character as? Player)?.closeDialogue() weakQueue.clear() } process(queue) @@ -45,7 +47,7 @@ class ActionQueue( while (action != null) { // Cache end to exit before the last action can add any children val end = action.next == null - if (action.process() && canProcess()) { + if (action.process() && (action.priority == ActionPriority.Strong || canProcess())) { val next = action.next queue.remove(action) scope.launch(action) diff --git a/game/src/main/kotlin/content/entity/combat/Combat.kt b/game/src/main/kotlin/content/entity/combat/Combat.kt index baef9d9642..a9fa6d9452 100644 --- a/game/src/main/kotlin/content/entity/combat/Combat.kt +++ b/game/src/main/kotlin/content/entity/combat/Combat.kt @@ -7,7 +7,6 @@ import content.skill.magic.Magic import content.skill.melee.weapon.* import world.gregs.voidps.engine.Script import world.gregs.voidps.engine.client.message -import world.gregs.voidps.engine.client.ui.dialogue import world.gregs.voidps.engine.client.variable.hasClock import world.gregs.voidps.engine.client.variable.start import world.gregs.voidps.engine.client.variable.stop @@ -165,11 +164,8 @@ class Combat(val combatDefinitions: CombatDefinitions) : character.mode = CombatMovement(character, target) character.target = target } - val movement = character.mode as CombatMovement - if (character is Player && character.dialogue != null) { - return - } - if (character.target == null || !Target.attackable(character, target)) { + val movement = character.mode as CombatMovement + if (character.target == null || !Target.attackable(character, target)) { character.mode = EmptyMode return } diff --git a/game/src/main/kotlin/content/entity/player/dialogue/type/LevelUp.kt b/game/src/main/kotlin/content/entity/player/dialogue/type/LevelUp.kt index 73455184a6..0e34c36b4a 100644 --- a/game/src/main/kotlin/content/entity/player/dialogue/type/LevelUp.kt +++ b/game/src/main/kotlin/content/entity/player/dialogue/type/LevelUp.kt @@ -1,6 +1,7 @@ package content.entity.player.dialogue.type import world.gregs.voidps.engine.Script +import world.gregs.voidps.engine.client.message import world.gregs.voidps.engine.client.ui.* import world.gregs.voidps.engine.client.ui.chat.an import world.gregs.voidps.engine.client.ui.close @@ -66,6 +67,7 @@ class LevelUp : Script { jingle("level_up_${skill.name.lowercase()}${if (unlock) "_unlock" else ""}", 0.5) addVarbit("skill_stat_flash", skill.name.lowercase()) val level = if (skill == Constitution) to / 10 else to + message("Congratulations! You've just advanced${skill.name.an()} ${skill.name} level! You have now reached level $level!") weakQueue("level_up") { levelUp( this,