public void attackIfBeneficial(BoardFunctionality boardFunc) { if (rowCanBeAttacked(boardFunc.friendlySide.Rows[Side.FieldUnit])) { attackRow(boardFunc.enemySide.Rows[Side.FieldUnit], boardFunc); } else if (rowCanBeAttacked(boardFunc.friendlySide.Rows[Side.Armies])) { attackRow(boardFunc.enemySide.Rows[Side.Armies], boardFunc); } else { if (isRowRevealed(boardFunc.enemySide.Rows[Side.Armies]) && isRowRevealed(boardFunc.enemySide.Rows[Side.FieldUnit])) { foreach (Card card in boardFunc.friendlySide.Rows[Side.FieldUnit].cardsInContainer) { if (!card.cardProps.exhausted) { boardFunc.LifeDamage(card); } } } } /*else * { * boardFunc.enemySide.boardFunc.BOARDMESSAGE.addMessage("AI has no attacks this round"); * }*/ }
public override void fieldLogic(MouseState mouseState, FunctionalRow row, Card card, BoardFunctionality boardFunc) { if (clickedInCardBox) { if (!row.isWithinModifiedPosition(mouseState, card)) { if (selectAction.TargetEnemyCard(mouseState, boardFunc, false) != null) { MouseTransformer.Set(MouseTransformer.State.Reg); if (selectAction.TargetEnemyCard(mouseState, boardFunc, false).correctRow(boardFunc.enemySide).revealed) { switch (selectAction.TargetEnemyCard(mouseState, boardFunc, false).correctRow(boardFunc.enemySide).type) { case CardType.FieldUnit: boardFunc.Fight(card, selectAction.TargetEnemyCard(mouseState, boardFunc, false)); break; case CardType.Army: if (boardFunc.enemySide.Rows[Side.FieldUnit].isEmpty()) { boardFunc.Fight(card, selectAction.TargetEnemyCard(mouseState, boardFunc, false)); } else if (!boardFunc.enemySide.Rows[Side.FieldUnit].isEmpty()) { boardFunc.BOARDMESSAGE.addMessage("Cannot fight an Army if a FieldUnit is present on the board!"); } break; case CardType.General: boardFunc.BOARDMESSAGE.addMessage("A FieldUnit cannot target a General!"); break; } } } else { MouseTransformer.Set(MouseTransformer.State.Atk); resetIfNoSelection(mouseState, row, card, boardFunc); } } if (mouseState.LeftButton == ButtonState.Released && boardFunc.enemySide.Life.isWithinBox(mouseState)) { if (boardFunc.enemySide.Rows[Side.FieldUnit].isEmpty() && boardFunc.enemySide.Rows[Side.Armies].isEmpty() && boardFunc.enemySide.Rows[Side.Armies].revealed) { boardFunc.LifeDamage(card); } else { boardFunc.BOARDMESSAGE.addMessage("---> or Fog"); boardFunc.BOARDMESSAGE.addMessage("---> an Enemy Army"); boardFunc.BOARDMESSAGE.addMessage("---> an Enemy FieldUnit"); boardFunc.BOARDMESSAGE.addMessage("Cannot deal damage to a player if there's:"); } resetIfNoSelection(mouseState, row, card, boardFunc); } resetIfNoSelection(mouseState, row, card, boardFunc); } }
public override void abilityImplementation(MouseState mouseState, BoardFunctionality boardFunc) { boardFunc.LifeDamage(INITIALCARD, this); }