This commit is contained in:
magenoxx 2014-06-02 16:02:14 +04:00
commit 55d9809b6c
2045 changed files with 2324 additions and 2300 deletions

View file

@ -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()) {

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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");
}
}
);

View file

@ -69,7 +69,7 @@ public class AgelessEntity extends CardImpl<AgelessEntity> {
}
}
class AgelessEntityEffect extends OneShotEffect<AgelessEntityEffect> {
class AgelessEntityEffect extends OneShotEffect {
public AgelessEntityEffect() {
super(Outcome.Benefit);

View file

@ -84,7 +84,7 @@ public class ArchitectsOfWill extends CardImpl<ArchitectsOfWill> {
}
}
class ArchitectsOfWillEffect extends OneShotEffect<ArchitectsOfWillEffect> {
class ArchitectsOfWillEffect extends OneShotEffect {
public ArchitectsOfWillEffect() {
super(Outcome.DrawCard);

View file

@ -78,7 +78,7 @@ public class ArsenalThresher extends CardImpl<ArsenalThresher> {
}
}
class ArsenalThresherEffect extends OneShotEffect<ArsenalThresherEffect> {
class ArsenalThresherEffect extends OneShotEffect {
public ArsenalThresherEffect() {
super(Outcome.Benefit);

View file

@ -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);

View file

@ -77,7 +77,7 @@ public class BlitzHellion extends CardImpl<BlitzHellion> {
}
}
class ShuffleSourceEffect extends OneShotEffect<ShuffleSourceEffect> {
class ShuffleSourceEffect extends OneShotEffect {
ShuffleSourceEffect() {
super(Outcome.Neutral);

View file

@ -82,7 +82,7 @@ public class ClovenCasting extends CardImpl<ClovenCasting> {
}
}
class ClovenCastingEffect extends OneShotEffect<ClovenCastingEffect> {
class ClovenCastingEffect extends OneShotEffect {
public ClovenCastingEffect() {
super(Outcome.Copy);

View file

@ -78,7 +78,7 @@ public class DefilerOfSouls extends CardImpl<DefilerOfSouls> {
}
}
class DefilerOfSoulsEffect extends OneShotEffect<DefilerOfSoulsEffect> {
class DefilerOfSoulsEffect extends OneShotEffect {
DefilerOfSoulsEffect() {
super(Outcome.Sacrifice);

View file

@ -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);

View file

@ -67,7 +67,7 @@ public class DrasticRevelation extends CardImpl<DrasticRevelation> {
}
}
class DrasticRevelationEffect extends OneShotEffect<DrasticRevelationEffect> {
class DrasticRevelationEffect extends OneShotEffect {
DrasticRevelationEffect() {
super(Outcome.DrawCard);

View file

@ -81,7 +81,7 @@ public class EnigmaSphinx extends CardImpl<EnigmaSphinx> {
}
}
class EnigmaSphinxEffect extends OneShotEffect<EnigmaSphinxEffect> {
class EnigmaSphinxEffect extends OneShotEffect {
public EnigmaSphinxEffect() {
super(Outcome.ReturnToHand);

View file

@ -86,7 +86,7 @@ public class EtherwroughtPage extends CardImpl<EtherwroughtPage> {
}
}
class EtherwroughtPageEffect extends OneShotEffect<EtherwroughtPageEffect> {
class EtherwroughtPageEffect extends OneShotEffect {
public EtherwroughtPageEffect() {
super(Outcome.DrawCard);

View file

@ -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 {

View file

@ -122,7 +122,7 @@ class FinestHourAbility extends TriggeredAbilityImpl {
}
class FinestHourEffect extends OneShotEffect<FinestHourEffect> {
class FinestHourEffect extends OneShotEffect {
public FinestHourEffect() {
super(Outcome.Benefit);

View file

@ -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";

View file

@ -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;

View file

@ -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 {

View file

@ -75,7 +75,7 @@ public class Lavalanche extends CardImpl<Lavalanche> {
}
}
class LavalancheEffect extends OneShotEffect<LavalancheEffect> {
class LavalancheEffect extends OneShotEffect {
private DynamicValue amount;

View file

@ -85,7 +85,7 @@ public class LightningReaver extends CardImpl<LightningReaver> {
}
}
class DamageOpponentsEffect extends OneShotEffect<DamageOpponentsEffect> {
class DamageOpponentsEffect extends OneShotEffect {
public DamageOpponentsEffect() {
super(Outcome.Damage);

View file

@ -153,7 +153,7 @@ class FirstSpellCastThisTurnWatcher extends Watcher {
}
}
class CascadeEffect extends OneShotEffect<CascadeEffect> {
class CascadeEffect extends OneShotEffect {
public CascadeEffect() {
super(Outcome.PutCardInPlay);

View file

@ -73,7 +73,7 @@ public class MageSlayer extends CardImpl<MageSlayer> {
}
}
class MageSlayerEffect extends OneShotEffect<MageSlayerEffect> {
class MageSlayerEffect extends OneShotEffect {
public MageSlayerEffect() {
super(Outcome.Damage);

View file

@ -72,7 +72,7 @@ public class MayaelsAria extends CardImpl<MayaelsAria> {
}
}
class MayaelsAriaEffect extends OneShotEffect<MayaelsAriaEffect> {
class MayaelsAriaEffect extends OneShotEffect {
public MayaelsAriaEffect() {
super(Outcome.Benefit);

View file

@ -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);

View file

@ -71,7 +71,7 @@ public class MindFuneral extends CardImpl<MindFuneral> {
}
}
class MindFuneralEffect extends OneShotEffect<MindFuneralEffect> {
class MindFuneralEffect extends OneShotEffect {
public MindFuneralEffect() {
super(Outcome.Detriment);

View file

@ -69,7 +69,7 @@ public class MorbidBloom extends CardImpl<MorbidBloom> {
}
}
class MorbidBloomEffect extends OneShotEffect<MorbidBloomEffect> {
class MorbidBloomEffect extends OneShotEffect {
public MorbidBloomEffect() {
super(Outcome.PutCreatureInPlay);

View file

@ -87,7 +87,7 @@ public class NecromancersCovenant extends CardImpl<NecromancersCovenant> {
}
}
class NecromancersConvenantEffect extends OneShotEffect<NecromancersConvenantEffect> {
class NecromancersConvenantEffect extends OneShotEffect {
public NecromancersConvenantEffect() {
super(Outcome.PutCreatureInPlay);

View file

@ -118,7 +118,7 @@ class RetaliatorGriffinTriggeredAbility extends TriggeredAbilityImpl {
}
}
class RetaliatorGriffinEffect extends OneShotEffect<RetaliatorGriffinEffect> {
class RetaliatorGriffinEffect extends OneShotEffect {
public RetaliatorGriffinEffect() {
super(Outcome.BoostCreature);

View file

@ -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);

View file

@ -77,7 +77,7 @@ public class SingeMindOgre extends CardImpl<SingeMindOgre> {
}
}
class SingeMindOgreEffect extends OneShotEffect<SingeMindOgreEffect> {
class SingeMindOgreEffect extends OneShotEffect {
public SingeMindOgreEffect() {
super(Outcome.LoseLife);

View file

@ -78,7 +78,7 @@ public class SlaveOfBolas extends CardImpl<SlaveOfBolas> {
}
}
class SlaveOfBolasEffect extends OneShotEffect<SlaveOfBolasEffect> {
class SlaveOfBolasEffect extends OneShotEffect {
public SlaveOfBolasEffect() {
super(Outcome.Sacrifice);

View file

@ -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");

View file

@ -118,7 +118,7 @@ class CreatureControlledAttacksAloneTriggeredAbility extends TriggeredAbilityImp
}
}
class SovereignsOfLostAlaraEffect extends OneShotEffect<SovereignsOfLostAlaraEffect> {
class SovereignsOfLostAlaraEffect extends OneShotEffect {
public SovereignsOfLostAlaraEffect() {
super(Outcome.BoostCreature);

View file

@ -79,7 +79,7 @@ public class SpellboundDragon extends CardImpl<SpellboundDragon> {
}
}
class SpellboundDragonEffect extends OneShotEffect<SpellboundDragonEffect> {
class SpellboundDragonEffect extends OneShotEffect {
public SpellboundDragonEffect() {
super(Outcome.BoostCreature);

View file

@ -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";

View file

@ -79,7 +79,7 @@ public class UnbenderTine extends CardImpl<UnbenderTine> {
}
}
class UnbenderTineEffect extends OneShotEffect<UnbenderTineEffect> {
class UnbenderTineEffect extends OneShotEffect {
public UnbenderTineEffect() {
super(Outcome.Untap);

View file

@ -138,7 +138,7 @@ class UnscytheKillerOfKingsTriggeredAbility extends TriggeredAbilityImpl {
}
}
class UnscytheEffect extends OneShotEffect<UnscytheEffect> {
class UnscytheEffect extends OneShotEffect {
public UnscytheEffect() {
super(Outcome.PutCreatureInPlay);

View file

@ -80,7 +80,7 @@ public class VectisDominator extends CardImpl<VectisDominator> {
}
}
class VectisDominatorEffect extends OneShotEffect<VectisDominatorEffect> {
class VectisDominatorEffect extends OneShotEffect {
protected Cost cost;

View file

@ -77,7 +77,7 @@ public class VengefulRebirth extends CardImpl<VengefulRebirth> {
}
class VengefulRebirthEffect extends OneShotEffect<VengefulRebirthEffect> {
class VengefulRebirthEffect extends OneShotEffect {
public VengefulRebirthEffect() {
super(Outcome.DrawCard);

View file

@ -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";

View file

@ -72,7 +72,7 @@ public class Browse extends CardImpl<Browse> {
}
}
class BrowseEffect extends OneShotEffect<BrowseEffect> {
class BrowseEffect extends OneShotEffect {
public BrowseEffect() {
super(Outcome.DrawCard);

View file

@ -86,7 +86,7 @@ public class Contagion extends CardImpl<Contagion> {
}
}
class DistributeCountersEffect extends OneShotEffect<DistributeCountersEffect> {
class DistributeCountersEffect extends OneShotEffect {
public DistributeCountersEffect() {

View file

@ -64,7 +64,7 @@ public class DiminishingReturns extends CardImpl<DiminishingReturns> {
}
}
class DiminishingReturnsEffect extends OneShotEffect<DiminishingReturnsEffect> {
class DiminishingReturnsEffect extends OneShotEffect {
public DiminishingReturnsEffect() {
super(Outcome.Neutral);

View file

@ -82,7 +82,7 @@ public class Exile extends CardImpl<Exile> {
}
}
class ExileEffect extends OneShotEffect<ExileEffect> {
class ExileEffect extends OneShotEffect {
public ExileEffect() {
super(Outcome.GainLife);

View file

@ -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();

View file

@ -81,7 +81,7 @@ public class SoldeviSage extends CardImpl<SoldeviSage> {
}
}
class SoldeviSageEffect extends OneShotEffect<SoldeviSageEffect> {
class SoldeviSageEffect extends OneShotEffect {
public SoldeviSageEffect() {
super(Outcome.DrawCard);

View file

@ -75,7 +75,7 @@ public class SoldierOfFortune extends CardImpl<SoldierOfFortune> {
}
}
class SoldierOfFortuneEffect extends OneShotEffect<SoldierOfFortuneEffect> {
class SoldierOfFortuneEffect extends OneShotEffect {
public SoldierOfFortuneEffect() {
super(Outcome.Neutral);

View file

@ -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);

View file

@ -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);

View file

@ -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";

View file

@ -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 {

View file

@ -77,7 +77,7 @@ public class LegacyWeapon extends CardImpl<LegacyWeapon> {
}
}
class LegacyWeaponEffect extends OneShotEffect<LegacyWeaponEffect> {
class LegacyWeaponEffect extends OneShotEffect {
public LegacyWeaponEffect() {
super(Outcome.Benefit);

View file

@ -98,7 +98,7 @@ class LifeLandToken extends Token {
}
class DeathEffect extends OneShotEffect<DeathEffect> {
class DeathEffect extends OneShotEffect {
public DeathEffect() {
super(Outcome.PutCreatureInPlay);

View file

@ -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);

View file

@ -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);

View file

@ -85,7 +85,7 @@ public class Spiritmonger extends CardImpl<Spiritmonger> {
}
}
class SpiritmongerChangeColorEffect extends OneShotEffect<SpiritmongerChangeColorEffect> {
class SpiritmongerChangeColorEffect extends OneShotEffect {
public SpiritmongerChangeColorEffect() {
super(Outcome.Neutral);

View file

@ -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 {

View file

@ -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("");

View file

@ -72,7 +72,7 @@ public class WhirlpoolRider extends CardImpl<WhirlpoolRider> {
}
}
class WhirlpoolRiderTriggeredEffect extends OneShotEffect<WhirlpoolRiderTriggeredEffect> {
class WhirlpoolRiderTriggeredEffect extends OneShotEffect {
public WhirlpoolRiderTriggeredEffect() {
super(Outcome.DrawCard);

View file

@ -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);

View file

@ -75,7 +75,7 @@ public class Aggravate extends CardImpl<Aggravate> {
}
}
class AggraveteEffect extends OneShotEffect<AggraveteEffect> {
class AggraveteEffect extends OneShotEffect {
public AggraveteEffect() {
super(Outcome.Damage);

View file

@ -68,7 +68,7 @@ public class AmassTheComponents extends CardImpl<AmassTheComponents> {
}
}
class AmassTheComponentsEffect extends OneShotEffect<AmassTheComponentsEffect> {
class AmassTheComponentsEffect extends OneShotEffect {
public AmassTheComponentsEffect() {
super(Outcome.DrawCard);

View file

@ -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();

View file

@ -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);

View file

@ -71,7 +71,7 @@ public class BlessingsOfNature extends CardImpl<BlessingsOfNature> {
}
}
class BlessingsOfNatureEffect extends OneShotEffect<BlessingsOfNatureEffect> {
class BlessingsOfNatureEffect extends OneShotEffect {
public BlessingsOfNatureEffect() {
super(Outcome.BoostCreature);

View file

@ -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();

View file

@ -85,7 +85,7 @@ public class BrunaLightOfAlabaster extends CardImpl<BrunaLightOfAlabaster> {
}
}
class BrunaLightOfAlabasterEffect extends OneShotEffect<BrunaLightOfAlabasterEffect> {
class BrunaLightOfAlabasterEffect extends OneShotEffect {
public BrunaLightOfAlabasterEffect() {
super(Outcome.Benefit);

View file

@ -79,7 +79,7 @@ public class BurnAtTheStake extends CardImpl<BurnAtTheStake> {
}
}
class BurnAtTheStakeEffect extends OneShotEffect<BurnAtTheStakeEffect> {
class BurnAtTheStakeEffect extends OneShotEffect {
public BurnAtTheStakeEffect() {
super(Outcome.Damage);

View file

@ -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);

View file

@ -66,7 +66,7 @@ public class DangerousWager extends CardImpl<DangerousWager> {
}
}
class DangerousWagerEffect extends OneShotEffect<DangerousWagerEffect> {
class DangerousWagerEffect extends OneShotEffect {
public DangerousWagerEffect() {
super(Outcome.Discard);

View file

@ -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);

View file

@ -69,7 +69,7 @@ public class DefyDeath extends CardImpl<DefyDeath> {
}
}
class DefyDeathEffect extends OneShotEffect<DefyDeathEffect> {
class DefyDeathEffect extends OneShotEffect {
public DefyDeathEffect() {
super(Outcome.BoostCreature);

View file

@ -76,7 +76,7 @@ public class DescendantsPath extends CardImpl<DescendantsPath> {
}
}
class DescendantsPathEffect extends OneShotEffect<DescendantsPathEffect> {
class DescendantsPathEffect extends OneShotEffect {
public DescendantsPathEffect() {
super(Outcome.Discard);

View file

@ -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();

View file

@ -71,7 +71,7 @@ public class DevastationTide extends CardImpl<DevastationTide> {
}
}
class DevastationTideEffect extends OneShotEffect<DevastationTideEffect> {
class DevastationTideEffect extends OneShotEffect {
public DevastationTideEffect() {
super(Outcome.ReturnToHand);

View file

@ -70,7 +70,7 @@ public class DivineDeflection extends CardImpl<DivineDeflection> {
}
}
class DivineDeflectionPreventDamageTargetEffect extends PreventionEffectImpl<DivineDeflectionPreventDamageTargetEffect> {
class DivineDeflectionPreventDamageTargetEffect extends PreventionEffectImpl {
private int amount = -1;

View file

@ -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);

View file

@ -75,7 +75,7 @@ public class EatenBySpiders extends CardImpl<EatenBySpiders> {
}
}
class EatenBySpidersEffect extends OneShotEffect<EatenBySpidersEffect> {
class EatenBySpidersEffect extends OneShotEffect {
public EatenBySpidersEffect() {
super(Outcome.DestroyPermanent);

View file

@ -68,7 +68,7 @@ public class EssenceHarvest extends CardImpl<EssenceHarvest> {
}
}
class EssenceHarvestEffect extends OneShotEffect<EssenceHarvestEffect> {
class EssenceHarvestEffect extends OneShotEffect {
public EssenceHarvestEffect() {
super(Outcome.Damage);

View file

@ -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();

View file

@ -86,7 +86,7 @@ public class GallowsAtWillowHill extends CardImpl<GallowsAtWillowHill> {
}
}
class GallowsAtWillowHillEffect extends OneShotEffect<GallowsAtWillowHillEffect> {
class GallowsAtWillowHillEffect extends OneShotEffect {
public GallowsAtWillowHillEffect() {
super(Outcome.DestroyPermanent);

View file

@ -76,7 +76,7 @@ public class GeistSnatch extends CardImpl<GeistSnatch> {
}
}
class GeistSnatchCounterTargetEffect extends OneShotEffect<GeistSnatchCounterTargetEffect> {
class GeistSnatchCounterTargetEffect extends OneShotEffect {
public GeistSnatchCounterTargetEffect() {
super(Outcome.Detriment);

View file

@ -79,7 +79,7 @@ public class GhostlyFlicker extends CardImpl<GhostlyFlicker> {
}
}
class GhostlyFlickerEffect extends OneShotEffect<GhostlyFlickerEffect> {
class GhostlyFlickerEffect extends OneShotEffect {
public GhostlyFlickerEffect() {
super(Outcome.Benefit);

View file

@ -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);

View file

@ -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);

View file

@ -77,7 +77,7 @@ public class GraveExchange extends CardImpl<GraveExchange> {
}
}
class GraveExchangeEffect extends OneShotEffect<GraveExchangeEffect> {
class GraveExchangeEffect extends OneShotEffect {
public GraveExchangeEffect() {
super(Outcome.Sacrifice);

View file

@ -77,7 +77,7 @@ public class HolyJusticiar extends CardImpl<HolyJusticiar> {
}
}
class HolyJusticiarEffect extends OneShotEffect<HolyJusticiarEffect> {
class HolyJusticiarEffect extends OneShotEffect {
public HolyJusticiarEffect() {
super(Outcome.Detriment);

View file

@ -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);

View file

@ -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;

View file

@ -70,7 +70,7 @@ public class KillingWave extends CardImpl<KillingWave> {
}
}
class KillingWaveEffect extends OneShotEffect<KillingWaveEffect> {
class KillingWaveEffect extends OneShotEffect {
public KillingWaveEffect() {
super(Outcome.Sacrifice);

View file

@ -69,7 +69,7 @@ public class LairDelve extends CardImpl<LairDelve> {
}
}
class LairDelveEffect extends OneShotEffect<LairDelveEffect> {
class LairDelveEffect extends OneShotEffect {
public LairDelveEffect() {
super(Outcome.DrawCard);

View file

@ -111,7 +111,7 @@ class HighestLifeTotalAmongOpponentsCount implements DynamicValue {
}
}
class MalignusEffect extends ReplacementEffectImpl<MalignusEffect> {
class MalignusEffect extends ReplacementEffectImpl {
public MalignusEffect() {
super(Duration.WhileOnBattlefield, Outcome.Benefit);

View file

@ -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);

View file

@ -70,7 +70,7 @@ public class OtherworldAtlas extends CardImpl<OtherworldAtlas> {
}
}
class OtherworldAtlasDrawEffect extends OneShotEffect<OtherworldAtlasDrawEffect> {
class OtherworldAtlasDrawEffect extends OneShotEffect {
public OtherworldAtlasDrawEffect() {
super(Outcome.DrawCard);

View file

@ -77,7 +77,7 @@ public class PeelFromReality extends CardImpl<PeelFromReality> {
}
}
class PeelFromRealityEffect extends OneShotEffect<PeelFromRealityEffect> {
class PeelFromRealityEffect extends OneShotEffect {
public PeelFromRealityEffect() {
super(Outcome.ReturnToHand);

View file

@ -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);

View file

@ -67,7 +67,7 @@ public class PrimalSurge extends CardImpl<PrimalSurge> {
}
}
class PrimalSurgeEffect extends OneShotEffect<PrimalSurgeEffect> {
class PrimalSurgeEffect extends OneShotEffect {
public PrimalSurgeEffect() {
super(Outcome.PutCardInPlay);

View file

@ -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