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();