mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
implement [M3C] Planar Nexus [MH3] Omo, Queen of Vesuva and [UNF] Nearby Planet ; introduce AllNonbasicLandTypes status (#12203)
This commit is contained in:
parent
3e18b58cac
commit
08c7d2ab8f
19 changed files with 659 additions and 5 deletions
|
|
@ -471,6 +471,9 @@ public interface MageObject extends MageItem, Serializable, Copyable<MageObject>
|
|||
if (subTypeSet == SubTypeSet.CreatureType || subTypeSet == null) {
|
||||
this.setIsAllCreatureTypes(game, mageObject.isAllCreatureTypes(game));
|
||||
}
|
||||
if (subTypeSet == SubTypeSet.NonBasicLandType || subTypeSet == null) {
|
||||
this.setIsAllNonbasicLandTypes(game, mageObject.isAllNonbasicLandTypes(game));
|
||||
}
|
||||
for (SubType subType : mageObject.getSubtype(game)) {
|
||||
if (subType.getSubTypeSet() == subTypeSet || subTypeSet == null) {
|
||||
this.addSubType(game, subType);
|
||||
|
|
@ -485,10 +488,12 @@ public interface MageObject extends MageItem, Serializable, Copyable<MageObject>
|
|||
default void removeAllSubTypes(Game game, SubTypeSet subTypeSet) {
|
||||
if (subTypeSet == null) {
|
||||
setIsAllCreatureTypes(game, false);
|
||||
setIsAllNonbasicLandTypes(game, false);
|
||||
game.getState().getCreateMageObjectAttribute(this, game).getSubtype().clear();
|
||||
} else if (subTypeSet == SubTypeSet.CreatureType) {
|
||||
removeAllCreatureTypes(game);
|
||||
} else if (subTypeSet == SubTypeSet.NonBasicLandType) {
|
||||
setIsAllNonbasicLandTypes(game, false);
|
||||
game.getState().getCreateMageObjectAttribute(this, game).getSubtype().removeAll(SubType.getLandTypes());
|
||||
} else {
|
||||
game.getState().getCreateMageObjectAttribute(this, game).getSubtype().removeAll(SubType.getBySubTypeSet(subTypeSet));
|
||||
|
|
@ -497,11 +502,13 @@ public interface MageObject extends MageItem, Serializable, Copyable<MageObject>
|
|||
|
||||
default void retainAllArtifactSubTypes(Game game) {
|
||||
setIsAllCreatureTypes(game, false);
|
||||
setIsAllNonbasicLandTypes(game, false);
|
||||
game.getState().getCreateMageObjectAttribute(this, game).getSubtype().retainAll(SubType.getArtifactTypes());
|
||||
}
|
||||
|
||||
default void retainAllEnchantmentSubTypes(Game game) {
|
||||
setIsAllCreatureTypes(game, false);
|
||||
setIsAllNonbasicLandTypes(game, false);
|
||||
game.getState().getCreateMageObjectAttribute(this, game).getSubtype().retainAll(SubType.getEnchantmentTypes());
|
||||
}
|
||||
|
||||
|
|
@ -603,5 +610,17 @@ public interface MageObject extends MageItem, Serializable, Copyable<MageObject>
|
|||
*/
|
||||
void setIsAllCreatureTypes(Game game, boolean value);
|
||||
|
||||
boolean isAllNonbasicLandTypes(Game game);
|
||||
|
||||
void setIsAllNonbasicLandTypes(boolean value);
|
||||
|
||||
/**
|
||||
* Change all nonbasic land type mark temporary, for continuous effects only
|
||||
*
|
||||
* @param game
|
||||
* @param value
|
||||
*/
|
||||
void setIsAllNonbasicLandTypes(Game game, boolean value);
|
||||
|
||||
void removePTCDA();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -323,10 +323,9 @@ public abstract class MageObjectImpl implements MageObject {
|
|||
if (value == null) {
|
||||
return false;
|
||||
}
|
||||
if (value.getSubTypeSet() == SubTypeSet.CreatureType && isAllCreatureTypes(game)) {
|
||||
return true;
|
||||
}
|
||||
return getSubtype(game).contains(value);
|
||||
return value.getSubTypeSet() == SubTypeSet.CreatureType && isAllCreatureTypes(game)
|
||||
|| value.getSubTypeSet() == SubTypeSet.NonBasicLandType && isAllNonbasicLandTypes(game)
|
||||
|| getSubtype(game).contains(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -375,6 +374,21 @@ public abstract class MageObjectImpl implements MageObject {
|
|||
this.getSubtype(game).setIsAllCreatureTypes(value && (this.isTribal(game) || this.isCreature(game)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return this.getSubtype(game).isAllNonbasicLandTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
this.getSubtype().setIsAllNonbasicLandTypes(value && this.isLand());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
this.getSubtype(game).setIsAllNonbasicLandTypes(value && this.isLand(game));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove power/toughness character defining abilities
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public class BecomesEnchantmentSourceEffect extends ContinuousEffectImpl {
|
|||
permanent.removeAllCardTypes(game);
|
||||
permanent.addCardType(game, CardType.ENCHANTMENT);
|
||||
permanent.retainAllEnchantmentSubTypes(game);
|
||||
permanent.setIsAllCreatureTypes(game, false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ public enum CounterType {
|
|||
ENERGY("energy"),
|
||||
ENLIGHTENED("enlightened"),
|
||||
EON("eon"),
|
||||
EVERYTHING("everything"),
|
||||
EXALTED("exalted"),
|
||||
EXPERIENCE("experience"),
|
||||
EYEBALL("eyeball"),
|
||||
|
|
|
|||
|
|
@ -181,6 +181,19 @@ public abstract class Designation extends MageObjectImpl {
|
|||
public void setIsAllCreatureTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllCreatureTypes(Game game, boolean value) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -316,6 +316,21 @@ public class Commander extends CommandObjectImpl {
|
|||
sourceObject.setIsAllCreatureTypes(game, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return sourceObject.isAllNonbasicLandTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
sourceObject.setIsAllNonbasicLandTypes(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
sourceObject.setIsAllNonbasicLandTypes(game, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePTCDA() {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -331,6 +331,19 @@ public class Dungeon extends CommandObjectImpl {
|
|||
public void setIsAllCreatureTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
public void discardEffects() {
|
||||
for (Ability ability : abilites) {
|
||||
for (Effect effect : ability.getEffects()) {
|
||||
|
|
|
|||
|
|
@ -246,6 +246,19 @@ public abstract class Emblem extends CommandObjectImpl {
|
|||
public void setIsAllCreatureTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
public void discardEffects() {
|
||||
for (Ability ability : abilites) {
|
||||
for (Effect effect : ability.getEffects()) {
|
||||
|
|
|
|||
|
|
@ -268,6 +268,19 @@ public abstract class Plane extends CommandObjectImpl {
|
|||
public void setIsAllCreatureTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
public void discardEffects() {
|
||||
for (Ability ability : abilites) {
|
||||
for (Effect effect : ability.getEffects()) {
|
||||
|
|
|
|||
|
|
@ -1181,6 +1181,21 @@ public class Spell extends StackObjectImpl implements Card {
|
|||
card.setIsAllCreatureTypes(game, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return card.isAllNonbasicLandTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
card.setIsAllNonbasicLandTypes(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
card.setIsAllNonbasicLandTypes(game, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UUID> getAttachments() {
|
||||
throw new UnsupportedOperationException("Not supported.");
|
||||
|
|
|
|||
|
|
@ -740,6 +740,19 @@ public class StackAbility extends StackObjectImpl implements Ability {
|
|||
public void setIsAllCreatureTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllNonbasicLandTypes(Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllNonbasicLandTypes(Game game, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public StackAbility setTargetAdjuster(TargetAdjuster targetAdjuster) {
|
||||
this.targetAdjuster = targetAdjuster;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import java.util.Collections;
|
|||
public class SubTypes extends ArrayList<SubType> {
|
||||
|
||||
private boolean isAllCreatureTypes = false;
|
||||
private boolean isAllNonbasicLandTypes = false;
|
||||
|
||||
public SubTypes(SubType... subTypes) {
|
||||
super();
|
||||
|
|
@ -18,6 +19,7 @@ public class SubTypes extends ArrayList<SubType> {
|
|||
protected SubTypes(final SubTypes list) {
|
||||
this.addAll(list);
|
||||
this.isAllCreatureTypes = list.isAllCreatureTypes;
|
||||
this.isAllNonbasicLandTypes = list.isAllNonbasicLandTypes;
|
||||
}
|
||||
|
||||
public SubTypes copy() {
|
||||
|
|
@ -32,6 +34,7 @@ public class SubTypes extends ArrayList<SubType> {
|
|||
this.clear();
|
||||
this.addAll(subtypes);
|
||||
this.isAllCreatureTypes = subtypes.isAllCreatureTypes;
|
||||
this.isAllNonbasicLandTypes = subtypes.isAllNonbasicLandTypes;
|
||||
}
|
||||
|
||||
public boolean removeAll(SubType... subTypes) {
|
||||
|
|
@ -45,4 +48,12 @@ public class SubTypes extends ArrayList<SubType> {
|
|||
public boolean isAllCreatureTypes() {
|
||||
return isAllCreatureTypes;
|
||||
}
|
||||
|
||||
public void setIsAllNonbasicLandTypes(boolean allNonbasicLandTypes) {
|
||||
isAllNonbasicLandTypes = allNonbasicLandTypes;
|
||||
}
|
||||
|
||||
public boolean isAllNonbasicLandTypes() {
|
||||
return isAllNonbasicLandTypes;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue