diff --git a/pom.xml b/pom.xml index ece0aae0..6fdc4ce0 100644 --- a/pom.xml +++ b/pom.xml @@ -11,8 +11,8 @@ UTF-8 11 - 11 11 + 11 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/GameController.java b/src/main/java/controller/gamephasescontrollers/GameController.java index 7d28193f..84170964 100644 --- a/src/main/java/controller/gamephasescontrollers/GameController.java +++ b/src/main/java/controller/gamephasescontrollers/GameController.java @@ -243,7 +243,7 @@ public void activateTrapEffect(ArrayList trapsCanBeActivated) { Cell selectedCell = Cell.getSelectedCell(); for (SpellAndTrap spellAndTrap : trapsCanBeActivated) { if (selectedCell.getCellCard().getName().equals(spellAndTrap.getName())) { - SpellAndTrap.activateSpellOrTrapEffects(this, spellAndTrap); + SpellAndTrap.activateSpellEffects(this, spellAndTrap); return; } } diff --git a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java index 8cfc1b10..2d368db0 100644 --- a/src/main/java/controller/gamephasescontrollers/MainPhasesController.java +++ b/src/main/java/controller/gamephasescontrollers/MainPhasesController.java @@ -16,7 +16,6 @@ import model.cards.monsters.TheTricky; import model.cards.trapandspells.TimeSeal; import model.cards.trapandspells.TorrentialTribute; -import model.cards.trapandspells.TrapHole; import model.exceptions.GameException; import view.ConsoleColors; import view.ViewInterface; @@ -256,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 { @@ -271,7 +271,7 @@ default void activateSpell(GameController gameController) throws GameException { if(Cell.getSelectedCell().isEmpty()||Cell.getSelectedCell()==null){ System.out.println("error in activate effect"); } - SpellAndTrap.activateSpellOrTrapEffects(gameController, spell); + SpellAndTrap.activateSpellEffects(gameController, spell); // if(!playerGameBoard.isCellInSpellAndTrapZone(selectedCell)) { // playerGameBoard.getHandCards().remove(selectedCell); // if (spell.getAttribute() == SpellOrTrapAttribute.FIELD) { @@ -342,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 ba3962d1..2d86f862 100644 --- a/src/main/java/model/cards/SpellAndTrap.java +++ b/src/main/java/model/cards/SpellAndTrap.java @@ -26,7 +26,7 @@ public SpellAndTrap(String name, String description, int price, this.status = status; } - public static void activateSpellOrTrapEffects(GameController gameController, SpellAndTrap spellAndTrap) { + public static void activateSpellEffects(GameController gameController, SpellAndTrap spellAndTrap) { if (spellAndTrap.name.equals("Monster Reborn")) MonsterReborn.setActivated(gameController); else if (spellAndTrap.name.equals("Terraforming")) Terraforming.setActivated(gameController); else if (spellAndTrap.name.equals("Pot of Greed")) PotofGreed.setActivated(gameController); @@ -53,14 +53,14 @@ else if (spellAndTrap.name.equals("Sword of dark destruction")) else { ViewInterface.showResult(GameResponses.ACTIVATION_ONLY_FOR_SPELL.response); } - //todo : in be nazaram qhalate (parham) - SpellAbsorption.handleEffect(); } 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); @@ -74,6 +74,7 @@ public static void updateSpellInGameBoard(GameController gameController) { } } } else { + SpellAbsorption.handleEffect(); selectedCell.setCardStatus(CardStatus.OCCUPIED); } Cell.deselectCell();