diff --git a/.gitattributes b/.gitattributes index d647032ae41..0ca052d8528 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8404,6 +8404,7 @@ res/cardsfolder/p/punish_ignorance.txt svneol=native#text/plain res/cardsfolder/p/punish_the_enemy.txt -text res/cardsfolder/p/punishing_fire.txt svneol=native#text/plain res/cardsfolder/p/puppet_conjurer.txt svneol=native#text/plain +res/cardsfolder/p/puppet_master.txt -text res/cardsfolder/p/puppet_strings.txt svneol=native#text/plain res/cardsfolder/p/puppeteer.txt svneol=native#text/plain res/cardsfolder/p/puppeteer_clique.txt svneol=native#text/plain @@ -10056,6 +10057,7 @@ res/cardsfolder/s/skybreen.txt -text res/cardsfolder/s/skyclaw_thrash.txt -text res/cardsfolder/s/skycloud_egg.txt svneol=native#text/plain res/cardsfolder/s/skycloud_expanse.txt svneol=native#text/plain +res/cardsfolder/s/skyfire_kirin.txt -text res/cardsfolder/s/skygames.txt -text res/cardsfolder/s/skyhunter_cub.txt svneol=native#text/plain res/cardsfolder/s/skyhunter_patrol.txt svneol=native#text/plain diff --git a/res/cardsfolder/p/puppet_master.txt b/res/cardsfolder/p/puppet_master.txt new file mode 100644 index 00000000000..a2f9d6c5365 --- /dev/null +++ b/res/cardsfolder/p/puppet_master.txt @@ -0,0 +1,10 @@ +Name:Puppet Master +ManaCost:U U U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ U U U | ValidTgts$ Creature | AILogic$ Pump +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.EnchantedBy | Execute$ TrigChange | TriggerDescription$ When enchanted creature dies, return that card to its owner's hand. If that card is returned to its owner's hand this way, you may pay U U U. If you do, return CARDNAME to its owner's hand. +SVar:TrigChange:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand | Defined$ TriggeredCard | RememberChanged$ True | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ GE1 | UnlessCost$ U U U | UnlessPayer$ You | UnlessSwitched$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/puppet_master.jpg +Oracle:Enchant creature\nWhen enchanted creature dies, return that card to its owner's hand. If that card is returned to its owner's hand this way, you may pay {U}{U}{U}. If you do, return Puppet Master to its owner's hand. diff --git a/res/cardsfolder/s/skyfire_kirin.txt b/res/cardsfolder/s/skyfire_kirin.txt new file mode 100644 index 00000000000..5523dfef8c6 --- /dev/null +++ b/res/cardsfolder/s/skyfire_kirin.txt @@ -0,0 +1,11 @@ +Name:Skyfire Kirin +ManaCost:2 R R +Types:Legendary Creature Kirin Spirit +PT:3/3 +K:Flying +T:Mode$ SpellCast | ValidCard$ Spirit,Arcane | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ Whenever you cast a Spirit or Arcane spell, you may gain control of target creature with that spell's converted mana cost until end of turn. +SVar:TrigChange:AB$ GainControl | Cost$ 0 | ValidTgts$ Creature.cmcEQX | TgtPrompt$ Select target creature | LoseControl$ EOT | NewController$ You | References$ X +SVar:X:Count$TriggeredCardManaCost +DeckHints:Type$Spirit|Arcane +SVar:Picture:http://www.wizards.com/global/images/magic/general/skyfire_kirin.jpg +Oracle:Flying\nWhenever you cast a Spirit or Arcane spell, you may gain control of target creature with that spell's converted mana cost until end of turn. diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 53204d4aa0b..36f6ed01f05 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -110,7 +110,6 @@ public class Card extends GameEntity implements Comparable { private final CardDamageHistory damageHistory = new CardDamageHistory(); private Map counters = new TreeMap(); private Map> countersAddedBy = new TreeMap>(); - private final Map triggeringObjects = new TreeMap(); private ArrayList extrinsicKeyword = new ArrayList(); // Hidden keywords won't be displayed on the card private final ArrayList hiddenExtrinsicKeyword = new ArrayList(); @@ -821,7 +820,17 @@ public class Card extends GameEntity implements Comparable { * @return a {@link java.lang.Object} object. */ public final Object getTriggeringObject(final String typeIn) { - return this.triggeringObjects.get(typeIn); + Object triggered = null; + if (!this.getCharacteristics().getTriggers().isEmpty()) { + for (final Trigger t : this.getCharacteristics().getTriggers()) { + final SpellAbility sa = t.getTriggeredSA(); + triggered = sa.getTriggeringObject(typeIn); + if (triggered != null) { + break; + } + } + } + return triggered; } /** diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 87956e435ff..181c5136972 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -1288,7 +1288,7 @@ public class CardFactoryUtil { if (sq[0].equals("RegeneratedThisTurn")) return doXMath(c.getRegeneratedThisTurn(), m, c); // TriggeringObjects - if (sq[0].startsWith("Triggered")) return doXMath((Integer) c.getTriggeringObject(sq[0].substring(9)), m, c); + if (sq[0].startsWith("Triggered")) return doXMath(xCount((Card) c.getTriggeringObject("Card"), sq[0].substring(9)), m, c); if (sq[0].contains("YourStartingLife")) return doXMath(cc.getStartingLife(), m, c); //if (sq[0].contains("OppStartingLife")) return doXMath(oppController.getStartingLife(), m, c); // found no cards using it