mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
Merge branch 'master' of https://github.com/magefree/mage
This commit is contained in:
commit
55d9809b6c
2045 changed files with 2324 additions and 2300 deletions
|
|
@ -428,7 +428,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
* @return
|
||||
*/
|
||||
protected Integer addActionsTimed() {
|
||||
FutureTask<Integer> task = new FutureTask<Integer>(new Callable<Integer>() {
|
||||
FutureTask<Integer> task = new FutureTask<>(new Callable<Integer>() {
|
||||
@Override
|
||||
public Integer call() throws Exception {
|
||||
return addActions(root, maxDepth, Integer.MIN_VALUE, Integer.MAX_VALUE);
|
||||
|
|
@ -528,6 +528,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
break;
|
||||
}
|
||||
Game sim = game.copy();
|
||||
sim.setSimulation(true);
|
||||
if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) {
|
||||
sim.applyEffects();
|
||||
if (checkForRepeatedAction(sim, node, action, currentPlayer.getId())) {
|
||||
|
|
@ -867,7 +868,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
}
|
||||
|
||||
private List<Permanent> filterOutNonblocking(Game game, List<Permanent> attackers, List<Permanent> blockers) {
|
||||
List<Permanent> blockersLeft = new ArrayList<Permanent>();
|
||||
List<Permanent> blockersLeft = new ArrayList<>();
|
||||
for (Permanent blocker : blockers) {
|
||||
for (Permanent attacker : attackers) {
|
||||
if (blocker.canBlock(attacker.getId(), game)) {
|
||||
|
|
@ -880,7 +881,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
}
|
||||
|
||||
private List<Permanent> filterOutUnblockable(Game game, List<Permanent> attackers, List<Permanent> blockers) {
|
||||
List<Permanent> attackersLeft = new ArrayList<Permanent>();
|
||||
List<Permanent> attackersLeft = new ArrayList<>();
|
||||
for (Permanent attacker : attackers) {
|
||||
if (CombatUtil.canBeBlocked(game, attacker, blockers)) {
|
||||
attackersLeft.add(attacker);
|
||||
|
|
@ -895,7 +896,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
return null;
|
||||
}
|
||||
|
||||
List<Permanent> attackers = new ArrayList<Permanent>();
|
||||
List<Permanent> attackers = new ArrayList<>();
|
||||
for (UUID attackerId : attackersUUID) {
|
||||
Permanent permanent = game.getPermanent(attackerId);
|
||||
attackers.add(permanent);
|
||||
|
|
@ -1291,6 +1292,7 @@ public class ComputerPlayer6 extends ComputerPlayer<ComputerPlayer6> implements
|
|||
*/
|
||||
protected Game createSimulation(Game game) {
|
||||
Game sim = game.copy();
|
||||
sim.setSimulation(true);
|
||||
for (Player copyPlayer : sim.getState().getPlayers().values()) {
|
||||
Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy();
|
||||
if (!suggested.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -28,13 +28,20 @@
|
|||
|
||||
package mage.player.ai;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbility;
|
||||
import mage.abilities.common.PassAbility;
|
||||
import mage.abilities.costs.mana.ManaCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.costs.mana.VariableManaCost;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.cards.Card;
|
||||
|
|
@ -48,7 +55,6 @@ import mage.players.Player;
|
|||
import mage.target.Target;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
|
|
@ -56,12 +62,12 @@ import org.apache.log4j.Logger;
|
|||
public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
||||
|
||||
private static final transient Logger logger = Logger.getLogger(SimulatedPlayer2.class);
|
||||
private boolean isSimulatedPlayer;
|
||||
private final boolean isSimulatedPlayer;
|
||||
private transient ConcurrentLinkedQueue<Ability> allActions;
|
||||
private boolean forced;
|
||||
private static PassAbility pass = new PassAbility();
|
||||
|
||||
private List<String> suggested;
|
||||
private final List<String> suggested;
|
||||
|
||||
public SimulatedPlayer2(UUID id, boolean isSimulatedPlayer, List<String> suggested) {
|
||||
super(id);
|
||||
|
|
@ -73,7 +79,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
public SimulatedPlayer2(final SimulatedPlayer2 player) {
|
||||
super(player);
|
||||
this.isSimulatedPlayer = player.isSimulatedPlayer;
|
||||
this.suggested = new ArrayList<String>();
|
||||
this.suggested = new ArrayList<>();
|
||||
for (String s : player.suggested) {
|
||||
this.suggested.add(s);
|
||||
}
|
||||
|
|
@ -86,13 +92,13 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
}
|
||||
|
||||
public List<Ability> simulatePriority(Game game) {
|
||||
allActions = new ConcurrentLinkedQueue<Ability>();
|
||||
allActions = new ConcurrentLinkedQueue<>();
|
||||
Game sim = game.copy();
|
||||
|
||||
sim.setSimulation(true);
|
||||
forced = false;
|
||||
simulateOptions(sim);
|
||||
|
||||
ArrayList<Ability> list = new ArrayList<Ability>(allActions);
|
||||
ArrayList<Ability> list = new ArrayList<>(allActions);
|
||||
Collections.reverse(list);
|
||||
|
||||
if (!forced) {
|
||||
|
|
@ -170,7 +176,9 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
// add the specific value for x
|
||||
newAbility.getManaCostsToPay().add(new ManaCostsImpl(new StringBuilder("{").append(xAmount).append("}").toString()));
|
||||
newAbility.getManaCostsToPay().setX(xAmount);
|
||||
varCost.setPaid();
|
||||
if (varCost != null) {
|
||||
varCost.setPaid();
|
||||
}
|
||||
card.adjustTargets(newAbility, game);
|
||||
// add the different possible target option for the specific X value
|
||||
if (newAbility.getTargets().getUnchosen().size() > 0) {
|
||||
|
|
@ -211,7 +219,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
if (suggested == null || suggested.isEmpty()) {
|
||||
return playables;
|
||||
}
|
||||
List<Ability> filtered = new ArrayList<Ability>();
|
||||
List<Ability> filtered = new ArrayList<>();
|
||||
for (Ability ability : playables) {
|
||||
Card card = game.getCard(ability.getSourceId());
|
||||
for (String s : suggested) {
|
||||
|
|
@ -235,7 +243,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
if (suggested == null || suggested.isEmpty()) {
|
||||
return options;
|
||||
}
|
||||
List<Ability> filtered = new ArrayList<Ability>();
|
||||
List<Ability> filtered = new ArrayList<>();
|
||||
for (Ability option : options) {
|
||||
if (option.getTargets().size() > 0 && option.getTargets().get(0).getMaxNumberOfTargets() == 1) {
|
||||
Card card = game.getCard(ability.getSourceId());
|
||||
|
|
@ -245,15 +253,15 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
if (groups.length == 2) {
|
||||
if (groups[0].equals(card.getName()) && groups[1].startsWith("name=")) {
|
||||
// extract target and compare to suggested
|
||||
String name = groups[1].split("=")[1];
|
||||
String targetName = groups[1].split("=")[1];
|
||||
Player player = game.getPlayer(option.getFirstTarget());
|
||||
if (player != null && name.equals(player.getName())) {
|
||||
if (player != null && targetName.equals(player.getName())) {
|
||||
System.out.println("matched(option): " + s);
|
||||
filtered.add(option);
|
||||
return filtered;
|
||||
} else {
|
||||
Card target = game.getCard(option.getFirstTarget());
|
||||
if (target != null && target.getName().equals(name)) {
|
||||
if (target != null && target.getName().equals(targetName)) {
|
||||
System.out.println("matched(option): " + s);
|
||||
filtered.add(option);
|
||||
return filtered;
|
||||
|
|
@ -323,7 +331,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
}
|
||||
|
||||
public List<Combat> addAttackers(Game game) {
|
||||
Map<Integer, Combat> engagements = new HashMap<Integer, Combat>();
|
||||
Map<Integer, Combat> engagements = new HashMap<>();
|
||||
//useful only for two player games - will only attack first opponent
|
||||
UUID defenderId = game.getOpponents(playerId).iterator().next();
|
||||
List<Permanent> attackersList = super.getAvailableAttackers(game);
|
||||
|
|
@ -338,8 +346,9 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
binary.insert(0, "0");
|
||||
}
|
||||
for (int j = 0; j < attackersList.size(); j++) {
|
||||
if (binary.charAt(j) == '1')
|
||||
if (binary.charAt(j) == '1') {
|
||||
sim.getCombat().declareAttacker(attackersList.get(j).getId(), defenderId, sim);
|
||||
}
|
||||
}
|
||||
if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) {
|
||||
logger.debug("simulating -- found redundant attack combination");
|
||||
|
|
@ -348,7 +357,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
logger.debug("simulating -- attack:" + sim.getCombat().getGroups().size());
|
||||
}
|
||||
}
|
||||
List list = new ArrayList<Combat>(engagements.values());
|
||||
List list = new ArrayList<>(engagements.values());
|
||||
Collections.sort(list, new Comparator<Combat>() {
|
||||
@Override
|
||||
public int compare(Combat o1, Combat o2) {
|
||||
|
|
@ -359,9 +368,11 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
}
|
||||
|
||||
public List<Combat> addBlockers(Game game) {
|
||||
Map<Integer, Combat> engagements = new HashMap<Integer, Combat>();
|
||||
Map<Integer, Combat> engagements = new HashMap<>();
|
||||
int numGroups = game.getCombat().getGroups().size();
|
||||
if (numGroups == 0) return new ArrayList<Combat>();
|
||||
if (numGroups == 0) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
//add a node with no blockers
|
||||
Game sim = game.copy();
|
||||
|
|
@ -371,12 +382,13 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
List<Permanent> blockers = getAvailableBlockers(game);
|
||||
addBlocker(game, blockers, engagements);
|
||||
|
||||
return new ArrayList<Combat>(engagements.values());
|
||||
return new ArrayList<>(engagements.values());
|
||||
}
|
||||
|
||||
protected void addBlocker(Game game, List<Permanent> blockers, Map<Integer, Combat> engagements) {
|
||||
if (blockers.isEmpty())
|
||||
if (blockers.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
int numGroups = game.getCombat().getGroups().size();
|
||||
//try to block each attacker with each potential blocker
|
||||
Permanent blocker = blockers.get(0);
|
||||
|
|
@ -386,8 +398,9 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
if (game.getCombat().getGroups().get(i).canBlock(blocker, game)) {
|
||||
Game sim = game.copy();
|
||||
sim.getCombat().getGroups().get(i).addBlocker(blocker.getId(), playerId, sim);
|
||||
if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null)
|
||||
if (engagements.put(sim.getCombat().getValue().hashCode(), sim.getCombat()) != null) {
|
||||
logger.debug("simulating -- found redundant block combination");
|
||||
}
|
||||
addBlocker(sim, remaining, engagements); // and recurse minus the used blocker
|
||||
}
|
||||
}
|
||||
|
|
@ -408,7 +421,9 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> {
|
|||
else {
|
||||
SimulationNode2 parent = (SimulationNode2) game.getCustomData();
|
||||
int depth = parent.getDepth() - 1;
|
||||
if (depth == 0) return true;
|
||||
if (depth == 0) {
|
||||
return true;
|
||||
}
|
||||
logger.debug("simulating -- triggered ability - adding children:" + options.size());
|
||||
for (Ability option: options) {
|
||||
addAbilityNode(parent, option, depth, game);
|
||||
|
|
|
|||
|
|
@ -70,19 +70,21 @@ public class ChatSession {
|
|||
String userName = clients.get(userId);
|
||||
logger.debug(userName + " leaves chat: " + chatId);
|
||||
clients.remove(userId);
|
||||
String message;
|
||||
String message = null;
|
||||
switch (reason) {
|
||||
case Disconnected:
|
||||
message = " has left MAGE";
|
||||
message = " has left XMage";
|
||||
break;
|
||||
case LostConnection:
|
||||
message = " has lost connection";
|
||||
break;
|
||||
default:
|
||||
message = " has left chat";
|
||||
logger.debug(userName + " left chat with reason: " + reason.name() + " " + chatId);
|
||||
}
|
||||
if (message != null) {
|
||||
broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS);
|
||||
logger.debug(userName + " left chat with reason: " + message + " " + chatId);
|
||||
}
|
||||
broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS);
|
||||
logger.debug(userName + "left chat with reason " + message + " " + chatId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ public class UserManager {
|
|||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
logger.debug("checkExpired - start");
|
||||
Calendar expired = Calendar.getInstance();
|
||||
expired.add(Calendar.MINUTE, -3);
|
||||
List<User> usersToCheck = new ArrayList<>();
|
||||
|
|
@ -169,6 +170,7 @@ public class UserManager {
|
|||
users.remove(user.getId());
|
||||
}
|
||||
}
|
||||
logger.debug("checkExpired - end");
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class AgelessEntity extends CardImpl<AgelessEntity> {
|
|||
}
|
||||
}
|
||||
|
||||
class AgelessEntityEffect extends OneShotEffect<AgelessEntityEffect> {
|
||||
class AgelessEntityEffect extends OneShotEffect {
|
||||
|
||||
public AgelessEntityEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class ArchitectsOfWill extends CardImpl<ArchitectsOfWill> {
|
|||
}
|
||||
}
|
||||
|
||||
class ArchitectsOfWillEffect extends OneShotEffect<ArchitectsOfWillEffect> {
|
||||
class ArchitectsOfWillEffect extends OneShotEffect {
|
||||
|
||||
public ArchitectsOfWillEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class ArsenalThresher extends CardImpl<ArsenalThresher> {
|
|||
}
|
||||
}
|
||||
|
||||
class ArsenalThresherEffect extends OneShotEffect<ArsenalThresherEffect> {
|
||||
class ArsenalThresherEffect extends OneShotEffect {
|
||||
|
||||
public ArsenalThresherEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public class AvenMimeomancer extends CardImpl<AvenMimeomancer> {
|
|||
}
|
||||
}
|
||||
|
||||
class AvenEffect extends ContinuousEffectImpl<AvenEffect> {
|
||||
class AvenEffect extends ContinuousEffectImpl {
|
||||
|
||||
public AvenEffect() {
|
||||
super(Duration.Custom, Layer.PTChangingEffects_7, SubLayer.SetPT_7b, Outcome.BoostCreature);
|
||||
|
|
@ -126,7 +126,7 @@ class AvenEffect extends ContinuousEffectImpl<AvenEffect> {
|
|||
}
|
||||
}
|
||||
|
||||
class AvenEffect2 extends ContinuousEffectImpl<AvenEffect2> {
|
||||
class AvenEffect2 extends ContinuousEffectImpl {
|
||||
|
||||
public AvenEffect2() {
|
||||
super(Duration.Custom, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class BlitzHellion extends CardImpl<BlitzHellion> {
|
|||
}
|
||||
}
|
||||
|
||||
class ShuffleSourceEffect extends OneShotEffect<ShuffleSourceEffect> {
|
||||
class ShuffleSourceEffect extends OneShotEffect {
|
||||
|
||||
ShuffleSourceEffect() {
|
||||
super(Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public class ClovenCasting extends CardImpl<ClovenCasting> {
|
|||
}
|
||||
}
|
||||
|
||||
class ClovenCastingEffect extends OneShotEffect<ClovenCastingEffect> {
|
||||
class ClovenCastingEffect extends OneShotEffect {
|
||||
|
||||
public ClovenCastingEffect() {
|
||||
super(Outcome.Copy);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class DefilerOfSouls extends CardImpl<DefilerOfSouls> {
|
|||
}
|
||||
}
|
||||
|
||||
class DefilerOfSoulsEffect extends OneShotEffect<DefilerOfSoulsEffect> {
|
||||
class DefilerOfSoulsEffect extends OneShotEffect {
|
||||
|
||||
DefilerOfSoulsEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class DragonAppeasement extends CardImpl<DragonAppeasement> {
|
|||
}
|
||||
}
|
||||
|
||||
class SkipYourDrawStepEffect extends ReplacementEffectImpl<SkipYourDrawStepEffect> {
|
||||
class SkipYourDrawStepEffect extends ReplacementEffectImpl {
|
||||
|
||||
public SkipYourDrawStepEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class DrasticRevelation extends CardImpl<DrasticRevelation> {
|
|||
}
|
||||
}
|
||||
|
||||
class DrasticRevelationEffect extends OneShotEffect<DrasticRevelationEffect> {
|
||||
class DrasticRevelationEffect extends OneShotEffect {
|
||||
|
||||
DrasticRevelationEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ public class EnigmaSphinx extends CardImpl<EnigmaSphinx> {
|
|||
}
|
||||
}
|
||||
|
||||
class EnigmaSphinxEffect extends OneShotEffect<EnigmaSphinxEffect> {
|
||||
class EnigmaSphinxEffect extends OneShotEffect {
|
||||
|
||||
public EnigmaSphinxEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class EtherwroughtPage extends CardImpl<EtherwroughtPage> {
|
|||
}
|
||||
}
|
||||
|
||||
class EtherwroughtPageEffect extends OneShotEffect<EtherwroughtPageEffect> {
|
||||
class EtherwroughtPageEffect extends OneShotEffect {
|
||||
|
||||
public EtherwroughtPageEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class FiligreeAngel extends CardImpl<FiligreeAngel> {
|
|||
}
|
||||
}
|
||||
|
||||
class FiligreeAngelEffect extends OneShotEffect<FiligreeAngelEffect> {
|
||||
class FiligreeAngelEffect extends OneShotEffect {
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ class FinestHourAbility extends TriggeredAbilityImpl {
|
|||
|
||||
}
|
||||
|
||||
class FinestHourEffect extends OneShotEffect<FinestHourEffect> {
|
||||
class FinestHourEffect extends OneShotEffect {
|
||||
|
||||
public FinestHourEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class IdentityCrisis extends CardImpl<IdentityCrisis> {
|
|||
|
||||
}
|
||||
|
||||
class IdentityCrisisEffect extends OneShotEffect<IdentityCrisisEffect> {
|
||||
class IdentityCrisisEffect extends OneShotEffect {
|
||||
IdentityCrisisEffect() {
|
||||
super(Outcome.Exile);
|
||||
staticText = "Exile all cards from target player's hand and graveyard";
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public class KarrthusTyrantOfJund extends CardImpl<KarrthusTyrantOfJund> {
|
|||
}
|
||||
}
|
||||
|
||||
class KarrthusEffect extends OneShotEffect<KarrthusEffect> {
|
||||
class KarrthusEffect extends OneShotEffect {
|
||||
|
||||
public KarrthusEffect() {
|
||||
super(Outcome.GainControl);
|
||||
|
|
@ -137,7 +137,7 @@ class KarrthusEffect extends OneShotEffect<KarrthusEffect> {
|
|||
}
|
||||
}
|
||||
|
||||
class KarrthusControlEffect extends ContinuousEffectImpl<KarrthusControlEffect> {
|
||||
class KarrthusControlEffect extends ContinuousEffectImpl {
|
||||
|
||||
private UUID controllerId;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class KnightOfNewAlara extends CardImpl<KnightOfNewAlara> {
|
|||
}
|
||||
}
|
||||
|
||||
class KnightOfNewAlaraEffect extends ContinuousEffectImpl<KnightOfNewAlaraEffect> {
|
||||
class KnightOfNewAlaraEffect extends ContinuousEffectImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class Lavalanche extends CardImpl<Lavalanche> {
|
|||
}
|
||||
}
|
||||
|
||||
class LavalancheEffect extends OneShotEffect<LavalancheEffect> {
|
||||
class LavalancheEffect extends OneShotEffect {
|
||||
|
||||
private DynamicValue amount;
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public class LightningReaver extends CardImpl<LightningReaver> {
|
|||
}
|
||||
}
|
||||
|
||||
class DamageOpponentsEffect extends OneShotEffect<DamageOpponentsEffect> {
|
||||
class DamageOpponentsEffect extends OneShotEffect {
|
||||
|
||||
public DamageOpponentsEffect() {
|
||||
super(Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ class FirstSpellCastThisTurnWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
|
||||
class CascadeEffect extends OneShotEffect<CascadeEffect> {
|
||||
class CascadeEffect extends OneShotEffect {
|
||||
|
||||
public CascadeEffect() {
|
||||
super(Outcome.PutCardInPlay);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public class MageSlayer extends CardImpl<MageSlayer> {
|
|||
}
|
||||
}
|
||||
|
||||
class MageSlayerEffect extends OneShotEffect<MageSlayerEffect> {
|
||||
class MageSlayerEffect extends OneShotEffect {
|
||||
|
||||
public MageSlayerEffect() {
|
||||
super(Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class MayaelsAria extends CardImpl<MayaelsAria> {
|
|||
}
|
||||
}
|
||||
|
||||
class MayaelsAriaEffect extends OneShotEffect<MayaelsAriaEffect> {
|
||||
class MayaelsAriaEffect extends OneShotEffect {
|
||||
|
||||
public MayaelsAriaEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public class MeddlingMage extends CardImpl<MeddlingMage> {
|
|||
}
|
||||
}
|
||||
|
||||
class MeddlingMageChooseCardEffect extends OneShotEffect<MeddlingMageChooseCardEffect> {
|
||||
class MeddlingMageChooseCardEffect extends OneShotEffect {
|
||||
|
||||
public MeddlingMageChooseCardEffect() {
|
||||
super(Outcome.Detriment);
|
||||
|
|
@ -120,7 +120,7 @@ class MeddlingMageChooseCardEffect extends OneShotEffect<MeddlingMageChooseCardE
|
|||
|
||||
}
|
||||
|
||||
class MeddlingMageReplacementEffect extends ReplacementEffectImpl<MeddlingMageReplacementEffect> {
|
||||
class MeddlingMageReplacementEffect extends ReplacementEffectImpl {
|
||||
|
||||
public MeddlingMageReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Detriment);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class MindFuneral extends CardImpl<MindFuneral> {
|
|||
}
|
||||
}
|
||||
|
||||
class MindFuneralEffect extends OneShotEffect<MindFuneralEffect> {
|
||||
class MindFuneralEffect extends OneShotEffect {
|
||||
|
||||
public MindFuneralEffect() {
|
||||
super(Outcome.Detriment);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class MorbidBloom extends CardImpl<MorbidBloom> {
|
|||
}
|
||||
}
|
||||
|
||||
class MorbidBloomEffect extends OneShotEffect<MorbidBloomEffect> {
|
||||
class MorbidBloomEffect extends OneShotEffect {
|
||||
|
||||
public MorbidBloomEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public class NecromancersCovenant extends CardImpl<NecromancersCovenant> {
|
|||
}
|
||||
}
|
||||
|
||||
class NecromancersConvenantEffect extends OneShotEffect<NecromancersConvenantEffect> {
|
||||
class NecromancersConvenantEffect extends OneShotEffect {
|
||||
|
||||
public NecromancersConvenantEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class RetaliatorGriffinTriggeredAbility extends TriggeredAbilityImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class RetaliatorGriffinEffect extends OneShotEffect<RetaliatorGriffinEffect> {
|
||||
class RetaliatorGriffinEffect extends OneShotEffect {
|
||||
|
||||
public RetaliatorGriffinEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public class SagesOfTheAnima extends CardImpl<SagesOfTheAnima> {
|
|||
}
|
||||
}
|
||||
|
||||
class SagesOfTheAnimaReplacementEffect extends ReplacementEffectImpl<SagesOfTheAnimaReplacementEffect> {
|
||||
class SagesOfTheAnimaReplacementEffect extends ReplacementEffectImpl {
|
||||
|
||||
public SagesOfTheAnimaReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class SingeMindOgre extends CardImpl<SingeMindOgre> {
|
|||
}
|
||||
}
|
||||
|
||||
class SingeMindOgreEffect extends OneShotEffect<SingeMindOgreEffect> {
|
||||
class SingeMindOgreEffect extends OneShotEffect {
|
||||
|
||||
public SingeMindOgreEffect() {
|
||||
super(Outcome.LoseLife);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class SlaveOfBolas extends CardImpl<SlaveOfBolas> {
|
|||
}
|
||||
}
|
||||
|
||||
class SlaveOfBolasEffect extends OneShotEffect<SlaveOfBolasEffect> {
|
||||
class SlaveOfBolasEffect extends OneShotEffect {
|
||||
|
||||
public SlaveOfBolasEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class Soulquake extends CardImpl<Soulquake> {
|
|||
}
|
||||
}
|
||||
|
||||
class SoulquakeEffect extends OneShotEffect<SoulquakeEffect> {
|
||||
class SoulquakeEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature");
|
||||
private static final FilterCreatureCard filter2 = new FilterCreatureCard("creature");
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class CreatureControlledAttacksAloneTriggeredAbility extends TriggeredAbilityImp
|
|||
}
|
||||
}
|
||||
|
||||
class SovereignsOfLostAlaraEffect extends OneShotEffect<SovereignsOfLostAlaraEffect> {
|
||||
class SovereignsOfLostAlaraEffect extends OneShotEffect {
|
||||
|
||||
public SovereignsOfLostAlaraEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class SpellboundDragon extends CardImpl<SpellboundDragon> {
|
|||
}
|
||||
}
|
||||
|
||||
class SpellboundDragonEffect extends OneShotEffect<SpellboundDragonEffect> {
|
||||
class SpellboundDragonEffect extends OneShotEffect {
|
||||
|
||||
public SpellboundDragonEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ThoughtHemorrhage extends CardImpl<ThoughtHemorrhage> {
|
|||
}
|
||||
}
|
||||
|
||||
class ThoughtHemorrhageEffect extends OneShotEffect<ThoughtHemorrhageEffect> {
|
||||
class ThoughtHemorrhageEffect extends OneShotEffect {
|
||||
|
||||
String cardName;
|
||||
final String rule = "Name a nonland card. Target player reveals his or her hand. Thought Hemorrhage deals 3 damage to that player for each card with that name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles his or her library";
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class UnbenderTine extends CardImpl<UnbenderTine> {
|
|||
}
|
||||
}
|
||||
|
||||
class UnbenderTineEffect extends OneShotEffect<UnbenderTineEffect> {
|
||||
class UnbenderTineEffect extends OneShotEffect {
|
||||
|
||||
public UnbenderTineEffect() {
|
||||
super(Outcome.Untap);
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ class UnscytheKillerOfKingsTriggeredAbility extends TriggeredAbilityImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class UnscytheEffect extends OneShotEffect<UnscytheEffect> {
|
||||
class UnscytheEffect extends OneShotEffect {
|
||||
|
||||
public UnscytheEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public class VectisDominator extends CardImpl<VectisDominator> {
|
|||
}
|
||||
}
|
||||
|
||||
class VectisDominatorEffect extends OneShotEffect<VectisDominatorEffect> {
|
||||
class VectisDominatorEffect extends OneShotEffect {
|
||||
|
||||
protected Cost cost;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class VengefulRebirth extends CardImpl<VengefulRebirth> {
|
|||
|
||||
}
|
||||
|
||||
class VengefulRebirthEffect extends OneShotEffect<VengefulRebirthEffect> {
|
||||
class VengefulRebirthEffect extends OneShotEffect {
|
||||
|
||||
public VengefulRebirthEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public class Wargate extends CardImpl<Wargate> {
|
|||
}
|
||||
|
||||
|
||||
class WargateEffect extends OneShotEffect<WargateEffect> {
|
||||
class WargateEffect extends OneShotEffect {
|
||||
WargateEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
staticText = "Search your library for a permanent card with converted mana cost X or less, put it onto the battlefield, then shuffle your library";
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class Browse extends CardImpl<Browse> {
|
|||
}
|
||||
}
|
||||
|
||||
class BrowseEffect extends OneShotEffect<BrowseEffect> {
|
||||
class BrowseEffect extends OneShotEffect {
|
||||
|
||||
public BrowseEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class Contagion extends CardImpl<Contagion> {
|
|||
}
|
||||
}
|
||||
|
||||
class DistributeCountersEffect extends OneShotEffect<DistributeCountersEffect> {
|
||||
class DistributeCountersEffect extends OneShotEffect {
|
||||
|
||||
|
||||
public DistributeCountersEffect() {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ public class DiminishingReturns extends CardImpl<DiminishingReturns> {
|
|||
}
|
||||
}
|
||||
|
||||
class DiminishingReturnsEffect extends OneShotEffect<DiminishingReturnsEffect> {
|
||||
class DiminishingReturnsEffect extends OneShotEffect {
|
||||
|
||||
public DiminishingReturnsEffect() {
|
||||
super(Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public class Exile extends CardImpl<Exile> {
|
|||
}
|
||||
}
|
||||
|
||||
class ExileEffect extends OneShotEffect<ExileEffect> {
|
||||
class ExileEffect extends OneShotEffect {
|
||||
|
||||
public ExileEffect() {
|
||||
super(Outcome.GainLife);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class HelmOfObedience extends CardImpl<HelmOfObedience> {
|
|||
}
|
||||
|
||||
|
||||
class HelmOfObedienceEffect extends OneShotEffect<HelmOfObedienceEffect> {
|
||||
class HelmOfObedienceEffect extends OneShotEffect {
|
||||
|
||||
|
||||
private static final ManacostVariableValue amount = new ManacostVariableValue();
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ public class SoldeviSage extends CardImpl<SoldeviSage> {
|
|||
}
|
||||
}
|
||||
|
||||
class SoldeviSageEffect extends OneShotEffect<SoldeviSageEffect> {
|
||||
class SoldeviSageEffect extends OneShotEffect {
|
||||
|
||||
public SoldeviSageEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class SoldierOfFortune extends CardImpl<SoldierOfFortune> {
|
|||
}
|
||||
}
|
||||
|
||||
class SoldierOfFortuneEffect extends OneShotEffect<SoldierOfFortuneEffect> {
|
||||
class SoldierOfFortuneEffect extends OneShotEffect {
|
||||
|
||||
public SoldierOfFortuneEffect() {
|
||||
super(Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class SustainingSpirit extends CardImpl<SustainingSpirit> {
|
|||
}
|
||||
}
|
||||
|
||||
class SustainingSpiritReplacementEffect extends ReplacementEffectImpl<SustainingSpiritReplacementEffect> {
|
||||
class SustainingSpiritReplacementEffect extends ReplacementEffectImpl {
|
||||
|
||||
public SustainingSpiritReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ConsumeStrength extends CardImpl<ConsumeStrength> {
|
|||
}
|
||||
}
|
||||
|
||||
class ConsumeStrengthEffect extends ContinuousEffectImpl<ConsumeStrengthEffect> {
|
||||
class ConsumeStrengthEffect extends ContinuousEffectImpl {
|
||||
|
||||
public ConsumeStrengthEffect() {
|
||||
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class DesolationAngel extends CardImpl<DesolationAngel> {
|
|||
}
|
||||
}
|
||||
|
||||
class DesolationAngelEntersBattlefieldEffect extends OneShotEffect<DesolationAngelEntersBattlefieldEffect> {
|
||||
class DesolationAngelEntersBattlefieldEffect extends OneShotEffect {
|
||||
DesolationAngelEntersBattlefieldEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
staticText = "destroy all lands you control. If it was kicked, destroy all lands instead";
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class GoblinRingleader extends CardImpl<GoblinRingleader> {
|
|||
}
|
||||
}
|
||||
|
||||
class GoblinRingleaderEffect extends OneShotEffect<GoblinRingleaderEffect> {
|
||||
class GoblinRingleaderEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("Goblin");
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class LegacyWeapon extends CardImpl<LegacyWeapon> {
|
|||
}
|
||||
}
|
||||
|
||||
class LegacyWeaponEffect extends OneShotEffect<LegacyWeaponEffect> {
|
||||
class LegacyWeaponEffect extends OneShotEffect {
|
||||
|
||||
public LegacyWeaponEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ class LifeLandToken extends Token {
|
|||
|
||||
}
|
||||
|
||||
class DeathEffect extends OneShotEffect<DeathEffect> {
|
||||
class DeathEffect extends OneShotEffect {
|
||||
|
||||
public DeathEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class NightDay extends SplitCard<NightDay> {
|
|||
}
|
||||
}
|
||||
|
||||
class DayEffect extends ContinuousEffectImpl<DayEffect> {
|
||||
class DayEffect extends ContinuousEffectImpl {
|
||||
|
||||
public DayEffect() {
|
||||
super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ public class OrimsThunder extends CardImpl<OrimsThunder> {
|
|||
}
|
||||
}
|
||||
|
||||
class OrimsThunderEffect2 extends OneShotEffect<OrimsThunderEffect2> {
|
||||
class OrimsThunderEffect2 extends OneShotEffect {
|
||||
|
||||
OrimsThunderEffect2() {
|
||||
super(Outcome.Damage);
|
||||
|
|
@ -133,7 +133,7 @@ class OrimsThunderEffect2 extends OneShotEffect<OrimsThunderEffect2> {
|
|||
}
|
||||
}
|
||||
|
||||
class OrimsThunderEffect extends OneShotEffect<OrimsThunderEffect> {
|
||||
class OrimsThunderEffect extends OneShotEffect {
|
||||
|
||||
OrimsThunderEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public class Spiritmonger extends CardImpl<Spiritmonger> {
|
|||
}
|
||||
}
|
||||
|
||||
class SpiritmongerChangeColorEffect extends OneShotEffect<SpiritmongerChangeColorEffect> {
|
||||
class SpiritmongerChangeColorEffect extends OneShotEffect {
|
||||
|
||||
public SpiritmongerChangeColorEffect() {
|
||||
super(Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class SylvanMessenger extends CardImpl<SylvanMessenger> {
|
|||
}
|
||||
}
|
||||
|
||||
class SylvanMessengerEffect extends OneShotEffect<SylvanMessengerEffect> {
|
||||
class SylvanMessengerEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("Elf");
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class TranquilPath extends CardImpl<TranquilPath> {
|
|||
}
|
||||
}
|
||||
|
||||
class TranquilPathEffect extends OneShotEffect<TranquilPathEffect> {
|
||||
class TranquilPathEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("");
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class WhirlpoolRider extends CardImpl<WhirlpoolRider> {
|
|||
}
|
||||
}
|
||||
|
||||
class WhirlpoolRiderTriggeredEffect extends OneShotEffect<WhirlpoolRiderTriggeredEffect> {
|
||||
class WhirlpoolRiderTriggeredEffect extends OneShotEffect {
|
||||
|
||||
public WhirlpoolRiderTriggeredEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class AliFromCairo extends CardImpl<AliFromCairo> {
|
|||
}
|
||||
}
|
||||
|
||||
class AliFromCairoReplacementEffect extends ReplacementEffectImpl<AliFromCairoReplacementEffect> {
|
||||
class AliFromCairoReplacementEffect extends ReplacementEffectImpl {
|
||||
|
||||
public AliFromCairoReplacementEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class Aggravate extends CardImpl<Aggravate> {
|
|||
}
|
||||
}
|
||||
|
||||
class AggraveteEffect extends OneShotEffect<AggraveteEffect> {
|
||||
class AggraveteEffect extends OneShotEffect {
|
||||
|
||||
public AggraveteEffect() {
|
||||
super(Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class AmassTheComponents extends CardImpl<AmassTheComponents> {
|
|||
}
|
||||
}
|
||||
|
||||
class AmassTheComponentsEffect extends OneShotEffect<AmassTheComponentsEffect> {
|
||||
class AmassTheComponentsEffect extends OneShotEffect {
|
||||
|
||||
public AmassTheComponentsEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class AngelOfGlorysRise extends CardImpl<AngelOfGlorysRise> {
|
|||
}
|
||||
}
|
||||
|
||||
class AngelOfGlorysRiseEffect extends OneShotEffect<AngelOfGlorysRiseEffect> {
|
||||
class AngelOfGlorysRiseEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCreatureCard filterHuman = new FilterCreatureCard();
|
||||
private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent();
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public class AngelOfJubilation extends CardImpl<AngelOfJubilation> {
|
|||
}
|
||||
}
|
||||
|
||||
class AngelOfJubilationEffect extends ContinuousEffectImpl<AngelOfJubilationEffect> {
|
||||
class AngelOfJubilationEffect extends ContinuousEffectImpl {
|
||||
|
||||
public AngelOfJubilationEffect(Duration duration) {
|
||||
super(duration, Layer.PlayerEffects, SubLayer.NA, Outcome.Detriment);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class BlessingsOfNature extends CardImpl<BlessingsOfNature> {
|
|||
}
|
||||
}
|
||||
|
||||
class BlessingsOfNatureEffect extends OneShotEffect<BlessingsOfNatureEffect> {
|
||||
class BlessingsOfNatureEffect extends OneShotEffect {
|
||||
|
||||
public BlessingsOfNatureEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class BonfireOfTheDamned extends CardImpl<BonfireOfTheDamned> {
|
|||
}
|
||||
}
|
||||
|
||||
class BonfireOfTheDamnedEffect extends OneShotEffect<BonfireOfTheDamnedEffect> {
|
||||
class BonfireOfTheDamnedEffect extends OneShotEffect {
|
||||
|
||||
private static FilterPermanent filter = new FilterCreaturePermanent();
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public class BrunaLightOfAlabaster extends CardImpl<BrunaLightOfAlabaster> {
|
|||
}
|
||||
}
|
||||
|
||||
class BrunaLightOfAlabasterEffect extends OneShotEffect<BrunaLightOfAlabasterEffect> {
|
||||
class BrunaLightOfAlabasterEffect extends OneShotEffect {
|
||||
|
||||
public BrunaLightOfAlabasterEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class BurnAtTheStake extends CardImpl<BurnAtTheStake> {
|
|||
}
|
||||
}
|
||||
|
||||
class BurnAtTheStakeEffect extends OneShotEffect<BurnAtTheStakeEffect> {
|
||||
class BurnAtTheStakeEffect extends OneShotEffect {
|
||||
|
||||
public BurnAtTheStakeEffect() {
|
||||
super(Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public class CavernOfSouls extends CardImpl<CavernOfSouls> {
|
|||
}
|
||||
}
|
||||
|
||||
class CavernOfSoulsEffect extends OneShotEffect<CavernOfSoulsEffect> {
|
||||
class CavernOfSoulsEffect extends OneShotEffect {
|
||||
|
||||
public CavernOfSoulsEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
@ -207,7 +207,7 @@ class CavernOfSoulsWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
|
||||
class CavernOfSoulsCantCounterEffect extends ReplacementEffectImpl<CavernOfSoulsCantCounterEffect> {
|
||||
class CavernOfSoulsCantCounterEffect extends ReplacementEffectImpl {
|
||||
|
||||
public CavernOfSoulsCantCounterEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public class DangerousWager extends CardImpl<DangerousWager> {
|
|||
}
|
||||
}
|
||||
|
||||
class DangerousWagerEffect extends OneShotEffect<DangerousWagerEffect> {
|
||||
class DangerousWagerEffect extends OneShotEffect {
|
||||
|
||||
public DangerousWagerEffect() {
|
||||
super(Outcome.Discard);
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public class DarkImpostor extends CardImpl<DarkImpostor> {
|
|||
}
|
||||
}
|
||||
|
||||
class DarkImpostorContinuousEffect extends ContinuousEffectImpl<DarkImpostorContinuousEffect> {
|
||||
class DarkImpostorContinuousEffect extends ContinuousEffectImpl {
|
||||
|
||||
public DarkImpostorContinuousEffect() {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class DefyDeath extends CardImpl<DefyDeath> {
|
|||
}
|
||||
}
|
||||
|
||||
class DefyDeathEffect extends OneShotEffect<DefyDeathEffect> {
|
||||
class DefyDeathEffect extends OneShotEffect {
|
||||
|
||||
public DefyDeathEffect() {
|
||||
super(Outcome.BoostCreature);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class DescendantsPath extends CardImpl<DescendantsPath> {
|
|||
}
|
||||
}
|
||||
|
||||
class DescendantsPathEffect extends OneShotEffect<DescendantsPathEffect> {
|
||||
class DescendantsPathEffect extends OneShotEffect {
|
||||
|
||||
public DescendantsPathEffect() {
|
||||
super(Outcome.Discard);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class DescentIntoMadness extends CardImpl<DescentIntoMadness> {
|
|||
}
|
||||
}
|
||||
|
||||
class DescentIntoMadnessEffect extends OneShotEffect<DescentIntoMadnessEffect> {
|
||||
class DescentIntoMadnessEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCard filterInHand = new FilterCard();
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class DevastationTide extends CardImpl<DevastationTide> {
|
|||
}
|
||||
}
|
||||
|
||||
class DevastationTideEffect extends OneShotEffect<DevastationTideEffect> {
|
||||
class DevastationTideEffect extends OneShotEffect {
|
||||
|
||||
public DevastationTideEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class DivineDeflection extends CardImpl<DivineDeflection> {
|
|||
}
|
||||
}
|
||||
|
||||
class DivineDeflectionPreventDamageTargetEffect extends PreventionEffectImpl<DivineDeflectionPreventDamageTargetEffect> {
|
||||
class DivineDeflectionPreventDamageTargetEffect extends PreventionEffectImpl {
|
||||
|
||||
private int amount = -1;
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class DreadSlaver extends CardImpl<DreadSlaver> {
|
|||
}
|
||||
}
|
||||
|
||||
class DreadSlaverEffect extends OneShotEffect<DreadSlaverEffect> {
|
||||
class DreadSlaverEffect extends OneShotEffect {
|
||||
|
||||
public DreadSlaverEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
@ -111,7 +111,7 @@ class DreadSlaverEffect extends OneShotEffect<DreadSlaverEffect> {
|
|||
|
||||
}
|
||||
|
||||
class DreadSlaverContiniousEffect extends ContinuousEffectImpl<DreadSlaverContiniousEffect> {
|
||||
class DreadSlaverContiniousEffect extends ContinuousEffectImpl {
|
||||
|
||||
public DreadSlaverContiniousEffect() {
|
||||
super(Duration.Custom, Outcome.Neutral);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class EatenBySpiders extends CardImpl<EatenBySpiders> {
|
|||
}
|
||||
}
|
||||
|
||||
class EatenBySpidersEffect extends OneShotEffect<EatenBySpidersEffect> {
|
||||
class EatenBySpidersEffect extends OneShotEffect {
|
||||
|
||||
public EatenBySpidersEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class EssenceHarvest extends CardImpl<EssenceHarvest> {
|
|||
}
|
||||
}
|
||||
|
||||
class EssenceHarvestEffect extends OneShotEffect<EssenceHarvestEffect> {
|
||||
class EssenceHarvestEffect extends OneShotEffect {
|
||||
|
||||
public EssenceHarvestEffect() {
|
||||
super(Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class Fettergeist extends CardImpl<Fettergeist> {
|
|||
}
|
||||
}
|
||||
|
||||
class FettergeistUnlessPaysEffect extends OneShotEffect<FettergeistUnlessPaysEffect> {
|
||||
class FettergeistUnlessPaysEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
|
||||
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class GallowsAtWillowHill extends CardImpl<GallowsAtWillowHill> {
|
|||
}
|
||||
}
|
||||
|
||||
class GallowsAtWillowHillEffect extends OneShotEffect<GallowsAtWillowHillEffect> {
|
||||
class GallowsAtWillowHillEffect extends OneShotEffect {
|
||||
|
||||
public GallowsAtWillowHillEffect() {
|
||||
super(Outcome.DestroyPermanent);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class GeistSnatch extends CardImpl<GeistSnatch> {
|
|||
}
|
||||
}
|
||||
|
||||
class GeistSnatchCounterTargetEffect extends OneShotEffect<GeistSnatchCounterTargetEffect> {
|
||||
class GeistSnatchCounterTargetEffect extends OneShotEffect {
|
||||
|
||||
public GeistSnatchCounterTargetEffect() {
|
||||
super(Outcome.Detriment);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class GhostlyFlicker extends CardImpl<GhostlyFlicker> {
|
|||
}
|
||||
}
|
||||
|
||||
class GhostlyFlickerEffect extends OneShotEffect<GhostlyFlickerEffect> {
|
||||
class GhostlyFlickerEffect extends OneShotEffect {
|
||||
|
||||
public GhostlyFlickerEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class GiselaBladeOfGoldnight extends CardImpl<GiselaBladeOfGoldnight> {
|
|||
}
|
||||
}
|
||||
|
||||
class GiselaBladeOfGoldnightDoubleDamageEffect extends ReplacementEffectImpl<GiselaBladeOfGoldnightDoubleDamageEffect> {
|
||||
class GiselaBladeOfGoldnightDoubleDamageEffect extends ReplacementEffectImpl {
|
||||
|
||||
public GiselaBladeOfGoldnightDoubleDamageEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Damage);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class GloomSurgeon extends CardImpl<GloomSurgeon> {
|
|||
}
|
||||
}
|
||||
|
||||
class GloomSurgeonEffect extends ReplacementEffectImpl<GloomSurgeonEffect> {
|
||||
class GloomSurgeonEffect extends ReplacementEffectImpl {
|
||||
|
||||
GloomSurgeonEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Exile);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class GraveExchange extends CardImpl<GraveExchange> {
|
|||
}
|
||||
}
|
||||
|
||||
class GraveExchangeEffect extends OneShotEffect<GraveExchangeEffect> {
|
||||
class GraveExchangeEffect extends OneShotEffect {
|
||||
|
||||
public GraveExchangeEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class HolyJusticiar extends CardImpl<HolyJusticiar> {
|
|||
}
|
||||
}
|
||||
|
||||
class HolyJusticiarEffect extends OneShotEffect<HolyJusticiarEffect> {
|
||||
class HolyJusticiarEffect extends OneShotEffect {
|
||||
|
||||
public HolyJusticiarEffect() {
|
||||
super(Outcome.Detriment);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class InfiniteReflection extends CardImpl<InfiniteReflection> {
|
|||
}
|
||||
}
|
||||
|
||||
class InfiniteReflectionTriggeredEffect extends OneShotEffect<InfiniteReflectionTriggeredEffect> {
|
||||
class InfiniteReflectionTriggeredEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
|
||||
|
|
@ -122,7 +122,7 @@ class InfiniteReflectionTriggeredEffect extends OneShotEffect<InfiniteReflection
|
|||
}
|
||||
}
|
||||
|
||||
class InfiniteReflectionEntersBattlefieldEffect extends ReplacementEffectImpl<InfiniteReflectionEntersBattlefieldEffect> {
|
||||
class InfiniteReflectionEntersBattlefieldEffect extends ReplacementEffectImpl {
|
||||
|
||||
public InfiniteReflectionEntersBattlefieldEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class JointAssault extends CardImpl<JointAssault> {
|
|||
}
|
||||
}
|
||||
|
||||
class JointAssaultBoostTargetEffect extends ContinuousEffectImpl<JointAssaultBoostTargetEffect> {
|
||||
class JointAssaultBoostTargetEffect extends ContinuousEffectImpl {
|
||||
|
||||
private int power;
|
||||
private int toughness;
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class KillingWave extends CardImpl<KillingWave> {
|
|||
}
|
||||
}
|
||||
|
||||
class KillingWaveEffect extends OneShotEffect<KillingWaveEffect> {
|
||||
class KillingWaveEffect extends OneShotEffect {
|
||||
|
||||
public KillingWaveEffect() {
|
||||
super(Outcome.Sacrifice);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public class LairDelve extends CardImpl<LairDelve> {
|
|||
}
|
||||
}
|
||||
|
||||
class LairDelveEffect extends OneShotEffect<LairDelveEffect> {
|
||||
class LairDelveEffect extends OneShotEffect {
|
||||
|
||||
public LairDelveEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ class HighestLifeTotalAmongOpponentsCount implements DynamicValue {
|
|||
}
|
||||
}
|
||||
|
||||
class MalignusEffect extends ReplacementEffectImpl<MalignusEffect> {
|
||||
class MalignusEffect extends ReplacementEffectImpl {
|
||||
|
||||
public MalignusEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class MisthollowGriffin extends CardImpl<MisthollowGriffin> {
|
|||
}
|
||||
}
|
||||
|
||||
class MisthollowGriffinPlayEffect extends AsThoughEffectImpl<MisthollowGriffinPlayEffect> {
|
||||
class MisthollowGriffinPlayEffect extends AsThoughEffectImpl {
|
||||
|
||||
public MisthollowGriffinPlayEffect() {
|
||||
super(AsThoughEffectType.CAST, Duration.EndOfGame, Outcome.Benefit);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class OtherworldAtlas extends CardImpl<OtherworldAtlas> {
|
|||
}
|
||||
}
|
||||
|
||||
class OtherworldAtlasDrawEffect extends OneShotEffect<OtherworldAtlasDrawEffect> {
|
||||
class OtherworldAtlasDrawEffect extends OneShotEffect {
|
||||
|
||||
public OtherworldAtlasDrawEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class PeelFromReality extends CardImpl<PeelFromReality> {
|
|||
}
|
||||
}
|
||||
|
||||
class PeelFromRealityEffect extends OneShotEffect<PeelFromRealityEffect> {
|
||||
class PeelFromRealityEffect extends OneShotEffect {
|
||||
|
||||
public PeelFromRealityEffect() {
|
||||
super(Outcome.ReturnToHand);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class PillarOfFlame extends CardImpl<PillarOfFlame> {
|
|||
}
|
||||
}
|
||||
|
||||
class PillarOfFlameEffect extends ReplacementEffectImpl<PillarOfFlameEffect> {
|
||||
class PillarOfFlameEffect extends ReplacementEffectImpl {
|
||||
|
||||
public PillarOfFlameEffect() {
|
||||
super(Duration.EndOfTurn, Outcome.Exile);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class PrimalSurge extends CardImpl<PrimalSurge> {
|
|||
}
|
||||
}
|
||||
|
||||
class PrimalSurgeEffect extends OneShotEffect<PrimalSurgeEffect> {
|
||||
class PrimalSurgeEffect extends OneShotEffect {
|
||||
|
||||
public PrimalSurgeEffect() {
|
||||
super(Outcome.PutCardInPlay);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class ReforgeTheSoul extends CardImpl<ReforgeTheSoul> {
|
|||
}
|
||||
}
|
||||
|
||||
class ReforgeTheSoulEffect extends OneShotEffect<ReforgeTheSoulEffect> {
|
||||
class ReforgeTheSoulEffect extends OneShotEffect {
|
||||
|
||||
public ReforgeTheSoulEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue