diff --git a/src/main/java/controller/AIPlayerController.java b/src/main/java/controller/AIPlayerController.java index 16ebfd71..0799e16b 100644 --- a/src/main/java/controller/AIPlayerController.java +++ b/src/main/java/controller/AIPlayerController.java @@ -193,11 +193,6 @@ public String getSpecialCommand() { lastAICommand = command; return command; } - if (lastResponse.contains("number")) { - String command = (CoinDice.rollDice() + CoinDice.rollDice() - 1) + ""; - lastAICommand = command; - return command; - } if (lastResponse.contains("you should special summon right now")) { String command = "summon"; lastAICommand = command; @@ -253,13 +248,19 @@ public String getSpecialCommand() { return lastAICommand; } } - if (lastResponse.contains("choose a monster from your or your opponents graveyard")) { + if (lastResponse.contains("choose a monster from your or your opponents graveyard") || + lastResponse.contains("(me (number)/opponent (number))")) { String command; if (CoinDice.tossCoin() == 1) command = "me " + CoinDice.rollDice(); else command = "opponent " + CoinDice.rollDice(); lastAICommand = command; return command; } + if (lastResponse.contains("number")) { + String command = (CoinDice.rollDice() + CoinDice.rollDice() - 1) + ""; + lastAICommand = command; + return command; + } if (CoinDice.rollDice() == 6) { lastAICommand = "cancel"; diff --git a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java index 4611796e..2d368db0 100644 --- a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java +++ b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java @@ -255,6 +255,7 @@ default void activateSpell(GameController gameController) throws GameException { throw new GameException(GameResponses.NO_CARDS_SELECTED.response); } else { Card card = selectedCell.getCellCard(); + if (card == null) return; if (card.isMonster()) { throw new GameException(GameResponses.ACTIVATION_ONLY_FOR_SPELL.response); } else { @@ -341,6 +342,7 @@ default void specialSummon(GameController gameController) throws GameException { } default boolean isSummonable(Cell cell,GameController gameController) { + if (cell.isEmpty()) return false; Card card=cell.getCellCard(); if (card.isMonster()&&gameController.currentTurnPlayer.getGameBoard().isCellInHandZone(cell)) { return ((Monster) card).getCardType() != CardType.RITUAL; diff --git a/src/main/java/model/cards/SpellAndTrap.java b/src/main/java/model/cards/SpellAndTrap.java index a4f27180..2d86f862 100644 --- a/src/main/java/model/cards/SpellAndTrap.java +++ b/src/main/java/model/cards/SpellAndTrap.java @@ -57,8 +57,10 @@ else if (spellAndTrap.name.equals("Sword of dark destruction")) public static void updateSpellInGameBoard(GameController gameController) { Cell selectedCell = Cell.getSelectedCell(); + if (selectedCell == null) return; Card card = selectedCell.getCellCard(); SpellAndTrap spell = (SpellAndTrap) card; + if (spell == null) return; GameBoard playerGameBoard = gameController.getCurrentTurnPlayer().getGameBoard(); if (!playerGameBoard.isCellInSpellAndTrapZone(selectedCell)) { playerGameBoard.getHandCards().remove(selectedCell);