merged new cards

master
melvin 2011-11-11 19:41:27 +08:00
commit 62079219db
12 changed files with 353 additions and 16 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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