mirror of
https://github.com/magefree/mage.git
synced 2025-12-30 15:32:08 -08:00
* Split cards improves:
* Fixed that fused spells can't be played from non hand zone; * Fixed double choose spell dialog (#5506, #6549);
This commit is contained in:
parent
6b5108770c
commit
63dbf5f40b
9 changed files with 1 additions and 190 deletions
|
|
@ -29,39 +29,6 @@ public class TestComputerPlayer extends ComputerPlayer {
|
|||
this.testPlayerLink = testPlayerLink;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpellAbility chooseSpellAbilityForCast(SpellAbility ability, Game game, boolean noMana) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
||||
// workaround to cast fused cards in tests by it's NAMES (Wear, Tear, Wear // Tear)
|
||||
// reason: TestPlayer uses outer computerPlayer to cast, not TestPlayer
|
||||
switch (ability.getSpellAbilityType()) {
|
||||
case SPLIT:
|
||||
case SPLIT_FUSED:
|
||||
case SPLIT_AFTERMATH:
|
||||
if (!this.testPlayerLink.getChoices().isEmpty()) {
|
||||
MageObject object = game.getObject(ability.getSourceId());
|
||||
if (object != null) {
|
||||
LinkedHashMap<UUID, ActivatedAbility> useableAbilities = getSpellAbilities(playerId, object, game.getState().getZone(object.getId()), game);
|
||||
|
||||
// left, right or fused cast
|
||||
for (String choose : this.testPlayerLink.getChoices()) {
|
||||
for (ActivatedAbility activatedAbility : useableAbilities.values()) {
|
||||
if (activatedAbility instanceof SpellAbility) {
|
||||
if (((SpellAbility) activatedAbility).getCardName().equals(choose)) {
|
||||
return (SpellAbility) activatedAbility;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// default implementation by AI
|
||||
return super.chooseSpellAbilityForCast(ability, game, noMana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
|
|
|||
|
|
@ -29,39 +29,6 @@ public class TestComputerPlayer7 extends ComputerPlayer7 {
|
|||
this.testPlayerLink = testPlayerLink;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpellAbility chooseSpellAbilityForCast(SpellAbility ability, Game game, boolean noMana) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
||||
// workaround to cast fused cards in tests by it's NAMES (Wear, Tear, Wear // Tear)
|
||||
// reason: TestPlayer uses outer computerPlayer to cast, not TestPlayer
|
||||
switch (ability.getSpellAbilityType()) {
|
||||
case SPLIT:
|
||||
case SPLIT_FUSED:
|
||||
case SPLIT_AFTERMATH:
|
||||
if (!this.testPlayerLink.getChoices().isEmpty()) {
|
||||
MageObject object = game.getObject(ability.getSourceId());
|
||||
if (object != null) {
|
||||
LinkedHashMap<UUID, ActivatedAbility> useableAbilities = getSpellAbilities(playerId, object, game.getState().getZone(object.getId()), game);
|
||||
|
||||
// left, right or fused cast
|
||||
for (String choose : this.testPlayerLink.getChoices()) {
|
||||
for (ActivatedAbility activatedAbility : useableAbilities.values()) {
|
||||
if (activatedAbility instanceof SpellAbility) {
|
||||
if (((SpellAbility) activatedAbility).getCardName().equals(choose)) {
|
||||
return (SpellAbility) activatedAbility;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// default implementation by AI
|
||||
return super.chooseSpellAbilityForCast(ability, game, noMana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
|
|
|||
|
|
@ -29,39 +29,6 @@ public class TestComputerPlayerMonteCarlo extends ComputerPlayerMCTS {
|
|||
this.testPlayerLink = testPlayerLink;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpellAbility chooseSpellAbilityForCast(SpellAbility ability, Game game, boolean noMana) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
||||
// workaround to cast fused cards in tests by it's NAMES (Wear, Tear, Wear // Tear)
|
||||
// reason: TestPlayer uses outer computerPlayer to cast, not TestPlayer
|
||||
switch (ability.getSpellAbilityType()) {
|
||||
case SPLIT:
|
||||
case SPLIT_FUSED:
|
||||
case SPLIT_AFTERMATH:
|
||||
if (!this.testPlayerLink.getChoices().isEmpty()) {
|
||||
MageObject object = game.getObject(ability.getSourceId());
|
||||
if (object != null) {
|
||||
LinkedHashMap<UUID, ActivatedAbility> useableAbilities = getSpellAbilities(playerId, object, game.getState().getZone(object.getId()), game);
|
||||
|
||||
// left, right or fused cast
|
||||
for (String choose : this.testPlayerLink.getChoices()) {
|
||||
for (ActivatedAbility activatedAbility : useableAbilities.values()) {
|
||||
if (activatedAbility instanceof SpellAbility) {
|
||||
if (((SpellAbility) activatedAbility).getCardName().equals(choose)) {
|
||||
return (SpellAbility) activatedAbility;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// default implementation by AI
|
||||
return super.chooseSpellAbilityForCast(ability, game, noMana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game) {
|
||||
// copy-paste for TestComputerXXX
|
||||
|
|
|
|||
|
|
@ -3456,12 +3456,6 @@ public class TestPlayer implements Player {
|
|||
computerPlayer.cleanUpOnMatchEnd();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpellAbility chooseSpellAbilityForCast(SpellAbility ability, Game game, boolean noMana) {
|
||||
Assert.fail("That's method must calls only from computerPlayer->cast(), see TestComputerPlayerXXX");
|
||||
return computerPlayer.chooseSpellAbilityForCast(ability, game, noMana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void skip() {
|
||||
computerPlayer.skip();
|
||||
|
|
|
|||
|
|
@ -543,11 +543,6 @@ public class PlayerStub implements Player {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpellAbility chooseSpellAbilityForCast(SpellAbility ability, Game game, boolean noMana) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean putInHand(Card card, Game game) {
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue