diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/client/battle/SingleActionRequest.kt b/common/src/main/kotlin/com/cobblemon/mod/common/client/battle/SingleActionRequest.kt index 34bbf5bbf3..5ec9f74fe7 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/client/battle/SingleActionRequest.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/client/battle/SingleActionRequest.kt @@ -22,22 +22,9 @@ class SingleActionRequest( val singleActionRequests = mutableListOf() singleActionRequests.addAll( request.iterate(actor.activePokemon) { targetable, moveSet, forceSwitch -> - val singleRequest = SingleActionRequest(targetable, request.side, moveSet, forceSwitch, !request.noCancel) - // Known quirk of Showdown. It'll ask for actions on fainted slots - // Also during a forced switch in doubles/triples it'll ask for actions on non-switching slots - // Need to find better place to fix this - // Probably should find a way to fix this serverside so clients don't - // need to deal with this silliness. - val pokemon = request.side?.pokemon?.firstOrNull { - it.uuid == targetable.battlePokemon?.uuid - } - if((pokemon != null && pokemon.condition.contains("fnt")) || (moveSet == null && !forceSwitch)) { - singleRequest.response = PassActionResponse - } - singleRequest + SingleActionRequest(targetable, request.side, moveSet, forceSwitch, !request.noCancel) } ) - return singleActionRequests } } diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleGUI.kt b/common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleGUI.kt index aa88e43d1d..bfbb85095e 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleGUI.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleGUI.kt @@ -8,6 +8,7 @@ package com.cobblemon.mod.common.client.gui.battle +import com.cobblemon.mod.common.battles.PassActionResponse import com.cobblemon.mod.common.battles.ShowdownActionResponse import com.cobblemon.mod.common.client.CobblemonClient import com.cobblemon.mod.common.client.battle.ClientBattleActor @@ -130,11 +131,21 @@ class BattleGUI : Screen(battleLang("gui.title")) { queuedActions.clear() } - fun deriveRootActionSelection(actor: ClientBattleActor, request: SingleActionRequest): BattleActionSelection { + fun deriveRootActionSelection(actor: ClientBattleActor, request: SingleActionRequest): BattleActionSelection? { + + return if (request.forceSwitch) { BattleSwitchPokemonSelection(this, request) } else { - BattleGeneralActionSelection(this, request) + // Known quirk of Showdown. It'll ask for actions on fainted slots + // Also during a forced switch in doubles/triples it'll ask for actions on non-switching slots + val pokemon = request.side?.pokemon?.firstOrNull { it.uuid === request.activePokemon.battlePokemon?.uuid } + if((pokemon != null && pokemon.condition.contains("fnt")) || (request.moveSet == null)) { + request.response = PassActionResponse + null + } else { + BattleGeneralActionSelection(this, request) + } } }