forked from External/mage
Fix #10655 (getPermanentEntering for COUNTERS_ADDED trigger/watcher)
This commit is contained in:
parent
3886075dac
commit
34c805c4b8
5 changed files with 24 additions and 8 deletions
|
|
@ -72,6 +72,6 @@ class AxgardArtisanTriggeredAbility extends TriggeredAbilityImpl {
|
|||
return permanent != null
|
||||
&& this.getSourceId().equals(event.getTargetId())
|
||||
&& event.getData().equals(CounterType.P1P1.getName())
|
||||
&& BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game);
|
||||
&& BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,12 +76,17 @@ class BotanicalBrawlerTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
|
||||
int offset = 0;
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(event.getTargetId());
|
||||
offset++;
|
||||
}
|
||||
return permanent != null
|
||||
&& !getSourceId().equals(event.getTargetId())
|
||||
&& isControlledBy(permanent.getControllerId())
|
||||
&& event.getData().equals(CounterType.P1P1.getName())
|
||||
&& BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game);
|
||||
&& BoostCountersAddedFirstTimeWatcher.checkEvent(event, permanent, game, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -70,7 +70,10 @@ class CloakedCadetTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(event.getTargetId());
|
||||
}
|
||||
return permanent != null
|
||||
&& isControlledBy(permanent.getControllerId())
|
||||
&& permanent.hasSubtype(SubType.HUMAN, game)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,10 @@ class ShalaiAndHallarTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|| event.getAmount() < 1) {
|
||||
return false;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(event.getTargetId());
|
||||
}
|
||||
if (permanent == null
|
||||
|| !permanent.isControlledBy(this.getControllerId())
|
||||
|| !permanent.isCreature(game)) {
|
||||
|
|
|
|||
|
|
@ -29,8 +29,13 @@ public class BoostCountersAddedFirstTimeWatcher extends Watcher {
|
|||
return;
|
||||
}
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
int offset = 0;
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(event.getTargetId());
|
||||
offset++;
|
||||
}
|
||||
if (permanent != null && event.getData().equals(CounterType.P1P1.getName())) {
|
||||
map.putIfAbsent(new MageObjectReference(permanent, game), event.getId());
|
||||
map.putIfAbsent(new MageObjectReference(permanent, game, offset), event.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -40,13 +45,13 @@ public class BoostCountersAddedFirstTimeWatcher extends Watcher {
|
|||
map.clear();
|
||||
}
|
||||
|
||||
public static boolean checkEvent(GameEvent event, Permanent permanent, Game game) {
|
||||
public static boolean checkEvent(GameEvent event, Permanent permanent, Game game, int offset) {
|
||||
return event
|
||||
.getId()
|
||||
.equals(game
|
||||
.getState()
|
||||
.getWatcher(BoostCountersAddedFirstTimeWatcher.class)
|
||||
.map
|
||||
.getOrDefault(new MageObjectReference(permanent, game), null));
|
||||
.getOrDefault(new MageObjectReference(permanent, game, offset), null));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue