implement [M3C] Planar Nexus [MH3] Omo, Queen of Vesuva and [UNF] Nearby Planet ; introduce AllNonbasicLandTypes status (#12203)

This commit is contained in:
Evan Kranzler 2024-06-07 12:36:41 -04:00 committed by GitHub
parent 3e18b58cac
commit 08c7d2ab8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 659 additions and 5 deletions

View file

@ -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();
}