mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
fixed a few issues with Slippery Bogbonder
This commit is contained in:
parent
8712ab7578
commit
1f2e082e53
1 changed files with 11 additions and 9 deletions
|
@ -15,8 +15,9 @@ import mage.constants.SubType;
|
|||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.permanent.CounterAnyPredicate;
|
||||
import mage.filter.predicate.permanent.PermanentIdPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
@ -71,7 +72,6 @@ class SlipperyBogbonderEffect extends OneShotEffect {
|
|||
|
||||
static {
|
||||
filter.add(CounterAnyPredicate.instance);
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
SlipperyBogbonderEffect() {
|
||||
|
@ -92,16 +92,19 @@ class SlipperyBogbonderEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
Permanent creature = game.getPermanent(source.getFirstTarget());
|
||||
FilterPermanent filterPermanent = filter.copy();
|
||||
filterPermanent.add(Predicates.not(new PermanentIdPredicate(source.getFirstTarget())));
|
||||
if (player == null || creature == null || game.getBattlefield().count(
|
||||
filter, source.getSourceId(), source.getControllerId(), game
|
||||
filterPermanent, source.getSourceId(), source.getControllerId(), game
|
||||
) < 1) {
|
||||
return false;
|
||||
}
|
||||
TargetPermanent target = new TargetPermanent(0, Integer.MAX_VALUE, filter, true);
|
||||
TargetPermanent target = new TargetPermanent(0, Integer.MAX_VALUE, filterPermanent, true);
|
||||
player.choose(outcome, target, source.getSourceId(), game);
|
||||
List<Permanent> permanents = target
|
||||
.getTargets()
|
||||
.stream()
|
||||
.filter(uuid -> !creature.getId().equals(uuid))
|
||||
.map(game::getPermanent)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
@ -119,11 +122,9 @@ class SlipperyBogbonderEffect extends OneShotEffect {
|
|||
"Choose how many " + entry.getKey()
|
||||
+ " counters to remove from " + permanent.getLogName(), game
|
||||
);
|
||||
if (num != 0) {
|
||||
counterMap.computeIfAbsent(
|
||||
permanent.getId(), x -> new HashMap<>()
|
||||
).put(entry.getKey(), num);
|
||||
}
|
||||
});
|
||||
}
|
||||
for (Permanent permanent : permanents) {
|
||||
|
@ -131,6 +132,7 @@ class SlipperyBogbonderEffect extends OneShotEffect {
|
|||
.get(permanent.getId())
|
||||
.entrySet()
|
||||
.stream()
|
||||
.filter(entry -> entry.getValue() > 0)
|
||||
.map(entry -> CounterType.findByName(entry.getKey()).createInstance(entry.getValue()))
|
||||
.filter(counter -> creature.addCounters(counter, source, game))
|
||||
.forEach(counter -> permanent.removeCounters(counter, game));
|
||||
|
|
Loading…
Reference in a new issue