StaticAbilityContinuous: fix OriginalHost for abilities gained by static abilities

This commit is contained in:
Hans Mackowiak
2021-03-04 07:23:01 +01:00
parent ab537a9e69
commit 7525a1062e
6 changed files with 15 additions and 10 deletions

View File

@@ -21,6 +21,7 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import forge.card.CardStateName; import forge.card.CardStateName;
import forge.game.CardTraitBase;
import forge.game.IHasSVars; import forge.game.IHasSVars;
import forge.game.ability.effects.CharmEffect; import forge.game.ability.effects.CharmEffect;
import forge.game.card.Card; import forge.game.card.Card;
@@ -226,7 +227,14 @@ public final class AbilityFactory {
msg.append(". Looking for API: ").append(api); msg.append(". Looking for API: ").append(api);
throw new RuntimeException(msg.toString()); throw new RuntimeException(msg.toString());
} }
if (sVarHolder instanceof CardState) {
spellAbility.setCardState((CardState)sVarHolder);
} else if (sVarHolder instanceof CardTraitBase) {
spellAbility.setCardState(((CardTraitBase)sVarHolder).getCardState());
} else {
spellAbility.setCardState(state); spellAbility.setCardState(state);
}
if (mapParams.containsKey("Forecast")) { if (mapParams.containsKey("Forecast")) {
spellAbility.putParam("ActivationZone", "Hand"); spellAbility.putParam("ActivationZone", "Hand");

View File

@@ -736,6 +736,7 @@ public final class StaticAbilityContinuous {
if (abilty.startsWith("AB") || abilty.startsWith("ST")) { // grant the ability if (abilty.startsWith("AB") || abilty.startsWith("ST")) { // grant the ability
final SpellAbility sa = AbilityFactory.getAbility(abilty, affectedCard, stAb); final SpellAbility sa = AbilityFactory.getAbility(abilty, affectedCard, stAb);
sa.setIntrinsic(false); sa.setIntrinsic(false);
sa.setGrantorStatic(stAb);
addedAbilities.add(sa); addedAbilities.add(sa);
} }
} }

View File

@@ -8,5 +8,4 @@ SVar:HankyuDmg:AB$ DealDamage | Cost$ T SubCounter<All/AIM/OriginalHost/Hankyu>
SVar:HankyuX:SVar$CostCountersRemoved SVar:HankyuX:SVar$CostCountersRemoved
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:NonStackingAttachEffect:True 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.) 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.)

View File

@@ -2,9 +2,8 @@ Name:Razor Boomerang
ManaCost:3 ManaCost:3
Types:Artifact Equipment 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." 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<OriginalHost/Razor Boomerang> | 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:RazorDamage:AB$ DealDamage | Cost$ T Unattach<OriginalHost/Razor Boomerang> | 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$ Remembered | ForgetChanged$ True SVar:BoomerangCatch:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ OriginalHost
K:Equip:2 K:Equip:2
SVar:NonStackingAttachEffect:True 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} 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}

View File

@@ -3,11 +3,9 @@ ManaCost:1
Types:Artifact Equipment Types:Artifact Equipment
K:Equip:2 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." 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<OriginalHost/Shuriken> | 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:ShurikenDamage:AB$ DealDamage | Cost$ T Unattach<OriginalHost/Shuriken> | 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$ Valid Card.IsRemembered+namedShuriken | ConditionDefined$ Self | ConditionPresent$ Ninja | ConditionCompare$ EQ0 | SubAbility$ ShurikenForget SVar:ShurikenGainCtrl:DB$ GainControl | NewController$ TargetedController | Defined$ OriginalHost | ConditionDefined$ Self | ConditionPresent$ Ninja | ConditionCompare$ EQ0
SVar:ShurikenForget:DB$ Pump | ForgetObjects$ Valid Card.IsRemembered+namedShuriken | StackDescription$ None
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:NonStackingAttachEffect:True SVar:NonStackingAttachEffect:True
DeckHints:Type$Ninja 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.) 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.)

View File

@@ -15,7 +15,7 @@ Name:Toralf's Hammer
ManaCost:1 R ManaCost:1 R
Types:Legendary Artifact Equipment 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 owners hand." 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 owners hand."
SVar:HammerDamage:AB$ DealDamage | Cost$ 1 R T Unattach<OriginalHost/Toralf's Hammer> | 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<OriginalHost/Toralf's Hammer> | 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 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. 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 K:Equip:1 R