Fix BecomesBlockedAttachedTriggeredAbility (#9325)

This commit is contained in:
Alex W. Jackson 2022-07-27 00:41:22 -04:00
parent 4b511775db
commit 516ac042a2
13 changed files with 134 additions and 433 deletions

View file

@ -1,4 +1,3 @@
package mage.abilities.effects.common.continuous;
import mage.abilities.Ability;
@ -16,21 +15,17 @@ import mage.game.events.GameEvent;
public class AssignNoCombatDamageSourceEffect extends ReplacementEffectImpl {
private boolean partOfOptionalEffect;
public AssignNoCombatDamageSourceEffect(Duration duration) {
this(duration, false);
}
public AssignNoCombatDamageSourceEffect(Duration duration, boolean partOfOptionalEffect) {
super(duration, Outcome.PreventDamage);
this.partOfOptionalEffect = partOfOptionalEffect;
staticText = setText();
staticText = setText(partOfOptionalEffect);
}
public AssignNoCombatDamageSourceEffect(final AssignNoCombatDamageSourceEffect effect) {
super(effect);
this.partOfOptionalEffect = effect.partOfOptionalEffect;
}
@Override
@ -65,12 +60,8 @@ public class AssignNoCombatDamageSourceEffect extends ReplacementEffectImpl {
return event.getSourceId().equals(source.getSourceId()) && damageEvent.isCombatDamage();
}
private String setText() {
String text = "";
if(partOfOptionalEffect) {
text = "If you do, ";
}
text += "{this} assigns no combat damage";
private String setText(boolean partOfOptionalEffect) {
String text = (partOfOptionalEffect ? "If you do, " : "") + "{this} assigns no combat damage";
switch(duration) {
case EndOfTurn:
text += " this turn";

View file

@ -0,0 +1,61 @@
package mage.abilities.effects.common.continuous;
import mage.abilities.Ability;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.events.DamageEvent;
import mage.game.events.GameEvent;
/**
*
* @author awjackson
*/
public class AssignNoCombatDamageTargetEffect extends ReplacementEffectImpl {
public AssignNoCombatDamageTargetEffect() {
this(Duration.EndOfTurn, "if you do, it assigns no combat damage this turn");
}
public AssignNoCombatDamageTargetEffect(Duration duration, String text) {
super(duration, Outcome.PreventDamage);
staticText = text;
}
public AssignNoCombatDamageTargetEffect(final AssignNoCombatDamageTargetEffect effect) {
super(effect);
}
@Override
public AssignNoCombatDamageTargetEffect copy() {
return new AssignNoCombatDamageTargetEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
return true;
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
return true;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
switch (event.getType()) {
case DAMAGE_PERMANENT:
case DAMAGE_PLAYER:
return true;
default:
return false;
}
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
return ((DamageEvent) event).isCombatDamage() && event.getSourceId().equals(targetPointer.getFirst(game, source));
}
}