diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index 5297f3b8ab..bda587b21d 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -181,7 +181,7 @@ MAGE Client Mage Client (C) Mage Development Team - 0.7.3.0 + ${project.version}.0 MAGE Client MAGE Mage-Client diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml index 18e5f84913..da41630188 100644 --- a/Mage.Server/pom.xml +++ b/Mage.Server/pom.xml @@ -201,15 +201,15 @@ - 0.7.2.0 + ${project.version}.0 MAGE Server Mage Server (C) Mage Development Team - 0.7.2.0 + ${project.version}.0 MAGE Server MAGE Mage-Server - original.exe + mage-server.exe diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java index db1f14575d..edfb7ebb6f 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java @@ -43,6 +43,7 @@ import mage.target.common.TargetCardInLibrary; import java.util.List; import java.util.UUID; +import mage.filter.Filter.ComparisonType; /** * @author Loki @@ -84,7 +85,9 @@ class GreenSunsZenithSearchEffect extends OneShotEffect 0) { diff --git a/Mage/src/mage/abilities/Abilities.java b/Mage/src/mage/abilities/Abilities.java index 373446b455..eeaa751359 100644 --- a/Mage/src/mage/abilities/Abilities.java +++ b/Mage/src/mage/abilities/Abilities.java @@ -37,26 +37,198 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.mana.ManaAbility; import mage.filter.FilterAbility; +/** + * Represents a collection of {@link Ability Abilities}. This is the top most + * interface for this. + * + * @param The ability type this collection will hold. + * + * @see mage.abilities.AbilitiesImpl + * @see mage.abilities.DelayedTriggeredAbilities + * @see mage.abilities.SpecialActions + * @see mage.abilities.TriggeredAbilities + */ public interface Abilities extends List, Serializable { + /** + * Retrieves a {@link List}<{@link String}> of ability texts for the + * given source. + * + * @param source The source to retrieve ability texts. + * @return the {@link List}<{@link String}> of ability texts. + * + * @see mage.cards.CardImpl#getRules() + * @see mage.abilities.keyword.LevelAbility#getRule() + */ public List getRules(String source); + + /** + * Retrieves all activated abilities for the given {@link Zone}. + * + * @param zone The {@link Zone} for which abilities should be retrieved. + * @return All abilities for the given {@link Zone} + * + * @see mage.cards.CardImpl#getSpellAbility() + */ public Abilities getActivatedAbilities(Zone zone); + + /** + * Retrieves all activated abilities for the given {@link Zone} that match + * the given {@link FilterAbility}. + * + * @param zone The {@link Zone} for which abilities should be retrieved. + * @param filter The {@link FilterAbility} to apply to the result. + * @return The {@link ActivatedAbility activated abilities} matching the {@link Zone} and {@link FilterAbility}. + * + * @see mage.players.PlayerImpl#getPlayable(mage.game.Game, mage.filter.FilterAbility, mage.abilities.mana.ManaOptions, boolean) + */ public Abilities getActivatedAbilities(Zone zone, FilterAbility filter); + + /** + * Retrieves all {@link ManaAbility mana abilities} in the given {@link Zone}. + * + * @param zone The {@link Zone} to search for {@link ManaAbility mana abilities}. + * @return All {@link ManaAbility mana abilities} for the given {@link Zone}. + * + * @see mage.cards.CardImpl#getMana() + * @see mage.players.PlayerImpl#getManaAvailable(mage.game.Game) + * @see mage.players.PlayerImpl#getAvailableManaProducers(mage.game.Game) + */ public Abilities getManaAbilities(Zone zone); + + /** + * Retrieves all {@link StaticAbility static abilities} in the given {@link Zone}. + * + * @param zone The {@link Zone} to search for {@link StaticAbility} + * @return All {@link StaticAbility static abilities} in the given {@link Zone} + * + * @see mage.abilities.effects.ContinuousEffects#getLayeredEffects(mage.game.Game) + * @see mage.abilities.effects.ContinuousEffects#getApplicableRequirementEffects(mage.game.permanent.Permanent, mage.game.Game) + * @see mage.abilities.effects.ContinuousEffects#getApplicableRestrictionEffects(mage.game.permanent.Permanent, mage.game.Game) + * @see mage.abilities.effects.ContinuousEffects#getApplicableReplacementEffects(mage.game.events.GameEvent, mage.game.Game) + * @see mage.abilities.effects.ContinuousEffects#asThough(java.util.UUID, mage.Constants.AsThoughEffectType, mage.game.Game) + * @see mage.abilities.effects.ContinuousEffects#costModification(mage.abilities.Ability, mage.game.Game) + */ public Abilities getStaticAbilities(Zone zone); + + /** + * Retrieves all {@link EvasionAbility evasion abilities}. + * + * @return The {@link EvasionAbility evasion abilities}. + */ public Abilities getEvasionAbilities(); + + /** + * Retrieves all {@link TriggeredAbility triggered abilities} for the given + * {@link Zone}. + * + * @param zone The {@link Zone} to search for {@link TriggeredAbility triggered abilities} + * @return All found {@link TriggeredAbility triggered abilities}. + * + * @see mage.cards.CardImpl#checkTriggers(mage.Constants.Zone, mage.game.events.GameEvent, mage.game.Game) + * @see mage.game.permanent.PermanentImpl#checkTriggers(mage.game.events.GameEvent, mage.game.Game) + * @see mage.game.permanent.PermanentCard#checkPermanentOnlyTriggers(mage.game.events.ZoneChangeEvent, mage.game.Game) + */ public Abilities getTriggeredAbilities(Zone zone); + + /** + * Retrieves all {@link ProtectionAbility protection abilities}. + * + * @return All found {@link ProtectionAbility protection abilities}. + * + * @see mage.game.permanent.PermanentImpl#hasProtectionFrom(mage.MageObject) + * @see mage.players.PlayerImpl#hasProtectionFrom(mage.MageObject) + * @see mage.players.PlayerImpl#canDamage(mage.MageObject) + */ public Abilities getProtectionAbilities(); + + /** + * Retrieves all {@link KickerAbility kicker abilities}. + * + * @return All found {@link KickerAbility kicker abilities}. + * + * @see mage.players.PlayerImpl#cast(mage.abilities.SpellAbility, mage.game.Game, boolean) + * @see mage.game.stack.Spell#resolveKicker(mage.game.Game) + */ public Abilities getKickerAbilities(); + + /** + * TODO Method is unused, keep it around? + * + * The only implementation seems to want to use this for totally a set of + * abilities by some arbitrary numeral value. Possibly a good method to be + * used by the AI's? + * + * @return A numeral value representing the 'strength' or effectiveness of the abilities? + */ public int getOutcomeTotal(); + /** + * Sets the controller of this set of abilities. + * + * @param controllerId + * + * @see mage.cards.CardImpl#setControllerId(java.util.UUID) + * @see mage.cards.CardImpl#setOwnerId(java.util.UUID) + * @see mage.game.permanent.PermanentImpl#changeControllerId(java.util.UUID, mage.game.Game) + * @see mage.game.permanent.PermanentCard#copyFromCard(mage.cards.Card) + */ public void setControllerId(UUID controllerId); + + /** + * Sets the source of this set of abilities. + * + * @param sourceId + * + * @see mage.cards.CardImpl#assignNewId() + */ public void setSourceId(UUID sourceId); + + /** + * Searches this set of abilities to see if the ability represented by the abilityId + * is contained within. Can be used to find usages of singleton abilities. + * + * @param abilityId + * @return + */ public boolean containsKey(UUID abilityId); + + /** + * TODO Method is unused, keep it around? + * + * Gets the ability represented by the given abilityId. + * + * @param abilityId + * @return + */ public T get(UUID abilityId); + /** + * TODO The usage of this method seems redundant to that of {@link #containsKey(java.util.UUID)} + * minus the fact that it searches for exact instances instead of id's of + * singleton Abilities. + * + * Searches for the exact instance of the passed in ability. + * + * @param ability + * @return + */ public boolean contains(T ability); + + /** + * Searches this set of abilities for the existence of each of the passed in + * set of abilities. + * + * @param abilities + * @return True if the passed in set of abilities is also in this set of abilities. + */ public boolean containsAll(Abilities abilities); + /** + * Copies this set of abilities. This copy should be new instances of all + * the contained abilities. + * + * @return + */ public Abilities copy(); }