added MagicPermanentState.ExileAtEndOfCombat. added Angel token. added Geist of Saint Traft and Gallows Warden

master
beholder 2011-09-27 10:57:12 +02:00
parent 052fa1c671
commit 9dfb5cbcaa
7 changed files with 129 additions and 6 deletions

View File

@ -3981,6 +3981,7 @@ converted=5
cost={4}{U}
pt=3/3
ability=flying
static=player
timing=fmain
>Bloodcrazed Neonate
@ -4298,6 +4299,33 @@ converted=3
cost={2}{U}
timing=counter
>Gallows Warden
image=http://magiccards.info/scans/en/isd/16.jpg
value=4
rarity=U
type=Creature
subtype=Spirit
color=w
converted=5
cost={4}{W}
pt=3/3
ability=flying
static=player
timing=fmain
>Geist of Saint Traft
image=http://magiccards.info/scans/en/isd/213.jpg
value=3
rarity=M
type=Creature
subtype=Spirit,Cleric
color=wu
converted=3
cost={1}{W}{U}
pt=2/2
ability=hexproof
timing=main
>Morkrut Banshee
image=http://magiccards.info/scans/en/isd/110.jpg
value=4

View File

@ -63,6 +63,7 @@ nine.gif;http://forums.mtgsalvation.com/images/smilies/mana9.gif
x.gif;http://forums.mtgsalvation.com/images/smilies/manax.gif
tapped.gif;http://forums.mtgsalvation.com/images/smilies/tap.gif
>tokens
Angel4.jpg;http://magiccards.info/extras/token/conflux/angel.jpg
Ape.jpg;http://forums.mtgsalvation.com/attachment.php?attachmentid=42431&stc=1&d=1173951187
Bat.jpg;http://img.photobucket.com/albums/v237/Xand0r/bat-token_guildpact_300.jpg
Goblin1.jpg;http://img.photobucket.com/albums/v237/Xand0r/goblin-token_ravnica_300.jpg

View File

@ -0,0 +1,23 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.target.MagicTargetFilter;
import magic.model.mstatic.MagicLayer;
import magic.model.mstatic.MagicStatic;
public class Gallows_Warden {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_SPIRIT_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(0,1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
}

View File

@ -0,0 +1,45 @@
package magic.card;
import magic.data.TokenCardDefinitions;
import magic.model.MagicCard;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
import magic.model.MagicPlayer;
import magic.model.action.MagicChangeStateAction;
import magic.model.action.MagicPlayCardAction;
import magic.model.event.MagicEvent;
import magic.model.trigger.MagicWhenAttacksTrigger;
public class Geist_of_Saint_Traft {
public static final MagicWhenAttacksTrigger T = new MagicWhenAttacksTrigger() {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) {
final MagicPlayer player = permanent.getController();
return (permanent == creature) ?
new MagicEvent(
permanent,
player,
new Object[]{player},
this,
player + " puts a 4/4 white Angel creature token with " +
"flying onto the battlefield tapped and attacking. " +
"Exile that token at end of combat."):
MagicEvent.NONE;
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object data[],
final Object[] choiceResults) {
final MagicPlayer player = (MagicPlayer)data[0];
final MagicCard card = MagicCard.createTokenCard(TokenCardDefinitions.ANGEL4_TOKEN_CARD,player);
final MagicPlayCardAction action = new MagicPlayCardAction(card,player,MagicPlayCardAction.TAPPED_ATTACKING);
//game.doAction(new MagicPlayCardAction(card,player,MagicPlayCardAction.TAPPED_ATTACKING));
game.doAction(action);
game.doAction(new MagicChangeStateAction(action.getPermanent(),MagicPermanentState.ExileAtEndOfCombat,true));
}
};
}

View File

@ -13,6 +13,20 @@ import java.util.List;
public class TokenCardDefinitions {
public static final MagicCardDefinition ANGEL4_TOKEN_CARD=new MagicCardDefinition("Angel","Angel4") {
public void initialize() {
setToken();
setValue(4);
addType(MagicType.Creature);
setSubTypes(new String[]{"Angel"});
setCost(MagicManaCost.ZERO);
setColor(MagicColor.White);
setColoredType();
setPowerToughness(4,4);
setAbility(MagicAbility.Flying);
}
};
public static final MagicCardDefinition DRAGON4_TOKEN_CARD=new MagicCardDefinition("Dragon","Dragon4") {
public void initialize() {
setToken();
@ -435,6 +449,7 @@ public class TokenCardDefinitions {
};
public static final List<MagicCardDefinition> TOKEN_CARDS=Arrays.asList(
ANGEL4_TOKEN_CARD,
DRAGON4_TOKEN_CARD,
DRAGON5_TOKEN_CARD,
WORM_TOKEN_CARD,

View File

@ -19,6 +19,7 @@ public enum MagicPermanentState {
Kicked("kicked",""),
Destroyed("destroyed",""),
ReturnToOwnerAtEndOfTurn("return to owner at end of turn","{R}"),
ExileAtEndOfCombat("exile at end of combat","")
;
public static final int CLEANUP_MASK=

View File

@ -1,9 +1,12 @@
package magic.model.phase;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
import magic.model.MagicPlayer;
import magic.model.action.MagicRemoveFromCombatAction;
import magic.model.action.MagicRemoveFromPlayAction;
public class MagicEndOfCombatPhase extends MagicPhase {
@ -29,13 +32,20 @@ public class MagicEndOfCombatPhase extends MagicPhase {
public void executeEndOfPhase(final MagicGame game) {
for (final MagicPlayer player : game.getPlayers()) {
for (final MagicPermanent permanent : player.getPermanents()) {
if (permanent.isAttacking()||permanent.isBlocking()) {
game.doAction(new MagicRemoveFromCombatAction(permanent));
boolean changed;
do {
changed = false;
for (final MagicPermanent permanent : player.getPermanents()) {
if (permanent.hasState(MagicPermanentState.ExileAtEndOfCombat)) {
game.doAction(new MagicRemoveFromPlayAction(permanent,MagicLocationType.Exile));
changed = true;
break;
}
else if (permanent.isAttacking()||permanent.isBlocking()) {
game.doAction(new MagicRemoveFromCombatAction(permanent));
}
}
}
} while (changed);
}
}
}