- JOU: Added Godhunter Octopus

This commit is contained in:
swordshine
2014-04-16 04:18:23 +00:00
parent cc4d4965d7
commit c06522480a
34 changed files with 49 additions and 67 deletions

View File

@@ -18,7 +18,6 @@
package forge.game.combat;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.card.CardType;
import forge.card.MagicColor;
@@ -31,7 +30,6 @@ import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardLists;
import forge.game.card.CardPredicates;
import forge.game.cost.Cost;
import forge.game.phase.PhaseType;
import forge.game.phase.Untap;
@@ -899,41 +897,11 @@ public class CombatUtil {
} // hasKeyword = CARDNAME can't attack if defending player controls an
// untapped creature with power ...
final List<Card> list = defendingPlayer.getCardsIn(ZoneType.Battlefield);
List<Card> temp;
for (String keyword : c.getKeyword()) {
if (keyword.equals("CARDNAME can't attack.") || keyword.equals("CARDNAME can't attack or block.")) {
return false;
} else if (keyword.equals("Defender") && !c.hasKeyword("CARDNAME can attack as though it didn't have defender.")) {
return false;
} else if (keyword.equals("CARDNAME can't attack unless defending player controls an Island.")) {
temp = CardLists.getType(list, "Island");
if (temp.isEmpty()) {
return false;
}
} else if (keyword.equals("CARDNAME can't attack unless defending player controls a Forest.")) {
temp = CardLists.getType(list, "Forest");
if (temp.isEmpty()) {
return false;
}
} else if (keyword.equals("CARDNAME can't attack unless defending player controls a Swamp.")) {
temp = CardLists.getType(list, "Swamp");
if (temp.isEmpty()) {
return false;
}
} else if (keyword.equals("CARDNAME can't attack unless defending player controls a Mountain.")) {
temp = CardLists.getType(list, "Mountain");
if (temp.isEmpty()) {
return false;
}
} else if (keyword.equals("CARDNAME can't attack unless defending player controls a snow land.")) {
temp = CardLists.filter(list, CardPredicates.Presets.SNOW_LANDS);
if (temp.isEmpty()) {
return false;
}
} else if (keyword.equals("CARDNAME can't attack unless defending player controls a blue permanent.")) {
if (!Iterables.any(list, CardPredicates.isColor(MagicColor.BLUE)))
return false;
} else if (keyword.equals("CARDNAME can't attack during extra turns.")) {
if (c.getGame().getPhaseHandler().getPlayerTurn().isPlayingExtraTurn())
return false;

View File

@@ -20,10 +20,16 @@ package forge.game.staticability;
import forge.game.GameEntity;
import forge.game.card.Card;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardPredicates;
import forge.game.cost.Cost;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Iterables;
/**
* The Class StaticAbility_CantBeCast.
*/
@@ -52,6 +58,15 @@ public class StaticAbilityCantAttackBlock {
return false;
}
if (params.containsKey("UnlessDefenderControls")) {
String type = params.get("UnlessDefenderControls");
Player defender = target instanceof Card ? ((Card) target).getController() : (Player) target;
List<Card> list = defender.getCardsIn(ZoneType.Battlefield);
if (Iterables.any(list, CardPredicates.restriction(type.split(","), hostCard.getController(), hostCard))) {
return false;
}
}
return true;
}