mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
- Converted Elspeth Tirel to AFs
- Added checkStateEffects after UnfreezeStack so Planeswalkers Loyalty is checked after paying costs
This commit is contained in:
@@ -3,6 +3,10 @@ ManaCost:3 W W
|
||||
Types:Planeswalker - Elspeth
|
||||
Text:no text
|
||||
Loyalty:4
|
||||
A:AB$GainLife | Cost$ AddCounter<2/LOYALTY> | LifeAmount$ XLife | Planeswalker$ True | SpellDescription$ You gain 1 life for each creature you control.
|
||||
A:AB$Token | Cost$ SubCounter<2/LOYALTY> |TokenAmount$ 3 | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenOwner$ Controller | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Put three 1/1 white Soldier creature tokens onto the battlefield.
|
||||
A:AB$DestroyAll | Cost$ SubCounter<5/LOYALTY> | ValidCards$ Permanent.nonLand+nonToken+Other | SpellDescription$ Destroy all other permanents except for lands and tokens.
|
||||
SVar:XLife:Count$TypeYouCtrl.Creature
|
||||
SVar:Rarity:Mythic
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/elspeth_tirel.jpg
|
||||
SetInfo:SOM|Mythic|http://magiccards.info/scans/en/som/6.jpg
|
||||
|
||||
@@ -2508,192 +2508,6 @@ class CardFactory_Planeswalkers {
|
||||
return card;
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Elspeth Tirel")) {
|
||||
|
||||
//Planeswalker book-keeping
|
||||
final int turn[] = new int[1];
|
||||
turn[0] = -1;
|
||||
|
||||
final SpellAbility ability3 = new Ability(card, "0")
|
||||
{
|
||||
public void resolve()
|
||||
{
|
||||
card.subtractCounter(Counters.LOYALTY, 5);
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
|
||||
CardList list = AllZoneUtil.getCardsInPlay();
|
||||
list = list.filter(new CardListFilter(){
|
||||
public boolean addCard(Card c)
|
||||
{
|
||||
return !c.isToken() && !c.isLand() && !c.equals(card);
|
||||
}
|
||||
});
|
||||
|
||||
CardListUtil.sortByIndestructible(list);
|
||||
CardListUtil.sortByDestroyEffect(list);
|
||||
|
||||
for (int i=0;i<list.size();i++)
|
||||
{
|
||||
AllZone.GameAction.destroy(list.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
CardList humanList = AllZoneUtil.getPlayerCardsInPlay(AllZone.HumanPlayer);
|
||||
CardList compList = AllZoneUtil.getPlayerCardsInPlay(AllZone.ComputerPlayer);
|
||||
|
||||
CardListFilter filter = new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c) {
|
||||
return !c.getName().equals("Mana Pool") && !c.isLand() && !c.isToken() && !c.equals(card) &&
|
||||
!c.getKeyword().contains("Indestructible");
|
||||
}
|
||||
};
|
||||
|
||||
humanList = humanList.filter(filter);
|
||||
compList = compList.filter(filter);
|
||||
|
||||
return card.getCounters(Counters.LOYALTY) > 5 && (humanList.size() > (compList.size() +1));
|
||||
}
|
||||
|
||||
public boolean canPlay() {
|
||||
return card.getCounters(Counters.LOYALTY) >= 5
|
||||
&& AllZone.getZone(card).is(Constant.Zone.Play)
|
||||
&& turn[0] != AllZone.Phase.getTurn()
|
||||
&& Phase.canCastSorcery(card.getController());
|
||||
}//canPlay()
|
||||
};
|
||||
|
||||
ability3.setBeforePayMana(new Input() {
|
||||
|
||||
private static final long serialVersionUID = -3310512279978705284L;
|
||||
int check = -1;
|
||||
|
||||
@Override
|
||||
public void showMessage() {
|
||||
if(check != AllZone.Phase.getTurn()) {
|
||||
check = AllZone.Phase.getTurn();
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
AllZone.Stack.add(ability3);
|
||||
}
|
||||
stop();
|
||||
}//showMessage()
|
||||
});
|
||||
|
||||
//ability 1: gain 1 life for each creature
|
||||
final SpellAbility ability1 = new Ability(card, "0") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
card.addCounterFromNonEffect(Counters.LOYALTY, 2);
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
|
||||
int life = AllZoneUtil.getCreaturesInPlay(card.getController()).size();
|
||||
card.getController().gainLife(life, card);
|
||||
Log.debug("Elspeth Tirel", "current phase: " + AllZone.Phase.getPhase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCreaturesInPlay();
|
||||
return (list.size() > 2 || card.getCounters(Counters.LOYALTY) < 4) &&
|
||||
!(ability3.canPlay() && ability3.canPlayAI()) && card.getCounters(Counters.LOYALTY) < 12;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlay() {
|
||||
return 0 < card.getCounters(Counters.LOYALTY)
|
||||
&& AllZone.getZone(card).is(Constant.Zone.Play)
|
||||
&& turn[0] != AllZone.Phase.getTurn()
|
||||
&& Phase.canCastSorcery(card.getController());
|
||||
}//canPlay()
|
||||
};//SpellAbility ability1
|
||||
|
||||
ability1.setBeforePayMana(new Input() {
|
||||
private static final long serialVersionUID = -7969603493514210825L;
|
||||
|
||||
int check = -1;
|
||||
|
||||
@Override
|
||||
public void showMessage() {
|
||||
if(check != AllZone.Phase.getTurn()) {
|
||||
check = AllZone.Phase.getTurn();
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
AllZone.Stack.add(ability1);
|
||||
}
|
||||
stop();
|
||||
}//showMessage()
|
||||
});
|
||||
|
||||
//ability 1: create 3 white 1/1 tokens
|
||||
final SpellAbility ability2 = new Ability(card, "0") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
card.subtractCounter(Counters.LOYALTY, 2);
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
|
||||
for (int i=0;i<3;i++)
|
||||
CardFactoryUtil.makeToken("Soldier", "W 1 1 Soldier", card.getController(), "W", new String[] {
|
||||
"Creature", "Soldier"}, 1, 1, new String[] {""});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
return card.getCounters(Counters.LOYALTY) >= 3 &&
|
||||
!(ability3.canPlay() && ability3.canPlayAI());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlay() {
|
||||
return card.getCounters(Counters.LOYALTY) >= 2
|
||||
&& AllZone.getZone(card).is(Constant.Zone.Play)
|
||||
&& turn[0] != AllZone.Phase.getTurn()
|
||||
&& Phase.canCastSorcery(card.getController());
|
||||
}//canPlay()
|
||||
};//SpellAbility ability2
|
||||
|
||||
ability2.setBeforePayMana(new Input() {
|
||||
|
||||
private static final long serialVersionUID = 5089161242872591541L;
|
||||
int check = -1;
|
||||
|
||||
@Override
|
||||
public void showMessage() {
|
||||
if(check != AllZone.Phase.getTurn()) {
|
||||
check = AllZone.Phase.getTurn();
|
||||
turn[0] = AllZone.Phase.getTurn();
|
||||
AllZone.Stack.add(ability2);
|
||||
}
|
||||
stop();
|
||||
}//showMessage()
|
||||
});
|
||||
|
||||
|
||||
ability1.setDescription("+2: You gain 1 life for each creature you control.");
|
||||
StringBuilder stack1 = new StringBuilder();
|
||||
stack1.append("Elspeth Tirel - ").append(card.getController()).append(" gains 1 life for each creature he/she controls.");
|
||||
ability1.setStackDescription(stack1.toString());
|
||||
// ability1.setStackDescription("Elspeth Tirel - " + card.getController() + " gains 1 life for each creature he/she controls.");
|
||||
card.addSpellAbility(ability1);
|
||||
|
||||
ability2.setDescription("-2: Put three white 1/1 Soldier creature tokens onto the battlefield.");
|
||||
ability2.setStackDescription("Elspeth Tirel - put three 1/1 Soldier creature tokens onto the battlefield.");
|
||||
card.addSpellAbility(ability2);
|
||||
|
||||
ability3.setDescription("-5: Destroy all other permanents except for lands and tokens.");
|
||||
StringBuilder stack3 = new StringBuilder();
|
||||
stack3.append(card.getName()).append(" - Destroy all other permanents except for lands and tokens.");
|
||||
ability3.setStackDescription(stack3.toString());
|
||||
// ability3.setStackDescription(card + " - Destroy all other permanents except for lands and tokens.");
|
||||
card.addSpellAbility(ability3);
|
||||
|
||||
card.setSVars(card.getSVars());
|
||||
card.setSets(card.getSets());
|
||||
|
||||
return card;
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Koth of the Hammer")) {
|
||||
//computer only plays ability 1 and 3, put 1/1 Soldier in play and make everything indestructible
|
||||
|
||||
@@ -39,6 +39,7 @@ public class MagicStack extends MyObservable {
|
||||
frozenStack.remove(0);
|
||||
this.add(sa);
|
||||
}
|
||||
AllZone.GameAction.checkStateEffects();
|
||||
}
|
||||
|
||||
public void clearFrozen() {
|
||||
|
||||
Reference in New Issue
Block a user