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:
parent
c1ac2ac6ae
commit
9903944804
9 changed files with 19 additions and 30 deletions
Mage.Sets/src/mage/cards
a
e
h
r
s
Mage/src/main/java/mage
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue