mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
* Added new game mode: Oathbreaker (#5678);
This commit is contained in:
parent
adb666587b
commit
07cf5201ba
17 changed files with 1100 additions and 236 deletions
|
@ -668,6 +668,12 @@ public class NewTableDialog extends MageDialog {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "Variant Magic - Oathbreaker":
|
||||||
|
if (!options.getGameType().startsWith("Oathbreaker")) {
|
||||||
|
JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Deck type Oathbreaker needs also a Oathbreaker game type", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// game => deck
|
// game => deck
|
||||||
|
@ -704,6 +710,13 @@ public class NewTableDialog extends MageDialog {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "Oathbreaker Two Player Duel":
|
||||||
|
case "Oathbreaker Free For All":
|
||||||
|
if (!options.getDeckType().equals("Variant Magic - Oathbreaker")) {
|
||||||
|
JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Deck type Oathbreaker needs also a Oathbreaker game type", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,215 @@
|
||||||
|
package mage.deck;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.keyword.PartnerAbility;
|
||||||
|
import mage.abilities.keyword.PartnerWithAbility;
|
||||||
|
import mage.cards.Card;
|
||||||
|
import mage.cards.decks.Deck;
|
||||||
|
import mage.filter.FilterMana;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class Oathbreaker extends Vintage {
|
||||||
|
|
||||||
|
protected List<String> bannedCommander = new ArrayList<>();
|
||||||
|
private static final Map<String, Integer> pdAllowed = new HashMap<>();
|
||||||
|
|
||||||
|
public Oathbreaker() {
|
||||||
|
super();
|
||||||
|
this.name = "Oathbreaker";
|
||||||
|
|
||||||
|
// banned = vintage + oathbreaker's list: https://weirdcards.org/oathbreaker-ban-list
|
||||||
|
// last updated 4/4/19 - High Tide banned
|
||||||
|
banned.add("Ad Nauseam");
|
||||||
|
banned.add("Ancestral Recall");
|
||||||
|
banned.add("Balance");
|
||||||
|
banned.add("Biorhythm");
|
||||||
|
banned.add("Black Lotus");
|
||||||
|
banned.add("Channel");
|
||||||
|
banned.add("Doomsday");
|
||||||
|
banned.add("Emrakul, the Aeons Torn");
|
||||||
|
banned.add("Expropriate");
|
||||||
|
banned.add("Fastbond");
|
||||||
|
banned.add("Gifts Ungiven");
|
||||||
|
banned.add("Griselbrand");
|
||||||
|
banned.add("High Tide");
|
||||||
|
banned.add("Library of Alexandria");
|
||||||
|
banned.add("Limited Resources");
|
||||||
|
banned.add("Lion's Eye Diamond");
|
||||||
|
banned.add("Mana Crypt");
|
||||||
|
banned.add("Mana Geyser");
|
||||||
|
banned.add("Mana Vault");
|
||||||
|
banned.add("Mox Emerald");
|
||||||
|
banned.add("Mox Jet");
|
||||||
|
banned.add("Mox Pearl");
|
||||||
|
banned.add("Mox Ruby");
|
||||||
|
banned.add("Mox Sapphire");
|
||||||
|
banned.add("Natural Order");
|
||||||
|
banned.add("Painter's Servant");
|
||||||
|
banned.add("Panoptic Mirror");
|
||||||
|
banned.add("Primal Surge");
|
||||||
|
banned.add("Primeval Titan");
|
||||||
|
banned.add("Recurring Nightmare");
|
||||||
|
banned.add("Saheeli, the Gifted");
|
||||||
|
banned.add("Sol Ring");
|
||||||
|
banned.add("Sundering Titan");
|
||||||
|
banned.add("Sway of the Stars");
|
||||||
|
banned.add("Sylvan Primordial");
|
||||||
|
banned.add("Time Vault");
|
||||||
|
banned.add("Time Walk");
|
||||||
|
banned.add("Tinker");
|
||||||
|
banned.add("Tolarian Academy");
|
||||||
|
banned.add("Tooth and Nail");
|
||||||
|
banned.add("Trade Secrets");
|
||||||
|
banned.add("Upheaval");
|
||||||
|
banned.add("Worldfire");
|
||||||
|
banned.add("Yawgmoth's Bargain");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDeckMinSize() {
|
||||||
|
return 60 - (1 + 2); // spell + 2 x partner oathbreakers
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSideboardMinSize() {
|
||||||
|
return 2; // spell + oathbreaker
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean validate(Deck deck) {
|
||||||
|
boolean valid = true;
|
||||||
|
FilterMana colorIdentity = new FilterMana();
|
||||||
|
|
||||||
|
if (deck.getCards().size() + deck.getSideboard().size() != 60) {
|
||||||
|
invalid.put("Deck", "Must contain " + 60 + " cards: has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Integer> counts = new HashMap<>();
|
||||||
|
countCards(counts, deck.getCards());
|
||||||
|
countCards(counts, deck.getSideboard());
|
||||||
|
|
||||||
|
for (Map.Entry<String, Integer> entry : counts.entrySet()) {
|
||||||
|
if (entry.getValue() > 1) {
|
||||||
|
if (!basicLandNames.contains(entry.getKey()) && !anyNumberCardsAllowed.contains(entry.getKey())) {
|
||||||
|
invalid.put(entry.getKey(), "Too many: " + entry.getValue());
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> commanderNames = new HashSet<>();
|
||||||
|
String signatureSpell = null;
|
||||||
|
if (deck.getSideboard().size() < 2 || deck.getSideboard().size() > 3) {
|
||||||
|
invalid.put("Oathbreaker", "Sideboard must contain only the oathbreaker(s) with signature spell");
|
||||||
|
valid = false;
|
||||||
|
} else {
|
||||||
|
for (Card commander : deck.getSideboard()) {
|
||||||
|
if (commander.isInstantOrSorcery()) {
|
||||||
|
if (signatureSpell == null) {
|
||||||
|
signatureSpell = commander.getName();
|
||||||
|
} else {
|
||||||
|
invalid.put("Signature spell", "Only one signature spell allows, but found: " + signatureSpell + " and " + commander.getName());
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (commander.isPlaneswalker()) {
|
||||||
|
commanderNames.add(commander.getName());
|
||||||
|
} else {
|
||||||
|
invalid.put("Oathbreaker", "Only planeswalker can be Oathbreaker, not " + commander.getName());
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Card commander : deck.getSideboard()) {
|
||||||
|
if (commanderNames.contains(commander.getName())) {
|
||||||
|
// partner checks
|
||||||
|
if (commanderNames.size() == 2 && !commander.getAbilities().contains(PartnerAbility.getInstance())) {
|
||||||
|
boolean partnersWith = false;
|
||||||
|
for (Ability ability : commander.getAbilities()) {
|
||||||
|
if (ability instanceof PartnerWithAbility && commanderNames.contains(((PartnerWithAbility) ability).getPartnerName())) {
|
||||||
|
partnersWith = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!partnersWith) {
|
||||||
|
invalid.put("Oathbreaker", "Oathbreaker without Partner (" + commander.getName() + ')');
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// color identity from commanders only, not spell
|
||||||
|
FilterMana commanderColor = commander.getColorIdentity();
|
||||||
|
if (commanderColor.isWhite()) {
|
||||||
|
colorIdentity.setWhite(true);
|
||||||
|
}
|
||||||
|
if (commanderColor.isBlue()) {
|
||||||
|
colorIdentity.setBlue(true);
|
||||||
|
}
|
||||||
|
if (commanderColor.isBlack()) {
|
||||||
|
colorIdentity.setBlack(true);
|
||||||
|
}
|
||||||
|
if (commanderColor.isRed()) {
|
||||||
|
colorIdentity.setRed(true);
|
||||||
|
}
|
||||||
|
if (commanderColor.isGreen()) {
|
||||||
|
colorIdentity.setGreen(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (commanderNames.size() == 0) {
|
||||||
|
invalid.put("Sideboard", "Can't find any oathbreaker");
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
if (signatureSpell == null) {
|
||||||
|
invalid.put("Sideboard", "Can't find signature spell");
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// signature spell color
|
||||||
|
for (Card card : deck.getSideboard()) {
|
||||||
|
if (card.getName().equals(signatureSpell) && !cardHasValidColor(colorIdentity, card)) {
|
||||||
|
invalid.put(card.getName(), "Invalid color for signature spell (" + colorIdentity.toString() + ')');
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// no needs in cards check on wrong commanders
|
||||||
|
if (!valid) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Card card : deck.getCards()) {
|
||||||
|
if (!cardHasValidColor(colorIdentity, card)) {
|
||||||
|
invalid.put(card.getName(), "Invalid color (" + colorIdentity.toString() + ')');
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Card card : deck.getSideboard()) {
|
||||||
|
if (!isSetAllowed(card.getExpansionSetCode())) {
|
||||||
|
if (!legalSets(card)) {
|
||||||
|
invalid.put(card.getName(), "Not allowed Set: " + card.getExpansionSetCode());
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean cardHasValidColor(FilterMana commander, Card card) {
|
||||||
|
FilterMana cardColor = card.getColorIdentity();
|
||||||
|
return !(cardColor.isBlack() && !commander.isBlack()
|
||||||
|
|| cardColor.isBlue() && !commander.isBlue()
|
||||||
|
|| cardColor.isGreen() && !commander.isGreen()
|
||||||
|
|| cardColor.isRed() && !commander.isRed()
|
||||||
|
|| cardColor.isWhite() && !commander.isWhite());
|
||||||
|
}
|
||||||
|
}
|
50
Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/pom.xml
Normal file
50
Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/pom.xml
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.mage</groupId>
|
||||||
|
<artifactId>mage-server-plugins</artifactId>
|
||||||
|
<version>1.4.35</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>mage-game-oathbreakerfreeforall</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>Mage Game Oathbreaker Free For All</name>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>mage</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src</sourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
|
||||||
|
<finalName>mage-game-freeforall</finalName>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<properties/>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,141 @@
|
||||||
|
package mage.game;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.SignatureSpellCastOnlyWithOathbreakerEffect;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
|
import mage.abilities.condition.common.OathbreakerOnBattlefieldCondition;
|
||||||
|
import mage.abilities.effects.common.InfoEffect;
|
||||||
|
import mage.abilities.hint.ConditionHint;
|
||||||
|
import mage.cards.Card;
|
||||||
|
import mage.constants.MultiplayerAttackOption;
|
||||||
|
import mage.constants.RangeOfInfluence;
|
||||||
|
import mage.game.match.MatchType;
|
||||||
|
import mage.game.mulligan.Mulligan;
|
||||||
|
import mage.players.Player;
|
||||||
|
import mage.watchers.common.CommanderInfoWatcher;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class OathbreakerFreeForAll extends GameCommanderImpl {
|
||||||
|
|
||||||
|
private int numPlayers;
|
||||||
|
private Map<UUID, UUID> playerSignatureSpell = new HashMap<>();
|
||||||
|
private Map<UUID, List<UUID>> playerCommanders = new HashMap<>();
|
||||||
|
|
||||||
|
public OathbreakerFreeForAll(MultiplayerAttackOption attackOption, RangeOfInfluence range, Mulligan mulligan, int startLife) {
|
||||||
|
super(attackOption, range, mulligan, startLife);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OathbreakerFreeForAll(final OathbreakerFreeForAll game) {
|
||||||
|
super(game);
|
||||||
|
this.numPlayers = game.numPlayers;
|
||||||
|
this.playerSignatureSpell.putAll(game.playerSignatureSpell);
|
||||||
|
game.playerCommanders.forEach((key, value) -> this.playerCommanders.put(key, new ArrayList<>(value)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init(UUID choosingPlayerId) {
|
||||||
|
/*
|
||||||
|
// prepare commanders and signature spells info
|
||||||
|
playerSignatureSpell.clear();
|
||||||
|
playerCommanders.clear();
|
||||||
|
for (UUID playerId : state.getPlayerList(startingPlayerId)) {
|
||||||
|
UUID signatureSpell = null;
|
||||||
|
List<UUID> commanders = new ArrayList<>();
|
||||||
|
|
||||||
|
Player player = getPlayer(playerId);
|
||||||
|
List<UUID> searchList = new ArrayList<>();
|
||||||
|
searchList.addAll(player.getCommandersIds());
|
||||||
|
searchList.addAll(new ArrayList<>(player.getSideboard()));
|
||||||
|
for (UUID id : searchList) {
|
||||||
|
Card commander = this.getCard(id);
|
||||||
|
if (commander != null) {
|
||||||
|
if (commander.isInstantOrSorcery()) {
|
||||||
|
signatureSpell = commander.getId();
|
||||||
|
} else if (!commanders.contains(commander.getId())) {
|
||||||
|
commanders.add(commander.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
playerSignatureSpell.put(playerId, signatureSpell);
|
||||||
|
playerCommanders.put(playerId, commanders);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// init base commander game
|
||||||
|
startingPlayerSkipsDraw = false;
|
||||||
|
super.init(choosingPlayerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommanderInfoWatcher initCommanderWatcher(Card commander, boolean checkCommanderDamage) {
|
||||||
|
String commanderType;
|
||||||
|
if (commander.isInstantOrSorcery()) {
|
||||||
|
commanderType = "Signature Spell";
|
||||||
|
} else {
|
||||||
|
commanderType = "Oathbreaker";
|
||||||
|
}
|
||||||
|
return new CommanderInfoWatcher(commanderType, commander.getId(), checkCommanderDamage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initCommanderEffects(Card commander, Player player, Ability commanderAbility) {
|
||||||
|
// all commander effects must be independent from sourceId or controllerId
|
||||||
|
super.initCommanderEffects(commander, player, commanderAbility);
|
||||||
|
|
||||||
|
// signature spell restrict (spell can be casted on player's commander on battlefield)
|
||||||
|
if (commander.getId().equals(this.playerSignatureSpell.getOrDefault(player.getId(), null))) {
|
||||||
|
Condition condition = new OathbreakerOnBattlefieldCondition(player.getId(), this.playerCommanders.getOrDefault(player.getId(), null));
|
||||||
|
commanderAbility.addEffect(new SignatureSpellCastOnlyWithOathbreakerEffect(condition, commander.getId()));
|
||||||
|
|
||||||
|
// hint must be added to card, not global ability
|
||||||
|
Ability ability = new SimpleStaticAbility(new InfoEffect("Signature spell hint"));
|
||||||
|
ability.addHint(new ConditionHint(condition, "Oathbreaker on battlefield"));
|
||||||
|
ability.setRuleVisible(false);
|
||||||
|
commander.addAbility(ability);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addCommander(Card card, Player player) {
|
||||||
|
super.addCommander(card, player);
|
||||||
|
|
||||||
|
// prepare signature and commanders info
|
||||||
|
if (card.isInstantOrSorcery()) {
|
||||||
|
this.playerSignatureSpell.put(player.getId(), card.getId());
|
||||||
|
} else {
|
||||||
|
List<UUID> list = this.playerCommanders.getOrDefault(player.getId(), null);
|
||||||
|
if (list == null) {
|
||||||
|
list = new ArrayList<>();
|
||||||
|
this.playerCommanders.put(player.getId(), list);
|
||||||
|
}
|
||||||
|
if (!list.contains(card.getId())) {
|
||||||
|
list.add(card.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MatchType getGameType() {
|
||||||
|
return new OathbreakerFreeForAllType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getNumPlayers() {
|
||||||
|
return numPlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumPlayers(int numPlayers) {
|
||||||
|
this.numPlayers = numPlayers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OathbreakerFreeForAll copy() {
|
||||||
|
return new OathbreakerFreeForAll(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package mage.game;
|
||||||
|
|
||||||
|
import mage.game.match.MatchImpl;
|
||||||
|
import mage.game.match.MatchOptions;
|
||||||
|
import mage.game.mulligan.Mulligan;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class OathbreakerFreeForAllMatch extends MatchImpl {
|
||||||
|
|
||||||
|
public OathbreakerFreeForAllMatch(MatchOptions options) {
|
||||||
|
super(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startGame() throws GameException {
|
||||||
|
int startLife = 20;
|
||||||
|
boolean alsoHand = true;
|
||||||
|
Mulligan mulligan = options.getMulliganType().getMulligan(options.getFreeMulligans());
|
||||||
|
OathbreakerFreeForAll game = new OathbreakerFreeForAll(options.getAttackOption(), options.getRange(), mulligan, startLife);
|
||||||
|
game.setStartMessage(this.createGameStartMessage());
|
||||||
|
game.setAlsoHand(alsoHand);
|
||||||
|
game.setAlsoLibrary(true);
|
||||||
|
initGame(game);
|
||||||
|
games.add(game);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package mage.game;
|
||||||
|
|
||||||
|
import mage.game.match.MatchType;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class OathbreakerFreeForAllType extends MatchType {
|
||||||
|
|
||||||
|
public OathbreakerFreeForAllType() {
|
||||||
|
this.name = "Oathbreaker Free For All";
|
||||||
|
this.maxPlayers = 10;
|
||||||
|
this.minPlayers = 3;
|
||||||
|
this.numTeams = 0;
|
||||||
|
this.useAttackOption = true;
|
||||||
|
this.useRange = true;
|
||||||
|
this.sideboardingAllowed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected OathbreakerFreeForAllType(final OathbreakerFreeForAllType matchType) {
|
||||||
|
super(matchType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OathbreakerFreeForAllType copy() {
|
||||||
|
return new OathbreakerFreeForAllType(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
<module>Mage.Game.FreeformCommanderFreeForAll</module>
|
<module>Mage.Game.FreeformCommanderFreeForAll</module>
|
||||||
<module>Mage.Game.BrawlDuel</module>
|
<module>Mage.Game.BrawlDuel</module>
|
||||||
<module>Mage.Game.BrawlFreeForAll</module>
|
<module>Mage.Game.BrawlFreeForAll</module>
|
||||||
|
<module>Mage.Game.OathbreakerFreeForAll</module>
|
||||||
<module>Mage.Game.TwoPlayerDuel</module>
|
<module>Mage.Game.TwoPlayerDuel</module>
|
||||||
<module>Mage.Player.AI</module>
|
<module>Mage.Player.AI</module>
|
||||||
<module>Mage.Player.AIMinimax</module>
|
<module>Mage.Player.AIMinimax</module>
|
||||||
|
|
|
@ -69,123 +69,234 @@
|
||||||
<!--<playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/>-->
|
<!--<playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/>-->
|
||||||
<playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer7"/>
|
<playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer7"/>
|
||||||
<!--<playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/>-->
|
<!--<playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/>-->
|
||||||
<playerType name="Computer - draftbot" jar="mage-player-ai-draft-bot.jar" className="mage.player.ai.ComputerDraftPlayer"/>
|
<playerType name="Computer - draftbot" jar="mage-player-ai-draft-bot.jar"
|
||||||
|
className="mage.player.ai.ComputerDraftPlayer"/>
|
||||||
</playerTypes>
|
</playerTypes>
|
||||||
<gameTypes>
|
<gameTypes>
|
||||||
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
|
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch"
|
||||||
<gameType name="Free For All" jar="mage-game-freeforall.jar" className="mage.game.FreeForAllMatch" typeName="mage.game.FreeForAllType"/>
|
typeName="mage.game.TwoPlayerDuelType"/>
|
||||||
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel.jar" className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
|
<gameType name="Free For All" jar="mage-game-freeforall.jar" className="mage.game.FreeForAllMatch"
|
||||||
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
typeName="mage.game.FreeForAllType"/>
|
||||||
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel.jar" className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
|
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel.jar"
|
||||||
<gameType name="Canadian Highlander Two Player Duel" jar="mage-game-canadianhighlanderduel.jar" className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
|
className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
|
||||||
<gameType name="Penny Dreadful Commander Free For All" jar="mage-game-pennydreadfulcommanderfreeforall.jar" className="mage.game.PennyDreadfulCommanderFreeForAllMatch" typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
|
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar"
|
||||||
<gameType name="Freeform Commander Two Player Duel" jar="mage-game-freeformcommanderduel.jar" className="mage.game.FreeformCommanderDuelMatch" typeName="mage.game.FreeformCommanderDuelType"/>
|
className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
||||||
<gameType name="Freeform Commander Free For All" jar="mage-game-freeformcommanderfreeforall.jar" className="mage.game.FreeformCommanderFreeForAllMatch" typeName="mage.game.FreeformCommanderFreeForAllType"/>
|
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel.jar"
|
||||||
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel.jar" className="mage.game.BrawlDuelMatch" typeName="mage.game.BrawlDuelType"/>
|
className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
|
||||||
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall.jar" className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
|
<gameType name="Canadian Highlander Two Player Duel" jar="mage-game-canadianhighlanderduel.jar"
|
||||||
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel.jar" className="mage.game.MomirDuelMatch" typeName="mage.game.MomirDuelType"/>
|
className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
|
||||||
<gameType name="Momir Basic Free For All" jar="mage-game-momir.jar" className="mage.game.MomirFreeForAllMatch" typeName="mage.game.MomirFreeForAllType"/>
|
<gameType name="Penny Dreadful Commander Free For All" jar="mage-game-pennydreadfulcommanderfreeforall.jar"
|
||||||
|
className="mage.game.PennyDreadfulCommanderFreeForAllMatch"
|
||||||
|
typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
|
||||||
|
<gameType name="Freeform Commander Two Player Duel" jar="mage-game-freeformcommanderduel.jar"
|
||||||
|
className="mage.game.FreeformCommanderDuelMatch" typeName="mage.game.FreeformCommanderDuelType"/>
|
||||||
|
<gameType name="Freeform Commander Free For All" jar="mage-game-freeformcommanderfreeforall.jar"
|
||||||
|
className="mage.game.FreeformCommanderFreeForAllMatch"
|
||||||
|
typeName="mage.game.FreeformCommanderFreeForAllType"/>
|
||||||
|
<gameType name="Oathbreaker Free For All" jar="mage-game-oathbreakerfreeforall.jar"
|
||||||
|
className="mage.game.OathbreakerFreeForAllMatch" typeName="mage.game.OathbreakerFreeForAllType"/>
|
||||||
|
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel.jar" className="mage.game.BrawlDuelMatch"
|
||||||
|
typeName="mage.game.BrawlDuelType"/>
|
||||||
|
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall.jar"
|
||||||
|
className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
|
||||||
|
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel.jar" className="mage.game.MomirDuelMatch"
|
||||||
|
typeName="mage.game.MomirDuelType"/>
|
||||||
|
<gameType name="Momir Basic Free For All" jar="mage-game-momir.jar" className="mage.game.MomirFreeForAllMatch"
|
||||||
|
typeName="mage.game.MomirFreeForAllType"/>
|
||||||
</gameTypes>
|
</gameTypes>
|
||||||
<tournamentTypes>
|
<tournamentTypes>
|
||||||
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedEliminationTournament" typeName="mage.tournament.ConstructedEliminationTournamentType"/>
|
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed.jar"
|
||||||
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedSwissTournament" typeName="mage.tournament.ConstructedSwissTournamentType"/>
|
className="mage.tournament.ConstructedEliminationTournament"
|
||||||
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
typeName="mage.tournament.ConstructedEliminationTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed.jar"
|
||||||
<tournamentType name="Booster Draft Elimination (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftEliminationTournament" typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
|
className="mage.tournament.ConstructedSwissTournament"
|
||||||
<tournamentType name="Booster Draft Elimination (Rich Man)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManDraftEliminationTournament" typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
|
typeName="mage.tournament.ConstructedSwissTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Elimination (Rich Man Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManCubeDraftEliminationTournament" typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
|
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-booster-draft.jar"
|
||||||
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
|
className="mage.tournament.BoosterDraftEliminationTournament"
|
||||||
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
|
typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftSwissTournament" typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
|
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-booster-draft.jar"
|
||||||
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
|
className="mage.tournament.BoosterDraftEliminationTournament"
|
||||||
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
|
typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
||||||
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissTournamentType"/>
|
<tournamentType name="Booster Draft Elimination (Random)" jar="mage-tournament-booster-draft.jar"
|
||||||
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
|
className="mage.tournament.RandomBoosterDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Rich Man)" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.RichManDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Rich Man Cube)" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.RichManCubeDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.BoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.BoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.RandomBoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed.jar"
|
||||||
|
className="mage.tournament.SealedEliminationTournament"
|
||||||
|
typeName="mage.tournament.SealedEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed.jar"
|
||||||
|
className="mage.tournament.SealedEliminationTournament"
|
||||||
|
typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed.jar"
|
||||||
|
className="mage.tournament.SealedSwissTournament"
|
||||||
|
typeName="mage.tournament.SealedSwissTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed.jar"
|
||||||
|
className="mage.tournament.SealedSwissTournament"
|
||||||
|
typeName="mage.tournament.SealedSwissCubeTournamentType"/>
|
||||||
</tournamentTypes>
|
</tournamentTypes>
|
||||||
<draftCubes>
|
<draftCubes>
|
||||||
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
|
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.BensCube"/>
|
className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
|
||||||
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor720"/>
|
className="mage.tournament.cubes.BensCube"/>
|
||||||
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
|
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
|
className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
||||||
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JimDavisCube"/>
|
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
|
className="mage.tournament.cubes.CubeTutor720"/>
|
||||||
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MonoBlueCube"/>
|
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.SamBlacksCube"/>
|
className="mage.tournament.cubes.EricKlugsProTourCube"/>
|
||||||
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
|
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube"/>
|
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeMarch2015"/>
|
className="mage.tournament.cubes.JimDavisCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
|
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
|
className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
|
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
|
className="mage.tournament.cubes.MonoBlueCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeApril2017"/>
|
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube2018February"/>
|
className="mage.tournament.cubes.SamBlacksCube"/>
|
||||||
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCube"/>
|
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCubeApril2016"/>
|
className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
|
||||||
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.ModernCube2017"/>
|
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2013"/>
|
className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
||||||
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2014"/>
|
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2015"/>
|
className="mage.tournament.cubes.LegacyCube"/>
|
||||||
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2016"/>
|
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
|
className="mage.tournament.cubes.LegacyCubeMarch2015"/>
|
||||||
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
|
className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
|
||||||
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeDecember2017"/>
|
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Vintage Cube June 2018" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2018"/>
|
className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
|
||||||
<draftCube name="MTGO Vintage Cube December 2018" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeDecember2018"/>
|
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="SCG Con Cube 2018 December" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.ScgConCube2018December"/>
|
className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
|
||||||
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
|
className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
|
||||||
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeFromDeck"/>
|
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.LegacyCubeApril2017"/>
|
||||||
|
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.LegacyCube2018February"/>
|
||||||
|
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.LegendaryCube"/>
|
||||||
|
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.LegendaryCubeApril2016"/>
|
||||||
|
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.ModernCube2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2013"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2014"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2015"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeDecember2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2018" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2018"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube December 2018" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeDecember2018"/>
|
||||||
|
<draftCube name="SCG Con Cube 2018 December" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.ScgConCube2018December"/>
|
||||||
|
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||||
|
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.MTGCube"/>
|
||||||
|
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar"
|
||||||
|
className="mage.tournament.cubes.CubeFromDeck"/>
|
||||||
</draftCubes>
|
</draftCubes>
|
||||||
<deckTypes>
|
<deckTypes>
|
||||||
<deckType name="Constructed - Standard" jar="mage-deck-constructed.jar" className="mage.deck.Standard"/>
|
<deckType name="Constructed - Standard" jar="mage-deck-constructed.jar" className="mage.deck.Standard"/>
|
||||||
<deckType name="Constructed - Extended" jar="mage-deck-constructed.jar" className="mage.deck.Extended"/>
|
<deckType name="Constructed - Extended" jar="mage-deck-constructed.jar" className="mage.deck.Extended"/>
|
||||||
<deckType name="Constructed - Frontier" jar="mage-deck-constructed.jar" className="mage.deck.Frontier"/>
|
<deckType name="Constructed - Frontier" jar="mage-deck-constructed.jar" className="mage.deck.Frontier"/>
|
||||||
<deckType name="Constructed - Modern" jar="mage-deck-constructed.jar" className="mage.deck.Modern"/>
|
<deckType name="Constructed - Modern" jar="mage-deck-constructed.jar" className="mage.deck.Modern"/>
|
||||||
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed.jar" className="mage.deck.ModernNoBannedList"/>
|
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.ModernNoBannedList"/>
|
||||||
<deckType name="Constructed - Eternal" jar="mage-deck-constructed.jar" className="mage.deck.Eternal"/>
|
<deckType name="Constructed - Eternal" jar="mage-deck-constructed.jar" className="mage.deck.Eternal"/>
|
||||||
<deckType name="Constructed - Legacy" jar="mage-deck-constructed.jar" className="mage.deck.Legacy"/>
|
<deckType name="Constructed - Legacy" jar="mage-deck-constructed.jar" className="mage.deck.Legacy"/>
|
||||||
<deckType name="Constructed - Vintage" jar="mage-deck-constructed.jar" className="mage.deck.Vintage"/>
|
<deckType name="Constructed - Vintage" jar="mage-deck-constructed.jar" className="mage.deck.Vintage"/>
|
||||||
<deckType name="Constructed - Pauper" jar="mage-deck-constructed.jar" className="mage.deck.Pauper"/>
|
<deckType name="Constructed - Pauper" jar="mage-deck-constructed.jar" className="mage.deck.Pauper"/>
|
||||||
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed.jar" className="mage.deck.HistoricalType2"/>
|
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.HistoricalType2"/>
|
||||||
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed.jar" className="mage.deck.SuperType2"/>
|
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed.jar" className="mage.deck.SuperType2"/>
|
||||||
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.AusHighlander"/>
|
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.CanadianHighlander"/>
|
className="mage.deck.AusHighlander"/>
|
||||||
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394"/>
|
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Constructed - Old School 93/94 - Italian Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394Italian"/>
|
className="mage.deck.CanadianHighlander"/>
|
||||||
<deckType name="Constructed - Old School 93/94 - Channel Fireball Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394CFB"/>
|
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Constructed - Old School 93/94 - EudoGames Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394EG"/>
|
className="mage.deck.OldSchool9394"/>
|
||||||
<deckType name="Constructed - Old School 93/94 - EC Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394EC"/>
|
<deckType name="Constructed - Old School 93/94 - Italian Rules" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.OldSchool9394Italian"/>
|
||||||
|
<deckType name="Constructed - Old School 93/94 - Channel Fireball Rules" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.OldSchool9394CFB"/>
|
||||||
|
<deckType name="Constructed - Old School 93/94 - EudoGames Rules" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.OldSchool9394EG"/>
|
||||||
|
<deckType name="Constructed - Old School 93/94 - EC Rules" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.OldSchool9394EC"/>
|
||||||
<deckType name="Constructed - Premodern" jar="mage-deck-constructed.jar" className="mage.deck.Premodern"/>
|
<deckType name="Constructed - Premodern" jar="mage-deck-constructed.jar" className="mage.deck.Premodern"/>
|
||||||
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
|
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
|
||||||
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed.jar" className="mage.deck.Commander"/>
|
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed.jar" className="mage.deck.Commander"/>
|
||||||
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed.jar" className="mage.deck.DuelCommander"/>
|
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed.jar" className="mage.deck.MTGO1v1Commander"/>
|
className="mage.deck.DuelCommander"/>
|
||||||
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed.jar" className="mage.deck.TinyLeaders"/>
|
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.MTGO1v1Commander"/>
|
||||||
|
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.TinyLeaders"/>
|
||||||
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed.jar" className="mage.deck.Momir"/>
|
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed.jar" className="mage.deck.Momir"/>
|
||||||
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed.jar" className="mage.deck.PennyDreadfulCommander"/>
|
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed.jar" className="mage.deck.FreeformCommander"/>
|
className="mage.deck.PennyDreadfulCommander"/>
|
||||||
|
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.FreeformCommander"/>
|
||||||
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed.jar" className="mage.deck.Brawl"/>
|
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed.jar" className="mage.deck.Brawl"/>
|
||||||
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed.jar" className="mage.deck.AmonkhetBlock"/>
|
<deckType name="Variant Magic - Oathbreaker" jar="mage-deck-constructed.jar" className="mage.deck.Oathbreaker"/>
|
||||||
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.BattleForZendikarBlock"/>
|
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.InnistradBlock"/>
|
className="mage.deck.AmonkhetBlock"/>
|
||||||
|
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.BattleForZendikarBlock"/>
|
||||||
|
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.InnistradBlock"/>
|
||||||
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed.jar" className="mage.deck.IxalanBlock"/>
|
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed.jar" className="mage.deck.IxalanBlock"/>
|
||||||
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed.jar" className="mage.deck.KaladeshBlock"/>
|
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed.jar" className="mage.deck.KamigawaBlock"/>
|
className="mage.deck.KaladeshBlock"/>
|
||||||
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed.jar" className="mage.deck.KhansOfTarkirBlock"/>
|
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.KamigawaBlock"/>
|
||||||
|
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.KhansOfTarkirBlock"/>
|
||||||
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed.jar" className="mage.deck.LorwynBlock"/>
|
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed.jar" className="mage.deck.LorwynBlock"/>
|
||||||
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed.jar" className="mage.deck.ReturnToRavnicaBlock"/>
|
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed.jar" className="mage.deck.ScarsOfMirrodinBlock"/>
|
className="mage.deck.ReturnToRavnicaBlock"/>
|
||||||
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed.jar" className="mage.deck.ShadowmoorBlock"/>
|
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.ShadowsOverInnistradBlock"/>
|
className="mage.deck.ScarsOfMirrodinBlock"/>
|
||||||
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed.jar" className="mage.deck.ShardsOfAlaraBlock"/>
|
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.ShadowmoorBlock"/>
|
||||||
|
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.ShadowsOverInnistradBlock"/>
|
||||||
|
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.ShardsOfAlaraBlock"/>
|
||||||
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed.jar" className="mage.deck.TherosBlock"/>
|
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed.jar" className="mage.deck.TherosBlock"/>
|
||||||
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.ZendikarBlock"/>
|
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed.jar"
|
||||||
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed.jar" className="mage.deck.StarWarsBlock"/>
|
className="mage.deck.ZendikarBlock"/>
|
||||||
|
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed.jar"
|
||||||
|
className="mage.deck.StarWarsBlock"/>
|
||||||
<deckType name="Limited" jar="mage-deck-limited.jar" className="mage.deck.Limited"/>
|
<deckType name="Limited" jar="mage-deck-limited.jar" className="mage.deck.Limited"/>
|
||||||
</deckTypes>
|
</deckTypes>
|
||||||
</config>
|
</config>
|
||||||
|
|
|
@ -178,6 +178,7 @@
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>${project.groupId}</groupId>
|
<groupId>${project.groupId}</groupId>
|
||||||
<artifactId>mage-game-freeformcommanderfreeforall</artifactId>
|
<artifactId>mage-game-freeformcommanderfreeforall</artifactId>
|
||||||
|
@ -191,6 +192,13 @@
|
||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>mage-game-oathbreakerfreeforall</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>${project.groupId}</groupId>
|
<groupId>${project.groupId}</groupId>
|
||||||
<artifactId>mage-game-momirduel</artifactId>
|
<artifactId>mage-game-momirduel</artifactId>
|
||||||
|
|
|
@ -61,125 +61,264 @@
|
||||||
mailFromAddress=""
|
mailFromAddress=""
|
||||||
/>
|
/>
|
||||||
<playerTypes>
|
<playerTypes>
|
||||||
<playerType name="Human" jar="mage-player-human-${project.version}.jar" className="mage.player.human.HumanPlayer"/>
|
<playerType name="Human" jar="mage-player-human-${project.version}.jar"
|
||||||
<playerType name="Computer - mad" jar="mage-player-ai-ma-${project.version}.jar" className="mage.player.ai.ComputerPlayer7"/>
|
className="mage.player.human.HumanPlayer"/>
|
||||||
<playerType name="Computer - draftbot" jar="mage-player-ai-draftbot-${project.version}.jar" className="mage.player.ai.ComputerDraftPlayer"/>
|
<playerType name="Computer - mad" jar="mage-player-ai-ma-${project.version}.jar"
|
||||||
|
className="mage.player.ai.ComputerPlayer7"/>
|
||||||
|
<playerType name="Computer - draftbot" jar="mage-player-ai-draftbot-${project.version}.jar"
|
||||||
|
className="mage.player.ai.ComputerDraftPlayer"/>
|
||||||
</playerTypes>
|
</playerTypes>
|
||||||
<gameTypes>
|
<gameTypes>
|
||||||
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel-${project.version}.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
|
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel-${project.version}.jar"
|
||||||
<gameType name="Free For All" jar="mage-game-freeforall-${project.version}.jar" className="mage.game.FreeForAllMatch" typeName="mage.game.FreeForAllType"/>
|
className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
|
||||||
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel-${project.version}.jar" className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
|
<gameType name="Free For All" jar="mage-game-freeforall-${project.version}.jar"
|
||||||
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall-${project.version}.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
className="mage.game.FreeForAllMatch" typeName="mage.game.FreeForAllType"/>
|
||||||
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel-${project.version}.jar" className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
|
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel-${project.version}.jar"
|
||||||
<gameType name="Canadian Highlander Two Player Duel" jar="mage-game-canadianhighlanderduel-${project.version}.jar" className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
|
className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
|
||||||
<gameType name="Penny Dreadful Commander Free For All" jar="mage-game-pennydreadfulcommanderfreeforall-${project.version}.jar" className="mage.game.PennyDreadfulCommanderFreeForAllMatch" typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
|
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall-${project.version}.jar"
|
||||||
<gameType name="Freeform Commander Two Player Duel" jar="mage-game-freeformcommanderduel-${project.version}.jar" className="mage.game.FreeformCommanderDuelMatch" typeName="mage.game.FreeformCommanderDuelType"/>
|
className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
||||||
<gameType name="Freeform Commander Free For All" jar="mage-game-freeformcommanderfreeforall-${project.version}.jar" className="mage.game.FreeformCommanderFreeForAllMatch" typeName="mage.game.FreeformCommanderFreeForAllType"/>
|
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel-${project.version}.jar"
|
||||||
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel-${project.version}.jar" className="mage.game.BrawlDuelMatch" typeName="mage.game.BrawlDuelType"/>
|
className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
|
||||||
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall-${project.version}.jar" className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
|
<gameType name="Canadian Highlander Two Player Duel"
|
||||||
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel-${project.version}.jar" className="mage.game.MomirDuelMatch" typeName="mage.game.MomirDuelType"/>
|
jar="mage-game-canadianhighlanderduel-${project.version}.jar"
|
||||||
<gameType name="Momir Basic Free For All" jar="mage-game-momir-${project.version}.jar" className="mage.game.MomirFreeForAllMatch" typeName="mage.game.MomirFreeForAllType"/>
|
className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
|
||||||
|
<gameType name="Penny Dreadful Commander Free For All"
|
||||||
|
jar="mage-game-pennydreadfulcommanderfreeforall-${project.version}.jar"
|
||||||
|
className="mage.game.PennyDreadfulCommanderFreeForAllMatch"
|
||||||
|
typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
|
||||||
|
<gameType name="Freeform Commander Two Player Duel" jar="mage-game-freeformcommanderduel-${project.version}.jar"
|
||||||
|
className="mage.game.FreeformCommanderDuelMatch" typeName="mage.game.FreeformCommanderDuelType"/>
|
||||||
|
<gameType name="Freeform Commander Free For All"
|
||||||
|
jar="mage-game-freeformcommanderfreeforall-${project.version}.jar"
|
||||||
|
className="mage.game.FreeformCommanderFreeForAllMatch"
|
||||||
|
typeName="mage.game.FreeformCommanderFreeForAllType"/>
|
||||||
|
<gameType name="Oathbreaker Free For All" jar="mage-game-oathbreakerfreeforall-${project.version}.jar"
|
||||||
|
className="mage.game.OathbreakerFreeForAllMatch" typeName="mage.game.OathbreakerFreeForAllType"/>
|
||||||
|
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel-${project.version}.jar"
|
||||||
|
className="mage.game.BrawlDuelMatch" typeName="mage.game.BrawlDuelType"/>
|
||||||
|
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall-${project.version}.jar"
|
||||||
|
className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
|
||||||
|
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel-${project.version}.jar"
|
||||||
|
className="mage.game.MomirDuelMatch" typeName="mage.game.MomirDuelType"/>
|
||||||
|
<gameType name="Momir Basic Free For All" jar="mage-game-momir-${project.version}.jar"
|
||||||
|
className="mage.game.MomirFreeForAllMatch" typeName="mage.game.MomirFreeForAllType"/>
|
||||||
</gameTypes>
|
</gameTypes>
|
||||||
<tournamentTypes>
|
<tournamentTypes>
|
||||||
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed-${project.version}.jar" className="mage.tournament.ConstructedEliminationTournament" typeName="mage.tournament.ConstructedEliminationTournamentType"/>
|
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed-${project.version}.jar"
|
||||||
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed-${project.version}.jar" className="mage.tournament.ConstructedSwissTournament" typeName="mage.tournament.ConstructedSwissTournamentType"/>
|
className="mage.tournament.ConstructedEliminationTournament"
|
||||||
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
typeName="mage.tournament.ConstructedEliminationTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed-${project.version}.jar"
|
||||||
<tournamentType name="Booster Draft Elimination (Random)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.RandomBoosterDraftEliminationTournament" typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
|
className="mage.tournament.ConstructedSwissTournament"
|
||||||
<tournamentType name="Booster Draft Elimination (Rich Man)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.RichManDraftEliminationTournament" typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
|
typeName="mage.tournament.ConstructedSwissTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Elimination (Rich Man Cube)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.RichManCubeDraftEliminationTournament" typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
|
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
|
className="mage.tournament.BoosterDraftEliminationTournament"
|
||||||
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
|
typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
||||||
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.RandomBoosterDraftSwissTournament" typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
|
<tournamentType name="Booster Draft Elimination (Cube)"
|
||||||
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
|
jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
|
className="mage.tournament.BoosterDraftEliminationTournament"
|
||||||
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissTournamentType"/>
|
typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
||||||
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
|
<tournamentType name="Booster Draft Elimination (Random)"
|
||||||
|
jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.RandomBoosterDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Rich Man)"
|
||||||
|
jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.RichManDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Rich Man Cube)"
|
||||||
|
jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.RichManCubeDraftEliminationTournament"
|
||||||
|
typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.BoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.BoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-boosterdraft-${project.version}.jar"
|
||||||
|
className="mage.tournament.RandomBoosterDraftSwissTournament"
|
||||||
|
typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed-${project.version}.jar"
|
||||||
|
className="mage.tournament.SealedEliminationTournament"
|
||||||
|
typeName="mage.tournament.SealedEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed-${project.version}.jar"
|
||||||
|
className="mage.tournament.SealedEliminationTournament"
|
||||||
|
typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed-${project.version}.jar"
|
||||||
|
className="mage.tournament.SealedSwissTournament"
|
||||||
|
typeName="mage.tournament.SealedSwissTournamentType"/>
|
||||||
|
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed-${project.version}.jar"
|
||||||
|
className="mage.tournament.SealedSwissTournament"
|
||||||
|
typeName="mage.tournament.SealedSwissCubeTournamentType"/>
|
||||||
</tournamentTypes>
|
</tournamentTypes>
|
||||||
<draftCubes>
|
<draftCubes>
|
||||||
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
|
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.BensCube"/>
|
className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
|
||||||
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor720"/>
|
className="mage.tournament.cubes.BensCube"/>
|
||||||
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
|
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
|
className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
||||||
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.JimDavisCube"/>
|
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
|
className="mage.tournament.cubes.CubeTutor720"/>
|
||||||
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MonoBlueCube"/>
|
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.SamBlacksCube"/>
|
className="mage.tournament.cubes.EricKlugsProTourCube"/>
|
||||||
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
|
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCube"/>
|
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeMarch2015"/>
|
className="mage.tournament.cubes.JimDavisCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
|
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
|
className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
|
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
|
className="mage.tournament.cubes.MonoBlueCube"/>
|
||||||
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCubeApril2017"/>
|
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegacyCube2018February"/>
|
className="mage.tournament.cubes.SamBlacksCube"/>
|
||||||
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegendaryCube"/>
|
<draftCube name="Timothee Simonot's Twisted Color Pie Cube"
|
||||||
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.LegendaryCubeApril2016"/>
|
jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.ModernCube2017"/>
|
className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
|
||||||
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2013"/>
|
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2014"/>
|
className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
||||||
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2015"/>
|
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2016"/>
|
className="mage.tournament.cubes.LegacyCube"/>
|
||||||
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
|
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
className="mage.tournament.cubes.LegacyCubeMarch2015"/>
|
||||||
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
|
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeDecember2017"/>
|
className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
|
||||||
<draftCube name="MTGO Vintage Cube June 2018" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2018"/>
|
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="MTGO Vintage Cube December 2018" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeDecember2018"/>
|
className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
|
||||||
<draftCube name="SCG Con Cube 2018 December" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.ScgConCube2018December"/>
|
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
|
||||||
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
|
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeFromDeck"/>
|
className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
|
||||||
|
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.LegacyCubeApril2017"/>
|
||||||
|
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.LegacyCube2018February"/>
|
||||||
|
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.LegendaryCube"/>
|
||||||
|
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.LegendaryCubeApril2016"/>
|
||||||
|
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.ModernCube2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2013"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2014"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2015"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCube2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeDecember2017"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube June 2018" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeJune2018"/>
|
||||||
|
<draftCube name="MTGO Vintage Cube December 2018" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.VintageCubeDecember2018"/>
|
||||||
|
<draftCube name="SCG Con Cube 2018 December" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.ScgConCube2018December"/>
|
||||||
|
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||||
|
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.MTGCube"/>
|
||||||
|
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft-${project.version}.jar"
|
||||||
|
className="mage.tournament.cubes.CubeFromDeck"/>
|
||||||
</draftCubes>
|
</draftCubes>
|
||||||
<deckTypes>
|
<deckTypes>
|
||||||
<deckType name="Constructed - Standard" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Standard"/>
|
<deckType name="Constructed - Standard" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Extended" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Extended"/>
|
className="mage.deck.Standard"/>
|
||||||
<deckType name="Constructed - Frontier" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Frontier"/>
|
<deckType name="Constructed - Extended" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Modern" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Modern"/>
|
className="mage.deck.Extended"/>
|
||||||
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ModernNoBannedList"/>
|
<deckType name="Constructed - Frontier" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Eternal" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Eternal"/>
|
className="mage.deck.Frontier"/>
|
||||||
<deckType name="Constructed - Legacy" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Legacy"/>
|
<deckType name="Constructed - Modern" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Vintage" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Vintage"/>
|
className="mage.deck.Modern"/>
|
||||||
<deckType name="Constructed - Pauper" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Pauper"/>
|
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.HistoricalType2"/>
|
className="mage.deck.ModernNoBannedList"/>
|
||||||
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.SuperType2"/>
|
<deckType name="Constructed - Eternal" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.AusHighlander"/>
|
className="mage.deck.Eternal"/>
|
||||||
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.CanadianHighlander"/>
|
<deckType name="Constructed - Legacy" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394"/>
|
className="mage.deck.Legacy"/>
|
||||||
<deckType name="Constructed - Old School 93/94 - Italian Rules" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394Italian"/>
|
<deckType name="Constructed - Vintage" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Old School 93/94 - Channel Fireball Rules" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394CFB"/>
|
className="mage.deck.Vintage"/>
|
||||||
<deckType name="Constructed - Old School 93/94 - EudoGames Rules" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394EG"/>
|
<deckType name="Constructed - Pauper" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Old School 93/94 - EC Rules" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394EC"/>
|
className="mage.deck.Pauper"/>
|
||||||
<deckType name="Constructed - Premodern" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Premodern"/>
|
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Constructed - Freeform" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Freeform"/>
|
className="mage.deck.HistoricalType2"/>
|
||||||
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Commander"/>
|
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.DuelCommander"/>
|
className="mage.deck.SuperType2"/>
|
||||||
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.MTGO1v1Commander"/>
|
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.TinyLeaders"/>
|
className="mage.deck.AusHighlander"/>
|
||||||
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Momir"/>
|
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.PennyDreadfulCommander"/>
|
className="mage.deck.CanadianHighlander"/>
|
||||||
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.FreeformCommander"/>
|
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Brawl"/>
|
className="mage.deck.OldSchool9394"/>
|
||||||
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.AmonkhetBlock"/>
|
<deckType name="Constructed - Old School 93/94 - Italian Rules"
|
||||||
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.BattleForZendikarBlock"/>
|
jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394Italian"/>
|
||||||
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.InnistradBlock"/>
|
<deckType name="Constructed - Old School 93/94 - Channel Fireball Rules"
|
||||||
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.IxalanBlock"/>
|
jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394CFB"/>
|
||||||
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.KaladeshBlock"/>
|
<deckType name="Constructed - Old School 93/94 - EudoGames Rules"
|
||||||
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.KamigawaBlock"/>
|
jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.OldSchool9394EG"/>
|
||||||
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.KhansOfTarkirBlock"/>
|
<deckType name="Constructed - Old School 93/94 - EC Rules" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.LorwynBlock"/>
|
className="mage.deck.OldSchool9394EC"/>
|
||||||
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ReturnToRavnicaBlock"/>
|
<deckType name="Constructed - Premodern" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ScarsOfMirrodinBlock"/>
|
className="mage.deck.Premodern"/>
|
||||||
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ShadowmoorBlock"/>
|
<deckType name="Constructed - Freeform" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ShadowsOverInnistradBlock"/>
|
className="mage.deck.Freeform"/>
|
||||||
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ShardsOfAlaraBlock"/>
|
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.TherosBlock"/>
|
className="mage.deck.Commander"/>
|
||||||
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.ZendikarBlock"/>
|
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.StarWarsBlock"/>
|
className="mage.deck.DuelCommander"/>
|
||||||
|
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.MTGO1v1Commander"/>
|
||||||
|
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.TinyLeaders"/>
|
||||||
|
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.Momir"/>
|
||||||
|
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.PennyDreadfulCommander"/>
|
||||||
|
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.FreeformCommander"/>
|
||||||
|
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.Brawl"/>
|
||||||
|
<deckType name="Variant Magic - Oathbreaker" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.Oathbreaker"/>
|
||||||
|
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.AmonkhetBlock"/>
|
||||||
|
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.BattleForZendikarBlock"/>
|
||||||
|
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.InnistradBlock"/>
|
||||||
|
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.IxalanBlock"/>
|
||||||
|
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.KaladeshBlock"/>
|
||||||
|
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.KamigawaBlock"/>
|
||||||
|
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.KhansOfTarkirBlock"/>
|
||||||
|
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.LorwynBlock"/>
|
||||||
|
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ReturnToRavnicaBlock"/>
|
||||||
|
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ScarsOfMirrodinBlock"/>
|
||||||
|
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ShadowmoorBlock"/>
|
||||||
|
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ShadowsOverInnistradBlock"/>
|
||||||
|
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ShardsOfAlaraBlock"/>
|
||||||
|
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.TherosBlock"/>
|
||||||
|
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.ZendikarBlock"/>
|
||||||
|
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed-${project.version}.jar"
|
||||||
|
className="mage.deck.StarWarsBlock"/>
|
||||||
<deckType name="Limited" jar="mage-deck-limited-${project.version}.jar" className="mage.deck.Limited"/>
|
<deckType name="Limited" jar="mage-deck-limited-${project.version}.jar" className="mage.deck.Limited"/>
|
||||||
</deckTypes>
|
</deckTypes>
|
||||||
</config>
|
</config>
|
||||||
|
|
|
@ -522,10 +522,8 @@ public final class SystemUtil {
|
||||||
// as commander (only commander games, look at init code in GameCommanderImpl)
|
// as commander (only commander games, look at init code in GameCommanderImpl)
|
||||||
if (game instanceof GameCommanderImpl) {
|
if (game instanceof GameCommanderImpl) {
|
||||||
GameCommanderImpl gameCommander = (GameCommanderImpl) game;
|
GameCommanderImpl gameCommander = (GameCommanderImpl) game;
|
||||||
for (Card card : cardsToLoad) {
|
cardsToLoad.forEach(card -> gameCommander.addCommander(card, player));
|
||||||
player.addCommanderId(card.getId());
|
cardsToLoad.forEach(card -> gameCommander.initCommander(card, player));
|
||||||
gameCommander.initCommander(card, player);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
logger.fatal("Commander card can be used in commander game only: " + command.cardName);
|
logger.fatal("Commander card can be used in commander game only: " + command.cardName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
package mage.abilities.common;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
|
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.events.GameEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For oathbreaker game mode
|
||||||
|
*
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class SignatureSpellCastOnlyWithOathbreakerEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
|
|
||||||
|
private final Condition condition;
|
||||||
|
private final UUID signatureSpell;
|
||||||
|
|
||||||
|
public SignatureSpellCastOnlyWithOathbreakerEffect(Condition condition, UUID signatureSpell) {
|
||||||
|
super(Duration.EndOfGame, Outcome.Detriment);
|
||||||
|
this.condition = condition;
|
||||||
|
this.signatureSpell = signatureSpell;
|
||||||
|
staticText = setText();
|
||||||
|
}
|
||||||
|
|
||||||
|
private SignatureSpellCastOnlyWithOathbreakerEffect(final SignatureSpellCastOnlyWithOathbreakerEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
this.condition = effect.condition;
|
||||||
|
this.signatureSpell = effect.signatureSpell;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checksEventType(GameEvent event, Game game) {
|
||||||
|
return event.getType() == GameEvent.EventType.CAST_SPELL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||||
|
if (event.getSourceId().equals(signatureSpell)) {
|
||||||
|
return condition != null && !condition.apply(game, source);
|
||||||
|
}
|
||||||
|
return false; // cast not prevented by this effect
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SignatureSpellCastOnlyWithOathbreakerEffect copy() {
|
||||||
|
return new SignatureSpellCastOnlyWithOathbreakerEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String setText() {
|
||||||
|
StringBuilder sb = new StringBuilder("cast this spell only ");
|
||||||
|
if (condition != null) {
|
||||||
|
sb.append(' ').append(condition.toString());
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package mage.abilities.condition.common;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.condition.Condition;
|
||||||
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
|
import mage.filter.predicate.Predicates;
|
||||||
|
import mage.filter.predicate.permanent.PermanentIdPredicate;
|
||||||
|
import mage.game.Game;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For Oathbreaker game mode
|
||||||
|
*
|
||||||
|
* @author JayDi85
|
||||||
|
*/
|
||||||
|
public class OathbreakerOnBattlefieldCondition implements Condition {
|
||||||
|
|
||||||
|
private UUID playerId;
|
||||||
|
private FilterControlledPermanent filter;
|
||||||
|
|
||||||
|
public OathbreakerOnBattlefieldCondition(UUID playerId, List<UUID> oathbreakersToSearch) {
|
||||||
|
this.playerId = playerId;
|
||||||
|
this.filter = new FilterControlledPermanent("oathbreaker on battlefield");
|
||||||
|
if (oathbreakersToSearch != null && !oathbreakersToSearch.isEmpty()) {
|
||||||
|
// any commander on battlefield
|
||||||
|
List<PermanentIdPredicate> idsList = new ArrayList<>();
|
||||||
|
for (UUID id : oathbreakersToSearch) {
|
||||||
|
idsList.add(new PermanentIdPredicate(id));
|
||||||
|
}
|
||||||
|
this.filter.add(Predicates.or(idsList));
|
||||||
|
} else {
|
||||||
|
// random id to disable condition
|
||||||
|
this.filter.add(new PermanentIdPredicate(UUID.randomUUID()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
// source.getSourceId() is null for commander's effects
|
||||||
|
int permanentsOnBattlefield = game.getBattlefield().count(this.filter, source.getSourceId(), playerId, game);
|
||||||
|
return permanentsOnBattlefield > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return filter.getMessage();
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,6 +41,7 @@ public abstract class GameCommanderImpl extends GameImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init(UUID choosingPlayerId) {
|
protected void init(UUID choosingPlayerId) {
|
||||||
|
// Karn Liberated calls it to restart game, all data and commanders must be re-initialized
|
||||||
|
|
||||||
// plays watcher
|
// plays watcher
|
||||||
state.addWatcher(new CommanderPlaysCountWatcher());
|
state.addWatcher(new CommanderPlaysCountWatcher());
|
||||||
|
@ -49,22 +50,21 @@ public abstract class GameCommanderImpl extends GameImpl {
|
||||||
for (UUID playerId : state.getPlayerList(startingPlayerId)) {
|
for (UUID playerId : state.getPlayerList(startingPlayerId)) {
|
||||||
Player player = getPlayer(playerId);
|
Player player = getPlayer(playerId);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
if (player.getSideboard().isEmpty()) { // needed for restart game of e.g. Karn Liberated
|
// add new commanders
|
||||||
|
for (UUID id : player.getSideboard()) {
|
||||||
|
Card commander = this.getCard(id);
|
||||||
|
if (commander != null) {
|
||||||
|
addCommander(commander, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// init commanders
|
||||||
for (UUID commanderId : player.getCommandersIds()) {
|
for (UUID commanderId : player.getCommandersIds()) {
|
||||||
Card commander = this.getCard(commanderId);
|
Card commander = this.getCard(commanderId);
|
||||||
if (commander != null) {
|
if (commander != null) {
|
||||||
initCommander(commander, player);
|
initCommander(commander, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
while (!player.getSideboard().isEmpty()) {
|
|
||||||
Card commander = this.getCard(player.getSideboard().iterator().next());
|
|
||||||
if (commander != null) {
|
|
||||||
player.addCommanderId(commander.getId());
|
|
||||||
initCommander(commander, player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,17 +75,27 @@ public abstract class GameCommanderImpl extends GameImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initCommander(Card commander, Player player) {
|
public void initCommander(Card commander, Player player) {
|
||||||
Ability ability = new SimpleStaticAbility(Zone.COMMAND, new InfoEffect("Commander effects"));
|
|
||||||
commander.moveToZone(Zone.COMMAND, null, this, true);
|
commander.moveToZone(Zone.COMMAND, null, this, true);
|
||||||
commander.getAbilities().setControllerId(player.getId());
|
commander.getAbilities().setControllerId(player.getId());
|
||||||
ability.addEffect(new CommanderReplacementEffect(commander.getId(), alsoHand, alsoLibrary));
|
|
||||||
ability.addEffect(new CommanderCostModification(commander.getId()));
|
Ability ability = new SimpleStaticAbility(Zone.COMMAND, new InfoEffect("Commander effects"));
|
||||||
CommanderInfoWatcher watcher = new CommanderInfoWatcher(commander.getId(), checkCommanderDamage);
|
initCommanderEffects(commander, player, ability);
|
||||||
|
CommanderInfoWatcher watcher = initCommanderWatcher(commander, checkCommanderDamage);
|
||||||
getState().addWatcher(watcher);
|
getState().addWatcher(watcher);
|
||||||
watcher.addCardInfoToCommander(this);
|
watcher.addCardInfoToCommander(this);
|
||||||
this.getState().addAbility(ability, null);
|
this.getState().addAbility(ability, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CommanderInfoWatcher initCommanderWatcher(Card commander, boolean checkCommanderDamage) {
|
||||||
|
return new CommanderInfoWatcher("Commander", commander.getId(), checkCommanderDamage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initCommanderEffects(Card commander, Player player, Ability commanderAbility) {
|
||||||
|
// all commander effects must be independent from sourceId or controllerId
|
||||||
|
commanderAbility.addEffect(new CommanderReplacementEffect(commander.getId(), alsoHand, alsoLibrary));
|
||||||
|
commanderAbility.addEffect(new CommanderCostModification(commander.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
//20130711
|
//20130711
|
||||||
/*903.8. The Commander variant uses an alternate mulligan rule.
|
/*903.8. The Commander variant uses an alternate mulligan rule.
|
||||||
* Each time a player takes a mulligan, rather than shuffling their entire hand of cards into their library, that player exiles any number of cards from their hand face down.
|
* Each time a player takes a mulligan, rather than shuffling their entire hand of cards into their library, that player exiles any number of cards from their hand face down.
|
||||||
|
@ -207,4 +217,8 @@ public abstract class GameCommanderImpl extends GameImpl {
|
||||||
this.checkCommanderDamage = checkCommanderDamage;
|
this.checkCommanderDamage = checkCommanderDamage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addCommander(Card card, Player player) {
|
||||||
|
player.addCommanderId(card.getId());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2871,7 +2871,7 @@ public abstract class GameImpl implements Game, Serializable {
|
||||||
// as commander (only commander games, look at init code in GameCommanderImpl)
|
// as commander (only commander games, look at init code in GameCommanderImpl)
|
||||||
if (this instanceof GameCommanderImpl) {
|
if (this instanceof GameCommanderImpl) {
|
||||||
for (Card card : command) {
|
for (Card card : command) {
|
||||||
player.addCommanderId(card.getId());
|
((GameCommanderImpl) this).addCommander(card, player);
|
||||||
// no needs in initCommander call -- it's uses on game startup (init)
|
// no needs in initCommander call -- it's uses on game startup (init)
|
||||||
}
|
}
|
||||||
} else if (!command.isEmpty()) {
|
} else if (!command.isEmpty()) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ public abstract class GameTinyLeadersImpl extends GameImpl {
|
||||||
ability.addEffect(new CommanderCostModification(commander.getId()));
|
ability.addEffect(new CommanderCostModification(commander.getId()));
|
||||||
// Commander rule #4 was removed Jan. 18, 2016
|
// Commander rule #4 was removed Jan. 18, 2016
|
||||||
// ability.addEffect(new CommanderManaReplacementEffect(player.getId(), CardUtil.getColorIdentity(commander)));
|
// ability.addEffect(new CommanderManaReplacementEffect(player.getId(), CardUtil.getColorIdentity(commander)));
|
||||||
CommanderInfoWatcher watcher = new CommanderInfoWatcher(commander.getId(), false);
|
CommanderInfoWatcher watcher = new CommanderInfoWatcher("Commander", commander.getId(), false);
|
||||||
getState().addWatcher(watcher);
|
getState().addWatcher(watcher);
|
||||||
watcher.addCardInfoToCommander(this);
|
watcher.addCardInfoToCommander(this);
|
||||||
this.getState().addAbility(ability, null);
|
this.getState().addAbility(ability, null);
|
||||||
|
|
|
@ -26,17 +26,20 @@ public class CommanderInfoWatcher extends Watcher {
|
||||||
|
|
||||||
private final Map<UUID, Integer> damageToPlayer = new HashMap<>();
|
private final Map<UUID, Integer> damageToPlayer = new HashMap<>();
|
||||||
private final boolean checkCommanderDamage;
|
private final boolean checkCommanderDamage;
|
||||||
|
private final String commanderTypeName;
|
||||||
|
|
||||||
public CommanderInfoWatcher(UUID commander, boolean checkCommanderDamage) {
|
public CommanderInfoWatcher(String commanderTypeName, UUID commander, boolean checkCommanderDamage) {
|
||||||
super(WatcherScope.CARD);
|
super(WatcherScope.CARD);
|
||||||
this.sourceId = commander;
|
this.sourceId = commander;
|
||||||
this.checkCommanderDamage = checkCommanderDamage;
|
this.checkCommanderDamage = checkCommanderDamage;
|
||||||
|
this.commanderTypeName = commanderTypeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommanderInfoWatcher(final CommanderInfoWatcher watcher) {
|
public CommanderInfoWatcher(final CommanderInfoWatcher watcher) {
|
||||||
super(watcher);
|
super(watcher);
|
||||||
this.damageToPlayer.putAll(watcher.damageToPlayer);
|
this.damageToPlayer.putAll(watcher.damageToPlayer);
|
||||||
this.checkCommanderDamage = watcher.checkCommanderDamage;
|
this.checkCommanderDamage = watcher.checkCommanderDamage;
|
||||||
|
this.commanderTypeName = watcher.commanderTypeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -78,7 +81,7 @@ public class CommanderInfoWatcher extends Watcher {
|
||||||
}
|
}
|
||||||
if (object != null) {
|
if (object != null) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("<b>Commander</b>");
|
sb.append("<b>" + commanderTypeName + "</b>");
|
||||||
CommanderPlaysCountWatcher watcher = game.getState().getWatcher(CommanderPlaysCountWatcher.class);
|
CommanderPlaysCountWatcher watcher = game.getState().getWatcher(CommanderPlaysCountWatcher.class);
|
||||||
int playsCount = watcher.getPlaysCount(sourceId);
|
int playsCount = watcher.getPlaysCount(sourceId);
|
||||||
if (playsCount > 0) {
|
if (playsCount > 0) {
|
||||||
|
@ -89,9 +92,9 @@ public class CommanderInfoWatcher extends Watcher {
|
||||||
if (checkCommanderDamage) {
|
if (checkCommanderDamage) {
|
||||||
for (Map.Entry<UUID, Integer> entry : damageToPlayer.entrySet()) {
|
for (Map.Entry<UUID, Integer> entry : damageToPlayer.entrySet()) {
|
||||||
Player damagedPlayer = game.getPlayer(entry.getKey());
|
Player damagedPlayer = game.getPlayer(entry.getKey());
|
||||||
sb.append("<b>Commander</b> did ").append(entry.getValue()).append(" combat damage to player ").append(damagedPlayer.getLogName()).append('.');
|
sb.append("<b>" + commanderTypeName + "</b> did ").append(entry.getValue()).append(" combat damage to player ").append(damagedPlayer.getLogName()).append('.');
|
||||||
this.addInfo(object, "Commander" + entry.getKey(),
|
this.addInfo(object, "Commander" + entry.getKey(),
|
||||||
"<b>Commander</b> did " + entry.getValue() + " combat damage to player " + damagedPlayer.getLogName() + '.', game);
|
"<b>" + commanderTypeName + "</b> did " + entry.getValue() + " combat damage to player " + damagedPlayer.getLogName() + '.', game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue