New feature: "Chaos Remixed" booster draft (#10328)

* Fix error in draft pick logger that was failing on chaos drafts with fewer than 3 sets

* Implement Remixed Booster Draft

* Add debug test

* minor cleanup

* Cleanup unnecessary checks

* Fix elimination tournament type

* Add note for future improvement
This commit is contained in:
xenohedron 2023-05-12 10:12:23 -04:00 committed by GitHub
parent 6d4e353867
commit 4cc9329b15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 437 additions and 47 deletions

View file

@ -18,7 +18,7 @@ public class RandomBoosterDraftEliminationTournamentType extends TournamentType
this.draft = true;
this.limited = true;
this.cubeBooster = false;
this.elimination = false;
this.elimination = true;
this.isRandom = true;
}

View file

@ -0,0 +1,26 @@
package mage.tournament;
import mage.constants.TournamentPlayerState;
import mage.game.draft.DraftOptions;
import mage.game.draft.RemixedBoosterDraft;
import mage.game.events.TableEvent;
import mage.game.tournament.TournamentOptions;
import mage.game.tournament.TournamentPlayer;
public class RemixedBoosterDraftEliminationTournament extends BoosterDraftEliminationTournament {
public RemixedBoosterDraftEliminationTournament(TournamentOptions options) {
super(options);
currentStep = TournamentStep.START;
}
@Override
protected void draft() {
draft = new RemixedBoosterDraft((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);
}
}

View file

@ -0,0 +1,25 @@
package mage.tournament;
import mage.game.tournament.TournamentType;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class RemixedBoosterDraftEliminationTournamentType extends TournamentType {
public RemixedBoosterDraftEliminationTournamentType() {
this.name = "Booster Draft Elimination (Remixed)";
this.maxPlayers = 16;
this.minPlayers = 4;
this.numBoosters = 3;
this.draft = true;
this.limited = true;
this.cubeBooster = false;
this.elimination = true;
this.isRemixed = true;
}
}

View file

@ -0,0 +1,26 @@
package mage.tournament;
import mage.constants.TournamentPlayerState;
import mage.game.draft.DraftOptions;
import mage.game.draft.RemixedBoosterDraft;
import mage.game.events.TableEvent;
import mage.game.tournament.TournamentOptions;
import mage.game.tournament.TournamentPlayer;
public class RemixedBoosterDraftSwissTournament extends BoosterDraftSwissTournament {
public RemixedBoosterDraftSwissTournament(TournamentOptions options) {
super(options);
currentStep = BoosterDraftSwissTournament.TournamentStep.START;
}
@Override
protected void draft() {
draft = new RemixedBoosterDraft((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);
}
}

View file

@ -0,0 +1,25 @@
package mage.tournament;
import mage.game.tournament.TournamentType;
/**
*
* @author LevelX2
*/
public class RemixedBoosterDraftSwissTournamentType extends TournamentType {
public RemixedBoosterDraftSwissTournamentType() {
this.name = "Booster Draft Swiss (Remixed)";
this.maxPlayers = 16;
this.minPlayers = 4;
this.numBoosters = 3;
this.draft = true;
this.limited = true;
this.cubeBooster = false;
this.elimination = false;
this.isRemixed = true;
}
}