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
|
|
@ -716,8 +716,9 @@ public class CardView extends SimpleCardView {
|
|||
// emblem images are always with common (black) symbol
|
||||
this.frameStyle = FrameStyle.M15_NORMAL;
|
||||
this.expansionSetCode = emblem.getExpansionSetCode();
|
||||
this.cardNumber = "";
|
||||
this.cardNumber = emblem.getCardNumber();
|
||||
this.imageNumber = emblem.getImageNumber();
|
||||
this.usesVariousArt = emblem.getUsesVariousArt();
|
||||
this.rarity = Rarity.COMMON;
|
||||
|
||||
this.playableStats = emblem.playableStats.copy();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package mage.view;
|
||||
|
||||
import mage.cards.Card;
|
||||
import mage.game.command.Emblem;
|
||||
import mage.game.command.emblems.EmblemOfCard;
|
||||
import mage.players.PlayableObjectStats;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -15,7 +15,9 @@ public class EmblemView implements CommandObjectView, Serializable {
|
|||
|
||||
protected UUID id;
|
||||
protected String name;
|
||||
protected String cardNumber = "";
|
||||
protected int imageNum;
|
||||
protected boolean usesVariousArt = false;
|
||||
protected String expansionSetCode;
|
||||
protected List<String> rules;
|
||||
protected PlayableObjectStats playableStats = new PlayableObjectStats();
|
||||
|
|
@ -26,6 +28,10 @@ public class EmblemView implements CommandObjectView, Serializable {
|
|||
this.imageNum = emblem.getImageNumber();
|
||||
this.expansionSetCode = emblem.getExpansionSetCode();
|
||||
this.rules = emblem.getAbilities().getRules(emblem.getName());
|
||||
if (emblem instanceof EmblemOfCard) {
|
||||
cardNumber = emblem.getCardNumber();
|
||||
usesVariousArt = ((EmblemOfCard) emblem).getUsesVariousArt();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -43,10 +49,17 @@ public class EmblemView implements CommandObjectView, Serializable {
|
|||
return id;
|
||||
}
|
||||
|
||||
public String getCardNumber() {
|
||||
return cardNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getImageNumber() {
|
||||
return imageNum;
|
||||
}
|
||||
public boolean getUsesVariousArt() {
|
||||
return this.usesVariousArt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getRules() {
|
||||
|
|
|
|||
|
|
@ -117,6 +117,10 @@ public class TableView implements Serializable {
|
|||
if (table.getMatch().getOptions().isPlaneChase()) {
|
||||
addInfo.append(" PC");
|
||||
}
|
||||
if (!(table.getMatch().getOptions().getPerPlayerEmblemCards().isEmpty())
|
||||
|| !(table.getMatch().getOptions().getGlobalEmblemCards().isEmpty())) {
|
||||
addInfo.append(" EC");
|
||||
}
|
||||
if (table.getMatch().getOptions().isSpectatorsAllowed()) {
|
||||
addInfo.append(" SP");
|
||||
}
|
||||
|
|
@ -177,6 +181,10 @@ public class TableView implements Serializable {
|
|||
if (tourneyMatchOptions.isPlaneChase()) {
|
||||
infoText.append(" PC");
|
||||
}
|
||||
if (!(table.getTournament().getOptions().getMatchOptions().getPerPlayerEmblemCards().isEmpty())
|
||||
|| !(table.getTournament().getOptions().getMatchOptions().getGlobalEmblemCards().isEmpty())) {
|
||||
infoText.append(" EC");
|
||||
}
|
||||
if (table.getTournament().getOptions().isWatchingAllowed()) {
|
||||
infoText.append(" SP");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue