clean up cipherEffect

This commit is contained in:
Ingmar Goudt 2019-01-11 01:02:45 +01:00
parent 1e5a00def7
commit d7e68cf932

View file

@ -1,7 +1,6 @@
package mage.abilities.effects.common;
import java.util.UUID;
import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
@ -20,11 +19,13 @@ import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
* FAQ 2013/01/11
*
* <p>
* 702.97. Cipher
*
* <p>
* 702.97a Cipher appears on some instants and sorceries. It represents two
* static abilities, one that functions while the spell is on the stack and one
* that functions while the card with cipher is in the exile zone. "Cipher"
@ -33,17 +34,17 @@ import mage.target.targetpointer.FixedTarget;
* that creature, that creature has 'Whenever this creature deals combat damage
* to a player, you may copy this card and you may cast the copy without paying
* its mana cost.'"
*
* <p>
* 702.97b The term "encoded" describes the relationship between the card with
* cipher while in the exile zone and the creature chosen when the spell
* represented by that card resolves.
*
* <p>
* 702.97c The card with cipher remains encoded on the chosen creature as long
* as the card with cipher remains exiled and the creature remains on the
* battlefield. The card remains encoded on that object even if it changes
* controller or stops being a creature, as long as it remains on the
* battlefield.
*
* <p>
* TODO: Implement Cipher as two static abilities concerning the rules.
*
* @author LevelX2
@ -118,16 +119,9 @@ class CipherStoreEffect extends OneShotEffect {
Card copyCard = game.copyCard(cipherCard, source, controller.getId());
SpellAbility ability = copyCard.getSpellAbility();
// remove the cipher effect from the copy
Effect cipherEffect = null;
for (Effect effect : ability.getEffects()) {
if (effect instanceof CipherEffect) {
cipherEffect = effect;
}
}
ability.getEffects().remove(cipherEffect);
if (ability instanceof SpellAbility) {
controller.cast(ability, game, true, new MageObjectReference(source.getSourceObject(game), game));
}
ability.getEffects().removeIf(effect -> effect instanceof CipherEffect);
controller.cast(ability, game, true, new MageObjectReference(source.getSourceObject(game), game));
}
return false;