mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Fix being able to pay mana for Hogaak
This commit is contained in:
@@ -376,7 +376,7 @@ public class ComputerUtilMana {
|
||||
}
|
||||
|
||||
final String typeRes = cost.getSourceRestriction();
|
||||
if (StringUtils.isNotBlank(typeRes) && !paymentChoice.getHostCard().getType().hasStringType(typeRes)) {
|
||||
if (StringUtils.isNotBlank(typeRes) && !paymentChoice.getHostCard().isValid(typeRes, null, null, null)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.game.ability;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@@ -2381,7 +2382,14 @@ public class AbilityUtils {
|
||||
if (sq[0].contains("CombatDamage")) {
|
||||
isCombat = true;
|
||||
}
|
||||
return doXMath(game.getDamageDoneThisTurn(isCombat, false, props[1], props[2], c, player, ctb).size(), expr, c, ctb);
|
||||
int num;
|
||||
List<Integer> dmgInstances = game.getDamageDoneThisTurn(isCombat, false, props[1], props[2], c, player, ctb);
|
||||
if (sq[0].contains("Max")) {
|
||||
num = Collections.max(dmgInstances);
|
||||
} else {
|
||||
num = dmgInstances.size();
|
||||
}
|
||||
return doXMath(num, expr, c, ctb);
|
||||
}
|
||||
|
||||
if (sq[0].equals("YourTurns")) {
|
||||
|
||||
@@ -923,7 +923,7 @@ public class CardFactoryUtil {
|
||||
|
||||
StringBuilder trigReturn = new StringBuilder();
|
||||
trigReturn.append("Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self");
|
||||
trigReturn.append(" | Secondary$ True | TriggerDescription$ When this permanent leaves the battlefield, return the exiled card to the battlefield under its owner’s control.");
|
||||
trigReturn.append(" | Secondary$ True | TriggerDescription$ When this permanent leaves the battlefield, return the exiled card to the battlefield under its owner's control.");
|
||||
|
||||
StringBuilder ab = new StringBuilder();
|
||||
ab.append("DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True ");
|
||||
|
||||
@@ -313,7 +313,7 @@ public class CostPayment extends ManaConversionMatrix {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(restriction) && !thisMana.getSourceCard().getType().hasStringType(restriction)) {
|
||||
if (StringUtils.isNotBlank(restriction) && !thisMana.getSourceCard().isValid(restriction, null, null, null)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ public class ManaPool extends ManaConversionMatrix implements Iterable<Mana> {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(restriction) && !mana.getSourceCard().getType().hasStringType(restriction)) {
|
||||
if (StringUtils.isNotBlank(restriction) && !mana.getSourceCard().isValid(restriction, null, null, null)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ Name:Ancestral Katana
|
||||
ManaCost:1 W
|
||||
Types:Artifact Equipment
|
||||
T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, you may pay {1}. When you do, attach CARDNAME to it.
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigAttach | RememberObjects$ TriggeredAttacker | TriggerDescription$ When you do, attach CARDNAME to it.
|
||||
SVar:TrigAttach:DB$ Attach | Defined$ DelayTriggerRemembered
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigAttach | RememberObjects$ TriggeredAttackerLKICopy | TriggerDescription$ When you do, attach CARDNAME to it.
|
||||
SVar:TrigAttach:DB$ Attach | Defined$ DelayTriggerRememberedLKI
|
||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 1 | Description$ Equipped creature gets +2/+1.
|
||||
K:Equip:3
|
||||
DeckHints:Type$Samurai|Warrior
|
||||
|
||||
@@ -4,7 +4,7 @@ Types:Creature Angel
|
||||
PT:3/5
|
||||
K:Flying
|
||||
T:Mode$ Attacks | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever a creature attacks, you may pay {3}. When you do, put a +1/+1 counter on that creature.
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 3 | Execute$ TrigCounter | RememberObjects$ TriggeredAttacker | SpellDescription$ Whenever a creature attacks, you may pay {3}. When you do, put a +1/+1 counter on that creature.
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 3 | Execute$ TrigCounter | RememberObjects$ TriggeredAttackerLKICopy | SpellDescription$ Whenever a creature attacks, you may pay {3}. When you do, put a +1/+1 counter on that creature.
|
||||
SVar:TrigCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 | Defined$ DelayTriggerRememberedLKI
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Flying\nWhenever a creature attacks, you may pay {3}. When you do, put a +1/+1 counter on that creature.
|
||||
|
||||
@@ -4,6 +4,6 @@ Types:Enchantment
|
||||
S:Mode$ Continuous | Affected$ Creature.Black | AddPower$ 1 | AddToughness$ 1 | Description$ Black creatures get +1/+1.
|
||||
SVar:PlayMain1:TRUE
|
||||
SVar:NeedsToPlayVar:CountOpps LTCountMe
|
||||
SVar:CountOpp:Count$Valid Creature.OppCtrl+Black/LimitMax.5
|
||||
SVar:CountOpps:Count$Valid Creature.OppCtrl+Black/LimitMax.5
|
||||
SVar:CountMe:Count$Valid Creature.YouCtrl+Black
|
||||
Oracle:Black creatures get +1/+1.
|
||||
|
||||
@@ -4,6 +4,6 @@ Types:Enchantment
|
||||
S:Mode$ Continuous | Affected$ Creature.White | AddPower$ 1 | AddToughness$ 1 | Description$ White creatures get +1/+1.
|
||||
SVar:PlayMain1:TRUE
|
||||
SVar:NeedsToPlayVar:CountOpps LTCountMe
|
||||
SVar:CountOpp:Count$Valid Creature.OppCtrl+White/LimitMax.5
|
||||
SVar:CountOpps:Count$Valid Creature.OppCtrl+White/LimitMax.5
|
||||
SVar:CountMe:Count$Valid Creature.YouCtrl+White
|
||||
Oracle:White creatures get +1/+1.
|
||||
|
||||
@@ -3,5 +3,5 @@ ManaCost:1 G G
|
||||
Types:Enchantment
|
||||
A:AB$ Animate | Cost$ Return<1/CARDNAME> | ValidTgts$ Creature.wasCastByYou+ThisTurnCast | TgtPrompt$ Select target creature you cast this turn | Power$ 0 | Toughness$ 1 | Duration$ UntilYourNextUpkeep | SubAbility$ DelTrig | SpellDescription$ Target creature you cast this turn has base power and toughness 0/1 until your next upkeep. At the beginning of your next upkeep, put a +1/+1 counter on that creature.
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | RememberObjects$ Targeted | Execute$ TrigGrowth | TriggerDescription$ Put a +1/+1 counter on that creature.
|
||||
SVar:TrigGrowth:DB$ PutCounter | Defined$ DelayTriggerRemembered | CounterType$ P1P1 | CounterNum$ 1
|
||||
SVar:TrigGrowth:DB$ PutCounter | Defined$ DelayTriggerRememberedLKI | CounterType$ P1P1 | CounterNum$ 1
|
||||
Oracle:Return Cycle of Life to its owner's hand: Target creature you cast this turn has base power and toughness 0/1 until your next upkeep. At the beginning of your next upkeep, put a +1/+1 counter on that creature.
|
||||
|
||||
@@ -5,6 +5,7 @@ PT:8/8
|
||||
K:Convoke
|
||||
K:Delve
|
||||
K:Trample
|
||||
Text:You can't spend mana to cast this spell.
|
||||
A:SP$ PermanentCreature | Cost$ Mana<5 BG BG\Delve,Convoke>
|
||||
SVar:AltCost:Cost$ Mana<5 BG BG\Delve,Convoke> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard.
|
||||
Oracle:You can't spend mana to cast this spell.\nConvoke, delve (Each creature you tap while casting this spell pays for {1} or one mana of that creature's color. Each card you exile from your graveyard pays for {1}.)\nYou may cast Hogaak, Arisen Necropolis from your graveyard.\nTrample
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
Name:Impact Resonance
|
||||
ManaCost:1 R
|
||||
Types:Instant
|
||||
T:Mode$ TurnBegin | Execute$ ResetDamage | Static$ True
|
||||
SVar:ResetDamage:DB$ StoreSVar | SVar$ X | Type$ Number | Expression$ 0
|
||||
T:Mode$ DamageDone | ValidTarget$ Player,Permanent | Execute$ StoreDamage | Static$ True
|
||||
SVar:StoreDamage:DB$ StoreSVar | SVar$ X | Type$ Calculate | Expression$ Y | ConditionCheckSVar$ Y | ConditionSVarCompare$ GTX
|
||||
A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature | TargetMin$ MinTgts | TargetMax$ MaxTgts | NumDmg$ X | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures, where X is the greatest amount of damage dealt by a source to a permanent or player this turn.
|
||||
SVar:X:Number$0
|
||||
SVar:Y:TriggerCount$DamageAmount
|
||||
SVar:X:Count$MaxDamageThisTurn Card Permanent,Player
|
||||
SVar:MinTgts:SVar$X/LimitMax.1
|
||||
SVar:MaxTgts:Count$Valid Creature
|
||||
Oracle:Impact Resonance deals X damage divided as you choose among any number of target creatures, where X is the greatest amount of damage dealt by a source to a permanent or player this turn.
|
||||
|
||||
@@ -3,5 +3,5 @@ ManaCost:2 G G
|
||||
Types:Creature Dinosaur
|
||||
PT:5/5
|
||||
Text:Spend only mana produced by basic lands to cast this spell.
|
||||
A:SP$ PermanentCreature | Cost$ Mana<2 G G\Basic>
|
||||
A:SP$ PermanentCreature | Cost$ Mana<2 G G\Land.Basic>
|
||||
Oracle:Spend only mana produced by basic lands to cast this spell.
|
||||
|
||||
@@ -21,8 +21,8 @@ Types:Enchantment Creature Dragon Spirit
|
||||
PT:2/2
|
||||
K:Flying
|
||||
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Creature.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever another creature enters the battlefield under your control, you may pay {X}. When you do, put X +1/+1 counters on that creature.
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ X | Execute$ TrigPutCounter | RememberObjects$ TriggeredCard | AILogic$ MaxX | TriggerDescription$ When you do, put X +1/+1 counters on that creature.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ DelayTriggerRemembered | CounterType$ P1P1 | CounterNum$ X
|
||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ X | Execute$ TrigPutCounter | RememberObjects$ TriggeredCardLKICopy | AILogic$ MaxX | TriggerDescription$ When you do, put X +1/+1 counters on that creature.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ DelayTriggerRememberedLKI | CounterType$ P1P1 | CounterNum$ X
|
||||
S:Mode$ Continuous | IsPresent$ Creature.modified+YouCtrl | PresentCompare$ GE5 | Affected$ Card.Self | AddPower$ 5 | AddToughness$ 5 | AddKeyword$ Trample | Description$ As long as you control five or more modified creatures, CARDNAME gets +5/+5 and has trample.
|
||||
SVar:X:Count$xPaid
|
||||
Oracle:Flying\nWhenever another creature enters the battlefield under your control, you may pay {X}. When you do, put X +1/+1 counters on that creature.\nAs long as you control five or more modified creatures, Remnant of the Rising Star gets +5/+5 and has trample. (Equipment, Auras you control, and counters are modifications.)
|
||||
|
||||
@@ -6,6 +6,6 @@ SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ X
|
||||
SVar:X:Count$Valid Swamp.ActivePlayerCtrl
|
||||
AI:RemoveDeck:Random
|
||||
SVar:NeedsToPlayVar:CountOpps GTCountMe
|
||||
SVar:CountOpp:Count$Valid Swamp.OppCtrl/LimitMax.5
|
||||
SVar:CountOpps:Count$Valid Swamp.OppCtrl/LimitMax.5
|
||||
SVar:CountMe:Count$Valid Swamp.YouCtrl
|
||||
Oracle:At the beginning of each player's upkeep, Karma deals damage to that player equal to the number of Swamps they control.
|
||||
|
||||
@@ -5,7 +5,7 @@ S:Mode$ Continuous | Affected$ Creature.powerGE3 | AddHiddenKeyword$ CARDNAME do
|
||||
SVar:NonStackingEffect:True
|
||||
AI:RemoveDeck:Random
|
||||
SVar:NeedsToPlayVar:CountOpps GTCountMe
|
||||
SVar:CountOpp:Count$Valid Creature.OppCtrl+PowerGE3/LimitMax.5
|
||||
SVar:CountOpps:Count$Valid Creature.OppCtrl+PowerGE3/LimitMax.5
|
||||
SVar:CountMe:Count$Valid Creature.YouCtrl+PowerGE3
|
||||
DeckHints:Type$Enchantment|Artifact|Planeswalker & Type$Wall & Keyword$Defender
|
||||
Oracle:Creatures with power 3 or greater don't untap during their controllers' untap steps.
|
||||
|
||||
@@ -4,7 +4,7 @@ Types:Creature Ogre
|
||||
PT:3/3
|
||||
T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ DelTrigBlocked | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, Sawtooth Ogre deals 1 damage to that creature at end of combat.
|
||||
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ DelTrigBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, Sawtooth Ogre deals 1 damage to that creature at end of combat.
|
||||
SVar:DelTrigBlocked:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDamage | RememberObjects$ TriggeredAttacker | TriggerDescription$ CARDNAME deals 1 damage to blocked creature at end of combat.
|
||||
SVar:DelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDamage | RememberObjects$ TriggeredBlocker | TriggerDescription$ CARDNAME deals 1 damage to blocking creature at end of combat.
|
||||
SVar:TrigDamage:DB$ DealDamage | Defined$ DelayTriggerRemembered | NumDmg$ 1
|
||||
SVar:DelTrigBlocked:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDamage | RememberObjects$ TriggeredAttackerLKICopy | TriggerDescription$ CARDNAME deals 1 damage to blocked creature at end of combat.
|
||||
SVar:DelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDamage | RememberObjects$ TriggeredBlockerLKICopy | TriggerDescription$ CARDNAME deals 1 damage to blocking creature at end of combat.
|
||||
SVar:TrigDamage:DB$ DealDamage | Defined$ DelayTriggerRememberedLKI | NumDmg$ 1
|
||||
Oracle:Whenever Sawtooth Ogre blocks or becomes blocked by a creature, Sawtooth Ogre deals 1 damage to that creature at end of combat.
|
||||
|
||||
@@ -3,8 +3,8 @@ ManaCost:4 B
|
||||
Types:Legendary Creature Spirit
|
||||
PT:2/2
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Creature.powerLE1+YouOwn | OptionalDecider$ You | Execute$ DelTrig | TriggerDescription$ Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield at the beginning of the next end step if CARDNAME is still on the battlefield.
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigReturn | IsPresent$ Card.Self+StrictlySelf | PresentZone$ Battlefield | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return creature to the battlefield.
|
||||
SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI | IsPresent$ Card.Self+StrictlySelf | PresentZone$ Battlefield
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigReturn | IsPresent$ Card.StrictlySelf | PresentZone$ Battlefield | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return creature to the battlefield.
|
||||
SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ DelayTriggerRememberedLKI | IsPresent$ Card.StrictlySelf | PresentZone$ Battlefield
|
||||
S:Mode$ Continuous | Affected$ Creature.YouCtrl+powerLE1+YouOwn | AddSVar$ Sac
|
||||
SVar:Sac:SVar:SacMe:3
|
||||
Oracle:Whenever a creature with power 1 or less is put into your graveyard from the battlefield, you may return that card to the battlefield at the beginning of the next end step if Shirei, Shizo's Caretaker is still on the battlefield.
|
||||
|
||||
@@ -5,7 +5,7 @@ S:Mode$ Continuous | Affected$ Player | AddKeyword$ UntapAdjust:Creature:1 | Des
|
||||
SVar:NonStackingEffect:True
|
||||
DeckHints:Type$Planeswalker|Artifact|Enchantment
|
||||
SVar:NeedsToPlayVar:CountOpps GTCountMe
|
||||
SVar:CountOpp:Count$Valid Creature.OppCtrl/LimitMax.5
|
||||
SVar:CountOpps:Count$Valid Creature.OppCtrl/LimitMax.5
|
||||
SVar:CountMe:Count$Valid Creature.YouCtrl
|
||||
AI:RemoveDeck:Random
|
||||
Oracle:Players can't untap more than one creature during their untap steps.
|
||||
|
||||
@@ -7,8 +7,8 @@ K:Flying
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target spell with mana value 4 or less.
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When Spell Queller leaves the battlefield, the exiled card's owner may cast that card without paying its mana cost.
|
||||
SVar:TrigExile:DB$ ChangeZone | TargetType$ Spell | ValidTgts$ Card.cmcLE4 | TgtZone$ Stack | Origin$ Stack | Fizzle$ True | Mandatory$ True | Destination$ Exile | IsCurse$ True | TgtPrompt$ Choose target spell with mana value 4 or less | RememberChanged$ True
|
||||
SVar:TrigPlay:DB$ Play | Defined$ Remembered.ExiledWithSource | Controller$ RememberedOwner | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup
|
||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | Execute$ DBForget
|
||||
SVar:TrigPlay:DB$ Play | Defined$ Remembered.ExiledWithSource | Controller$ RememberedOwner | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup
|
||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget
|
||||
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:X:Remembered$Amount
|
||||
|
||||
@@ -2,8 +2,8 @@ Name:Teferi's Veil
|
||||
ManaCost:1 U
|
||||
Types:Enchantment
|
||||
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ DelayedTrig | TriggerDescription$ Whenever a creature you control attacks, it phases out at end of combat. (While it's phased out, it's treated as though it doesn't exist. It phases in before you untap during your next untap step.)
|
||||
SVar:DelayedTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigPhase | RememberObjects$ TriggeredAttacker | TriggerDescription$ Attacking creatures you control phase out at end of combat.
|
||||
SVar:TrigPhase:DB$ Phases | Defined$ DelayTriggerRemembered
|
||||
SVar:DelayedTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigPhase | RememberObjects$ TriggeredAttackerLKICopy | TriggerDescription$ Attacking creatures you control phase out at end of combat.
|
||||
SVar:TrigPhase:DB$ Phases | Defined$ DelayTriggerRememberedLKI
|
||||
AI:RemoveDeck:All
|
||||
SVar:NonStackingEffect:True
|
||||
SVar:PlayMain1:TRUE
|
||||
|
||||
@@ -3,7 +3,7 @@ ManaCost:1 U
|
||||
Types:Creature Human Wizard
|
||||
PT:1/1
|
||||
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ DelTrig | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, gain control of that creature at end of combat.
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigGainControl | RememberObjects$ TriggeredBlocker | TriggerDescription$ Gain control of blocking creature.
|
||||
SVar:TrigGainControl:DB$ GainControl | Defined$ DelayTriggerRemembered | NewController$ You
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigGainControl | RememberObjects$ TriggeredBlockerLKICopy | TriggerDescription$ Gain control of blocking creature.
|
||||
SVar:TrigGainControl:DB$ GainControl | Defined$ DelayTriggerRememberedLKI | NewController$ You
|
||||
SVar:HasAttackEffect:Blocked
|
||||
Oracle:Whenever Tolarian Entrancer becomes blocked by a creature, gain control of that creature at end of combat.
|
||||
|
||||
@@ -4,6 +4,6 @@ Types:Creature Wall
|
||||
PT:1/4
|
||||
K:Defender
|
||||
T:Mode$ AttackerBlocked | ValidBlocker$ Card.Self | Execute$ DelTrig | TriggerDescription$ Whenever CARDNAME blocks a creature, that creature can't attack during its controller's next turn.
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep-> | ValidPlayer$ Player.controlsCard.IsTriggerRemembered | UpcomingTurn$ True | Static$ True | Execute$ TrigPump | RememberObjects$ TriggeredAttacker | TriggerDescription$ Creatures blocked by CARDNAME can't attack this turn.
|
||||
SVar:TrigPump:DB$ Pump | IsCurse$ True | Defined$ DelayTriggerRemembered | KW$ HIDDEN CARDNAME can't attack.
|
||||
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep-> | ValidPlayer$ Player.controlsCard.IsTriggerRemembered | UpcomingTurn$ True | Static$ True | Execute$ TrigPump | RememberObjects$ TriggeredAttackerLKICopy | TriggerDescription$ Creatures blocked by CARDNAME can't attack this turn.
|
||||
SVar:TrigPump:DB$ Pump | IsCurse$ True | Defined$ DelayTriggerRememberedLKI | KW$ HIDDEN CARDNAME can't attack.
|
||||
Oracle:Defender (This creature can't attack.)\nWhenever Wall of Dust blocks a creature, that creature can't attack during its controller's next turn.
|
||||
|
||||
@@ -234,12 +234,13 @@ public abstract class InputPayMana extends InputSyncronizedBase {
|
||||
}
|
||||
|
||||
final SpellAbility chosen;
|
||||
final String typeRes = manaCost.getSourceRestriction();
|
||||
|
||||
if (chosenAbility == null) {
|
||||
HashMap<SpellAbilityView, SpellAbility> abilitiesMap = new HashMap<>();
|
||||
// you can't remove unneeded abilities inside a for (am:abilities) loop :(
|
||||
|
||||
final String typeRes = manaCost.getSourceRestriction();
|
||||
if (StringUtils.isNotBlank(typeRes) && !card.getType().hasStringType(typeRes)) {
|
||||
if (StringUtils.isNotBlank(typeRes) && !card.isValid(typeRes, player, card, null)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -353,6 +354,11 @@ public abstract class InputPayMana extends InputSyncronizedBase {
|
||||
restrictionsMet = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(typeRes) && !card.isValid(typeRes, player, card, null)) {
|
||||
restrictionsMet = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (restrictionsMet) {
|
||||
|
||||
@@ -92,7 +92,7 @@ public class TargetSelection {
|
||||
|
||||
final boolean hasEnoughTargets = minTargets == 0 || numTargeted >= minTargets;
|
||||
final boolean hasAllTargets = numTargeted == maxTargets && maxTargets > 0;
|
||||
if (maxTargets == 0) { return true; }
|
||||
if (maxTargets == 0 && minTargets == 0) { return true; }
|
||||
|
||||
// if not enough targets chosen, cancel Ability
|
||||
if (this.bTargetingDone && !hasEnoughTargets) {
|
||||
|
||||
Reference in New Issue
Block a user