diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index e4ecef3b504..d920c0b5d9e 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -21,6 +21,7 @@ import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import forge.card.CardStateName; +import forge.game.CardTraitBase; import forge.game.IHasSVars; import forge.game.ability.effects.CharmEffect; import forge.game.card.Card; @@ -226,7 +227,14 @@ public final class AbilityFactory { msg.append(". Looking for API: ").append(api); throw new RuntimeException(msg.toString()); } - spellAbility.setCardState(state); + + if (sVarHolder instanceof CardState) { + spellAbility.setCardState((CardState)sVarHolder); + } else if (sVarHolder instanceof CardTraitBase) { + spellAbility.setCardState(((CardTraitBase)sVarHolder).getCardState()); + } else { + spellAbility.setCardState(state); + } if (mapParams.containsKey("Forecast")) { spellAbility.putParam("ActivationZone", "Hand"); diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java index 404aa9ae796..c8ff2a0e5e8 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java @@ -736,6 +736,7 @@ public final class StaticAbilityContinuous { if (abilty.startsWith("AB") || abilty.startsWith("ST")) { // grant the ability final SpellAbility sa = AbilityFactory.getAbility(abilty, affectedCard, stAb); sa.setIntrinsic(false); + sa.setGrantorStatic(stAb); addedAbilities.add(sa); } } diff --git a/forge-gui/res/cardsfolder/h/hankyu.txt b/forge-gui/res/cardsfolder/h/hankyu.txt index 23ac7327d36..1992637a59b 100644 --- a/forge-gui/res/cardsfolder/h/hankyu.txt +++ b/forge-gui/res/cardsfolder/h/hankyu.txt @@ -8,5 +8,4 @@ SVar:HankyuDmg:AB$ DealDamage | Cost$ T SubCounter SVar:HankyuX:SVar$CostCountersRemoved AI:RemoveDeck:All SVar:NonStackingAttachEffect:True -SVar:Picture:http://www.wizards.com/global/images/magic/general/hankyu.jpg Oracle:Equipped creature has "{T}: Put an aim counter on Hankyu" and "{T}, Remove all aim counters from Hankyu: This creature deals damage to any target equal to the number of aim counters removed this way."\nEquip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/r/razor_boomerang.txt b/forge-gui/res/cardsfolder/r/razor_boomerang.txt index 9068d317abf..b329ba4b2ea 100644 --- a/forge-gui/res/cardsfolder/r/razor_boomerang.txt +++ b/forge-gui/res/cardsfolder/r/razor_boomerang.txt @@ -2,9 +2,8 @@ Name:Razor Boomerang ManaCost:3 Types:Artifact Equipment S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ RazorDamage | AddSVar$ BoomerangCatch | Description$ Equipped creature has "{T}, Unattach CARDNAME: CARDNAME deals 1 damage to any target. Return CARDNAME to its owner's hand." -SVar:RazorDamage:AB$ DealDamage | Cost$ T Unattach | NumDmg$ 1 | DamageSource$ OriginalHost | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | RememberCostCards$ True | SubAbility$ BoomerangCatch | SpellDescription$ Razor Boomerang deals 1 damage to any target. Return Razor Boomerang to its owner's hand. -SVar:BoomerangCatch:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Remembered | ForgetChanged$ True +SVar:RazorDamage:AB$ DealDamage | Cost$ T Unattach | NumDmg$ 1 | DamageSource$ OriginalHost | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ BoomerangCatch | SpellDescription$ ORIGINALHOST deals 1 damage to any target. Return ORIGINALHOST to its owner's hand. +SVar:BoomerangCatch:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ OriginalHost K:Equip:2 SVar:NonStackingAttachEffect:True -SVar:Picture:http://www.wizards.com/global/images/magic/general/razor_boomerang.jpg Oracle:Equipped creature has "{T}, Unattach Razor Boomerang: It deals 1 damage to any target. Return Razor Boomerang to its owner's hand."\nEquip {2} diff --git a/forge-gui/res/cardsfolder/s/shuriken.txt b/forge-gui/res/cardsfolder/s/shuriken.txt index b1215e95126..05aa97e956c 100644 --- a/forge-gui/res/cardsfolder/s/shuriken.txt +++ b/forge-gui/res/cardsfolder/s/shuriken.txt @@ -3,11 +3,9 @@ ManaCost:1 Types:Artifact Equipment K:Equip:2 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ ShurikenDamage | AddSVar$ ShurikenGainCtrl & ShurikenForget | Description$ Equipped creature has "{T}, Unattach CARDNAME: CARDNAME deals 2 damage to target creature. That creature's controller gains control of CARDNAME unless it was unattached from a Ninja." -SVar:ShurikenDamage:AB$ DealDamage | Cost$ T Unattach | NumDmg$ 2 | DamageSource$ OriginalHost | RememberCostCards$ True | ValidTgts$ Creature | SubAbility$ ShurikenGainCtrl | SpellDescription$ Shuriken deals 2 damage to target creature. That creature's controller gains control of Shuriken unless it was unattached from a Ninja -SVar:ShurikenGainCtrl:DB$ GainControl | NewController$ TargetedController | Defined$ Valid Card.IsRemembered+namedShuriken | ConditionDefined$ Self | ConditionPresent$ Ninja | ConditionCompare$ EQ0 | SubAbility$ ShurikenForget -SVar:ShurikenForget:DB$ Pump | ForgetObjects$ Valid Card.IsRemembered+namedShuriken | StackDescription$ None +SVar:ShurikenDamage:AB$ DealDamage | Cost$ T Unattach | NumDmg$ 2 | DamageSource$ OriginalHost | ValidTgts$ Creature | SubAbility$ ShurikenGainCtrl | SpellDescription$ Shuriken deals 2 damage to target creature. That creature's controller gains control of Shuriken unless it was unattached from a Ninja +SVar:ShurikenGainCtrl:DB$ GainControl | NewController$ TargetedController | Defined$ OriginalHost | ConditionDefined$ Self | ConditionPresent$ Ninja | ConditionCompare$ EQ0 AI:RemoveDeck:Random SVar:NonStackingAttachEffect:True DeckHints:Type$Ninja -SVar:Picture:http://www.wizards.com/global/images/magic/general/shuriken.jpg Oracle:Equipped creature has "{T}, Unattach Shuriken: Shuriken deals 2 damage to target creature. That creature's controller gains control of Shuriken unless it was unattached from a Ninja."\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/t/toralf_god_of_fury_toralfs_hammer.txt b/forge-gui/res/cardsfolder/t/toralf_god_of_fury_toralfs_hammer.txt index 71314db4886..4c664472236 100644 --- a/forge-gui/res/cardsfolder/t/toralf_god_of_fury_toralfs_hammer.txt +++ b/forge-gui/res/cardsfolder/t/toralf_god_of_fury_toralfs_hammer.txt @@ -15,7 +15,7 @@ Name:Toralf's Hammer ManaCost:1 R Types:Legendary Artifact Equipment S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ HammerDamage | Description$ Equipped creature has "{1}{R}, {T}, Unattach CARDNAME: It deals 3 damage to any target. Return CARDNAME to it owner’s hand." -SVar:HammerDamage:AB$ DealDamage | Cost$ 1 R T Unattach | NumDmg$ 3 | DamageSource$ OriginalHost | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ HammerCatch | SpellDescription$ Razor Boomerang deals 1 damage to any target. Return Razor Boomerang to its owner's hand. +SVar:HammerDamage:AB$ DealDamage | Cost$ 1 R T Unattach | NumDmg$ 3 | DamageSource$ OriginalHost | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ HammerCatch | SpellDescription$ ORIGINALHOST deals 1 damage to any target. Return ORIGINALHOST to its owner's hand. SVar:HammerCatch:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ OriginalHost S:Mode$ Continuous | Affected$ Card.EquippedBy+Legendary | AddPower$ 3 | Description$ Equipped creature gets +3/+0 as long as it's legendary. K:Equip:1 R