1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-01 09:05:59 -09:00

* Reworked retrieving spell characteristics (related to 98ebcc07ca).

This commit is contained in:
LevelX2 2020-07-28 16:29:44 +02:00
parent c1ac2ac6ae
commit 9903944804
9 changed files with 19 additions and 30 deletions

View file

@ -83,9 +83,6 @@ class AnimarCostReductionEffect extends CostModificationEffectImpl {
if (abilityToModify.isControlledBy(source.getControllerId())) { if (abilityToModify.isControlledBy(source.getControllerId())) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return spellCard.isCreature(); return spellCard.isCreature();
} }
} }

View file

@ -102,9 +102,6 @@ class ElspethConquersDeathCostEffect extends CostModificationEffectImpl {
&& game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) { && game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return !spellCard.isCreature(); return !spellCard.isCreature();
} }
} }

View file

@ -60,9 +60,6 @@ class HumOfTheRadixCostIncreaseEffect extends CostModificationEffectImpl {
if (abilityToModify instanceof SpellAbility) { if (abilityToModify instanceof SpellAbility) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return !spellCard.isArtifact(); return !spellCard.isArtifact();
} }
} }

View file

@ -117,9 +117,6 @@ class RakdosLordOfRiotsCostReductionEffect extends CostModificationEffectImpl {
if (abilityToModify.isControlledBy(source.getControllerId())) { if (abilityToModify.isControlledBy(source.getControllerId())) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return spellCard.isCreature(); return spellCard.isCreature();
} }
} }

View file

@ -110,9 +110,6 @@ class SemblanceAnvilCostReductionEffect extends CostModificationEffectImpl {
&& abilityToModify.isControlledBy(source.getControllerId())) { && abilityToModify.isControlledBy(source.getControllerId())) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
Permanent permanent = game.getPermanent(source.getSourceId()); Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) { if (permanent != null) {
List<UUID> imprinted = permanent.getImprinted(); List<UUID> imprinted = permanent.getImprinted();

View file

@ -12,11 +12,11 @@ import mage.cards.SplitCard;
import mage.constants.*; import mage.constants.*;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
import java.util.Optional; import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import javax.naming.directory.InvalidAttributesException;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -236,12 +236,25 @@ public class SpellAbility extends ActivatedAbilityImpl {
return this; return this;
} }
/**
* Returns a card object with the spell characteristics like calor, types,
* subtypes etc. E.g. if you cast a Bestow card as enchantment, the
* characteristics don't include the creature type.
*
* @param game
* @return card object with the spell characteristics
*/
public Card getCharacteristics(Game game) { public Card getCharacteristics(Game game) {
Spell spell = game.getSpell(this.getId()); Card spellCharacteristics = game.getSpell(this.getId());
if (spell != null) { if (spellCharacteristics == null) {
return spell; spellCharacteristics = game.getCard(this.getSourceId());
} }
return game.getCard(this.getSourceId()); if (spellCharacteristics != null) {
if (getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCharacteristics = getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCharacteristics, game);
}
}
return spellCharacteristics;
} }
public static SpellAbility getSpellAbilityFromEvent(GameEvent event, Game game) { public static SpellAbility getSpellAbilityFromEvent(GameEvent event, Game game) {

View file

@ -3,6 +3,7 @@ package mage.abilities.effects.common.cost;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import javax.naming.directory.InvalidAttributesException;
import mage.Mana; import mage.Mana;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.SpellAbility; import mage.abilities.SpellAbility;
@ -11,7 +12,6 @@ import mage.choices.ChoiceImpl;
import mage.constants.CostModificationType; import mage.constants.CostModificationType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SpellAbilityCastMode;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
@ -124,9 +124,6 @@ public class SpellsCostReductionAllEffect extends CostModificationEffectImpl {
if (abilityToModify instanceof SpellAbility) { if (abilityToModify instanceof SpellAbility) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return this.filter.match(spellCard, game) && selectedByRuntimeData(spellCard, source, game); return this.filter.match(spellCard, game) && selectedByRuntimeData(spellCard, source, game);
} }
} }

View file

@ -115,9 +115,6 @@ public class SpellsCostReductionControllerEffect extends CostModificationEffectI
if (abilityToModify.isControlledBy(source.getControllerId())) { if (abilityToModify.isControlledBy(source.getControllerId())) {
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);; Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);;
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return this.filter.match(spellCard, source.getSourceId(), source.getControllerId(), game); return this.filter.match(spellCard, source.getSourceId(), source.getControllerId(), game);
} }
} }

View file

@ -111,9 +111,6 @@ class TurriIslandEffect extends CostModificationEffectImpl {
} }
Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game); Card spellCard = ((SpellAbility) abilityToModify).getCharacteristics(game);
if (spellCard != null) { if (spellCard != null) {
if (((SpellAbility) abilityToModify).getSpellAbilityCastMode() != SpellAbilityCastMode.NORMAL) {
spellCard = ((SpellAbility) abilityToModify).getSpellAbilityCastMode().getTypeModifiedCardObjectCopy(spellCard, game);
}
return filter.match(spellCard, game) && selectedByRuntimeData(spellCard, source, game); return filter.match(spellCard, game) && selectedByRuntimeData(spellCard, source, game);
} }
} }