*Added Epic keyword.

*Added
	Endless Swarm
	Enduring Ideal
	Eternal Dominion
	Neverending Torment
Undying Flames can't be done in script currently.
This commit is contained in:
Hellfish
2011-10-18 15:22:23 +00:00
parent a74b45c3a8
commit a504833663
10 changed files with 127 additions and 0 deletions

4
.gitattributes vendored
View File

@@ -2411,8 +2411,10 @@ res/cardsfolder/e/endangered_armodon.txt svneol=native#text/plain
res/cardsfolder/e/endbringers_revel.txt svneol=native#text/plain
res/cardsfolder/e/endless_cockroaches.txt svneol=native#text/plain
res/cardsfolder/e/endless_ranks_of_the_dead.txt -text
res/cardsfolder/e/endless_swarm.txt -text
res/cardsfolder/e/endoskeleton.txt svneol=native#text/plain
res/cardsfolder/e/endure.txt -text
res/cardsfolder/e/enduring_ideal.txt -text
res/cardsfolder/e/enemy_of_the_guildpact.txt svneol=native#text/plain
res/cardsfolder/e/energizer.txt svneol=native#text/plain
res/cardsfolder/e/energy_arc.txt svneol=native#text/plain
@@ -2484,6 +2486,7 @@ res/cardsfolder/e/essence_warden.txt svneol=native#text/plain
res/cardsfolder/e/etched_champion.txt svneol=native#text/plain
res/cardsfolder/e/etched_monstrosity.txt svneol=native#text/plain
res/cardsfolder/e/etched_oracle.txt svneol=native#text/plain
res/cardsfolder/e/eternal_dominion.txt -text
res/cardsfolder/e/eternal_dragon.txt svneol=native#text/plain
res/cardsfolder/e/eternal_flame.txt svneol=native#text/plain
res/cardsfolder/e/eternal_warrior.txt svneol=native#text/plain
@@ -5409,6 +5412,7 @@ res/cardsfolder/n/neurok_invisimancer.txt svneol=native#text/plain
res/cardsfolder/n/neurok_prodigy.txt svneol=native#text/plain
res/cardsfolder/n/neurok_replica.txt svneol=native#text/plain
res/cardsfolder/n/neurok_spy.txt svneol=native#text/plain
res/cardsfolder/n/neverending_torment.txt -text
res/cardsfolder/n/nevermaker.txt svneol=native#text/plain
res/cardsfolder/n/nevinyrrals_disk.txt svneol=native#text/plain
res/cardsfolder/n/new_benalia.txt svneol=native#text/plain

View File

@@ -11,4 +11,5 @@ SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/dream_thief.jpg
SetInfo:EVE|Common|http://magiccards.info/scans/en/eve/20.jpg
Oracle:Flying\nWhen Dream Thief enters the battlefield, draw a card if you've cast another blue spell this turn.
Oracle:Flying\nWhen Dream Thief enters the battlefield, draw a card if you've cast another blue spell this turn.
End

View File

@@ -0,0 +1,13 @@
Name:Endless Swarm
ManaCost:5 G G G
Types:Sorcery
Text:no text
K:Epic
A:SP$ Token | Cost$ 5 G G G | TokenAmount$ X | TokenName$ Snake | TokenTypes$ Creature,Snake | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Put a 1/1 green Snake creature token onto the battlefield for each card in your hand.
SVar:X:Count$InYourHand
SVar:Rarity:Rare
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/endless_swarm.jpg
SetInfo:SOK|Rare|http://magiccards.info/scans/en/sok/129.jpg
Oracle:Put a 1/1 green Snake creature token onto the battlefield for each card in your hand.\nEpic (For the rest of the game, you can't cast spells. At the beginning of each of your upkeeps, copy this spell except for its epic ability.)
End

View File

@@ -0,0 +1,12 @@
Name:Enduring Ideal
ManaCost:5 W W
Types:Sorcery
Text:no text
K:Epic
A:SP$ChangeZone | Cost$ 5 W W | Origin$ Library | Destination$ Battlefield | ChangeType$ Enchantment | ChangeNum$ 1 | SpellDescription$ Search your library for an enchantment card and put it onto the battlefield. Then shuffle your library.
SVar:Rarity:Rare
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/enduring_ideal.jpg
Oracle:Search your library for an enchantment card and put it onto the battlefield. Then shuffle your library.\nEpic (For the rest of the game, you can't cast spells. At the beginning of each of your upkeeps, copy this spell except for its epic ability.)
SetInfo:SOK|Rare|http://magiccards.info/scans/en/sok/9.jpg
End

View File

@@ -0,0 +1,12 @@
Name:Eternal Dominion
ManaCost:7 U U U
Types:Sorcery
Text:no text
K:Epic
A:SP$ ChangeZone | Cost$ 3 U U | Origin$ Library | Destination$ Battlefield | ValidTgts$ Opponent | ChangeType$ Artifact,Creature,Enchantment,Land | ChangeNum$ 1 | GainControl$ True | IsCurse$ True | SpellDescription$ Search target opponent's library for a creature card and put that card onto the battlefield under your control. Then that player shuffles his or her library.
SVar:Rarity:Rare
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/eternal_dominion.jpg
Oracle:Search target opponent's library for an artifact, creature, enchantment, or land card. Put that card onto the battlefield under your control. Then that player shuffles his or her library.\nEpic (For the rest of the game, you can't cast spells. At the beginning of each of your upkeeps, copy this spell except for its epic ability. You may choose a new target for the copy.)
SetInfo:SOK|Rare|http://magiccards.info/scans/en/sok/36.jpg
End

View File

@@ -0,0 +1,11 @@
Name:Neverending Torment
ManaCost:4 B B
Types:Sorcery
Text:no text
K:Epic
A:SP$ ChangeZone | Cost$ 4 B B | Origin$ Library | Destination$ Exile | ValidTgts$ Player | ChangeType$ Card | ChangeNum$ X | IsCurse$ True | SpellDescription$ Search target player's library for X cards, where X is the number of cards in your hand, and exile it. Then that player shuffles his or her library.
SVar:X:Count$InYourHand
SVar:Rarity:Rare
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/neverending_torment.jpg
End

View File

@@ -1160,6 +1160,8 @@ public class GameAction {
canShowWinLose = true;
forge.card.trigger.Trigger.resetIDs();
AllZone.getTriggerHandler().clearTriggerSettings();
AllZone.getHumanPlayer().setEpicSpell(null);
AllZone.getComputerPlayer().setEpicSpell(null);
{ //re-number cards just so their unique numbers are low, just for user friendliness
CardFactoryInterface c = AllZone.getCardFactory();

View File

@@ -49,6 +49,8 @@ public abstract class Player extends GameEntity {
Map<Constant.Zone, PlayerZone> zones = new EnumMap<Constant.Zone, PlayerZone>(Constant.Zone.class);
public final static List<Zone> ALL_ZONES = Collections.unmodifiableList(Arrays.asList(Zone.Battlefield, Zone.Library, Zone.Graveyard, Zone.Hand, Zone.Exile, Zone.Command));
private SpellAbility epicSpell = null;
/**
* <p>Constructor for Player.</p>
@@ -1914,4 +1916,18 @@ public abstract class Player extends GameEntity {
return p1.getName().equals(getName());
} else return false;
}
/**
* @return the epicSpell
*/
public SpellAbility getEpicSpell() {
return epicSpell;
}
/**
* @param epicSpell0 the epicSpell to set
*/
public void setEpicSpell(SpellAbility epicSpell0) {
this.epicSpell = epicSpell0;
}
}

View File

@@ -4981,6 +4981,57 @@ public class CardFactoryUtil {
card.setSVar("ProvokeAbility", abString);
card.setSVar("DBUntap", dbString);
}
if(card.hasKeyword("Epic")) {
final SpellAbility origSA = card.getSpellAbilities().get(0);
SpellAbility newSA = new Spell(card,origSA.getPayCosts(),origSA.getTarget()) {
private static final long serialVersionUID = -7934420043356101045L;
@Override
public void resolve() {
card.getController().setEpicSpell(origSA);
//Create Epic emblem
Card eff = new Card();
eff.setName(card.toString() + " Epic");
eff.addType("Effect"); // Or Emblem
eff.setToken(true); // Set token to true, so when leaving play it gets nuked
eff.addController(card.getController());
eff.setOwner(card.getController());
eff.setImageName(card.getImageName());
eff.setColor(card.getColor());
eff.setImmutable(true);
eff.addStaticAbility("Mode$ CantBeCast | ValidCard$ Card | Caster$ You | Description$ For the rest of the game, you can't cast spells.");
Trigger copyTrigger = forge.card.trigger.TriggerHandler.parseTrigger("Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerDescription$ At the beginning of each of your upkeeps, copy " + card.toString() + " except for its epic ability.", card, false);
copyTrigger.setOverridingAbility(origSA);
eff.addTrigger(copyTrigger);
AllZone.getTriggerHandler().registerTrigger(copyTrigger);
AllZone.getTriggerHandler().suppressMode("ChangesZone");
AllZone.getGameAction().moveToPlay(eff);
AllZone.getTriggerHandler().clearSuppression("ChangesZone");
if(card.getController().isHuman()) {
AllZone.getGameAction().playSpellAbility_NoStack(origSA, false);
}
else {
ComputerUtil.playNoStack(origSA);
}
}
};
newSA.setDescription(origSA.getDescription());
origSA.setPayCosts(null);
origSA.setManaCost("0");
card.clearSpellAbility();
card.addSpellAbility(newSA);
}
return card;
}
@@ -5424,6 +5475,7 @@ public class CardFactoryUtil {
card.addTrigger(stormTrigger);
} // Storm
}
} //end class CardFactoryUtil

View File

@@ -56,6 +56,10 @@ abstract public class Spell extends SpellAbility implements java.io.Serializable
@Override
public boolean canPlay() {
if (AllZone.getStack().isSplitSecondOnStack()) return false;
if(getSourceCard().getController().getEpicSpell() != null) {
return false; //Player has cast an Epic spell and can't cast more this game.
}
Card card = getSourceCard();