mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Added Seal of Fire, Seal of Cleansing, Seal of Primordium.
This commit is contained in:
@@ -1,3 +1,18 @@
|
||||
Seal of Fire
|
||||
R
|
||||
Enchantment
|
||||
no text
|
||||
|
||||
Seal of Primordium
|
||||
1 G
|
||||
Enchantment
|
||||
no text
|
||||
|
||||
Seal of Cleansing
|
||||
1 W
|
||||
Enchantment
|
||||
no text
|
||||
|
||||
Boreal Griffin
|
||||
3 W W
|
||||
Snow Creature Griffin
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<int>0</int>
|
||||
<int>155</int>
|
||||
<int>242</int>
|
||||
<int>171</int>
|
||||
<int>174</int>
|
||||
</object>
|
||||
</void>
|
||||
<void property="name">
|
||||
@@ -83,7 +83,7 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>326</int>
|
||||
<int>329</int>
|
||||
<int>242</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
@@ -98,7 +98,7 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>336</int>
|
||||
<int>339</int>
|
||||
<int>242</int>
|
||||
<int>115</int>
|
||||
</object>
|
||||
@@ -119,7 +119,7 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>451</int>
|
||||
<int>454</int>
|
||||
<int>242</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
@@ -134,7 +134,7 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>461</int>
|
||||
<int>464</int>
|
||||
<int>242</int>
|
||||
<int>107</int>
|
||||
</object>
|
||||
@@ -155,7 +155,7 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>568</int>
|
||||
<int>571</int>
|
||||
<int>242</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
@@ -170,9 +170,9 @@
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>0</int>
|
||||
<int>578</int>
|
||||
<int>581</int>
|
||||
<int>242</int>
|
||||
<int>249</int>
|
||||
<int>246</int>
|
||||
</object>
|
||||
</void>
|
||||
<void property="name">
|
||||
@@ -219,7 +219,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>0</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>827</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -230,7 +230,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>0</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>163</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -251,7 +251,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>163</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -266,7 +266,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>173</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>166</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -287,7 +287,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>339</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -302,7 +302,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>349</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>140</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -323,7 +323,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>489</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -338,7 +338,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>499</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>150</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -359,7 +359,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>649</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -374,7 +374,7 @@
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>252</int>
|
||||
<int>659</int>
|
||||
<int>906</int>
|
||||
<int>926</int>
|
||||
<int>168</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -408,7 +408,7 @@
|
||||
<object class="org.jdesktop.swingx.MultiSplitLayout$Divider">
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>1158</int>
|
||||
<int>1178</int>
|
||||
<int>0</int>
|
||||
<int>10</int>
|
||||
<int>827</int>
|
||||
@@ -423,9 +423,9 @@
|
||||
<object id="MultiSplitLayout$Split3" class="org.jdesktop.swingx.MultiSplitLayout$Split">
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>1168</int>
|
||||
<int>1188</int>
|
||||
<int>0</int>
|
||||
<int>272</int>
|
||||
<int>252</int>
|
||||
<int>827</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -434,9 +434,9 @@
|
||||
<object class="org.jdesktop.swingx.MultiSplitLayout$Leaf">
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>1168</int>
|
||||
<int>1188</int>
|
||||
<int>0</int>
|
||||
<int>272</int>
|
||||
<int>252</int>
|
||||
<int>424</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -455,9 +455,9 @@
|
||||
<object class="org.jdesktop.swingx.MultiSplitLayout$Divider">
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>1168</int>
|
||||
<int>1188</int>
|
||||
<int>424</int>
|
||||
<int>272</int>
|
||||
<int>252</int>
|
||||
<int>10</int>
|
||||
</object>
|
||||
</void>
|
||||
@@ -470,9 +470,9 @@
|
||||
<object class="org.jdesktop.swingx.MultiSplitLayout$Leaf">
|
||||
<void property="bounds">
|
||||
<object class="java.awt.Rectangle">
|
||||
<int>1168</int>
|
||||
<int>1188</int>
|
||||
<int>434</int>
|
||||
<int>272</int>
|
||||
<int>252</int>
|
||||
<int>393</int>
|
||||
</object>
|
||||
</void>
|
||||
|
||||
@@ -16598,6 +16598,150 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Seal of Cleansing") || cardName.equals("Seal of Primordium") )
|
||||
{
|
||||
final Ability ability = new Ability(card, "0")
|
||||
{
|
||||
public boolean canPlayAI() {return getArtEnchantments().size() != 0;}
|
||||
|
||||
public void chooseTargetAI()
|
||||
{
|
||||
|
||||
CardList list = getArtEnchantments();
|
||||
if (list.size() > 0)
|
||||
{
|
||||
CardListUtil.sortCMC(list);
|
||||
list.reverse();
|
||||
setTargetCard(list.get(0));
|
||||
AllZone.GameAction.sacrifice(card);
|
||||
}
|
||||
}//chooseTargetAI()
|
||||
CardList getArtEnchantments()
|
||||
{
|
||||
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Human);
|
||||
CardList list = new CardList(play.getCards());
|
||||
list = list.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c)
|
||||
{
|
||||
return c.isArtifact() || c.isEnchantment();
|
||||
}
|
||||
});
|
||||
return list;
|
||||
}//getArtEnchantments()
|
||||
|
||||
public void resolve()
|
||||
{
|
||||
if(getTargetCard() != null)
|
||||
{
|
||||
if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()) )
|
||||
AllZone.GameAction.destroy(getTargetCard());
|
||||
}
|
||||
}//resolve()
|
||||
};//SpellAbility
|
||||
|
||||
Input runtime = new Input()
|
||||
{
|
||||
private static final long serialVersionUID = -1750678113925588670L;
|
||||
|
||||
public void showMessage()
|
||||
{
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("Sacrifice " +cardName +": destroy target artifact or enchantment.");
|
||||
|
||||
PlayerZone hplay = AllZone.getZone(Constant.Zone.Play, Constant.Player.Human);
|
||||
PlayerZone cplay = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer);
|
||||
CardList choices = new CardList();
|
||||
choices.addAll(hplay.getCards());
|
||||
choices.addAll(cplay.getCards());
|
||||
|
||||
choices = choices.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c) {
|
||||
return c.isEnchantment() || c.isArtifact();
|
||||
}
|
||||
});
|
||||
stopSetNext(CardFactoryUtil.input_targetSpecific(ability, choices, "Destroy target artifact or enchantment", new Command()
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = -4987328870651000691L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
AllZone.GameAction.sacrifice(card);
|
||||
}
|
||||
}, true));
|
||||
}
|
||||
};
|
||||
|
||||
ability.setDescription("Sacrifice " + card.getName() + ": destroy target artifact or enchantment.");
|
||||
ability.setBeforePayMana(runtime);
|
||||
card.addSpellAbility(ability);
|
||||
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Seal of Fire"))
|
||||
{
|
||||
final Ability ability = new Ability(card, "0")
|
||||
{
|
||||
public boolean canPlayAI() {return getCreature().size() != 0;}
|
||||
|
||||
public void chooseTargetAI()
|
||||
{
|
||||
if(AllZone.Human_Life.getLife() < 4)
|
||||
setTargetPlayer(Constant.Player.Human);
|
||||
else
|
||||
{
|
||||
CardList list = getCreature();
|
||||
list.shuffle();
|
||||
setTargetCard(list.get(0));
|
||||
}
|
||||
AllZone.GameAction.sacrifice(card);
|
||||
}//chooseTargetAI()
|
||||
CardList getCreature()
|
||||
{
|
||||
//toughness of 1
|
||||
CardList list = CardFactoryUtil.AI_getHumanCreature(2, card, true);
|
||||
list = list.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c)
|
||||
{
|
||||
//only get 1/1 flyers or 2/1 creatures
|
||||
return (2 <= c.getNetAttack()) || c.getKeyword().contains("Flying");
|
||||
}
|
||||
});
|
||||
return list;
|
||||
}//getCreature()
|
||||
|
||||
public void resolve()
|
||||
{
|
||||
if(getTargetCard() != null)
|
||||
{
|
||||
if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()) )
|
||||
getTargetCard().addDamage(2);
|
||||
}
|
||||
else
|
||||
AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(2);
|
||||
}//resolve()
|
||||
};//SpellAbility
|
||||
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("Sacrifice Seal of Fire: Seal of Fire deals 2 damage to target creature or player.");
|
||||
ability.setBeforePayMana(CardFactoryUtil.input_targetCreaturePlayer(ability, new Command()
|
||||
{
|
||||
private static final long serialVersionUID = 4180346673509230280L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
AllZone.GameAction.sacrifice(card);
|
||||
}
|
||||
}, true));
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
// Cards with Cycling abilities
|
||||
// -1 means keyword "Cycling" not found
|
||||
if (hasKeyword(card, "Cycling") != -1)
|
||||
|
||||
@@ -4540,7 +4540,15 @@ public class CardFactory_Creatures {
|
||||
PlayerZone myPlay = AllZone.getZone(Constant.Zone.Play, card.getController());
|
||||
|
||||
CardList list = new CardList(myPlay.getCards());
|
||||
list.remove(card);//doesn't move Sky Swallower
|
||||
//list.remove(card);//doesn't move Sky Swallower
|
||||
|
||||
list = list.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c) {
|
||||
return c.getName().equals("");
|
||||
}
|
||||
});
|
||||
|
||||
while(! list.isEmpty())
|
||||
{
|
||||
((PlayerZone_ComesIntoPlay)AllZone.Human_Play).setTriggers(false);
|
||||
|
||||
Reference in New Issue
Block a user