Modal Double Faces cards fixes:

* Fixed that mdf card can duplicate triggers (example: Skyclave Cleric, see #7187);
 * Fixed that mdf card can raise triggers from another side (example: Kazandu Mammoth, see #7180);
This commit is contained in:
Oleg Agafonov 2020-11-18 02:04:32 +04:00
parent 6dcf7a2e53
commit 656653f38b
5 changed files with 132 additions and 31 deletions

View file

@ -241,40 +241,43 @@ public abstract class GameImpl implements Game, Serializable {
if (card instanceof PermanentCard) {
card = ((PermanentCard) card).getCard();
}
// main card
card.setOwnerId(ownerId);
gameCards.put(card.getId(), card);
state.addCard(card);
addCardToState(card);
// parts
if (card instanceof SplitCard) {
// left
Card leftCard = ((SplitCard) card).getLeftHalfCard();
leftCard.setOwnerId(ownerId);
gameCards.put(leftCard.getId(), leftCard);
state.addCard(leftCard);
addCardToState(leftCard);
// right
Card rightCard = ((SplitCard) card).getRightHalfCard();
rightCard.setOwnerId(ownerId);
gameCards.put(rightCard.getId(), rightCard);
state.addCard(rightCard);
addCardToState(rightCard);
} else if (card instanceof ModalDoubleFacesCard) {
// left
Card leftCard = ((ModalDoubleFacesCard) card).getLeftHalfCard();
leftCard.setOwnerId(ownerId);
gameCards.put(leftCard.getId(), leftCard);
state.addCard(leftCard);
addCardToState(leftCard);
// right
Card rightCard = ((ModalDoubleFacesCard) card).getRightHalfCard();
rightCard.setOwnerId(ownerId);
gameCards.put(rightCard.getId(), rightCard);
state.addCard(rightCard);
addCardToState(rightCard);
} else if (card instanceof AdventureCard) {
Card spellCard = ((AdventureCard) card).getSpellCard();
spellCard.setOwnerId(ownerId);
gameCards.put(spellCard.getId(), spellCard);
state.addCard(spellCard);
addCardToState(spellCard);
}
}
}
private void addCardToState(Card card) {
gameCards.put(card.getId(), card);
state.addCard(card);
}
@Override
public Collection<Card> getCards() {
return gameCards.values();