mirror of
https://github.com/correl/mage.git
synced 2025-03-30 09:08:36 -09:00
Merge fix
This commit is contained in:
parent
6e5ba7a446
commit
6848626c4b
3 changed files with 28 additions and 36 deletions
Mage/src/main/java/mage/abilities
|
@ -346,23 +346,6 @@ public abstract class AbilityImpl implements Ability {
|
|||
}
|
||||
}
|
||||
}
|
||||
//20100716 - 601.2e
|
||||
if (sourceObject != null) {
|
||||
sourceObject.adjustCosts(this, game);
|
||||
if (sourceObject instanceof Card) {
|
||||
for (Ability ability : ((Card) sourceObject).getAbilities(game)) {
|
||||
if (ability instanceof AdjustingSourceCosts) {
|
||||
((AdjustingSourceCosts) ability).adjustCosts(this, game);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (Ability ability : sourceObject.getAbilities()) {
|
||||
if (ability instanceof AdjustingSourceCosts) {
|
||||
((AdjustingSourceCosts) ability).adjustCosts(this, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this is a hack to prevent mana abilities with mana costs from causing endless loops - pay other costs first
|
||||
if (this instanceof ActivatedManaAbilityImpl && !costs.pay(this, game, sourceId, controllerId, noMana, null)) {
|
||||
|
@ -372,6 +355,26 @@ public abstract class AbilityImpl implements Ability {
|
|||
|
||||
//20101001 - 601.2e
|
||||
if (costModificationActive) {
|
||||
|
||||
// TODO: replace all AdjustingSourceCosts abilities to continuus effect, see Affinity example
|
||||
//20100716 - 601.2e
|
||||
if (sourceObject != null) {
|
||||
sourceObject.adjustCosts(this, game);
|
||||
if (sourceObject instanceof Card) {
|
||||
for (Ability ability : ((Card) sourceObject).getAbilities(game)) {
|
||||
if (ability instanceof AdjustingSourceCosts) {
|
||||
((AdjustingSourceCosts) ability).adjustCosts(this, game);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (Ability ability : sourceObject.getAbilities()) {
|
||||
if (ability instanceof AdjustingSourceCosts) {
|
||||
((AdjustingSourceCosts) ability).adjustCosts(this, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
game.getContinuousEffects().costModification(this, game);
|
||||
} else {
|
||||
costModificationActive = true;
|
||||
|
|
|
@ -7,12 +7,14 @@ import mage.game.Game;
|
|||
* Interface for abilities that adjust source and only source costs. For the
|
||||
* cases when some permanent adjusts costs of other spells use
|
||||
* {@link mage.abilities.effects.CostModificationEffect}.
|
||||
*
|
||||
* <p>
|
||||
* Example of such source costs adjusting:
|
||||
* {@link mage.abilities.keyword.AffinityForArtifactsAbility}
|
||||
*
|
||||
* @author nantuko
|
||||
*/
|
||||
@Deprecated
|
||||
// replace all AdjustingSourceCosts with "extends CostModificationEffectImpl with zone.ALL" (see Affinity example)
|
||||
@FunctionalInterface
|
||||
public interface AdjustingSourceCosts {
|
||||
|
||||
|
|
|
@ -1,24 +1,21 @@
|
|||
|
||||
package mage.abilities.keyword;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.SpellAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.AdjustingSourceCosts;
|
||||
import mage.abilities.effects.common.AffinityEffect;
|
||||
import mage.abilities.hint.common.ArtifactsYouControlHint;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
* Affinity for artifacts
|
||||
*/
|
||||
public class AffinityForArtifactsAbility extends SimpleStaticAbility implements AdjustingSourceCosts {
|
||||
public class AffinityForArtifactsAbility extends SimpleStaticAbility {
|
||||
|
||||
public AffinityForArtifactsAbility() {
|
||||
super(Zone.OUTSIDE, new AffinityEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT));
|
||||
super(Zone.ALL, new AffinityEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT));
|
||||
setRuleAtTheTop(true);
|
||||
|
||||
this.addHint(ArtifactsYouControlHint.instance);
|
||||
}
|
||||
|
||||
public AffinityForArtifactsAbility(final AffinityForArtifactsAbility ability) {
|
||||
|
@ -34,14 +31,4 @@ public class AffinityForArtifactsAbility extends SimpleStaticAbility implements
|
|||
public String getRule() {
|
||||
return "affinity for artifacts <i>(This spell costs {1} less to cast for each artifact you control.)</i>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustCosts(Ability ability, Game game) {
|
||||
if (ability instanceof SpellAbility) {
|
||||
int count = game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, ability.getControllerId(), game).size();
|
||||
if (count > 0) {
|
||||
CardUtil.adjustCost((SpellAbility)ability, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue