Implemented Kathril, Aspect Warper

This commit is contained in:
Evan Kranzler 2020-04-04 21:25:06 -04:00
parent 3632eba3e8
commit 381de68563
14 changed files with 229 additions and 38 deletions

View file

@ -1,17 +1,18 @@
package mage.abilities.keyword;
import java.io.ObjectStreamException;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import java.io.ObjectStreamException;
/**
* Hexproof (This creature or player can't be the target of spells or abilities
* your opponents control.)
*
* @author loki
*/
public class HexproofAbility extends SimpleStaticAbility implements MageSingleton {
public class HexproofAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
private static final HexproofAbility instance;

View file

@ -1,17 +1,18 @@
package mage.abilities.keyword;
import java.io.ObjectStreamException;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import java.io.ObjectStreamException;
/**
* Hexproof from black (This creature or player can't be the target of black
* spells or abilities your opponents control.)
*
* @author igoudt
*/
public class HexproofFromBlackAbility extends SimpleStaticAbility implements MageSingleton {
public class HexproofFromBlackAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
private static final HexproofFromBlackAbility instance;

View file

@ -12,7 +12,7 @@ import java.io.ObjectStreamException;
*
* @author igoudt
*/
public class HexproofFromBlueAbility extends SimpleStaticAbility implements MageSingleton {
public class HexproofFromBlueAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
private static final HexproofFromBlueAbility instance;

View file

@ -12,7 +12,7 @@ import java.io.ObjectStreamException;
*
* @author TheElk801
*/
public class HexproofFromMonocoloredAbility extends SimpleStaticAbility implements MageSingleton {
public class HexproofFromMonocoloredAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
private static final HexproofFromMonocoloredAbility instance;

View file

@ -1,17 +1,18 @@
package mage.abilities.keyword;
import java.io.ObjectStreamException;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import java.io.ObjectStreamException;
/**
* Hexproof from white (This creature or player can't be the target of white
* spells or abilities your opponents control.)
*
* @author igoudt
*/
public class HexproofFromWhiteAbility extends SimpleStaticAbility implements MageSingleton {
public class HexproofFromWhiteAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
private static final HexproofFromWhiteAbility instance;

View file

@ -0,0 +1,9 @@
package mage.abilities.keyword;
/**
* an interface for hexproof abilities
*
* @author TheElk801
*/
public interface HexproofInterface {
}

View file

@ -37,6 +37,7 @@ public enum CounterType {
DEVOTION("devotion"),
DIVINITY("divinity"),
DOOM("doom"),
DOUBLE_STRIKE("double strike"),
DREAM("dream"),
ECHO("echo"),
EGG("egg"),
@ -49,6 +50,7 @@ public enum CounterType {
FATE("fate"),
FEATHER("feather"),
FILIBUSTER("filibuster"),
FIRST_STRIKE("first strike"),
FLOOD("flood"),
FLYING("flying"),
FUNK("funk"),
@ -69,6 +71,7 @@ public enum CounterType {
HOURGLASS("hourglass"),
HUNGER("hunger"),
ICE("ice"),
INDESTRUCTIBLE("indestructible"),
INFECTION("infection"),
INTERVENTION("intervention"),
ISOLATION("isolation"),
@ -115,6 +118,7 @@ public enum CounterType {
PRESSURE("pressure"),
PREY("prey"),
PUPA("pupa"),
REACH("reach"),
REPAIR("repair"),
RUST("rust"),
QUEST("quest"),
@ -145,6 +149,7 @@ public enum CounterType {
UNITY("unity"),
VELOCITY("velocity"),
VERSE("verse"),
VIGILANCE("vigilance"),
VITALITY("vitality"),
VORTEX("vortex"),
WAGE("wage"),
@ -203,16 +208,26 @@ public enum CounterType {
return new BoostCounter(-2, -2, amount);
case DEATHTOUCH:
return new AbilityCounter(DeathtouchAbility.getInstance());
case DOUBLE_STRIKE:
return new AbilityCounter(DoubleStrikeAbility.getInstance());
case FIRST_STRIKE:
return new AbilityCounter(FirstStrikeAbility.getInstance());
case FLYING:
return new AbilityCounter(FlyingAbility.getInstance());
case HEXPROOF:
return new AbilityCounter(HexproofAbility.getInstance());
case INDESTRUCTIBLE:
return new AbilityCounter(IndestructibleAbility.getInstance());
case LIFELINK:
return new AbilityCounter(LifelinkAbility.getInstance());
case MENACE:
return new AbilityCounter(new MenaceAbility());
case REACH:
return new AbilityCounter(ReachAbility.getInstance());
case TRAMPLE:
return new AbilityCounter(TrampleAbility.getInstance());
case VIGILANCE:
return new AbilityCounter(VigilanceAbility.getInstance());
default:
return new Counter(name, amount);
}

View file

@ -9,7 +9,6 @@ import mage.filter.predicate.Predicate;
import mage.game.Game;
/**
*
* @author North
*/
public class AbilityPredicate implements Predicate<MageObject> {
@ -23,12 +22,12 @@ public class AbilityPredicate implements Predicate<MageObject> {
@Override
public boolean apply(MageObject input, Game game) {
Abilities<Ability> abilities;
if (input instanceof Card){
abilities = ((Card)input).getAbilities(game);
if (input instanceof Card) {
abilities = ((Card) input).getAbilities(game);
} else {
abilities = input.getAbilities();
}
return abilities.stream().anyMatch(ability -> ability.getClass().equals(abilityClass));
return abilities.stream().anyMatch(abilityClass::isInstance);
}