From 354b07d50e8e0023533e68f776a23655cdaf2fdf Mon Sep 17 00:00:00 2001
From: magenoxx <magenoxx@gmail>
Date: Thu, 28 Jun 2012 19:32:32 +0400
Subject: [PATCH] Draft bot - only draft picks, will be auto eliminated and
 doesn't participate in tournament

---
 .../Mage.Player.AI.DraftBot/pom.xml           |  56 +++++++++++++++
 .../mage/player/ai/ComputerDraftPlayer.java   |  68 ++++++++++++++++++
 Mage.Server.Plugins/pom.xml                   |   1 +
 Mage.Server/config/config.xml                 |   1 +
 .../plugins/mage-player-ai-draft-bot.jar      | Bin 0 -> 2945 bytes
 Mage.Server/plugins/mage-player-ai-ma.jar     | Bin 62799 -> 62799 bytes
 Mage.Server/plugins/mage-player-ai.jar        | Bin 55905 -> 55945 bytes
 Mage.Server/plugins/mage-player-aimcts.jar    | Bin 28467 -> 28463 bytes
 Mage.Server/plugins/mage-player-aiminimax.jar | Bin 39937 -> 39932 bytes
 Mage.Server/plugins/mage-player-human.jar     | Bin 13534 -> 13535 bytes
 .../tournament/TournamentController.java      |   7 +-
 .../mage/game/tournament/TournamentImpl.java  |  30 ++++----
 .../game/tournament/TournamentPairing.java    |  13 +++-
 .../TournamentSingleElimination.java          |  11 +++
 Mage/src/mage/players/Player.java             |   1 +
 Mage/src/mage/players/PlayerImpl.java         |   5 ++
 16 files changed, 176 insertions(+), 17 deletions(-)
 create mode 100644 Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
 create mode 100644 Mage.Server.Plugins/Mage.Player.AI.DraftBot/src/mage/player/ai/ComputerDraftPlayer.java
 create mode 100644 Mage.Server/plugins/mage-player-ai-draft-bot.jar

diff --git a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
new file mode 100644
index 0000000000..78d2eb0267
--- /dev/null
+++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
@@ -0,0 +1,56 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.mage</groupId>
+        <artifactId>mage-server-plugins</artifactId>
+        <version>0.8.6</version>
+    </parent>
+
+    <artifactId>mage-player-ai-draft-bot</artifactId>
+    <packaging>jar</packaging>
+    <name>Mage Player AI.DraftBot</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>mage</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>mage-player-ai</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+
+        </plugins>
+
+        <finalName>mage-player-ai-draft-bot</finalName>
+    </build>
+
+    <properties/>
+
+</project>
diff --git a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/src/mage/player/ai/ComputerDraftPlayer.java b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/src/mage/player/ai/ComputerDraftPlayer.java
new file mode 100644
index 0000000000..31e514b238
--- /dev/null
+++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/src/mage/player/ai/ComputerDraftPlayer.java
@@ -0,0 +1,68 @@
+/*
+ *  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.player.ai;
+
+import mage.Constants.RangeOfInfluence;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author nantuko
+ */
+public class ComputerDraftPlayer extends ComputerPlayer<ComputerDraftPlayer> implements Player {
+
+    public ComputerDraftPlayer(String name, RangeOfInfluence range) {
+        super(name, range);
+    }
+
+    public ComputerDraftPlayer(String name, RangeOfInfluence range, int skill) {
+        super(name, range);
+    }
+
+    public ComputerDraftPlayer(final ComputerDraftPlayer player) {
+        super(player);
+    }
+
+    @Override
+    public ComputerDraftPlayer copy() {
+        return new ComputerDraftPlayer(this);
+    }
+
+    @Override
+    public boolean autoLoseGame() {
+        return true;
+    }
+
+    @Override
+    public boolean priority(Game game) {
+        game.concede(playerId);
+        return true;
+    }
+}
diff --git a/Mage.Server.Plugins/pom.xml b/Mage.Server.Plugins/pom.xml
index 55cb409cfc..21e48d2e94 100644
--- a/Mage.Server.Plugins/pom.xml
+++ b/Mage.Server.Plugins/pom.xml
@@ -23,6 +23,7 @@
         <module>Mage.Player.AIMinimax</module>
         <module>Mage.Player.AI.MA</module>
         <module>Mage.Player.AIMCTS</module>
+		<module>Mage.Player.AI.DraftBot</module>
         <module>Mage.Player.Human</module>
         <module>Mage.Tournament.BoosterDraft</module>
         <module>Mage.Tournament.Sealed</module>
diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml
index cc832e984a..1fa3719965 100644
--- a/Mage.Server/config/config.xml
+++ b/Mage.Server/config/config.xml
@@ -7,6 +7,7 @@
         <playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/>
         <playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer6"/>
         <playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/>
+		<playerType name="Computer - draftbot" jar="mage-player-ai-draft-bot.jar" className="mage.player.ai.ComputerDraftPlayer"/>
     </playerTypes>
     <gameTypes>
         <gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
diff --git a/Mage.Server/plugins/mage-player-ai-draft-bot.jar b/Mage.Server/plugins/mage-player-ai-draft-bot.jar
new file mode 100644
index 0000000000000000000000000000000000000000..add4c0bafd0a39bb026e1ca51544fe124053316c
GIT binary patch
literal 2945
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
ZAhKwHH!H9%VPN0}LOo^%23rmg4*+mj9BBXm

literal 0
HcmV?d00001

diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar
index cac60a4d375564638b293c62964fcc4928ed980e..7880ac081c4cd07da1ea47efda88e6adbd83d35a 100644
GIT binary patch
delta 3919
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

delta 3994
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

diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar
index 6954c948f06019ae409008d0ae1fd3e39ffc8716..45a6a3046937a7eca5c71760af174ff804b0055e 100644
GIT binary patch
delta 5585
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
CrM(dV

delta 5499
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
Oea7RWp>-nuc>e<`mSEWc

diff --git a/Mage.Server/plugins/mage-player-aimcts.jar b/Mage.Server/plugins/mage-player-aimcts.jar
index c586e569bfd152d84d91a1b11c71c08c8e0097a0..1d820de797d984976deab64db6912e1c3ca941a1 100644
GIT binary patch
delta 1032
zcmdmdk8%AyM&1B#W)?065Lh$o&O}}n=G8#TWEL}scToXMeNhKdljRt-K=fvB#wKwv
z<ATIdRxo3RTrd-u@lK&o0?bIVTm%tew~6Khi==v8kOna(Tcm-FnVgzt4Cc>HbLU+g
zdBs6`#?Pf{ObiV3C%;c~s^@=VKVw6<x1X37=eook9<H-t8Rp-@Od<=X-kdaHioV<b
z-zlDDDc3!jli!@RvbwhOdBJ<x{vgGlvl3+AuAa1V_Q}oHk{A<Px3w^;2-K-HoMyUL
zAA88s!@;QV%+a`u)Arted*I#Pr)MXnaMkO)mpjuh+NBvRW$2^!I8bC}yx6JwN98ig
zzLvWk^sSC=aM&}~Ue%xT#_F0$z3yARM3#!4_xw56BUQ!dw-=Xn#Ay)^p=HM9n>-YM
zy4`s;b0UMNmIs%#ih|<Gmt2Xt7iI}-D{Xf<w&;$?u|lrq-w)QW4fj7_y2I<?Hr-?Q
z4s8?T|KjS>$>+v$amS%5k0Uz{?w_!7!HN279@qHI-0RN=xNcfnsl97^zN>uR;-|-t
zw~O4G9cHQCv|)~cPbU}emLG}^)+?v(nX$fI>9zHzBL^2)CHfxZ@p=AtOVlhojz@QH
ztzQsf5%HE)?%v;T#*8+fiaHgqYv=#A-1lzcbjAGti+?3I{|%OBd~)mbVSDo}Z+f~P
zNq3%9*Q)R3nBMN=Ip>g_#D~9MzH*lp@V|8l>)#cxlXrScv5m}~*B@T_wp6NS+{|k<
zmMklpGxMv7_0@aRIxV9wCMmx?CZoWTI5Tr+mXX!bD;{Dl*316O3A8>BIh!TP_0{Lf
z`b(3Jgs#-<dA&%$$NS@+d*%1#?2lj9%sF45Xz=D~ay#n_(=MZsx|QG4%RBB&vb$$?
z_x_j4&6`!lk3^_*MO|32W2ez_dsxEd03}=peVHwHiY8}dy4O2$H5&*p9H>^PkN7Yr
zVOzkO2WtbgDmKaAcxA?W#pRmIhwr)1Ew1(|bEnRGSb4y~+I{V+<GUT=l@gfWU0Rg=
zk>zj&>l)dtt($WckFML+Yn%O4b?R5Ua?d@nCpL$vSnkO<wf|3hq<zT-39hu6pO#$}
z5AbGW5@CjCp~*T~CZIetIXTN7oW7T48Gz{<S>|9`DBB85`)3D%=_T1dVES{m7npX)
z@c`4^IiX<saSlY>AU7DyZ_9<~Kb-3f=5ywSqvfC6ybyVKm;f_&DG*zMayS$$Y4o4`
MAkUXgG7BUC0Jr(tHUIzs

delta 1051
zcmZ2~k8$%oM&1B#W)?065a12JGLct>nFmOj%wh)dE-HYjFX|v_vK*rph~DhY*dz{S
zT#z`*3TDiZ3uXc{-YFDHfEh`aiy$KGHqm@wkyNh>(jdlUi!`t?lT*`-!Ti~2?z|i`
z4m&uf1<lc6VqjQ1`F)yGeVoGogDrcbiZ%s!ec(w>4#?Q%bbI6WMJKyfpPAOOq{i^q
zeRc0m%Der<B$D~rUf)rkTh0Id-bW45N$WYUUEHTNv&z2mT9l5$nhVnm8dwgUXDNt0
zuzS6?1v{sQTHnqa+P5~9@0Pu>ck`aeNj?w1KYhD*XT-u8MoR?`rx?k(PTaYvK0s{$
zQ;Ez|H(9GLYPPXHdizJS((6Fn)5&YDt=O;Or9E%*C+Uf&I#RyP6)D@$pglpwC;eT@
zM5j-^J5CxaGi!xR5Ha&`a0<FCdg#^yQ}r;Hyv`oioti#ZHF+K#T)XzV{{hn-UJuPY
zj=LmI=x+aIw8({Bxj7>y(N-n-)j|7-Cl}VAxaM)q-^^V;eTCA^OM67`-rT;3-~8gI
z$A@dVa#L)o9(P&_wmfY~^a_b^?v`iTk{olg`)AdOt#zLBEM9~jU#~f%@#UWU2=B}6
zjxjsG>3fLrrByrf=GXtc$RJm_bBV%rz4~>}f9!IPYs>mAe^cK2&HQVE4(s;LTK9Y7
z!qoH>k^1`{K6ZhbAv<hRydH^sJJ|4EeZ%~X&D9ylH&@;H+f;aa+1#gz&*OH7=c}C2
zc064sJjZZj@{=<<D{rp+x6S9w%`P$NO!MaqiUy~9PKQ3esJYB-lfo^-zyBLFY?fzD
zJ3V1#`kK0@(^T}lOBcq9&rGQ5dj9oTb<Gc%_~jdH|GPFOx)_&R>vXKqaDF<ys=G}6
z<l0xsTO=Ek*PHK-E^_Q)ba7mrx#dp9%**+(<jVm{z7A58mE;P5Nx2k=tr#ZX&9kW&
zJ+YCi*+78df^EV7f(LU1nx`u55cT5r<D0v_innpr2}#!f`(FNtD}8>#X=ZxOe2WVQ
z1w+1S)w~m&d-PV>^linwe2>@eC|kfcO?SzS=wee{4gJh``QrIUX1CfjE1i7k9IW?~
ze{bE(l#3!?jGppd;Sca;WD;S9=cvgVStg(?H90=Z9-Q14W*LC#D_Q1XnlIZ5OnYYs
zf$0U=K4AKNwilST$?*Ww?Kz=f`hE^XTqide%;(FNo;){K9?agK>kOt@^TN@xRAyd?
YJZ1oaay<krX$+lwC(oBnHVecD0014qwEzGB

diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar
index ab1d34404ca0409390ddda8e353b2c3f6f67e923..eac2decfb2e9a2e22206591b8f6385b970b8464f 100644
GIT binary patch
delta 1175
zcmZqN!SrW46K{YwGYc032&|rUXCki(^C}=^GK(3+yQl!BzNmw!$#RTZAbPVm<0B?8
z!+@opi5Dp1pxdzWlm;^c!?nrltyDHYV6$ch%gb@K7=Rf|ty~}?Z){WL!6G5Cdsx5>
z;Uq5}Fe4!^0%Gd!f?W_sMRB(%Sc<JPnH9{)>6;Cfn#?s3?3Bso6OBO<lXE9}3N4Pj
z;t<jLNKb`{fnhm21A{5U<ae_S>I?F7^(u06j)uf`-!>4a;eTR3<HB_hKdC<D9c@mU
zGBLNBx4GZv3%&Pa%B@Kgrs$vg`~B3WHz(}Wd8b@5&o;UChG)06oN7=fZ-B7usixQE
zlhc!*2tA(kra@VWvzARIq)*;%{RgI_8uPB4dFr@%+TQ!`FaBHm`0V3~w*Bkh?Y|*k
z?`@PCBYjBI=h$M6P5X7W9)8cN+QwPe8duWyu;FFiM-ls@FBWX}w2}+e3Y;=UsrixM
zlx;#Qt5pxmu1WP;)G&LCoux{6lJ@&eSG*QXdNSbw8>feh<TkY{5nCSln68jru~KK-
z&eAy#9@zcJettE%q&rV&Pj+|V_8n`FGS>=5PFP$os<<X)&eSIc3dw&j%s+B%!gA?F
ztJG&N-v4|_OG#>cx7?lVi@$egT(x<w7yXk*<pYmJ>H=qR-8!BNekH9Z#Ah$O^J|+;
zp}|_eBx4iz&93&Frls`>WgUK}ts%xAR^8fezW+~xLjRta<P~`{?0;MCeK&EsV*dZd
zzk;X#4VGsN*<L@ry*?-M;!H{1ZC!`hm#ygtI3A)s>w%rbhrb-(xYs?DyVbd7R{8$e
zSD}~rJ{J_MKfL;ypy<*R*WFxtDK}0Q=9ORh6H{%iCR%g$)7ql!;s$}1)a6f?oqQp4
zSzv1O%9;PF9Yo@Tw%$(FxWXN{-^<%EcIiH&b*r5==&EkYdRqJYms4TY><8ceh_fAz
zvn!2gSSP7|ba__&yvVESPR0zrtIcOeb8=p@&3NOW9nwF|_AeVOJ8*!qgF{<!{Ewo^
zHd8$74{{wc;9<B>t@vNyMrG<-$7LI4D{xuA<aZIzKCn%B+u^@^h3~yIRrgyHQgP^a
zm$L4h118(Uk9zyQs4n^4TrMrM-u=tm&k17J`k$DTY};;a;8;BO{N)LzH#`~-P7tfS
zv^eKye_7q-Q@19$cnZDbe#Rc)&B!Fe49}R8nWvh7a^_^KsrKL$Uo#b)wI;8hY7XZ6
z&61wXG7X%$CaX>J1dA0-3k1{0ptRI<e=t91Iz;>clrJ>H4J;l#BM3}ym=O%7*=9o2
zM?mRSGyTBgzh?%3X}?)kV7hyjGnl?OE0Px_7fv>x9i{*eM_>_C4#YN~vIYv4G%8O4
Q<<iM_XUnm@p8^sE07I}LegFUf

delta 1139
zcmeyfovCpL6K{YwGYc032ylmAnaHcc%mt)OW-)_!7Zt$N7j+OdS&mT)L~r(He8dE1
z7_ihc@d8C0bQ@Nl(qLv_xHfscmCEJ^Y}U+Rc{#2Y12AK$l?z1VjcuwtSR^EN4-1$f
zoaDs=W+dcAKuq0TunWSdDDD;oOR;q(vw|5peY3$*les2>oif>cqA^Hfa_&S=!L%7W
z9rg(>F41CQVA#gaz+gJrZi;DrMQ+Z~klS6i4FqcQ6#geT#VcE8MofDk#kF+9hD`CQ
zh56lD{(HP~Jv~nKZu%d0bCT@M*Gn3MekE+^>w9)aCN0gzYl)Eb0yV2Ctk?6^{g0hc
zJ*Ik-(cMMp7mLRV8T*>3hpb(JHic)NI&Pk}_x}5f|9sERKK_xXKK^d~HhyoTRQDL^
zLz+Iv7He$spSJ7Rdsfvp&brpPlD<IZ%Xc3c*7aO;OrN~v(u#c=US1O&Kk`o5rj#kG
zeo$8Df!Csj*;nRfse~tKzu$D_)Z~McB<t5&9Xwe3A?x|q<dW_@p*`G}Hg2~#an!k1
zGIGM=sfue-=1hHJppc@y$iDNelE1l2sN?L#`=2jqDM?-I%3r$W#ogE~S%<Dpe|%B<
z{8<O4^9{jlRys?L_A}lpTrco5$v7o;zn;I0$(rO_JZCTFTr6L^bmn4~@WQ|1D&6dx
z_bzI?UcdiOjY7XoeDH+VGwrVzcfFhVeBrHs?%$T1{a#+mG9i2Yve$Jvkr!u5>u&2h
zRK09XSHSTQ?O6}(BtHC=_-0&I!2h-)?ChTVMtM)SFx$Sl<NbZrRu@;z$cyWmxz);g
z=G^u*wZDGfbTZezw4Y&DUl%tB%t$@{blJxjGM5FWHW&K*PqtU+(qDP&uTjb?*46Pl
zmL5o5xqi!QE#Vyh&NWe0@%w9L+*8|O``@)O(YV}NXGf&5UswNCG26`>{9Dqv{NCQn
zDNt33;CDzi7Y#e#JHz%L8!YK_fRet$!}Z_z3n!aR@vPs-b;v+~;eu_!e}NZwCa~xP
zy-@3LTF!TFx$WUb&r>s}eS6>gxccl=Ax^PbUq4?^&YR+3+JEZztS#Gb-TZgu>%EtS
zyF#q_vy^`p`8AuSUvA`@bp5Fre`Hgq1c!*%L-T!JXY03|X6K(IW?A&8!+M2$fHxzP
z2s1nnI!yjQ#Tb+eC!0>S2dD1xso-ohdDT>NFyC{Q^yL3j!5L|?;xtc44wx1QrVm1C
z(dqtRe)@EX_--hlcZM5SJZwe~m|i_27)&$Hgs2aO(o1LhfyKYg3;@%fv#h{$+bm}=
oeP&i9FG`M^Y&1KJ6A_LRXNxjvPMK^!#cuMm*#c}|rhrNq04?h9y8r+H

diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar
index ae701fbf9caef4d8d0e8a443cb4e823b9f66ee46..fa972867142f670efb84dc7a3d3e4568eb61d8a1 100644
GIT binary patch
delta 332
zcmcbYc|Vgkz?+$civa}I&bl*^SA}^EkTRLY4B}l>08?MoLDXb9MqLoS*^lv>CYYhF
zJ&g%0b3j)MOuyAN21_XG)iZGdl{(C@b&xHXyxPFIUi8dHu4V%Ph6}b6>MaV)W-J!b
z-XZG6y8IXO^0>tT!j{4Z_pe`<UvabBmfKZsq5XoTbN7ZtnyY3^V%Irnr?o}&-h#h2
zjNIK(Z*^|V)WpuXbZ2Xk(4}8;uNBVeJc-brWKo~lp&mD3y}eb$Cr#awcl80@j7%cT
zaF0#SF*E`BZ1Q45d$3cV8XACU2_thb9b{w+rY9Nsf$7IafneI)*a}RS7(0XMUB+9G
Od{%Cf$QEY^3OoS77mDZr

delta 332
zcmcbgc`uVUz?+$civa}OC*PjPtHSICq)cWpgLoGez|<FY5H(qjQ5QsS_G7%J31+Bk
zPh$eh9MIJQ({FW+!4k@P^-P>Vr4G4=JPPwCuQqV54=(dR>#ggh<LMjdu`1+)ua5WG
z$4`U!*o*dheHQ6CBg&(@rsvEWo?elf=2(#)9-iKcou`7jyNo}7&f)!{^W{v%&P&~&
zyt!?Hb3S)p`dTD>Ik<ACP`8)SWueL54NVG+cbn!MIdw(pZqKDVE(=~V1b8zti7><c
z<uEzV&=};i$x96F!A^Z<XaJ@qjm*Jxu#qj8o^0d?rk@xEf@uq5D==MZ><p%N8*f4K
NS%pa=TdW}{@BsaThhYE!

diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java
index 17b92646d2..b38cffdb7f 100644
--- a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java
+++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java
@@ -28,9 +28,6 @@
 
 package mage.server.tournament;
 
-import java.util.Map.Entry;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
 import mage.MageException;
 import mage.cards.decks.Deck;
 import mage.game.GameException;
@@ -52,6 +49,10 @@ import mage.view.ChatMessage.MessageColor;
 import mage.view.TournamentView;
 import org.apache.log4j.Logger;
 
+import java.util.Map.Entry;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  *
  * @author BetaSteward_at_googlemail.com
diff --git a/Mage/src/mage/game/tournament/TournamentImpl.java b/Mage/src/mage/game/tournament/TournamentImpl.java
index ad25b506a2..c92b799a26 100644
--- a/Mage/src/mage/game/tournament/TournamentImpl.java
+++ b/Mage/src/mage/game/tournament/TournamentImpl.java
@@ -28,27 +28,18 @@
 
 package mage.game.tournament;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.UUID;
-import java.util.concurrent.CopyOnWriteArrayList;
 import mage.cards.Card;
 import mage.cards.ExpansionSet;
 import mage.cards.decks.Deck;
-import mage.game.events.Listener;
-import mage.game.events.PlayerQueryEvent;
-import mage.game.events.PlayerQueryEventSource;
-import mage.game.events.TableEvent;
+import mage.game.events.*;
 import mage.game.events.TableEvent.EventType;
-import mage.game.events.TableEventSource;
 import mage.game.match.Match;
 import mage.players.Player;
 import org.apache.log4j.Logger;
 
+import java.util.*;
+import java.util.concurrent.CopyOnWriteArrayList;
+
 /**
  *
  * @author BetaSteward_at_googlemail.com
@@ -177,6 +168,7 @@ public abstract class TournamentImpl implements Tournament {
     protected void updateResults() {
         for (TournamentPlayer player: players.values()) {
             player.setResults("");
+            player.setPoints(0);
         }
         for (Round round: rounds) {
             for (TournamentPairing pair: round.getPairs()) {
@@ -193,6 +185,18 @@ public abstract class TournamentImpl implements Tournament {
                 sb2.append("-").append(match.getPlayer(player1Id).getWins()).append(") ");
                 players.get(player1Id).setResults(sb1.toString());
                 players.get(player2Id).setResults(sb2.toString());
+                if (match.getPlayer(player1Id).getWins() > match.getPlayer(player2Id).getWins()) {
+                    int points = players.get(player1Id).getPoints();
+                    players.get(player1Id).setPoints(points + 3);
+                } else if (match.getPlayer(player1Id).getWins() < match.getPlayer(player2Id).getWins()) {
+                    int points = players.get(player2Id).getPoints();
+                    players.get(player2Id).setPoints(points + 3);
+                } else {
+                    int points = players.get(player1Id).getPoints();
+                    players.get(player1Id).setPoints(points + 1);
+                    points = players.get(player2Id).getPoints();
+                    players.get(player2Id).setPoints(points + 1);
+                }
             }
         }
 
diff --git a/Mage/src/mage/game/tournament/TournamentPairing.java b/Mage/src/mage/game/tournament/TournamentPairing.java
index b1c76da2d0..c2976dccb9 100644
--- a/Mage/src/mage/game/tournament/TournamentPairing.java
+++ b/Mage/src/mage/game/tournament/TournamentPairing.java
@@ -28,9 +28,10 @@
 
 package mage.game.tournament;
 
-import java.util.UUID;
 import mage.game.match.Match;
 
+import java.util.UUID;
+
 /**
  *
  * @author BetaSteward_at_googlemail.com
@@ -75,4 +76,14 @@ public class TournamentPairing {
             player2.setEliminated();
         }
     }
+
+    public void eliminateComputer() {
+        if (!player1.getPlayer().isHuman()) {
+            player1.setEliminated();
+            return;
+        }
+        if (!player2.getPlayer().isHuman()) {
+            player2.setEliminated();
+        }
+    }
 }
diff --git a/Mage/src/mage/game/tournament/TournamentSingleElimination.java b/Mage/src/mage/game/tournament/TournamentSingleElimination.java
index a2b35c3b7e..ed3437c8ef 100644
--- a/Mage/src/mage/game/tournament/TournamentSingleElimination.java
+++ b/Mage/src/mage/game/tournament/TournamentSingleElimination.java
@@ -28,6 +28,9 @@
 
 package mage.game.tournament;
 
+import java.util.Map;
+import java.util.UUID;
+
 /**
  *
  * @author BetaSteward_at_googlemail.com
@@ -40,6 +43,14 @@ public abstract class TournamentSingleElimination extends TournamentImpl {
 
     @Override
     protected void runTournament() {
+
+        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) {
             Round round = createRoundRandom();
             playRound(round);
diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java
index 4151d2f0f0..60a79475de 100644
--- a/Mage/src/mage/players/Player.java
+++ b/Mage/src/mage/players/Player.java
@@ -110,6 +110,7 @@ public interface Player extends MageItem, Copyable<Player> {
     public UserData getUserData();
     public void setUserData(UserData userData);
     public boolean canLose(Game game);
+    public boolean autoLoseGame();
 
     /**
      * Returns a set of players which turns under you control.
diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java
index 5a39ee7a61..89a6995402 100644
--- a/Mage/src/mage/players/PlayerImpl.java
+++ b/Mage/src/mage/players/PlayerImpl.java
@@ -1440,4 +1440,9 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
     public void setCanPaySacrificeCost(boolean canPaySacrificeCost) {
         this.canPaySacrificeCost = canPaySacrificeCost;
     }
+
+    @Override
+    public boolean autoLoseGame() {
+        return false;
+    }
 }