- Fixed Spellweaver Helix

This commit is contained in:
swordshine
2013-05-02 08:15:04 +00:00
parent 428b91c13c
commit f895ae627d
3 changed files with 22 additions and 22 deletions

View File

@@ -3,8 +3,10 @@ ManaCost:3
Types:Artifact Types:Artifact
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigSpellweaverExile | OptionalDecider$ You | TriggerDescription$ Imprint - When CARDNAME enters the battlefield, you may exile two target sorcery cards from a single graveyard. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigSpellweaverExile | OptionalDecider$ You | TriggerDescription$ Imprint - When CARDNAME enters the battlefield, you may exile two target sorcery cards from a single graveyard.
SVar:TrigSpellweaverExile:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Exile | TargetsFromSingleZone$ True | ValidTgts$ Card.Sorcery | TargetMin$ 2 | TargetMax$ 2 | TgtPrompt$ Select two target sorcery cards from a single graveyard | Imprint$ True | SpellDescription$ Exile two sorcery cards from a single graveyard. SVar:TrigSpellweaverExile:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Exile | TargetsFromSingleZone$ True | ValidTgts$ Card.Sorcery | TargetMin$ 2 | TargetMax$ 2 | TgtPrompt$ Select two target sorcery cards from a single graveyard | Imprint$ True | SpellDescription$ Exile two sorcery cards from a single graveyard.
T:Mode$ SpellCast | ValidCard$ Card.sharesNameWith Imprinted | Execute$ TrigSpellweaverCopy | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts a card, if it has the same name as one of the cards exiled with CARDNAME, you may copy the other. If you do, you may cast the copy without paying its mana cost. T:Mode$ SpellCast | ValidCard$ Card.sharesNameWith Imprinted+nonToken | Execute$ TrigSpellweaverCopy | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts a card, if it has the same name as one of the cards exiled with CARDNAME, you may copy the other. If you do, you may cast the copy without paying its mana cost.
SVar:TrigSpellweaverCopy:AB$ Play | Cost$ 0 | Defined$ Imprinted.doesNotShareNameWith+TriggeredCard+Exiled | WithoutManaCost$ True | Optional$ True | CopyCard$ True SVar:TrigSpellweaverCopy:AB$ Pump | Cost$ 0 | RememberObjects$ TriggeredCard | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ ValidAll Card.IsImprinted+doesNotShareNameWith Remembered+inZoneExile | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/spellweaver_helix.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/spellweaver_helix.jpg

View File

@@ -5855,6 +5855,24 @@ public class Card extends GameEntity implements Comparable<Card> {
return false; return false;
} }
} }
} else if (property.startsWith("doesNotShareNameWith")) {
if (property.equals("doesNotShareNameWith")) {
if (this.getName().equals(source.getName())) {
return false;
}
} else {
final String restriction = property.split("doesNotShareNameWith ")[1];
if (restriction.equals("Remembered")) {
for (final Object rem : source.getRemembered()) {
if (rem instanceof Card) {
final Card card = (Card) rem;
if (this.getName().equals(card.getName())) {
return false;
}
}
}
}
}
} else if (property.startsWith("sharesControllerWith")) { } else if (property.startsWith("sharesControllerWith")) {
if (property.equals("sharesControllerWith")) { if (property.equals("sharesControllerWith")) {
if (!this.sharesControllerWith(source)) { if (!this.sharesControllerWith(source)) {

View File

@@ -984,26 +984,6 @@ public class AbilityUtils {
if (card.getEffectSource() != null) { if (card.getEffectSource() != null) {
sas.addAll(card.getEffectSource().getSpellAbilities()); sas.addAll(card.getEffectSource().getSpellAbilities());
} }
} else if (defined.equals("Imprinted.doesNotShareNameWith+TriggeredCard+Exiled")) {
//get Imprinted list
ArrayList<SpellAbility> imprintedCards = new ArrayList<SpellAbility>();
for (final Card imp : card.getImprinted()) {
imprintedCards.addAll(imp.getSpellAbilities());
} //get Triggered card
Card triggeredCard = null;
final SpellAbility root = sa.getRootAbility();
final Object crd = root.getTriggeringObject("Card");
if (crd instanceof Card) {
triggeredCard = game.getCardState((Card) crd);
} //find the imprinted card that does not share a name with the triggered card
for (final SpellAbility spell : imprintedCards) {
if (!spell.getSourceCard().getName().equals(triggeredCard.getName())) {
sas.add(spell);
}
} //is it exiled?
if (!sas.get(0).getSourceCard().isInZone(ZoneType.Exile)) {
sas.clear();
}
} }
if (s != null) { if (s != null) {