Cleaned up some replacment effects.

This commit is contained in:
LevelX2 2015-05-26 17:43:39 +02:00
parent eb96b08dfa
commit 234bba64a3
86 changed files with 844 additions and 1047 deletions

View file

@ -64,31 +64,35 @@ public class PlaneswalkerRedirectionEffect extends RedirectionEffect {
return new PlaneswalkerRedirectionEffect(this);
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == EventType.DAMAGE_PLAYER;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getType() == EventType.DAMAGE_PLAYER) {
DamageEvent damageEvent = (DamageEvent)event;
UUID playerId = getSourceControllerId(event.getSourceId(), game);
if (!damageEvent.isCombatDamage() && game.getOpponents(event.getTargetId()).contains(playerId)) {
Player target = game.getPlayer(event.getTargetId());
Player player = game.getPlayer(playerId);
if (target != null && player != null) {
int numPlaneswalkers = game.getBattlefield().countAll(filter, target.getId(), game);
if (numPlaneswalkers > 0 && player.chooseUse(outcome, "Redirect damage to planeswalker?", game)) {
redirectTarget = new TargetPermanent(filter);
if (numPlaneswalkers == 1) {
redirectTarget.add(game.getBattlefield().getAllActivePermanents(filter, target.getId(), game).get(0).getId(), game);
}
else {
player.choose(Outcome.Damage, redirectTarget, null, game);
}
if (!game.isSimulation())
game.informPlayers(new StringBuilder(player.getLogName()).append(" redirects ")
DamageEvent damageEvent = (DamageEvent)event;
UUID playerId = getSourceControllerId(event.getSourceId(), game);
if (!damageEvent.isCombatDamage() && game.getOpponents(event.getTargetId()).contains(playerId)) {
Player target = game.getPlayer(event.getTargetId());
Player player = game.getPlayer(playerId);
if (target != null && player != null) {
int numPlaneswalkers = game.getBattlefield().countAll(filter, target.getId(), game);
if (numPlaneswalkers > 0 && player.chooseUse(outcome, "Redirect damage to planeswalker?", game)) {
redirectTarget = new TargetPermanent(filter);
if (numPlaneswalkers == 1) {
redirectTarget.add(game.getBattlefield().getAllActivePermanents(filter, target.getId(), game).get(0).getId(), game);
}
else {
player.choose(Outcome.Damage, redirectTarget, null, game);
}
if (!game.isSimulation()) {
game.informPlayers(new StringBuilder(player.getLogName()).append(" redirects ")
.append(event.getAmount())
.append(" damage to ")
.append(game.getPermanent(redirectTarget.getFirstTarget()).getLogName()).toString());
return true;
}
return true;
}
}
}

View file

@ -79,9 +79,4 @@ public abstract class ReplacementEffectImpl extends ContinuousEffectImpl impleme
throw new UnsupportedOperationException("Not used for replacemnt effect.");
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return true;
}
}

View file

@ -59,8 +59,7 @@ public class AddContinuousEffectToGame extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
ContinuousEffect effectToAdd = effect.copy();
game.addEffect(effectToAdd, source);
game.addEffect(effect, source);
return true;
}
}