merged new cards
commit
62079219db
|
@ -0,0 +1,13 @@
|
|||
>Echoing Calm
|
||||
url=http://magiccards.info/ds/en/2.html
|
||||
image=http://magiccards.info/scans/en/ds/2.jpg
|
||||
value=3
|
||||
removal=3
|
||||
rarity=C
|
||||
type=Instant
|
||||
color=w
|
||||
converted=2
|
||||
cost={1}{W}
|
||||
timing=removal
|
||||
|
||||
requires_card_code
|
|
@ -0,0 +1,12 @@
|
|||
>Echoing Courage
|
||||
url=http://magiccards.info/ds/en/74.html
|
||||
image=http://magiccards.info/scans/en/ds/74.jpg
|
||||
value=3
|
||||
rarity=C
|
||||
type=Instant
|
||||
color=g
|
||||
converted=2
|
||||
cost={1}{G}
|
||||
timing=pump
|
||||
|
||||
requires_card_code
|
|
@ -0,0 +1,13 @@
|
|||
>Echoing Decay
|
||||
url=http://magiccards.info/ds/en/41.html
|
||||
image=http://magiccards.info/scans/en/ds/41.jpg
|
||||
value=3
|
||||
removal=3
|
||||
rarity=C
|
||||
type=Instant
|
||||
color=b
|
||||
converted=2
|
||||
cost={1}{B}
|
||||
timing=removal
|
||||
|
||||
requires_card_code
|
|
@ -0,0 +1,13 @@
|
|||
>Echoing Truth
|
||||
url=http://magiccards.info/ds/en/21.html
|
||||
image=http://magiccards.info/scans/en/ds/21.jpg
|
||||
value=3
|
||||
removal=3
|
||||
rarity=C
|
||||
type=Instant
|
||||
color=u
|
||||
converted=2
|
||||
cost={1}{U}
|
||||
timing=removal
|
||||
|
||||
requires_card_code
|
|
@ -0,0 +1,11 @@
|
|||
>Gemstone Mine
|
||||
url=http://magiccards.info/tsts/en/119.html
|
||||
image=http://magiccards.info/scans/en/tsts/119.jpg
|
||||
value=3
|
||||
rarity=U
|
||||
type=Land
|
||||
mana=b3g3r3u3w3
|
||||
basic=bgruw
|
||||
timing=land
|
||||
|
||||
requires_card_code
|
|
@ -6,11 +6,6 @@ import magic.data.DeckGenerators;
|
|||
import magic.data.DeckUtils;
|
||||
import magic.data.KeywordDefinitions;
|
||||
import magic.ui.MagicFrame;
|
||||
import magic.ui.widget.BlankPainter;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Insets;
|
||||
import java.io.File;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIManager;
|
||||
|
@ -88,14 +83,20 @@ public class MagicMain {
|
|||
}
|
||||
|
||||
private static void initialize() {
|
||||
final boolean madeGamePath = new File(getGamePath()).mkdir();
|
||||
if (!madeGamePath) {
|
||||
System.err.println("Unable to create directory " + getGamePath());
|
||||
final File gamePathFile = new File(getGamePath());
|
||||
if (!gamePathFile.exists()) {
|
||||
final boolean isCreated = gamePathFile.mkdir();
|
||||
if (!isCreated) {
|
||||
System.err.println("Unable to create directory " + getGamePath());
|
||||
}
|
||||
}
|
||||
|
||||
final boolean madeModsPath = new File(getModsPath()).mkdir();
|
||||
if (!madeModsPath) {
|
||||
System.err.println("Unable to create directory " + getModsPath());
|
||||
final File modsPathFile = new File(getModsPath());
|
||||
if (!modsPathFile.exists()) {
|
||||
final boolean isCreated = modsPathFile.mkdir();
|
||||
if (!isCreated) {
|
||||
System.err.println("Unable to create directory " + getModsPath());
|
||||
}
|
||||
}
|
||||
|
||||
DeckUtils.createDeckFolder();
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
package magic.card;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicDestroyAction;
|
||||
import magic.model.action.MagicMoveCardAction;
|
||||
import magic.model.action.MagicPermanentAction;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSpellCardEvent;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.target.MagicDestroyTargetPicker;
|
||||
import magic.model.target.MagicTarget;
|
||||
import magic.model.target.MagicTargetFilter;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class Echoing_Calm {
|
||||
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack.getCard(),
|
||||
cardOnStack.getController(),
|
||||
MagicTargetChoice.NEG_TARGET_ENCHANTMENT,
|
||||
new MagicDestroyTargetPicker(false),
|
||||
new Object[]{cardOnStack},
|
||||
this,
|
||||
"Destroy target enchantment$ and all other enchantments " +
|
||||
"with the same name as that enchantment.");
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(
|
||||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] data,
|
||||
final Object[] choiceResults) {
|
||||
final MagicCardOnStack cardOnStack = (MagicCardOnStack)data[0];
|
||||
game.doAction(new MagicMoveCardAction(cardOnStack));
|
||||
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent targetPermanent) {
|
||||
final MagicTargetFilter targetFilter =
|
||||
new MagicTargetFilter.NameTargetFilter(targetPermanent.getName());
|
||||
final Collection<MagicTarget> targets =
|
||||
game.filterTargets(cardOnStack.getController(),targetFilter);
|
||||
for (final MagicTarget target : targets) {
|
||||
final MagicPermanent permanent = (MagicPermanent)target;
|
||||
if (permanent.isEnchantment()) {
|
||||
game.doAction(new MagicDestroyAction(permanent));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package magic.card;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicChangeTurnPTAction;
|
||||
import magic.model.action.MagicMoveCardAction;
|
||||
import magic.model.action.MagicPermanentAction;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSpellCardEvent;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.target.MagicPumpTargetPicker;
|
||||
import magic.model.target.MagicTarget;
|
||||
import magic.model.target.MagicTargetFilter;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class Echoing_Courage {
|
||||
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack.getCard(),
|
||||
cardOnStack.getController(),
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicPumpTargetPicker.getInstance(),
|
||||
new Object[]{cardOnStack},
|
||||
this,
|
||||
"Target creature$ and all other creatures with the same " +
|
||||
"name as that creature get +2/+2 until end of turn.");
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(
|
||||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] data,
|
||||
final Object[] choiceResults) {
|
||||
final MagicCardOnStack cardOnStack = (MagicCardOnStack)data[0];
|
||||
game.doAction(new MagicMoveCardAction(cardOnStack));
|
||||
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent targetPermanent) {
|
||||
final MagicTargetFilter targetFilter =
|
||||
new MagicTargetFilter.NameTargetFilter(targetPermanent.getName());
|
||||
final Collection<MagicTarget> targets =
|
||||
game.filterTargets(cardOnStack.getController(),targetFilter);
|
||||
for (final MagicTarget target : targets) {
|
||||
final MagicPermanent permanent = (MagicPermanent)target;
|
||||
if (permanent.isCreature(game)) {
|
||||
game.doAction(new MagicChangeTurnPTAction(permanent,2,2));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package magic.card;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicChangeTurnPTAction;
|
||||
import magic.model.action.MagicMoveCardAction;
|
||||
import magic.model.action.MagicPermanentAction;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSpellCardEvent;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.target.MagicTarget;
|
||||
import magic.model.target.MagicTargetFilter;
|
||||
import magic.model.target.MagicWeakenTargetPicker;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class Echoing_Decay {
|
||||
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack.getCard(),
|
||||
cardOnStack.getController(),
|
||||
MagicTargetChoice.NEG_TARGET_CREATURE,
|
||||
new MagicWeakenTargetPicker(2,2),
|
||||
new Object[]{cardOnStack},
|
||||
this,
|
||||
"Target creature$ and all other creatures with the same " +
|
||||
"name as that creature get -2/-2 until end of turn.");
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(
|
||||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] data,
|
||||
final Object[] choiceResults) {
|
||||
final MagicCardOnStack cardOnStack = (MagicCardOnStack)data[0];
|
||||
game.doAction(new MagicMoveCardAction(cardOnStack));
|
||||
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent targetPermanent) {
|
||||
final MagicTargetFilter targetFilter =
|
||||
new MagicTargetFilter.NameTargetFilter(targetPermanent.getName());
|
||||
final Collection<MagicTarget> targets =
|
||||
game.filterTargets(cardOnStack.getController(),targetFilter);
|
||||
for (final MagicTarget target : targets) {
|
||||
final MagicPermanent permanent = (MagicPermanent)target;
|
||||
if (permanent.isCreature(game)) {
|
||||
game.doAction(new MagicChangeTurnPTAction(permanent,-2,-2));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package magic.card;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicLocationType;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicMoveCardAction;
|
||||
import magic.model.action.MagicPermanentAction;
|
||||
import magic.model.action.MagicRemoveFromPlayAction;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSpellCardEvent;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.target.MagicBounceTargetPicker;
|
||||
import magic.model.target.MagicTarget;
|
||||
import magic.model.target.MagicTargetFilter;
|
||||
import java.util.Collection;
|
||||
|
||||
public class Echoing_Truth {
|
||||
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack.getCard(),
|
||||
cardOnStack.getController(),
|
||||
MagicTargetChoice.NEG_TARGET_NONLAND_PERMANENT,
|
||||
MagicBounceTargetPicker.getInstance(),
|
||||
new Object[]{cardOnStack},
|
||||
this,
|
||||
"Return target nonland permanent$ and all other " +
|
||||
"permanents with the same name as that permanent " +
|
||||
"to their owners' hands.");
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(
|
||||
final MagicGame game,
|
||||
final MagicEvent event,
|
||||
final Object[] data,
|
||||
final Object[] choiceResults) {
|
||||
final MagicCardOnStack cardOnStack = (MagicCardOnStack)data[0];
|
||||
game.doAction(new MagicMoveCardAction(cardOnStack));
|
||||
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
|
||||
public void doAction(final MagicPermanent targetPermanent) {
|
||||
final MagicTargetFilter targetFilter =
|
||||
new MagicTargetFilter.NameTargetFilter(targetPermanent.getName());
|
||||
final Collection<MagicTarget> targets =
|
||||
game.filterTargets(cardOnStack.getController(),targetFilter);
|
||||
for (final MagicTarget target : targets) {
|
||||
game.doAction(new MagicRemoveFromPlayAction(
|
||||
(MagicPermanent)target,
|
||||
MagicLocationType.OwnersHand));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package magic.card;
|
||||
|
||||
import magic.model.MagicCounterType;
|
||||
import magic.model.MagicManaType;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.MagicSource;
|
||||
import magic.model.condition.MagicCondition;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicManaActivation;
|
||||
import magic.model.event.MagicRemoveCounterEvent;
|
||||
import magic.model.event.MagicSacrificeEvent;
|
||||
import magic.model.event.MagicTapEvent;
|
||||
import magic.model.trigger.MagicComesIntoPlayWithCounterTrigger;
|
||||
|
||||
public class Gemstone_Mine {
|
||||
private static final MagicCondition CONDITIONS[] = new MagicCondition[]{
|
||||
MagicCondition.CAN_TAP_CONDITION,
|
||||
MagicCondition.CHARGE_COUNTER_CONDITION};
|
||||
|
||||
public static final MagicComesIntoPlayWithCounterTrigger T =
|
||||
new MagicComesIntoPlayWithCounterTrigger(MagicCounterType.Charge,"mining",3);
|
||||
|
||||
public static final MagicManaActivation MANA = new MagicManaActivation(
|
||||
MagicManaType.ALL_TYPES,
|
||||
CONDITIONS,
|
||||
2) {
|
||||
@Override
|
||||
public MagicEvent[] getCostEvent(final MagicSource source) {
|
||||
final MagicPermanent permanent = (MagicPermanent)source;
|
||||
if (permanent.getCounters(MagicCounterType.Charge) == 1) {
|
||||
return new MagicEvent[]{
|
||||
new MagicTapEvent(permanent),
|
||||
new MagicRemoveCounterEvent(
|
||||
permanent,
|
||||
MagicCounterType.Charge,
|
||||
1),
|
||||
new MagicSacrificeEvent(permanent)
|
||||
};
|
||||
}
|
||||
return new MagicEvent[]{
|
||||
new MagicTapEvent(permanent),
|
||||
new MagicRemoveCounterEvent(
|
||||
permanent,
|
||||
MagicCounterType.Charge,
|
||||
1)
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
|
@ -24,17 +24,14 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
import java.util.Enumeration;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Load card definitions from cards.txt
|
||||
*/public class CardDefinitions {
|
||||
*/
|
||||
public class CardDefinitions {
|
||||
|
||||
private static final CardDefinitions INSTANCE=new CardDefinitions();
|
||||
|
||||
private static final String CARDS_FILENAME="cards.txt";
|
||||
|
||||
public static final String CARD_TEXT_FOLDER = "texts";
|
||||
public static final String CARD_IMAGE_FOLDER = "cards";
|
||||
public static final String TOKEN_IMAGE_FOLDER = "tokens";
|
||||
|
|
Loading…
Reference in New Issue