mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 04:09:54 -08:00
* Kabira Evangel - Fixed that if the triggered ability triggered multiple times during one turn, it did not work correctly for different colors.
This commit is contained in:
parent
9c3eb5d392
commit
35845448e1
3 changed files with 18 additions and 18 deletions
|
|
@ -49,10 +49,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
*/
|
*/
|
||||||
public class KabiraEvangel extends CardImpl {
|
public class KabiraEvangel extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent();
|
private static final FilterControlledCreaturePermanent FILTER1 = new FilterControlledCreaturePermanent();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter1.add(new SubtypePredicate("Ally"));
|
FILTER1.add(new SubtypePredicate("Ally"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public KabiraEvangel(UUID ownerId) {
|
public KabiraEvangel(UUID ownerId) {
|
||||||
|
|
@ -69,7 +69,7 @@ public class KabiraEvangel extends CardImpl {
|
||||||
filter2.add(Predicates.or(new CardIdPredicate(this.getId()), new SubtypePredicate("Ally")));
|
filter2.add(Predicates.or(new CardIdPredicate(this.getId()), new SubtypePredicate("Ally")));
|
||||||
|
|
||||||
// Whenever Kabira Evangel or another Ally enters the battlefield under your control, you may choose a color. If you do, Allies you control gain protection from the chosen color until end of turn.
|
// Whenever Kabira Evangel or another Ally enters the battlefield under your control, you may choose a color. If you do, Allies you control gain protection from the chosen color until end of turn.
|
||||||
Effect effect = new GainProtectionFromColorAllEffect(Duration.EndOfTurn, filter1);
|
Effect effect = new GainProtectionFromColorAllEffect(Duration.EndOfTurn, FILTER1);
|
||||||
effect.setText("choose a color. If you do, Allies you control gain protection from the chosen color until end of turn.");
|
effect.setText("choose a color. If you do, Allies you control gain protection from the chosen color until end of turn.");
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter2, true));
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter2, true));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,8 @@ public class GainAbilityAllEffect extends ContinuousEffectImpl {
|
||||||
|
|
||||||
public GainAbilityAllEffect(Ability ability, Duration duration, FilterPermanent filter, boolean excludeSource, Layer layer, SubLayer subLayer) {
|
public GainAbilityAllEffect(Ability ability, Duration duration, FilterPermanent filter, boolean excludeSource, Layer layer, SubLayer subLayer) {
|
||||||
super(duration, layer, subLayer, Outcome.AddAbility);
|
super(duration, layer, subLayer, Outcome.AddAbility);
|
||||||
this.ability = ability;
|
this.ability = ability.copy();
|
||||||
|
this.ability.newId();
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.excludeSource = excludeSource;
|
this.excludeSource = excludeSource;
|
||||||
}
|
}
|
||||||
|
|
@ -160,12 +161,10 @@ public class GainAbilityAllEffect extends ContinuousEffectImpl {
|
||||||
} else {
|
} else {
|
||||||
sb.append(" have ");
|
sb.append(" have ");
|
||||||
}
|
}
|
||||||
|
} else if (filter.getMessage().toLowerCase().startsWith("each")) {
|
||||||
|
sb.append(" gains ");
|
||||||
} else {
|
} else {
|
||||||
if (filter.getMessage().toLowerCase().startsWith("each")) {
|
sb.append(" gain ");
|
||||||
sb.append(" gains ");
|
|
||||||
} else {
|
|
||||||
sb.append(" gain ");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (quotes) {
|
if (quotes) {
|
||||||
sb.append("\"");
|
sb.append("\"");
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ public class GainProtectionFromColorAllEffect extends GainAbilityAllEffect {
|
||||||
|
|
||||||
public GainProtectionFromColorAllEffect(final GainProtectionFromColorAllEffect effect) {
|
public GainProtectionFromColorAllEffect(final GainProtectionFromColorAllEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
choice = effect.choice;
|
this.choice = effect.choice.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -65,10 +65,10 @@ public class GainProtectionFromColorAllEffect extends GainAbilityAllEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
FilterCard protectionFilter = (FilterCard)((ProtectionAbility)ability).getFilter();
|
FilterCard protectionFilter = (FilterCard) ((ProtectionAbility) ability).getFilter();
|
||||||
protectionFilter.add(new ColorPredicate(choice.getColor()));
|
protectionFilter.add(new ColorPredicate(choice.getColor()));
|
||||||
protectionFilter.setMessage(choice.getChoice());
|
protectionFilter.setMessage(choice.getChoice());
|
||||||
((ProtectionAbility)ability).setFilter(protectionFilter);
|
((ProtectionAbility) ability).setFilter(protectionFilter);
|
||||||
return super.apply(game, source);
|
return super.apply(game, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -77,22 +77,23 @@ public class GainProtectionFromColorAllEffect extends GainAbilityAllEffect {
|
||||||
super.init(source, game);
|
super.init(source, game);
|
||||||
MageObject sourceObject = game.getObject(source.getSourceId());
|
MageObject sourceObject = game.getObject(source.getSourceId());
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
if(sourceObject != null && controller != null) {
|
if (sourceObject != null && controller != null) {
|
||||||
choice.clearChoice();
|
choice.clearChoice();
|
||||||
while(!choice.isChosen()) {
|
while (!choice.isChosen()) {
|
||||||
controller.choose(Outcome.Protect, choice, game);
|
controller.choose(Outcome.Protect, choice, game);
|
||||||
if(!controller.canRespond()) {
|
if (!controller.canRespond()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(choice.isChosen() && !game.isSimulation()) {
|
if (choice.isChosen() && !game.isSimulation()) {
|
||||||
game.informPlayers(sourceObject.getLogName() + ": " + controller.getLogName() + " has chosen protection from " + choice.getChoice()); }
|
game.informPlayers(sourceObject.getLogName() + ": " + controller.getLogName() + " has chosen protection from " + choice.getChoice());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getText(Mode mode) {
|
public String getText(Mode mode) {
|
||||||
if(staticText != null && !staticText.isEmpty()) {
|
if (staticText != null && !staticText.isEmpty()) {
|
||||||
return staticText;
|
return staticText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue