diff --git a/res/cardsfolder/f/falter.txt b/res/cardsfolder/f/falter.txt index 1dd105d3aff..5bc7ed1b8c9 100644 --- a/res/cardsfolder/f/falter.txt +++ b/res/cardsfolder/f/falter.txt @@ -2,7 +2,7 @@ Name:Falter ManaCost:1 R Types:Instant Text:no text -A:SP$ Effect | Cost$ 1 R | Name$ Falter Effect | StaticAbilities$ KWPump | SpellDescription$ Creatures without flying can't block this turn. +A:SP$ Effect | Cost$ 1 R | Name$ Falter Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Creatures without flying can't block this turn. SVar:KWPump:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn. SVar:PlayMain1:TRUE SVar:RemAIDeck:True diff --git a/res/cardsfolder/g/gorilla_war_cry.txt b/res/cardsfolder/g/gorilla_war_cry.txt index 7bf1eef1d34..542849aa284 100644 --- a/res/cardsfolder/g/gorilla_war_cry.txt +++ b/res/cardsfolder/g/gorilla_war_cry.txt @@ -2,7 +2,7 @@ Name:Gorilla War Cry ManaCost:1 R Types:Instant Text:no text -A:SP$ Effect | Cost$ 1 R | Name$ Gorilla War Cry Effect | StaticAbilities$ Blocking | ActivationPhases$ BeginCombat->Declare Attackers - Play Instants and Abilities | SubAbility$ DBDraw | SpellDescription$ Cast CARDNAME only during combat before blockers are declared. Creatures can't be blocked this turn except by two or more creatures. +A:SP$ Effect | Cost$ 1 R | Name$ Gorilla War Cry Effect | StaticAbilities$ Blocking | ActivationPhases$ BeginCombat->Declare Attackers - Play Instants and Abilities | AILogic$ Evasion | SubAbility$ DBDraw | SpellDescription$ Cast CARDNAME only during combat before blockers are declared. Creatures can't be blocked this turn except by two or more creatures. SVar:DBDraw:DB$Draw | NumCards$ 1 | NextUpkeep$ True | SpellDescription$ Draw a card at the beginning of the next upkeep. SVar:Blocking:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN CARDNAME can't be blocked except by two or more creatures. | Description$ Creatures can't be blocked this turn except by two or more creatures. SVar:PlayMain1:TRUE diff --git a/res/cardsfolder/r/ruthless_invasion.txt b/res/cardsfolder/r/ruthless_invasion.txt index 1842bd4894a..1466c5aedc9 100644 --- a/res/cardsfolder/r/ruthless_invasion.txt +++ b/res/cardsfolder/r/ruthless_invasion.txt @@ -2,7 +2,7 @@ Name:Ruthless Invasion ManaCost:3 PR Types:Sorcery Text:no text -A:SP$ Effect | Cost$ 3 PR | Name$ Ruthless Invasion Effect | StaticAbilities$ KWPump | SpellDescription$ Nonartifact creatures can't block this turn. +A:SP$ Effect | Cost$ 3 PR | Name$ Ruthless Invasion Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Nonartifact creatures can't block this turn. SVar:KWPump:Mode$ Continuous | Affected$ Creature.nonArtifact | AddKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn. SVar:RemAIDeck:True SVar:Rarity:Common diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java index cd2f5824376..dac21e9c6ed 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryEffect.java @@ -24,6 +24,7 @@ import forge.AllZone; import forge.AllZoneUtil; import forge.Card; import forge.CardList; +import forge.CardListFilter; import forge.CombatUtil; import forge.Command; import forge.ComputerUtil; @@ -244,6 +245,26 @@ public class AbilityFactoryEffect { return false; } randomReturn = CombatUtil.lifeInDanger(AllZone.getCombat()); + } else if (logic.equals("Evasion")) { + CardList comp = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield).getType("Creature"); + CardList human = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield).getType("Creature"); + + // only count creatures that can attack or block + comp = comp.filter(new CardListFilter() { + @Override + public boolean addCard(final Card c) { + return CombatUtil.canAttack(c); + } + }); + human = human.filter(new CardListFilter() { + @Override + public boolean addCard(final Card c) { + return CombatUtil.canBlock(c); + } + }); + if (comp.size() < 2 || human.size() < 1) { + randomReturn = false; + } } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index b3fff182429..639ebe71dbc 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -1117,7 +1117,7 @@ public class AbilityFactoryPump { human = human.getValidCards(valid, this.hostCard.getController(), this.hostCard); // only count creatures that can attack - human = human.filter(new CardListFilter() { + comp = comp.filter(new CardListFilter() { @Override public boolean addCard(final Card c) { return CombatUtil.canAttack(c) && !AbilityFactoryPump.this.abilityFactory.isCurse();