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 00000000000..78d2eb0267c
--- /dev/null
+++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
@@ -0,0 +1,56 @@
+
+
+
+ 4.0.0
+
+
+ org.mage
+ mage-server-plugins
+ 0.8.6
+
+
+ mage-player-ai-draft-bot
+ jar
+ Mage Player AI.DraftBot
+
+
+
+ ${project.groupId}
+ mage
+ ${project.version}
+
+
+ ${project.groupId}
+ mage-player-ai
+ ${project.version}
+
+
+
+
+ src
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.0.2
+
+ 1.6
+ 1.6
+
+
+
+ maven-resources-plugin
+
+ UTF-8
+
+
+
+
+
+ mage-player-ai-draft-bot
+
+
+
+
+
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 00000000000..31e514b2387
--- /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 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 55cb409cfc4..21e48d2e945 100644
--- a/Mage.Server.Plugins/pom.xml
+++ b/Mage.Server.Plugins/pom.xml
@@ -23,6 +23,7 @@
Mage.Player.AIMinimax
Mage.Player.AI.MA
Mage.Player.AIMCTS
+ Mage.Player.AI.DraftBot
Mage.Player.Human
Mage.Tournament.BoosterDraft
Mage.Tournament.Sealed
diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml
index cc832e984a7..1fa37199651 100644
--- a/Mage.Server/config/config.xml
+++ b/Mage.Server/config/config.xml
@@ -7,6 +7,7 @@
+
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 00000000000..add4c0bafd0
Binary files /dev/null and b/Mage.Server/plugins/mage-player-ai-draft-bot.jar differ
diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar
index cac60a4d375..7880ac081c4 100644
Binary files a/Mage.Server/plugins/mage-player-ai-ma.jar and b/Mage.Server/plugins/mage-player-ai-ma.jar differ
diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar
index 6954c948f06..45a6a304693 100644
Binary files a/Mage.Server/plugins/mage-player-ai.jar and b/Mage.Server/plugins/mage-player-ai.jar differ
diff --git a/Mage.Server/plugins/mage-player-aimcts.jar b/Mage.Server/plugins/mage-player-aimcts.jar
index c586e569bfd..1d820de797d 100644
Binary files a/Mage.Server/plugins/mage-player-aimcts.jar and b/Mage.Server/plugins/mage-player-aimcts.jar differ
diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar
index ab1d34404ca..eac2decfb2e 100644
Binary files a/Mage.Server/plugins/mage-player-aiminimax.jar and b/Mage.Server/plugins/mage-player-aiminimax.jar differ
diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar
index ae701fbf9ca..fa972867142 100644
Binary files a/Mage.Server/plugins/mage-player-human.jar and b/Mage.Server/plugins/mage-player-human.jar differ
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 17b92646d2a..b38cffdb7fd 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 ad25b506a2c..c92b799a268 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 b1c76da2d0d..c2976dccb92 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 a2b35c3b7ed..ed3437c8efb 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 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 4151d2f0f0f..60a79475deb 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 {
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 5a39ee7a619..89a69954020 100644
--- a/Mage/src/mage/players/PlayerImpl.java
+++ b/Mage/src/mage/players/PlayerImpl.java
@@ -1440,4 +1440,9 @@ public abstract class PlayerImpl> implements Player, Ser
public void setCanPaySacrificeCost(boolean canPaySacrificeCost) {
this.canPaySacrificeCost = canPaySacrificeCost;
}
+
+ @Override
+ public boolean autoLoseGame() {
+ return false;
+ }
}