added MagicPermanentState.ExileAtEndOfCombat. added Angel token. added Geist of Saint Traft and Gallows Warden
parent
052fa1c671
commit
9dfb5cbcaa
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
|
@ -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));
|
||||
}
|
||||
};
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue