forked from External/mage
new feature: Emblem Cards (#10498)
* new feature: Emblem Cards Allows match/tournament creator to specify cards to give each player emblem versions of (or just the starting player for symmetric effects). Technical details: - new UI for specifying emblem cards (.dck files) - available for all match/tournament types - new class `EmblemOfCard` - new method `copyWithZone` on `AbilityImpl` (used to make abilities work from command zone) - new fields on `GameOptions` and `MatchOptions` for emblem cards - emblems are granted after mulligans, before first turn (technically after Planechase starting plane creation) * fixes * defaults for emblem cards in match options (fixes quick game buttons) * minor fixes * use DeckCardInfo instead of Card for emblem cards options * restore accessible parent properties * fix images for card emblems * look up cards in a way that preserves which art * fix typos; make Emblem.sourceObject protected * add descriptions to planechase and emblem cards * fixes * add some unit tests for known working cards * fix author name * add explanation comment * fix up tests * copyWithZone: no longer modifies zone for singleton abilities * directly check for MageSingleton
This commit is contained in:
parent
04dba063aa
commit
41874b0b4b
15 changed files with 774 additions and 39 deletions
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
package mage.game.match;
|
||||
|
||||
import mage.cards.decks.DeckCardInfo;
|
||||
import mage.constants.MatchBufferTime;
|
||||
import mage.constants.MatchTimeLimit;
|
||||
import mage.constants.MultiplayerAttackOption;
|
||||
|
|
@ -11,10 +12,7 @@ import mage.game.result.ResultProtos;
|
|||
import mage.players.PlayerType;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -52,6 +50,9 @@ public class MatchOptions implements Serializable {
|
|||
protected MatchBufferTime matchBufferTime; // Amount of time each player gets before their normal time limit counts down. Refreshes each time the normal timer is invoked.
|
||||
protected MulliganType mulliganType;
|
||||
|
||||
protected Collection<DeckCardInfo> perPlayerEmblemCards;
|
||||
protected Collection<DeckCardInfo> globalEmblemCards;
|
||||
|
||||
/*public MatchOptions(String name, String gameType) {
|
||||
this.name = name;
|
||||
this.gameType = gameType;
|
||||
|
|
@ -65,6 +66,8 @@ public class MatchOptions implements Serializable {
|
|||
this.password = "";
|
||||
this.multiPlayer = multiPlayer;
|
||||
this.numSeats = numSeats;
|
||||
this.perPlayerEmblemCards = Collections.emptySet();
|
||||
this.globalEmblemCards = Collections.emptySet();
|
||||
}
|
||||
|
||||
public void setNumSeats (int numSeats) {
|
||||
|
|
@ -288,4 +291,19 @@ public class MatchOptions implements Serializable {
|
|||
return mulliganType;
|
||||
}
|
||||
|
||||
public Collection<DeckCardInfo> getPerPlayerEmblemCards() {
|
||||
return perPlayerEmblemCards;
|
||||
}
|
||||
|
||||
public void setPerPlayerEmblemCards(Collection<DeckCardInfo> perPlayerEmblemCards) {
|
||||
this.perPlayerEmblemCards = perPlayerEmblemCards;
|
||||
}
|
||||
|
||||
public Collection<DeckCardInfo> getGlobalEmblemCards() {
|
||||
return globalEmblemCards;
|
||||
}
|
||||
|
||||
public void setGlobalEmblemCards(Collection<DeckCardInfo> globalEmblemCards) {
|
||||
this.globalEmblemCards = globalEmblemCards;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue