mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
Added cubes for Sealed and Daft Tournaments. Added a simple Swiss like tournament format.
This commit is contained in:
parent
e3d543fa76
commit
e490d6af61
44 changed files with 3119 additions and 246 deletions
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JInternalFrameFormInfo">
|
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JInternalFrameFormInfo">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="title" type="java.lang.String" value="New Tournament"/>
|
<Property name="title" type="java.lang.String" value="New Tournament"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
@ -22,18 +22,17 @@
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="1" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="spnNumPlayers" min="-2" pref="45" max="-2" attributes="0"/>
|
<Component id="spnNumPlayers" min="-2" pref="46" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
|
||||||
<Component id="pnlDraftOptions" min="-2" max="-2" attributes="0"/>
|
<Component id="pnlDraftOptions" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<Component id="cbAllowSpectators" min="-2" max="-2" attributes="0"/>
|
<Component id="cbAllowSpectators" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
|
<Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
|
||||||
<Component id="pnlPacks" alignment="1" max="32767" attributes="0"/>
|
<Component id="pnlPacks" alignment="1" max="32767" attributes="0"/>
|
||||||
|
@ -43,47 +42,54 @@
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="btnCancel" min="-2" max="-2" attributes="0"/>
|
<Component id="btnCancel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="1" max="-2" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Group type="103" groupAlignment="1" max="-2" attributes="0">
|
<Component id="lblName" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="lblName" min="-2" max="-2" attributes="0"/>
|
<Component id="txtName" min="-2" pref="205" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="txtName" min="-2" pref="205" max="-2" attributes="0"/>
|
<Component id="lbTimeLimit" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="lbTimeLimit" min="-2" max="-2" attributes="0"/>
|
<Component id="cbTimeLimit" max="32767" attributes="1"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
</Group>
|
||||||
<Component id="cbTimeLimit" max="32767" attributes="1"/>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
</Group>
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Component id="lblTournamentType" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
<Component id="lblDraftCube" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="cbTournamentType" min="-2" pref="295" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Component id="cbDraftCube" min="-2" pref="295" max="-2" attributes="0"/>
|
||||||
<Component id="lblConstructionTime" min="-2" pref="141" max="-2" attributes="0"/>
|
<Component id="cbTournamentType" min="-2" pref="295" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
|
||||||
<Component id="spnConstructTime" min="-2" pref="50" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="lblFreeMulligans" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="spnFreeMulligans" min="-2" pref="41" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="lblNumWins" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="spnNumWins" min="-2" pref="50" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="lblConstructionTime" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="spnConstructTime" min="-2" pref="50" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="lblFreeMulligans" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="spnFreeMulligans" min="-2" pref="41" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="lblNumWins" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="spnNumWins" min="-2" pref="50" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="lblNumRounds" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="spnNumRounds" min="-2" pref="50" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Component id="lblPacks" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
@ -92,7 +98,7 @@
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="txtName" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="txtName" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="lblName" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="lblName" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
@ -103,7 +109,7 @@
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="lblTournamentType" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="cbTournamentType" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="cbTournamentType" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="lblFreeMulligans" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="lblFreeMulligans" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="spnFreeMulligans" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="spnFreeMulligans" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
@ -111,37 +117,31 @@
|
||||||
<Component id="spnNumWins" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="spnNumWins" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="jLabel5" min="-2" max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<Component id="cbDraftCube" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="pnlPacks" pref="69" max="32767" attributes="0"/>
|
<Component id="lblDraftCube" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="11" max="-2" attributes="0"/>
|
<Component id="spnNumRounds" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Component id="lblNumRounds" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="21" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
|
||||||
<Component id="spnNumPlayers" pref="25" max="32767" attributes="1"/>
|
|
||||||
<Component id="pnlDraftOptions" max="32767" attributes="1"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace min="-2" pref="14" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Component id="jPanel1" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
|
||||||
<Component id="btnOk" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="btnCancel" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="cbAllowSpectators" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="lblPacks" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="pnlPacks" pref="89" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" max="-2" attributes="0">
|
||||||
|
<Component id="cbAllowSpectators" alignment="1" max="32767" attributes="0"/>
|
||||||
|
<Component id="jLabel2" alignment="1" max="32767" attributes="0"/>
|
||||||
|
<Component id="spnNumPlayers" alignment="1" max="32767" attributes="1"/>
|
||||||
|
<Component id="pnlDraftOptions" alignment="1" pref="0" max="32767" attributes="1"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="jPanel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="btnOk" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="btnCancel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -158,6 +158,9 @@
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="text" type="java.lang.String" value="Time Limit:"/>
|
<Property name="text" type="java.lang.String" value="Time Limit:"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<BindingProperties>
|
||||||
|
<BindingProperty name="labelFor" source="cbTimeLimit" target="lbTimeLimit" targetPath="labelFor" updateStrategy="0" immediately="false"/>
|
||||||
|
</BindingProperties>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JComboBox" name="cbTimeLimit">
|
<Component class="javax.swing.JComboBox" name="cbTimeLimit">
|
||||||
</Component>
|
</Component>
|
||||||
|
@ -168,7 +171,7 @@
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JSpinner" name="spnConstructTime">
|
<Component class="javax.swing.JSpinner" name="spnConstructTime">
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="jLabel1">
|
<Component class="javax.swing.JLabel" name="lblTournamentType">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="text" type="java.lang.String" value="Tournament Type:"/>
|
<Property name="text" type="java.lang.String" value="Tournament Type:"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
@ -205,6 +208,44 @@
|
||||||
<EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spnNumWinsnumPlayersChanged"/>
|
<EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spnNumWinsnumPlayersChanged"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lblDraftCube">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Draft Cube"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JComboBox" name="cbDraftCube">
|
||||||
|
<Properties>
|
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||||
|
<StringArray count="4">
|
||||||
|
<StringItem index="0" value="Item 1"/>
|
||||||
|
<StringItem index="1" value="Item 2"/>
|
||||||
|
<StringItem index="2" value="Item 3"/>
|
||||||
|
<StringItem index="3" value="Item 4"/>
|
||||||
|
</StringArray>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cbDraftCubeActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lblNumRounds">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Number of Swiss Rounds:"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JSpinner" name="spnNumRounds">
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spnNumRoundsnumPlayersChanged"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lblPacks">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="11" style="1"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" value="Packs"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
<Container class="javax.swing.JPanel" name="pnlPacks">
|
<Container class="javax.swing.JPanel" name="pnlPacks">
|
||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout">
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout">
|
||||||
|
@ -229,21 +270,23 @@
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<Component id="jLabel6" min="-2" pref="49" max="-2" attributes="0"/>
|
||||||
<Component id="jLabel6" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="cbDraftTiming" min="-2" pref="107" max="-2" attributes="0"/>
|
<Component id="cbDraftTiming" min="-2" pref="107" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace pref="19" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="jLabel6" min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="jLabel6" alignment="3" min="-2" pref="22" max="-2" attributes="0"/>
|
||||||
|
<Component id="cbDraftTiming" alignment="3" min="-2" max="-2" attributes="1"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="cbDraftTiming" alignment="0" max="32767" attributes="1"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
@ -264,6 +307,9 @@
|
||||||
</StringArray>
|
</StringArray>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cbDraftTimingActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
|
@ -272,22 +318,6 @@
|
||||||
<Property name="text" type="java.lang.String" value="Allow spectators"/>
|
<Property name="text" type="java.lang.String" value="Allow spectators"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="btnOk">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="OK"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnOkActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JButton" name="btnCancel">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Cancel"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Container class="javax.swing.JPanel" name="jPanel1">
|
<Container class="javax.swing.JPanel" name="jPanel1">
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
|
@ -349,13 +379,21 @@
|
||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Component class="javax.swing.JLabel" name="jLabel5">
|
<Component class="javax.swing.JButton" name="btnOk">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="text" type="java.lang.String" value="OK"/>
|
||||||
<Font name="Tahoma" size="11" style="1"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" value="Packs"/>
|
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnOkActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="btnCancel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Cancel"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
|
|
@ -81,6 +81,7 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
this.spnNumWins.setModel(new SpinnerNumberModel(2, 1, 5, 1));
|
this.spnNumWins.setModel(new SpinnerNumberModel(2, 1, 5, 1));
|
||||||
this.spnFreeMulligans.setModel(new SpinnerNumberModel(0, 0, 5, 1));
|
this.spnFreeMulligans.setModel(new SpinnerNumberModel(0, 0, 5, 1));
|
||||||
this.spnConstructTime.setModel(new SpinnerNumberModel(10, 10, 30, 5));
|
this.spnConstructTime.setModel(new SpinnerNumberModel(10, 10, 30, 5));
|
||||||
|
this.spnNumRounds.setModel(new SpinnerNumberModel(2, 2, 10, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showDialog(UUID roomId) {
|
public void showDialog(UUID roomId) {
|
||||||
|
@ -89,6 +90,7 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
this.txtPlayer1Name.setText(session.getUserName());
|
this.txtPlayer1Name.setText(session.getUserName());
|
||||||
cbTournamentType.setModel(new DefaultComboBoxModel(session.getTournamentTypes().toArray()));
|
cbTournamentType.setModel(new DefaultComboBoxModel(session.getTournamentTypes().toArray()));
|
||||||
cbTimeLimit.setModel(new DefaultComboBoxModel(MatchTimeLimit.values()));
|
cbTimeLimit.setModel(new DefaultComboBoxModel(MatchTimeLimit.values()));
|
||||||
|
cbDraftCube.setModel(new DefaultComboBoxModel(session.getDraftCubes()));
|
||||||
cbDraftTiming.setModel(new DefaultComboBoxModel(DraftOptions.TimingOption.values()));
|
cbDraftTiming.setModel(new DefaultComboBoxModel(DraftOptions.TimingOption.values()));
|
||||||
cbAllowSpectators.setSelected(true);
|
cbAllowSpectators.setSelected(true);
|
||||||
|
|
||||||
|
@ -107,6 +109,7 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
|
||||||
|
|
||||||
lblName = new javax.swing.JLabel();
|
lblName = new javax.swing.JLabel();
|
||||||
txtName = new javax.swing.JTextField();
|
txtName = new javax.swing.JTextField();
|
||||||
|
@ -114,12 +117,17 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
cbTimeLimit = new javax.swing.JComboBox();
|
cbTimeLimit = new javax.swing.JComboBox();
|
||||||
lblConstructionTime = new javax.swing.JLabel();
|
lblConstructionTime = new javax.swing.JLabel();
|
||||||
spnConstructTime = new javax.swing.JSpinner();
|
spnConstructTime = new javax.swing.JSpinner();
|
||||||
jLabel1 = new javax.swing.JLabel();
|
lblTournamentType = new javax.swing.JLabel();
|
||||||
cbTournamentType = new javax.swing.JComboBox();
|
cbTournamentType = new javax.swing.JComboBox();
|
||||||
lblFreeMulligans = new javax.swing.JLabel();
|
lblFreeMulligans = new javax.swing.JLabel();
|
||||||
spnFreeMulligans = new javax.swing.JSpinner();
|
spnFreeMulligans = new javax.swing.JSpinner();
|
||||||
lblNumWins = new javax.swing.JLabel();
|
lblNumWins = new javax.swing.JLabel();
|
||||||
spnNumWins = new javax.swing.JSpinner();
|
spnNumWins = new javax.swing.JSpinner();
|
||||||
|
lblDraftCube = new javax.swing.JLabel();
|
||||||
|
cbDraftCube = new javax.swing.JComboBox();
|
||||||
|
lblNumRounds = new javax.swing.JLabel();
|
||||||
|
spnNumRounds = new javax.swing.JSpinner();
|
||||||
|
lblPacks = new javax.swing.JLabel();
|
||||||
pnlPacks = new javax.swing.JPanel();
|
pnlPacks = new javax.swing.JPanel();
|
||||||
jLabel2 = new javax.swing.JLabel();
|
jLabel2 = new javax.swing.JLabel();
|
||||||
spnNumPlayers = new javax.swing.JSpinner();
|
spnNumPlayers = new javax.swing.JSpinner();
|
||||||
|
@ -127,14 +135,13 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
jLabel6 = new javax.swing.JLabel();
|
jLabel6 = new javax.swing.JLabel();
|
||||||
cbDraftTiming = new javax.swing.JComboBox();
|
cbDraftTiming = new javax.swing.JComboBox();
|
||||||
cbAllowSpectators = new javax.swing.JCheckBox();
|
cbAllowSpectators = new javax.swing.JCheckBox();
|
||||||
btnOk = new javax.swing.JButton();
|
|
||||||
btnCancel = new javax.swing.JButton();
|
|
||||||
jPanel1 = new javax.swing.JPanel();
|
jPanel1 = new javax.swing.JPanel();
|
||||||
jLabel3 = new javax.swing.JLabel();
|
jLabel3 = new javax.swing.JLabel();
|
||||||
jLabel4 = new javax.swing.JLabel();
|
jLabel4 = new javax.swing.JLabel();
|
||||||
txtPlayer1Name = new javax.swing.JTextField();
|
txtPlayer1Name = new javax.swing.JTextField();
|
||||||
pnlOtherPlayers = new javax.swing.JPanel();
|
pnlOtherPlayers = new javax.swing.JPanel();
|
||||||
jLabel5 = new javax.swing.JLabel();
|
btnOk = new javax.swing.JButton();
|
||||||
|
btnCancel = new javax.swing.JButton();
|
||||||
|
|
||||||
setTitle("New Tournament");
|
setTitle("New Tournament");
|
||||||
|
|
||||||
|
@ -142,9 +149,12 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
|
|
||||||
lbTimeLimit.setText("Time Limit:");
|
lbTimeLimit.setText("Time Limit:");
|
||||||
|
|
||||||
|
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cbTimeLimit, org.jdesktop.beansbinding.ObjectProperty.create(), lbTimeLimit, org.jdesktop.beansbinding.BeanProperty.create("labelFor"));
|
||||||
|
bindingGroup.addBinding(binding);
|
||||||
|
|
||||||
lblConstructionTime.setText("Construction Time (Minutes):");
|
lblConstructionTime.setText("Construction Time (Minutes):");
|
||||||
|
|
||||||
jLabel1.setText("Tournament Type:");
|
lblTournamentType.setText("Tournament Type:");
|
||||||
|
|
||||||
cbTournamentType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
cbTournamentType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
||||||
cbTournamentType.addActionListener(new java.awt.event.ActionListener() {
|
cbTournamentType.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
@ -163,6 +173,26 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
lblDraftCube.setText("Draft Cube");
|
||||||
|
|
||||||
|
cbDraftCube.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
||||||
|
cbDraftCube.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
cbDraftCubeActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lblNumRounds.setText("Number of Swiss Rounds:");
|
||||||
|
|
||||||
|
spnNumRounds.addChangeListener(new javax.swing.event.ChangeListener() {
|
||||||
|
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
||||||
|
spnNumRoundsnumPlayersChanged(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lblPacks.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
||||||
|
lblPacks.setText("Packs");
|
||||||
|
|
||||||
pnlPacks.setLayout(new java.awt.GridLayout(0, 1, 2, 0));
|
pnlPacks.setLayout(new java.awt.GridLayout(0, 1, 2, 0));
|
||||||
|
|
||||||
jLabel2.setText("Players:");
|
jLabel2.setText("Players:");
|
||||||
|
@ -176,42 +206,34 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
jLabel6.setText("Timing:");
|
jLabel6.setText("Timing:");
|
||||||
|
|
||||||
cbDraftTiming.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
cbDraftTiming.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
||||||
|
cbDraftTiming.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
cbDraftTimingActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
javax.swing.GroupLayout pnlDraftOptionsLayout = new javax.swing.GroupLayout(pnlDraftOptions);
|
javax.swing.GroupLayout pnlDraftOptionsLayout = new javax.swing.GroupLayout(pnlDraftOptions);
|
||||||
pnlDraftOptions.setLayout(pnlDraftOptionsLayout);
|
pnlDraftOptions.setLayout(pnlDraftOptionsLayout);
|
||||||
pnlDraftOptionsLayout.setHorizontalGroup(
|
pnlDraftOptionsLayout.setHorizontalGroup(
|
||||||
pnlDraftOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
pnlDraftOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(pnlDraftOptionsLayout.createSequentialGroup()
|
.addGroup(pnlDraftOptionsLayout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(jLabel6)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(cbDraftTiming, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(cbDraftTiming, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addContainerGap(19, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
pnlDraftOptionsLayout.setVerticalGroup(
|
pnlDraftOptionsLayout.setVerticalGroup(
|
||||||
pnlDraftOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
pnlDraftOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(pnlDraftOptionsLayout.createSequentialGroup()
|
.addGroup(pnlDraftOptionsLayout.createSequentialGroup()
|
||||||
.addComponent(jLabel6)
|
.addGap(3, 3, 3)
|
||||||
.addGap(0, 0, Short.MAX_VALUE))
|
.addGroup(pnlDraftOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(cbDraftTiming)
|
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(cbDraftTiming, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
cbAllowSpectators.setText("Allow spectators");
|
cbAllowSpectators.setText("Allow spectators");
|
||||||
|
|
||||||
btnOk.setText("OK");
|
|
||||||
btnOk.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
btnOkActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
btnCancel.setText("Cancel");
|
|
||||||
btnCancel.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
btnCancelActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
||||||
jLabel3.setText("Player 1 (You)");
|
jLabel3.setText("Player 1 (You)");
|
||||||
|
|
||||||
|
@ -246,25 +268,35 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
.addComponent(pnlOtherPlayers, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE))
|
.addComponent(pnlOtherPlayers, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
|
btnOk.setText("OK");
|
||||||
jLabel5.setText("Packs");
|
btnOk.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnOkActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnCancel.setText("Cancel");
|
||||||
|
btnCancel.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnCancelActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
getContentPane().setLayout(layout);
|
getContentPane().setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(jLabel2)
|
.addComponent(jLabel2)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(spnNumPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(spnNumPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGap(28, 28, 28)
|
||||||
.addComponent(pnlDraftOptions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(pnlDraftOptions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(cbAllowSpectators)
|
.addComponent(cbAllowSpectators))
|
||||||
.addGap(9, 9, 9))
|
|
||||||
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(pnlPacks, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addComponent(pnlPacks, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
@ -273,37 +305,43 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(btnCancel))
|
.addComponent(btnCancel))
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
.addComponent(lblName)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(lblName)
|
.addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(lbTimeLimit)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(lbTimeLimit)
|
.addComponent(cbTimeLimit, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
||||||
.addComponent(cbTimeLimit, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
.addComponent(lblTournamentType)
|
||||||
.addComponent(jLabel1)
|
.addComponent(lblDraftCube))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(cbTournamentType, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(cbDraftCube, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(lblConstructionTime, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(cbTournamentType, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(spnConstructTime, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(lblFreeMulligans)
|
.addComponent(lblConstructionTime, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(spnFreeMulligans, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(spnConstructTime, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(lblNumWins)
|
.addComponent(lblFreeMulligans)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(spnNumWins, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
.addComponent(spnFreeMulligans, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(jLabel5))
|
.addGap(18, 18, 18)
|
||||||
.addGap(0, 0, Short.MAX_VALUE)))
|
.addComponent(lblNumWins)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(spnNumWins, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE)
|
||||||
|
.addComponent(lblNumRounds)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(spnNumRounds, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
||||||
|
.addComponent(lblPacks))
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
|
@ -319,38 +357,39 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
.addComponent(spnConstructTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(spnConstructTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(jLabel1)
|
.addComponent(lblTournamentType)
|
||||||
.addComponent(cbTournamentType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(cbTournamentType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(lblFreeMulligans)
|
.addComponent(lblFreeMulligans)
|
||||||
.addComponent(spnFreeMulligans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(spnFreeMulligans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(lblNumWins)
|
.addComponent(lblNumWins)
|
||||||
.addComponent(spnNumWins, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(spnNumWins, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jLabel5)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(cbDraftCube, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(lblDraftCube)
|
||||||
|
.addComponent(spnNumRounds, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(lblNumRounds))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(pnlPacks, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)
|
.addComponent(lblPacks)
|
||||||
.addGap(11, 11, 11)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(pnlPacks, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(cbAllowSpectators, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(jLabel2)
|
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE))
|
.addComponent(spnNumPlayers)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(pnlDraftOptions, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(spnNumPlayers, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
|
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(pnlDraftOptions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGap(14, 14, 14)))
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(btnOk)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addComponent(btnCancel))
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addContainerGap())
|
||||||
.addComponent(btnOk)
|
|
||||||
.addComponent(btnCancel)))
|
|
||||||
.addGroup(layout.createSequentialGroup()
|
|
||||||
.addComponent(cbAllowSpectators)
|
|
||||||
.addGap(0, 0, Short.MAX_VALUE))))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bindingGroup.bind();
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
@ -367,6 +406,9 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
for (TournamentPlayerPanel player: players) {
|
for (TournamentPlayerPanel player: players) {
|
||||||
tOptions.getPlayerTypes().add((String) player.getPlayerType().getSelectedItem());
|
tOptions.getPlayerTypes().add((String) player.getPlayerType().getSelectedItem());
|
||||||
}
|
}
|
||||||
|
if (!tournamentType.isElimination()) {
|
||||||
|
tOptions.setNumberRounds((Integer)spnNumRounds.getValue());
|
||||||
|
}
|
||||||
if (tournamentType.isDraft()) {
|
if (tournamentType.isDraft()) {
|
||||||
DraftOptions options = new DraftOptions();
|
DraftOptions options = new DraftOptions();
|
||||||
options.setDraftType("");
|
options.setDraftType("");
|
||||||
|
@ -378,8 +420,12 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
tOptions.setLimitedOptions(new LimitedOptions());
|
tOptions.setLimitedOptions(new LimitedOptions());
|
||||||
}
|
}
|
||||||
tOptions.getLimitedOptions().setConstructionTime((Integer)this.spnConstructTime.getValue() * 60);
|
tOptions.getLimitedOptions().setConstructionTime((Integer)this.spnConstructTime.getValue() * 60);
|
||||||
for (JComboBox pack: packs) {
|
if (tournamentType.isCubeBooster()) {
|
||||||
tOptions.getLimitedOptions().getSetCodes().add(((ExpansionInfo) pack.getSelectedItem()).getCode());
|
tOptions.getLimitedOptions().setDraftCubeName(this.cbDraftCube.getSelectedItem().toString());
|
||||||
|
} else {
|
||||||
|
for (JComboBox pack: packs) {
|
||||||
|
tOptions.getLimitedOptions().getSetCodes().add(((ExpansionInfo) pack.getSelectedItem()).getCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tOptions.getMatchOptions().setMatchTimeLimit((MatchTimeLimit) this.cbTimeLimit.getSelectedItem());
|
tOptions.getMatchOptions().setMatchTimeLimit((MatchTimeLimit) this.cbTimeLimit.getSelectedItem());
|
||||||
|
@ -431,25 +477,64 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
// TODO add your handling code here:
|
// TODO add your handling code here:
|
||||||
}//GEN-LAST:event_spnNumWinsnumPlayersChanged
|
}//GEN-LAST:event_spnNumWinsnumPlayersChanged
|
||||||
|
|
||||||
|
private void cbDraftCubeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDraftCubeActionPerformed
|
||||||
|
// TODO add your handling code here:
|
||||||
|
}//GEN-LAST:event_cbDraftCubeActionPerformed
|
||||||
|
|
||||||
|
private void cbDraftTimingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDraftTimingActionPerformed
|
||||||
|
// TODO add your handling code here:
|
||||||
|
}//GEN-LAST:event_cbDraftTimingActionPerformed
|
||||||
|
|
||||||
|
private void spnNumRoundsnumPlayersChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spnNumRoundsnumPlayersChanged
|
||||||
|
// TODO add your handling code here:
|
||||||
|
}//GEN-LAST:event_spnNumRoundsnumPlayersChanged
|
||||||
|
|
||||||
private void setTournamentOptions(int numbPlayers) {
|
private void setTournamentOptions(int numbPlayers) {
|
||||||
TournamentTypeView tournamentType = (TournamentTypeView) cbTournamentType.getSelectedItem();
|
TournamentTypeView tournamentType = (TournamentTypeView) cbTournamentType.getSelectedItem();
|
||||||
|
activatePanelElements(tournamentType);
|
||||||
|
|
||||||
if (numbPlayers < tournamentType.getMinPlayers() || numbPlayers > tournamentType.getMaxPlayers()) {
|
if (numbPlayers < tournamentType.getMinPlayers() || numbPlayers > tournamentType.getMaxPlayers()) {
|
||||||
numbPlayers = tournamentType.getMinPlayers();
|
numbPlayers = tournamentType.getMinPlayers();
|
||||||
createPlayers(numbPlayers - 1);
|
createPlayers(numbPlayers - 1);
|
||||||
}
|
}
|
||||||
this.spnNumPlayers.setModel(new SpinnerNumberModel(numbPlayers, tournamentType.getMinPlayers(), tournamentType.getMaxPlayers(), 1));
|
this.spnNumPlayers.setModel(new SpinnerNumberModel(numbPlayers, tournamentType.getMinPlayers(), tournamentType.getMaxPlayers(), 1));
|
||||||
this.spnNumPlayers.setEnabled(tournamentType.getMinPlayers() != tournamentType.getMaxPlayers());
|
this.spnNumPlayers.setEnabled(tournamentType.getMinPlayers() != tournamentType.getMaxPlayers());
|
||||||
|
|
||||||
if (tournamentType.isLimited()) {
|
if (tournamentType.isLimited()) {
|
||||||
this.pnlPacks.setVisible(true);
|
|
||||||
createPacks(tournamentType.getNumBoosters());
|
createPacks(tournamentType.getNumBoosters());
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
this.pnlPacks.setVisible(false);
|
|
||||||
}
|
|
||||||
this.pnlDraftOptions.setVisible(tournamentType.isDraft());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets elements of the panel to visible or not visible
|
||||||
|
*
|
||||||
|
* @param tournamentType
|
||||||
|
*/
|
||||||
|
private void activatePanelElements(TournamentTypeView tournamentType) {
|
||||||
|
this.pnlDraftOptions.setVisible(tournamentType.isDraft());
|
||||||
|
this.lblNumRounds.setVisible(!tournamentType.isElimination());
|
||||||
|
this.spnNumRounds.setVisible(!tournamentType.isElimination());
|
||||||
|
if (tournamentType.isLimited()) {
|
||||||
|
if (tournamentType.isCubeBooster()) {
|
||||||
|
this.lblDraftCube.setVisible(true);
|
||||||
|
this.cbDraftCube.setVisible(true);
|
||||||
|
this.lblPacks.setVisible(false);
|
||||||
|
this.pnlPacks.setVisible(false);
|
||||||
|
} else {
|
||||||
|
this.lblDraftCube.setVisible(false);
|
||||||
|
this.cbDraftCube.setVisible(false);
|
||||||
|
this.lblPacks.setVisible(true);
|
||||||
|
this.pnlPacks.setVisible(true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// construced
|
||||||
|
this.lblDraftCube.setVisible(false);
|
||||||
|
this.cbDraftCube.setVisible(false);
|
||||||
|
this.pnlPacks.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void createPacks(int numPacks) {
|
private void createPacks(int numPacks) {
|
||||||
while (packs.size() > numPacks) {
|
while (packs.size() > numPacks) {
|
||||||
pnlPacks.remove(packs.get(packs.size() - 1));
|
pnlPacks.remove(packs.get(packs.size() - 1));
|
||||||
|
@ -561,22 +646,28 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
this.spnFreeMulligans.setValue(Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_NUMBER_OF_FREE_MULLIGANS, "0")));
|
this.spnFreeMulligans.setValue(Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_NUMBER_OF_FREE_MULLIGANS, "0")));
|
||||||
this.spnNumWins.setValue(Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_NUMBER_OF_WINS, "2")));
|
this.spnNumWins.setValue(Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_NUMBER_OF_WINS, "2")));
|
||||||
|
|
||||||
if (cbTournamentType.getSelectedItem().toString().equals("Sealed Elimination")) {
|
|
||||||
numPlayers = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PLAYERS_SEALED, "2"));
|
|
||||||
setTournamentOptions(numPlayers);
|
|
||||||
loadBoosterPacks(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PACKS_SEALED, ""));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cbTournamentType.getSelectedItem().toString().equals("Elimination Booster Draft")) {
|
TournamentTypeView tournamentType = (TournamentTypeView) cbTournamentType.getSelectedItem();
|
||||||
numPlayers = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PLAYERS_DRAFT, "4"));
|
activatePanelElements(tournamentType);
|
||||||
setTournamentOptions(numPlayers);
|
|
||||||
loadBoosterPacks(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PACKS_DRAFT, ""));
|
|
||||||
|
|
||||||
String draftTiming = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_DRAFT_TIMING, "REGULAR");
|
if (tournamentType.isLimited()) {
|
||||||
for (TimingOption timingOption : DraftOptions.TimingOption.values()) {
|
if (!tournamentType.isDraft()) {
|
||||||
if (timingOption.toString().equals(draftTiming)) {
|
numPlayers = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PLAYERS_SEALED, "2"));
|
||||||
cbDraftTiming.setSelectedItem(draftTiming);
|
setTournamentOptions(numPlayers);
|
||||||
break;
|
loadBoosterPacks(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PACKS_SEALED, ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tournamentType.isDraft()) {
|
||||||
|
numPlayers = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PLAYERS_DRAFT, "4"));
|
||||||
|
setTournamentOptions(numPlayers);
|
||||||
|
loadBoosterPacks(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_PACKS_DRAFT, ""));
|
||||||
|
|
||||||
|
String draftTiming = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_NEW_TOURNAMENT_DRAFT_TIMING, "REGULAR");
|
||||||
|
for (TimingOption timingOption : DraftOptions.TimingOption.values()) {
|
||||||
|
if (timingOption.toString().equals(draftTiming)) {
|
||||||
|
cbDraftTiming.setSelectedItem(draftTiming);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -644,30 +735,35 @@ public class NewTournamentDialog extends MageDialog {
|
||||||
private javax.swing.JButton btnCancel;
|
private javax.swing.JButton btnCancel;
|
||||||
private javax.swing.JButton btnOk;
|
private javax.swing.JButton btnOk;
|
||||||
private javax.swing.JCheckBox cbAllowSpectators;
|
private javax.swing.JCheckBox cbAllowSpectators;
|
||||||
|
private javax.swing.JComboBox cbDraftCube;
|
||||||
private javax.swing.JComboBox cbDraftTiming;
|
private javax.swing.JComboBox cbDraftTiming;
|
||||||
private javax.swing.JComboBox cbTimeLimit;
|
private javax.swing.JComboBox cbTimeLimit;
|
||||||
private javax.swing.JComboBox cbTournamentType;
|
private javax.swing.JComboBox cbTournamentType;
|
||||||
private javax.swing.JLabel jLabel1;
|
|
||||||
private javax.swing.JLabel jLabel2;
|
private javax.swing.JLabel jLabel2;
|
||||||
private javax.swing.JLabel jLabel3;
|
private javax.swing.JLabel jLabel3;
|
||||||
private javax.swing.JLabel jLabel4;
|
private javax.swing.JLabel jLabel4;
|
||||||
private javax.swing.JLabel jLabel5;
|
|
||||||
private javax.swing.JLabel jLabel6;
|
private javax.swing.JLabel jLabel6;
|
||||||
private javax.swing.JPanel jPanel1;
|
private javax.swing.JPanel jPanel1;
|
||||||
private javax.swing.JLabel lbTimeLimit;
|
private javax.swing.JLabel lbTimeLimit;
|
||||||
private javax.swing.JLabel lblConstructionTime;
|
private javax.swing.JLabel lblConstructionTime;
|
||||||
|
private javax.swing.JLabel lblDraftCube;
|
||||||
private javax.swing.JLabel lblFreeMulligans;
|
private javax.swing.JLabel lblFreeMulligans;
|
||||||
private javax.swing.JLabel lblName;
|
private javax.swing.JLabel lblName;
|
||||||
|
private javax.swing.JLabel lblNumRounds;
|
||||||
private javax.swing.JLabel lblNumWins;
|
private javax.swing.JLabel lblNumWins;
|
||||||
|
private javax.swing.JLabel lblPacks;
|
||||||
|
private javax.swing.JLabel lblTournamentType;
|
||||||
private javax.swing.JPanel pnlDraftOptions;
|
private javax.swing.JPanel pnlDraftOptions;
|
||||||
private javax.swing.JPanel pnlOtherPlayers;
|
private javax.swing.JPanel pnlOtherPlayers;
|
||||||
private javax.swing.JPanel pnlPacks;
|
private javax.swing.JPanel pnlPacks;
|
||||||
private javax.swing.JSpinner spnConstructTime;
|
private javax.swing.JSpinner spnConstructTime;
|
||||||
private javax.swing.JSpinner spnFreeMulligans;
|
private javax.swing.JSpinner spnFreeMulligans;
|
||||||
private javax.swing.JSpinner spnNumPlayers;
|
private javax.swing.JSpinner spnNumPlayers;
|
||||||
|
private javax.swing.JSpinner spnNumRounds;
|
||||||
private javax.swing.JSpinner spnNumWins;
|
private javax.swing.JSpinner spnNumWins;
|
||||||
private javax.swing.JTextField txtName;
|
private javax.swing.JTextField txtName;
|
||||||
private javax.swing.JTextField txtPlayer1Name;
|
private javax.swing.JTextField txtPlayer1Name;
|
||||||
|
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,14 +44,16 @@ public class ServerState implements Serializable {
|
||||||
private List<TournamentTypeView> tournamentTypes;
|
private List<TournamentTypeView> tournamentTypes;
|
||||||
private String[] playerTypes;
|
private String[] playerTypes;
|
||||||
private String[] deckTypes;
|
private String[] deckTypes;
|
||||||
|
private String[] draftCubes;
|
||||||
private boolean testMode;
|
private boolean testMode;
|
||||||
private MageVersion version;
|
private MageVersion version;
|
||||||
|
|
||||||
public ServerState(List<GameTypeView> gameTypes, List<TournamentTypeView> tournamentTypes, String[] playerTypes, String[] deckTypes, boolean testMode, MageVersion version) {
|
public ServerState(List<GameTypeView> gameTypes, List<TournamentTypeView> tournamentTypes, String[] playerTypes, String[] deckTypes, String[] draftCubes, boolean testMode, MageVersion version) {
|
||||||
this.gameTypes = gameTypes;
|
this.gameTypes = gameTypes;
|
||||||
this.tournamentTypes = tournamentTypes;
|
this.tournamentTypes = tournamentTypes;
|
||||||
this.playerTypes = playerTypes;
|
this.playerTypes = playerTypes;
|
||||||
this.deckTypes = deckTypes;
|
this.deckTypes = deckTypes;
|
||||||
|
this.draftCubes = draftCubes;
|
||||||
this.testMode = testMode;
|
this.testMode = testMode;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
@ -72,6 +74,10 @@ public class ServerState implements Serializable {
|
||||||
return deckTypes;
|
return deckTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String[] getDraftCubes() {
|
||||||
|
return draftCubes;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isTestMode() {
|
public boolean isTestMode() {
|
||||||
return testMode;
|
return testMode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -339,6 +339,12 @@ public class SessionImpl implements Session {
|
||||||
return serverState.getDeckTypes();
|
return serverState.getDeckTypes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getDraftCubes() {
|
||||||
|
return serverState.getDraftCubes();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TournamentTypeView> getTournamentTypes() {
|
public List<TournamentTypeView> getTournamentTypes() {
|
||||||
return serverState.getTournamentTypes();
|
return serverState.getTournamentTypes();
|
||||||
|
|
|
@ -43,5 +43,7 @@ public interface GameTypes {
|
||||||
|
|
||||||
String[] getDeckTypes();
|
String[] getDeckTypes();
|
||||||
|
|
||||||
|
String[] getDraftCubes();
|
||||||
|
|
||||||
List<TournamentTypeView> getTournamentTypes();
|
List<TournamentTypeView> getTournamentTypes();
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,8 +46,14 @@ public class DraftView implements Serializable {
|
||||||
private int cardNum;
|
private int cardNum;
|
||||||
|
|
||||||
public DraftView(Draft draft) {
|
public DraftView(Draft draft) {
|
||||||
for (ExpansionSet set: draft.getSets()) {
|
if (draft.getDraftCube() != null) {
|
||||||
sets.add(set.getName());
|
for (int i = 0; i < draft.getNumberBoosters(); i++) {
|
||||||
|
sets.add(draft.getDraftCube().getName());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (ExpansionSet set: draft.getSets()) {
|
||||||
|
sets.add(set.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.boosterNum = draft.getBoosterNum();
|
this.boosterNum = draft.getBoosterNum();
|
||||||
this.cardNum = draft.getCardNum();
|
this.cardNum = draft.getCardNum();
|
||||||
|
|
|
@ -86,7 +86,10 @@ public class MatchView implements Serializable {
|
||||||
this.matchId = table.getTournament().getId();
|
this.matchId = table.getTournament().getId();
|
||||||
this.matchName = table.getName();
|
this.matchName = table.getName();
|
||||||
this.gameType = table.getGameType();
|
this.gameType = table.getGameType();
|
||||||
this.deckType = new StringBuilder(table.getDeckType()).append(" ").append(table.getTournament().getSetsFormatedShort()).toString();
|
if (table.getTournament().getOptions().getNumberRounds() > 0) {
|
||||||
|
this.gameType = new StringBuilder(this.gameType).append(" ").append(table.getTournament().getOptions().getNumberRounds()).append(" Rounds").toString();
|
||||||
|
}
|
||||||
|
this.deckType = new StringBuilder(table.getDeckType()).append(" ").append(table.getTournament().getBoosterInfo()).toString();
|
||||||
|
|
||||||
StringBuilder sb1 = new StringBuilder();
|
StringBuilder sb1 = new StringBuilder();
|
||||||
for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) {
|
for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) {
|
||||||
|
|
|
@ -109,6 +109,9 @@ public class TableView implements Serializable {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.wins = table.getTournament().getOptions().getMatchOptions().getWinsNeeded();
|
this.wins = table.getTournament().getOptions().getMatchOptions().getWinsNeeded();
|
||||||
|
if (table.getTournament().getOptions().getNumberRounds() > 0) {
|
||||||
|
this.gameType = new StringBuilder(this.gameType).append(" ").append(table.getTournament().getOptions().getNumberRounds()).append(" Rounds").toString();
|
||||||
|
}
|
||||||
this.freeMulligans = table.getTournament().getOptions().getMatchOptions().getFreeMulligans();
|
this.freeMulligans = table.getTournament().getOptions().getMatchOptions().getFreeMulligans();
|
||||||
StringBuilder sb1 = new StringBuilder();
|
StringBuilder sb1 = new StringBuilder();
|
||||||
for (TournamentPlayer tp: table.getTournament().getPlayers()) {
|
for (TournamentPlayer tp: table.getTournament().getPlayers()) {
|
||||||
|
@ -129,7 +132,7 @@ public class TableView implements Serializable {
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
this.additionalInfo = sb.toString();
|
this.additionalInfo = sb.toString();
|
||||||
this.deckType = new StringBuilder(table.getDeckType()).append(" ").append(table.getTournament().getSetsFormatedShort()).toString();
|
this.deckType = new StringBuilder(table.getDeckType()).append(" ").append(table.getTournament().getBoosterInfo()).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@ public class TournamentTypeView implements Serializable {
|
||||||
private int numBoosters;
|
private int numBoosters;
|
||||||
private boolean draft;
|
private boolean draft;
|
||||||
private boolean limited;
|
private boolean limited;
|
||||||
|
private boolean cubeBooster;
|
||||||
|
private boolean elimination;
|
||||||
|
|
||||||
|
|
||||||
public TournamentTypeView(TournamentType tournamentType) {
|
public TournamentTypeView(TournamentType tournamentType) {
|
||||||
this.name = tournamentType.getName();
|
this.name = tournamentType.getName();
|
||||||
|
@ -52,6 +55,8 @@ public class TournamentTypeView implements Serializable {
|
||||||
this.numBoosters = tournamentType.getNumBoosters();
|
this.numBoosters = tournamentType.getNumBoosters();
|
||||||
this.draft = tournamentType.isDraft();
|
this.draft = tournamentType.isDraft();
|
||||||
this.limited = tournamentType.isLimited();
|
this.limited = tournamentType.isLimited();
|
||||||
|
this.cubeBooster = tournamentType.isCubeBooster();
|
||||||
|
this.elimination = tournamentType.isElimination();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -82,4 +87,13 @@ public class TournamentTypeView implements Serializable {
|
||||||
public boolean isLimited() {
|
public boolean isLimited() {
|
||||||
return limited;
|
return limited;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCubeBooster() {
|
||||||
|
return cubeBooster;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isElimination() {
|
||||||
|
return elimination;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class BoosterDraftEliminationCubeTournamentType extends TournamentType<BoosterDraftEliminationCubeTournamentType> {
|
||||||
|
|
||||||
|
public BoosterDraftEliminationCubeTournamentType() {
|
||||||
|
this.name = "Booster Draft Elimination (Cube)";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 4;
|
||||||
|
this.numBoosters = 3;
|
||||||
|
this.draft = true;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = true;
|
||||||
|
this.elimination = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -37,12 +37,14 @@ import mage.game.tournament.TournamentType;
|
||||||
public class BoosterDraftEliminationTournamentType extends TournamentType<BoosterDraftEliminationTournamentType> {
|
public class BoosterDraftEliminationTournamentType extends TournamentType<BoosterDraftEliminationTournamentType> {
|
||||||
|
|
||||||
public BoosterDraftEliminationTournamentType() {
|
public BoosterDraftEliminationTournamentType() {
|
||||||
this.name = "Elimination Booster Draft";
|
this.name = "Booster Draft Elimination";
|
||||||
this.maxPlayers = 16;
|
this.maxPlayers = 16;
|
||||||
this.minPlayers = 4;
|
this.minPlayers = 4;
|
||||||
this.numBoosters = 3;
|
this.numBoosters = 3;
|
||||||
this.draft = true;
|
this.draft = true;
|
||||||
this.limited = true;
|
this.limited = true;
|
||||||
|
this.cubeBooster = false;
|
||||||
|
this.elimination = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class BoosterDraftSwissCubeTournamentType extends TournamentType<BoosterDraftSwissCubeTournamentType> {
|
||||||
|
|
||||||
|
public BoosterDraftSwissCubeTournamentType() {
|
||||||
|
this.name = "Booster Draft Swiss (Cube)";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 4;
|
||||||
|
this.numBoosters = 3;
|
||||||
|
this.draft = true;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = true;
|
||||||
|
this.elimination = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.constants.TournamentPlayerState;
|
||||||
|
import mage.game.draft.BoosterDraft;
|
||||||
|
import mage.game.draft.Draft;
|
||||||
|
import mage.game.draft.DraftOptions;
|
||||||
|
import mage.game.events.TableEvent;
|
||||||
|
import mage.game.tournament.TournamentOptions;
|
||||||
|
import mage.game.tournament.TournamentPlayer;
|
||||||
|
import mage.game.tournament.TournamentSwiss;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author BetaSteward_at_googlemail.com
|
||||||
|
*/
|
||||||
|
public class BoosterDraftSwissTournament extends TournamentSwiss {
|
||||||
|
|
||||||
|
protected enum TournamentStep {
|
||||||
|
START, DRAFT, CONSTRUCT, COMPETE, WINNERS
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BoosterDraftSwissTournament.TournamentStep currentStep;
|
||||||
|
|
||||||
|
public BoosterDraftSwissTournament(TournamentOptions options) {
|
||||||
|
super(options);
|
||||||
|
currentStep = BoosterDraftSwissTournament.TournamentStep.START;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void draft() {
|
||||||
|
Draft draft = new BoosterDraft((DraftOptions) options.getLimitedOptions(), getSets());
|
||||||
|
for (TournamentPlayer player: players.values()) {
|
||||||
|
draft.addPlayer(player.getPlayer());
|
||||||
|
player.setState(TournamentPlayerState.DRAFTING);
|
||||||
|
}
|
||||||
|
tableEventSource.fireTableEvent(TableEvent.EventType.START_DRAFT, null, draft);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nextStep() {
|
||||||
|
switch (currentStep) {
|
||||||
|
case START:
|
||||||
|
currentStep = BoosterDraftSwissTournament.TournamentStep.DRAFT;
|
||||||
|
draft();
|
||||||
|
break;
|
||||||
|
case DRAFT:
|
||||||
|
currentStep = BoosterDraftSwissTournament.TournamentStep.CONSTRUCT;
|
||||||
|
construct();
|
||||||
|
break;
|
||||||
|
case CONSTRUCT:
|
||||||
|
currentStep = BoosterDraftSwissTournament.TournamentStep.COMPETE;
|
||||||
|
runTournament();
|
||||||
|
break;
|
||||||
|
case COMPETE:
|
||||||
|
currentStep = BoosterDraftSwissTournament.TournamentStep.WINNERS;
|
||||||
|
winners();
|
||||||
|
end();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class BoosterDraftSwissTournamentType extends TournamentType<BoosterDraftSwissTournamentType> {
|
||||||
|
|
||||||
|
public BoosterDraftSwissTournamentType() {
|
||||||
|
this.name = "Booster Draft Swiss";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 4;
|
||||||
|
this.numBoosters = 3;
|
||||||
|
this.draft = true;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = false;
|
||||||
|
this.elimination = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,404 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.tournament.cubes;
|
||||||
|
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class CubeTutor360Pauper extends DraftCube {
|
||||||
|
|
||||||
|
public CubeTutor360Pauper() {
|
||||||
|
super("Cube Tutor 360 Pauper");
|
||||||
|
|
||||||
|
cubeCards.add(new CardIdentity("Doomed Traveler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gideon's Lawkeeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goldmeadow Harrier",""));
|
||||||
|
cubeCards.add(new CardIdentity("Icatian Javelineers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steppe Lynx",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blade of the Sixth Pride",""));
|
||||||
|
cubeCards.add(new CardIdentity("Daring Skyjek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of Cliffhaven",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kor Skyfisher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Leonin Skyhunter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lone Missionary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Loyal Cathar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Trooper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stormfront Pegasus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Syndic of Tithes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Whitemane Lion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Youthful Knight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Apex Hawks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Attended Knight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aven Riftwatcher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ballynock Cohort",""));
|
||||||
|
cubeCards.add(new CardIdentity("Benalish Knight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kor Hookmaster",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kor Sanctifiers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Master of Diversion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Coalition Honor Guard",""));
|
||||||
|
cubeCards.add(new CardIdentity("Guardian of the Guildpact",""));
|
||||||
|
cubeCards.add(new CardIdentity("Seraph of Dawn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plover Knights",""));
|
||||||
|
cubeCards.add(new CardIdentity("Totem-Guide Hartebeest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Porcelain Legionnaire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cloudshift",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Tithe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Apostle's Blessing",""));
|
||||||
|
cubeCards.add(new CardIdentity("Feeling of Dread",""));
|
||||||
|
cubeCards.add(new CardIdentity("Momentary Blink",""));
|
||||||
|
cubeCards.add(new CardIdentity("Raise the Alarm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shelter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Test of Faith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blinding Beam",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prismatic Strands",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sunlance",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gather the Townsfolk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cenn's Enlistment",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hyena Umbra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonds of Faith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Journey to Nowhere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pacifism",""));
|
||||||
|
cubeCards.add(new CardIdentity("Temporal Isolation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arrest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cage of Hands",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oblivion Ring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faith's Fetters",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cloudfin Raptor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Delver of Secrets",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wingcrafter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frilled Oculus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Halimar Wavewatch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Looter il-Kor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Merfolk Looter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thought Courier",""));
|
||||||
|
cubeCards.add(new CardIdentity("Waterfront Bouncer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aether Adept",""));
|
||||||
|
cubeCards.add(new CardIdentity("Calcite Snapper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Man-o'-War",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pestermite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sea Gate Oracle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shaper Parasite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stealer of Secrets",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stitched Drake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stormbound Geist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Archaeomancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Makeshift Mauler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mist Raven",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ninja of the Deep Hours",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shimmering Glasskite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gryff Vanguard",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mnemonic Wall",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mulldrifter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aethersnipe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Errant Ephemeron",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spined Thopter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brainstorm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Force Spike",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boomerang",""));
|
||||||
|
cubeCards.add(new CardIdentity("Counterspell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Daze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Into the Roil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jilt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Leak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Miscalculation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Remove Soul",""));
|
||||||
|
cubeCards.add(new CardIdentity("Think Twice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Withdraw",""));
|
||||||
|
cubeCards.add(new CardIdentity("Capsize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Exclude",""));
|
||||||
|
cubeCards.add(new CardIdentity("Forbidden Alchemy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Repulse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rushing River",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ray of Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Condescend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ponder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Preordain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Silent Departure",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hands of Binding",""));
|
||||||
|
cubeCards.add(new CardIdentity("Compulsive Research",""));
|
||||||
|
cubeCards.add(new CardIdentity("Probe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deep Analysis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Foresee",""));
|
||||||
|
cubeCards.add(new CardIdentity("Narcolepsy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Claustrophobia",""));
|
||||||
|
cubeCards.add(new CardIdentity("Carnophage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fume Spitter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Typhoid Rats",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Lacerator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Basilica Screecher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blind Creeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dauthi Horror",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dauthi Slayer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nezumi Cutthroat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Interloper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wretched Anurid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blind Zealot",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chittering Rats",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crypt Rats",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dauthi Marauder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dead Reveler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Liliana's Specter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Rager",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soulcage Fiend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Driver of the Dead",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faceless Butcher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gravedigger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mortis Dogs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Okiba-Gang Shinobi",""));
|
||||||
|
cubeCards.add(new CardIdentity("Warren Pilferers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Twisted Abomination",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vault Skirge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pith Driller",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disfigure",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tragic Slip",""));
|
||||||
|
cubeCards.add(new CardIdentity("Undying Evil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vendetta",""));
|
||||||
|
cubeCards.add(new CardIdentity("Devour Flesh",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diabolic Edict",""));
|
||||||
|
cubeCards.add(new CardIdentity("Doom Blade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grim Harvest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Last Gasp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nameless Inversion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terror",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rend Flesh",""));
|
||||||
|
cubeCards.add(new CardIdentity("Snuff Out",""));
|
||||||
|
cubeCards.add(new CardIdentity("Death Denied",""));
|
||||||
|
cubeCards.add(new CardIdentity("Duress",""));
|
||||||
|
cubeCards.add(new CardIdentity("Unearth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disturbed Burial",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hymn to Tourach",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sign in Blood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ashes to Ashes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crippling Fatigue",""));
|
||||||
|
cubeCards.add(new CardIdentity("Read the Bones",""));
|
||||||
|
cubeCards.add(new CardIdentity("Evincar's Justice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dead Weight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stab Wound",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pestilence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Bushwhacker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg Fanatic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ashmouth Hound",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireslinger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gore-House Chainwalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Keldon Marauders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg Flunkies",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg War Marshal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plated Geopede",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skirk Marauder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sparksmith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Torch Fiend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blood Ogre",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fervent Cathar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ghitu Slinger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hanweir Lancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Splatter Thug",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vulshok Sorcerer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gorehorn Minotaurs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rubblebelt Maaka",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gathan Raiders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Slash Panther",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brute Force",""));
|
||||||
|
cubeCards.add(new CardIdentity("Burst Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Incinerate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lash Out",""));
|
||||||
|
cubeCards.add(new CardIdentity("Searing Blaze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Searing Spear",""));
|
||||||
|
cubeCards.add(new CardIdentity("Barbed Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brimstone Volley",""));
|
||||||
|
cubeCards.add(new CardIdentity("Staggershock",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireblast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chain Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faithless Looting",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firebolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flame Slash",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reckless Charge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Krenko's Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Volcanic Hammer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Act of Treason",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arc Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rift Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Traitorous Instinct",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pyrotechnics",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireball",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rolling Thunder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Madcap Skills",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arbor Elf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Basking Rootwalla",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fyndhorn Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Llanowar Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wild Nacatl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Young Wolf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ambush Viper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Darkthicket Wolf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dawntreader Elk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk's Companion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mire Boa",""));
|
||||||
|
cubeCards.add(new CardIdentity("River Boa",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sakura-Tribe Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Silhana Ledgewalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thornweald Archer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Viridian Emissary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Roots",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wild Mongrel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Citanul Woodreaders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crocanura",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simian Grunts",""));
|
||||||
|
cubeCards.add(new CardIdentity("Slaughterhorn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Trusted Forcemage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yavimaya Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blastoderm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Imperiosaur",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mold Shambler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nantuko Vigilante",""));
|
||||||
|
cubeCards.add(new CardIdentity("Penumbra Spider",""));
|
||||||
|
cubeCards.add(new CardIdentity("Primal Huntbeast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wickerbough Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nessian Asp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sentinel Spider",""));
|
||||||
|
cubeCards.add(new CardIdentity("Krosan Tusker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Maul Splicer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Walker of the Grove",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thundering Tanadon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Giant Growth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Groundswell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vines of Vastwood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sprout Swarm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crushing Vines",""));
|
||||||
|
cubeCards.add(new CardIdentity("Harrow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elephant Ambush",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prey Upon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Edge of Autumn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rampant Growth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Travel Preparations",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cultivate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kodama's Reach",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rancor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arachnus Web",""));
|
||||||
|
cubeCards.add(new CardIdentity("Moldervine Cloak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deputy of Acquittals",""));
|
||||||
|
cubeCards.add(new CardIdentity("Curse of Chains",""));
|
||||||
|
cubeCards.add(new CardIdentity("Agony Warp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Recoil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soul Manipulation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Shred-Freak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terminate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Auger Spree",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wrecking Ball",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Zhur-Taa Swine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pit Fight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Branching Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Qasali Pridemage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Centaur Healer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Armadillo Cloak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tithe Drinker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kingpin's Pet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blind Hunter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Unmake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pillory of the Sleepless",""));
|
||||||
|
cubeCards.add(new CardIdentity("Putrid Leech",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rendclaw Trow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sluiceway Scorpion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grisly Salvage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Consume Strength",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shambleshark",""));
|
||||||
|
cubeCards.add(new CardIdentity("Beetleform Mage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Assault Zeppelid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Snakeform",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frostburn Weird",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Electromancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Chronarch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Legionnaire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wojek Halberdiers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skyknight Legionnaire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Viashino Firstblade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Martial Glory",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ulamog's Crusher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Perilous Myr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pilgrim's Eye",""));
|
||||||
|
cubeCards.add(new CardIdentity("Adventuring Gear",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blazing Torch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonesplitter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flayer Husk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Leonin Bola",""));
|
||||||
|
cubeCards.add(new CardIdentity("Leonin Scimitar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sylvok Lifestaff",""));
|
||||||
|
cubeCards.add(new CardIdentity("Viridian Longbow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wayfarer's Bauble",""));
|
||||||
|
cubeCards.add(new CardIdentity("Armillary Sphere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind Stone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prismatic Lens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prophetic Prism",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vulshok Morningstar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pristine Talisman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Strider Harness",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tumble Magnet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Whispersilk Cloak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Serrated Arrows",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Chancery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Garrison",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Desert",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Aqueduct",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Evolving Wilds",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Rot Farm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Turf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Halimar Depths",""));
|
||||||
|
cubeCards.add(new CardIdentity("Haunted Fengraf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Boilerworks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Khalni Garden",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Basilica",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Quicksand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Carnarium",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rupture Spire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Sanctuary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Growth Chamber",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Guildgate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Teetering Peaks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terramorphic Expanse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Transguild Promenade",""));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,763 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.tournament.cubes;
|
||||||
|
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class CubeTutor720 extends DraftCube {
|
||||||
|
|
||||||
|
public CubeTutor720() {
|
||||||
|
super("Cube Tutor 720");
|
||||||
|
|
||||||
|
cubeCards.add(new CardIdentity("Elite Vanguard",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gideon's Lawkeeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Isamaru, Hound of Konda",""));
|
||||||
|
cubeCards.add(new CardIdentity("Loam Lion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mother of Runes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Savannah Lions",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soldier of the Pantheon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steppe Lynx",""));
|
||||||
|
cubeCards.add(new CardIdentity("Student of Warfare",""));
|
||||||
|
cubeCards.add(new CardIdentity("Weathered Wayfarer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Accorder Paladin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cloistered Youth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Eight-and-a-Half-Tails",""));
|
||||||
|
cubeCards.add(new CardIdentity("Imposing Sovereign",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of Glory",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of Meadowgrain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kor Skyfisher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Leonin Relic-Warder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lone Missionary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Precinct Captain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Monk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Priest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Trooper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stoneforge Mystic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Omens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Banisher Priest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blade Splicer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fiend Hunter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flickerwisp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frontline Medic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kor Sanctifiers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mentor of the Meek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirran Crusader",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirror Entity",""));
|
||||||
|
cubeCards.add(new CardIdentity("Silverblade Paladin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Champion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stonecloaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Emeria Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero of Bladehold",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ranger of Eos",""));
|
||||||
|
cubeCards.add(new CardIdentity("Restoration Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sublime Archangel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Baneslayer Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cloudgoat Ranger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Geist-Honored Monk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Karmic Guide",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reveillark",""));
|
||||||
|
cubeCards.add(new CardIdentity("Exalted Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mikaeus, the Lunarch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sun Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yosei, the Morning Star",""));
|
||||||
|
cubeCards.add(new CardIdentity("Angel of Serenity",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elesh Norn, Grand Cenobite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Eternal Dragon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Akroma, Angel of Wrath",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani, Caller of the Pride",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani Goldmane",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth, Knight-Errant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth Tirel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gideon Jura",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth, Sun's Champion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Porcelain Legionnaire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Condemn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Enlightened Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Tithe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Path to Exile",""));
|
||||||
|
cubeCards.add(new CardIdentity("Swords to Plowshares",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disenchant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Momentary Blink",""));
|
||||||
|
cubeCards.add(new CardIdentity("Balance",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lingering Souls",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spectral Procession",""));
|
||||||
|
cubeCards.add(new CardIdentity("Armageddon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Day of Judgment",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wrath of God",""));
|
||||||
|
cubeCards.add(new CardIdentity("Akroma's Vengeance",""));
|
||||||
|
cubeCards.add(new CardIdentity("Catastrophe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terminus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Martial Coup",""));
|
||||||
|
cubeCards.add(new CardIdentity("Entreat the Angels",""));
|
||||||
|
cubeCards.add(new CardIdentity("Decree of Justice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Land Tax",""));
|
||||||
|
cubeCards.add(new CardIdentity("Honor of the Pure",""));
|
||||||
|
cubeCards.add(new CardIdentity("Journey to Nowhere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pacifism",""));
|
||||||
|
cubeCards.add(new CardIdentity("Seal of Cleansing",""));
|
||||||
|
cubeCards.add(new CardIdentity("Glorious Anthem",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oblivion Ring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Angelic Destiny",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faith's Fetters",""));
|
||||||
|
cubeCards.add(new CardIdentity("Parallax Wave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spear of Heliod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Delver of Secrets",""));
|
||||||
|
cubeCards.add(new CardIdentity("Enclave Cryptologist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Augur of Bolas",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gilded Drake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Looter il-Kor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Merfolk Looter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phantasmal Image",""));
|
||||||
|
cubeCards.add(new CardIdentity("Snapcaster Mage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Waterfront Bouncer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Willbender",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aether Adept",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kira, Great Glass-Spinner",""));
|
||||||
|
cubeCards.add(new CardIdentity("Man-o'-War",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pestermite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sea Gate Oracle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Serendib Efreet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Trinket Mage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vendilion Clique",""));
|
||||||
|
cubeCards.add(new CardIdentity("Clone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dungeon Geists",""));
|
||||||
|
cubeCards.add(new CardIdentity("Glen Elendra Archmage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ninja of the Deep Hours",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sower of Temptation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Talrand, Sky Summoner",""));
|
||||||
|
cubeCards.add(new CardIdentity("Venser, Shaper Savant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Meloku the Clouded Mirror",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mulldrifter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Riftwing Cloudskate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Teferi, Mage of Zhalfir",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aetherling",""));
|
||||||
|
cubeCards.add(new CardIdentity("Consecrated Sphinx",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frost Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Keiga, the Tide Star",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx of Jwar Isle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace Beleren",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace, Architect of Thought",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace, the Mind Sculptor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tamiyo, the Moon Sage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tezzeret the Seeker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Metamorph",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inkwell Leviathan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancestral Recall",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brainstorm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Force Spike",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mystical Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spell Pierce",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arcane Denial",""));
|
||||||
|
cubeCards.add(new CardIdentity("Counterspell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cyclonic Rift",""));
|
||||||
|
cubeCards.add(new CardIdentity("Daze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Impulse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Into the Roil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Drain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Leak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Memory Lapse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Miscalculation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Negate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Remand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Capsize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dissipate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Forbid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Forbidden Alchemy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frantic Search",""));
|
||||||
|
cubeCards.add(new CardIdentity("Psionic Blast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thirst for Knowledge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cryptic Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fact or Fiction",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gifts Ungiven",""));
|
||||||
|
cubeCards.add(new CardIdentity("Force of Will",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pact of Negation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Condescend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Repeal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancestral Vision",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ponder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Preordain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Time Walk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Compulsive Research",""));
|
||||||
|
cubeCards.add(new CardIdentity("Show and Tell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tinker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deep Analysis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bribery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Time Warp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Time Spiral",""));
|
||||||
|
cubeCards.add(new CardIdentity("Upheaval",""));
|
||||||
|
cubeCards.add(new CardIdentity("Control Magic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Opposition",""));
|
||||||
|
cubeCards.add(new CardIdentity("Treachery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thassa, God of the Sea",""));
|
||||||
|
cubeCards.add(new CardIdentity("Carnophage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Carrion Feeder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diregraf Ghoul",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gravecrawler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tormented Hero",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Lacerator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blood Artist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blood Scrivener",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodghast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dark Confidant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dauthi Horror",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gatekeeper of Malakir",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of Infamy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nantuko Shade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nezumi Graverobber",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oona's Prowler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pack Rat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reassembling Skeleton",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Hexmage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bone Shredder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fleshbag Marauder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Geralf's Messenger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hypnotic Specter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Rager",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Nighthawk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Abyssal Persecutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bane of the Living",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodline Keeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Braids, Cabal Minion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crypt Ghast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Desecration Demon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disciple of Bolas",""));
|
||||||
|
cubeCards.add(new CardIdentity("Graveborn Muse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nekrataal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skinrender",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodgift Demon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shriekmaw",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grave Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ink-Eyes, Servant of Oni",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kokusho, the Evening Star",""));
|
||||||
|
cubeCards.add(new CardIdentity("Massacre Wurm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sheoldred, Whispering One",""));
|
||||||
|
cubeCards.add(new CardIdentity("Griselbrand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tombstalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Liliana of the Veil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Liliana Vess",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sorin Markov",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dark Ritual",""));
|
||||||
|
cubeCards.add(new CardIdentity("Entomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tragic Slip",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampiric Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diabolic Edict",""));
|
||||||
|
cubeCards.add(new CardIdentity("Doom Blade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Go for the Throat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ultimate Price",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dismember",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero's Downfall",""));
|
||||||
|
cubeCards.add(new CardIdentity("Slaughter Pact",""));
|
||||||
|
cubeCards.add(new CardIdentity("Makeshift Mannequin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Snuff Out",""));
|
||||||
|
cubeCards.add(new CardIdentity("Duress",""));
|
||||||
|
cubeCards.add(new CardIdentity("Innocent Blood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inquisition of Kozilek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reanimate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thoughtseize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chainer's Edict",""));
|
||||||
|
cubeCards.add(new CardIdentity("Demonic Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Exhume",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hymn to Tourach",""));
|
||||||
|
cubeCards.add(new CardIdentity("Night's Whisper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sign in Blood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sinkhole",""));
|
||||||
|
cubeCards.add(new CardIdentity("Smallpox",""));
|
||||||
|
cubeCards.add(new CardIdentity("Buried Alive",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yawgmoth's Will",""));
|
||||||
|
cubeCards.add(new CardIdentity("Barter in Blood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Consuming Vapors",""));
|
||||||
|
cubeCards.add(new CardIdentity("Damnation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Living Death",""));
|
||||||
|
cubeCards.add(new CardIdentity("Unburial Rites",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind Twist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Black Sun's Zenith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Profane Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sarcomancy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Animate Dead",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bitterblossom",""));
|
||||||
|
cubeCards.add(new CardIdentity("Necromancy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Necropotence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Arena",""));
|
||||||
|
cubeCards.add(new CardIdentity("Recurring Nightmare",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diabolic Servitude",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firedrinker Satyr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Guide",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Welder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grim Lavamancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jackal Pup",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kird Ape",""));
|
||||||
|
cubeCards.add(new CardIdentity("Legion Loyalist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg Fanatic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reckless Waif",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spikeshot Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stromkirk Noble",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ash Zealot",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ember Hauler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gore-House Chainwalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hellspark Elemental",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kargan Dragonlord",""));
|
||||||
|
cubeCards.add(new CardIdentity("Keldon Marauders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Mauler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg War Marshal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plated Geopede",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stormblood Berserker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Torch Fiend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Young Pyromancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ball Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra's Phoenix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Countryside Crusher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Ruinblaster",""));
|
||||||
|
cubeCards.add(new CardIdentity("Guttersnipe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hell's Thunder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Manic Vandal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Squee, Goblin Nabob",""));
|
||||||
|
cubeCards.add(new CardIdentity("Zo-Zu the Punisher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avalanche Riders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blistering Firecat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flametongue Kavu",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hellrider",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero of Oxid Ridge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Keldon Champion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kiki-Jiki, Mirror Breaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Siege-Gang Commander",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thundermaw Hellkite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Zealous Conscripts",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inferno Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bogardan Hellkite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Greater Gargadon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra, Pyromaster",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra, the Firebrand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Koth of the Hammer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra Nalaar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Burst Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancient Grudge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Incinerate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Strike",""));
|
||||||
|
cubeCards.add(new CardIdentity("Magma Jet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Searing Blaze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Searing Spear",""));
|
||||||
|
cubeCards.add(new CardIdentity("Smash to Smithereens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brimstone Volley",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chaos Warp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Char",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flame Javelin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Staggershock",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireblast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chain Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faithless Looting",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firebolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reckless Charge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arc Trail",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mizzium Mortars",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pyroclasm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arc Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flames of the Firebrand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Molten Rain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pillage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rift Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Slagstorm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stone Rain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wheel of Fortune",""));
|
||||||
|
cubeCards.add(new CardIdentity("Banefire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Devil's Play",""));
|
||||||
|
cubeCards.add(new CardIdentity("Earthquake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireball",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wildfire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonfire of the Damned",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sulfuric Vortex",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sneak Attack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arbor Elf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avacyn's Pilgrim",""));
|
||||||
|
cubeCards.add(new CardIdentity("Birds of Paradise",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elves of Deep Shadow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elvish Mystic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Experiment One",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fyndhorn Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Joraga Treespeaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Llanowar Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Noble Hierarch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ulvenwald Tracker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wild Nacatl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fauna Shaman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lotus Cobra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mayor of Avabruck",""));
|
||||||
|
cubeCards.add(new CardIdentity("River Boa",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rofellos, Llanowar Emissary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sakura-Tribe Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scavenging Ooze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Strangleroot Geist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sylvan Caryatid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tarmogoyf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Blossoms",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Roots",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wild Mongrel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Eternal Witness",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ohran Viper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Troll Ascetic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Uktabi Orangutan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Viridian Shaman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wolfir Avenger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yavimaya Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blastoderm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chameleon Colossus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deadbridge Goliath",""));
|
||||||
|
cubeCards.add(new CardIdentity("Master of the Wild Hunt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Obstinate Baloth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oracle of Mul Daya",""));
|
||||||
|
cubeCards.add(new CardIdentity("Polukranos, World Eater",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thrun, the Last Troll",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vengevine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wickerbough Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Acidic Slime",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deranged Hermit",""));
|
||||||
|
cubeCards.add(new CardIdentity("Genesis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Indrik Stomphowler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kalonian Hydra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thragtusk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vorapede",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wolfir Silverheart",""));
|
||||||
|
cubeCards.add(new CardIdentity("Primeval Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rampaging Baloths",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avenger of Zendikar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hornet Queen",""));
|
||||||
|
cubeCards.add(new CardIdentity("Krosan Tusker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Craterhoof Behemoth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terastodon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Woodfall Primus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk Relentless",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk Wildspeaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk, Primal Hunter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Birthing Pod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Giant Growth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vines of Vastwood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Worldly Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Naturalize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Beast Within",""));
|
||||||
|
cubeCards.add(new CardIdentity("Harrow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Krosan Grip",""));
|
||||||
|
cubeCards.add(new CardIdentity("Channel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Explore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Farseek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Life from the Loam",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rampant Growth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Regrowth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Call of the Herd",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cultivate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kodama's Reach",""));
|
||||||
|
cubeCards.add(new CardIdentity("Search for Tomorrow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Harmonize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Natural Order",""));
|
||||||
|
cubeCards.add(new CardIdentity("Overrun",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plow Under",""));
|
||||||
|
cubeCards.add(new CardIdentity("Primal Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Green Sun's Zenith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tooth and Nail",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rancor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Survival of the Fittest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sylvan Library",""));
|
||||||
|
cubeCards.add(new CardIdentity("Awakening Zone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boon Satyr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Geist of Saint Traft",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grand Arbiter Augustin IV",""));
|
||||||
|
cubeCards.add(new CardIdentity("Venser, the Sojourner",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx's Revelation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Supreme Verdict",""));
|
||||||
|
cubeCards.add(new CardIdentity("Detention Sphere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Psychatog",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shadowmage Infiltrator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Duskmantle Seer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oona, Queen of the Fae",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tezzeret, Agent of Bolas",""));
|
||||||
|
cubeCards.add(new CardIdentity("Baleful Strix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Far // Away",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Cackler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spike Jester",""));
|
||||||
|
cubeCards.add(new CardIdentity("Falkenrath Aristocrat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Murderous Redcap",""));
|
||||||
|
cubeCards.add(new CardIdentity("Olivia Voldaren",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terminate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bituminous Blast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dreadbore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Burning-Tree Emissary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boggart Ram-Gang",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodbraid Elf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ghor-Clan Rampager",""));
|
||||||
|
cubeCards.add(new CardIdentity("Huntmaster of the Fells",""));
|
||||||
|
cubeCards.add(new CardIdentity("Domri Rade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sarkhan Vol",""));
|
||||||
|
cubeCards.add(new CardIdentity("Xenagos, the Reveler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dryad Militant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Qasali Pridemage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Voice of Resurgence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kitchen Finks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of the Reliquary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Loxodon Smiter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Armada Wurm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirari's Wake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Obzedat, Ghost Council",""));
|
||||||
|
cubeCards.add(new CardIdentity("Angel of Despair",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sorin, Lord of Innistrad",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tidehollow Sculler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mortify",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vindicate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deathrite Shaman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lotleth Troll",""));
|
||||||
|
cubeCards.add(new CardIdentity("Putrid Leech",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dreg Mangler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Varolz, the Scar-Striped",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vraska the Unseen",""));
|
||||||
|
cubeCards.add(new CardIdentity("Abrupt Decay",""));
|
||||||
|
cubeCards.add(new CardIdentity("Putrefy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Maelstrom Pulse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pernicious Deed",""));
|
||||||
|
cubeCards.add(new CardIdentity("Coiling Oracle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Edric, Spymaster of Trest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Trygon Predator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mystic Snake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prime Speaker Zegana",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Sky Swallower",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shardless Agent",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Niv-Mizzet, Dracogenius",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ral Zarek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fire // Ice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Turn // Burn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Electrolyze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steam Augury",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prophetic Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Figure of Destiny",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Reckoner",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani Vengeant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Helix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Assemble the Legion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx of the Steel Wind",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nicol Bolas, Planeswalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kozilek, Butcher of Truth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ulamog, the Infinite Gyre",""));
|
||||||
|
cubeCards.add(new CardIdentity("Karn Liberated",""));
|
||||||
|
cubeCards.add(new CardIdentity("Epochrasite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Perilous Myr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Revoker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spellskite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Palladium Myr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lodestone Golem",""));
|
||||||
|
cubeCards.add(new CardIdentity("Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Molten-Tail Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Solemn Simulacrum",""));
|
||||||
|
cubeCards.add(new CardIdentity("Precursor Golem",""));
|
||||||
|
cubeCards.add(new CardIdentity("Razormane Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Duplicant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steel Hellkite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Triskelion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wurmcoil Engine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Myr Battlesphere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sundering Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Black Lotus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chrome Mox",""));
|
||||||
|
cubeCards.add(new CardIdentity("Everflowing Chalice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lotus Bloom",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Crypt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Diamond",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Emerald",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Jet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Pearl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Ruby",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Sapphire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aether Vial",""));
|
||||||
|
cubeCards.add(new CardIdentity("Basilisk Collar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Black Vise",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonesplitter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cursed Scroll",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Vault",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pithing Needle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Relic of Progenitus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sensei's Divining Top",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skullclamp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sol Ring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ankh of Mishra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Coldsteel Heart",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grim Monolith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Isochron Scepter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Greaves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind Stone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mortarpod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ratchet Bomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scroll Rack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shrine of Burning Rage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphere of the Suns",""));
|
||||||
|
cubeCards.add(new CardIdentity("Umezawa's Jitte",""));
|
||||||
|
cubeCards.add(new CardIdentity("Winter Orb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Basalt Monolith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chromatic Lantern",""));
|
||||||
|
cubeCards.add(new CardIdentity("Coalition Relic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crucible of Worlds",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crystal Shard",""));
|
||||||
|
cubeCards.add(new CardIdentity("Darksteel Ingot",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grafted Wargear",""));
|
||||||
|
cubeCards.add(new CardIdentity("Loxodon Warhammer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mimic Vat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oblivion Stone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Body and Mind",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Feast and Famine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Fire and Ice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Light and Shadow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of War and Peace",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tangle Wire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vedalken Shackles",""));
|
||||||
|
cubeCards.add(new CardIdentity("Worn Powerstone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Erratic Portal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Icy Manipulator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nevinyrral's Disk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Smokestack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thran Dynamo",""));
|
||||||
|
cubeCards.add(new CardIdentity("Batterskull",""));
|
||||||
|
cubeCards.add(new CardIdentity("Engineered Explosives",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gilded Lotus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Memory Jar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mindslaver",""));
|
||||||
|
cubeCards.add(new CardIdentity("All Is Dust",""));
|
||||||
|
cubeCards.add(new CardIdentity("Academy Ruins",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancient Tomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arcane Sanctum",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arid Mesa",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Chancery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Badlands",""));
|
||||||
|
cubeCards.add(new CardIdentity("Battlefield Forge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bayou",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blood Crypt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodstained Mire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Garrison",""));
|
||||||
|
cubeCards.add(new CardIdentity("Breeding Pool",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cascade Bluffs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Caves of Koilos",""));
|
||||||
|
cubeCards.add(new CardIdentity("Celestial Colonnade",""));
|
||||||
|
cubeCards.add(new CardIdentity("City of Brass",""));
|
||||||
|
cubeCards.add(new CardIdentity("Clifftop Retreat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Creeping Tar Pit",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crumbling Necropolis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Aqueduct",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dragonskull Summit",""));
|
||||||
|
cubeCards.add(new CardIdentity("Drowned Catacomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Evolving Wilds",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faerie Conclave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fetid Heath",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flooded Strand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gaea's Cradle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gavony Township",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gemstone Mine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Glacial Fortress",""));
|
||||||
|
cubeCards.add(new CardIdentity("Godless Shrine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Rot Farm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grand Coliseum",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Turf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hallowed Fountain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hinterland Harbor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Isolated Chapel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Boilerworks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jungle Shrine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kessig Wolf Run",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lavaclaw Reaches",""));
|
||||||
|
cubeCards.add(new CardIdentity("Library of Alexandria",""));
|
||||||
|
cubeCards.add(new CardIdentity("Llanowar Wastes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Marsh Flats",""));
|
||||||
|
cubeCards.add(new CardIdentity("Maze of Ith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mishra's Factory",""));
|
||||||
|
cubeCards.add(new CardIdentity("Misty Rainforest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mutavault",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Basilica",""));
|
||||||
|
cubeCards.add(new CardIdentity("Overgrown Tomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plateau",""));
|
||||||
|
cubeCards.add(new CardIdentity("Polluted Delta",""));
|
||||||
|
cubeCards.add(new CardIdentity("Raging Ravine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Carnarium",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reflecting Pool",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rishadan Port",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rootbound Crag",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rugged Prairie",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sacred Foundry",""));
|
||||||
|
cubeCards.add(new CardIdentity("Savage Lands",""));
|
||||||
|
cubeCards.add(new CardIdentity("Savannah",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scalding Tarn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scrubland",""));
|
||||||
|
cubeCards.add(new CardIdentity("Seaside Citadel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Sanctuary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shelldock Isle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Growth Chamber",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steam Vents",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stirring Wildwood",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stomping Ground",""));
|
||||||
|
cubeCards.add(new CardIdentity("Strip Mine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sulfur Falls",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sunpetal Grove",""));
|
||||||
|
cubeCards.add(new CardIdentity("Taiga",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tectonic Edge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Temple Garden",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terramorphic Expanse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Treetop Village",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tropical Island",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tundra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Twilight Mire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Underground Sea",""));
|
||||||
|
cubeCards.add(new CardIdentity("Verdant Catacombs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vivid Crag",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vivid Creek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vivid Grove",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vivid Marsh",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vivid Meadow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Volcanic Island",""));
|
||||||
|
cubeCards.add(new CardIdentity("Volrath's Stronghold",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wasteland",""));
|
||||||
|
cubeCards.add(new CardIdentity("Watery Grave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Windswept Heath",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wooded Foothills",""));
|
||||||
|
cubeCards.add(new CardIdentity("Woodland Cemetery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yavimaya Coast",""));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,583 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.tournament.cubes;
|
||||||
|
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class HolidayCube2013 extends DraftCube {
|
||||||
|
|
||||||
|
public HolidayCube2013() {
|
||||||
|
super("MTGO Holiday Cube 2013");
|
||||||
|
|
||||||
|
cubeCards.add(new CardIdentity("Honor of the Pure",""));
|
||||||
|
cubeCards.add(new CardIdentity("Path to Exile",""));
|
||||||
|
cubeCards.add(new CardIdentity("Land Tax",""));
|
||||||
|
cubeCards.add(new CardIdentity("Exalted Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Tithe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spectral Procession",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Omens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sun Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Leonin Relic-Warder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elesh Norn, Grand Cenobite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lingering Souls",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terminus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disenchant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mother of Runes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Weathered Wayfarer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ravages of War",""));
|
||||||
|
cubeCards.add(new CardIdentity("Student of Warfare",""));
|
||||||
|
cubeCards.add(new CardIdentity("Swords to Plowshares",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth Tirel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirran Crusader",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elite Vanguard",""));
|
||||||
|
cubeCards.add(new CardIdentity("Day of Judgment",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nearheath Pilgrim",""));
|
||||||
|
cubeCards.add(new CardIdentity("Silverblade Paladin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soldier of the Pantheon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Enlightened Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Soltari Champion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Catastrophe",""));
|
||||||
|
cubeCards.add(new CardIdentity("Parallax Wave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rout",""));
|
||||||
|
cubeCards.add(new CardIdentity("Whipcorder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kami of Ancient Law",""));
|
||||||
|
cubeCards.add(new CardIdentity("Isamaru, Hound of Konda",""));
|
||||||
|
cubeCards.add(new CardIdentity("Savannah Lions",""));
|
||||||
|
cubeCards.add(new CardIdentity("Paladin en-Vec",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wrath of God",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cloudgoat Ranger",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirror Entity",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reveillark",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flickerwisp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ranger of Eos",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth, Knight-Errant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Balance",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steppe Lynx",""));
|
||||||
|
cubeCards.add(new CardIdentity("Journey to Nowhere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Emeria Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani Goldmane",""));
|
||||||
|
cubeCards.add(new CardIdentity("Porcelain Legionnaire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blade Splicer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben",""));
|
||||||
|
cubeCards.add(new CardIdentity("Restoration Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of Glory",""));
|
||||||
|
cubeCards.add(new CardIdentity("Moat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elspeth, Sun's Champion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spear of Heliod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Unexpectedly Absent",""));
|
||||||
|
cubeCards.add(new CardIdentity("Armageddon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faith's Fetters",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stoneforge Mystic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Linvala, Keeper of Silence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Baneslayer Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero of Bladehold",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oblivion Ring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gideon's Lawkeeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani, Caller of the Pride",""));
|
||||||
|
cubeCards.add(new CardIdentity("Angel of Serenity",""));
|
||||||
|
cubeCards.add(new CardIdentity("Archangel of Thune",""));
|
||||||
|
cubeCards.add(new CardIdentity("Loam Lion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gideon Jura",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Drain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frantic Search",""));
|
||||||
|
cubeCards.add(new CardIdentity("Treachery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brainstorm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brain Freeze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vesuvan Shapeshifter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Venser, Shaper Savant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sower of Temptation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wake Thrasher",""));
|
||||||
|
cubeCards.add(new CardIdentity("Consecrated Sphinx",""));
|
||||||
|
cubeCards.add(new CardIdentity("Snapcaster Mage",""));
|
||||||
|
cubeCards.add(new CardIdentity("True-Name Nemesis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Intuition",""));
|
||||||
|
cubeCards.add(new CardIdentity("Forbid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Force Spike",""));
|
||||||
|
cubeCards.add(new CardIdentity("Upheaval",""));
|
||||||
|
cubeCards.add(new CardIdentity("Voidmage Prodigy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Willbender",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gifts Ungiven",""));
|
||||||
|
cubeCards.add(new CardIdentity("Compulsive Research",""));
|
||||||
|
cubeCards.add(new CardIdentity("Riftwing Cloudskate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Glen Elendra Archmage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inkwell Leviathan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tinker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace, the Mind Sculptor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Old Man of the Sea",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mystical Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Impulse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Turnabout",""));
|
||||||
|
cubeCards.add(new CardIdentity("Palinchron",""));
|
||||||
|
cubeCards.add(new CardIdentity("Daze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Meloku the Clouded Mirror",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jushi Apprentice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Remand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Looter il-Kor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aeon Chronicler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mulldrifter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cryptic Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Serendib Efreet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Into the Roil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx of Jwar Isle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace Beleren",""));
|
||||||
|
cubeCards.add(new CardIdentity("Preordain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fact or Fiction",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Leak",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frost Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phantasmal Image",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dungeon Geists",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tamiyo, the Moon Sage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Timetwister",""));
|
||||||
|
cubeCards.add(new CardIdentity("Show and Tell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Aetherling",""));
|
||||||
|
cubeCards.add(new CardIdentity("Memory Lapse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dream Halls",""));
|
||||||
|
cubeCards.add(new CardIdentity("Opposition",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind's Desire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vendilion Clique",""));
|
||||||
|
cubeCards.add(new CardIdentity("Counterspell",""));
|
||||||
|
cubeCards.add(new CardIdentity("Force of Will",""));
|
||||||
|
cubeCards.add(new CardIdentity("Control Magic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jace, Architect of Thought",""));
|
||||||
|
cubeCards.add(new CardIdentity("Time Walk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bribery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancestral Recall",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancestral Vision",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Metamorph",""));
|
||||||
|
cubeCards.add(new CardIdentity("Time Spiral",""));
|
||||||
|
cubeCards.add(new CardIdentity("Miscalculation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Trinket Mage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Recurring Nightmare",""));
|
||||||
|
cubeCards.add(new CardIdentity("Buried Alive",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tendrils of Agony",""));
|
||||||
|
cubeCards.add(new CardIdentity("Unburial Rites",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mesmeric Fiend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Slaughter Pact",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gatekeeper of Malakir",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grave Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Obliterator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Necromancy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Corpse Dance",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yawgmoth's Will",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nightscape Familiar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nezumi Shortfang",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dark Confidant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Graveborn Muse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Liliana Vess",""));
|
||||||
|
cubeCards.add(new CardIdentity("Black Knight",""));
|
||||||
|
cubeCards.add(new CardIdentity("Go for the Throat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sheoldred, Whispering One",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodline Keeper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Animate Dead",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gravecrawler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Griselbrand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Erebos, God of the Dead",""));
|
||||||
|
cubeCards.add(new CardIdentity("Toxic Deluge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampiric Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Living Death",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reanimate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bone Shredder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Braids, Cabal Minion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Entomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Putrid Imp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nezumi Graverobber",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ink-Eyes, Servant of Oni",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Arena",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plague Sliver",""));
|
||||||
|
cubeCards.add(new CardIdentity("Damnation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nekrataal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shriekmaw",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bitterblossom",""));
|
||||||
|
cubeCards.add(new CardIdentity("Demonic Tutor",""));
|
||||||
|
cubeCards.add(new CardIdentity("Necropotence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Disfigure",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vampire Nighthawk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Guul Draz Assassin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Consuming Vapors",""));
|
||||||
|
cubeCards.add(new CardIdentity("Duress",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skinrender",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dismember",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diregraf Ghoul",""));
|
||||||
|
cubeCards.add(new CardIdentity("Liliana of the Veil",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hymn to Tourach",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ultimate Price",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nether Void",""));
|
||||||
|
cubeCards.add(new CardIdentity("The Abyss",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lifebane Zombie",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thoughtseize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero's Downfall",""));
|
||||||
|
cubeCards.add(new CardIdentity("Diabolic Edict",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sarcomancy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oona's Prowler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dark Ritual",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hypnotic Specter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodghast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inquisition of Kozilek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Rager",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodgift Demon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind Twist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Frenzied Goblin",""));
|
||||||
|
cubeCards.add(new CardIdentity("Torch Fiend",""));
|
||||||
|
cubeCards.add(new CardIdentity("Earthquake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Ruinblaster",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra's Phoenix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Price of Progress",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avalanche Riders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Welder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firebolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sulfuric Vortex",""));
|
||||||
|
cubeCards.add(new CardIdentity("Seething Song",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rift Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mogg War Marshal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hellrider",""));
|
||||||
|
cubeCards.add(new CardIdentity("Taurean Mauler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ember Hauler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Koth of the Hammer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Jackal Pup",""));
|
||||||
|
cubeCards.add(new CardIdentity("Incinerate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra, the Firebrand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stormblood Berserker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grim Lavamancer",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonfire of the Damned",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thundermaw Hellkite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Magma Jet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firedrinker Satyr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firestorm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ravenous Baboons",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wildfire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sneak Attack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Reckless Charge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Molten Rain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Char",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tin Street Hooligan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Empty the Warrens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancient Grudge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Greater Gargadon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Keldon Marauders",""));
|
||||||
|
cubeCards.add(new CardIdentity("Magus of the Moon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Smash to Smithereens",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hellspark Elemental",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ball Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Siege-Gang Commander",""));
|
||||||
|
cubeCards.add(new CardIdentity("Burning of Xinye",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Guide",""));
|
||||||
|
cubeCards.add(new CardIdentity("Searing Blaze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kargan Dragonlord",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wheel of Fortune",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pyroclasm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arc Trail",""));
|
||||||
|
cubeCards.add(new CardIdentity("Spikeshot Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Urabrask the Hidden",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flametongue Kavu",""));
|
||||||
|
cubeCards.add(new CardIdentity("Inferno Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kird Ape",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brimstone Volley",""));
|
||||||
|
cubeCards.add(new CardIdentity("Devil's Play",""));
|
||||||
|
cubeCards.add(new CardIdentity("Faithless Looting",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orcish Lumberjack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Zealous Conscripts",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mizzium Mortars",""));
|
||||||
|
cubeCards.add(new CardIdentity("Goblin Vandal",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plated Geopede",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chain Lightning",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chaos Warp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fireblast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chandra, Pyromaster",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hero of Oxid Ridge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nantuko Vigilante",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boon Satyr",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rude Awakening",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thornscape Battlemage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Indrik Stomphowler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ohran Viper",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lotus Cobra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Primeval Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Birds of Paradise",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wall of Blossoms",""));
|
||||||
|
cubeCards.add(new CardIdentity("Restock",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tooth and Nail",""));
|
||||||
|
cubeCards.add(new CardIdentity("Eternal Witness",""));
|
||||||
|
cubeCards.add(new CardIdentity("Primal Command",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stunted Growth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wickerbough Elder",""));
|
||||||
|
cubeCards.add(new CardIdentity("Master of the Wild Hunt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Harmonize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Terastodon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk Wildspeaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Birthing Pod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scavenging Ooze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avacyn's Pilgrim",""));
|
||||||
|
cubeCards.add(new CardIdentity("Strangleroot Geist",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wolfir Silverheart",""));
|
||||||
|
cubeCards.add(new CardIdentity("Eureka",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk, Caller of Beasts",""));
|
||||||
|
cubeCards.add(new CardIdentity("Natural Order",""));
|
||||||
|
cubeCards.add(new CardIdentity("Deranged Hermit",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nostalgic Dreams",""));
|
||||||
|
cubeCards.add(new CardIdentity("Genesis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plow Under",""));
|
||||||
|
cubeCards.add(new CardIdentity("Heartbeat of Spring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Woodfall Primus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Noble Hierarch",""));
|
||||||
|
cubeCards.add(new CardIdentity("Channel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Oracle of Mul Daya",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arbor Elf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Joraga Treespeaker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Awakening Zone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vengevine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fauna Shaman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Genesis Wave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thrun, the Last Troll",""));
|
||||||
|
cubeCards.add(new CardIdentity("Beast Within",""));
|
||||||
|
cubeCards.add(new CardIdentity("Naturalize",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk Relentless",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ulvenwald Tracker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Polukranos, World Eater",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rofellos, Llanowar Emissary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elves of Deep Shadow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thelonite Hermit",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tarmogoyf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wild Nacatl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Avenger of Zendikar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Call of the Herd",""));
|
||||||
|
cubeCards.add(new CardIdentity("Obstinate Baloth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Green Sun's Zenith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Acidic Slime",""));
|
||||||
|
cubeCards.add(new CardIdentity("Garruk, Primal Hunter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Llanowar Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Regrowth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fyndhorn Elves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thragtusk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Elvish Mystic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sylvan Caryatid",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chord of Calling",""));
|
||||||
|
cubeCards.add(new CardIdentity("Survival of the Fittest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sylvan Library",""));
|
||||||
|
cubeCards.add(new CardIdentity("Savannah",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bayou",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scrubland",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blood Crypt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Brushland",""));
|
||||||
|
cubeCards.add(new CardIdentity("Caves of Koilos",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dust Bowl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ghitu Encampment",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Turf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Rot Farm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Hallowed Fountain",""));
|
||||||
|
cubeCards.add(new CardIdentity("Library of Alexandria",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lake of the Dead",""));
|
||||||
|
cubeCards.add(new CardIdentity("Llanowar Wastes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Marsh Flats",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Garrison",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Boilerworks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Basilica",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mishra's Workshop",""));
|
||||||
|
cubeCards.add(new CardIdentity("Treetop Village",""));
|
||||||
|
cubeCards.add(new CardIdentity("Adarkar Wastes",""));
|
||||||
|
cubeCards.add(new CardIdentity("Plateau",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rishadan Port",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scalding Tarn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shivan Reef",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steam Vents",""));
|
||||||
|
cubeCards.add(new CardIdentity("Strip Mine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Taiga",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thawing Glaciers",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tropical Island",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tundra",""));
|
||||||
|
cubeCards.add(new CardIdentity("Underground River",""));
|
||||||
|
cubeCards.add(new CardIdentity("Volcanic Island",""));
|
||||||
|
cubeCards.add(new CardIdentity("Windbrisk Heights",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wooded Foothills",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ancient Tomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Chancery",""));
|
||||||
|
cubeCards.add(new CardIdentity("Badlands",""));
|
||||||
|
cubeCards.add(new CardIdentity("Arid Mesa",""));
|
||||||
|
cubeCards.add(new CardIdentity("Misty Rainforest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Maze of Ith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Aqueduct",""));
|
||||||
|
cubeCards.add(new CardIdentity("Teetering Peaks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Underground Sea",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodstained Mire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Watery Grave",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sacred Foundry",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stomping Ground",""));
|
||||||
|
cubeCards.add(new CardIdentity("Godless Shrine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Breeding Pool",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sulfurous Springs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Yavimaya Coast",""));
|
||||||
|
cubeCards.add(new CardIdentity("Karplusan Forest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Verdant Catacombs",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wasteland",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mishra's Factory",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Sanctuary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Carnarium",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Growth Chamber",""));
|
||||||
|
cubeCards.add(new CardIdentity("Karakas",""));
|
||||||
|
cubeCards.add(new CardIdentity("Temple Garden",""));
|
||||||
|
cubeCards.add(new CardIdentity("Overgrown Tomb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Volrath's Stronghold",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gaea's Cradle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tolarian Academy",""));
|
||||||
|
cubeCards.add(new CardIdentity("Flooded Strand",""));
|
||||||
|
cubeCards.add(new CardIdentity("Polluted Delta",""));
|
||||||
|
cubeCards.add(new CardIdentity("Windswept Heath",""));
|
||||||
|
cubeCards.add(new CardIdentity("Academy Ruins",""));
|
||||||
|
cubeCards.add(new CardIdentity("Battlefield Forge",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ral Zarek",""));
|
||||||
|
cubeCards.add(new CardIdentity("Void",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pernicious Deed",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Helix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Electrolyze",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grand Arbiter Augustin IV",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kitchen Finks",""));
|
||||||
|
cubeCards.add(new CardIdentity("Stillmoon Cavalier",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tidehollow Sculler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nicol Bolas, Planeswalker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx of the Steel Wind",""));
|
||||||
|
cubeCards.add(new CardIdentity("Huntmaster of the Fells",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mirari's Wake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Venser, the Sojourner",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shardless Agent",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Charm",""));
|
||||||
|
cubeCards.add(new CardIdentity("Abrupt Decay",""));
|
||||||
|
cubeCards.add(new CardIdentity("Domri Rade",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mystic Snake",""));
|
||||||
|
cubeCards.add(new CardIdentity("Firemane Angel",""));
|
||||||
|
cubeCards.add(new CardIdentity("Angel of Despair",""));
|
||||||
|
cubeCards.add(new CardIdentity("Trygon Predator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Sky Swallower",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boggart Ram-Gang",""));
|
||||||
|
cubeCards.add(new CardIdentity("Figure of Destiny",""));
|
||||||
|
cubeCards.add(new CardIdentity("Agony Warp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Broodmate Dragon",""));
|
||||||
|
cubeCards.add(new CardIdentity("Knight of the Reliquary",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bloodbraid Elf",""));
|
||||||
|
cubeCards.add(new CardIdentity("Edric, Spymaster of Trest",""));
|
||||||
|
cubeCards.add(new CardIdentity("Geist of Saint Traft",""));
|
||||||
|
cubeCards.add(new CardIdentity("Falkenrath Aristocrat",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Cackler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dreadbore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dreg Mangler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vraska the Unseen",""));
|
||||||
|
cubeCards.add(new CardIdentity("Fleecemane Lion",""));
|
||||||
|
cubeCards.add(new CardIdentity("Daxos of Meletis",""));
|
||||||
|
cubeCards.add(new CardIdentity("Steam Augury",""));
|
||||||
|
cubeCards.add(new CardIdentity("Prophetic Bolt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shadowmage Infiltrator",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ajani Vengeant",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vindicate",""));
|
||||||
|
cubeCards.add(new CardIdentity("Maelstrom Pulse",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tezzeret, Agent of Bolas",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sorin, Lord of Innistrad",""));
|
||||||
|
cubeCards.add(new CardIdentity("Baleful Strix",""));
|
||||||
|
cubeCards.add(new CardIdentity("Xenagos, the Reveler",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sphinx's Revelation",""));
|
||||||
|
cubeCards.add(new CardIdentity("Voice of Resurgence",""));
|
||||||
|
cubeCards.add(new CardIdentity("Null Rod",""));
|
||||||
|
cubeCards.add(new CardIdentity("Cursed Scroll",""));
|
||||||
|
cubeCards.add(new CardIdentity("All Is Dust",""));
|
||||||
|
cubeCards.add(new CardIdentity("Emrakul, the Aeons Torn",""));
|
||||||
|
cubeCards.add(new CardIdentity("Kozilek, Butcher of Truth",""));
|
||||||
|
cubeCards.add(new CardIdentity("Ulamog, the Infinite Gyre",""));
|
||||||
|
cubeCards.add(new CardIdentity("Shrine of Burning Rage",""));
|
||||||
|
cubeCards.add(new CardIdentity("Batterskull",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lion's Eye Diamond",""));
|
||||||
|
cubeCards.add(new CardIdentity("Grim Monolith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Memory Jar",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Diamond",""));
|
||||||
|
cubeCards.add(new CardIdentity("Nevinyrral's Disk",""));
|
||||||
|
cubeCards.add(new CardIdentity("Orzhov Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pristine Talisman",""));
|
||||||
|
cubeCards.add(new CardIdentity("Rakdos Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sol Ring",""));
|
||||||
|
cubeCards.add(new CardIdentity("Tangle Wire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Thran Dynamo",""));
|
||||||
|
cubeCards.add(new CardIdentity("Winter Orb",""));
|
||||||
|
cubeCards.add(new CardIdentity("Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Myr Battlesphere",""));
|
||||||
|
cubeCards.add(new CardIdentity("Molten-Tail Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Phyrexian Revoker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Solemn Simulacrum",""));
|
||||||
|
cubeCards.add(new CardIdentity("Bonesplitter",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Body and Mind",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Feast and Famine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of War and Peace",""));
|
||||||
|
cubeCards.add(new CardIdentity("Chrome Mox",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gilded Lotus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Light and Shadow",""));
|
||||||
|
cubeCards.add(new CardIdentity("Razormane Masticore",""));
|
||||||
|
cubeCards.add(new CardIdentity("Pentad Prism",""));
|
||||||
|
cubeCards.add(new CardIdentity("Coalition Relic",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mind Stone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Precursor Golem",""));
|
||||||
|
cubeCards.add(new CardIdentity("Wurmcoil Engine",""));
|
||||||
|
cubeCards.add(new CardIdentity("Azorius Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Simic Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Basalt Monolith",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Sapphire",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Pearl",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Ruby",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Emerald",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mox Jet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Black Lotus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Boros Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Blightsteel Colossus",""));
|
||||||
|
cubeCards.add(new CardIdentity("Dimir Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Epochrasite",""));
|
||||||
|
cubeCards.add(new CardIdentity("Etched Oracle",""));
|
||||||
|
cubeCards.add(new CardIdentity("Everflowing Chalice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Gruul Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Izzet Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Golgari Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lodestone Golem",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lotus Bloom",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Crypt",""));
|
||||||
|
cubeCards.add(new CardIdentity("Mana Vault",""));
|
||||||
|
cubeCards.add(new CardIdentity("Selesnya Signet",""));
|
||||||
|
cubeCards.add(new CardIdentity("Metalworker",""));
|
||||||
|
cubeCards.add(new CardIdentity("Scroll Rack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Worn Powerstone",""));
|
||||||
|
cubeCards.add(new CardIdentity("Smokestack",""));
|
||||||
|
cubeCards.add(new CardIdentity("Lightning Greaves",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sundering Titan",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sword of Fire and Ice",""));
|
||||||
|
cubeCards.add(new CardIdentity("Skullclamp",""));
|
||||||
|
cubeCards.add(new CardIdentity("Vedalken Shackles",""));
|
||||||
|
cubeCards.add(new CardIdentity("Crucible of Worlds",""));
|
||||||
|
cubeCards.add(new CardIdentity("Sensei's Divining Top",""));
|
||||||
|
cubeCards.add(new CardIdentity("Umezawa's Jitte",""));
|
||||||
|
cubeCards.add(new CardIdentity("Manriki-Gusari",""));
|
||||||
|
cubeCards.add(new CardIdentity("Karn Liberated",""));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class SealedEliminationCubeTournamentType extends TournamentType<SealedEliminationCubeTournamentType> {
|
||||||
|
|
||||||
|
public SealedEliminationCubeTournamentType() {
|
||||||
|
this.name = "Sealed Elimination (Cube)";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 2;
|
||||||
|
this.numBoosters = 6;
|
||||||
|
this.draft = false;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = true;
|
||||||
|
this.elimination = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -43,6 +43,8 @@ public class SealedEliminationTournamentType extends TournamentType<SealedElimin
|
||||||
this.numBoosters = 6;
|
this.numBoosters = 6;
|
||||||
this.draft = false;
|
this.draft = false;
|
||||||
this.limited = true;
|
this.limited = true;
|
||||||
|
this.cubeBooster = false;
|
||||||
|
this.elimination = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author BetaSteward_at_googlemail.com
|
||||||
|
*/
|
||||||
|
public class SealedSwissCubeTournamentType extends TournamentType<SealedSwissCubeTournamentType> {
|
||||||
|
|
||||||
|
public SealedSwissCubeTournamentType() {
|
||||||
|
this.name = "Sealed Swiss (Cube)";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 2;
|
||||||
|
this.numBoosters = 6;
|
||||||
|
this.draft = false;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = true;
|
||||||
|
this.elimination = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentOptions;
|
||||||
|
import mage.game.tournament.TournamentSwiss;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class SealedSwissTournament extends TournamentSwiss {
|
||||||
|
|
||||||
|
protected enum TournamentStep {
|
||||||
|
START, OPEN_BOOSTERS, CONSTRUCT, COMPETE, WINNERS
|
||||||
|
}
|
||||||
|
|
||||||
|
protected TournamentStep currentStep;
|
||||||
|
|
||||||
|
public SealedSwissTournament(TournamentOptions options) {
|
||||||
|
super(options);
|
||||||
|
currentStep = TournamentStep.START;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nextStep() {
|
||||||
|
switch (currentStep) {
|
||||||
|
case START:
|
||||||
|
currentStep = TournamentStep.OPEN_BOOSTERS;
|
||||||
|
openBoosters();
|
||||||
|
break;
|
||||||
|
case OPEN_BOOSTERS:
|
||||||
|
currentStep = TournamentStep.CONSTRUCT;
|
||||||
|
construct();
|
||||||
|
break;
|
||||||
|
case CONSTRUCT:
|
||||||
|
currentStep = TournamentStep.COMPETE;
|
||||||
|
runTournament();
|
||||||
|
break;
|
||||||
|
case COMPETE:
|
||||||
|
currentStep = TournamentStep.WINNERS;
|
||||||
|
winners();
|
||||||
|
end();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mage.tournament;
|
||||||
|
|
||||||
|
import mage.game.tournament.TournamentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author BetaSteward_at_googlemail.com
|
||||||
|
*/
|
||||||
|
public class SealedSwissTournamentType extends TournamentType<SealedSwissTournamentType> {
|
||||||
|
|
||||||
|
public SealedSwissTournamentType() {
|
||||||
|
this.name = "Sealed Swiss";
|
||||||
|
this.maxPlayers = 16;
|
||||||
|
this.minPlayers = 2;
|
||||||
|
this.numBoosters = 6;
|
||||||
|
this.draft = false;
|
||||||
|
this.limited = true;
|
||||||
|
this.cubeBooster = false;
|
||||||
|
this.elimination = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,7 +9,7 @@
|
||||||
minUserNameLength="3"
|
minUserNameLength="3"
|
||||||
maxUserNameLength="14"
|
maxUserNameLength="14"
|
||||||
userNamePattern="[^a-z0-9_]"
|
userNamePattern="[^a-z0-9_]"
|
||||||
maxAiOpponents="2"
|
maxAiOpponents="3"
|
||||||
/>
|
/>
|
||||||
<playerTypes>
|
<playerTypes>
|
||||||
<playerType name="Human" jar="mage-player-human.jar" className="mage.player.human.HumanPlayer"/>
|
<playerType name="Human" jar="mage-player-human.jar" className="mage.player.human.HumanPlayer"/>
|
||||||
|
@ -25,9 +25,20 @@
|
||||||
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
||||||
</gameTypes>
|
</gameTypes>
|
||||||
<tournamentTypes>
|
<tournamentTypes>
|
||||||
<tournamentType name="Elimination Booster Draft" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
||||||
|
<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="Sealed Elimination" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
|
<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>
|
||||||
|
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
||||||
|
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor720"/>
|
||||||
|
<draftCube name="MTGO Holiday Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.HolidayCube2013"/>
|
||||||
|
</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"/>
|
||||||
|
|
|
@ -14,9 +14,20 @@
|
||||||
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall-${project.version}.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall-${project.version}.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
|
||||||
</gameTypes>
|
</gameTypes>
|
||||||
<tournamentTypes>
|
<tournamentTypes>
|
||||||
<tournamentType name="Elimination Booster Draft" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
|
||||||
|
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-boosterdraft-${project.version}.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
|
||||||
|
<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="Sealed Elimination" jar="mage-tournament-sealed-${project.version}.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
|
<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>
|
||||||
|
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
|
||||||
|
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeTutor720"/>
|
||||||
|
<draftCube name="MTGO Holiday Cube 2013" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.HolydayCube2013"/>
|
||||||
|
</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" className="mage.deck.Standard"/>
|
||||||
<deckType name="Constructed - Extended" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Extended"/>
|
<deckType name="Constructed - Extended" jar="mage-deck-constructed-${project.version}.jar" className="mage.deck.Extended"/>
|
||||||
|
|
|
@ -48,6 +48,7 @@ import mage.interfaces.MageServer;
|
||||||
import mage.interfaces.ServerState;
|
import mage.interfaces.ServerState;
|
||||||
import mage.interfaces.callback.ClientCallback;
|
import mage.interfaces.callback.ClientCallback;
|
||||||
import mage.remote.MageVersionException;
|
import mage.remote.MageVersionException;
|
||||||
|
import mage.server.draft.CubeFactory;
|
||||||
import mage.server.draft.DraftManager;
|
import mage.server.draft.DraftManager;
|
||||||
import mage.server.game.DeckValidatorFactory;
|
import mage.server.game.DeckValidatorFactory;
|
||||||
import mage.server.game.GameFactory;
|
import mage.server.game.GameFactory;
|
||||||
|
@ -820,6 +821,7 @@ public class MageServerImpl implements MageServer {
|
||||||
TournamentFactory.getInstance().getTournamentTypes(),
|
TournamentFactory.getInstance().getTournamentTypes(),
|
||||||
PlayerFactory.getInstance().getPlayerTypes().toArray(new String[PlayerFactory.getInstance().getPlayerTypes().size()]),
|
PlayerFactory.getInstance().getPlayerTypes().toArray(new String[PlayerFactory.getInstance().getPlayerTypes().size()]),
|
||||||
DeckValidatorFactory.getInstance().getDeckTypes().toArray(new String[DeckValidatorFactory.getInstance().getDeckTypes().size()]),
|
DeckValidatorFactory.getInstance().getDeckTypes().toArray(new String[DeckValidatorFactory.getInstance().getDeckTypes().size()]),
|
||||||
|
CubeFactory.getInstance().getDraftCubes().toArray(new String[CubeFactory.getInstance().getDraftCubes().size()]),
|
||||||
testMode,
|
testMode,
|
||||||
Main.getVersion());
|
Main.getVersion());
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ import mage.game.match.MatchType;
|
||||||
import mage.game.tournament.TournamentType;
|
import mage.game.tournament.TournamentType;
|
||||||
import mage.interfaces.MageServer;
|
import mage.interfaces.MageServer;
|
||||||
import mage.remote.Connection;
|
import mage.remote.Connection;
|
||||||
|
import mage.server.draft.CubeFactory;
|
||||||
import mage.server.game.DeckValidatorFactory;
|
import mage.server.game.DeckValidatorFactory;
|
||||||
import mage.server.game.GameFactory;
|
import mage.server.game.GameFactory;
|
||||||
import mage.server.game.PlayerFactory;
|
import mage.server.game.PlayerFactory;
|
||||||
|
@ -104,6 +105,9 @@ public class Main {
|
||||||
for (Plugin plugin: config.getPlayerTypes()) {
|
for (Plugin plugin: config.getPlayerTypes()) {
|
||||||
PlayerFactory.getInstance().addPlayerType(plugin.getName(), loadPlugin(plugin));
|
PlayerFactory.getInstance().addPlayerType(plugin.getName(), loadPlugin(plugin));
|
||||||
}
|
}
|
||||||
|
for (Plugin plugin: config.getDraftCubes()) {
|
||||||
|
CubeFactory.getInstance().addDraftCube(plugin.getName(), loadPlugin(plugin));
|
||||||
|
}
|
||||||
for (Plugin plugin: config.getDeckTypes()) {
|
for (Plugin plugin: config.getDeckTypes()) {
|
||||||
DeckValidatorFactory.getInstance().addDeckType(plugin.getName(), loadPlugin(plugin));
|
DeckValidatorFactory.getInstance().addDeckType(plugin.getName(), loadPlugin(plugin));
|
||||||
}
|
}
|
||||||
|
@ -260,7 +264,7 @@ public class Main {
|
||||||
logger.debug("Loading plugin: " + plugin.getClassName());
|
logger.debug("Loading plugin: " + plugin.getClassName());
|
||||||
return Class.forName(plugin.getClassName(), true, classLoader);
|
return Class.forName(plugin.getClassName(), true, classLoader);
|
||||||
} catch (ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
logger.warn("Plugin not Found:" + plugin.getJar() + " - check plugin folder");
|
logger.warn(new StringBuilder("Plugin not Found: ").append(plugin.getClassName()).append(" - ").append(plugin.getJar()).append(" - check plugin folder"));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.fatal("Error loading plugin " + plugin.getJar(), ex);
|
logger.fatal("Error loading plugin " + plugin.getJar(), ex);
|
||||||
}
|
}
|
||||||
|
@ -286,7 +290,7 @@ public class Main {
|
||||||
logger.debug("Loading tournament type: " + plugin.getClassName());
|
logger.debug("Loading tournament type: " + plugin.getClassName());
|
||||||
return (TournamentType) Class.forName(plugin.getTypeName(), true, classLoader).newInstance();
|
return (TournamentType) Class.forName(plugin.getTypeName(), true, classLoader).newInstance();
|
||||||
} catch (ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
logger.warn("Tournament type not found:" + plugin.getJar() + " - check plugin folder");
|
logger.warn("Tournament type not found:" + plugin.getName() + " / "+ plugin.getJar() + " - check plugin folder");
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.fatal("Error loading game type " + plugin.getJar(), ex);
|
logger.fatal("Error loading game type " + plugin.getJar(), ex);
|
||||||
}
|
}
|
||||||
|
|
80
Mage.Server/src/main/java/mage/server/draft/CubeFactory.java
Normal file
80
Mage.Server/src/main/java/mage/server/draft/CubeFactory.java
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.server.draft;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class CubeFactory {
|
||||||
|
|
||||||
|
private static final CubeFactory INSTANCE = new CubeFactory();
|
||||||
|
private static final Logger logger = Logger.getLogger(CubeFactory.class);
|
||||||
|
|
||||||
|
private Map<String, Class> draftCubes = new LinkedHashMap<String, Class>();
|
||||||
|
|
||||||
|
public static CubeFactory getInstance() {
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CubeFactory() {}
|
||||||
|
|
||||||
|
public DraftCube createDraftCube(String draftCubeName) {
|
||||||
|
|
||||||
|
DraftCube draftCube;
|
||||||
|
Constructor<?> con;
|
||||||
|
try {
|
||||||
|
con = draftCubes.get(draftCubeName).getConstructor(new Class[]{});
|
||||||
|
draftCube = (DraftCube)con.newInstance(new Object[] {});
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.fatal("CubeFactory error", ex);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
logger.debug("Draft cube created: " + draftCube.getName());
|
||||||
|
|
||||||
|
return draftCube;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getDraftCubes() {
|
||||||
|
return draftCubes.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addDraftCube(String name, Class draftCube) {
|
||||||
|
if (draftCube != null) {
|
||||||
|
this.draftCubes.put(name, draftCube);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -73,8 +73,9 @@ public class DeckValidatorFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDeckType(String name, Class deckType) {
|
public void addDeckType(String name, Class deckType) {
|
||||||
if (deckType != null)
|
if (deckType != null) {
|
||||||
this.deckTypes.put(name, deckType);
|
this.deckTypes.put(name, deckType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import mage.cards.Sets;
|
||||||
import mage.game.tournament.Tournament;
|
import mage.game.tournament.Tournament;
|
||||||
import mage.game.tournament.TournamentOptions;
|
import mage.game.tournament.TournamentOptions;
|
||||||
import mage.game.tournament.TournamentType;
|
import mage.game.tournament.TournamentType;
|
||||||
|
import mage.server.draft.CubeFactory;
|
||||||
import mage.view.TournamentTypeView;
|
import mage.view.TournamentTypeView;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
@ -74,11 +75,21 @@ public class TournamentFactory {
|
||||||
int count = setInfo.containsKey(setCode) ? setInfo.get(setCode) : 0;
|
int count = setInfo.containsKey(setCode) ? setInfo.get(setCode) : 0;
|
||||||
setInfo.put(setCode, count + 1);
|
setInfo.put(setCode, count + 1);
|
||||||
}
|
}
|
||||||
StringBuilder sb = new StringBuilder();
|
if (tournament.getTournamentType().isLimited()) {
|
||||||
for (Map.Entry<String,Integer> entry:setInfo.entrySet()) {
|
tournament.getOptions().getLimitedOptions().setNumberBoosters(tournament.getTournamentType().getNumBoosters());
|
||||||
sb.append(entry.getValue().toString()).append("x").append(entry.getKey()).append(" ");
|
if (tournament.getTournamentType().isCubeBooster()) {
|
||||||
|
tournament.getOptions().getLimitedOptions().setDraftCube(CubeFactory.getInstance().createDraftCube(tournament.getOptions().getLimitedOptions().getDraftCubeName()));
|
||||||
|
tournament.setBoosterInfo(tournament.getOptions().getLimitedOptions().getDraftCubeName());
|
||||||
|
} else {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (Map.Entry<String,Integer> entry:setInfo.entrySet()) {
|
||||||
|
sb.append(entry.getValue().toString()).append("x").append(entry.getKey()).append(" ");
|
||||||
|
}
|
||||||
|
tournament.setBoosterInfo(sb.toString());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
tournament.setSetsFormatedShort(sb.toString());
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.fatal("TournamentFactory error ", ex);
|
logger.fatal("TournamentFactory error ", ex);
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -111,6 +111,10 @@ public class ConfigSettings {
|
||||||
return config.getTournamentTypes().getTournamentType();
|
return config.getTournamentTypes().getTournamentType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Plugin> getDraftCubes() {
|
||||||
|
return config.getDraftCubes().getDraftCube();
|
||||||
|
}
|
||||||
|
|
||||||
public List<Plugin> getDeckTypes() {
|
public List<Plugin> getDeckTypes() {
|
||||||
return config.getDeckTypes().getDeckType();
|
return config.getDeckTypes().getDeckType();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<xs:element ref="playerTypes"/>
|
<xs:element ref="playerTypes"/>
|
||||||
<xs:element ref="gameTypes"/>
|
<xs:element ref="gameTypes"/>
|
||||||
<xs:element ref="tournamentTypes"/>
|
<xs:element ref="tournamentTypes"/>
|
||||||
|
<xs:element ref="draftCubes"/>
|
||||||
<xs:element ref="deckTypes"/>
|
<xs:element ref="deckTypes"/>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
@ -66,6 +67,14 @@
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|
||||||
|
<xs:element name="draftCubes">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="draftCube" type="plugin" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
|
||||||
<xs:element name="deckTypes">
|
<xs:element name="deckTypes">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class BoosterDraft extends DraftImpl<BoosterDraft> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
while (boosterNum < sets.size()) {
|
while (boosterNum < numberBoosters) {
|
||||||
openBooster();
|
openBooster();
|
||||||
while (!isAbort() && pickCards()) {
|
while (!isAbort() && pickCards()) {
|
||||||
if (boosterNum % 2 == 1) {
|
if (boosterNum % 2 == 1) {
|
||||||
|
|
|
@ -49,6 +49,8 @@ public interface Draft extends MageItem, Serializable {
|
||||||
Collection<DraftPlayer> getPlayers();
|
Collection<DraftPlayer> getPlayers();
|
||||||
boolean replacePlayer(Player oldPlayer, Player newPlayer);
|
boolean replacePlayer(Player oldPlayer, Player newPlayer);
|
||||||
DraftPlayer getPlayer(UUID playerId);
|
DraftPlayer getPlayer(UUID playerId);
|
||||||
|
int getNumberBoosters();
|
||||||
|
DraftCube getDraftCube();
|
||||||
List<ExpansionSet> getSets();
|
List<ExpansionSet> getSets();
|
||||||
int getBoosterNum();
|
int getBoosterNum();
|
||||||
int getCardNum();
|
int getCardNum();
|
||||||
|
|
141
Mage/src/mage/game/draft/DraftCube.java
Normal file
141
Mage/src/mage/game/draft/DraftCube.java
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.game.draft;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import mage.cards.Card;
|
||||||
|
import mage.cards.repository.CardCriteria;
|
||||||
|
import mage.cards.repository.CardInfo;
|
||||||
|
import mage.cards.repository.CardRepository;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public abstract class DraftCube {
|
||||||
|
|
||||||
|
public class CardIdentity {
|
||||||
|
private String name;
|
||||||
|
private String extension;
|
||||||
|
|
||||||
|
public CardIdentity(String name, String extension) {
|
||||||
|
this.name = name;
|
||||||
|
this.extension = extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getExtension() {
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExtension(String extension) {
|
||||||
|
this.extension = extension;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(DraftCube.class);
|
||||||
|
|
||||||
|
private static Random rnd = new Random();
|
||||||
|
private String name;
|
||||||
|
private int boosterSize = 15;
|
||||||
|
|
||||||
|
protected List<CardIdentity> cubeCards = new ArrayList<CardIdentity>();
|
||||||
|
protected List<CardIdentity> leftCubeCards = new ArrayList<CardIdentity>();
|
||||||
|
|
||||||
|
public DraftCube(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<CardIdentity> getCubeCards() {
|
||||||
|
return cubeCards;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Card> createBooster() {
|
||||||
|
List<Card> booster = new ArrayList<Card>();
|
||||||
|
if (leftCubeCards.isEmpty()) {
|
||||||
|
leftCubeCards.addAll(cubeCards);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < boosterSize; i++) {
|
||||||
|
boolean done = false;
|
||||||
|
int notValid = 0;
|
||||||
|
while (!done) {
|
||||||
|
int index = rnd.nextInt(leftCubeCards.size());
|
||||||
|
CardIdentity cardId = leftCubeCards.get(index);
|
||||||
|
leftCubeCards.remove(index);
|
||||||
|
if (!cardId.getName().isEmpty()) {
|
||||||
|
CardInfo cardInfo = null;
|
||||||
|
if (!cardId.getExtension().isEmpty()) {
|
||||||
|
CardCriteria criteria = new CardCriteria().name(cardId.getName()).setCodes(cardId.extension);
|
||||||
|
List<CardInfo> cardList = CardRepository.instance.findCards(criteria);
|
||||||
|
if (cardList != null && cardList.size() > 0) {
|
||||||
|
cardInfo = cardList.get(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cardInfo = CardRepository.instance.findCard(cardId.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cardInfo != null) {
|
||||||
|
booster.add(cardInfo.getCard());
|
||||||
|
done = true;
|
||||||
|
} else {
|
||||||
|
logger.error(new StringBuilder(this.getName()).append(" - Card not found: ").append(cardId.getName()).append(":").append(cardId.extension));
|
||||||
|
notValid++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.error(new StringBuilder(this.getName()).append(" - Empty card name: ").append(cardId.getName()).append(":").append(cardId.extension));
|
||||||
|
notValid++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (leftCubeCards.isEmpty()) {
|
||||||
|
leftCubeCards.addAll(cubeCards);
|
||||||
|
}
|
||||||
|
if (notValid > cubeCards.size()) {
|
||||||
|
logger.error(new StringBuilder(this.getName()).append(" - Booster could not be created, no valid cards found "));
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return booster;
|
||||||
|
}
|
||||||
|
}
|
|
@ -54,6 +54,8 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
|
||||||
protected final UUID id;
|
protected final UUID id;
|
||||||
protected Map<UUID, DraftPlayer> players = new HashMap<UUID, DraftPlayer>();
|
protected Map<UUID, DraftPlayer> players = new HashMap<UUID, DraftPlayer>();
|
||||||
protected PlayerList table = new PlayerList();
|
protected PlayerList table = new PlayerList();
|
||||||
|
protected int numberBoosters;
|
||||||
|
protected DraftCube draftCube;
|
||||||
protected List<ExpansionSet> sets;
|
protected List<ExpansionSet> sets;
|
||||||
protected List<String> setCodes;
|
protected List<String> setCodes;
|
||||||
protected int boosterNum = 0;
|
protected int boosterNum = 0;
|
||||||
|
@ -69,8 +71,10 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
|
||||||
public DraftImpl(DraftOptions options, List<ExpansionSet> sets) {
|
public DraftImpl(DraftOptions options, List<ExpansionSet> sets) {
|
||||||
id = UUID.randomUUID();
|
id = UUID.randomUUID();
|
||||||
this.setCodes = options.getSetCodes();
|
this.setCodes = options.getSetCodes();
|
||||||
|
this.draftCube = options.getDraftCube();
|
||||||
this.timing = options.getTiming();
|
this.timing = options.getTiming();
|
||||||
this.sets = sets;
|
this.sets = sets;
|
||||||
|
this.numberBoosters = options.getNumberBoosters();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -134,6 +138,22 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
|
||||||
return players.get(playerId);
|
return players.get(playerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DraftCube getDraftCube() {
|
||||||
|
return draftCube;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of boosters that each player gets in this draft
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int getNumberBoosters() {
|
||||||
|
return numberBoosters;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ExpansionSet> getSets() {
|
public List<ExpansionSet> getSets() {
|
||||||
return sets;
|
return sets;
|
||||||
|
@ -207,9 +227,13 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
|
||||||
|
|
||||||
|
|
||||||
protected void openBooster() {
|
protected void openBooster() {
|
||||||
if (boosterNum < sets.size()) {
|
if (boosterNum < numberBoosters) {
|
||||||
for (DraftPlayer player: players.values()) {
|
for (DraftPlayer player: players.values()) {
|
||||||
player.setBooster(sets.get(boosterNum).createBooster());
|
if (draftCube != null) {
|
||||||
|
player.setBooster(draftCube.createBooster());
|
||||||
|
} else {
|
||||||
|
player.setBooster(sets.get(boosterNum).createBooster());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boosterNum++;
|
boosterNum++;
|
||||||
|
|
|
@ -31,6 +31,7 @@ package mage.game.tournament;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -40,6 +41,9 @@ public class LimitedOptions implements Serializable {
|
||||||
|
|
||||||
protected List<String> sets = new ArrayList<String>();
|
protected List<String> sets = new ArrayList<String>();
|
||||||
protected int constructionTime;
|
protected int constructionTime;
|
||||||
|
protected String draftCubeName;
|
||||||
|
protected DraftCube draftCube;
|
||||||
|
protected int numberBoosters;
|
||||||
|
|
||||||
public List<String> getSetCodes() {
|
public List<String> getSetCodes() {
|
||||||
return sets;
|
return sets;
|
||||||
|
@ -53,4 +57,28 @@ public class LimitedOptions implements Serializable {
|
||||||
this.constructionTime = constructionTime;
|
this.constructionTime = constructionTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDraftCubeName() {
|
||||||
|
return draftCubeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDraftCubeName(String draftCubeName) {
|
||||||
|
this.draftCubeName = draftCubeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DraftCube getDraftCube() {
|
||||||
|
return draftCube;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDraftCube(DraftCube draftCube) {
|
||||||
|
this.draftCube = draftCube;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumberBoosters() {
|
||||||
|
return numberBoosters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumberBoosters(int numberBoosters) {
|
||||||
|
this.numberBoosters = numberBoosters;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ public class Round {
|
||||||
|
|
||||||
private int roundNum;
|
private int roundNum;
|
||||||
private List<TournamentPairing> pairs = new ArrayList<TournamentPairing>();
|
private List<TournamentPairing> pairs = new ArrayList<TournamentPairing>();
|
||||||
|
private List<TournamentPlayer> playerByes = new ArrayList<TournamentPlayer>();
|
||||||
|
|
||||||
public Round(int roundNum) {
|
public Round(int roundNum) {
|
||||||
this.roundNum = roundNum;
|
this.roundNum = roundNum;
|
||||||
|
@ -74,4 +75,9 @@ public class Round {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<TournamentPlayer> getPlayerByes() {
|
||||||
|
return playerByes;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,12 +53,12 @@ public interface Tournament {
|
||||||
Collection<Round> getRounds();
|
Collection<Round> getRounds();
|
||||||
List<ExpansionSet> getSets();
|
List<ExpansionSet> getSets();
|
||||||
|
|
||||||
void setSetsFormatedShort(String setInfo);
|
void setBoosterInfo(String setInfo);
|
||||||
/**
|
/**
|
||||||
* Gives back a String that shows the included sets (e.g. "3xRTR" or "1xDGM 1xGTC 1xRTR")
|
* Gives back a String that shows the included sets (e.g. "3xRTR" or "1xDGM 1xGTC 1xRTR") or cube name
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
String getSetsFormatedShort();
|
String getBoosterInfo();
|
||||||
void submitDeck(UUID playerId, Deck deck);
|
void submitDeck(UUID playerId, Deck deck);
|
||||||
void updateDeck(UUID playerId, Deck deck);
|
void updateDeck(UUID playerId, Deck deck);
|
||||||
void autoSubmit(UUID playerId, Deck deck);
|
void autoSubmit(UUID playerId, Deck deck);
|
||||||
|
@ -80,4 +80,6 @@ public interface Tournament {
|
||||||
// tournament type
|
// tournament type
|
||||||
TournamentType getTournamentType();
|
TournamentType getTournamentType();
|
||||||
void setTournamentType(TournamentType tournamentType);
|
void setTournamentType(TournamentType tournamentType);
|
||||||
|
|
||||||
|
int getNumberRounds();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.cards.ExpansionSet;
|
import mage.cards.ExpansionSet;
|
||||||
import mage.cards.decks.Deck;
|
import mage.cards.decks.Deck;
|
||||||
|
import mage.constants.TournamentPlayerState;
|
||||||
|
import mage.game.draft.DraftCube;
|
||||||
import mage.game.events.*;
|
import mage.game.events.*;
|
||||||
import mage.game.events.TableEvent.EventType;
|
import mage.game.events.TableEvent.EventType;
|
||||||
import mage.game.match.Match;
|
import mage.game.match.Match;
|
||||||
|
@ -104,6 +106,11 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
return players.values();
|
return players.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getNumberRounds() {
|
||||||
|
return options.getNumberRounds();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<Round> getRounds() {
|
public Collection<Round> getRounds() {
|
||||||
return rounds;
|
return rounds;
|
||||||
|
@ -115,12 +122,12 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSetsFormatedShort(String setsInfoShort) {
|
public void setBoosterInfo(String setsInfoShort) {
|
||||||
this.setsInfoShort = setsInfoShort;
|
this.setsInfoShort = setsInfoShort;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSetsFormatedShort() {
|
public String getBoosterInfo() {
|
||||||
return setsInfoShort;
|
return setsInfoShort;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,6 +176,13 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
roundPlayers.remove(i);
|
roundPlayers.remove(i);
|
||||||
round.addPairing(new TournamentPairing(player1, player2));
|
round.addPairing(new TournamentPairing(player1, player2));
|
||||||
}
|
}
|
||||||
|
if (roundPlayers.size() > 0) {
|
||||||
|
// player free round - add to bye players of this round
|
||||||
|
TournamentPlayer player1 = roundPlayers.get(0);
|
||||||
|
round.getPlayerByes().add(player1);
|
||||||
|
player1.setState(TournamentPlayerState.WAITING);
|
||||||
|
player1.setStateInfo("Round Bye");
|
||||||
|
}
|
||||||
return round;
|
return round;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,6 +217,7 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
for (TournamentPlayer player: players.values()) {
|
for (TournamentPlayer player: players.values()) {
|
||||||
player.setResults("");
|
player.setResults("");
|
||||||
player.setPoints(0);
|
player.setPoints(0);
|
||||||
|
player.setStateInfo("");
|
||||||
}
|
}
|
||||||
for (Round round: rounds) {
|
for (Round round: rounds) {
|
||||||
for (TournamentPairing pair: round.getPairs()) {
|
for (TournamentPairing pair: round.getPairs()) {
|
||||||
|
@ -232,6 +247,14 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
players.get(player2Id).setPoints(points + 1);
|
players.get(player2Id).setPoints(points + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (TournamentPlayer tournamentPlayer : round.getPlayerByes()) {
|
||||||
|
UUID player1Id = tournamentPlayer.getPlayer().getId();
|
||||||
|
StringBuilder sb1 = new StringBuilder(players.get(player1Id).getResults());
|
||||||
|
sb1.append("(Round Bye) ");
|
||||||
|
players.get(player1Id).setResults(sb1.toString());
|
||||||
|
int points = players.get(player1Id).getPoints();
|
||||||
|
players.get(player1Id).setPoints(points + 3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -296,10 +319,20 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
protected void openBoosters() {
|
protected void openBoosters() {
|
||||||
for (TournamentPlayer player: this.players.values()) {
|
for (TournamentPlayer player: this.players.values()) {
|
||||||
player.setDeck(new Deck());
|
player.setDeck(new Deck());
|
||||||
for (ExpansionSet set: sets) {
|
if (options.getLimitedOptions().getDraftCube() != null) {
|
||||||
List<Card> booster = set.createBooster();
|
DraftCube cube = options.getLimitedOptions().getDraftCube();
|
||||||
for (Card card: booster) {
|
for (int i = 0; i < options.getLimitedOptions().getNumberBoosters(); i++) {
|
||||||
player.getDeck().getSideboard().add(card);
|
List<Card> booster = cube.createBooster();
|
||||||
|
for (Card card: booster) {
|
||||||
|
player.getDeck().getSideboard().add(card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (ExpansionSet set: sets) {
|
||||||
|
List<Card> booster = set.createBooster();
|
||||||
|
for (Card card: booster) {
|
||||||
|
player.getDeck().getSideboard().add(card);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -343,4 +376,14 @@ public abstract class TournamentImpl implements Tournament {
|
||||||
this.tournamentType = tournamentType;
|
this.tournamentType = tournamentType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void winners() {
|
||||||
|
// TODO: Generate StateInfo for Swiss pairing (1st, 2nd, ...)
|
||||||
|
for(TournamentPlayer winner: this.getActivePlayers()) {
|
||||||
|
winner.setState(TournamentPlayerState.FINISHED);
|
||||||
|
if (options.getNumberRounds() == 0) { // if no swiss, last active is the winner
|
||||||
|
winner.setStateInfo("Winner");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ public class TournamentOptions implements Serializable {
|
||||||
protected MatchOptions matchOptions = new MatchOptions("", "Two Player Duel");
|
protected MatchOptions matchOptions = new MatchOptions("", "Two Player Duel");
|
||||||
protected LimitedOptions limitedOptions;
|
protected LimitedOptions limitedOptions;
|
||||||
protected boolean watchingAllowed = true;
|
protected boolean watchingAllowed = true;
|
||||||
|
protected int numberRounds;
|
||||||
|
|
||||||
public TournamentOptions(String name) {
|
public TournamentOptions(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -86,4 +87,12 @@ public class TournamentOptions implements Serializable {
|
||||||
this.watchingAllowed = watchingAllowed;
|
this.watchingAllowed = watchingAllowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getNumberRounds() {
|
||||||
|
return numberRounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumberRounds(int numberRounds) {
|
||||||
|
this.numberRounds = numberRounds;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ package mage.game.tournament;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.constants.TournamentPlayerState;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -66,11 +65,6 @@ public abstract class TournamentSingleElimination extends TournamentImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void winners() {
|
|
||||||
for(TournamentPlayer winner: this.getActivePlayers()) {
|
|
||||||
winner.setState(TournamentPlayerState.FINISHED);
|
|
||||||
winner.setStateInfo("Winner");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,13 @@
|
||||||
*/
|
*/
|
||||||
package mage.game.tournament;
|
package mage.game.tournament;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.constants.TournamentPlayerState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author BetaSteward_at_googlemail.com
|
* @author BetaSteward_at_googlemail.com
|
||||||
|
@ -39,7 +46,86 @@ public abstract class TournamentSwiss extends TournamentImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void runTournament() {
|
protected void runTournament() {
|
||||||
//TODO: implement this
|
for (Map.Entry<UUID, TournamentPlayer> entry: players.entrySet()) {
|
||||||
|
if (entry.getValue().getPlayer().autoLoseGame()) {
|
||||||
|
entry.getValue().setEliminated();
|
||||||
|
entry.getValue().setResults("Auto Eliminated");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (this.getActivePlayers().size() > 1 && this.getNumberRounds() > this.getRounds().size()) {
|
||||||
|
// Swiss pairing
|
||||||
|
Round round = createRoundSwiss();
|
||||||
|
playRound(round);
|
||||||
|
}
|
||||||
|
nextStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Round createRoundSwiss() {
|
||||||
|
Round round = new Round(rounds.size() + 1);
|
||||||
|
rounds.add(round);
|
||||||
|
List<TournamentPlayer> roundPlayers = getActivePlayers();
|
||||||
|
// sort players by tournament points
|
||||||
|
Collections.sort(roundPlayers, new Comparator<TournamentPlayer>() {
|
||||||
|
@Override public int compare(TournamentPlayer p1, TournamentPlayer p2) {
|
||||||
|
return p2.getPoints() - p1.getPoints();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
// create pairings
|
||||||
|
while (roundPlayers.size() > 0) {
|
||||||
|
TournamentPlayer player1 = roundPlayers.get(0);
|
||||||
|
roundPlayers.remove(0);
|
||||||
|
TournamentPlayer playerForPossibleSecondPairing = null;
|
||||||
|
for (TournamentPlayer player2: roundPlayers) {
|
||||||
|
if (alreadyPaired(player1, player2)) {
|
||||||
|
// if laready paired but equal ponts -> remember if second pairing is needed
|
||||||
|
if (playerForPossibleSecondPairing == null) {
|
||||||
|
playerForPossibleSecondPairing = player2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (player2.getPoints() < player1.getPoints() && playerForPossibleSecondPairing != null) {
|
||||||
|
// pair again with a player
|
||||||
|
round.addPairing(new TournamentPairing(player1, playerForPossibleSecondPairing));
|
||||||
|
roundPlayers.remove(playerForPossibleSecondPairing);
|
||||||
|
player1 = null;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
// pair agains the next not paired before
|
||||||
|
round.addPairing(new TournamentPairing(player1, player2));
|
||||||
|
roundPlayers.remove(player2);
|
||||||
|
player1 = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (player1 != null) {
|
||||||
|
// no pairing done yet
|
||||||
|
if (playerForPossibleSecondPairing != null) {
|
||||||
|
// pair again with a player
|
||||||
|
round.addPairing(new TournamentPairing(player1, playerForPossibleSecondPairing));
|
||||||
|
roundPlayers.remove(playerForPossibleSecondPairing);
|
||||||
|
} else {
|
||||||
|
// player free round - add to bye players of this round
|
||||||
|
round.getPlayerByes().add(player1);
|
||||||
|
player1.setState(TournamentPlayerState.WAITING);
|
||||||
|
player1.setStateInfo("Round Bye");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return round;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean alreadyPaired(TournamentPlayer player1, TournamentPlayer player2) {
|
||||||
|
for (Round round : rounds) {
|
||||||
|
for (TournamentPairing pairing: round.getPairs()) {
|
||||||
|
if (pairing.getPlayer1().equals(player1) || pairing.getPlayer2().equals(player1)) {
|
||||||
|
if (pairing.getPlayer1().equals(player2) || pairing.getPlayer2().equals(player2)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,10 @@ public class TournamentType <T extends TournamentType<T>> implements Serializabl
|
||||||
protected int minPlayers;
|
protected int minPlayers;
|
||||||
protected int maxPlayers;
|
protected int maxPlayers;
|
||||||
protected int numBoosters;
|
protected int numBoosters;
|
||||||
protected boolean draft;
|
protected boolean cubeBooster; // boosters are generated from a defined cube
|
||||||
protected boolean limited;
|
protected boolean draft; // or sealed
|
||||||
|
protected boolean limited; // or construced
|
||||||
|
protected boolean elimination; // or Swiss
|
||||||
|
|
||||||
protected TournamentType() {}
|
protected TournamentType() {}
|
||||||
|
|
||||||
|
@ -73,4 +75,13 @@ public class TournamentType <T extends TournamentType<T>> implements Serializabl
|
||||||
public boolean isLimited() {
|
public boolean isLimited() {
|
||||||
return limited;
|
return limited;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isElimination() {
|
||||||
|
return elimination;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCubeBooster() {
|
||||||
|
return cubeBooster;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue