mirror of
https://github.com/correl/mage.git
synced 2025-01-12 19:25:44 +00:00
fixed Mythos of Snapdax text
This commit is contained in:
parent
daf96c9671
commit
bd02b7d021
1 changed files with 123 additions and 126 deletions
|
@ -1,9 +1,5 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.CompoundCondition;
|
||||
import mage.abilities.condition.Condition;
|
||||
|
@ -28,43 +24,44 @@ import mage.target.TargetPermanent;
|
|||
import mage.target.common.TargetArtifactPermanent;
|
||||
import mage.watchers.common.ManaSpentToCastWatcher;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Emigara
|
||||
*
|
||||
*/
|
||||
public class MythosOfSnapdax extends CardImpl{
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public MythosOfSnapdax(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
|
||||
|
||||
//Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead.
|
||||
this.getSpellAbility().addEffect(new MythosOfSnapdaxEffect());
|
||||
this.getSpellAbility().addWatcher(new ManaSpentToCastWatcher());
|
||||
}
|
||||
|
||||
private MythosOfSnapdax(final MythosOfSnapdax card) {
|
||||
/**
|
||||
* @author Emigara
|
||||
*/
|
||||
public class MythosOfSnapdax extends CardImpl {
|
||||
|
||||
public MythosOfSnapdax(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}{W}");
|
||||
|
||||
// Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead.
|
||||
this.getSpellAbility().addEffect(new MythosOfSnapdaxEffect());
|
||||
this.getSpellAbility().addWatcher(new ManaSpentToCastWatcher());
|
||||
}
|
||||
|
||||
private MythosOfSnapdax(final MythosOfSnapdax card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
public MythosOfSnapdax copy() {
|
||||
return new MythosOfSnapdax(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public MythosOfSnapdax copy() {
|
||||
return new MythosOfSnapdax(this);
|
||||
}
|
||||
}
|
||||
|
||||
class MythosOfSnapdaxEffect extends OneShotEffect {
|
||||
|
||||
private static final Condition condition = new CompoundCondition(
|
||||
|
||||
private static final Condition condition = new CompoundCondition(
|
||||
new ManaWasSpentCondition(ColoredManaSymbol.R),
|
||||
new ManaWasSpentCondition(ColoredManaSymbol.B)
|
||||
);
|
||||
|
||||
public MythosOfSnapdaxEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "For each player, you choose from among the permanents that player controls an artifact, a creature, an enchantment, and a planeswalker. Then each player sacrifices all other nonland permanents they control, If {B}{R} was spent to cast this spell, you choose the permanents for each player instead.";
|
||||
this.staticText = "Each player chooses an artifact, a creature, an enchantment, and a planeswalker " +
|
||||
"from among the nonland permanents they control, then sacrifices the rest. " +
|
||||
"If {B}{R} was spent to cast this spell, you choose the permanents for each player instead.";
|
||||
}
|
||||
|
||||
public MythosOfSnapdaxEffect(final MythosOfSnapdaxEffect effect) {
|
||||
|
@ -79,113 +76,113 @@ class MythosOfSnapdaxEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Set<Permanent> choosenPermanent = new HashSet<>();
|
||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||
Player player = game.getPlayer(playerId);
|
||||
if (player != null) {
|
||||
FilterArtifactPermanent filterArtifactPermanent = new FilterArtifactPermanent("an artifact of " + player.getName());
|
||||
filterArtifactPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target1 = new TargetArtifactPermanent(1, 1, filterArtifactPermanent, true);
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
Set<Permanent> choosenPermanent = new HashSet<>();
|
||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||
Player player = game.getPlayer(playerId);
|
||||
if (player != null) {
|
||||
FilterArtifactPermanent filterArtifactPermanent = new FilterArtifactPermanent("an artifact of " + player.getName());
|
||||
filterArtifactPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target1 = new TargetArtifactPermanent(1, 1, filterArtifactPermanent, true);
|
||||
|
||||
FilterCreaturePermanent filterCreaturePermanent = new FilterCreaturePermanent("a creature of " + player.getName());
|
||||
filterCreaturePermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target2 = new TargetPermanent(1, 1, filterCreaturePermanent, true);
|
||||
FilterCreaturePermanent filterCreaturePermanent = new FilterCreaturePermanent("a creature of " + player.getName());
|
||||
filterCreaturePermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target2 = new TargetPermanent(1, 1, filterCreaturePermanent, true);
|
||||
|
||||
FilterEnchantmentPermanent filterEnchantmentPermanent = new FilterEnchantmentPermanent("an enchantment of " + player.getName());
|
||||
filterEnchantmentPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target3 = new TargetPermanent(1, 1, filterEnchantmentPermanent, true);
|
||||
FilterEnchantmentPermanent filterEnchantmentPermanent = new FilterEnchantmentPermanent("an enchantment of " + player.getName());
|
||||
filterEnchantmentPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target3 = new TargetPermanent(1, 1, filterEnchantmentPermanent, true);
|
||||
|
||||
FilterPlaneswalkerPermanent filterPlaneswalkerPermanent = new FilterPlaneswalkerPermanent("a planeswalker of " + player.getName());
|
||||
filterPlaneswalkerPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target4 = new TargetPermanent(1, 1, filterPlaneswalkerPermanent, true);
|
||||
FilterPlaneswalkerPermanent filterPlaneswalkerPermanent = new FilterPlaneswalkerPermanent("a planeswalker of " + player.getName());
|
||||
filterPlaneswalkerPermanent.add(new ControllerIdPredicate(playerId));
|
||||
Target target4 = new TargetPermanent(1, 1, filterPlaneswalkerPermanent, true);
|
||||
|
||||
//if the mana condition wasn't met
|
||||
if (!condition.apply(game, source)) {
|
||||
if (target1.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target1, source, game);
|
||||
Permanent artifact = game.getPermanent(target1.getFirstTarget());
|
||||
if (artifact != null) {
|
||||
choosenPermanent.add(artifact);
|
||||
}
|
||||
target1.clearChosen();
|
||||
}
|
||||
if (target2.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target2, source, game);
|
||||
Permanent creature = game.getPermanent(target2.getFirstTarget());
|
||||
if (creature != null) {
|
||||
choosenPermanent.add(creature);
|
||||
}
|
||||
target2.clearChosen();
|
||||
}
|
||||
if (target3.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target3, source, game);
|
||||
Permanent enchantment = game.getPermanent(target3.getFirstTarget());
|
||||
if (enchantment != null) {
|
||||
choosenPermanent.add(enchantment);
|
||||
}
|
||||
target3.clearChosen();
|
||||
}
|
||||
if (target4.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target4, source, game);
|
||||
Permanent planeswalker = game.getPermanent(target4.getFirstTarget());
|
||||
if (planeswalker != null) {
|
||||
choosenPermanent.add(planeswalker);
|
||||
}
|
||||
target4.clearChosen();
|
||||
}
|
||||
//if the mana condition was met
|
||||
}else {
|
||||
if (target1.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target1, source, game);
|
||||
Permanent artifact = game.getPermanent(target1.getFirstTarget());
|
||||
if (artifact != null) {
|
||||
choosenPermanent.add(artifact);
|
||||
}
|
||||
target1.clearChosen();
|
||||
}
|
||||
if (target2.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target2, source, game);
|
||||
Permanent creature = game.getPermanent(target2.getFirstTarget());
|
||||
if (creature != null) {
|
||||
choosenPermanent.add(creature);
|
||||
}
|
||||
target2.clearChosen();
|
||||
}
|
||||
if (target3.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target3, source, game);
|
||||
Permanent enchantment = game.getPermanent(target3.getFirstTarget());
|
||||
if (enchantment != null) {
|
||||
choosenPermanent.add(enchantment);
|
||||
}
|
||||
target3.clearChosen();
|
||||
}
|
||||
if (target4.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target4, source, game);
|
||||
Permanent planeswalker = game.getPermanent(target4.getFirstTarget());
|
||||
if (planeswalker != null) {
|
||||
choosenPermanent.add(planeswalker);
|
||||
}
|
||||
target4.clearChosen();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Then each player sacrifices all other nonland permanents they control
|
||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||
Player player = game.getPlayer(playerId);
|
||||
if (player != null) {
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENTS_NON_LAND, playerId, game)) {
|
||||
if (!choosenPermanent.contains(permanent)) {
|
||||
permanent.sacrifice(playerId, game);
|
||||
//if the mana condition wasn't met
|
||||
if (!condition.apply(game, source)) {
|
||||
if (target1.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target1, source, game);
|
||||
Permanent artifact = game.getPermanent(target1.getFirstTarget());
|
||||
if (artifact != null) {
|
||||
choosenPermanent.add(artifact);
|
||||
}
|
||||
target1.clearChosen();
|
||||
}
|
||||
if (target2.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target2, source, game);
|
||||
Permanent creature = game.getPermanent(target2.getFirstTarget());
|
||||
if (creature != null) {
|
||||
choosenPermanent.add(creature);
|
||||
}
|
||||
target2.clearChosen();
|
||||
}
|
||||
if (target3.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target3, source, game);
|
||||
Permanent enchantment = game.getPermanent(target3.getFirstTarget());
|
||||
if (enchantment != null) {
|
||||
choosenPermanent.add(enchantment);
|
||||
}
|
||||
target3.clearChosen();
|
||||
}
|
||||
if (target4.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
controller.chooseTarget(Outcome.Benefit, target4, source, game);
|
||||
Permanent planeswalker = game.getPermanent(target4.getFirstTarget());
|
||||
if (planeswalker != null) {
|
||||
choosenPermanent.add(planeswalker);
|
||||
}
|
||||
target4.clearChosen();
|
||||
}
|
||||
//if the mana condition was met
|
||||
} else {
|
||||
if (target1.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target1, source, game);
|
||||
Permanent artifact = game.getPermanent(target1.getFirstTarget());
|
||||
if (artifact != null) {
|
||||
choosenPermanent.add(artifact);
|
||||
}
|
||||
target1.clearChosen();
|
||||
}
|
||||
if (target2.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target2, source, game);
|
||||
Permanent creature = game.getPermanent(target2.getFirstTarget());
|
||||
if (creature != null) {
|
||||
choosenPermanent.add(creature);
|
||||
}
|
||||
target2.clearChosen();
|
||||
}
|
||||
if (target3.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target3, source, game);
|
||||
Permanent enchantment = game.getPermanent(target3.getFirstTarget());
|
||||
if (enchantment != null) {
|
||||
choosenPermanent.add(enchantment);
|
||||
}
|
||||
target3.clearChosen();
|
||||
}
|
||||
if (target4.canChoose(source.getSourceId(), controller.getId(), game)) {
|
||||
player.chooseTarget(Outcome.Benefit, target4, source, game);
|
||||
Permanent planeswalker = game.getPermanent(target4.getFirstTarget());
|
||||
if (planeswalker != null) {
|
||||
choosenPermanent.add(planeswalker);
|
||||
}
|
||||
target4.clearChosen();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Then each player sacrifices all other nonland permanents they control
|
||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||
Player player = game.getPlayer(playerId);
|
||||
if (player != null) {
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENTS_NON_LAND, playerId, game)) {
|
||||
if (!choosenPermanent.contains(permanent)) {
|
||||
permanent.sacrifice(playerId, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue