Updated implementation of Hexproof abilities (#6451)

* updated implementation of hexproof abilities

* added hexproof from color test

* updated generic in AbilityPredicate
This commit is contained in:
Evan Kranzler 2020-04-23 20:01:13 -04:00 committed by GitHub
parent f7309919b9
commit 7f32ea0be2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 128 additions and 126 deletions

View file

@ -1,8 +1,7 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.MageObject;
import mage.game.Game;
import java.io.ObjectStreamException;
@ -12,7 +11,7 @@ import java.io.ObjectStreamException;
*
* @author loki
*/
public class HexproofAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
public class HexproofAbility extends HexproofBaseAbility {
private static final HexproofAbility instance;
@ -29,7 +28,12 @@ public class HexproofAbility extends SimpleStaticAbility implements MageSingleto
}
private HexproofAbility() {
super(Zone.BATTLEFIELD, null);
super();
}
@Override
public boolean checkObject(MageObject source, Game game) {
return true;
}
@Override

View file

@ -0,0 +1,21 @@
package mage.abilities.keyword;
import mage.MageObject;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.game.Game;
/**
* an abstract base class for hexproof abilities
*
* @author TheElk801
*/
public abstract class HexproofBaseAbility extends SimpleStaticAbility implements MageSingleton {
HexproofBaseAbility() {
super(Zone.BATTLEFIELD, null);
}
public abstract boolean checkObject(MageObject source, Game game);
}

View file

@ -1,8 +1,7 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.MageObject;
import mage.game.Game;
import java.io.ObjectStreamException;
@ -12,7 +11,7 @@ import java.io.ObjectStreamException;
*
* @author igoudt
*/
public class HexproofFromBlackAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
public class HexproofFromBlackAbility extends HexproofBaseAbility {
private static final HexproofFromBlackAbility instance;
@ -29,7 +28,12 @@ public class HexproofFromBlackAbility extends SimpleStaticAbility implements Mag
}
private HexproofFromBlackAbility() {
super(Zone.BATTLEFIELD, null);
super();
}
@Override
public boolean checkObject(MageObject source, Game game) {
return source.getColor(game).isBlack();
}
@Override

View file

@ -1,8 +1,7 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.MageObject;
import mage.game.Game;
import java.io.ObjectStreamException;
@ -12,7 +11,7 @@ import java.io.ObjectStreamException;
*
* @author igoudt
*/
public class HexproofFromBlueAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
public class HexproofFromBlueAbility extends HexproofBaseAbility {
private static final HexproofFromBlueAbility instance;
@ -29,7 +28,12 @@ public class HexproofFromBlueAbility extends SimpleStaticAbility implements Mage
}
private HexproofFromBlueAbility() {
super(Zone.BATTLEFIELD, null);
super();
}
@Override
public boolean checkObject(MageObject source, Game game) {
return source.getColor(game).isBlue();
}
@Override

View file

@ -1,8 +1,7 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.MageObject;
import mage.game.Game;
import java.io.ObjectStreamException;
@ -12,7 +11,7 @@ import java.io.ObjectStreamException;
*
* @author TheElk801
*/
public class HexproofFromMonocoloredAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
public class HexproofFromMonocoloredAbility extends HexproofBaseAbility {
private static final HexproofFromMonocoloredAbility instance;
@ -29,7 +28,12 @@ public class HexproofFromMonocoloredAbility extends SimpleStaticAbility implemen
}
private HexproofFromMonocoloredAbility() {
super(Zone.BATTLEFIELD, null);
super();
}
@Override
public boolean checkObject(MageObject source, Game game) {
return !source.getColor(game).isMulticolored() && !source.getColor(game).isColorless();
}
@Override

View file

@ -1,8 +1,7 @@
package mage.abilities.keyword;
import mage.abilities.MageSingleton;
import mage.abilities.common.SimpleStaticAbility;
import mage.constants.Zone;
import mage.MageObject;
import mage.game.Game;
import java.io.ObjectStreamException;
@ -12,7 +11,7 @@ import java.io.ObjectStreamException;
*
* @author igoudt
*/
public class HexproofFromWhiteAbility extends SimpleStaticAbility implements MageSingleton, HexproofInterface {
public class HexproofFromWhiteAbility extends HexproofBaseAbility {
private static final HexproofFromWhiteAbility instance;
@ -29,7 +28,12 @@ public class HexproofFromWhiteAbility extends SimpleStaticAbility implements Mag
}
private HexproofFromWhiteAbility() {
super(Zone.BATTLEFIELD, null);
super();
}
@Override
public boolean checkObject(MageObject source, Game game) {
return source.getColor(game).isWhite();
}
@Override

View file

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