forked from External/mage
* Kira, Great Glass-Spinner - Fixed that targeting objects that later changed to creatures was ignored (related to #3041).
This commit is contained in:
parent
b5dc463789
commit
e88613da5c
1 changed files with 15 additions and 14 deletions
|
|
@ -27,6 +27,9 @@
|
|||
*/
|
||||
package mage.cards.k;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
|
|
@ -46,10 +49,6 @@ import mage.game.permanent.Permanent;
|
|||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.watchers.Watcher;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
|
|
@ -70,8 +69,10 @@ public class KiraGreatGlassSpinner extends CardImpl {
|
|||
// Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
|
||||
Effect effect = new CounterTargetEffect();
|
||||
effect.setText("counter that spell or ability");
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(new KiraGreatGlassSpinnerAbility(effect), Duration.WhileOnBattlefield, new FilterCreaturePermanent("creatures"))),
|
||||
new CreatureWasTargetedThisTurnWatcher());
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||
new GainAbilityControlledEffect(new KiraGreatGlassSpinnerAbility(effect), Duration.WhileOnBattlefield,
|
||||
new FilterCreaturePermanent("creatures"))),
|
||||
new KiraGreatGlassSpinnerWatcher());
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +111,7 @@ class KiraGreatGlassSpinnerAbility extends TriggeredAbilityImpl {
|
|||
if (event.getTargetId().equals(this.getSourceId())) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent != null && permanent.isCreature()) {
|
||||
CreatureWasTargetedThisTurnWatcher watcher = (CreatureWasTargetedThisTurnWatcher) game.getState().getWatchers().get("CreatureWasTargetedThisTurn");
|
||||
KiraGreatGlassSpinnerWatcher watcher = (KiraGreatGlassSpinnerWatcher) game.getState().getWatchers().get(KiraGreatGlassSpinnerWatcher.class.getName());
|
||||
if (watcher != null && watcher.notMoreThanOnceTargetedThisTurn(permanent, game)) {
|
||||
for (Effect effect : getEffects()) {
|
||||
effect.setTargetPointer(new FixedTarget(event.getSourceId()));
|
||||
|
|
@ -129,15 +130,15 @@ class KiraGreatGlassSpinnerAbility extends TriggeredAbilityImpl {
|
|||
|
||||
}
|
||||
|
||||
class CreatureWasTargetedThisTurnWatcher extends Watcher {
|
||||
class KiraGreatGlassSpinnerWatcher extends Watcher {
|
||||
|
||||
private final Map<MageObjectReference, Integer> creaturesTargeted = new HashMap<>();
|
||||
|
||||
public CreatureWasTargetedThisTurnWatcher() {
|
||||
super("CreatureWasTargetedThisTurn", WatcherScope.GAME);
|
||||
public KiraGreatGlassSpinnerWatcher() {
|
||||
super(KiraGreatGlassSpinnerWatcher.class.getName(), WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public CreatureWasTargetedThisTurnWatcher(final CreatureWasTargetedThisTurnWatcher watcher) {
|
||||
public KiraGreatGlassSpinnerWatcher(final KiraGreatGlassSpinnerWatcher watcher) {
|
||||
super(watcher);
|
||||
this.creaturesTargeted.putAll(creaturesTargeted);
|
||||
}
|
||||
|
|
@ -146,7 +147,7 @@ class CreatureWasTargetedThisTurnWatcher extends Watcher {
|
|||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.TARGETED) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent != null && permanent.isCreature()) {
|
||||
if (permanent != null) {
|
||||
MageObjectReference mor = new MageObjectReference(permanent, game);
|
||||
int amount = 0;
|
||||
if (creaturesTargeted.containsKey(mor)) {
|
||||
|
|
@ -171,7 +172,7 @@ class CreatureWasTargetedThisTurnWatcher extends Watcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CreatureWasTargetedThisTurnWatcher copy() {
|
||||
return new CreatureWasTargetedThisTurnWatcher(this);
|
||||
public KiraGreatGlassSpinnerWatcher copy() {
|
||||
return new KiraGreatGlassSpinnerWatcher(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue