merged cards by Pablo Castellazzi

master
melvin 2012-06-14 21:47:33 +08:00
commit 6e478cb7d4
17 changed files with 365 additions and 16 deletions

View File

@ -5,7 +5,14 @@ build/*
ref/*
launch4j/*
decks/*
release/Magarena/cards/*
release/Magarena/texts/*
release/Magarena/tokens/*
release/Magarena/symbols/*
tags
release/Magarena/cards
release/Magarena/texts
release/Magarena/tokens
release/Magarena/symbols
release/Magarena/*.cfg
release/Magarena/*.hist
release/Magarena/*.log
release/Magarena/*.txt
release/Magarena.exe
release/Magarena.jar

View File

@ -1,10 +1,10 @@
JAVAEA=java -ea -Xms256M -Xmx256M -Ddebug=true
JAVAEA=java -ea -Xms256M -Xmx256M -Ddebug=true
LIBS=.:lib/annotations.jar:lib/jsr305.jar
JAVA=${JAVAEA} -Dcom.sun.management.jmxremote -cp $(LIBS):release/Magarena.jar
JAVA=${JAVAEA} -Dcom.sun.management.jmxremote -cp $(LIBS):release/Magarena.jar
SHELL=/bin/bash
BUILD=build
JOPTS=-Xlint:all -d $(BUILD) -cp $(LIBS):$(BUILD):.
SRC=$(shell find src -iname *.java)
SRC=$(shell find src -iname *.java)
MAG:=release/Magarena.jar
EXE:=release/Magarena.exe
@ -41,7 +41,7 @@ cards_diff: $(MAG)
code_to_remove: $(MAG)
cat src/magic/card/*.java | sed 's/\s\+//g' | sed 's/(.*)/(...)/g' | sort | uniq -c | sort -n | grep publicstaticfinal | grep ");" > $@
casts: $(MAG)
casts: $(MAG)
grep -n "([A-Z]\+[a-z]\+[A-Za-z]*)" -r src/ | flip -u > $@
warnings_H.txt: warnings.txt
@ -148,9 +148,9 @@ M1.%: clean $(EXE) cubes release/Magarena/mods/felt_theme.zip
cp -r Magarena.app Magarena-1.$*.app
cd Magarena-1.$*.app/Contents/Resources; ln -s ../../../Magarena-1.$* Java
chmod a+x Magarena-1.$*.app/Contents/MacOS/JavaApplicationStub
-zip -r Magarena-1.$*.app.zip Magarena-1.$*.app
-zip -r Magarena-1.$*.app.zip Magarena-1.$*.app
$(MAG): $(SRC)
$(MAG): $(SRC)
ant -f build.xml
class: $(BUILD)/javac.last
@ -161,7 +161,7 @@ $(BUILD)/javac.last: $(SRC)
cp -r resources/* $(BUILD)
touch $@
tags: $(SRC)
tags: $(SRC)
ctags -R src
Test%.run: $(MAG)
@ -172,8 +172,8 @@ $(EXE): $(MAG)
clean:
-ant clean
-rm $(BUILD)/javac.last
-rm $(MAG)
-rm -f $(BUILD)/javac.last
-rm -f $(MAG)
jar: $(MAG)
$(JAVA) -jar $^
@ -195,7 +195,7 @@ test: $(MAG)
$(JAVA) magic.DeckStrCal --deck1 release/decks/LSK_B.dec --deck2 release/decks/LSK_G.dec --ai1 $* --ai2 $* --games 100
exp/%.log: $(MAG)
scripts/evaluate_ai.sh $* > $@
scripts/evaluate_ai.sh $* > $@
decks/dd:
for i in `curl http://www.wizards.com/magic/magazine/archive.aspx?tag=dailydeck | grep -o mtg/daily/deck/[0-9]* | cut -d'/' -f4`; do make decks/dd_$$i.dec; done
@ -203,7 +203,7 @@ decks/dd:
decks/dd_%.dec: scripts/dailyhtml2dec.awk
curl "http://www.wizards.com/Magic/Magazine/Article.aspx?x=mtg/daily/deck/$*" | awk -f $^ > $@
decks/ml_%.dec: scripts/apprentice2dec.awk
decks/ml_%.dec: scripts/apprentice2dec.awk
wget "http://www.magic-league.com/decks/download.php?deck=$*&index=1" -O - | flip -u - | awk -f $^ > $@
# Mike Flores 1 - 212

View File

@ -0,0 +1,11 @@
name=Burning Inquiry
url=http://magiccards.info/m10/en/128.html
image=http://magiccards.info/scans/en/m10/128.jpg
value=2
rarity=C
type=Sorcery
color=r
converted=1
cost={R}
timing=removal
requires_card_code

View File

@ -0,0 +1,13 @@
name=Hound of Griselbrand
url=http://magiccards.info/avr/en/141.html
image=http://magiccards.info/scans/en/avr/141.jpg
value=3
rarity=R
type=Creature
subtype=Elemental,Hound
color=r
converted=4
cost={2}{R}{R}
pt=2/2
ability=double strike,undying
timing=main

View File

@ -0,0 +1,12 @@
name=Human Frailty
url=http://magiccards.info/avr/en/109.html
image=http://magiccards.info/scans/en/avr/109.jpg
value=2
removal=2
rarity=U
type=Instant
color=b
converted=1
cost={B}
timing=removal
requires_card_code

View File

@ -6,7 +6,7 @@ removal=1
rarity=U
type=Instant
color=b
converted=1
converted=2
cost={1}{B}
timing=mustattack
requires_card_code

View File

@ -0,0 +1,11 @@
name=Joint Assault
url=http://magiccards.info/avr/en/183.html
image=http://magiccards.info/scans/en/avr/183.jpg
value=2
rarity=C
type=Instant
color=g
converted=1
cost={G}
timing=pump
requires_card_code

View File

@ -0,0 +1,13 @@
name=Kessig Malcontents
url=http://magiccards.info/avr/en/142.html
image=http://magiccards.info/scans/en/avr/142.jpg
value=3
rarity=U
type=Creature
subtype=Human,Warrior
color=r
converted=3
cost={2}{R}
pt=3/1
timing=main
requires_card_code

View File

@ -0,0 +1,11 @@
name=Phyrexian Walker
url=http://magiccards.info/vi/en/152.html
image=http://magiccards.info/scans/en/vi/152.jpg
value=1
rarity=C
type=Artifact,Creature
subtype=Construct
converted=0
cost={0}
pt=0/3
timing=main

View File

@ -0,0 +1,13 @@
name=Wall of Blossoms
url=http://magiccards.info/sh/en/75.html
image=http://magiccards.info/scans/en/sh/75.jpg
value=2
rarity=U
type=Creature
subtype=Plant,Wall
color=g
converted=2
cost={1}{G}
pt=0/4
ability=defender,enters draw card
timing=main

View File

@ -0,0 +1,11 @@
name=Wheel of Fortune
url=http://magiccards.info/rv/en/184.html
image=http://magiccards.info/scans/en/rv/184.jpg
value=2
rarity=C
type=Sorcery
color=r
converted=3
cost={2}{R}
timing=removal
requires_card_code

View File

@ -0,0 +1,50 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPlayer;
import magic.model.action.MagicDrawAction;
import magic.model.action.MagicMoveCardAction;
import magic.model.event.MagicEvent;
import magic.model.event.MagicDiscardEvent;
import magic.model.event.MagicSpellCardEvent;
import magic.model.stack.MagicCardOnStack;
public class Burning_Inquiry {
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
@Override
public MagicEvent getEvent(
final MagicCardOnStack cardOnStack,
final MagicPayedCost payedCost)
{
final MagicPlayer player = cardOnStack.getController();
return new MagicEvent(
cardOnStack.getCard(),
player,
new Object[]{cardOnStack},
this,
"Each player draw three cards then discard three cards."
);
}
@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));
for (final MagicPlayer player : game.getPlayers()) {
game.doAction(new MagicDrawAction(player, 3));
game.addEvent(new MagicDiscardEvent(
cardOnStack.getCard(), player, 3, true));
}
}
};
}

View File

@ -0,0 +1,44 @@
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;
public class Human_Frailty {
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_HUMAN_CREATURE,
new MagicDestroyTargetPicker(false),
new Object[]{cardOnStack},
this,
"Destroy target Human creature$.");
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object[] data,
final Object[] choiceResults) {
game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0]));
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
public void doAction(final MagicPermanent creature) {
game.doAction(new MagicDestroyAction(creature));
}
});
}
};
}

View File

@ -0,0 +1,52 @@
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;
public class Joint_Assault {
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.create(),
new Object[]{cardOnStack},
this,
"Target creature$ gets +2/+2 until end of turn. " +
"If it's paired with a creature, that creature " +
"also gets +2/+2 until end of turn.");
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object[] data,
final Object[] choiceResults) {
game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0]));
event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() {
public void doAction(final MagicPermanent creature) {
game.doAction(new MagicChangeTurnPTAction(creature,2,2));
if (creature.isPaired()) {
game.doAction(new MagicChangeTurnPTAction(
creature.getPairedCreature(),
2,
2));
}
}
});
}
};
}

View File

@ -0,0 +1,54 @@
package magic.card;
import magic.model.MagicDamage;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.MagicSubType;
import magic.model.action.MagicDealDamageAction;
import magic.model.action.MagicPlayerAction;
import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent;
import magic.model.target.MagicDamageTargetPicker;
import magic.model.trigger.MagicWhenComesIntoPlayTrigger;
public class Kessig_Malcontents {
public static final MagicWhenComesIntoPlayTrigger T = new MagicWhenComesIntoPlayTrigger() {
@Override
public MagicEvent executeTrigger(
final MagicGame game,
final MagicPermanent permanent,
final MagicPlayer player) {
final int amount = player.getNrOfPermanentsWithSubType(MagicSubType.Human);
return new MagicEvent(
permanent,
player,
MagicTargetChoice.NEG_TARGET_PLAYER,
new MagicDamageTargetPicker(amount),
new Object[]{permanent},
this,
permanent + " deals damage to target player$ " +
"equal to the number of Humans " + player + " controls.");
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object data[],
final Object[] choiceResults) {
event.processTargetPlayer(game,choiceResults,0,new MagicPlayerAction() {
public void doAction(final MagicPlayer player) {
final int amount = event.getPlayer().getNrOfPermanentsWithSubType(MagicSubType.Human);
final MagicDamage damage = new MagicDamage(
event.getSource(),
player,
amount,
false);
game.doAction(new MagicDealDamageAction(damage));
}
});
}
};
}

View File

@ -0,0 +1,44 @@
package magic.card;
import magic.model.MagicCard;
import magic.model.MagicCardList;
import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPlayer;
import magic.model.action.MagicDrawAction;
import magic.model.action.MagicMoveCardAction;
import magic.model.action.MagicPlayerAction;
import magic.model.event.MagicEvent;
import magic.model.event.MagicDiscardEvent;
import magic.model.event.MagicSpellCardEvent;
import magic.model.stack.MagicCardOnStack;
public class Wheel_of_Fortune {
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
@Override
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
return new MagicEvent(
cardOnStack.getCard(),
cardOnStack.getController(),
new Object[]{cardOnStack},
this,
"Each player discards his or her hand and draws seven cards."
);
}
@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));
for (final MagicPlayer player : game.getPlayers()) {
game.addEvent(new MagicDiscardEvent(cardOnStack.getCard(), player, player.getHandSize(), true));
game.doAction(new MagicDrawAction(player, 7));
}
}
};
}

View File

@ -265,6 +265,9 @@ public class MagicTargetChoice extends MagicChoice {
public static final MagicTargetChoice POS_TARGET_SAMURAI =
new MagicTargetChoice(MagicTargetFilter.TARGET_SAMURAI,true,MagicTargetHint.Positive,
"target Samurai");
public static final MagicTargetChoice NEG_TARGET_HUMAN_CREATURE =
new MagicTargetChoice(MagicTargetFilter.TARGET_HUMAN,true,MagicTargetHint.Negative,
"target Human creature");
public static final MagicTargetChoice SACRIFICE_PERMANENT =
new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT_YOU_CONTROL,false,MagicTargetHint.None,"a permanent to sacrifice");
public static final MagicTargetChoice SACRIFICE_CREATURE=