mirror of
https://github.com/magefree/mage.git
synced 2025-12-26 13:32:06 -08:00
[LGN] fixed Berserk Murlodont not functioning correctly (fixes #7801)
This commit is contained in:
parent
ff64cb0cec
commit
6bb474a6d0
11 changed files with 88 additions and 63 deletions
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
package mage.abilities.common;
|
||||
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
|
@ -11,16 +11,15 @@ import mage.game.permanent.Permanent;
|
|||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class BecomesBlockedAllTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
private FilterCreaturePermanent filter;
|
||||
private boolean setTargetPointer;
|
||||
private final FilterCreaturePermanent filter;
|
||||
private final boolean setTargetPointer;
|
||||
|
||||
public BecomesBlockedAllTriggeredAbility(Effect effect, boolean optional) {
|
||||
this(effect, optional, new FilterCreaturePermanent("a creature"), false);
|
||||
this(effect, optional, StaticFilters.FILTER_PERMANENT_CREATURE_A, false);
|
||||
}
|
||||
|
||||
public BecomesBlockedAllTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter, boolean setTargetPointer) {
|
||||
|
|
@ -45,7 +44,7 @@ public class BecomesBlockedAllTriggeredAbility extends TriggeredAbilityImpl {
|
|||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (filter.match(permanent, getSourceId(), getControllerId(), game)) {
|
||||
if (setTargetPointer) {
|
||||
this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
|
||||
this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId(), game));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,47 +10,36 @@ import mage.game.combat.CombatGroup;
|
|||
/**
|
||||
* @author Markedagain
|
||||
*/
|
||||
public class BlockedCreatureCount implements DynamicValue {
|
||||
public enum BlockedCreatureCount implements DynamicValue {
|
||||
ALL("each creature blocking it", false),
|
||||
BEYOND_FIRST("each creature blocking it beyond the first", true);
|
||||
|
||||
private final String message;
|
||||
private final boolean beyondTheFirst;
|
||||
|
||||
public BlockedCreatureCount() {
|
||||
this("each creature blocking it");
|
||||
}
|
||||
|
||||
public BlockedCreatureCount(String message) {
|
||||
this(message, false);
|
||||
}
|
||||
|
||||
public BlockedCreatureCount(String message, boolean beyondTheFirst) {
|
||||
BlockedCreatureCount(String message, boolean beyondTheFirst) {
|
||||
this.message = message;
|
||||
this.beyondTheFirst = beyondTheFirst;
|
||||
}
|
||||
|
||||
public BlockedCreatureCount(final BlockedCreatureCount dynamicValue) {
|
||||
super();
|
||||
this.message = dynamicValue.message;
|
||||
this.beyondTheFirst = dynamicValue.beyondTheFirst;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
for (CombatGroup combatGroup : game.getCombat().getGroups()) {
|
||||
if (combatGroup.getAttackers().contains(sourceAbility.getSourceId())) {
|
||||
int blockers = combatGroup.getBlockers().size();
|
||||
if (beyondTheFirst) {
|
||||
blockers = blockers > 0 ? blockers - 1 : 0;
|
||||
}
|
||||
return blockers;
|
||||
if (!combatGroup.getAttackers().contains(sourceAbility.getSourceId())) {
|
||||
continue;
|
||||
}
|
||||
int blockers = combatGroup.getBlockers().size();
|
||||
if (beyondTheFirst) {
|
||||
blockers = blockers > 0 ? blockers - 1 : 0;
|
||||
}
|
||||
return blockers;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockedCreatureCount copy() {
|
||||
return new BlockedCreatureCount(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue