mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 04:09:54 -08:00
* Fixed a bug that adding counters with Skyship Plunder or Maulfist Revolution did not trigger counter added events.
This commit is contained in:
parent
350436dee2
commit
17fbee2400
6 changed files with 58 additions and 81 deletions
|
|
@ -54,17 +54,17 @@ import mage.watchers.Watcher;
|
|||
public class FairgroundsTrumpeter extends CardImpl {
|
||||
|
||||
public FairgroundsTrumpeter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
this.subtype.add("Elephant");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// At the beginning of each end step, if a +1/+1 counter was placed on a permanent under your control this turn, put a +1/+1 counter on Fairgrounds Trumpeter.
|
||||
this.addAbility(new ConditionalTriggeredAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
|
||||
TargetController.ANY, false), FairgroundsTrumpeterCondition.getInstance(),
|
||||
"At the beginning of each end step, if a +1/+1 counter was placed on a permanent under your control this turn, put a +1/+1 counter on Fairgrounds Trumpeter."),
|
||||
new FairgroundsTrumpeterWatcher());
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
|
||||
TargetController.ANY, false), FairgroundsTrumpeterCondition.getInstance(),
|
||||
"At the beginning of each end step, if a +1/+1 counter was placed on a permanent under your control this turn, put a +1/+1 counter on {this}."),
|
||||
new FairgroundsTrumpeterWatcher());
|
||||
}
|
||||
|
||||
public FairgroundsTrumpeter(final FairgroundsTrumpeter card) {
|
||||
|
|
@ -87,7 +87,7 @@ class FairgroundsTrumpeterCondition implements Condition {
|
|||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
FairgroundsTrumpeterWatcher watcher = (FairgroundsTrumpeterWatcher) game.getState().getWatchers().get("FairgroundsTrumpeterWatcher");
|
||||
FairgroundsTrumpeterWatcher watcher = (FairgroundsTrumpeterWatcher) game.getState().getWatchers().get(FairgroundsTrumpeterWatcher.class.getName());
|
||||
return watcher != null && watcher.p1p1AddedToPermanent(source.getControllerId());
|
||||
}
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ class FairgroundsTrumpeterWatcher extends Watcher {
|
|||
private final Set<UUID> players = new HashSet<>();
|
||||
|
||||
public FairgroundsTrumpeterWatcher() {
|
||||
super("FairgroundsTrumpeterWatcher", WatcherScope.GAME);
|
||||
super(FairgroundsTrumpeterWatcher.class.getName(), WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public FairgroundsTrumpeterWatcher(final FairgroundsTrumpeterWatcher watcher) {
|
||||
|
|
@ -115,7 +115,7 @@ class FairgroundsTrumpeterWatcher extends Watcher {
|
|||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.COUNTER_ADDED && event.getData().equals(CounterType.P1P1.getName())) {
|
||||
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
|
||||
if (permanent != null && permanent.getCardType().contains(CardType.CREATURE)) {
|
||||
if (permanent != null) {
|
||||
players.add(permanent.getControllerId());
|
||||
}
|
||||
}
|
||||
|
|
@ -135,4 +135,3 @@ class FairgroundsTrumpeterWatcher extends Watcher {
|
|||
return new FairgroundsTrumpeterWatcher(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.counters.Counter;
|
||||
import mage.counters.CounterType;
|
||||
import mage.counters.Counters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
|
@ -95,14 +97,31 @@ class MaulfistRevolutionaryEffect extends OneShotEffect {
|
|||
if (controller != null) {
|
||||
Player player = game.getPlayer(getTargetPointer().getFirst(game, source));
|
||||
if (player != null) {
|
||||
for (Counter counter : player.getCounters().values()) {
|
||||
counter.increase();
|
||||
Counters counters = player.getCounters().copy();
|
||||
for (Counter counter : counters.values()) {
|
||||
CounterType counterType = CounterType.findByName(counter.getName());
|
||||
Counter counterToAdd;
|
||||
if (counterType != null) {
|
||||
counterToAdd = counterType.createInstance();
|
||||
} else {
|
||||
counterToAdd = new Counter(counter.getName());
|
||||
}
|
||||
player.addCounters(counterToAdd, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (permanent != null) {
|
||||
for (Counter counter : permanent.getCounters(game).values()) {
|
||||
counter.increase();
|
||||
Counters counters = permanent.getCounters(game).copy();
|
||||
for (Counter counter : counters.values()) {
|
||||
CounterType counterType = CounterType.findByName(counter.getName());
|
||||
Counter counterToAdd;
|
||||
if (counterType != null) {
|
||||
counterToAdd = counterType.createInstance();
|
||||
} else {
|
||||
counterToAdd = new Counter(counter.getName());
|
||||
}
|
||||
permanent.addCounters(counterToAdd, source, game);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.counters.Counter;
|
||||
import mage.counters.CounterType;
|
||||
import mage.counters.Counters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
|
@ -94,17 +96,35 @@ class SkyshipPlundererEffect extends OneShotEffect {
|
|||
if (controller != null) {
|
||||
Player player = game.getPlayer(getTargetPointer().getFirst(game, source));
|
||||
if (player != null) {
|
||||
for (Counter counter : player.getCounters().values()) {
|
||||
counter.increase();
|
||||
Counters counters = player.getCounters().copy();
|
||||
for (Counter counter : counters.values()) {
|
||||
CounterType counterType = CounterType.findByName(counter.getName());
|
||||
Counter counterToAdd;
|
||||
if (counterType != null) {
|
||||
counterToAdd = counterType.createInstance();
|
||||
} else {
|
||||
counterToAdd = new Counter(counter.getName());
|
||||
}
|
||||
player.addCounters(counterToAdd, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (permanent != null) {
|
||||
for (Counter counter : permanent.getCounters(game).values()) {
|
||||
counter.increase();
|
||||
Counters counters = permanent.getCounters(game).copy();
|
||||
for (Counter counter : counters.values()) {
|
||||
CounterType counterType = CounterType.findByName(counter.getName());
|
||||
Counter counterToAdd;
|
||||
if (counterType != null) {
|
||||
counterToAdd = counterType.createInstance();
|
||||
} else {
|
||||
counterToAdd = new Counter(counter.getName());
|
||||
}
|
||||
permanent.addCounters(counterToAdd, source, game);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue