modified triggered abilities, continuous effects and zones

This commit is contained in:
BetaSteward 2012-02-02 23:27:23 -05:00
parent fe0c5e48e9
commit 1d32f49fd0
78 changed files with 279 additions and 434 deletions

View file

@ -29,18 +29,10 @@
package mage.game.stack;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
import mage.Constants.Zone;
import mage.abilities.Ability;
import mage.abilities.effects.ReplacementEffect;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.players.Player;
/**
*
@ -77,12 +69,6 @@ public class SpellStack extends ArrayDeque<StackObject> {
}
}
public void checkTriggers(GameEvent event, Game game) {
for (StackObject stackObject: this) {
stackObject.checkTriggers(event, game);
}
}
public boolean counter(UUID objectId, UUID sourceId, Game game) {
StackObject stackObject = getStackObject(objectId);
if (stackObject != null) {
@ -100,30 +86,6 @@ public class SpellStack extends ArrayDeque<StackObject> {
return false;
}
public boolean replaceEvent(GameEvent event, Game game) {
boolean caught = false;
Map<ReplacementEffect, Ability> rEffects = new LinkedHashMap<ReplacementEffect, Ability>();
for (StackObject stackObject: this) {
for (Entry<ReplacementEffect, Ability> entry: stackObject.getAbilities().getReplacementEffects(Zone.STACK).entrySet()) {
if (entry.getKey().applies(event, entry.getValue(), game))
rEffects.put(entry.getKey(), entry.getValue());
}
}
if (rEffects.size() > 0) {
List<ReplacementEffect> effects = new ArrayList(rEffects.keySet());
int index;
if (rEffects.size() == 1) {
index = 0;
}
else {
Player player = game.getPlayer(event.getPlayerId());
index = player.chooseEffect(effects, game);
}
caught = effects.get(index).replaceEvent(event, rEffects.get(effects.get(index)), game);
}
return caught;
}
public StackObject getStackObject(UUID id) {
for (StackObject stackObject: this) {
UUID objectId = stackObject.getId();